From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dave Airlie Subject: Re: [PATCH] drm/ast: Support AST2500 Date: Thu, 16 Feb 2017 14:24:39 +1000 Message-ID: References: <1484103473-22931-1-git-send-email-yc_chen@aspeedtech.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-ua0-x244.google.com (mail-ua0-x244.google.com [IPv6:2607:f8b0:400c:c08::244]) by gabe.freedesktop.org (Postfix) with ESMTPS id 2C7D36EA27 for ; Thu, 16 Feb 2017 04:24:44 +0000 (UTC) Received: by mail-ua0-x244.google.com with SMTP id k3so501915uak.3 for ; Wed, 15 Feb 2017 20:24:44 -0800 (PST) In-Reply-To: <1484103473-22931-1-git-send-email-yc_chen@aspeedtech.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: "Y.C. Chen" Cc: Dave Airlie , dri-devel , Egbert Eich List-Id: dri-devel@lists.freedesktop.org T24gMTEgSmFudWFyeSAyMDE3IGF0IDEyOjU3LCBZLkMuIENoZW4gPHljX2NoZW5AYXNwZWVkdGVj aC5jb20+IHdyb3RlOgo+IEZyb206ICJZLkMuIENoZW4iIDx5Y19jaGVuQGFzcGVlZHRlY2guY29t PgoKUGxlYXNlIHJ1biBjaGVja3BhdGNoIG92ZXIgdGhpcyBwYXRjaCwgaXQncyBnb3QgYSBsb3Qg b2YgYmFkIHdoaXRlc3BhY2UgaXNzdWVzCig0IHNwYWNlIGFuZCAyIHNwYWNlIGluZGVudHMsIGlu ZGVudCB0aGUgdGltaW5nIHRhYmxlcyAsIHJlbW92ZSBzdGFydApvZiBsaW5lIHdoaXRlc3BhY2Uu KS4KCkRhdmUuCgo+Cj4gU2lnbmVkLW9mZi1ieTogWS5DLiBDaGVuIDx5Y19jaGVuQGFzcGVlZHRl Y2guY29tPgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF9kcnYuaCAgICB8ICAgMiAr Cj4gIGRyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X21haW4uYyAgIHwgIDI3ICsrLQo+ICBkcml2ZXJz L2dwdS9kcm0vYXN0L2FzdF9tb2RlLmMgICB8ICAyNSArLQo+ICBkcml2ZXJzL2dwdS9kcm0vYXN0 L2FzdF9wb3N0LmMgICB8IDUxMCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr Ky0KPiAgZHJpdmVycy9ncHUvZHJtL2FzdC9hc3RfdGFibGVzLmggfCAgNTcgKysrKy0KPiAgNSBm aWxlcyBjaGFuZ2VkLCA1OTYgaW5zZXJ0aW9ucygrKSwgMjUgZGVsZXRpb25zKC0pCj4KPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FzdC9hc3RfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0v YXN0L2FzdF9kcnYuaAo+IGluZGV4IDkwODAxMWQuLjdlNDA2Y2UgMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2FzdC9hc3RfZHJ2LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYXN0L2Fz dF9kcnYuaAo+IEBAIC02NCw2ICs2NCw3IEBAIGVudW0gYXN0X2NoaXAgewo+ICAgICAgICAgQVNU MjE1MCwKPiAgICAgICAgIEFTVDIzMDAsCj4gICAgICAgICBBU1QyNDAwLAo+ICsgICAgICAgQVNU MjUwMCwKPiAgICAgICAgIEFTVDExODAsCj4gIH07Cj4KPiBAQCAtODAsNiArODEsNyBAQCBlbnVt IGFzdF90eF9jaGlwIHsKPiAgI2RlZmluZSBBU1RfRFJBTV8xR3gzMiAgIDMKPiAgI2RlZmluZSBB U1RfRFJBTV8yR3gxNiAgIDYKPiAgI2RlZmluZSBBU1RfRFJBTV80R3gxNiAgIDcKPiArI2RlZmlu ZSBBU1RfRFJBTV84R3gxNiAgIDgKPgo+ICBzdHJ1Y3QgYXN0X2ZiZGV2Owo+Cj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X21haW4uYyBiL2RyaXZlcnMvZ3B1L2RybS9hc3Qv YXN0X21haW4uYwo+IGluZGV4IGY3NWM2NDIuLjQwNDYwY2UgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2FzdC9hc3RfbWFpbi5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FzdC9hc3Rf bWFpbi5jCj4gQEAgLTczLDcgKzczLDEwIEBAIHN0YXRpYyBpbnQgYXN0X2RldGVjdF9jaGlwKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsIGJvb2wgKm5lZWRfcG9zdCkKPiAgICAgICAgICAgICAgICAg YXN0LT5jaGlwID0gQVNUMTEwMDsKPiAgICAgICAgICAgICAgICAgRFJNX0lORk8oIkFTVCAxMTgw IGRldGVjdGVkXG4iKTsKPiAgICAgICAgIH0gZWxzZSB7Cj4gLSAgICAgICAgICAgICAgIGlmIChk ZXYtPnBkZXYtPnJldmlzaW9uID49IDB4MzApIHsKPiArICAgICAgICAgICAgICAgaWYgKGRldi0+ cGRldi0+cmV2aXNpb24gPj0gMHg0MCkgewo+ICsgICAgICAgICAgICAgICAgICAgICAgIGFzdC0+ Y2hpcCA9IEFTVDI1MDA7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgRFJNX0lORk8oIkFTVCAy NTAwIGRldGVjdGVkXG4iKTsKPiArICAgICAgICAgICAgICAgfSBlbHNlIGlmIChkZXYtPnBkZXYt PnJldmlzaW9uID49IDB4MzApIHsKPiAgICAgICAgICAgICAgICAgICAgICAgICBhc3QtPmNoaXAg PSBBU1QyNDAwOwo+ICAgICAgICAgICAgICAgICAgICAgICAgIERSTV9JTkZPKCJBU1QgMjQwMCBk ZXRlY3RlZFxuIik7Cj4gICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZGV2LT5wZGV2LT5yZXZp c2lvbiA+PSAweDIwKSB7Cj4gQEAgLTE0OSw2ICsxNTIsOCBAQCBzdGF0aWMgaW50IGFzdF9kZXRl Y3RfY2hpcChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBib29sICpuZWVkX3Bvc3QpCj4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBhc3QtPnN1cHBvcnRfd2lkZV9zY3JlZW4gPSB0cnVl Owo+ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhc3QtPmNoaXAgPT0gQVNUMjQwMCAmJiBk YXRhID09IDB4MTAwKSAvKiBhc3QxNDAwICovCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBhc3QtPnN1cHBvcnRfd2lkZV9zY3JlZW4gPSB0cnVlOwo+ICsgICAgICAgICAgICAgICAg ICAgICAgIGlmIChhc3QtPmNoaXAgPT0gQVNUMjUwMCAmJiBkYXRhID09IDB4MTAwKSAvKiBhc3Qy NTEwICovCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3QtPnN1cHBvcnRfd2lk ZV9zY3JlZW4gPSB0cnVlOwo+ICAgICAgICAgICAgICAgICB9Cj4gICAgICAgICAgICAgICAgIGJy ZWFrOwo+ICAgICAgICAgfQo+IEBAIC0yMzMsNyArMjM4LDI0IEBAIHN0YXRpYyBpbnQgYXN0X2dl dF9kcmFtX2luZm8oc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgICAgICAgIGVsc2UKPiAgICAg ICAgICAgICAgICAgYXN0LT5kcmFtX2J1c193aWR0aCA9IDMyOwo+Cj4gLSAgICAgICBpZiAoYXN0 LT5jaGlwID09IEFTVDIzMDAgfHwgYXN0LT5jaGlwID09IEFTVDI0MDApIHsKPiArICAgICAgIGlm IChhc3QtPmNoaXAgPT0gQVNUMjUwMCkgewo+ICsgICAgICAgICAgICAgICBzd2l0Y2ggKGRhdGEg JiAweDAzKSB7Cj4gKyAgICAgICAgICAgICAgIGNhc2UgMDoKPiArICAgICAgICAgICAgICAgICAg ICAgICBhc3QtPmRyYW1fdHlwZSA9IEFTVF9EUkFNXzFHeDE2Owo+ICsgICAgICAgICAgICAgICAg ICAgICAgIGJyZWFrOwo+ICsgICAgICAgICAgICAgICBkZWZhdWx0Ogo+ICsgICAgICAgICAgICAg ICBjYXNlIDE6Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgYXN0LT5kcmFtX3R5cGUgPSBBU1Rf RFJBTV8yR3gxNjsKPiArICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKPiArICAgICAgICAg ICAgICAgY2FzZSAyOgo+ICsgICAgICAgICAgICAgICAgICAgICAgIGFzdC0+ZHJhbV90eXBlID0g QVNUX0RSQU1fNEd4MTY7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cj4gKyAgICAg ICAgICAgICAgIGNhc2UgMzoKPiArICAgICAgICAgICAgICAgICAgICAgICBhc3QtPmRyYW1fdHlw ZSA9IEFTVF9EUkFNXzhHeDE2Owo+ICsgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwo+ICsg ICAgICAgICAgICAgICB9Cj4gKyAgICAgICB9Cj4gKyAgICAgICBlbHNlIGlmIChhc3QtPmNoaXAg PT0gQVNUMjMwMCB8fCBhc3QtPmNoaXAgPT0gQVNUMjQwMCkgewo+ICAgICAgICAgICAgICAgICBz d2l0Y2ggKGRhdGEgJiAweDAzKSB7Cj4gICAgICAgICAgICAgICAgIGNhc2UgMDoKPiAgICAgICAg ICAgICAgICAgICAgICAgICBhc3QtPmRyYW1fdHlwZSA9IEFTVF9EUkFNXzUxMk14MTY7Cj4gQEAg LTQ1Niw2ICs0NzgsNyBAQCBpbnQgYXN0X2RyaXZlcl9sb2FkKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsIHVuc2lnbmVkIGxvbmcgZmxhZ3MpCj4gICAgICAgICAgICAgYXN0LT5jaGlwID09IEFTVDIy MDAgfHwKPiAgICAgICAgICAgICBhc3QtPmNoaXAgPT0gQVNUMjMwMCB8fAo+ICAgICAgICAgICAg IGFzdC0+Y2hpcCA9PSBBU1QyNDAwIHx8Cj4gKyAgICAgICAgICAgYXN0LT5jaGlwID09IEFTVDI1 MDAgfHwKPiAgICAgICAgICAgICBhc3QtPmNoaXAgPT0gQVNUMTE4MCkgewo+ICAgICAgICAgICAg ICAgICBkZXYtPm1vZGVfY29uZmlnLm1heF93aWR0aCA9IDE5MjA7Cj4gICAgICAgICAgICAgICAg IGRldi0+bW9kZV9jb25maWcubWF4X2hlaWdodCA9IDIwNDg7Cj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9hc3QvYXN0X21vZGUuYyBiL2RyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X21vZGUu Ywo+IGluZGV4IGUyNmM5OGYuLjI0MmNhN2YgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2FzdC9hc3RfbW9kZS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FzdC9hc3RfbW9kZS5jCj4g QEAgLTI3MSw3ICsyNzEsMTAgQEAgc3RhdGljIHZvaWQgYXN0X3NldF9jcnRjX3JlZyhzdHJ1Y3Qg ZHJtX2NydGMgKmNydGMsIHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2QKPiAgewo+ICAgICAg ICAgc3RydWN0IGFzdF9wcml2YXRlICphc3QgPSBjcnRjLT5kZXYtPmRldl9wcml2YXRlOwo+ICAg ICAgICAgdTgganJlZzA1ID0gMCwganJlZzA3ID0gMCwganJlZzA5ID0gMCwganJlZ0FDID0gMCwg anJlZ0FEID0gMCwganJlZ0FFID0gMDsKPiAtICAgICAgIHUxNiB0ZW1wOwo+ICsgICAgICAgdTE2 IHRlbXAsIHByZWNhY2hlID0gMDsKPiArCj4gKyAgICBpZiAoKGFzdC0+Y2hpcCA9PSBBU1QyNTAw KSAmJiAodmJpb3NfbW9kZS0+ZW5oX3RhYmxlLT5mbGFncyAmIEFTVDI1MDBQcmVDYXRjaENSVCkp Cj4gKyAgICAgICBwcmVjYWNoZSA9IDQwOwo+Cj4gICAgICAgICBhc3Rfc2V0X2luZGV4X3JlZ19t YXNrKGFzdCwgQVNUX0lPX0NSVENfUE9SVCwgMHgxMSwgMHg3ZiwgMHgwMCk7Cj4KPiBAQCAtMjk3 LDEyICszMDAsMTIgQEAgc3RhdGljIHZvaWQgYXN0X3NldF9jcnRjX3JlZyhzdHJ1Y3QgZHJtX2Ny dGMgKmNydGMsIHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2QKPiAgICAgICAgICAgICAgICAg anJlZ0FEIHw9IDB4MDE7ICAvKiBIQkUgRFs1XSAqLwo+ICAgICAgICAgYXN0X3NldF9pbmRleF9y ZWdfbWFzayhhc3QsIEFTVF9JT19DUlRDX1BPUlQsIDB4MDMsIDB4RTAsICh0ZW1wICYgMHgxZikp Owo+Cj4gLSAgICAgICB0ZW1wID0gKG1vZGUtPmNydGNfaHN5bmNfc3RhcnQgPj4gMykgLSAxOwo+ ICsgICAgICAgdGVtcCA9ICgobW9kZS0+Y3J0Y19oc3luY19zdGFydC1wcmVjYWNoZSkgPj4gMykg LSAxOwo+ICAgICAgICAgaWYgKHRlbXAgJiAweDEwMCkKPiAgICAgICAgICAgICAgICAganJlZ0FD IHw9IDB4NDA7IC8qIEhSUyBEWzVdICovCj4gICAgICAgICBhc3Rfc2V0X2luZGV4X3JlZ19tYXNr KGFzdCwgQVNUX0lPX0NSVENfUE9SVCwgMHgwNCwgMHgwMCwgdGVtcCk7Cj4KPiAtICAgICAgIHRl bXAgPSAoKG1vZGUtPmNydGNfaHN5bmNfZW5kID4+IDMpIC0gMSkgJiAweDNmOwo+ICsgICAgICAg dGVtcCA9ICgoKG1vZGUtPmNydGNfaHN5bmNfZW5kLXByZWNhY2hlKSA+PiAzKSAtIDEpICYgMHgz ZjsKPiAgICAgICAgIGlmICh0ZW1wICYgMHgyMCkKPiAgICAgICAgICAgICAgICAganJlZ0FEIHw9 IDB4MDQ7IC8qIEhSRSBEWzVdICovCj4gICAgICAgICBhc3Rfc2V0X2luZGV4X3JlZ19tYXNrKGFz dCwgQVNUX0lPX0NSVENfUE9SVCwgMHgwNSwgMHg2MCwgKHU4KSgodGVtcCAmIDB4MWYpIHwganJl ZzA1KSk7Cj4gQEAgLTM2Myw2ICszNjYsMTEgQEAgc3RhdGljIHZvaWQgYXN0X3NldF9jcnRjX3Jl ZyhzdHJ1Y3QgZHJtX2NydGMgKmNydGMsIHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2QKPiAg ICAgICAgIGFzdF9zZXRfaW5kZXhfcmVnX21hc2soYXN0LCBBU1RfSU9fQ1JUQ19QT1JULCAweDA5 LCAweGRmLCBqcmVnMDkpOwo+ICAgICAgICAgYXN0X3NldF9pbmRleF9yZWdfbWFzayhhc3QsIEFT VF9JT19DUlRDX1BPUlQsIDB4QUUsIDB4MDAsIChqcmVnQUUgfCAweDgwKSk7Cj4KPiArICAgIGlm IChwcmVjYWNoZSkKPiArICAgICAgICAgICAgICAgYXN0X3NldF9pbmRleF9yZWdfbWFzayhhc3Qs IEFTVF9JT19DUlRDX1BPUlQsIDB4YjYsIDB4M2YsIDB4ODApOwo+ICsgICAgZWxzZQo+ICsgICAg ICAgICAgICAgICBhc3Rfc2V0X2luZGV4X3JlZ19tYXNrKGFzdCwgQVNUX0lPX0NSVENfUE9SVCwg MHhiNiwgMHgzZiwgMHgwMCk7Cj4gKwo+ICAgICAgICAgYXN0X3NldF9pbmRleF9yZWdfbWFzayhh c3QsIEFTVF9JT19DUlRDX1BPUlQsIDB4MTEsIDB4N2YsIDB4ODApOwo+ICB9Cj4KPiBAQCAtMzgz LDEyICszOTEsMTUgQEAgc3RhdGljIHZvaWQgYXN0X3NldF9kY2xrX3JlZyhzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW8KPiAgICAgICAgIHN0cnVjdCBh c3RfcHJpdmF0ZSAqYXN0ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiAgICAgICAgIHN0cnVjdCBhc3Rf dmJpb3NfZGNsa19pbmZvICpjbGtfaW5mbzsKPgo+IC0gICAgICAgY2xrX2luZm8gPSAmZGNsa190 YWJsZVt2Ymlvc19tb2RlLT5lbmhfdGFibGUtPmRjbGtfaW5kZXhdOwo+ICsgICAgICAgaWYgKGFz dC0+Y2hpcCA9PSBBU1QyNTAwKQo+ICsgICAgICAgICAgICAgICBjbGtfaW5mbyA9ICZkY2xrX3Rh YmxlX2FzdDI1MDBbdmJpb3NfbW9kZS0+ZW5oX3RhYmxlLT5kY2xrX2luZGV4XTsKPiArICAgICAg IGVsc2UKPiArICAgICAgICAgICAgICAgY2xrX2luZm8gPSAmZGNsa190YWJsZVt2Ymlvc19tb2Rl LT5lbmhfdGFibGUtPmRjbGtfaW5kZXhdOwo+Cj4gICAgICAgICBhc3Rfc2V0X2luZGV4X3JlZ19t YXNrKGFzdCwgQVNUX0lPX0NSVENfUE9SVCwgMHhjMCwgMHgwMCwgY2xrX2luZm8tPnBhcmFtMSk7 Cj4gICAgICAgICBhc3Rfc2V0X2luZGV4X3JlZ19tYXNrKGFzdCwgQVNUX0lPX0NSVENfUE9SVCwg MHhjMSwgMHgwMCwgY2xrX2luZm8tPnBhcmFtMik7Cj4gICAgICAgICBhc3Rfc2V0X2luZGV4X3Jl Z19tYXNrKGFzdCwgQVNUX0lPX0NSVENfUE9SVCwgMHhiYiwgMHgwZiwKPiAtICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKGNsa19pbmZvLT5wYXJhbTMgJiAweDgwKSB8ICgoY2xrX2luZm8t PnBhcmFtMyAmIDB4MykgPDwgNCkpOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo Y2xrX2luZm8tPnBhcmFtMyAmIDB4YzApIHwgKChjbGtfaW5mby0+cGFyYW0zICYgMHgzKSA8PCA0 KSk7Cj4gIH0KPgo+ICBzdGF0aWMgdm9pZCBhc3Rfc2V0X2V4dF9yZWcoc3RydWN0IGRybV9jcnRj ICpjcnRjLCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSwKPiBAQCAtNDIxLDcgKzQzMiw3 IEBAIHN0YXRpYyB2b2lkIGFzdF9zZXRfZXh0X3JlZyhzdHJ1Y3QgZHJtX2NydGMgKmNydGMsIHN0 cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlCj4gICAgICAgICBhc3Rfc2V0X2luZGV4X3JlZ19t YXNrKGFzdCwgQVNUX0lPX0NSVENfUE9SVCwgMHhhOCwgMHhmZCwganJlZ0E4KTsKPgo+ICAgICAg ICAgLyogU2V0IFRocmVzaG9sZCAqLwo+IC0gICAgICAgaWYgKGFzdC0+Y2hpcCA9PSBBU1QyMzAw IHx8IGFzdC0+Y2hpcCA9PSBBU1QyNDAwKSB7Cj4gKyAgICAgICBpZiAoYXN0LT5jaGlwID09IEFT VDIzMDAgfHwgYXN0LT5jaGlwID09IEFTVDI0MDAgfHwgYXN0LT5jaGlwID09IEFTVDI1MDApIHsK PiAgICAgICAgICAgICAgICAgYXN0X3NldF9pbmRleF9yZWcoYXN0LCBBU1RfSU9fQ1JUQ19QT1JU LCAweGE3LCAweDc4KTsKPiAgICAgICAgICAgICAgICAgYXN0X3NldF9pbmRleF9yZWcoYXN0LCBB U1RfSU9fQ1JUQ19QT1JULCAweGE2LCAweDYwKTsKPiAgICAgICAgIH0gZWxzZSBpZiAoYXN0LT5j aGlwID09IEFTVDIxMDAgfHwKPiBAQCAtNzk0LDcgKzgwNSw3IEBAIHN0YXRpYyBpbnQgYXN0X21v ZGVfdmFsaWQoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKPiAgICAgICAgICAgICAg ICAgaWYgKChtb2RlLT5oZGlzcGxheSA9PSAxNjAwKSAmJiAobW9kZS0+dmRpc3BsYXkgPT0gOTAw KSkKPiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTU9ERV9PSzsKPgo+IC0gICAgICAg ICAgICAgICBpZiAoKGFzdC0+Y2hpcCA9PSBBU1QyMTAwKSB8fCAoYXN0LT5jaGlwID09IEFTVDIy MDApIHx8IChhc3QtPmNoaXAgPT0gQVNUMjMwMCkgfHwgKGFzdC0+Y2hpcCA9PSBBU1QyNDAwKSB8 fCAoYXN0LT5jaGlwID09IEFTVDExODApKSB7Cj4gKyAgICAgICAgICAgICAgIGlmICgoYXN0LT5j aGlwID09IEFTVDIxMDApIHx8IChhc3QtPmNoaXAgPT0gQVNUMjIwMCkgfHwgKGFzdC0+Y2hpcCA9 PSBBU1QyMzAwKSB8fCAoYXN0LT5jaGlwID09IEFTVDI0MDApIHx8IChhc3QtPmNoaXAgPT0gQVNU MjUwMCkgfHwgKGFzdC0+Y2hpcCA9PSBBU1QxMTgwKSkgewo+ICAgICAgICAgICAgICAgICAgICAg ICAgIGlmICgobW9kZS0+aGRpc3BsYXkgPT0gMTkyMCkgJiYgKG1vZGUtPnZkaXNwbGF5ID09IDEw ODApKQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE1PREVfT0s7Cj4K PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FzdC9hc3RfcG9zdC5jIGIvZHJpdmVycy9n cHUvZHJtL2FzdC9hc3RfcG9zdC5jCj4gaW5kZXggODEwYzUxZC4uMDVkN2QzNiAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF9wb3N0LmMKPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vYXN0L2FzdF9wb3N0LmMKPiBAQCAtMzIsNiArMzIsNyBAQAo+ICAjaW5jbHVkZSAiYXN0X2Ry YW1fdGFibGVzLmgiCj4KPiAgc3RhdGljIHZvaWQgYXN0X2luaXRfZHJhbV8yMzAwKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYpOwo+ICtzdGF0aWMgdm9pZCBhc3RfaW5pdF9kcmFtXzI1MDAoc3RydWN0 IGRybV9kZXZpY2UgKmRldik7Cj4KPiAgdm9pZCBhc3RfZW5hYmxlX3ZnYShzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2KQo+ICB7Cj4gQEAgLTgyLDcgKzgzLDcgQEAgYm9vbCBhc3RfaXNfdmdhX2VuYWJs ZWQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgICAgICAgIGZvciAoaSA9IDB4ODE7IGkgPD0g MHg4ZjsgaSsrKQo+ICAgICAgICAgICAgICAgICBhc3Rfc2V0X2luZGV4X3JlZyhhc3QsIEFTVF9J T19DUlRDX1BPUlQsIGksIDB4MDApOwo+Cj4gLSAgICAgICBpZiAoYXN0LT5jaGlwID09IEFTVDIz MDAgfHwgYXN0LT5jaGlwID09IEFTVDI0MDApIHsKPiArICAgICAgIGlmIChhc3QtPmNoaXAgPT0g QVNUMjMwMCB8fCBhc3QtPmNoaXAgPT0gQVNUMjQwMCB8fCBhc3QtPmNoaXAgPT0gQVNUMjUwMCkg ewo+ICAgICAgICAgICAgICAgICBpZiAoZGV2LT5wZGV2LT5yZXZpc2lvbiA+PSAweDIwKQo+ICAg ICAgICAgICAgICAgICAgICAgICAgIGV4dF9yZWdfaW5mbyA9IGV4dHJlZ2luZm9fYXN0MjMwMDsK PiAgICAgICAgICAgICAgICAgZWxzZQo+IEBAIC0xMDYsNyArMTA3LDcgQEAgYm9vbCBhc3RfaXNf dmdhX2VuYWJsZWQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPgo+ICAgICAgICAgLyogRW5hYmxl IFJBTURBQyBmb3IgQTEgKi8KPiAgICAgICAgIHJlZyA9IDB4MDQ7Cj4gLSAgICAgICBpZiAoYXN0 LT5jaGlwID09IEFTVDIzMDAgfHwgYXN0LT5jaGlwID09IEFTVDI0MDApCj4gKyAgICAgICBpZiAo YXN0LT5jaGlwID09IEFTVDIzMDAgfHwgYXN0LT5jaGlwID09IEFTVDI0MDAgfHwgYXN0LT5jaGlw ID09IEFTVDI1MDApCj4gICAgICAgICAgICAgICAgIHJlZyB8PSAweDIwOwo+ICAgICAgICAgYXN0 X3NldF9pbmRleF9yZWdfbWFzayhhc3QsIEFTVF9JT19DUlRDX1BPUlQsIDB4YjYsIDB4ZmYsIHJl Zyk7Cj4gIH0KPiBAQCAtMzc5LDcgKzM4MCw5IEBAIHZvaWQgYXN0X3Bvc3RfZ3B1KHN0cnVjdCBk cm1fZGV2aWNlICpkZXYpCj4gICAgICAgICBhc3Rfb3Blbl9rZXkoYXN0KTsKPiAgICAgICAgIGFz dF9zZXRfZGVmX2V4dF9yZWcoZGV2KTsKPgo+IC0gICAgICAgaWYgKGFzdC0+Y2hpcCA9PSBBU1Qy MzAwIHx8IGFzdC0+Y2hpcCA9PSBBU1QyNDAwKQo+ICsgICAgICAgaWYgKGFzdC0+Y2hpcCA9PSBB U1QyNTAwKQo+ICsgICAgICAgICAgICAgICBhc3RfaW5pdF9kcmFtXzI1MDAoZGV2KTsKPiArICAg ICAgIGVsc2UgaWYgKGFzdC0+Y2hpcCA9PSBBU1QyMzAwIHx8IGFzdC0+Y2hpcCA9PSBBU1QyNDAw KQo+ICAgICAgICAgICAgICAgICBhc3RfaW5pdF9kcmFtXzIzMDAoZGV2KTsKPiAgICAgICAgIGVs c2UKPiAgICAgICAgICAgICAgICAgYXN0X2luaXRfZHJhbV9yZWcoZGV2KTsKPiBAQCAtMTY1NSwz ICsxNjU4LDUwNCBAQCBzdGF0aWMgdm9pZCBhc3RfaW5pdF9kcmFtXzIzMDAoc3RydWN0IGRybV9k ZXZpY2UgKmRldikKPiAgICAgICAgIH0gd2hpbGUgKChyZWcgJiAweDQwKSA9PSAwKTsKPiAgfQo+ Cj4gKy8qCj4gKyAqIEFTVDI1MDAgRFJBTSBzZXR0aW5ncyBtb2R1bGVzCj4gKyAqLwo+ICsjZGVm aW5lIFJFR1RCTF9OVU0gICAgICAgICAgIDE3Cj4gKyNkZWZpbmUgUkVHSURYXzAxMCAgICAgICAg ICAgMAo+ICsjZGVmaW5lIFJFR0lEWF8wMTQgICAgICAgICAgIDEKPiArI2RlZmluZSBSRUdJRFhf MDE4ICAgICAgICAgICAyCj4gKyNkZWZpbmUgUkVHSURYXzAyMCAgICAgICAgICAgMwo+ICsjZGVm aW5lIFJFR0lEWF8wMjQgICAgICAgICAgIDQKPiArI2RlZmluZSBSRUdJRFhfMDJDICAgICAgICAg ICA1Cj4gKyNkZWZpbmUgUkVHSURYXzAzMCAgICAgICAgICAgNgo+ICsjZGVmaW5lIFJFR0lEWF8y MTQgICAgICAgICAgIDcKPiArI2RlZmluZSBSRUdJRFhfMkUwICAgICAgICAgICA4Cj4gKyNkZWZp bmUgUkVHSURYXzJFNCAgICAgICAgICAgOQo+ICsjZGVmaW5lIFJFR0lEWF8yRTggICAgICAgICAg IDEwCj4gKyNkZWZpbmUgUkVHSURYXzJFQyAgICAgICAgICAgMTEKPiArI2RlZmluZSBSRUdJRFhf MkYwICAgICAgICAgICAxMgo+ICsjZGVmaW5lIFJFR0lEWF8yRjQgICAgICAgICAgIDEzCj4gKyNk ZWZpbmUgUkVHSURYXzJGOCAgICAgICAgICAgMTQKPiArI2RlZmluZSBSRUdJRFhfUkZDICAgICAg ICAgICAxNQo+ICsjZGVmaW5lIFJFR0lEWF9QTEwgICAgICAgICAgIDE2Cj4gKwo+ICtzdGF0aWMg dTMyIGRkcjNfMTYwMF90aW1pbmdfdGFibGVbUkVHVEJMX05VTV0gPSB7Cj4gKzB4NjQ2MDREMzgs ICAgICAgICAgICAgICAgICAgLyogMHgwMTAgKi8KPiArMHgyOTY5MDU5OSwgICAgICAgICAgICAg ICAgICAvKiAweDAxNCAqLwo+ICsweDAwMDAwMzAwLCAgICAgICAgICAgICAgICAgIC8qIDB4MDE4 ICovCj4gKzB4MDAwMDAwMDAsICAgICAgICAgICAgICAgICAgLyogMHgwMjAgKi8KPiArMHgwMDAw MDAwMCwgICAgICAgICAgICAgICAgICAvKiAweDAyNCAqLwo+ICsweDAyMTgxRTcwLCAgICAgICAg ICAgICAgICAgIC8qIDB4MDJDICovCj4gKzB4MDAwMDAwNDAsICAgICAgICAgICAgICAgICAgLyog MHgwMzAgKi8KPiArMHgwMDAwMDAyNCwgICAgICAgICAgICAgICAgICAvKiAweDIxNCAqLwo+ICsw eDAyMDAxMzAwLCAgICAgICAgICAgICAgICAgIC8qIDB4MkUwICovCj4gKzB4MEUwMDAwQTAsICAg ICAgICAgICAgICAgICAgLyogMHgyRTQgKi8KPiArMHgwMDBFMDAxQiwgICAgICAgICAgICAgICAg ICAvKiAweDJFOCAqLwo+ICsweDM1QjhDMTA1LCAgICAgICAgICAgICAgICAgIC8qIDB4MkVDICov Cj4gKzB4MDgwOTA0MDgsICAgICAgICAgICAgICAgICAgLyogMHgyRjAgKi8KPiArMHg5QjAwMDgw MCwgICAgICAgICAgICAgICAgICAvKiAweDJGNCAqLwo+ICsweDBFNDAwQTAwLCAgICAgICAgICAg ICAgICAgIC8qIDB4MkY4ICovCj4gKzB4OTk3MTQ1MkYsICAgICAgICAgICAgICAgICAgLyogdFJG QyAgKi8KPiArMHgwMDAwNzFDMX07ICAgICAgICAgICAgICAgICAvKiBQTEwgICAqLwo+ICsKPiAr c3RhdGljIHUzMiBkZHI0XzE2MDBfdGltaW5nX3RhYmxlW1JFR1RCTF9OVU1dID0gewo+ICsweDYz NjA0RTM3LCAgICAgICAgICAgICAgICAgIC8qIDB4MDEwICovCj4gKzB4RTk3QUZBOTksICAgICAg ICAgICAgICAgICAgLyogMHgwMTQgKi8KPiArMHgwMDAxOTAwMCwgICAgICAgICAgICAgICAgICAv KiAweDAxOCAqLwo+ICsweDA4MDAwMDAwLCAgICAgICAgICAgICAgICAgIC8qIDB4MDIwICovCj4g KzB4MDAwMDA0MDAsICAgICAgICAgICAgICAgICAgLyogMHgwMjQgKi8KPiArMHgwMDAwMDQxMCwg ICAgICAgICAgICAgICAgICAvKiAweDAyQyAqLwo+ICsweDAwMDAwMTAxLCAgICAgICAgICAgICAg ICAgIC8qIDB4MDMwICovCj4gKzB4MDAwMDAwMjQsICAgICAgICAgICAgICAgICAgLyogMHgyMTQg Ki8KPiArMHgwMzAwMjkwMCwgICAgICAgICAgICAgICAgICAvKiAweDJFMCAqLwo+ICsweDBFMDAw MEEwLCAgICAgICAgICAgICAgICAgIC8qIDB4MkU0ICovCj4gKzB4MDAwRTAwMUMsICAgICAgICAg ICAgICAgICAgLyogMHgyRTggKi8KPiArMHgzNUI4QzEwNiwgICAgICAgICAgICAgICAgICAvKiAw eDJFQyAqLwo+ICsweDA4MDgwNjA3LCAgICAgICAgICAgICAgICAgIC8qIDB4MkYwICovCj4gKzB4 OUIwMDA5MDAsICAgICAgICAgICAgICAgICAgLyogMHgyRjQgKi8KPiArMHgwRTQwMEEwMCwgICAg ICAgICAgICAgICAgICAvKiAweDJGOCAqLwo+ICsweDk5NzE0NTQ1LCAgICAgICAgICAgICAgICAg IC8qIHRSRkMgICovCj4gKzB4MDAwMDcxQzF9OyAgICAgICAgICAgICAgICAgLyogUExMICAgKi8K PiArCj4gK3N0YXRpYyB1MzIgTU1DVGVzdEJ1cnN0X0FTVDI1MDAoc3RydWN0IGFzdF9wcml2YXRl ICphc3QsIHUzMiBkYXRhZ2VuKQo+ICt7Cj4gKyAgdTMyIGRhdGEsIHRpbWVjbnQ7Cj4gKwo+ICsg IGFzdF9tb3V0ZHdtKGFzdCwgMHgxRTZFMDA3MCwgMHgwMDAwMDAwMCk7Cj4gKyAgYXN0X21vdXRk d20oYXN0LCAweDFFNkUwMDcwLCAweDAwMDAwMEMxIHwgKGRhdGFnZW4gPDwgMykpOwo+ICsgIHRp bWVjbnQgPSAwOwo+ICsgIGRvewo+ICsgICAgZGF0YSA9IGFzdF9taW5kd20oYXN0LCAweDFFNkUw MDcwKSAmIDB4MzAwMDsKPiArICAgIGlmKGRhdGEgJiAweDIwMDApewo+ICsgICAgICByZXR1cm4o MCk7Cj4gKyAgICB9Cj4gKyAgICBpZigrK3RpbWVjbnQgPiBUSU1FT1VUKXsKPiArICAgICAgYXN0 X21vdXRkd20oYXN0LCAweDFFNkUwMDcwLCAweDAwMDAwMDAwKTsKPiArICAgICAgcmV0dXJuKDAp Owo+ICsgICAgfQo+ICsgIH13aGlsZSghZGF0YSk7Cj4gKyAgYXN0X21vdXRkd20oYXN0LCAweDFF NkUwMDcwLCAweDAwMDAwMDAwKTsKPiArICByZXR1cm4oMSk7Cj4gK30KPiArCj4gK3N0YXRpYyB1 MzIgTU1DVGVzdFNpbmdsZV9BU1QyNTAwKHN0cnVjdCBhc3RfcHJpdmF0ZSAqYXN0LCB1MzIgZGF0 YWdlbikKPiArewo+ICsgIHUzMiBkYXRhLCB0aW1lY250Owo+ICsKPiArICBhc3RfbW91dGR3bShh c3QsIDB4MUU2RTAwNzAsIDB4MDAwMDAwMDApOwo+ICsgIGFzdF9tb3V0ZHdtKGFzdCwgMHgxRTZF MDA3MCwgMHgwMDAwMDA4NSB8IChkYXRhZ2VuIDw8IDMpKTsKPiArICB0aW1lY250ID0gMDsKPiAr ICBkb3sKPiArICAgIGRhdGEgPSBhc3RfbWluZHdtKGFzdCwgMHgxRTZFMDA3MCkgJiAweDMwMDA7 Cj4gKyAgICBpZihkYXRhICYgMHgyMDAwKXsKPiArICAgICAgcmV0dXJuKDApOwo+ICsgICAgfQo+ ICsgICAgaWYoKyt0aW1lY250ID4gVElNRU9VVCl7Cj4gKyAgICAgIGFzdF9tb3V0ZHdtKGFzdCwg MHgxRTZFMDA3MCwgMHgwMDAwMDAwMCk7Cj4gKyAgICAgIHJldHVybigwKTsKPiArICAgIH0KPiAr ICB9d2hpbGUoIWRhdGEpOwo+ICsgIGFzdF9tb3V0ZHdtKGFzdCwgMHgxRTZFMDA3MCwgMHgwMDAw MDAwMCk7Cj4gKyAgcmV0dXJuKDEpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdTMyIENCUlRlc3RfQVNU MjUwMChzdHJ1Y3QgYXN0X3ByaXZhdGUgKmFzdCkKPiArewo+ICsgIGFzdF9tb3V0ZHdtKGFzdCwg MHgxRTZFMDA3NCwgMHgwMDAwRkZGRik7Cj4gKyAgYXN0X21vdXRkd20oYXN0LCAweDFFNkUwMDdD LCAweEZGMDBGRjAwKTsKPiArICBpZighTU1DVGVzdEJ1cnN0X0FTVDI1MDAoYXN0LCAwKSkgcmV0 dXJuKDApOwo+ICsgIGlmKCFNTUNUZXN0U2luZ2xlX0FTVDI1MDAoYXN0LCAwKSkgcmV0dXJuKDAp Owo+ICsgIHJldHVybigxKTsKPiArfQo+ICsKPiArc3RhdGljIGJvb2wgRERSVGVzdF9BU1QyNTAw KHN0cnVjdCBhc3RfcHJpdmF0ZSAqYXN0KQo+ICt7Cj4gKyAgYXN0X21vdXRkd20oYXN0LCAweDFF NkUwMDc0LCAweDAwMDBGRkZGKTsKPiArICBhc3RfbW91dGR3bShhc3QsIDB4MUU2RTAwN0MsIDB4 RkYwMEZGMDApOwo+ICsgIGlmKCFNTUNUZXN0QnVyc3RfQVNUMjUwMChhc3QsIDApKSByZXR1cm4o MCk7Cj4gKyAgaWYoIU1NQ1Rlc3RCdXJzdF9BU1QyNTAwKGFzdCwgMSkpIHJldHVybigwKTsKPiAr ICBpZighTU1DVGVzdEJ1cnN0X0FTVDI1MDAoYXN0LCAyKSkgcmV0dXJuKDApOwo+ICsgIGlmKCFN TUNUZXN0QnVyc3RfQVNUMjUwMChhc3QsIDMpKSByZXR1cm4oMCk7Cj4gKyAgaWYoIU1NQ1Rlc3RT aW5nbGVfQVNUMjUwMChhc3QsIDApKSByZXR1cm4oMCk7Cj4gKyAgcmV0dXJuKDEpOwo+ICt9Cj4g Kwo+ICtzdGF0aWMgdm9pZCBERFJfSW5pdF9Db21tb24oc3RydWN0IGFzdF9wcml2YXRlICphc3Qp Cj4gK3sKPiArICBhc3RfbW91dGR3bShhc3QsIDB4MUU2RTAwMzQsMHgwMDAyMDA4MCk7Cj4gKyAg YXN0X21vdXRkd20oYXN0LCAweDFFNkUwMDA4LDB4MjAwMzAwMEYpOwo+ICsgIGFzdF9tb3V0ZHdt KGFzdCwgMHgxRTZFMDAzOCwweDAwMDAwRkZGKTsKPiArICBhc3RfbW91dGR3bShhc3QsIDB4MUU2 RTAwNDAsMHg4ODQ0ODg0NCk7Cj4gKyAgYXN0X21vdXRkd20oYXN0LCAweDFFNkUwMDQ0LDB4MjQ0 MjIyODgpOwo+ICsgIGFzdF9tb3V0ZHdtKGFzdCwgMHgxRTZFMDA0OCwweDIyMjIyMjIyKTsKPiAr ICBhc3RfbW91dGR3bShhc3QsIDB4MUU2RTAwNEMsMHgyMjIyMjIyMik7Cj4gKyAgYXN0X21vdXRk d20oYXN0LCAweDFFNkUwMDUwLDB4ODAwMDAwMDApOwo+ICsgIGFzdF9tb3V0ZHdtKGFzdCwgMHgx RTZFMDIwOCwweDAwMDAwMDAwKTsKPiArICBhc3RfbW91dGR3bShhc3QsIDB4MUU2RTAyMTgsMHgw MDAwMDAwMCk7Cj4gKyAgYXN0X21vdXRkd20oYXN0LCAweDFFNkUwMjIwLDB4MDAwMDAwMDApOwo+ ICsgIGFzdF9tb3V0ZHdtKGFzdCwgMHgxRTZFMDIyOCwweDAwMDAwMDAwKTsKPiArICBhc3RfbW91 dGR3bShhc3QsIDB4MUU2RTAyMzAsMHgwMDAwMDAwMCk7Cj4gKyAgYXN0X21vdXRkd20oYXN0LCAw eDFFNkUwMkE4LDB4MDAwMDAwMDApOwo+ICsgIGFzdF9tb3V0ZHdtKGFzdCwgMHgxRTZFMDJCMCww eDAwMDAwMDAwKTsKPiArICBhc3RfbW91dGR3bShhc3QsIDB4MUU2RTAyNDAsMHg4NjAwMDAwMCk7 Cj4gKyAgYXN0X21vdXRkd20oYXN0LCAweDFFNkUwMjQ0LDB4MDAwMDg2MDApOwo+ICsgIGFzdF9t b3V0ZHdtKGFzdCwgMHgxRTZFMDI0OCwweDgwMDAwMDAwKTsKPiArICBhc3RfbW91dGR3bShhc3Qs IDB4MUU2RTAyNEMsMHg4MDgwODA4MCk7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIERvX0REUlBI WV9Jbml0KHN0cnVjdCBhc3RfcHJpdmF0ZSAqYXN0KQo+ICt7Cj4gKyAgdTMyIGRhdGEsIHBhc3Ms IHRpbWVjbnQ7Cj4gKwo+ICsgIHBhc3MgPSAwOwo+ICsgIGFzdF9tb3V0ZHdtKGFzdCwgMHgxRTZF MDA2MCwweDAwMDAwMDA1KTsKPiArICB3aGlsZSghcGFzcyl7Cj4gKyAgICBmb3IodGltZWNudCA9 IDA7dGltZWNudCA8IFRJTUVPVVQ7dGltZWNudCsrKXsKPiArICAgICAgZGF0YSA9IGFzdF9taW5k d20oYXN0LCAweDFFNkUwMDYwKSAmIDB4MTsKPiArICAgICAgaWYoIWRhdGEpewo+ICsgICAgICAg IGJyZWFrOwo+ICsgICAgICB9Cj4gKyAgICB9Cj4gKyAgICBpZih0aW1lY250ICE9IFRJTUVPVVQp ewo+ICsgICAgICBkYXRhID0gYXN0X21pbmR3bShhc3QsIDB4MUU2RTAzMDApICYgMHgwMDBBMDAw MDsKPiArICAgICAgaWYoIWRhdGEpewo+ICsgICAgICAgIHBhc3MgPSAxOwo+ICsgICAgICB9Cj4g KyAgICB9Cj4gKyAgICBpZighcGFzcyl7Cj4gKyAgICAgIGFzdF9tb3V0ZHdtKGFzdCwgMHgxRTZF MDA2MCwweDAwMDAwMDAwKTsKPiArICAgICAgdWRlbGF5KDEwKTsgLyogZGVsYXkgMTAgdXMgKi8K PiArICAgICAgYXN0X21vdXRkd20oYXN0LCAweDFFNkUwMDYwLDB4MDAwMDAwMDUpOwo+ICsgICAg fQo+ICsgIH0KPiArCj4gKyAgYXN0X21vdXRkd20oYXN0LCAweDFFNkUwMDYwLDB4MDAwMDAwMDYp Owo+ICt9Cj4gKwo+ICsvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCj4gKyBDaGVjayBEUkFNIFNpemUK PiArIDFHYiA6IDB4ODAwMDAwMDAgfiAweDg3RkZGRkZGCj4gKyAyR2IgOiAweDgwMDAwMDAwIH4g MHg4RkZGRkZGRgo+ICsgNEdiIDogMHg4MDAwMDAwMCB+IDB4OUZGRkZGRkYKPiArIDhHYiA6IDB4 ODAwMDAwMDAgfiAweEJGRkZGRkZGCj4gKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KPiArc3RhdGlj IHZvaWQgQ2hlY2tfRFJBTV9TaXplKHN0cnVjdCBhc3RfcHJpdmF0ZSAqYXN0LCB1MzIgdFJGQykK PiArewo+ICsgIHUzMiByZWdfMDQsIHJlZ18xNDsKPiArCj4gKyAgcmVnXzA0ID0gYXN0X21pbmR3 bShhc3QsIDB4MUU2RTAwMDQpICYgMHhmZmZmZmZmYzsKPiArICByZWdfMTQgPSBhc3RfbWluZHdt KGFzdCwgMHgxRTZFMDAxNCkgJiAweGZmZmZmZjAwOwo+ICsKPiArICBhc3RfbW91dGR3bShhc3Qs IDB4QTAxMDAwMDAsIDB4NDE0MjQzNDQpOwo+ICsgIGFzdF9tb3V0ZHdtKGFzdCwgMHg5MDEwMDAw MCwgMHgzNTM2MzczOCk7Cj4gKyAgYXN0X21vdXRkd20oYXN0LCAweDg4MTAwMDAwLCAweDI5MkEy QjJDKTsKPiArICBhc3RfbW91dGR3bShhc3QsIDB4ODAxMDAwMDAsIDB4MUQxRTFGMTApOwo+ICsK PiArICAvKiBDaGVjayA4R2JpdCAqLwo+ICsgIGlmKGFzdF9taW5kd20oYXN0LCAweEEwMTAwMDAw KSA9PSAweDQxNDI0MzQ0KXsKPiArICAgIHJlZ18wNCB8PSAweDAzOwo+ICsgICAgcmVnXzE0IHw9 ICh0UkZDID4+IDI0KSAmIDB4RkY7Cj4gKyAgLyogQ2hlY2sgNEdiaXQgKi8KPiArICB9ZWxzZSBp Zihhc3RfbWluZHdtKGFzdCwgMHg5MDEwMDAwMCkgPT0gMHgzNTM2MzczOCl7Cj4gKyAgICByZWdf MDQgfD0gMHgwMjsKPiArICAgIHJlZ18xNCB8PSAodFJGQyA+PiAxNikgJiAweEZGOwo+ICsgIC8q IENoZWNrIDJHYml0ICovCj4gKyAgfWVsc2UgaWYoYXN0X21pbmR3bShhc3QsIDB4ODgxMDAwMDAp ID09IDB4MjkyQTJCMkMpewo+ICsgICAgcmVnXzA0IHw9IDB4MDE7Cj4gKyAgICByZWdfMTQgfD0g KHRSRkMgPj4gOCkgJiAweEZGOwo+ICsgIH1lbHNlewo+ICsgICAgcmVnXzE0IHw9IHRSRkMgJiAw eEZGOwo+ICsgIH0KPiArICBhc3RfbW91dGR3bShhc3QsIDB4MUU2RTAwMDQsIHJlZ18wNCk7Cj4g KyAgYXN0X21vdXRkd20oYXN0LCAweDFFNkUwMDE0LCByZWdfMTQpOwo+ICt9Cj4gKwo+ICtzdGF0 aWMgdm9pZCBFbmFibGVfQ2FjaGUoc3RydWN0IGFzdF9wcml2YXRlICphc3QpCj4gK3sKPiArICB1 MzIgcmVnXzA0LCBkYXRhOwo+ICsKPiArICByZWdfMDQgPSBhc3RfbWluZHdtKGFzdCwgMHgxRTZF MDAwNCk7Cj4gKyAgYXN0X21vdXRkd20oYXN0LCAweDFFNkUwMDA0LCByZWdfMDQgfCAweDEwMDAp Owo+ICsKPiArICBkb3sKPiArICAgIGRhdGEgPSBhc3RfbWluZHdtKGFzdCwgMHgxRTZFMDAwNCk7 Cj4gKyAgfXdoaWxlKCEoZGF0YSAmIDB4ODAwMDApKTsKPiArICBhc3RfbW91dGR3bShhc3QsIDB4 MUU2RTAwMDQsIHJlZ18wNCB8IDB4NDAwKTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgU2V0X01Q TEwoc3RydWN0IGFzdF9wcml2YXRlICphc3QpCj4gK3sKPiArICB1MzIgYWRkciwgZGF0YSwgcGFy YW07Cj4gKwo+ICsgIC8qIFJlc2V0IE1NQyAqLwo+ICsgIGFzdF9tb3V0ZHdtKGFzdCwgMHgxRTZF MDAwMCwweEZDNjAwMzA5KTsKPiArICBhc3RfbW91dGR3bShhc3QsIDB4MUU2RTAwMzQsMHgwMDAy MDA4MCk7Cj4gKyAgZm9yKGFkZHIgPSAweDFlNmUwMDA0O2FkZHIgPCAweDFlNmUwMDkwOyl7Cj4g KyAgICBhc3RfbW91dGR3bShhc3QsIGFkZHIsIDB4MCk7Cj4gKyAgICBhZGRyICs9IDQ7Cj4gKyAg fQo+ICsgIGFzdF9tb3V0ZHdtKGFzdCwgMHgxRTZFMDAzNCwweDAwMDIwMDAwKTsKPiArCj4gKyAg YXN0X21vdXRkd20oYXN0LCAweDFFNkUyMDAwLCAweDE2ODhBOEE4KTsKPiArICBkYXRhID0gYXN0 X21pbmR3bShhc3QsIDB4MUU2RTIwNzApICYgMHgwMDgwMDAwMDsKPiArICBpZihkYXRhKXsgICAg ICAgICAgICAgICAgICAvKiBDTEtJTiA9IDI1TUh6ICovCj4gKyAgICBwYXJhbSA9IDB4OTMwMDIz RTA7Cj4gKyAgICBhc3RfbW91dGR3bShhc3QsIDB4MUU2RTIxNjAsIDB4MDAwMTEzMjApOwo+ICsg IH1lbHNleyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDTEtJTiA9 IDI0TUh6ICovCj4gKyAgICBwYXJhbSA9IDB4OTMwMDI0MDA7Cj4gKyAgfQo+ICsgIGFzdF9tb3V0 ZHdtKGFzdCwgMHgxRTZFMjAyMCwgcGFyYW0pOwo+ICsgIHVkZWxheSgxMDApOwo+ICt9Cj4gKwo+ ICtzdGF0aWMgdm9pZCBSZXNldF9NTUMoc3RydWN0IGFzdF9wcml2YXRlICphc3QpCj4gK3sKPiAr ICBhc3RfbW91dGR3bShhc3QsIDB4MUU3ODUwNUMsMHgwMDAwMDAwNCk7Cj4gKyAgYXN0X21vdXRk d20oYXN0LCAweDFFNzg1MDQ0LDB4MDAwMDAwMDEpOwo+ICsgIGFzdF9tb3V0ZHdtKGFzdCwgMHgx RTc4NTA0OCwweDAwMDA0NzU1KTsKPiArICBhc3RfbW91dGR3bShhc3QsIDB4MUU3ODUwNEMsMHgw MDAwMDAxMyk7Cj4gKyAgbWRlbGF5KDEwMCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgLyogZGVsYXkgMTAwbXMgKi8KPiArICBhc3RfbW91dGR3bShhc3QsIDB4MUU3ODUwNTQsMHgw MDAwMDA3Nyk7Cj4gKyAgYXN0X21vdXRkd20oYXN0LCAweDFFNkUwMDAwLDB4RkM2MDAzMDkpOwo+ ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBERFIzX0luaXRfQVNUMjUwMChzdHJ1Y3QgYXN0X3ByaXZh dGUgKmFzdCwgdTMyICpkZHJfdGFibGUpCj4gK3sKPiArCj4gKyAgYXN0X21vdXRkd20oYXN0LCAw eDFFNkUwMDA0LDB4MDAwMDAzMDMpOwo+ICsgIGFzdF9tb3V0ZHdtKGFzdCwgMHgxRTZFMDAxMCxk ZHJfdGFibGVbUkVHSURYXzAxMF0pOwo+ICsgIGFzdF9tb3V0ZHdtKGFzdCwgMHgxRTZFMDAxNCxk ZHJfdGFibGVbUkVHSURYXzAxNF0pOwo+ICsgIGFzdF9tb3V0ZHdtKGFzdCwgMHgxRTZFMDAxOCxk ZHJfdGFibGVbUkVHSURYXzAxOF0pOwo+ICsgIGFzdF9tb3V0ZHdtKGFzdCwgMHgxRTZFMDAyMCxk ZHJfdGFibGVbUkVHSURYXzAyMF0pOyAgICAgICAgICAvKiBNT0RFUkVHNC82ICovCj4gKyAgYXN0 X21vdXRkd20oYXN0LCAweDFFNkUwMDI0LGRkcl90YWJsZVtSRUdJRFhfMDI0XSk7ICAgICAgICAg IC8qIE1PREVSRUc1ICovCj4gKyAgYXN0X21vdXRkd20oYXN0LCAweDFFNkUwMDJDLGRkcl90YWJs ZVtSRUdJRFhfMDJDXSB8IDB4MTAwKTsgIC8qIE1PREVSRUcwLzIgKi8KPiArICBhc3RfbW91dGR3 bShhc3QsIDB4MUU2RTAwMzAsZGRyX3RhYmxlW1JFR0lEWF8wMzBdKTsgICAgICAgICAgLyogTU9E RVJFRzEvMyAqLwo+ICsKPiArICAvKiBERFIgUEhZIFNldHRpbmcgKi8KPiArICBhc3RfbW91dGR3 bShhc3QsIDB4MUU2RTAyMDAsMHgwMjQ5MkFBRSk7Cj4gKyAgYXN0X21vdXRkd20oYXN0LCAweDFF NkUwMjA0LDB4MDAwMDEwMDEpOwo+ICsgIGFzdF9tb3V0ZHdtKGFzdCwgMHgxRTZFMDIwQywweDU1 RTAwQjBCKTsKPiArICBhc3RfbW91dGR3bShhc3QsIDB4MUU2RTAyMTAsMHgyMDAwMDAwMCk7Cj4g KyAgYXN0X21vdXRkd20oYXN0LCAweDFFNkUwMjE0LGRkcl90YWJsZVtSRUdJRFhfMjE0XSk7Cj4g KyAgYXN0X21vdXRkd20oYXN0LCAweDFFNkUwMkUwLGRkcl90YWJsZVtSRUdJRFhfMkUwXSk7Cj4g KyAgYXN0X21vdXRkd20oYXN0LCAweDFFNkUwMkU0LGRkcl90YWJsZVtSRUdJRFhfMkU0XSk7Cj4g KyAgYXN0X21vdXRkd20oYXN0LCAweDFFNkUwMkU4LGRkcl90YWJsZVtSRUdJRFhfMkU4XSk7Cj4g KyAgYXN0X21vdXRkd20oYXN0LCAweDFFNkUwMkVDLGRkcl90YWJsZVtSRUdJRFhfMkVDXSk7Cj4g KyAgYXN0X21vdXRkd20oYXN0LCAweDFFNkUwMkYwLGRkcl90YWJsZVtSRUdJRFhfMkYwXSk7Cj4g KyAgYXN0X21vdXRkd20oYXN0LCAweDFFNkUwMkY0LGRkcl90YWJsZVtSRUdJRFhfMkY0XSk7Cj4g KyAgYXN0X21vdXRkd20oYXN0LCAweDFFNkUwMkY4LGRkcl90YWJsZVtSRUdJRFhfMkY4XSk7Cj4g KyAgYXN0X21vdXRkd20oYXN0LCAweDFFNkUwMjkwLDB4MDAxMDAwMDgpOwo+ICsgIGFzdF9tb3V0 ZHdtKGFzdCwgMHgxRTZFMDJDMCwweDAwMDAwMDA2KTsKPiArCj4gKyAgLyogQ29udHJvbGxlciBT ZXR0aW5nICovCj4gKyAgYXN0X21vdXRkd20oYXN0LCAweDFFNkUwMDM0LDB4MDAwMjAwOTEpOwo+ ICsKPiArICAvKiBXYWl0IEREUiBQSFkgaW5pdCBkb25lICovCj4gKyAgRG9fRERSUEhZX0luaXQo YXN0KTsKPiArCj4gKyAgYXN0X21vdXRkd20oYXN0LCAweDFFNkUwMTIwLGRkcl90YWJsZVtSRUdJ RFhfUExMXSk7Cj4gKyAgYXN0X21vdXRkd20oYXN0LCAweDFFNkUwMDBDLDB4NDJBQTVDODEpOwo+ ICsgIGFzdF9tb3V0ZHdtKGFzdCwgMHgxRTZFMDAzNCwweDAwMDFBRjkzKTsKPiArCj4gKyAgQ2hl Y2tfRFJBTV9TaXplKGFzdCwgZGRyX3RhYmxlW1JFR0lEWF9SRkNdKTsKPiArICBFbmFibGVfQ2Fj aGUoYXN0KTsKPiArICBhc3RfbW91dGR3bShhc3QsIDB4MUU2RTAwMUMsMHgwMDAwMDAwOCk7Cj4g KyAgYXN0X21vdXRkd20oYXN0LCAweDFFNkUwMDM4LDB4RkZGRkZGMDApOwo+ICt9Cj4gKwo+ICtz dGF0aWMgdm9pZCBERFI0X0luaXRfQVNUMjUwMChzdHJ1Y3QgYXN0X3ByaXZhdGUgKmFzdCwgdTMy ICpkZHJfdGFibGUpCj4gK3sKPiArICB1MzIgZGF0YSwgZGF0YTIsIHBhc3MsIHJldHJ5Y250Owo+ ICsgIHUzMiBkZHJfdnJlZiwgcGh5X3ZyZWY7Cj4gKyAgdTMyIG1pbl9kZHJfdnJlZj0wLCBtaW5f cGh5X3ZyZWY9MDsKPiArICB1MzIgbWF4X2Rkcl92cmVmPTAsIG1heF9waHlfdnJlZj0wOwo+ICsK PiArICBhc3RfbW91dGR3bShhc3QsIDB4MUU2RTAwMDQsMHgwMDAwMDMxMyk7Cj4gKyAgYXN0X21v dXRkd20oYXN0LCAweDFFNkUwMDEwLGRkcl90YWJsZVtSRUdJRFhfMDEwXSk7Cj4gKyAgYXN0X21v dXRkd20oYXN0LCAweDFFNkUwMDE0LGRkcl90YWJsZVtSRUdJRFhfMDE0XSk7Cj4gKyAgYXN0X21v dXRkd20oYXN0LCAweDFFNkUwMDE4LGRkcl90YWJsZVtSRUdJRFhfMDE4XSk7Cj4gKyAgYXN0X21v dXRkd20oYXN0LCAweDFFNkUwMDIwLGRkcl90YWJsZVtSRUdJRFhfMDIwXSk7ICAgICAgICAgIC8q IE1PREVSRUc0LzYgKi8KPiArICBhc3RfbW91dGR3bShhc3QsIDB4MUU2RTAwMjQsZGRyX3RhYmxl W1JFR0lEWF8wMjRdKTsgICAgICAgICAgLyogTU9ERVJFRzUgKi8KPiArICBhc3RfbW91dGR3bShh c3QsIDB4MUU2RTAwMkMsZGRyX3RhYmxlW1JFR0lEWF8wMkNdIHwgMHgxMDApOyAgLyogTU9ERVJF RzAvMiAqLwo+ICsgIGFzdF9tb3V0ZHdtKGFzdCwgMHgxRTZFMDAzMCxkZHJfdGFibGVbUkVHSURY XzAzMF0pOyAgICAgICAgICAvKiBNT0RFUkVHMS8zICovCj4gKwo+ICsgIC8qIEREUiBQSFkgU2V0 dGluZyAqLwo+ICsgIGFzdF9tb3V0ZHdtKGFzdCwgMHgxRTZFMDIwMCwweDQyNDkyQUFFKTsKPiAr ICBhc3RfbW91dGR3bShhc3QsIDB4MUU2RTAyMDQsMHgwOTAwMjAwMCk7Cj4gKyAgYXN0X21vdXRk d20oYXN0LCAweDFFNkUwMjBDLDB4NTVFMDBCMEIpOwo+ICsgIGFzdF9tb3V0ZHdtKGFzdCwgMHgx RTZFMDIxMCwweDIwMDAwMDAwKTsKPiArICBhc3RfbW91dGR3bShhc3QsIDB4MUU2RTAyMTQsZGRy X3RhYmxlW1JFR0lEWF8yMTRdKTsKPiArICBhc3RfbW91dGR3bShhc3QsIDB4MUU2RTAyRTAsZGRy X3RhYmxlW1JFR0lEWF8yRTBdKTsKPiArICBhc3RfbW91dGR3bShhc3QsIDB4MUU2RTAyRTQsZGRy X3RhYmxlW1JFR0lEWF8yRTRdKTsKPiArICBhc3RfbW91dGR3bShhc3QsIDB4MUU2RTAyRTgsZGRy X3RhYmxlW1JFR0lEWF8yRThdKTsKPiArICBhc3RfbW91dGR3bShhc3QsIDB4MUU2RTAyRUMsZGRy X3RhYmxlW1JFR0lEWF8yRUNdKTsKPiArICBhc3RfbW91dGR3bShhc3QsIDB4MUU2RTAyRjAsZGRy X3RhYmxlW1JFR0lEWF8yRjBdKTsKPiArICBhc3RfbW91dGR3bShhc3QsIDB4MUU2RTAyRjQsZGRy X3RhYmxlW1JFR0lEWF8yRjRdKTsKPiArICBhc3RfbW91dGR3bShhc3QsIDB4MUU2RTAyRjgsZGRy X3RhYmxlW1JFR0lEWF8yRjhdKTsKPiArICBhc3RfbW91dGR3bShhc3QsIDB4MUU2RTAyOTAsMHgw MDEwMDAwOCk7Cj4gKyAgYXN0X21vdXRkd20oYXN0LCAweDFFNkUwMkM0LDB4M0MxODNDM0MpOwo+ ICsgIGFzdF9tb3V0ZHdtKGFzdCwgMHgxRTZFMDJDOCwweDAwNjMxRTBFKTsKPiArCj4gKyAgLyog Q29udHJvbGxlciBTZXR0aW5nICovCj4gKyAgYXN0X21vdXRkd20oYXN0LCAweDFFNkUwMDM0LDB4 MDAwMUE5OTEpOwo+ICsKPiArICAvKiBUcmFpbiBQSFkgVnJlZiBmaXJzdCAqLwo+ICsgIHBhc3Mg PSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogYWRkIGF0IFYxLjEgKi8KPiAr ICBmb3IocmV0cnljbnQgPSAwO3JldHJ5Y250IDwgNCAmJiBwYXNzID09IDA7cmV0cnljbnQrKyl7 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGFkZCBhdCBWMS4x ICovCj4gKyAgICBtYXhfcGh5X3ZyZWYgPSAweDA7Cj4gKyAgICBwYXNzID0gMDsKPiArICAgIGFz dF9tb3V0ZHdtKGFzdCwgMHgxRTZFMDJDMCwweDAwMDAxQzA2KTsKPiArICAgIGZvcihwaHlfdnJl ZiA9IDB4NDA7cGh5X3ZyZWYgPCAweDgwO3BoeV92cmVmKyspewo+ICsgICAgICBhc3RfbW91dGR3 bShhc3QsIDB4MUU2RTAwMEMsMHgwMDAwMDAwMCk7Cj4gKyAgICAgIGFzdF9tb3V0ZHdtKGFzdCwg MHgxRTZFMDA2MCwweDAwMDAwMDAwKTsKPiArICAgICAgYXN0X21vdXRkd20oYXN0LCAweDFFNkUw MkNDLHBoeV92cmVmIHwgKHBoeV92cmVmIDw8IDgpKTsKPiArICAgICAgLyogRmlyZSBERkkgSW5p dCAqLwo+ICsgICAgICBEb19ERFJQSFlfSW5pdChhc3QpOwo+ICsgICAgICBhc3RfbW91dGR3bShh c3QsIDB4MUU2RTAwMEMsMHgwMDAwNUMwMSk7Cj4gKyAgICAgIGlmKENCUlRlc3RfQVNUMjUwMChh c3QpKXsKPiArICAgICAgICBwYXNzKys7Cj4gKyAgICAgICAgZGF0YSA9IGFzdF9taW5kd20oYXN0 LCAweDFFNkUwM0QwKTsKPiArICAgICAgICBkYXRhMiA9IGRhdGEgPj4gODsKPiArICAgICAgICBk YXRhICA9IGRhdGEgJiAweGZmOwo+ICsgICAgICAgIGlmKGRhdGEgPiBkYXRhMil7Cj4gKyAgICAg ICAgICBkYXRhID0gZGF0YTI7Cj4gKyAgICAgICAgfQo+ICsKPiArICAgICAgICBpZihtYXhfcGh5 X3ZyZWYgPCBkYXRhKXsKPiArICAgICAgICAgIG1heF9waHlfdnJlZiA9IGRhdGE7Cj4gKyAgICAg ICAgICBtaW5fcGh5X3ZyZWYgPSBwaHlfdnJlZjsKPiArICAgICAgICB9Cj4gKyAgICAgIH1lbHNl IGlmKHBhc3MgPiAwKXsKPiArICAgICAgICBicmVhazsKPiArICAgICAgfQo+ICsgICAgfQo+ICsg IH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogYWRkIGF0IFYxLjEg Ki8KPiArICBhc3RfbW91dGR3bShhc3QsIDB4MUU2RTAyQ0MsbWluX3BoeV92cmVmIHwgKG1pbl9w aHlfdnJlZiA8PCA4KSk7Cj4gKwo+ICsgIC8qIFRyYWluIEREUiBWcmVmIG5leHQgKi8KPiArICBw YXNzID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGFkZCBhdCBWMS4xICov Cj4gKyAgZm9yKHJldHJ5Y250ID0gMDtyZXRyeWNudCA8IDQgJiYgcGFzcyA9PSAwO3JldHJ5Y250 KyspeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBhZGQgYXQg VjEuMSAqLwo+ICsgICAgbWluX2Rkcl92cmVmID0gMHhGRjsKPiArICAgIG1heF9kZHJfdnJlZiA9 IDB4MDsKPiArICAgIHBhc3MgPSAwOwo+ICsgICAgZm9yKGRkcl92cmVmID0gMHgwMDtkZHJfdnJl ZiA8IDB4NDA7ZGRyX3ZyZWYrKyl7Cj4gKyAgICAgIGFzdF9tb3V0ZHdtKGFzdCwgMHgxRTZFMDAw QywweDAwMDAwMDAwKTsKPiArICAgICAgYXN0X21vdXRkd20oYXN0LCAweDFFNkUwMDYwLDB4MDAw MDAwMDApOwo+ICsgICAgICBhc3RfbW91dGR3bShhc3QsIDB4MUU2RTAyQzAsMHgwMDAwMDAwNiB8 IChkZHJfdnJlZiA8PCA4KSk7Cj4gKyAgICAgIC8qIEZpcmUgREZJIEluaXQgKi8KPiArICAgICAg RG9fRERSUEhZX0luaXQoYXN0KTsKPiArICAgICAgYXN0X21vdXRkd20oYXN0LCAweDFFNkUwMDBD LDB4MDAwMDVDMDEpOwo+ICsgICAgICBpZihDQlJUZXN0X0FTVDI1MDAoYXN0KSl7Cj4gKyAgICAg ICAgcGFzcysrOwo+ICsgICAgICAgIGlmKG1pbl9kZHJfdnJlZiA+IGRkcl92cmVmKXsKPiArICAg ICAgICAgIG1pbl9kZHJfdnJlZiA9IGRkcl92cmVmOwo+ICsgICAgICAgIH0KPiArICAgICAgICBp ZihtYXhfZGRyX3ZyZWYgPCBkZHJfdnJlZil7Cj4gKyAgICAgICAgICBtYXhfZGRyX3ZyZWYgPSBk ZHJfdnJlZjsKPiArICAgICAgICB9Cj4gKyAgICAgIH1lbHNlIGlmKHBhc3MgIT0gMCl7Cj4gKyAg ICAgICAgYnJlYWs7Cj4gKyAgICAgIH0KPiArICAgIH0KPiArICB9ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIC8qIGFkZCBhdCBWMS4xICovCj4gKyAgYXN0X21vdXRkd20o YXN0LCAweDFFNkUwMDBDLDB4MDAwMDAwMDApOwo+ICsgIGFzdF9tb3V0ZHdtKGFzdCwgMHgxRTZF MDA2MCwweDAwMDAwMDAwKTsKPiArICBkZHJfdnJlZiA9IChtaW5fZGRyX3ZyZWYgKyBtYXhfZGRy X3ZyZWYgKyAxKSA+PiAxOwo+ICsgIGFzdF9tb3V0ZHdtKGFzdCwgMHgxRTZFMDJDMCwweDAwMDAw MDA2IHwgKGRkcl92cmVmIDw8IDgpKTsKPiArCj4gKyAgLyogV2FpdCBERFIgUEhZIGluaXQgZG9u ZSAqLwo+ICsgIERvX0REUlBIWV9Jbml0KGFzdCk7Cj4gKwo+ICsgIGFzdF9tb3V0ZHdtKGFzdCwg MHgxRTZFMDEyMCxkZHJfdGFibGVbUkVHSURYX1BMTF0pOwo+ICsgIGFzdF9tb3V0ZHdtKGFzdCwg MHgxRTZFMDAwQywweDQyQUE1QzgxKTsKPiArICBhc3RfbW91dGR3bShhc3QsIDB4MUU2RTAwMzQs MHgwMDAxQUY5Myk7Cj4gKwo+ICsgIENoZWNrX0RSQU1fU2l6ZShhc3QsIGRkcl90YWJsZVtSRUdJ RFhfUkZDXSk7Cj4gKyAgRW5hYmxlX0NhY2hlKGFzdCk7Cj4gKyAgYXN0X21vdXRkd20oYXN0LCAw eDFFNkUwMDFDLDB4MDAwMDAwMDgpOwo+ICsgIGFzdF9tb3V0ZHdtKGFzdCwgMHgxRTZFMDAzOCww eEZGRkZGRjAwKTsKPiArfQo+ICsKPiArc3RhdGljIHUzMiBEUkFNX0luaXRfQVNUMjUwMChzdHJ1 Y3QgYXN0X3ByaXZhdGUgKmFzdCkKPiArewo+ICsgIHUzMiBkYXRhOwo+ICsKPiArU1RBUlRfSU5J VDoKPiArICBTZXRfTVBMTChhc3QpOwo+ICsgIFJlc2V0X01NQyhhc3QpOwo+ICsgIEREUl9Jbml0 X0NvbW1vbihhc3QpOwo+ICsgIGRhdGEgPSBhc3RfbWluZHdtKGFzdCwgMHgxRTZFMjA3MCk7Cj4g KyAgaWYoZGF0YSAmIDB4MDEwMDAwMDApewo+ICsgICAgRERSNF9Jbml0X0FTVDI1MDAoYXN0LCBk ZHI0XzE2MDBfdGltaW5nX3RhYmxlKTsKPiArICB9ZWxzZXsKPiArICAgIEREUjNfSW5pdF9BU1Qy NTAwKGFzdCwgZGRyM18xNjAwX3RpbWluZ190YWJsZSk7Cj4gKyAgfQo+ICsgIGlmKCFERFJUZXN0 X0FTVDI1MDAoYXN0KSl7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGFkZCBhdCBWMS4xICovCj4gKyAgICBnb3Rv IFNUQVJUX0lOSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogYWRkIGF0IFYxLjEgKi8KPiArICB9 Cj4gKyAgYXN0X21vdXRkd20oYXN0LCAweDFFNkUyMDQwLCBhc3RfbWluZHdtKGFzdCwgMHgxRTZF MjA0MCkgfCAweDQxKTsKPiArICAvKiBQYXRjaCBjb2RlICovCj4gKyAgZGF0YSA9IGFzdF9taW5k d20oYXN0LCAweDFFNkUyMDBDKSAmIDB4RjlGRkZGRkY7Cj4gKyAgYXN0X21vdXRkd20oYXN0LCAw eDFFNkUyMDBDLCBkYXRhIHwgMHgxMDAwMDAwMCk7Cj4gKyAgcmV0dXJuKDEpOwo+ICt9Cj4gKwo+ ICtzdGF0aWMgdm9pZCBhc3RfaW5pdF9kcmFtXzI1MDAoc3RydWN0IGRybV9kZXZpY2UgKmRldikK PiArewo+ICsgICAgICAgc3RydWN0IGFzdF9wcml2YXRlICphc3QgPSBkZXYtPmRldl9wcml2YXRl Owo+ICsgICAgICAgdTMyIHRlbXA7Cj4gKyAgICAgICB1OCByZWc7Cj4gKwo+ICsgICAgICAgcmVn ID0gYXN0X2dldF9pbmRleF9yZWdfbWFzayhhc3QsIEFTVF9JT19DUlRDX1BPUlQsIDB4ZDAsIDB4 ZmYpOwo+ICsgICAgICAgaWYgKChyZWcgJiAweDgwKSA9PSAwKSB7LyogdmdhIG9ubHkgKi8KPiAr ICAgICAgICAgICAgICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8K PiArICAgICAgICAgICAgICAgLyogQmVsb3cgcGF0Y2ggc2hvdWxkIGJlIGV4ZWN1dGVkIGF0IHRo ZSBmaXJzdCB0aW1lIGJlZm9yZSBhbnkgYWNjZXNzIHRvIEFTVDI1eHggICAgICAgICAgICAgICAg Ki8KPiArICAgICAgICAgICAgICAgLyogQ2xlYXIgYnVzIGxvY2sgY29uZGl0aW9uICovCj4gKyAg ICAgICAgICAgICAgIGFzdF9tb3V0ZHdtKGFzdCwgMHgxZTYwMDAwMCwweEFFRUQxQTAzKTsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBh ZGQgYXQgVjEuMSAqLwo+ICsgICAgICAgICAgICAgICBhc3RfbW91dGR3bShhc3QsIDB4MWU2MDAw ODQsMHgwMDAxMDAwMCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgLyogYWRkIGF0IFYxLjEgKi8KPiArICAgICAgICAgICAgICAgYXN0X21v dXRkd20oYXN0LCAweDFlNjAwMDg4LDB4MDAwMDAwMDApOyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGFkZCBhdCBWMS4xICovCj4gKyAg ICAgICAgICAgICAgIGFzdF9tb3V0ZHdtKGFzdCwgMHgxZTZlMjAwMCwweDE2ODhBOEE4KTsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBh ZGQgYXQgVjEuMSAqLwo+ICsgICAgICAgICAgICAgICAvKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqLwo+ICsKPiArICAgICAgICAgICAgICAgYXN0X3dyaXRlMzIoYXN0LCAw eGYwMDQsIDB4MWU2ZTAwMDApOwo+ICsgICAgICAgICAgICAgICBhc3Rfd3JpdGUzMihhc3QsIDB4 ZjAwMCwgMHgxKTsKPiArICAgICAgICAgICAgICAgYXN0X3dyaXRlMzIoYXN0LCAweDEyMDAwLCAw eDE2ODhhOGE4KTsKPiArICAgICAgICAgICAgICAgZG8gewo+ICsgICAgICAgICAgICAgICAgICAg ICAgIDsKPiArICAgICAgICAgICAgICAgfSB3aGlsZSAoYXN0X3JlYWQzMihhc3QsIDB4MTIwMDAp ICE9IDB4MSk7Cj4gKwo+ICsgICAgICAgICAgICAgICBhc3Rfd3JpdGUzMihhc3QsIDB4MTAwMDAs IDB4ZmM2MDAzMDkpOwo+ICsgICAgICAgICAgICAgICBkbyB7Cj4gKyAgICAgICAgICAgICAgICAg ICAgICAgOwo+ICsgICAgICAgICAgICAgICB9IHdoaWxlIChhc3RfcmVhZDMyKGFzdCwgMHgxMDAw MCkgIT0gMHgxKTsKPiArCj4gKyAgICAgICAgICAgICAgIC8qIFNsb3cgZG93biBDUFUvQUhCIENM SyBpbiBWR0Egb25seSBtb2RlICovCj4gKyAgICAgICAgICAgICAgIHRlbXAgPSBhc3RfcmVhZDMy KGFzdCwgMHgxMjAwOCk7Cj4gKyAgICAgICAgICAgICAgIHRlbXAgfD0gMHg3MzsKPiArICAgICAg ICAgICAgICAgYXN0X3dyaXRlMzIoYXN0LCAweDEyMDA4LCB0ZW1wKTsKPiArCj4gKyAgICAgICAg ICAgICAgIC8qIFJlc2V0IFVTQiBwb3J0IHRvIHBhdGNoIFVTQiB1bmtub3duIGRldmljZSBpc3N1 ZSAqLwo+ICsgICAgICAgICAgICAgICBhc3RfbW91dGR3bShhc3QsIDB4MWU2ZTIwOTAsIDB4MjAw MDAwMDApOwo+ICsgICAgICAgdGVtcCAgPSBhc3RfbWluZHdtKGFzdCwgMHgxZTZlMjA5NCk7Cj4g KyAgICAgICB0ZW1wIHw9IDB4MDAwMDQwMDA7Cj4gKyAgICAgICBhc3RfbW91dGR3bShhc3QsIDB4 MWU2ZTIwOTQsIHRlbXApOwo+ICsgICAgICAgdGVtcCAgPSBhc3RfbWluZHdtKGFzdCwgMHgxZTZl MjA3MCk7Cj4gKyAgICAgICAgICAgICAgIGlmICh0ZW1wICYgMHgwMDgwMDAwMCkKPiArICAgICAg ICAgICAgICAgewo+ICsgICAgICAgICAgICAgICBhc3RfbW91dGR3bShhc3QsIDB4MWU2ZTIwN2Ms IDB4MDA4MDAwMDApOwo+ICsgICAgICAgICAgICAgICAgICAgICAgIG1kZWxheSgxMDApOyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBkZWxheSAx MDBtcyAqLwo+ICsgICAgICAgICAgICAgICBhc3RfbW91dGR3bShhc3QsIDB4MWU2ZTIwNzAsIDB4 MDA4MDAwMDApOwo+ICsgICAgICAgICAgICAgICB9Cj4gKwo+ICsgICAgICAgICAgICAgICBEUkFN X0luaXRfQVNUMjUwMChhc3QpOwo+ICsKPiArICAgICAgICAgICAgICAgdGVtcCA9IGFzdF9taW5k d20oYXN0LCAweDFlNmUyMDQwKTsKPiArICAgICAgICAgICAgICAgYXN0X21vdXRkd20oYXN0LCAw eDFlNmUyMDQwLCB0ZW1wIHwgMHg0MCk7Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAgICAgLyogd2Fp dCByZWFkeSAqLwo+ICsgICAgICAgZG8gewo+ICsgICAgICAgICAgICAgICByZWcgPSBhc3RfZ2V0 X2luZGV4X3JlZ19tYXNrKGFzdCwgQVNUX0lPX0NSVENfUE9SVCwgMHhkMCwgMHhmZik7Cj4gKyAg ICAgICB9IHdoaWxlICgocmVnICYgMHg0MCkgPT0gMCk7Cj4gK30KPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2FzdC9hc3RfdGFibGVzLmggYi9kcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF90 YWJsZXMuaAo+IGluZGV4IDM2MDhkNWEuLjI0ZGE0YzIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2FzdC9hc3RfdGFibGVzLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF90 YWJsZXMuaAo+IEBAIC00Nyw2ICs0Nyw3IEBACj4gICNkZWZpbmUgU3luY1BOICAgICAgICAgICAg ICAgICAoUFZTeW5jIHwgTkhTeW5jKQo+ICAjZGVmaW5lIFN5bmNOUCAgICAgICAgICAgICAgICAg KE5WU3luYyB8IFBIU3luYykKPiAgI2RlZmluZSBTeW5jTk4gICAgICAgICAgICAgICAgIChOVlN5 bmMgfCBOSFN5bmMpCj4gKyNkZWZpbmUgQVNUMjUwMFByZUNhdGNoQ1JUICAgICAgICAgICAgIDB4 MDAwMDQwMDAKPgo+ICAvKiBEQ0xLIEluZGV4ICovCj4gICNkZWZpbmUgVkNMSzI1XzE3NSAgICAg ICAgICAgICAgICAgICAgIDB4MDAKPiBAQCAtMTA4LDYgKzEwOSwzNiBAQAo+ICAgICAgICAgezB4 M2IsIDB4MmMsIDB4ODF9LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAx QTogVkNMSzExOF8yNSAgICAgICAqLwo+ICB9Owo+Cj4gK3N0YXRpYyBzdHJ1Y3QgYXN0X3ZiaW9z X2RjbGtfaW5mbyBkY2xrX3RhYmxlX2FzdDI1MDBbXSA9IHsKPiArICAgICAgIHsweDJDLCAweEU3 LCAweDAzfSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogMDA6IFZDTEsy NV8xNzUgICAgICAgKi8KPiArICAgICAgIHsweDk1LCAweDYyLCAweDAzfSwgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgLyogMDE6IFZDTEsyOF8zMjIgICAgICAgKi8KPiArICAg ICAgIHsweDY3LCAweDYzLCAweDAxfSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgLyogMDI6IFZDTEszMV81ICAgICAgICAgKi8KPiArICAgICAgIHsweDc2LCAweDYzLCAweDAx fSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogMDM6IFZDTEszNiAgICAg ICAgICAgKi8KPiArICAgICAgIHsweEVFLCAweDY3LCAweDAxfSwgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgLyogMDQ6IFZDTEs0MCAgICAgICAgICAgKi8KPiArICAgICAgIHsw eDgyLCAweDYyLCAweDAxfSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDA1OiBWQ0xL NDlfNSAgICAgICAgICovCj4gKyAgICAgICB7MHhDNiwgMHg2NCwgMHgwMX0sICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDA2OiBWQ0xLNTAgICAgICAgICAgICovCj4gKyAg ICAgICB7MHg5NCwgMHg2MiwgMHgwMX0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIC8qIDA3OiBWQ0xLNTZfMjUgICAgICAgICovCj4gKyAgICAgICB7MHg4MCwgMHg2NCwgMHgw MH0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDA4OiBWQ0xLNjUgICAg ICAgICAgICovCj4gKyAgICAgICB7MHg3QiwgMHg2MywgMHgwMH0sICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIC8qIDA5OiBWQ0xLNzUgICAgICAgICAgICovCj4gKyAgICAgICB7 MHg2NywgMHg2MiwgMHgwMH0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8q IDBBOiBWQ0xLNzhfNzUgICAgICAgICovCj4gKyAgICAgICB7MHg3QywgMHg2MiwgMHgwMH0sICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDBCOiBWQ0xLOTRfNSAgICAgICAg ICovCj4gKyAgICAgICB7MHg4RSwgMHg2MiwgMHgwMH0sICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIC8qIDBDOiBWQ0xLMTA4ICAgICAgICAgICovCj4gKyAgICAgICB7MHg4NSwg MHgyNCwgMHgwMH0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDBEOiBW Q0xLMTM1ICAgICAgICAgICovCj4gKyAgICAgICB7MHg2NywgMHgyMiwgMHgwMH0sICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDBFOiBWQ0xLMTU3XzUgICAgICAgICovCj4g KyAgICAgICB7MHg2QSwgMHgyMiwgMHgwMH0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIC8qIDBGOiBWQ0xLMTYyICAgICAgICAgICovCj4gKyAgICAgICB7MHg0ZCwgMHg0Yywg MHg4MH0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDEwOiBWQ0xLMTU0 ICAgICAgICAgICovCj4gKyAgICAgICB7MHhhNywgMHg3OCwgMHg4MH0sICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIC8qIDExOiBWQ0xLODMuNSAgICAgICAgICovCj4gKyAgICAg ICB7MHgyOCwgMHg0OSwgMHg4MH0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IC8qIDEyOiBWQ0xLMTA2LjUgICAgICAgICovCj4gKyAgICAgICB7MHgzNywgMHg0OSwgMHg4MH0s ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDEzOiBWQ0xLMTQ2LjI1ICAg ICAgICovCj4gKyAgICAgICB7MHgxZiwgMHg0NSwgMHg4MH0sICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIC8qIDE0OiBWQ0xLMTQ4LjUgICAgICAgICovCj4gKyAgICAgICB7MHg0 NywgMHg2YywgMHg4MH0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDE1 OiBWQ0xLNzEgICAgICAgKi8KPiArICAgICAgIHsweDI1LCAweDY1LCAweDgwfSwgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogMTY6IFZDTEs4OC43NSAgICAqLwo+ICsgICAg ICAgezB4NTgsIDB4MDEsIDB4NDJ9LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAvKiAxNzogVkNMSzExOSAgICAgICovCj4gKyAgICAgICB7MHgzMiwgMHg2NywgMHg4MH0sICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogMTg6IFZDTEs4NV81ICAgICAqLwo+ICsg ICAgICAgezB4NmEsIDB4NmQsIDB4ODB9LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAvKiAxOTogVkNMSzk3Xzc1ICAgICAgICAqLwo+ICsgICAgICAgezB4NDQsIDB4MjAsIDB4 NDN9LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAxQTogVkNMSzExOF8y NSAgICAgICAqLwo+ICt9Owo+ICsKPiAgc3RhdGljIHN0cnVjdCBhc3RfdmJpb3Nfc3RkdGFibGUg dmJpb3Nfc3RkdGFibGVbXSA9IHsKPiAgICAgICAgIC8qIE1EXzJfM180MDAgKi8KPiAgICAgICAg IHsKPiBAQCAtMjQ0LDMyICsyNzUsMzIgQEAKPiAgLyogMTY6OSAqLwo+ICBzdGF0aWMgc3RydWN0 IGFzdF92Ymlvc19lbmh0YWJsZSByZXNfMTM2MHg3NjhbXSA9IHsKPiAgICAgICAgIHsxNzkyLCAx MzYwLCA2NCwxMTIsIDc5NSwgIDc2OCwgMywgNiwgVkNMSzg1XzUsICAgICAgICAgIC8qIDYwSHog Ki8KPiAtICAgICAgICAoU3luY1BQIHwgQ2hhcng4RG90IHwgTGluZUNvbXBhcmVPZmYgfCBXaWRl U2NyZWVuTW9kZSB8IE5ld01vZGVJbmZvKSwgNjAsIDEsIDB4MzkgfSwKPiArICAgICAgICAoU3lu Y1BQIHwgQ2hhcng4RG90IHwgTGluZUNvbXBhcmVPZmYgfCBXaWRlU2NyZWVuTW9kZSB8IE5ld01v ZGVJbmZvIHwgQVNUMjUwMFByZUNhdGNoQ1JUKSwgNjAsIDEsIDB4MzkgfSwKPiAgICAgICAgIHsx NzkyLCAxMzYwLCA2NCwxMTIsIDc5NSwgIDc2OCwgMywgNiwgVkNMSzg1XzUsICAgICAgICAgIC8q IGVuZCAqLwo+ICAgICAgICAgIChTeW5jUFAgfCBDaGFyeDhEb3QgfCBMaW5lQ29tcGFyZU9mZiB8 IFdpZGVTY3JlZW5Nb2RlIHwgTmV3TW9kZUluZm8pLCAweEZGLCAxLCAweDM5IH0sCj4gIH07Cj4K PiAgc3RhdGljIHN0cnVjdCBhc3RfdmJpb3NfZW5odGFibGUgcmVzXzE2MDB4OTAwW10gPSB7Cj4g ICAgICAgICB7MTc2MCwgMTYwMCwgNDgsIDMyLCA5MjYsICA5MDAsIDMsIDUsIFZDTEs5N183NSwg ICAgICAgIC8qIDYwSHogQ1ZUIFJCICovCj4gLSAgICAgICAgKFN5bmNOUCB8IENoYXJ4OERvdCB8 IExpbmVDb21wYXJlT2ZmIHwgV2lkZVNjcmVlbk1vZGUgfCBOZXdNb2RlSW5mbyksIDYwLCAxLCAw eDNBIH0sCj4gLSAgICAgICB7MjExMiwgMTYwMCwgODgsMTY4LCA5MzQsICA5MDAsIDMsIDUsIFZD TEsxMThfMjUsICAgICAgIC8qIDYwSHogQ1ZUICovCj4gLSAgICAgICAgKFN5bmNQTiB8IENoYXJ4 OERvdCB8IExpbmVDb21wYXJlT2ZmIHwgV2lkZVNjcmVlbk1vZGUgfCBOZXdNb2RlSW5mbyksIDYw LCAyLCAweDNBIH0sCj4gLSAgICAgICB7MjExMiwgMTYwMCwgODgsMTY4LCA5MzQsICA5MDAsIDMs IDUsIFZDTEsxMThfMjUsICAgICAgIC8qIDYwSHogQ1ZUICovCj4gLSAgICAgICAgKFN5bmNQTiB8 IENoYXJ4OERvdCB8IExpbmVDb21wYXJlT2ZmIHwgV2lkZVNjcmVlbk1vZGUgfCBOZXdNb2RlSW5m byksIDB4RkYsIDIsIDB4M0EgfSwKPiArICAgICAgICAoU3luY05QIHwgQ2hhcng4RG90IHwgTGlu ZUNvbXBhcmVPZmYgfCBXaWRlU2NyZWVuTW9kZSB8IE5ld01vZGVJbmZvIHwgQVNUMjUwMFByZUNh dGNoQ1JUKSwgNjAsIDEsIDB4M0EgfSwKPiArICAgIHsyMTEyLCAxNjAwLCA4OCwxNjgsIDkzNCwg IDkwMCwgMywgNSwgVkNMSzExOF8yNSwgIC8qIDYwSHogQ1ZUICovCj4gKyAgICAgKFN5bmNQTiB8 IENoYXJ4OERvdCB8IExpbmVDb21wYXJlT2ZmIHwgV2lkZVNjcmVlbk1vZGUgfCBOZXdNb2RlSW5m byksIDYwLCAyLCAweDNBIH0sCj4gKyAgICB7MjExMiwgMTYwMCwgODgsMTY4LCA5MzQsICA5MDAs IDMsIDUsIFZDTEsxMThfMjUsICAvKiA2MEh6IENWVCAqLwo+ICsgICAgIChTeW5jUE4gfCBDaGFy eDhEb3QgfCBMaW5lQ29tcGFyZU9mZiB8IFdpZGVTY3JlZW5Nb2RlIHwgTmV3TW9kZUluZm8pLCAw eEZGLCAyLCAweDNBIH0sCj4gIH07Cj4KPiAgc3RhdGljIHN0cnVjdCBhc3RfdmJpb3NfZW5odGFi bGUgcmVzXzE5MjB4MTA4MFtdID0gewo+ICAgICAgICAgezIyMDAsIDE5MjAsIDg4LCA0NCwgMTEy NSwgMTA4MCwgNCwgNSwgVkNMSzE0OF81LCAgICAgICAvKiA2MEh6ICovCj4gLSAgICAgICAgKFN5 bmNOUCB8IENoYXJ4OERvdCB8IExpbmVDb21wYXJlT2ZmIHwgV2lkZVNjcmVlbk1vZGUgfCBOZXdN b2RlSW5mbyksIDYwLCAxLCAweDM4IH0sCj4gKyAgICAgICAgKFN5bmNOUCB8IENoYXJ4OERvdCB8 IExpbmVDb21wYXJlT2ZmIHwgV2lkZVNjcmVlbk1vZGUgfCBOZXdNb2RlSW5mbyB8IEFTVDI1MDBQ cmVDYXRjaENSVCksIDYwLCAxLCAweDM4IH0sCj4gICAgICAgICB7MjIwMCwgMTkyMCwgODgsIDQ0 LCAxMTI1LCAxMDgwLCA0LCA1LCBWQ0xLMTQ4XzUsICAgICAgIC8qIDYwSHogKi8KPiAtICAgICAg ICAoU3luY05QIHwgQ2hhcng4RG90IHwgTGluZUNvbXBhcmVPZmYgfCBXaWRlU2NyZWVuTW9kZSB8 IE5ld01vZGVJbmZvKSwgMHhGRiwgMSwgMHgzOCB9LAo+ICsgICAgICAgIChTeW5jTlAgfCBDaGFy eDhEb3QgfCBMaW5lQ29tcGFyZU9mZiB8IFdpZGVTY3JlZW5Nb2RlIHwgTmV3TW9kZUluZm8gfCBB U1QyNTAwUHJlQ2F0Y2hDUlQpLCAweEZGLCAxLCAweDM4IH0sCj4gIH07Cj4KPgo+ICAvKiAxNjox MCAqLwo+ICBzdGF0aWMgc3RydWN0IGFzdF92Ymlvc19lbmh0YWJsZSByZXNfMTI4MHg4MDBbXSA9 IHsKPiAgICAgICAgIHsxNDQwLCAxMjgwLCA0OCwgMzIsICA4MjMsICA4MDAsIDMsIDYsIFZDTEs3 MSwgIC8qIDYwSHogUkIgKi8KPiAtICAgICAgICAoU3luY05QIHwgQ2hhcng4RG90IHwgTGluZUNv bXBhcmVPZmYgfCBXaWRlU2NyZWVuTW9kZSB8IE5ld01vZGVJbmZvKSwgNjAsIDEsIDB4MzUgfSwK PiArICAgICAgICAoU3luY05QIHwgQ2hhcng4RG90IHwgTGluZUNvbXBhcmVPZmYgfCBXaWRlU2Ny ZWVuTW9kZSB8IE5ld01vZGVJbmZvIHwgQVNUMjUwMFByZUNhdGNoQ1JUKSwgNjAsIDEsIDB4MzUg fSwKPiAgICAgICAgIHsxNjgwLCAxMjgwLCA3MiwxMjgsICA4MzEsICA4MDAsIDMsIDYsIFZDTEs4 M181LCAgICAgICAgLyogNjBIeiAqLwo+ICAgICAgICAgIChTeW5jUE4gfCBDaGFyeDhEb3QgfCBM aW5lQ29tcGFyZU9mZiB8IFdpZGVTY3JlZW5Nb2RlIHwgTmV3TW9kZUluZm8pLCA2MCwgMiwgMHgz NSB9LAo+ICAgICAgICAgezE2ODAsIDEyODAsIDcyLDEyOCwgIDgzMSwgIDgwMCwgMywgNiwgVkNM SzgzXzUsICAgICAgICAvKiA2MEh6ICovCj4gQEAgLTI3OSw3ICszMTAsNyBAQAo+Cj4gIHN0YXRp YyBzdHJ1Y3QgYXN0X3ZiaW9zX2VuaHRhYmxlIHJlc18xNDQweDkwMFtdID0gewo+ICAgICAgICAg ezE2MDAsIDE0NDAsIDQ4LCAzMiwgIDkyNiwgIDkwMCwgMywgNiwgVkNMSzg4Xzc1LCAgICAgICAv KiA2MEh6IFJCICovCj4gLSAgICAgICAgKFN5bmNOUCB8IENoYXJ4OERvdCB8IExpbmVDb21wYXJl T2ZmIHwgV2lkZVNjcmVlbk1vZGUgfCBOZXdNb2RlSW5mbyksIDYwLCAxLCAweDM2IH0sCj4gKyAg ICAgICAgKFN5bmNOUCB8IENoYXJ4OERvdCB8IExpbmVDb21wYXJlT2ZmIHwgV2lkZVNjcmVlbk1v ZGUgfCBOZXdNb2RlSW5mbyB8IEFTVDI1MDBQcmVDYXRjaENSVCksIDYwLCAxLCAweDM2IH0sCj4g ICAgICAgICB7MTkwNCwgMTQ0MCwgODAsMTUyLCAgOTM0LCAgOTAwLCAzLCA2LCBWQ0xLMTA2XzUs ICAgICAgIC8qIDYwSHogKi8KPiAgICAgICAgICAoU3luY1BOIHwgQ2hhcng4RG90IHwgTGluZUNv bXBhcmVPZmYgfCBXaWRlU2NyZWVuTW9kZSB8IE5ld01vZGVJbmZvKSwgNjAsIDIsIDB4MzYgfSwK PiAgICAgICAgIHsxOTA0LCAxNDQwLCA4MCwxNTIsICA5MzQsICA5MDAsIDMsIDYsIFZDTEsxMDZf NSwgICAgICAgLyogNjBIeiAqLwo+IEBAIC0yODgsNyArMzE5LDcgQEAKPgo+ICBzdGF0aWMgc3Ry dWN0IGFzdF92Ymlvc19lbmh0YWJsZSByZXNfMTY4MHgxMDUwW10gPSB7Cj4gICAgICAgICB7MTg0 MCwgMTY4MCwgNDgsIDMyLCAxMDgwLCAxMDUwLCAzLCA2LCBWQ0xLMTE5LCAvKiA2MEh6IFJCICov Cj4gLSAgICAgICAgKFN5bmNOUCB8IENoYXJ4OERvdCB8IExpbmVDb21wYXJlT2ZmIHwgV2lkZVNj cmVlbk1vZGUgfCBOZXdNb2RlSW5mbyksIDYwLCAxLCAweDM3IH0sCj4gKyAgICAgICAgKFN5bmNO UCB8IENoYXJ4OERvdCB8IExpbmVDb21wYXJlT2ZmIHwgV2lkZVNjcmVlbk1vZGUgfCBOZXdNb2Rl SW5mbyB8IEFTVDI1MDBQcmVDYXRjaENSVCksIDYwLCAxLCAweDM3IH0sCj4gICAgICAgICB7MjI0 MCwgMTY4MCwxMDQsMTc2LCAxMDg5LCAxMDUwLCAzLCA2LCBWQ0xLMTQ2XzI1LCAgICAgIC8qIDYw SHogKi8KPiAgICAgICAgICAoU3luY1BOIHwgQ2hhcng4RG90IHwgTGluZUNvbXBhcmVPZmYgfCBX aWRlU2NyZWVuTW9kZSB8IE5ld01vZGVJbmZvKSwgNjAsIDIsIDB4MzcgfSwKPiAgICAgICAgIHsy MjQwLCAxNjgwLDEwNCwxNzYsIDEwODksIDEwNTAsIDMsIDYsIFZDTEsxNDZfMjUsICAgICAgLyog NjBIeiAqLwo+IEBAIC0yOTcsOSArMzI4LDkgQEAKPgo+ICBzdGF0aWMgc3RydWN0IGFzdF92Ymlv c19lbmh0YWJsZSByZXNfMTkyMHgxMjAwW10gPSB7Cj4gICAgICAgICB7MjA4MCwgMTkyMCwgNDgs IDMyLCAxMjM1LCAxMjAwLCAzLCA2LCBWQ0xLMTU0LCAvKiA2MEh6IFJCKi8KPiAtICAgICAgICAo U3luY05QIHwgQ2hhcng4RG90IHwgTGluZUNvbXBhcmVPZmYgfCBXaWRlU2NyZWVuTW9kZSB8IE5l d01vZGVJbmZvKSwgNjAsIDEsIDB4MzQgfSwKPiArICAgICAgICAoU3luY05QIHwgQ2hhcng4RG90 IHwgTGluZUNvbXBhcmVPZmYgfCBXaWRlU2NyZWVuTW9kZSB8IE5ld01vZGVJbmZvIHwgQVNUMjUw MFByZUNhdGNoQ1JUKSwgNjAsIDEsIDB4MzQgfSwKPiAgICAgICAgIHsyMDgwLCAxOTIwLCA0OCwg MzIsIDEyMzUsIDEyMDAsIDMsIDYsIFZDTEsxNTQsIC8qIDYwSHogUkIgKi8KPiAtICAgICAgICAo U3luY05QIHwgQ2hhcng4RG90IHwgTGluZUNvbXBhcmVPZmYgfCBXaWRlU2NyZWVuTW9kZSB8IE5l d01vZGVJbmZvKSwgMHhGRiwgMSwgMHgzNCB9LAo+ICsgICAgICAgIChTeW5jTlAgfCBDaGFyeDhE b3QgfCBMaW5lQ29tcGFyZU9mZiB8IFdpZGVTY3JlZW5Nb2RlIHwgTmV3TW9kZUluZm8gfCBBU1Qy NTAwUHJlQ2F0Y2hDUlQpLCAweEZGLCAxLCAweDM0IH0sCj4gIH07Cj4KPiAgI2VuZGlmCj4gLS0K PiAxLjguMy4xCj4KPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwo+IGRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKPiBkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9k cmktZGV2ZWwKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K ZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0 dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==