Thread (20 messages) 20 messages, 4 authors, 2015-01-21

RE: [PATCH v5 5/7] power: Add support for DA9150 Charger

From: Opensource [Adam Thomson] <hidden>
Date: 2015-01-07 16:04:51
Also in: linux-devicetree, linux-pm, lkml

T24gSmFudWFyeSA0LCAyMDE1IDE3OjI2LCBKb25hdGhhbiBDYW1lcm9uIHdyb3RlOg0KDQo+IE9u
IDIyLzEyLzE0IDE2OjUxLCBBZGFtIFRob21zb24gd3JvdGU6DQo+ID4gVGhpcyBwYXRjaCBhZGRz
IHN1cHBvcnQgZm9yIERBOTE1MCBDaGFyZ2VyICYgRnVlbC1HYXVnZSBJQyBDaGFyZ2VyLg0KPiA+
DQo+ID4gU2lnbmVkLW9mZi1ieTogQWRhbSBUaG9tc29uIDxBZGFtLlRob21zb24uT3BlbnNvdXJj
ZUBkaWFzZW1pLmNvbT4NCj4gVGhlIElJTyBiaXRzIGxvb2sgZmluZSwgYnV0IHlvdXIgdXNlIG9m
IGRldm1fZnJlZSAqIGRvZXNuJ3QuLi4NCj4NCj4gQXMgYSBzaWRlIG5vdGUsIGxvb2tzIGxpa2Ug
d2UgY291bGQgYmVuZWZpdCBmcm9tIHNvbWUgYXJyYXkgdmVyc2lvbnMNCj4gb2YgdGhlIElJTyBj
aGFubmVsIGdldHRpbmcgYW5kIHJlbGVhc2UgZnVuY3Rpb25zLiAgV291bGQgc2F2ZSBhIGZhaXIg
Yml0DQo+IG9mIGJvaWxlciBwbGF0ZS4NCg0KWWVzLCBJIGd1ZXNzIHdoZW4gbW9yZSBkcml2ZXJz
IGNvbWUgYWxvbmcgd2hpY2ggbmVlZCBtdWx0aXBsZSBjaGFubmVscyB0aGVuDQpzb21ldGhpbmcg
bGlrZSB5b3Ugc3VnZ2VzdCB3b3VsZCBtYWtlIHNlbnNlIHRvIGhlbHAgcmVkdWNlIGNvZGUgZHVw
bGljYXRpb24uDQpBbHNvIGRldm1fKiBmdW5jdGlvbnMgY291bGQgYmUgZ29vZCB0b28uDQoNCj4g
DQo+IEpvbmF0aGFuDQo+ID4gLS0tDQo+ID4gIGRyaXZlcnMvcG93ZXIvS2NvbmZpZyAgICAgICAg
ICB8ICAxMiArDQo+ID4gIGRyaXZlcnMvcG93ZXIvTWFrZWZpbGUgICAgICAgICB8ICAgMSArDQo+
ID4gIGRyaXZlcnMvcG93ZXIvZGE5MTUwLWNoYXJnZXIuYyB8IDY2Ng0KPiArKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KPiA+ICAzIGZpbGVzIGNoYW5nZWQsIDY3OSBp
bnNlcnRpb25zKCspDQo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL3Bvd2VyL2RhOTE1
MC1jaGFyZ2VyLmMNCj4gPg0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3Bvd2VyL0tjb25maWcg
Yi9kcml2ZXJzL3Bvd2VyL0tjb25maWcNCj4gPiBpbmRleCAwMTA4YzJhLi5lYjc5YTdhIDEwMDY0
NA0KPiA+IC0tLSBhL2RyaXZlcnMvcG93ZXIvS2NvbmZpZw0KPiA+ICsrKyBiL2RyaXZlcnMvcG93
ZXIvS2NvbmZpZw0KPiA+IEBAIC0xOTIsNiArMTkyLDE4IEBAIGNvbmZpZyBCQVRURVJZX0RBOTA1
Mg0KPiA+ICAJICBTYXkgWSBoZXJlIHRvIGVuYWJsZSBzdXBwb3J0IGZvciBiYXR0ZXJpZXMgY2hh
cmdlciBpbnRlZ3JhdGVkIGludG8NCj4gPiAgCSAgREE5MDUyIFBNSUMuDQo+ID4NCj4gPiArY29u
ZmlnIENIQVJHRVJfREE5MTUwDQo+ID4gKwl0cmlzdGF0ZSAiRGlhbG9nIFNlbWljb25kdWN0b3Ig
REE5MTUwIENoYXJnZXIgc3VwcG9ydCINCj4gPiArCWRlcGVuZHMgb24gTUZEX0RBOTE1MA0KPiA+
ICsJZGVwZW5kcyBvbiBEQTkxNTBfR1BBREMNCj4gPiArCWRlcGVuZHMgb24gSUlPDQo+ID4gKwlo
ZWxwDQo+ID4gKwkgIFNheSBZIGhlcmUgdG8gZW5hYmxlIHN1cHBvcnQgZm9yIGNoYXJnZXIgdW5p
dCBvZiB0aGUgREE5MTUwDQo+ID4gKwkgIEludGVncmF0ZWQgQ2hhcmdlciAmIEZ1ZWwtR2F1Z2Ug
SUMuDQo+ID4gKw0KPiA+ICsJICBUaGlzIGRyaXZlciBjYW4gYWxzbyBiZSBidWlsdCBhcyBhIG1v
ZHVsZS4gSWYgc28sIHRoZSBtb2R1bGUgd2lsbCBiZQ0KPiA+ICsJICBjYWxsZWQgZGE5MTUwLWNo
YXJnZXIuDQo+ID4gKw0KPiA+ICBjb25maWcgQkFUVEVSWV9NQVgxNzA0MA0KPiA+ICAJdHJpc3Rh
dGUgIk1heGltIE1BWDE3MDQwIEZ1ZWwgR2F1Z2UiDQo+ID4gIAlkZXBlbmRzIG9uIEkyQw0KPiA+
IGRpZmYgLS1naXQgYS9kcml2ZXJzL3Bvd2VyL01ha2VmaWxlIGIvZHJpdmVycy9wb3dlci9NYWtl
ZmlsZQ0KPiA+IGluZGV4IGRmYTg5NDIuLjBjMTg5NmQgMTAwNjQ0DQo+ID4gLS0tIGEvZHJpdmVy
cy9wb3dlci9NYWtlZmlsZQ0KPiA+ICsrKyBiL2RyaXZlcnMvcG93ZXIvTWFrZWZpbGUNCj4gPiBA
QCAtMzEsNiArMzEsNyBAQCBvYmotJChDT05GSUdfQkFUVEVSWV9TQlMpCSs9IHNicy1iYXR0ZXJ5
Lm8NCj4gPiAgb2JqLSQoQ09ORklHX0JBVFRFUllfQlEyN3gwMCkJKz0gYnEyN3gwMF9iYXR0ZXJ5
Lm8NCj4gPiAgb2JqLSQoQ09ORklHX0JBVFRFUllfREE5MDMwKQkrPSBkYTkwMzBfYmF0dGVyeS5v
DQo+ID4gIG9iai0kKENPTkZJR19CQVRURVJZX0RBOTA1MikJKz0gZGE5MDUyLWJhdHRlcnkubw0K
PiA+ICtvYmotJChDT05GSUdfQ0hBUkdFUl9EQTkxNTApCSs9IGRhOTE1MC1jaGFyZ2VyLm8NCj4g
PiAgb2JqLSQoQ09ORklHX0JBVFRFUllfTUFYMTcwNDApCSs9IG1heDE3MDQwX2JhdHRlcnkubw0K
PiA+ICBvYmotJChDT05GSUdfQkFUVEVSWV9NQVgxNzA0MikJKz0gbWF4MTcwNDJfYmF0dGVyeS5v
DQo+ID4gIG9iai0kKENPTkZJR19CQVRURVJZX1oyKQkrPSB6Ml9iYXR0ZXJ5Lm8NCj4gPiBkaWZm
IC0tZ2l0IGEvZHJpdmVycy9wb3dlci9kYTkxNTAtY2hhcmdlci5jIGIvZHJpdmVycy9wb3dlci9k
YTkxNTAtY2hhcmdlci5jDQo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiBpbmRleCAwMDAw
MDAwLi45YjE4MjZkDQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsrKyBiL2RyaXZlcnMvcG93ZXIv
ZGE5MTUwLWNoYXJnZXIuYw0KPiA+IEBAIC0wLDAgKzEsNjY2IEBADQo+ID4gKy8qDQo+ID4gKyAq
IERBOTE1MCBDaGFyZ2VyIERyaXZlcg0KPiA+ICsgKg0KPiA+ICsgKiBDb3B5cmlnaHQgKGMpIDIw
MTQgRGlhbG9nIFNlbWljb25kdWN0b3INCj4gPiArICoNCj4gPiArICogQXV0aG9yOiBBZGFtIFRo
b21zb24gPEFkYW0uVGhvbXNvbi5PcGVuc291cmNlQGRpYXNlbWkuY29tPg0KPiA+ICsgKg0KPiA+
ICsgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
IGl0IGFuZC9vciBtb2RpZnkgaXQNCj4gPiArICogdW5kZXIgIHRoZSB0ZXJtcyBvZiAgdGhlIEdO
VSBHZW5lcmFsICBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlDQo+ID4gKyAqIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgIGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlICBMaWNlbnNl
LCBvciAoYXQgeW91cg0KPiA+ICsgKiBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLg0KPiA+ICsg
Ki8NCj4gPiArDQo+ID4gKyNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4NCj4gPiArI2luY2x1ZGUg
PGxpbnV4L3NsYWIuaD4NCj4gPiArI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPg0KPiA+ICsjaW5j
bHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+DQo+ID4gKyNpbmNsdWRlIDxsaW51eC9vZi5o
Pg0KPiA+ICsjaW5jbHVkZSA8bGludXgvb2ZfcGxhdGZvcm0uaD4NCj4gPiArI2luY2x1ZGUgPGxp
bnV4L2ludGVycnVwdC5oPg0KPiA+ICsjaW5jbHVkZSA8bGludXgvcG93ZXJfc3VwcGx5Lmg+DQo+
ID4gKyNpbmNsdWRlIDxsaW51eC9ub3RpZmllci5oPg0KPiA+ICsjaW5jbHVkZSA8bGludXgvdXNi
L3BoeS5oPg0KPiA+ICsjaW5jbHVkZSA8bGludXgvaWlvL2NvbnN1bWVyLmg+DQo+ID4gKyNpbmNs
dWRlIDxsaW51eC9tZmQvZGE5MTUwL2NvcmUuaD4NCj4gPiArI2luY2x1ZGUgPGxpbnV4L21mZC9k
YTkxNTAvcmVnaXN0ZXJzLmg+DQo+ID4gKw0KPiA+ICsvKiBQcml2YXRlIGRhdGEgKi8NCj4gPiAr
c3RydWN0IGRhOTE1MF9jaGFyZ2VyIHsNCj4gPiArCXN0cnVjdCBkYTkxNTAgKmRhOTE1MDsNCj4g
PiArCXN0cnVjdCBkZXZpY2UgKmRldjsNCj4gPiArDQo+ID4gKwlzdHJ1Y3QgcG93ZXJfc3VwcGx5
IHVzYjsNCj4gPiArCXN0cnVjdCBwb3dlcl9zdXBwbHkgYmF0dGVyeTsNCj4gPiArCXN0cnVjdCBw
b3dlcl9zdXBwbHkgKnN1cHBseV9vbmxpbmU7DQo+ID4gKw0KPiA+ICsJc3RydWN0IHVzYl9waHkg
KnVzYl9waHk7DQo+ID4gKwlzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgb3RnX25iOw0KPiA+ICsJc3Ry
dWN0IHdvcmtfc3RydWN0IG90Z193b3JrOw0KPiA+ICsJdW5zaWduZWQgbG9uZyB1c2JfZXZlbnQ7
DQo+ID4gKw0KPiA+ICsJc3RydWN0IGlpb19jaGFubmVsICppYnVzX2NoYW47DQo+ID4gKwlzdHJ1
Y3QgaWlvX2NoYW5uZWwgKnZidXNfY2hhbjsNCj4gPiArCXN0cnVjdCBpaW9fY2hhbm5lbCAqdGp1
bmNfY2hhbjsNCj4gPiArCXN0cnVjdCBpaW9fY2hhbm5lbCAqdmJhdF9jaGFuOw0KPiA+ICt9Ow0K
PiA+ICsNCj4gPiArc3RhdGljIGlubGluZSBpbnQgZGE5MTUwX2NoYXJnZXJfc3VwcGx5X29ubGlu
ZShzdHJ1Y3QgZGE5MTUwX2NoYXJnZXIgKmNoYXJnZXIsDQo+ID4gKwkJCQkJICAgICAgIHN0cnVj
dCBwb3dlcl9zdXBwbHkgKnBzeSwNCj4gPiArCQkJCQkgICAgICAgdW5pb24gcG93ZXJfc3VwcGx5
X3Byb3B2YWwgKnZhbCkNCj4gPiArew0KPiA+ICsJdmFsLT5pbnR2YWwgPSAocHN5ID09IGNoYXJn
ZXItPnN1cHBseV9vbmxpbmUpID8gMSA6IDA7DQo+ID4gKw0KPiA+ICsJcmV0dXJuIDA7DQo+ID4g
K30NCj4gPiArDQo+ID4gKy8qIENoYXJnZXIgUHJvcGVydGllcyAqLw0KPiA+ICtzdGF0aWMgaW50
IGRhOTE1MF9jaGFyZ2VyX3ZidXNfdm9sdGFnZV9ub3coc3RydWN0IGRhOTE1MF9jaGFyZ2VyICpj
aGFyZ2VyLA0KPiA+ICsJCQkJCSAgIHVuaW9uIHBvd2VyX3N1cHBseV9wcm9wdmFsICp2YWwpDQo+
ID4gK3sNCj4gPiArCWludCB2X3ZhbCwgcmV0Ow0KPiA+ICsNCj4gPiArCS8qIFJlYWQgcHJvY2Vz
c2VkIHZhbHVlIC0gbVYgdW5pdHMgKi8NCj4gPiArCXJldCA9IGlpb19yZWFkX2NoYW5uZWxfcHJv
Y2Vzc2VkKGNoYXJnZXItPnZidXNfY2hhbiwgJnZfdmFsKTsNCj4gPiArCWlmIChyZXQgPCAwKQ0K
PiA+ICsJCXJldHVybiByZXQ7DQo+ID4gKw0KPiA+ICsJLyogQ29udmVydCB2b2x0YWdlIHRvIGV4
cGVjdGVkIHVWIHVuaXRzICovDQo+ID4gKwl2YWwtPmludHZhbCA9IHZfdmFsICogMTAwMDsNCj4g
PiArDQo+ID4gKwlyZXR1cm4gMDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIGludCBkYTkx
NTBfY2hhcmdlcl9pYnVzX2N1cnJlbnRfYXZnKHN0cnVjdCBkYTkxNTBfY2hhcmdlciAqY2hhcmdl
ciwNCj4gPiArCQkJCQkgICB1bmlvbiBwb3dlcl9zdXBwbHlfcHJvcHZhbCAqdmFsKQ0KPiA+ICt7
DQo+ID4gKwlpbnQgaV92YWwsIHJldDsNCj4gPiArDQo+ID4gKwkvKiBSZWFkIHByb2Nlc3NlZCB2
YWx1ZSAtIG1BIHVuaXRzICovDQo+ID4gKwlyZXQgPSBpaW9fcmVhZF9jaGFubmVsX3Byb2Nlc3Nl
ZChjaGFyZ2VyLT5pYnVzX2NoYW4sICZpX3ZhbCk7DQo+ID4gKwlpZiAocmV0IDwgMCkNCj4gPiAr
CQlyZXR1cm4gcmV0Ow0KPiA+ICsNCj4gPiArCS8qIENvbnZlcnQgY3VycmVudCB0byBleHBlY3Rl
ZCB1QSB1bml0cyAqLw0KPiA+ICsJdmFsLT5pbnR2YWwgPSBpX3ZhbCAqIDEwMDA7DQo+ID4gKw0K
PiA+ICsJcmV0dXJuIDA7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBpbnQgZGE5MTUwX2No
YXJnZXJfdGp1bmNfdGVtcChzdHJ1Y3QgZGE5MTUwX2NoYXJnZXIgKmNoYXJnZXIsDQo+ID4gKwkJ
CQkgICAgIHVuaW9uIHBvd2VyX3N1cHBseV9wcm9wdmFsICp2YWwpDQo+ID4gK3sNCj4gPiArCWlu
dCB0X3ZhbCwgcmV0Ow0KPiA+ICsNCj4gPiArCS8qIFJlYWQgcHJvY2Vzc2VkIHZhbHVlIC0gMC4w
MDEgZGVncmVlcyBDIHVuaXRzICovDQo+ID4gKwlyZXQgPSBpaW9fcmVhZF9jaGFubmVsX3Byb2Nl
c3NlZChjaGFyZ2VyLT50anVuY19jaGFuLCAmdF92YWwpOw0KPiA+ICsJaWYgKHJldCA8IDApDQo+
ID4gKwkJcmV0dXJuIHJldDsNCj4gPiArDQo+ID4gKwkvKiBDb252ZXJ0IHRlbXAgdG8gZXhwZWN0
IDAuMSBkZWdyZWVzIEMgdW5pdHMgKi8NCj4gPiArCXZhbC0+aW50dmFsID0gdF92YWwgLyAxMDA7
DQo+ID4gKw0KPiA+ICsJcmV0dXJuIDA7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBlbnVt
IHBvd2VyX3N1cHBseV9wcm9wZXJ0eSBkYTkxNTBfY2hhcmdlcl9wcm9wc1tdID0gew0KPiA+ICsJ
UE9XRVJfU1VQUExZX1BST1BfT05MSU5FLA0KPiA+ICsJUE9XRVJfU1VQUExZX1BST1BfVk9MVEFH
RV9OT1csDQo+ID4gKwlQT1dFUl9TVVBQTFlfUFJPUF9DVVJSRU5UX0FWRywNCj4gPiArCVBPV0VS
X1NVUFBMWV9QUk9QX1RFTVAsDQo+ID4gK307DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50IGRhOTE1
MF9jaGFyZ2VyX2dldF9wcm9wKHN0cnVjdCBwb3dlcl9zdXBwbHkgKnBzeSwNCj4gPiArCQkJCSAg
IGVudW0gcG93ZXJfc3VwcGx5X3Byb3BlcnR5IHBzcCwNCj4gPiArCQkJCSAgIHVuaW9uIHBvd2Vy
X3N1cHBseV9wcm9wdmFsICp2YWwpDQo+ID4gK3sNCj4gPiArCXN0cnVjdCBkYTkxNTBfY2hhcmdl
ciAqY2hhcmdlciA9IGRldl9nZXRfZHJ2ZGF0YShwc3ktPmRldi0+cGFyZW50KTsNCj4gPiArCWlu
dCByZXQ7DQo+ID4gKw0KPiA+ICsJc3dpdGNoIChwc3ApIHsNCj4gPiArCWNhc2UgUE9XRVJfU1VQ
UExZX1BST1BfT05MSU5FOg0KPiA+ICsJCXJldCA9IGRhOTE1MF9jaGFyZ2VyX3N1cHBseV9vbmxp
bmUoY2hhcmdlciwgcHN5LCB2YWwpOw0KPiA+ICsJCWJyZWFrOw0KPiA+ICsJY2FzZSBQT1dFUl9T
VVBQTFlfUFJPUF9WT0xUQUdFX05PVzoNCj4gPiArCQlyZXQgPSBkYTkxNTBfY2hhcmdlcl92YnVz
X3ZvbHRhZ2Vfbm93KGNoYXJnZXIsIHZhbCk7DQo+ID4gKwkJYnJlYWs7DQo+ID4gKwljYXNlIFBP
V0VSX1NVUFBMWV9QUk9QX0NVUlJFTlRfQVZHOg0KPiA+ICsJCXJldCA9IGRhOTE1MF9jaGFyZ2Vy
X2lidXNfY3VycmVudF9hdmcoY2hhcmdlciwgdmFsKTsNCj4gPiArCQlicmVhazsNCj4gPiArCWNh
c2UgUE9XRVJfU1VQUExZX1BST1BfVEVNUDoNCj4gPiArCQlyZXQgPSBkYTkxNTBfY2hhcmdlcl90
anVuY190ZW1wKGNoYXJnZXIsIHZhbCk7DQo+ID4gKwkJYnJlYWs7DQo+ID4gKwlkZWZhdWx0Og0K
PiA+ICsJCXJldCA9IC1FSU5WQUw7DQo+ID4gKwkJYnJlYWs7DQo+ID4gKwl9DQo+ID4gKw0KPiA+
ICsJcmV0dXJuIHJldDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyogQmF0dGVyeSBQcm9wZXJ0aWVz
ICovDQo+ID4gK3N0YXRpYyBpbnQgZGE5MTUwX2NoYXJnZXJfYmF0dGVyeV9zdGF0dXMoc3RydWN0
IGRhOTE1MF9jaGFyZ2VyICpjaGFyZ2VyLA0KPiA+ICsJCQkJCSB1bmlvbiBwb3dlcl9zdXBwbHlf
cHJvcHZhbCAqdmFsKQ0KPiA+ICt7DQo+ID4gKwl1OCByZWc7DQo+ID4gKw0KPiA+ICsJLyogQ2hl
Y2sgdG8gc2VlIGlmIGJhdHRlcnkgaXMgZGlzY2hhcmdpbmcgKi8NCj4gPiArCXJlZyA9IGRhOTE1
MF9yZWdfcmVhZChjaGFyZ2VyLT5kYTkxNTAsIERBOTE1MF9TVEFUVVNfSCk7DQo+ID4gKw0KPiA+
ICsJaWYgKCgocmVnICYgREE5MTUwX1ZCVVNfU1RBVF9NQVNLKSA9PSBEQTkxNTBfVkJVU19TVEFU
X09GRikgfHwNCj4gPiArCSAgICAoKHJlZyAmIERBOTE1MF9WQlVTX1NUQVRfTUFTSykgPT0gREE5
MTUwX1ZCVVNfU1RBVF9XQUlUKSkgew0KPiA+ICsJCXZhbC0+aW50dmFsID0gUE9XRVJfU1VQUExZ
X1NUQVRVU19ESVNDSEFSR0lORzsNCj4gPiArDQo+ID4gKwkJcmV0dXJuIDA7DQo+ID4gKwl9DQo+
ID4gKw0KPiA+ICsJcmVnID0gZGE5MTUwX3JlZ19yZWFkKGNoYXJnZXItPmRhOTE1MCwgREE5MTUw
X1NUQVRVU19KKTsNCj4gPiArDQo+ID4gKwkvKiBOb3cgY2hlY2sgZm9yIG90aGVyIHN0YXRlcyAq
Lw0KPiA+ICsJc3dpdGNoIChyZWcgJiBEQTkxNTBfQ0hHX1NUQVRfTUFTSykgew0KPiA+ICsJY2Fz
ZSBEQTkxNTBfQ0hHX1NUQVRfQUNUOg0KPiA+ICsJY2FzZSBEQTkxNTBfQ0hHX1NUQVRfUFJFOg0K
PiA+ICsJY2FzZSBEQTkxNTBfQ0hHX1NUQVRfQ0M6DQo+ID4gKwljYXNlIERBOTE1MF9DSEdfU1RB
VF9DVjoNCj4gPiArCQl2YWwtPmludHZhbCA9IFBPV0VSX1NVUFBMWV9TVEFUVVNfQ0hBUkdJTkc7
DQo+ID4gKwkJYnJlYWs7DQo+ID4gKwljYXNlIERBOTE1MF9DSEdfU1RBVF9PRkY6DQo+ID4gKwlj
YXNlIERBOTE1MF9DSEdfU1RBVF9TVVNQOg0KPiA+ICsJY2FzZSBEQTkxNTBfQ0hHX1NUQVRfVEVN
UDoNCj4gPiArCWNhc2UgREE5MTUwX0NIR19TVEFUX1RJTUU6DQo+ID4gKwljYXNlIERBOTE1MF9D
SEdfU1RBVF9CQVQ6DQo+ID4gKwkJdmFsLT5pbnR2YWwgPSBQT1dFUl9TVVBQTFlfU1RBVFVTX05P
VF9DSEFSR0lORzsNCj4gPiArCQlicmVhazsNCj4gPiArCWNhc2UgREE5MTUwX0NIR19TVEFUX0ZV
TEw6DQo+ID4gKwkJdmFsLT5pbnR2YWwgPSBQT1dFUl9TVVBQTFlfU1RBVFVTX0ZVTEw7DQo+ID4g
KwkJYnJlYWs7DQo+ID4gKwlkZWZhdWx0Og0KPiA+ICsJCXZhbC0+aW50dmFsID0gUE9XRVJfU1VQ
UExZX1NUQVRVU19VTktOT1dOOw0KPiA+ICsJCWJyZWFrOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiAr
CXJldHVybiAwOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50IGRhOTE1MF9jaGFyZ2Vy
X2JhdHRlcnlfaGVhbHRoKHN0cnVjdCBkYTkxNTBfY2hhcmdlciAqY2hhcmdlciwNCj4gPiArCQkJ
CQkgdW5pb24gcG93ZXJfc3VwcGx5X3Byb3B2YWwgKnZhbCkNCj4gPiArew0KPiA+ICsJdTggcmVn
Ow0KPiA+ICsNCj4gPiArCXJlZyA9IGRhOTE1MF9yZWdfcmVhZChjaGFyZ2VyLT5kYTkxNTAsIERB
OTE1MF9TVEFUVVNfSik7DQo+ID4gKw0KPiA+ICsJLyogQ2hlY2sgaWYgdGVtcGVyYXR1cmUgbGlt
aXQgcmVhY2hlZCAqLw0KPiA+ICsJc3dpdGNoIChyZWcgJiBEQTkxNTBfQ0hHX1RFTVBfTUFTSykg
ew0KPiA+ICsJY2FzZSBEQTkxNTBfQ0hHX1RFTVBfVU5ERVI6DQo+ID4gKwkJdmFsLT5pbnR2YWwg
PSBQT1dFUl9TVVBQTFlfSEVBTFRIX0NPTEQ7DQo+ID4gKwkJcmV0dXJuIDA7DQo+ID4gKwljYXNl
IERBOTE1MF9DSEdfVEVNUF9PVkVSOg0KPiA+ICsJCXZhbC0+aW50dmFsID0gUE9XRVJfU1VQUExZ
X0hFQUxUSF9PVkVSSEVBVDsNCj4gPiArCQlyZXR1cm4gMDsNCj4gPiArCWRlZmF1bHQ6DQo+ID4g
KwkJYnJlYWs7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJLyogQ2hlY2sgZm9yIG90aGVyIGhlYWx0
aCBzdGF0ZXMgKi8NCj4gPiArCXN3aXRjaCAocmVnICYgREE5MTUwX0NIR19TVEFUX01BU0spIHsN
Cj4gPiArCWNhc2UgREE5MTUwX0NIR19TVEFUX0FDVDoNCj4gPiArCWNhc2UgREE5MTUwX0NIR19T
VEFUX1BSRToNCj4gPiArCQl2YWwtPmludHZhbCA9IFBPV0VSX1NVUFBMWV9IRUFMVEhfREVBRDsN
Cj4gPiArCQlicmVhazsNCj4gPiArCWNhc2UgREE5MTUwX0NIR19TVEFUX1RJTUU6DQo+ID4gKwkJ
dmFsLT5pbnR2YWwgPSBQT1dFUl9TVVBQTFlfSEVBTFRIX1VOU1BFQ19GQUlMVVJFOw0KPiA+ICsJ
CWJyZWFrOw0KPiA+ICsJZGVmYXVsdDoNCj4gPiArCQl2YWwtPmludHZhbCA9IFBPV0VSX1NVUFBM
WV9IRUFMVEhfR09PRDsNCj4gPiArCQlicmVhazsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwlyZXR1
cm4gMDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIGludCBkYTkxNTBfY2hhcmdlcl9iYXR0
ZXJ5X3ByZXNlbnQoc3RydWN0IGRhOTE1MF9jaGFyZ2VyICpjaGFyZ2VyLA0KPiA+ICsJCQkJCSAg
dW5pb24gcG93ZXJfc3VwcGx5X3Byb3B2YWwgKnZhbCkNCj4gPiArew0KPiA+ICsJdTggcmVnOw0K
PiA+ICsNCj4gPiArCS8qIENoZWNrIGlmIGJhdHRlcnkgcHJlc2VudCBvciByZW1vdmVkICovDQo+
ID4gKwlyZWcgPSBkYTkxNTBfcmVnX3JlYWQoY2hhcmdlci0+ZGE5MTUwLCBEQTkxNTBfU1RBVFVT
X0opOw0KPiA+ICsJaWYgKChyZWcgJiBEQTkxNTBfQ0hHX1NUQVRfTUFTSykgPT0gREE5MTUwX0NI
R19TVEFUX0JBVCkNCj4gPiArCQl2YWwtPmludHZhbCA9IDA7DQo+ID4gKwllbHNlDQo+ID4gKwkJ
dmFsLT5pbnR2YWwgPSAxOw0KPiA+ICsNCj4gPiArCXJldHVybiAwOw0KPiA+ICt9DQo+ID4gKw0K
PiA+ICtzdGF0aWMgaW50IGRhOTE1MF9jaGFyZ2VyX2JhdHRlcnlfY2hhcmdlX3R5cGUoc3RydWN0
IGRhOTE1MF9jaGFyZ2VyICpjaGFyZ2VyLA0KPiA+ICsJCQkJCSAgICAgIHVuaW9uIHBvd2VyX3N1
cHBseV9wcm9wdmFsICp2YWwpDQo+ID4gK3sNCj4gPiArCXU4IHJlZzsNCj4gPiArDQo+ID4gKwly
ZWcgPSBkYTkxNTBfcmVnX3JlYWQoY2hhcmdlci0+ZGE5MTUwLCBEQTkxNTBfU1RBVFVTX0opOw0K
PiA+ICsNCj4gPiArCXN3aXRjaCAocmVnICYgREE5MTUwX0NIR19TVEFUX01BU0spIHsNCj4gPiAr
CWNhc2UgREE5MTUwX0NIR19TVEFUX0NDOg0KPiA+ICsJCXZhbC0+aW50dmFsID0gUE9XRVJfU1VQ
UExZX0NIQVJHRV9UWVBFX0ZBU1Q7DQo+ID4gKwkJYnJlYWs7DQo+ID4gKwljYXNlIERBOTE1MF9D
SEdfU1RBVF9BQ1Q6DQo+ID4gKwljYXNlIERBOTE1MF9DSEdfU1RBVF9QUkU6DQo+ID4gKwljYXNl
IERBOTE1MF9DSEdfU1RBVF9DVjoNCj4gPiArCQl2YWwtPmludHZhbCA9IFBPV0VSX1NVUFBMWV9D
SEFSR0VfVFlQRV9UUklDS0xFOw0KPiA+ICsJCWJyZWFrOw0KPiA+ICsJZGVmYXVsdDoNCj4gPiAr
CQl2YWwtPmludHZhbCA9IFBPV0VSX1NVUFBMWV9DSEFSR0VfVFlQRV9OT05FOw0KPiA+ICsJCWJy
ZWFrOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCXJldHVybiAwOw0KPiA+ICt9DQo+ID4gKw0KPiA+
ICtzdGF0aWMgaW50IGRhOTE1MF9jaGFyZ2VyX2JhdHRlcnlfdm9sdGFnZV9taW4oc3RydWN0IGRh
OTE1MF9jaGFyZ2VyICpjaGFyZ2VyLA0KPiA+ICsJCQkJCSAgICAgIHVuaW9uIHBvd2VyX3N1cHBs
eV9wcm9wdmFsICp2YWwpDQo+ID4gK3sNCj4gPiArCXU4IHJlZzsNCj4gPiArDQo+ID4gKwlyZWcg
PSBkYTkxNTBfcmVnX3JlYWQoY2hhcmdlci0+ZGE5MTUwLCBEQTkxNTBfUFBSX0NIR0NUUkxfQyk7
DQo+ID4gKw0KPiA+ICsJLyogVmFsdWUgc3RhcnRzIGF0IDI1MDAgbVYsIDUwIG1WIGluY3JlbWVu
dHMsIHByZXNlbnRlZCBpbiB1ViAqLw0KPiA+ICsJdmFsLT5pbnR2YWwgPSAoKHJlZyAmIERBOTE1
MF9DSEdfVkZBVUxUX01BU0spICogNTAwMDApICsgMjUwMDAwMDsNCj4gPiArDQo+ID4gKwlyZXR1
cm4gMDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIGludCBkYTkxNTBfY2hhcmdlcl9iYXR0
ZXJ5X3ZvbHRhZ2Vfbm93KHN0cnVjdCBkYTkxNTBfY2hhcmdlciAqY2hhcmdlciwNCj4gPiArCQkJ
CQkgICAgICB1bmlvbiBwb3dlcl9zdXBwbHlfcHJvcHZhbCAqdmFsKQ0KPiA+ICt7DQo+ID4gKwlp
bnQgdl92YWwsIHJldDsNCj4gPiArDQo+ID4gKwkvKiBSZWFkIHByb2Nlc3NlZCB2YWx1ZSAtIG1W
IHVuaXRzICovDQo+ID4gKwlyZXQgPSBpaW9fcmVhZF9jaGFubmVsX3Byb2Nlc3NlZChjaGFyZ2Vy
LT52YmF0X2NoYW4sICZ2X3ZhbCk7DQo+ID4gKwlpZiAocmV0IDwgMCkNCj4gPiArCQlyZXR1cm4g
cmV0Ow0KPiA+ICsNCj4gPiArCXZhbC0+aW50dmFsID0gdl92YWwgKiAxMDAwOw0KPiA+ICsNCj4g
PiArCXJldHVybiAwOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50IGRhOTE1MF9jaGFy
Z2VyX2JhdHRlcnlfY3VycmVudF9tYXgoc3RydWN0IGRhOTE1MF9jaGFyZ2VyICpjaGFyZ2VyLA0K
PiA+ICsJCQkJCSAgICAgIHVuaW9uIHBvd2VyX3N1cHBseV9wcm9wdmFsICp2YWwpDQo+ID4gK3sN
Cj4gPiArCWludCByZWc7DQo+ID4gKw0KPiA+ICsJcmVnID0gZGE5MTUwX3JlZ19yZWFkKGNoYXJn
ZXItPmRhOTE1MCwgREE5MTUwX1BQUl9DSEdDVFJMX0QpOw0KPiA+ICsNCj4gPiArCS8qIDI1bUEg
aW5jcmVtZW50cyAqLw0KPiA+ICsJdmFsLT5pbnR2YWwgPSByZWcgKiAyNTAwMDsNCj4gPiArDQo+
ID4gKwlyZXR1cm4gMDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIGludCBkYTkxNTBfY2hh
cmdlcl9iYXR0ZXJ5X3ZvbHRhZ2VfbWF4KHN0cnVjdCBkYTkxNTBfY2hhcmdlciAqY2hhcmdlciwN
Cj4gPiArCQkJCQkgICAgICB1bmlvbiBwb3dlcl9zdXBwbHlfcHJvcHZhbCAqdmFsKQ0KPiA+ICt7
DQo+ID4gKwl1OCByZWc7DQo+ID4gKw0KPiA+ICsJcmVnID0gZGE5MTUwX3JlZ19yZWFkKGNoYXJn
ZXItPmRhOTE1MCwgREE5MTUwX1BQUl9DSEdDVFJMX0IpOw0KPiA+ICsNCj4gPiArCS8qIFZhbHVl
IHN0YXJ0cyBhdCAzNjUwIG1WLCAyNSBtViBpbmNyZW1lbnRzLCBwcmVzZW50ZWQgaW4gdVYgKi8N
Cj4gPiArCXZhbC0+aW50dmFsID0gKChyZWcgJiBEQTkxNTBfQ0hHX1ZCQVRfTUFTSykgKiAyNTAw
MCkgKyAzNjUwMDAwOw0KPiA+ICsJcmV0dXJuIDA7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRp
YyBlbnVtIHBvd2VyX3N1cHBseV9wcm9wZXJ0eSBkYTkxNTBfY2hhcmdlcl9iYXRfcHJvcHNbXSA9
IHsNCj4gPiArCVBPV0VSX1NVUFBMWV9QUk9QX1NUQVRVUywNCj4gPiArCVBPV0VSX1NVUFBMWV9Q
Uk9QX09OTElORSwNCj4gPiArCVBPV0VSX1NVUFBMWV9QUk9QX0hFQUxUSCwNCj4gPiArCVBPV0VS
X1NVUFBMWV9QUk9QX1BSRVNFTlQsDQo+ID4gKwlQT1dFUl9TVVBQTFlfUFJPUF9DSEFSR0VfVFlQ
RSwNCj4gPiArCVBPV0VSX1NVUFBMWV9QUk9QX1ZPTFRBR0VfTUlOX0RFU0lHTiwNCj4gPiArCVBP
V0VSX1NVUFBMWV9QUk9QX1ZPTFRBR0VfTk9XLA0KPiA+ICsJUE9XRVJfU1VQUExZX1BST1BfQ09O
U1RBTlRfQ0hBUkdFX0NVUlJFTlRfTUFYLA0KPiA+ICsJUE9XRVJfU1VQUExZX1BST1BfQ09OU1RB
TlRfQ0hBUkdFX1ZPTFRBR0VfTUFYLA0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArc3RhdGljIGludCBk
YTkxNTBfY2hhcmdlcl9iYXR0ZXJ5X2dldF9wcm9wKHN0cnVjdCBwb3dlcl9zdXBwbHkgKnBzeSwN
Cj4gPiArCQkJCQkgICBlbnVtIHBvd2VyX3N1cHBseV9wcm9wZXJ0eSBwc3AsDQo+ID4gKwkJCQkJ
ICAgdW5pb24gcG93ZXJfc3VwcGx5X3Byb3B2YWwgKnZhbCkNCj4gPiArew0KPiA+ICsJc3RydWN0
IGRhOTE1MF9jaGFyZ2VyICpjaGFyZ2VyID0gZGV2X2dldF9kcnZkYXRhKHBzeS0+ZGV2LT5wYXJl
bnQpOw0KPiA+ICsJaW50IHJldDsNCj4gPiArDQo+ID4gKwlzd2l0Y2ggKHBzcCkgew0KPiA+ICsJ
Y2FzZSBQT1dFUl9TVVBQTFlfUFJPUF9TVEFUVVM6DQo+ID4gKwkJcmV0ID0gZGE5MTUwX2NoYXJn
ZXJfYmF0dGVyeV9zdGF0dXMoY2hhcmdlciwgdmFsKTsNCj4gPiArCQlicmVhazsNCj4gPiArCWNh
c2UgUE9XRVJfU1VQUExZX1BST1BfT05MSU5FOg0KPiA+ICsJCXJldCA9IGRhOTE1MF9jaGFyZ2Vy
X3N1cHBseV9vbmxpbmUoY2hhcmdlciwgcHN5LCB2YWwpOw0KPiA+ICsJCWJyZWFrOw0KPiA+ICsJ
Y2FzZSBQT1dFUl9TVVBQTFlfUFJPUF9IRUFMVEg6DQo+ID4gKwkJcmV0ID0gZGE5MTUwX2NoYXJn
ZXJfYmF0dGVyeV9oZWFsdGgoY2hhcmdlciwgdmFsKTsNCj4gPiArCQlicmVhazsNCj4gPiArCWNh
c2UgUE9XRVJfU1VQUExZX1BST1BfUFJFU0VOVDoNCj4gPiArCQlyZXQgPSBkYTkxNTBfY2hhcmdl
cl9iYXR0ZXJ5X3ByZXNlbnQoY2hhcmdlciwgdmFsKTsNCj4gPiArCQlicmVhazsNCj4gPiArCWNh
c2UgUE9XRVJfU1VQUExZX1BST1BfQ0hBUkdFX1RZUEU6DQo+ID4gKwkJcmV0ID0gZGE5MTUwX2No
YXJnZXJfYmF0dGVyeV9jaGFyZ2VfdHlwZShjaGFyZ2VyLCB2YWwpOw0KPiA+ICsJCWJyZWFrOw0K
PiA+ICsJY2FzZSBQT1dFUl9TVVBQTFlfUFJPUF9WT0xUQUdFX01JTl9ERVNJR046DQo+ID4gKwkJ
cmV0ID0gZGE5MTUwX2NoYXJnZXJfYmF0dGVyeV92b2x0YWdlX21pbihjaGFyZ2VyLCB2YWwpOw0K
PiA+ICsJCWJyZWFrOw0KPiA+ICsJY2FzZSBQT1dFUl9TVVBQTFlfUFJPUF9WT0xUQUdFX05PVzoN
Cj4gPiArCQlyZXQgPSBkYTkxNTBfY2hhcmdlcl9iYXR0ZXJ5X3ZvbHRhZ2Vfbm93KGNoYXJnZXIs
IHZhbCk7DQo+ID4gKwkJYnJlYWs7DQo+ID4gKwljYXNlIFBPV0VSX1NVUFBMWV9QUk9QX0NPTlNU
QU5UX0NIQVJHRV9DVVJSRU5UX01BWDoNCj4gPiArCQlyZXQgPSBkYTkxNTBfY2hhcmdlcl9iYXR0
ZXJ5X2N1cnJlbnRfbWF4KGNoYXJnZXIsIHZhbCk7DQo+ID4gKwkJYnJlYWs7DQo+ID4gKwljYXNl
IFBPV0VSX1NVUFBMWV9QUk9QX0NPTlNUQU5UX0NIQVJHRV9WT0xUQUdFX01BWDoNCj4gPiArCQly
ZXQgPSBkYTkxNTBfY2hhcmdlcl9iYXR0ZXJ5X3ZvbHRhZ2VfbWF4KGNoYXJnZXIsIHZhbCk7DQo+
ID4gKwkJYnJlYWs7DQo+ID4gKwlkZWZhdWx0Og0KPiA+ICsJCXJldCA9IC1FSU5WQUw7DQo+ID4g
KwkJYnJlYWs7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJcmV0dXJuIHJldDsNCj4gPiArfQ0KPiA+
ICsNCj4gPiArc3RhdGljIGlycXJldHVybl90IGRhOTE1MF9jaGFyZ2VyX2NoZ19pcnEoaW50IGly
cSwgdm9pZCAqZGF0YSkNCj4gPiArew0KPiA+ICsJc3RydWN0IGRhOTE1MF9jaGFyZ2VyICpjaGFy
Z2VyID0gZGF0YTsNCj4gPiArDQo+ID4gKwlwb3dlcl9zdXBwbHlfY2hhbmdlZCgmY2hhcmdlci0+
YmF0dGVyeSk7DQo+ID4gKw0KPiA+ICsJcmV0dXJuIElSUV9IQU5ETEVEOw0KPiA+ICt9DQo+ID4g
Kw0KPiA+ICtzdGF0aWMgaXJxcmV0dXJuX3QgZGE5MTUwX2NoYXJnZXJfdGp1bmNfaXJxKGludCBp
cnEsIHZvaWQgKmRhdGEpDQo+ID4gK3sNCj4gPiArCXN0cnVjdCBkYTkxNTBfY2hhcmdlciAqY2hh
cmdlciA9IGRhdGE7DQo+ID4gKw0KPiA+ICsJLyogTm90aGluZyB3ZSBjYW4gcmVhbGx5IGRvIGV4
Y2VwdCByZXBvcnQgdGhpcy4gKi8NCj4gPiArCWRldl9jcml0KGNoYXJnZXItPmRldiwgIlRKdW5j
IG92ZXIgdGVtcGVyYXR1cmUhISFcbiIpOw0KPiA+ICsJcG93ZXJfc3VwcGx5X2NoYW5nZWQoJmNo
YXJnZXItPnVzYik7DQo+ID4gKw0KPiA+ICsJcmV0dXJuIElSUV9IQU5ETEVEOw0KPiA+ICt9DQo+
ID4gKw0KPiA+ICtzdGF0aWMgaXJxcmV0dXJuX3QgZGE5MTUwX2NoYXJnZXJfdmZhdWx0X2lycShp
bnQgaXJxLCB2b2lkICpkYXRhKQ0KPiA+ICt7DQo+ID4gKwlzdHJ1Y3QgZGE5MTUwX2NoYXJnZXIg
KmNoYXJnZXIgPSBkYXRhOw0KPiA+ICsNCj4gPiArCS8qIE5vdGhpbmcgd2UgY2FuIHJlYWxseSBk
byBleGNlcHQgcmVwb3J0IHRoaXMuICovDQo+ID4gKwlkZXZfY3JpdChjaGFyZ2VyLT5kZXYsICJW
U1lTIHVuZGVyIHZvbHRhZ2UhISFcbiIpOw0KPiA+ICsJcG93ZXJfc3VwcGx5X2NoYW5nZWQoJmNo
YXJnZXItPnVzYik7DQo+ID4gKwlwb3dlcl9zdXBwbHlfY2hhbmdlZCgmY2hhcmdlci0+YmF0dGVy
eSk7DQo+ID4gKw0KPiA+ICsJcmV0dXJuIElSUV9IQU5ETEVEOw0KPiA+ICt9DQo+ID4gKw0KPiA+
ICtzdGF0aWMgaXJxcmV0dXJuX3QgZGE5MTUwX2NoYXJnZXJfdmJ1c19pcnEoaW50IGlycSwgdm9p
ZCAqZGF0YSkNCj4gPiArew0KPiA+ICsJc3RydWN0IGRhOTE1MF9jaGFyZ2VyICpjaGFyZ2VyID0g
ZGF0YTsNCj4gPiArCXU4IHJlZzsNCj4gPiArDQo+ID4gKwlyZWcgPSBkYTkxNTBfcmVnX3JlYWQo
Y2hhcmdlci0+ZGE5MTUwLCBEQTkxNTBfU1RBVFVTX0gpOw0KPiA+ICsNCj4gPiArCS8qIENoYXJn
ZXIgcGx1Z2dlZCBpbiBvciBiYXR0ZXJ5IG9ubHkgKi8NCj4gPiArCXN3aXRjaCAocmVnICYgREE5
MTUwX1ZCVVNfU1RBVF9NQVNLKSB7DQo+ID4gKwljYXNlIERBOTE1MF9WQlVTX1NUQVRfT0ZGOg0K
PiA+ICsJY2FzZSBEQTkxNTBfVkJVU19TVEFUX1dBSVQ6DQo+ID4gKwkJY2hhcmdlci0+c3VwcGx5
X29ubGluZSA9ICZjaGFyZ2VyLT5iYXR0ZXJ5Ow0KPiA+ICsJCWJyZWFrOw0KPiA+ICsJY2FzZSBE
QTkxNTBfVkJVU19TVEFUX0NIRzoNCj4gPiArCQljaGFyZ2VyLT5zdXBwbHlfb25saW5lID0gJmNo
YXJnZXItPnVzYjsNCj4gPiArCQlicmVhazsNCj4gPiArCWRlZmF1bHQ6DQo+ID4gKwkJZGV2X3dh
cm4oY2hhcmdlci0+ZGV2LCAiVW5rbm93biBWQlVTIHN0YXRlIC0gcmVnID0gMHgleFxuIiwNCj4g
PiArCQkJIHJlZyk7DQo+ID4gKwkJY2hhcmdlci0+c3VwcGx5X29ubGluZSA9IE5VTEw7DQo+ID4g
KwkJYnJlYWs7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJcG93ZXJfc3VwcGx5X2NoYW5nZWQoJmNo
YXJnZXItPnVzYik7DQo+ID4gKwlwb3dlcl9zdXBwbHlfY2hhbmdlZCgmY2hhcmdlci0+YmF0dGVy
eSk7DQo+ID4gKw0KPiA+ICsJcmV0dXJuIElSUV9IQU5ETEVEOw0KPiA+ICt9DQo+ID4gKw0KPiA+
ICtzdGF0aWMgdm9pZCBkYTkxNTBfY2hhcmdlcl9vdGdfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3Qg
KmRhdGEpDQo+ID4gK3sNCj4gPiArCXN0cnVjdCBkYTkxNTBfY2hhcmdlciAqY2hhcmdlciA9DQo+
ID4gKwkJY29udGFpbmVyX29mKGRhdGEsIHN0cnVjdCBkYTkxNTBfY2hhcmdlciwgb3RnX3dvcmsp
Ow0KPiA+ICsNCj4gPiArCXN3aXRjaCAoY2hhcmdlci0+dXNiX2V2ZW50KSB7DQo+ID4gKwljYXNl
IFVTQl9FVkVOVF9JRDoNCj4gPiArCQkvKiBFbmFibGUgT1RHIEJvb3N0ICovDQo+ID4gKwkJZGE5
MTUwX3NldF9iaXRzKGNoYXJnZXItPmRhOTE1MCwgREE5MTUwX1BQUl9CS0NUUkxfQSwNCj4gPiAr
CQkJCURBOTE1MF9WQlVTX01PREVfTUFTSywNCj4gREE5MTUwX1ZCVVNfTU9ERV9PVEcpOw0KPiA+
ICsJCWJyZWFrOw0KPiA+ICsJY2FzZSBVU0JfRVZFTlRfTk9ORToNCj4gPiArCQkvKiBSZXZlcnQg
dG8gY2hhcmdlIG1vZGUgKi8NCj4gPiArCQlwb3dlcl9zdXBwbHlfY2hhbmdlZCgmY2hhcmdlci0+
dXNiKTsNCj4gPiArCQlwb3dlcl9zdXBwbHlfY2hhbmdlZCgmY2hhcmdlci0+YmF0dGVyeSk7DQo+
ID4gKwkJZGE5MTUwX3NldF9iaXRzKGNoYXJnZXItPmRhOTE1MCwgREE5MTUwX1BQUl9CS0NUUkxf
QSwNCj4gPiArCQkJCURBOTE1MF9WQlVTX01PREVfTUFTSywNCj4gREE5MTUwX1ZCVVNfTU9ERV9D
SEcpOw0KPiA+ICsJCWJyZWFrOw0KPiA+ICsJfQ0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMg
aW50IGRhOTE1MF9jaGFyZ2VyX290Z19uY2Ioc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYiwgdW5z
aWduZWQgbG9uZyB2YWwsDQo+ID4gKwkJCQkgIHZvaWQgKnByaXYpDQo+ID4gK3sNCj4gPiArCXN0
cnVjdCBkYTkxNTBfY2hhcmdlciAqY2hhcmdlciA9DQo+ID4gKwkJY29udGFpbmVyX29mKG5iLCBz
dHJ1Y3QgZGE5MTUwX2NoYXJnZXIsIG90Z19uYik7DQo+ID4gKw0KPiA+ICsJZGV2X2RiZyhjaGFy
Z2VyLT5kZXYsICJEQTkxNTAgT1RHIG5vdGlmeSAlbHVcbiIsIHZhbCk7DQo+ID4gKw0KPiA+ICsJ
Y2hhcmdlci0+dXNiX2V2ZW50ID0gdmFsOw0KPiA+ICsJc2NoZWR1bGVfd29yaygmY2hhcmdlci0+
b3RnX3dvcmspOw0KPiA+ICsNCj4gPiArCXJldHVybiBOT1RJRllfT0s7DQo+ID4gK30NCj4gPiAr
DQo+ID4gK3N0YXRpYyBpbnQgZGE5MTUwX2NoYXJnZXJfcmVnaXN0ZXJfaXJxKHN0cnVjdCBwbGF0
Zm9ybV9kZXZpY2UgKnBkZXYsDQo+ID4gKwkJCQkgICAgICAgaXJxX2hhbmRsZXJfdCBoYW5kbGVy
LA0KPiA+ICsJCQkJICAgICAgIGNvbnN0IGNoYXIgKmlycV9uYW1lKQ0KPiA+ICt7DQo+ID4gKwlz
dHJ1Y3QgZGV2aWNlICpkZXYgPSAmcGRldi0+ZGV2Ow0KPiA+ICsJc3RydWN0IGRhOTE1MF9jaGFy
Z2VyICpjaGFyZ2VyID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEocGRldik7DQo+ID4gKwlpbnQgaXJx
LCByZXQ7DQo+ID4gKw0KPiA+ICsJaXJxID0gcGxhdGZvcm1fZ2V0X2lycV9ieW5hbWUocGRldiwg
aXJxX25hbWUpOw0KPiA+ICsJaWYgKGlycSA8IDApIHsNCj4gPiArCQlkZXZfZXJyKGRldiwgIkZh
aWxlZCB0byBnZXQgSVJRIENIR19TVEFUVVM6ICVkXG4iLCBpcnEpOw0KPiA+ICsJCXJldHVybiBp
cnE7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJcmV0ID0gZGV2bV9yZXF1ZXN0X3RocmVhZGVkX2ly
cShkZXYsIGlycSwgTlVMTCwgaGFuZGxlciwgSVJRRl9PTkVTSE9ULA0KPiA+ICsJCQkJCWlycV9u
YW1lLCBjaGFyZ2VyKTsNCj4gPiArCWlmIChyZXQpDQo+ID4gKwkJZGV2X2VycihkZXYsICJGYWls
ZWQgdG8gcmVxdWVzdCBJUlEgJWQ6ICVkXG4iLCBpcnEsIHJldCk7DQo+ID4gKw0KPiA+ICsJcmV0
dXJuIHJldDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIGludCBkYTkxNTBfY2hhcmdlcl9w
cm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQ0KPiA+ICt7DQo+ID4gKwlzdHJ1Y3Qg
ZGV2aWNlICpkZXYgPSAmcGRldi0+ZGV2Ow0KPiA+ICsJc3RydWN0IGRhOTE1MCAqZGE5MTUwID0g
ZGV2X2dldF9kcnZkYXRhKGRldi0+cGFyZW50KTsNCj4gPiArCXN0cnVjdCBkYTkxNTBfY2hhcmdl
ciAqY2hhcmdlcjsNCj4gPiArCXN0cnVjdCBwb3dlcl9zdXBwbHkgKnVzYiwgKmJhdHRlcnk7DQo+
ID4gKwl1OCByZWc7DQo+ID4gKwlpbnQgcmV0Ow0KPiA+ICsNCj4gPiArCWNoYXJnZXIgPSBkZXZt
X2t6YWxsb2MoZGV2LCBzaXplb2Yoc3RydWN0IGRhOTE1MF9jaGFyZ2VyKSwgR0ZQX0tFUk5FTCk7
DQo+ID4gKwlpZiAoY2hhcmdlciA9PSBOVUxMKQ0KPiA+ICsJCXJldHVybiAtRU5PTUVNOw0KPiA+
ICsNCj4gPiArCXBsYXRmb3JtX3NldF9kcnZkYXRhKHBkZXYsIGNoYXJnZXIpOw0KPiA+ICsJY2hh
cmdlci0+ZGE5MTUwID0gZGE5MTUwOw0KPiA+ICsJY2hhcmdlci0+ZGV2ID0gZGV2Ow0KPiA+ICsN
Cj4gPiArCS8qIEFjcXVpcmUgQURDIGNoYW5uZWxzICovDQo+ID4gKwljaGFyZ2VyLT5pYnVzX2No
YW4gPSBpaW9fY2hhbm5lbF9nZXQoZGV2LCAiQ0hBTl9JQlVTIik7DQo+ID4gKwlpZiAoSVNfRVJS
KGNoYXJnZXItPmlidXNfY2hhbikpIHsNCj4gPiArCQlyZXQgPSBQVFJfRVJSKGNoYXJnZXItPmli
dXNfY2hhbik7DQo+ID4gKwkJZ290byBpYnVzX2NoYW5fZmFpbDsNCj4gPiArCX0NCj4gPiArDQo+
ID4gKwljaGFyZ2VyLT52YnVzX2NoYW4gPSBpaW9fY2hhbm5lbF9nZXQoZGV2LCAiQ0hBTl9WQlVT
Iik7DQo+ID4gKwlpZiAoSVNfRVJSKGNoYXJnZXItPnZidXNfY2hhbikpIHsNCj4gPiArCQlyZXQg
PSBQVFJfRVJSKGNoYXJnZXItPnZidXNfY2hhbik7DQo+ID4gKwkJZ290byB2YnVzX2NoYW5fZmFp
bDsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwljaGFyZ2VyLT50anVuY19jaGFuID0gaWlvX2NoYW5u
ZWxfZ2V0KGRldiwgIkNIQU5fVEpVTkMiKTsNCj4gPiArCWlmIChJU19FUlIoY2hhcmdlci0+dGp1
bmNfY2hhbikpIHsNCj4gPiArCQlyZXQgPSBQVFJfRVJSKGNoYXJnZXItPnRqdW5jX2NoYW4pOw0K
PiA+ICsJCWdvdG8gdGp1bmNfY2hhbl9mYWlsOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCWNoYXJn
ZXItPnZiYXRfY2hhbiA9IGlpb19jaGFubmVsX2dldChkZXYsICJDSEFOX1ZCQVQiKTsNCj4gPiAr
CWlmIChJU19FUlIoY2hhcmdlci0+dmJhdF9jaGFuKSkgew0KPiA+ICsJCXJldCA9IFBUUl9FUlIo
Y2hhcmdlci0+dmJhdF9jaGFuKTsNCj4gPiArCQlnb3RvIHZiYXRfY2hhbl9mYWlsOw0KPiA+ICsJ
fQ0KPiA+ICsNCj4gPiArCS8qIFJlZ2lzdGVyIHBvd2VyIHN1cHBsaWVzICovDQo+ID4gKwl1c2Ig
PSAmY2hhcmdlci0+dXNiOw0KPiA+ICsJYmF0dGVyeSA9ICZjaGFyZ2VyLT5iYXR0ZXJ5Ow0KPiA+
ICsNCj4gPiArCXVzYi0+bmFtZSA9ICJkYTkxNTAtdXNiIiwNCj4gPiArCXVzYi0+dHlwZSA9IFBP
V0VSX1NVUFBMWV9UWVBFX1VTQjsNCj4gPiArCXVzYi0+cHJvcGVydGllcyA9IGRhOTE1MF9jaGFy
Z2VyX3Byb3BzOw0KPiA+ICsJdXNiLT5udW1fcHJvcGVydGllcyA9IEFSUkFZX1NJWkUoZGE5MTUw
X2NoYXJnZXJfcHJvcHMpOw0KPiA+ICsJdXNiLT5nZXRfcHJvcGVydHkgPSBkYTkxNTBfY2hhcmdl
cl9nZXRfcHJvcDsNCj4gPiArCXJldCA9IHBvd2VyX3N1cHBseV9yZWdpc3RlcihkZXYsIHVzYik7
DQo+ID4gKwlpZiAocmV0KQ0KPiA+ICsJCWdvdG8gdXNiX2ZhaWw7DQo+ID4gKw0KPiA+ICsJYmF0
dGVyeS0+bmFtZSA9ICJkYTkxNTAtYmF0dGVyeSI7DQo+ID4gKwliYXR0ZXJ5LT50eXBlID0gUE9X
RVJfU1VQUExZX1RZUEVfQkFUVEVSWTsNCj4gPiArCWJhdHRlcnktPnByb3BlcnRpZXMgPSBkYTkx
NTBfY2hhcmdlcl9iYXRfcHJvcHM7DQo+ID4gKwliYXR0ZXJ5LT5udW1fcHJvcGVydGllcyA9IEFS
UkFZX1NJWkUoZGE5MTUwX2NoYXJnZXJfYmF0X3Byb3BzKTsNCj4gPiArCWJhdHRlcnktPmdldF9w
cm9wZXJ0eSA9IGRhOTE1MF9jaGFyZ2VyX2JhdHRlcnlfZ2V0X3Byb3A7DQo+ID4gKwlyZXQgPSBw
b3dlcl9zdXBwbHlfcmVnaXN0ZXIoZGV2LCBiYXR0ZXJ5KTsNCj4gPiArCWlmIChyZXQpDQo+ID4g
KwkJZ290byBiYXR0ZXJ5X2ZhaWw7DQo+ID4gKw0KPiA+ICsJLyogR2V0IGluaXRpYWwgb25saW5l
IHN1cHBseSAqLw0KPiA+ICsJcmVnID0gZGE5MTUwX3JlZ19yZWFkKGRhOTE1MCwgREE5MTUwX1NU
QVRVU19IKTsNCj4gPiArDQo+ID4gKwlzd2l0Y2ggKHJlZyAmIERBOTE1MF9WQlVTX1NUQVRfTUFT
Sykgew0KPiA+ICsJY2FzZSBEQTkxNTBfVkJVU19TVEFUX09GRjoNCj4gPiArCWNhc2UgREE5MTUw
X1ZCVVNfU1RBVF9XQUlUOg0KPiA+ICsJCWNoYXJnZXItPnN1cHBseV9vbmxpbmUgPSAmY2hhcmdl
ci0+YmF0dGVyeTsNCj4gPiArCQlicmVhazsNCj4gPiArCWNhc2UgREE5MTUwX1ZCVVNfU1RBVF9D
SEc6DQo+ID4gKwkJY2hhcmdlci0+c3VwcGx5X29ubGluZSA9ICZjaGFyZ2VyLT51c2I7DQo+ID4g
KwkJYnJlYWs7DQo+ID4gKwlkZWZhdWx0Og0KPiA+ICsJCWRldl93YXJuKGRldiwgIlVua25vd24g
VkJVUyBzdGF0ZSAtIHJlZyA9IDB4JXhcbiIsIHJlZyk7DQo+ID4gKwkJY2hhcmdlci0+c3VwcGx5
X29ubGluZSA9IE5VTEw7DQo+ID4gKwkJYnJlYWs7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJLyog
U2V0dXAgT1RHIHJlcG9ydGluZyAmIGNvbmZpZ3VyYXRpb24gKi8NCj4gPiArCWNoYXJnZXItPnVz
Yl9waHkgPSBkZXZtX3VzYl9nZXRfcGh5KGRldiwgVVNCX1BIWV9UWVBFX1VTQjIpOw0KPiA+ICsJ
aWYgKCFJU19FUlJfT1JfTlVMTChjaGFyZ2VyLT51c2JfcGh5KSkgew0KPiA+ICsJCUlOSVRfV09S
SygmY2hhcmdlci0+b3RnX3dvcmssIGRhOTE1MF9jaGFyZ2VyX290Z193b3JrKTsNCj4gPiArCQlj
aGFyZ2VyLT5vdGdfbmIubm90aWZpZXJfY2FsbCA9IGRhOTE1MF9jaGFyZ2VyX290Z19uY2I7DQo+
ID4gKwkJdXNiX3JlZ2lzdGVyX25vdGlmaWVyKGNoYXJnZXItPnVzYl9waHksICZjaGFyZ2VyLT5v
dGdfbmIpOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCS8qIFJlZ2lzdGVyIElSUXMgKi8NCj4gPiAr
CXJldCA9IGRhOTE1MF9jaGFyZ2VyX3JlZ2lzdGVyX2lycShwZGV2LCBkYTkxNTBfY2hhcmdlcl9j
aGdfaXJxLA0KPiA+ICsJCQkJCSAgIkNIR19TVEFUVVMiKTsNCj4gPiArCWlmIChyZXQgPCAwKQ0K
PiA+ICsJCWdvdG8gaXJxX2ZhaWw7DQo+ID4gKw0KPiA+ICsJcmV0ID0gZGE5MTUwX2NoYXJnZXJf
cmVnaXN0ZXJfaXJxKHBkZXYsIGRhOTE1MF9jaGFyZ2VyX3RqdW5jX2lycSwNCj4gPiArCQkJCQkg
ICJDSEdfVEpVTkMiKTsNCj4gPiArCWlmIChyZXQgPCAwKQ0KPiA+ICsJCWdvdG8gaXJxX2ZhaWw7
DQo+ID4gKw0KPiA+ICsJcmV0ID0gZGE5MTUwX2NoYXJnZXJfcmVnaXN0ZXJfaXJxKHBkZXYsIGRh
OTE1MF9jaGFyZ2VyX3ZmYXVsdF9pcnEsDQo+ID4gKwkJCQkJICAiQ0hHX1ZGQVVMVCIpOw0KPiA+
ICsJaWYgKHJldCA8IDApDQo+ID4gKwkJZ290byBpcnFfZmFpbDsNCj4gPiArDQo+ID4gKwlyZXQg
PSBkYTkxNTBfY2hhcmdlcl9yZWdpc3Rlcl9pcnEocGRldiwgZGE5MTUwX2NoYXJnZXJfdmJ1c19p
cnEsDQo+ID4gKwkJCQkJICAiQ0hHX1ZCVVMiKTsNCj4gPiArCWlmIChyZXQgPCAwKQ0KPiA+ICsJ
CWdvdG8gaXJxX2ZhaWw7DQo+ID4gKw0KPiA+ICsJcmV0dXJuIDA7DQo+ID4gKw0KPiA+ICtpcnFf
ZmFpbDoNCj4gPiArCWlmICghSVNfRVJSX09SX05VTEwoY2hhcmdlci0+dXNiX3BoeSkpDQo+ID4g
KwkJdXNiX3VucmVnaXN0ZXJfbm90aWZpZXIoY2hhcmdlci0+dXNiX3BoeSwgJmNoYXJnZXItPm90
Z19uYik7DQo+ID4gK2JhdHRlcnlfZmFpbDoNCj4gPiArCXBvd2VyX3N1cHBseV91bnJlZ2lzdGVy
KHVzYik7DQo+ID4gKw0KPiA+ICt1c2JfZmFpbDoNCj4gPiArCWlpb19jaGFubmVsX3JlbGVhc2Uo
Y2hhcmdlci0+dmJhdF9jaGFuKTsNCj4gPiArDQo+ID4gK3ZiYXRfY2hhbl9mYWlsOg0KPiA+ICsJ
aWlvX2NoYW5uZWxfcmVsZWFzZShjaGFyZ2VyLT50anVuY19jaGFuKTsNCj4gPiArDQo+ID4gK3Rq
dW5jX2NoYW5fZmFpbDoNCj4gPiArCWlpb19jaGFubmVsX3JlbGVhc2UoY2hhcmdlci0+dmJ1c19j
aGFuKTsNCj4gPiArDQo+ID4gK3ZidXNfY2hhbl9mYWlsOg0KPiA+ICsJaWlvX2NoYW5uZWxfcmVs
ZWFzZShjaGFyZ2VyLT5pYnVzX2NoYW4pOw0KPiA+ICsNCj4gPiAraWJ1c19jaGFuX2ZhaWw6DQo+
ID4gKwlyZXR1cm4gcmV0Ow0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50IGRhOTE1MF9j
aGFyZ2VyX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQ0KPiA+ICt7DQo+ID4g
KwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmcGRldi0+ZGV2Ow0KPiA+ICsJc3RydWN0IGRhOTE1MF9j
aGFyZ2VyICpjaGFyZ2VyID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEocGRldik7DQo+ID4gKwlpbnQg
aXJxOw0KPiA+ICsNCj4gPiArCS8qIE1ha2Ugc3VyZSBJUlFzIGFyZSByZWxlYXNlZCBiZWZvcmUg
dW5yZWdpc3RlcmluZyBwb3dlciBzdXBwbGllcyAqLw0KPiA+ICsJaXJxID0gcGxhdGZvcm1fZ2V0
X2lycV9ieW5hbWUocGRldiwgIkNIR19WQlVTIik7DQo+ID4gKwlkZXZtX2ZyZWVfaXJxKGRldiwg
aXJxLCBjaGFyZ2VyKTsNCj4gPiArDQo+ID4gKwlpcnEgPSBwbGF0Zm9ybV9nZXRfaXJxX2J5bmFt
ZShwZGV2LCAiQ0hHX1ZGQVVMVCIpOw0KPiA+ICsJZGV2bV9mcmVlX2lycShkZXYsIGlycSwgY2hh
cmdlcik7DQo+ID4gKw0KPiA+ICsJaXJxID0gcGxhdGZvcm1fZ2V0X2lycV9ieW5hbWUocGRldiwg
IkNIR19USlVOQyIpOw0KPiA+ICsJZGV2bV9mcmVlX2lycShkZXYsIGlycSwgY2hhcmdlcik7DQo+
ID4gKw0KPiA+ICsJaXJxID0gcGxhdGZvcm1fZ2V0X2lycV9ieW5hbWUocGRldiwgIkNIR19TVEFU
VVMiKTsNCj4gPiArCWRldm1fZnJlZV9pcnEoZGV2LCBpcnEsIGNoYXJnZXIpOw0KPiBJZiB5b3Ug
aGF2ZSB1c2VkIGEgZGV2bSBhbGxvY2F0aW9uLCB5b3UgZ2VuZXJhbGx5IGRvbid0IG5lZWQgdG8N
Cj4gZnJlZSB0aGVtIGV4cGxpY2l0bHkuIFRoYXQgd2lsbCBoYXBwZW4gd2hlbiB0aGUgZGV2aWNl
IGlzIGZyZWVkLg0KPiANCj4gSWYgeW91IGRvIG5lZWQgdG8gZnJlZSB0aGVtIGhlcmUgKHRvIG1h
aW50YWluIG9yZGVyaW5nIGV0YykgdGhlbiB5b3UNCj4gZG9uJ3Qgd2FudCB0byBiZSB1c2luZyB0
aGUgZGV2bSBpbnRlcmZhY2VzIGluIHRoZSBmaXJzdCBwbGFjZS4NCg0KVGhlIG9yZGVyaW5nIG9u
IHJlbGVhc2UgaXMgaW1wb3J0YW50IGFzIHBvd2VyX3N1cHBseV9jaGFuZ2VkKCkgaXMgY2FsbGVk
IGJ5IElSUQ0KdGhyZWFkIGZ1bmN0aW9ucywgc28gdGhlIElSUXMgbmVlZCByZWxlYXNpbmcgZmly
c3QgYmVmb3JlIHVucmVnaXN0ZXJpbmcgcG93ZXINCnN1cHBseSBjbGFzc2VzLiBUaGUgb3JpZ2lu
YWwgaW50ZW50aW9uIHdpdGggdXNpbmcgZGV2bSBoZXJlIHdhcyB0byBrZWVwIHRoZQ0KY2xlYW51
cCBvbiBmYWlsdXJlIHNpbXBsZSBmb3IgdGhlIHByb2JlIGZ1bmN0aW9uIHdpdGggcmVnYXJkcyB0
byBJUlFzLCBidXQNCmxvb2tpbmcgYXQgaXQgYWdhaW4gdGhhdCdzIG5vdCBnb2luZyB0byB3b3Jr
IHNvIEkgbmVlZCB0byBkcm9wIGJhY2sgdG8gdGhlDQpub24gZGV2bV8qIHZlcnNpb25zIGluc3Rl
YWQuIFRoYW5rcyBmb3IgcG9pbnRpbmcgdG8gaXQuDQoNCj4gPiArDQo+ID4gKwlpZiAoIUlTX0VS
Ul9PUl9OVUxMKGNoYXJnZXItPnVzYl9waHkpKQ0KPiA+ICsJCXVzYl91bnJlZ2lzdGVyX25vdGlm
aWVyKGNoYXJnZXItPnVzYl9waHksICZjaGFyZ2VyLT5vdGdfbmIpOw0KPiA+ICsNCj4gPiArCXBv
d2VyX3N1cHBseV91bnJlZ2lzdGVyKCZjaGFyZ2VyLT5iYXR0ZXJ5KTsNCj4gPiArCXBvd2VyX3N1
cHBseV91bnJlZ2lzdGVyKCZjaGFyZ2VyLT51c2IpOw0KPiA+ICsNCj4gPiArCS8qIFJlbGVhc2Ug
QURDIGNoYW5uZWxzICovDQo+ID4gKwlpaW9fY2hhbm5lbF9yZWxlYXNlKGNoYXJnZXItPmlidXNf
Y2hhbik7DQo+ID4gKwlpaW9fY2hhbm5lbF9yZWxlYXNlKGNoYXJnZXItPnZidXNfY2hhbik7DQo+
ID4gKwlpaW9fY2hhbm5lbF9yZWxlYXNlKGNoYXJnZXItPnRqdW5jX2NoYW4pOw0KPiA+ICsJaWlv
X2NoYW5uZWxfcmVsZWFzZShjaGFyZ2VyLT52YmF0X2NoYW4pOw0KPiA+ICsNCj4gPiArCXJldHVy
biAwOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBk
YTkxNTBfY2hhcmdlcl9kcml2ZXIgPSB7DQo+ID4gKwkuZHJpdmVyID0gew0KPiA+ICsJCS5uYW1l
ID0gImRhOTE1MC1jaGFyZ2VyIiwNCj4gPiArCX0sDQo+ID4gKwkucHJvYmUgPSBkYTkxNTBfY2hh
cmdlcl9wcm9iZSwNCj4gPiArCS5yZW1vdmUgPSBkYTkxNTBfY2hhcmdlcl9yZW1vdmUsDQo+ID4g
K307DQo+ID4gKw0KPiA+ICttb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGRhOTE1MF9jaGFyZ2VyX2Ry
aXZlcik7DQo+ID4gKw0KPiA+ICtNT0RVTEVfREVTQ1JJUFRJT04oIkNoYXJnZXIgRHJpdmVyIGZv
ciBEQTkxNTAiKTsNCj4gPiArTU9EVUxFX0FVVEhPUigiQWRhbSBUaG9tc29uDQo+IDxBZGFtLlRo
b21zb24uT3BlbnNvdXJjZUBkaWFzZW1pLmNvbT4iKTsNCj4gPiArTU9EVUxFX0xJQ0VOU0UoIkdQ
TCIpOw0KPiA+IC0tDQo+ID4gMS45LjMNCj4gPg0K
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help