UnixWare disks support (alpha patch)

Andrzej Krzysztofowicz (ankry@idk.com.pl)
Tue, 20 Jan 1998 18:13:15 +0100 (MET)


This message is in MIME format. The first part should be readable text,
while the remaining parts are likely unreadable without MIME-aware tools.
Send mail to mime@docserver.cac.washington.edu for more info.

--1975778710-931520688-885316395=:3357
Content-Type: TEXT/PLAIN; charset=US-ASCII

Hi,
An alpha version of patch which supports UnixWare disks access under Linux
2.1 (patch is against 2.1.80pre4) is included. It is also available as

ftp:/rudy.mif.pg.gda.pl/pub/People/ankry/linux-patches/2.1/patch-unixware

Slices inside Unixware partiyion are visible in the same way as for SCO
divvy and Solaris x86 slices. Currently only UFS slices can be mounted (R/O)
when using this patch.

Could anybody test this patch ?
It was tested with Unixware 1.1 disks only.

With regards

-- 
=======================================================================
  Andrzej M. Krzysztofowicz               ankry@mif.pg.gda.pl
  phone: (48)(58) 347 14 61            fax: (48)(58) 347 28 21

--1975778710-931520688-885316395=:3357 Content-Type: TEXT/PLAIN; charset=US-ASCII; name=patch-unixware Content-Transfer-Encoding: BASE64 Content-ID: <Pine.LNX.3.95L01at.980120181315.3357B@oberon.idk.com.pl> Content-Description:

ZGlmZiAtdSBsaW51eG9sZC9kcml2ZXJzL2Jsb2NrL2dlbmhkLmMgbGludXgv ZHJpdmVycy9ibG9jay9nZW5oZC5jDQotLS0gbGludXhvbGQvZHJpdmVycy9i bG9jay9nZW5oZC5jCVRodSBKYW4gMTUgMjI6MDI6MTAgMTk5OA0KKysrIGxp bnV4L2RyaXZlcnMvYmxvY2svZ2VuaGQuYwlTdW4gSmFuIDE4IDEyOjM4OjAz IDE5OTgNCkBAIC0zMzIsNiArMzMyLDQ2IEBADQogfQ0KICNlbmRpZg0KIA0K KyNpZmRlZiBDT05GSUdfVU5JWFdBUkVfRElTS0xBQkVMDQorLyogDQorICog Q3JlYXRlIGRldmljZXMgZm9yIFVuaXh3YXJlIHBhcnRpdGlvbnMgbGlzdGVk IGluIGEgZGlza2xhYmVsLCB1bmRlciBhDQorICogZG9zLWxpa2UgcGFydGl0 aW9uLiBTZWUgZXh0ZW5kZWRfcGFydGl0aW9uKCkgZm9yIG1vcmUgaW5mb3Jt YXRpb24uDQorICovDQorc3RhdGljIHZvaWQgdW5peHdhcmVfcGFydGl0aW9u KHN0cnVjdCBnZW5kaXNrICpoZCwga2Rldl90IGRldikNCit7DQorCXN0cnVj dCBidWZmZXJfaGVhZCAqYmg7DQorCXN0cnVjdCB1bml4d2FyZV9kaXNrbGFi ZWwgKmw7DQorCXN0cnVjdCB1bml4d2FyZV9zbGljZXMgKnA7DQorCWludCBt YXNrID0gKDEgPDwgaGQtPm1pbm9yX3NoaWZ0KSAtIDE7DQorDQorCWlmICgh KGJoID0gYnJlYWQoZGV2LCAxNCwgZ2V0X3B0YWJsZV9ibG9ja3NpemUoZGV2 KSkpKQ0KKwkJcmV0dXJuOw0KKwliaC0+Yl9zdGF0ZSA9IDA7DQorCWwgPSAo c3RydWN0IHVuaXh3YXJlX2Rpc2tsYWJlbCAqKSAoYmgtPmJfZGF0YSs1MTIp Ow0KKwlpZiAobC0+ZF9tYWdpYyAhPSBVTklYV0FSRV9ESVNLTUFHSUMpIHsN CisJCWJyZWxzZShiaCk7DQorCQlyZXR1cm47DQorCX0NCisJcHJpbnRrKCIg PHVuaXh3YXJlOiIpOw0KKwlwID0gJmwtPmRfc2xpY2VzWzFdOw0KKwkJLyog SSBvbWl0IHRoZSAwdGggc2xpY2UgYXMgaXQgc2hvdWxkIGJlIHRoZSBzYW1l IA0KKwkJICAgYXMgd2hvbGUgZGlzayAqLw0KKwl3aGlsZSAocCAtICZsLT5k X3NsaWNlc1swXSA8IFVOSVhXQVJFX05VTVNMSUNFKSB7DQorCQlpZiAoKGN1 cnJlbnRfbWlub3IgJiBtYXNrKSA9PSAwKQ0KKwkJCWJyZWFrOw0KKw0KKwkJ aWYgKHAtPnBfbGFiZWwgIT0gVU5JWFdBUkVfRlNfVU5VU0VEKSB7DQorCQkJ YWRkX3BhcnRpdGlvbihoZCwgY3VycmVudF9taW5vciwgcC0+cF9vZmZzZXQs IHAtPnBfc2l6ZSk7DQorCQkJY3VycmVudF9taW5vcisrOw0KKwkJfQ0KKwkJ cCsrOw0KKwl9DQorCWJyZWxzZShiaCk7DQorCXByaW50aygiID4iKTsNCisN Cit9DQorI2VuZGlmDQorDQogc3RhdGljIGludCBtc2Rvc19wYXJ0aXRpb24o c3RydWN0IGdlbmRpc2sgKmhkLCBrZGV2X3QgZGV2LCB1bnNpZ25lZCBsb25n IGZpcnN0X3NlY3RvcikNCiB7DQogCWludCBpLCBtaW5vciA9IGN1cnJlbnRf bWlub3I7DQpAQCAtNDU5LDYgKzQ5OSwxMCBAQA0KIAkJCWJzZF9kaXNrbGFi ZWxfcGFydGl0aW9uKGhkLCBNS0RFVihoZC0+bWFqb3IsIG1pbm9yKSk7DQog CQkJcHJpbnRrKCIgPiIpOw0KIAkJfQ0KKyNlbmRpZg0KKyNpZmRlZiBDT05G SUdfVU5JWFdBUkVfRElTS0xBQkVMDQorCQlpZiAoU1lTX0lORChwKSA9PSBV TklYV0FSRV9QQVJUSVRJT04pDQorCQkJdW5peHdhcmVfcGFydGl0aW9uKGhk LCBNS0RFVihoZC0+bWFqb3IsIG1pbm9yKSk7DQogI2VuZGlmDQogI2lmZGVm IENPTkZJR19TT0xBUklTX1g4Nl9QQVJUSVRJT04NCiANCmRpZmYgLXUgbGlu dXhvbGQvaW5jbHVkZS9saW51eC91ZnNfZnMuaCBsaW51eC9pbmNsdWRlL2xp bnV4L3Vmc19mcy5oDQotLS0gbGludXhvbGQvaW5jbHVkZS9saW51eC91ZnNf ZnMuaAlGcmkgSmFuIDE2IDIyOjQzOjMyIDE5OTgNCisrKyBsaW51eC9pbmNs dWRlL2xpbnV4L3Vmc19mcy5oCVN1biBKYW4gMTggMTk6NDA6NDMgMTk5OA0K QEAgLTMyLDcgKzMyLDcgQEANCiAjZGVmaW5lIFVGU19DSUdBTSAweDU0MTkw MTAwIC8qIGJ5dGVzd2FwcGVkIE1BR0lDICovDQogDQogI2RlZmluZSBVRlNf RlNJWkUgMTAyNA0KLSNkZWZpbmUgVUZTX0JTSVpFIDgxOTINCisvKiAjZGVm aW5lIFVGU19CU0laRSA4MTkyICovDQogDQogI2RlZmluZSBVRlNfTkRBRERS IDEyDQogI2RlZmluZSBVRlNfTklORElSIDMNCmRpZmYgLXUgbGludXhvbGQv ZnMvdWZzL3Vmc19zdXBlci5jIGxpbnV4L2ZzL3Vmcy91ZnNfc3VwZXIuYw0K LS0tIGxpbnV4b2xkL2ZzL3Vmcy91ZnNfc3VwZXIuYwlGcmkgRGVjICA1IDE2 OjIwOjQ0IDE5OTcNCisrKyBsaW51eC9mcy91ZnMvdWZzX3N1cGVyLmMJU3Vu IEphbiAxOCAyMDo0MTozOCAxOTk4DQpAQCAtMTI3LDYgKzEyNyw3IEBADQog DQogCU1PRF9JTkNfVVNFX0NPVU5UOw0KIAlsb2NrX3N1cGVyIChzYik7DQor CXNldF9ibG9ja3NpemUoc2ItPnNfZGV2LCBCTE9DS19TSVpFKTsNCiANCiAJ LyogWFhYIC0gbWFrZSBldmVyeXRoaW5nIHJlYWQgb25seSBmb3IgdGVzdGlu ZyAqLw0KIAlzYi0+c19mbGFncyB8PSBNU19SRE9OTFk7DQpAQCAtMTc3LDEy ICsxNzgsMTIgQEANCiANCiAJLyogWFhYIC0gcGFyc2UgYXJncyAqLw0KIA0K LQlpZiAodXNiLT5mc19ic2l6ZSAhPSBVRlNfQlNJWkUpIHsNCisvKglpZiAo dXNiLT5mc19ic2l6ZSAhPSBVRlNfQlNJWkUpIHsNCiAJICAgICAgICBwcmlu dGsoInVmc19yZWFkX3N1cGVyOiBmc19ic2l6ZSAlZCAhPSAlZFxuIiwgdXNi LT5mc19ic2l6ZSwNCiAJICAgICAgICAgICAgICAgVUZTX0JTSVpFKTsNCiAJ ICAgICAgICBnb3RvIHVmc19yZWFkX3N1cGVyX2xvc2U7DQogCX0NCi0NCisq Lw0KIAlpZiAodXNiLT5mc19mc2l6ZSAhPSBVRlNfRlNJWkUpIHsNCiAJICAg ICAgICBwcmludGsoInVmc19yZWFkX3N1cGVyOiBmc19mc2l6ZSAlZCAhPSAl ZFxuIiwgdXNiLT5mc19mc2l6ZSwNCiAJICAgICAgICAgICAgICAgVUZTX0ZT SVpFKTsNCmRpZmYgLXUgbGludXhvbGQvZnMvdWZzL3Vmc19pbm9kZS5jIGxp bnV4L2ZzL3Vmcy91ZnNfaW5vZGUuYw0KLS0tIGxpbnV4b2xkL2ZzL3Vmcy91 ZnNfaW5vZGUuYwlUdWUgT2N0IDIxIDE0OjI2OjEzIDE5OTcNCisrKyBsaW51 eC9mcy91ZnMvdWZzX2lub2RlLmMJU3VuIEphbiAxOCAxMjoxMzoxOSAxOTk4 DQpAQCAtMTYyLDE0ICsxNjIsMTQgQEANCiAJICAgICAgICAgICAgICAgTUFK T1IoaW5vZGUtPmlfZGV2KSwgTUlOT1IoaW5vZGUtPmlfZGV2KSk7DQogCX0N CiAJLyogWFhYIC0gZGVidWdnaW5nICovDQotCWlmIChTV0FCMzIodWZzaXAt PnVpX2dlbikgPT0gMCkgew0KKy8qCWlmIChTV0FCMzIodWZzaXAtPnVpX2dl bikgPT0gMCkgew0KIAkgICAgICAgIHByaW50aygidWZzX3JlYWRfaW5vZGU6 IHplcm8gZ2VuIGlubyAlbHUgcGJsayAlbHUgZGV2ICV1LyV1XG4iLA0KIAkg ICAgICAgICAgICAgICBpbm9kZS0+aV9pbm8sDQogCSAgICAgICAgICAgICAg IHVmc19jZ2ltaW4oaW5vZGUtPmlfc2IsIHVmc19pbm8yY2coaW5vZGUpKSAr DQogCSAgICAgICAgICAgICAgIChpbm9kZS0+aV9pbm8lc2ItPnUudWZzX3Ni LnNfaXBnKS9zYi0+dS51ZnNfc2Iuc19pbm9wYiwNCiAJICAgICAgICAgICAg ICAgTUFKT1IoaW5vZGUtPmlfZGV2KSwgTUlOT1IoaW5vZGUtPmlfZGV2KSk7 DQogCX0NCi0JLyoNCisqLwkvKg0KIAkgKiBTaW5jZSBMaW51eCBjdXJyZW50 bHkgb25seSBoYXMgMTYtYml0IHVpZF90IGFuZCBnaWRfdCwgd2UgY2FuJ3QN CiAJICogcmVhbGx5IHN1cHBvcnQgRUZUcy4gIEZvciB0aGUgbW9tZW50LCB3 ZSB1c2UgMCBhcyB0aGUgdWlkIGFuZCBnaWQNCiAJICogaWYgYW4gaW5vZGUg aGFzIGEgdWlkIG9yIGdpZCB0aGF0IHdvbid0IGZpdCBpbiAxNiBiaXRzLiAg VGhpcyB3YXkNCmRpZmYgLXUgbGludXhvbGQvZnMvQ29uZmlnLmluIGxpbnV4 L2ZzL0NvbmZpZy5pbg0KLS0tIGxpbnV4b2xkL2ZzL0NvbmZpZy5pbglTYXQg SmFuIDE3IDAyOjMxOjAxIDE5OTgNCisrKyBsaW51eC9mcy9Db25maWcuaW4J U2F0IEphbiAxNyAwMjozNjoxNiAxOTk4DQpAQCAtNjksNiArNjksOSBAQA0K ICAgYm9vbCAnU01EIGRpc2tsYWJlbCAoU3VuIHBhcnRpdGlvbiB0YWJsZXMp IHN1cHBvcnQnIENPTkZJR19TTURfRElTS0xBQkVMDQogICBib29sICdTb2xh cmlzICh4ODYpIHBhcnRpdGlvbiB0YWJsZSBzdXBwb3J0JyBDT05GSUdfU09M QVJJU19YODZfUEFSVElUSU9ODQogZmkNCitpZiBbICJDT05GSUdfU1lTVl9G UyIgIT0gIm4iIC1vICIkQ09ORklHX1VGU19GUyIgIT0gIm4iIF07IHRoZW4N CisgIGJvb2wgJ1VuaXhXYXJlIHNsaWNlcyBzdXBwb3J0IChleHBlcmltZW50 YWwpJyBDT05GSUdfVU5JWFdBUkVfRElTS0xBQkVMDQorZmkNCiBib29sICdN YWNpbnRvc2ggcGFydGl0aW9uIG1hcCBzdXBwb3J0JyBDT05GSUdfTUFDX1BB UlRJVElPTg0KIGVuZG1lbnUNCiANCmRpZmYgLXUgbGludXhvbGQvRG9jdW1l bnRhdGlvbi9Db25maWd1cmUuaGVscCBsaW51eC9Eb2N1bWVudGF0aW9uL0Nv bmZpZ3VyZS5oZWxwDQotLS0gbGludXhvbGQvRG9jdW1lbnRhdGlvbi9Db25m aWd1cmUuaGVscAlTYXQgSmFuIDE3IDAyOjM2OjMyIDE5OTgNCisrKyBsaW51 eC9Eb2N1bWVudGF0aW9uL0NvbmZpZ3VyZS5oZWxwCVN1biBKYW4gMTggMTk6 MTM6MDYgMTk5OA0KQEAgLTUzMjAsNiArNTMyMCwyMSBAQA0KICAgcHJlZmVy YWJseSAiaW5mbyB0YXIiKS4gSWYgeW91IGRvbid0IGtub3cgd2hhdCBhbGwg dGhpcyBpcyBhYm91dCwNCiAgIHNheSBOLg0KIA0KK1VuaXhXYXJlIHNsaWNl cyBzdXBwb3J0IChleHBlcmltZW50YWwpDQorQ09ORklHX1VOSVhXQVJFX0RJ U0tMQUJFTA0KKyAgTGlrZSBzb21lIHN5c3RlbXMsIFVuaXhXYXJlIHVzZXMs IGV4Y2VwdCBET1MtbGlrZSBwYXJ0aXRpb24gdGFibGUsDQorICBpdHMgb3du IHNsaWNlIHRhYmxlIGluc2lkZSBhIHBhcnRpdGlvbiAoVlRPQyAtIFZpcnR1 YWwgVGFibGUgb2YNCisgIENvbnRlbnRzKS4gSXRzIGZvcm1hdCBpcyBpbmNv bXBhdGlibGUgd2l0aCBhbGwgb3RoZXIgT1Nlcy4gU2F5aW5nIFkNCisgIGhl cmUgYWxsb3dzIHlvdSB0byByZWFkIFZUT0MgYW5kIGZ1cnRoZXIgbW91bnQg VW5peFdhcmUgcGFydGl0aW9ucw0KKyAgcmVhZC1vbmx5IChVRlMgZmlsZXN5 c3RlbSBvbmx5IGlzIGFjdHVhbGx5IHN1cHBvcnRlZCkgZnJvbSB3aXRoaW4N CisgIExpbnV4LiBUaGlzIGlzIG1haW5seSB1c2VkIHRvIGNhcnJ5IGRhdGEg ZnJvbSBhIFVuaXhXYXJlIGJveCB0byB5b3VyDQorICBMaW51eCBib3ggdmlh IGEgcmVtb3ZhYmxlIG1lZGl1bSBsaWtlIG1hZ25ldG8tb3B0aWNhbCwgWklQ IG9yDQorICByZW1vdmFibGUgSURFIGRyaXZlcy4gTm90ZSwgaG93ZXZlciwg dGhhdCBhIGdvb2QgcG9ydGFibGUgd2F5IHRvIA0KKyAgdHJhbnNwb3J0IGZp bGVzIGFuZCBkaXJlY3RvcmllcyBiZXR3ZWVuIHVuaXhlcyAoYW5kIGV2ZW4g b3RoZXIgDQorICBvcGVyYXRpbmcgc3lzdGVtcykgaXMgZ2l2ZW4gYnkgdGhl IHRhciBwcm9ncmFtICgibWFuIHRhciIgb3INCisgIHByZWZlcmFibHkgImlu Zm8gdGFyIikuIElmIHlvdSBkb24ndCBrbm93IHdoYXQgYWxsIHRoaXMgaXMg YWJvdXQsDQorICBzYXkgTi4NCisNCiBNYWNpbnRvc2ggcGFydGl0aW9uIG1h cCBzdXBwb3J0DQogQ09ORklHX01BQ19QQVJUSVRJT04NCiAgIFNheSBZIGhl cmUgaWYgeW91IHdhbnQgeW91ciBMaW51eCBzeXN0ZW0gdG8gYmUgYWJsZSB0 byByZWFkDQpkaWZmIC11IGxpbnV4b2xkL2luY2x1ZGUvbGludXgvZ2VuaGQu aCBsaW51eC9pbmNsdWRlL2xpbnV4L2dlbmhkLmgNCi0tLSBsaW51eG9sZC9p bmNsdWRlL2xpbnV4L2dlbmhkLmgJRnJpIEphbiAxNiAwODozMDoxMCAxOTk4 DQorKysgbGludXgvaW5jbHVkZS9saW51eC9nZW5oZC5oCVNhdCBKYW4gMTcg MDI6NTQ6MTIgMTk5OA0KQEAgLTE1NSw2ICsxNTUsNDkgQEANCiANCiAjZW5k aWYJLyogQ09ORklHX0JTRF9ESVNLTEFCRUwgKi8NCiANCisjaWZkZWYgQ09O RklHX1VOSVhXQVJFX0RJU0tMQUJFTA0KKy8qDQorICogVW5peFdhcmUgc2xp Y2VzIHN1cHBvcnQgYnkgQW5kcnplaiBLcnp5c3p0b2Zvd2ljeiA8YW5rcnlA bWlmLnBnLmdkYS5wbD4NCisgKi8NCisNCisjZGVmaW5lIFVOSVhXQVJFX1BB UlRJVElPTgkweDYzCQkvKiBUaGUgcGFydGl0aW9uIElELCBzYW1lIGFzICov DQorCQkJCQkJLyogR05VX0hVUkQ7IHVzZWQgYWxzbyBieSBTQ08gVW5peCAq Lw0KKw0KKyNkZWZpbmUgVU5JWFdBUkVfRElTS01BR0lDCSgweENBNUU2MDBE VUwpCS8qIFRoZSBkaXNrIG1hZ2ljIG51bWJlciAqLw0KKyNkZWZpbmUgVU5J WFdBUkVfTlVNU0xJQ0UJMTYNCisjZGVmaW5lIFVOSVhXQVJFX0ZTX1VOVVNF RAkwCS8qIGxhYmVsIG9mIHVudXNlZCBzbGljZSBlbnRyeSBJRCAqLw0KK3N0 cnVjdCB1bml4d2FyZV9kaXNrbGFiZWwgew0KKwlfX3UzMglkX2VtcHR5MTsJ CS8qIDAgKi8NCisJX191MzIJZF9tYWdpYzsJCS8qIHRoZSBtYWdpYyBudW1i ZXIgKi8NCisJX191MzIJZF91bmtub3duOwkJLyogPyAoMHgwMDAwMDAwNCA0 KSAqLw0KKwljaGFyCWRfc3BhY2VzWzEyXTsJCS8qID8gKDB4MjAncykgKi8N CisJX191MzIJZF9uY3lsaW5kZXJzOwkJLyogIyBvZiBkYXRhIGN5bGluZGVy cyBwZXIgdW5pdCAqLw0KKwlfX3UzMglkX250cmFja3M7CQkvKiAjIG9mIHRy YWNrcyBwZXIgY3lsaW5kZXIgKi8NCisJX191MzIJZF9uc2VjdG9yczsJCS8q ICMgb2YgZGF0YSBzZWN0b3JzIHBlciB0cmFjayAqLw0KKwlfX3UzMglkX3Nl Y3NpemU7CQkvKiAjIG9mIGJ5dGVzIHBlciBzZWN0b3IgPyAqLw0KKwlfX3Uz MglkX25zZWN0b3JzMjsJCS8qICMgb2YgZGF0YSBzZWN0b3JzIHBlciB0cmFj ayBhZ2FpbiA/ICovDQorCWNoYXIJZF9lbXB0eTJbNDBdOwkJLyogMCAqLw0K KwlfX3UzMglkX3Vua25vd24xOwkJLyogPyAoMHgwMDAwM0E5QykgKi8NCisJ X191MzIJZF91bmtub3duMjsJCS8qID8gKDB4MDAwMDAxM0MpICovDQorCV9f dTMyCWRfdW5rbm93bjM7CQkvKiA/ICgweDAwMDAzQzAwKSAqLw0KKwlfX3Uz MglkX3Vua25vd240OwkJLyogPyAoMHgwMDAwMDgwMCAyMDQ4KSAqLw0KKwlj aGFyCWRfZW1wdHkzWzU2XTsJCS8qIDAgKi8NCisJX191MzIJZF91bmtub3du NTsJCS8qID8gKDB4NzY2NURFRUUpICovDQorCV9fdTMyCWRfdW5rbm93bjY7 CQkvKiA/ICgweDAwMDAwMDA0IDQpICovDQorCWNoYXIJZF90eHRbOF07CQkv KiA/ICgvZGV2L3JkcykgKi8NCisJX191MzIJZF91bmtub3duNzsJCS8qIGNv bnRyb2xsZXIgPyBwcmkvc2VjID8gKDktU0NTSSxzZWM7MHgxMC1JREUscHJp KSAqLw0KKwljaGFyCWRfZW1wdHk0WzQwXTsJCS8qIDAgKi8NCisNCisJCS8q IHBhcnRpdGlvbiBpbmZvcm1hdGlvbjogKi8NCisJc3RydWN0IHVuaXh3YXJl X3NsaWNlcyB7CS8qIHRoZSBzbGljZXMgdGFibGUgKi8NCisJCV9fdTE2CXBf bGFiZWw7CS8qIGxhYmVsICovDQorCQlfX3UxNglwX2ZsYWdzOwkvKiBmbGFn cyAqLw0KKwkJX191MzIJcF9vZmZzZXQ7CS8qIHN0YXJ0aW5nIHNlY3RvciAq Lw0KKwkJX191MzIJcF9zaXplOwkJLyogbnVtYmVyIG9mIHNlY3RvcnMgaW4g c2xpY2UgKi8NCisgICAgICAgfSBkX3NsaWNlc1tVTklYV0FSRV9OVU1TTElD RV07DQorfTsNCisjZW5kaWYgLyogQ09ORklHX1VOSVhXQVJFX0RJU0tMQUJF TCAqLw0KKw0KIGV4dGVybiBzdHJ1Y3QgZ2VuZGlzayAqZ2VuZGlza19oZWFk OwkvKiBsaW5rZWQgbGlzdCBvZiBkaXNrcyAqLw0KIA0KIC8qDQo= --1975778710-931520688-885316395=:3357--