bin/142526: Cleanups and updates to newfs_msdos

Pedro F. Giffuni giffunip at tutopia.com
Sun Jan 17 21:00:16 UTC 2010


The following reply was made to PR bin/142526; it has been noted by GNATS.

From: "Pedro F. Giffuni" <giffunip at tutopia.com>
To: FreeBSD-gnats-submit at FreeBSD.org, freebsd-bugs at FreeBSD.org
Cc:  
Subject: Re: bin/142526: Cleanups and updates to newfs_msdos
Date: Sun, 17 Jan 2010 12:54:28 -0800 (PST)

 --0-96800579-1263761668=:91781
 Content-Type: text/plain; charset=us-ascii
 
 Yet another update:
 - Remove the MAXBPS warning, I have been convinced the limitation is a
 tactic to move people to other filesystems.
 - Update names in fields for directory access so we can use the same
 terminology and headers from the msdosfs.
 
 (I don't expect to add any new feature) 
 
 
       
 --0-96800579-1263761668=:91781
 Content-Type: application/octet-stream; name=patch-newfs_msdos
 Content-Transfer-Encoding: base64
 Content-Disposition: attachment; filename=patch-newfs_msdos
 
 ZGlmZiAtcnUgbmV3ZnNfbXNkb3Mub3JpZy9uZXdmc19tc2Rvcy44IG5ld2Zz
 X21zZG9zL25ld2ZzX21zZG9zLjgKLS0tIG5ld2ZzX21zZG9zLm9yaWcvbmV3
 ZnNfbXNkb3MuOAkyMDEwLTAxLTA2IDExOjA2OjAyLjAwMDAwMDAwMCArMDAw
 MAorKysgbmV3ZnNfbXNkb3MvbmV3ZnNfbXNkb3MuOAkyMDEwLTAxLTE2IDEw
 OjMxOjAwLjAwMDAwMDAwMCArMDAwMApAQCAtMzgsMTQgKzM4LDE0IEBACiAu
 T3AgRmwgQiBBciBib290CiAuT3AgRmwgQyBBciBjcmVhdGUtc2l6ZQogLk9w
 IEZsIEYgQXIgRkFULXR5cGUKLS5PcCBGbCBJIEFyIHZvbGlkCisuT3AgRmwg
 SSBBciBWb2x1bWVJZAogLk9wIEZsIEwgQXIgbGFiZWwKIC5PcCBGbCBPIEFy
 IE9FTQogLk9wIEZsIFMgQXIgc2VjdG9yLXNpemUKIC5PcCBGbCBhIEFyIEZB
 VC1zaXplCiAuT3AgRmwgYiBBciBibG9jay1zaXplCiAuT3AgRmwgYyBBciBj
 bHVzdGVyLXNpemUKLS5PcCBGbCBlIEFyIGRpcmVudHMKKy5PcCBGbCBlIEFy
 IERpckVudHMKIC5PcCBGbCBmIEFyIGZvcm1hdAogLk9wIEZsIGggQXIgaGVh
 ZHMKIC5PcCBGbCBpIEFyIGluZm8KQEAgLTEwMyw3ICsxMDMsNyBAQAogc21h
 bGxlciB0aGFuIHRoZSBzaXplIHNwZWNpZmllZCBhcyBwYXJhbWV0ZXIuCiAu
 SXQgRmwgRiBBciBGQVQtdHlwZQogRkFUIHR5cGUgKG9uZSBvZiAxMiwgMTYs
 IG9yIDMyKS4KLS5JdCBGbCBJIEFyIHZvbGlkCisuSXQgRmwgSSBBciBWb2x1
 bWVJRAogVm9sdW1lIElELCBhIDMyIGJpdCBudW1iZXIgaW4gZGVjaW1hbCBv
 ciBoZXhhZGVjaW1hbCAoMHguLi4pIGZvcm1hdC4KIC5JdCBGbCBMIEFyIGxh
 YmVsCiBWb2x1bWUgbGFiZWwgKHVwIHRvIDExIGNoYXJhY3RlcnMpLgpAQCAt
 MTE2LDcgKzExNiw3IEBACiAuSXQgRmwgUyBBciBzZWN0b3Itc2l6ZQogTnVt
 YmVyIG9mIGJ5dGVzIHBlciBzZWN0b3IuCiBBY2NlcHRhYmxlIHZhbHVlcyBh
 cmUgcG93ZXJzIG9mIDIKLWluIHRoZSByYW5nZSAxMjggdGhyb3VnaCAzMjc2
 OC4KK2luIHRoZSByYW5nZSA1MTIgdGhyb3VnaCAzMjc2OC4KIC5JdCBGbCBh
 IEFyIEZBVC1zaXplCiBOdW1iZXIgb2Ygc2VjdG9ycyBwZXIgRkFULgogLkl0
 IEZsIGIgQXIgYmxvY2stc2l6ZQpAQCAtMTMwLDcgKzEzMCw3IEBACiBJZiB0
 aGUgYmxvY2sgb3IgY2x1c3RlciBzaXplIGFyZSBub3Qgc3BlY2lmaWVkLCB0
 aGUgY29kZQogdXNlcyBhIGNsdXN0ZXIgYmV0d2VlbiA1MTIgYnl0ZXMgYW5k
 IDMySyBkZXBlbmRpbmcgb24KIHRoZSBmaWxlc3lzdGVtIHNpemUuCi0uSXQg
 RmwgZSBBciBkaXJlbnRzCisuSXQgRmwgZSBBciBEaXJFbnRzCiBOdW1iZXIg
 b2Ygcm9vdCBkaXJlY3RvcnkgZW50cmllcyAoRkFUMTIgYW5kIEZBVDE2IG9u
 bHkpLgogLkl0IEZsIGYgQXIgZm9ybWF0CiBTcGVjaWZ5IGEgc3RhbmRhcmQg
 KGZsb3BweSBkaXNrKSBmb3JtYXQuCmRpZmYgLXJ1IG5ld2ZzX21zZG9zLm9y
 aWcvbmV3ZnNfbXNkb3MuYyBuZXdmc19tc2Rvcy9uZXdmc19tc2Rvcy5jCi0t
 LSBuZXdmc19tc2Rvcy5vcmlnL25ld2ZzX21zZG9zLmMJMjAxMC0wMS0wNiAx
 MTowNjowMi4wMDAwMDAwMDAgKzAwMDAKKysrIG5ld2ZzX21zZG9zL25ld2Zz
 X21zZG9zLmMJMjAxMC0wMS0xNiAxMDoyMjowNy4wMDAwMDAwMDAgKzAwMDAK
 QEAgLTYyLDEyICs2MiwxMiBAQAogI2RlZmluZSBERUZCTEsxNiAgMjA0OAkJ
 LyogZGVmYXVsdCBibG9jayBzaXplIEZBVDE2ICovCiAjZGVmaW5lIERFRlJE
 RQkgIDUxMgkJLyogZGVmYXVsdCByb290IGRpcmVjdG9yeSBlbnRyaWVzICov
 CiAjZGVmaW5lIFJFU0ZURQkgIDIJCS8qIHJlc2VydmVkIEZBVCBlbnRyaWVz
 ICovCi0jZGVmaW5lIE1JTkNMUzEyICAxCQkvKiBtaW5pbXVtIEZBVDEyIGNs
 dXN0ZXJzICovCi0jZGVmaW5lIE1JTkNMUzE2ICAweDEwMDAJLyogbWluaW11
 bSBGQVQxNiBjbHVzdGVycyAqLwotI2RlZmluZSBNSU5DTFMzMiAgMgkJLyog
 bWluaW11bSBGQVQzMiBjbHVzdGVycyAqLwotI2RlZmluZSBNQVhDTFMxMiAg
 MHhmZWQgCS8qIG1heGltdW0gRkFUMTIgY2x1c3RlcnMgKi8KLSNkZWZpbmUg
 TUFYQ0xTMTYgIDB4ZmZmNQkvKiBtYXhpbXVtIEZBVDE2IGNsdXN0ZXJzICov
 Ci0jZGVmaW5lIE1BWENMUzMyICAweGZmZmZmZjUJLyogbWF4aW11bSBGQVQz
 MiBjbHVzdGVycyAqLworI2RlZmluZSBNSU5DTFMxMiAgMXUJCS8qIG1pbmlt
 dW0gRkFUMTIgY2x1c3RlcnMgKi8KKyNkZWZpbmUgTUlOQ0xTMTYgIDB4MTAw
 MHUJLyogbWluaW11bSBGQVQxNiBjbHVzdGVycyAqLworI2RlZmluZSBNSU5D
 TFMzMiAgMnUJCS8qIG1pbmltdW0gRkFUMzIgY2x1c3RlcnMgKi8KKyNkZWZp
 bmUgTUFYQ0xTMTIgIDB4ZmVkdSAJLyogbWF4aW11bSBGQVQxMiBjbHVzdGVy
 cyAqLworI2RlZmluZSBNQVhDTFMxNiAgMHhmZmY1dQkvKiBtYXhpbXVtIEZB
 VDE2IGNsdXN0ZXJzICovCisjZGVmaW5lIE1BWENMUzMyICAweGZmZmZmZjV1
 CS8qIG1heGltdW0gRkFUMzIgY2x1c3RlcnMgKi8KIAogI2RlZmluZSBtaW5j
 bHMoZmF0KSAgKChmYXQpID09IDEyID8gTUlOQ0xTMTIgOglcCiAJCSAgICAg
 IChmYXQpID09IDE2ID8gTUlOQ0xTMTYgOglcCkBAIC05NiwyMyArOTYsMjMg
 QEAKICNkZWZpbmUgYXJndG94KGFyZywgbG8sIG1zZykgIGFyZ3RvdShhcmcs
 IGxvLCBVSU5UX01BWCwgbXNnKQogCiBzdHJ1Y3QgYnMgewotICAgIHVfaW50
 OF90IGptcFszXTsJCS8qIGJvb3RzdHJhcCBlbnRyeSBwb2ludCAqLwotICAg
 IHVfaW50OF90IG9lbVs4XTsJCS8qIE9FTSBuYW1lIGFuZCB2ZXJzaW9uICov
 CisgICAgdV9pbnQ4X3QgYnNKdW1wWzNdOwkJLyogYm9vdHN0cmFwIGVudHJ5
 IHBvaW50ICovCisgICAgdV9pbnQ4X3QgYnNPZW1OYW1lWzhdOwkJLyogT0VN
 IG5hbWUgYW5kIHZlcnNpb24gKi8KIH07CiAKIHN0cnVjdCBic2JwYiB7Ci0g
 ICAgdV9pbnQ4X3QgYnBzWzJdOwkJLyogYnl0ZXMgcGVyIHNlY3RvciAqLwot
 ICAgIHVfaW50OF90IHNwYzsJCS8qIHNlY3RvcnMgcGVyIGNsdXN0ZXIgKi8K
 LSAgICB1X2ludDhfdCByZXNbMl07CQkvKiByZXNlcnZlZCBzZWN0b3JzICov
 Ci0gICAgdV9pbnQ4X3QgbmZ0OwkJLyogbnVtYmVyIG9mIEZBVHMgKi8KLSAg
 ICB1X2ludDhfdCByZGVbMl07CQkvKiByb290IGRpcmVjdG9yeSBlbnRyaWVz
 ICovCi0gICAgdV9pbnQ4X3Qgc2VjWzJdOwkJLyogdG90YWwgc2VjdG9ycyAq
 LwotICAgIHVfaW50OF90IG1pZDsJCS8qIG1lZGlhIGRlc2NyaXB0b3IgKi8K
 LSAgICB1X2ludDhfdCBzcGZbMl07CQkvKiBzZWN0b3JzIHBlciBGQVQgKi8K
 LSAgICB1X2ludDhfdCBzcHRbMl07CQkvKiBzZWN0b3JzIHBlciB0cmFjayAq
 LwotICAgIHVfaW50OF90IGhkc1syXTsJCS8qIGRyaXZlIGhlYWRzICovCi0g
 ICAgdV9pbnQ4X3QgaGlkWzRdOwkJLyogaGlkZGVuIHNlY3RvcnMgKi8KLSAg
 ICB1X2ludDhfdCBic2VjWzRdOwkJLyogYmlnIHRvdGFsIHNlY3RvcnMgKi8K
 KyAgICB1X2ludDhfdCBicGJCeXRlc1BlclNlY1syXTsJCS8qIGJ5dGVzIHBl
 ciBzZWN0b3IgKi8KKyAgICB1X2ludDhfdCBicGJTZWNQZXJDbHVzdDsJCS8q
 IHNlY3RvcnMgcGVyIGNsdXN0ZXIgKi8KKyAgICB1X2ludDhfdCBicGJSZXNT
 ZWN0b3JzWzJdOwkJLyogcmVzZXJ2ZWQgc2VjdG9ycyAqLworICAgIHVfaW50
 OF90IGJwYkZBVHM7CQkJLyogbnVtYmVyIG9mIEZBVHMgKi8KKyAgICB1X2lu
 dDhfdCBicGJSb290RGlyRW50c1syXTsJCS8qIHJvb3QgZGlyZWN0b3J5IGVu
 dHJpZXMgKi8KKyAgICB1X2ludDhfdCBicGJTZWN0b3JzWzJdOwkJLyogdG90
 YWwgc2VjdG9ycyAqLworICAgIHVfaW50OF90IGJwYk1lZGlhOwkJCS8qIG1l
 ZGlhIGRlc2NyaXB0b3IgKi8KKyAgICB1X2ludDhfdCBicGJGQVRzZWNzWzJd
 OwkJLyogc2VjdG9ycyBwZXIgRkFUICovCisgICAgdV9pbnQ4X3QgYnBiU2Vj
 UGVyVHJhY2tbMl07CQkvKiBzZWN0b3JzIHBlciB0cmFjayAqLworICAgIHVf
 aW50OF90IGJwYkhlYWRzWzJdOwkJLyogZHJpdmUgaGVhZHMgKi8KKyAgICB1
 X2ludDhfdCBicGJIaWRkZW5TZWNzWzRdOwkJLyogaGlkZGVuIHNlY3RvcnMg
 Ki8KKyAgICB1X2ludDhfdCBicGJIdWdlU2VjdG9yc1s0XTsJCS8qIGJpZyB0
 b3RhbCBzZWN0b3JzICovCiB9OwogCiBzdHJ1Y3QgYnN4YnBiIHsKQEAgLTEy
 Miw2MyArMTIyLDY3IEBACiAgICAgdV9pbnQ4X3QgcmRjbFs0XTsJCS8qIHJv
 b3QgZGlyZWN0b3J5IHN0YXJ0IGNsdXN0ZXIgKi8KICAgICB1X2ludDhfdCBp
 bmZzWzJdOwkJLyogZmlsZSBzeXN0ZW0gaW5mbyBzZWN0b3IgKi8KICAgICB1
 X2ludDhfdCBia2JzWzJdOwkJLyogYmFja3VwIGJvb3Qgc2VjdG9yICovCi0g
 ICAgdV9pbnQ4X3QgcnN2ZFsxMl07CQkvKiByZXNlcnZlZCAqLworICAgIHVf
 aW50OF90IHJzdmRbMTJdOwkJCS8qIHJlc2VydmVkICovCiB9OwogCiBzdHJ1
 Y3QgYnN4IHsKLSAgICB1X2ludDhfdCBkcnY7CQkvKiBkcml2ZSBudW1iZXIg
 Ki8KLSAgICB1X2ludDhfdCByc3ZkOwkJLyogcmVzZXJ2ZWQgKi8KLSAgICB1
 X2ludDhfdCBzaWc7CQkvKiBleHRlbmRlZCBib290IHNpZ25hdHVyZSAqLwot
 ICAgIHVfaW50OF90IHZvbGlkWzRdOwkJLyogdm9sdW1lIElEIG51bWJlciAq
 LwotICAgIHVfaW50OF90IGxhYmVsWzExXTsgCS8qIHZvbHVtZSBsYWJlbCAq
 LwotICAgIHVfaW50OF90IHR5cGVbOF07CQkvKiBmaWxlIHN5c3RlbSB0eXBl
 ICovCisgICAgdV9pbnQ4X3QgZXhEcml2ZU51bWJlcjsJCS8qIGRyaXZlIG51
 bWJlciAqLworICAgIHVfaW50OF90IGV4UmVzZXJ2ZWQxOwkJLyogcmVzZXJ2
 ZWQgKi8KKyAgICB1X2ludDhfdCBleEJvb3RTaWduYXR1cmU7CQkvKiBleHRl
 bmRlZCBib290IHNpZ25hdHVyZSAqLworICAgIHVfaW50OF90IGV4Vm9sdW1l
 SURbNF07CQkvKiB2b2x1bWUgSUQgbnVtYmVyICovCisgICAgdV9pbnQ4X3Qg
 ZXhWb2x1bWVMYWJlbFsxMV07IAkvKiB2b2x1bWUgbGFiZWwgKi8KKyAgICB1
 X2ludDhfdCBleEZpbGVTeXNUeXBlWzhdOwkJLyogZmlsZSBzeXN0ZW0gdHlw
 ZSAqLwogfTsKIAogc3RydWN0IGRlIHsKLSAgICB1X2ludDhfdCBuYW1leHRb
 MTFdOwkvKiBuYW1lIGFuZCBleHRlbnNpb24gKi8KLSAgICB1X2ludDhfdCBh
 dHRyOwkJLyogYXR0cmlidXRlcyAqLworICAgIHVfaW50OF90IGRlTmFtZVsx
 MV07CS8qIG5hbWUgYW5kIGV4dGVuc2lvbiAqLworICAgIHVfaW50OF90IGRl
 QXR0cmlidXRlczsJLyogYXR0cmlidXRlcyAqLwogICAgIHVfaW50OF90IHJz
 dmRbMTBdOwkJLyogcmVzZXJ2ZWQgKi8KLSAgICB1X2ludDhfdCB0aW1lWzJd
 OwkJLyogY3JlYXRpb24gdGltZSAqLwotICAgIHVfaW50OF90IGRhdGVbMl07
 CQkvKiBjcmVhdGlvbiBkYXRlICovCi0gICAgdV9pbnQ4X3QgY2x1c1syXTsJ
 CS8qIHN0YXJ0aW5nIGNsdXN0ZXIgKi8KLSAgICB1X2ludDhfdCBzaXplWzRd
 OwkJLyogc2l6ZSAqLworICAgIHVfaW50OF90IGRlQ1RpbWVbMl07CS8qIGNy
 ZWF0aW9uIHRpbWUgKi8KKyAgICB1X2ludDhfdCBkZUNEYXRlWzJdOwkvKiBj
 cmVhdGlvbiBkYXRlICovCisgICAgdV9pbnQ4X3QgZGVTdGFydENsdXN0ZXJb
 Ml07CS8qIHN0YXJ0aW5nIGNsdXN0ZXIgKi8KKyAgICB1X2ludDhfdCBkZUZp
 bGVTaXplWzRdOwkvKiBzaXplICovCiB9OwogCiBzdHJ1Y3QgYnBiIHsKLSAg
 ICB1X2ludCBicHM7CQkJLyogYnl0ZXMgcGVyIHNlY3RvciAqLwotICAgIHVf
 aW50IHNwYzsJCQkvKiBzZWN0b3JzIHBlciBjbHVzdGVyICovCi0gICAgdV9p
 bnQgcmVzOwkJCS8qIHJlc2VydmVkIHNlY3RvcnMgKi8KLSAgICB1X2ludCBu
 ZnQ7CQkJLyogbnVtYmVyIG9mIEZBVHMgKi8KLSAgICB1X2ludCByZGU7CQkJ
 Lyogcm9vdCBkaXJlY3RvcnkgZW50cmllcyAqLwotICAgIHVfaW50IHNlYzsJ
 CQkvKiB0b3RhbCBzZWN0b3JzICovCi0gICAgdV9pbnQgbWlkOwkJCS8qIG1l
 ZGlhIGRlc2NyaXB0b3IgKi8KLSAgICB1X2ludCBzcGY7CQkJLyogc2VjdG9y
 cyBwZXIgRkFUICovCi0gICAgdV9pbnQgc3B0OwkJCS8qIHNlY3RvcnMgcGVy
 IHRyYWNrICovCi0gICAgdV9pbnQgaGRzOwkJCS8qIGRyaXZlIGhlYWRzICov
 Ci0gICAgdV9pbnQgaGlkOwkJCS8qIGhpZGRlbiBzZWN0b3JzICovCi0gICAg
 dV9pbnQgYnNlYzsgCQkvKiBiaWcgdG90YWwgc2VjdG9ycyAqLwotICAgIHVf
 aW50IGJzcGY7IAkJLyogYmlnIHNlY3RvcnMgcGVyIEZBVCAqLwotICAgIHVf
 aW50IHJkY2w7IAkJLyogcm9vdCBkaXJlY3Rvcnkgc3RhcnQgY2x1c3RlciAq
 LwotICAgIHVfaW50IGluZnM7IAkJLyogZmlsZSBzeXN0ZW0gaW5mbyBzZWN0
 b3IgKi8KLSAgICB1X2ludCBia2JzOyAJCS8qIGJhY2t1cCBib290IHNlY3Rv
 ciAqLworICAgIHVfaW50IGJwYkJ5dGVzUGVyU2VjOwkJLyogYnl0ZXMgcGVy
 IHNlY3RvciAqLworICAgIHVfaW50IGJwYlNlY1BlckNsdXN0OwkJLyogc2Vj
 dG9ycyBwZXIgY2x1c3RlciAqLworICAgIHVfaW50IGJwYlJlc1NlY3RvcnM7
 CQkvKiByZXNlcnZlZCBzZWN0b3JzICovCisgICAgdV9pbnQgYnBiRkFUczsJ
 CQkvKiBudW1iZXIgb2YgRkFUcyAqLworICAgIHVfaW50IGJwYlJvb3REaXJF
 bnRzOwkJLyogcm9vdCBkaXJlY3RvcnkgZW50cmllcyAqLworICAgIHVfaW50
 IGJwYlNlY3RvcnM7CQkJLyogdG90YWwgc2VjdG9ycyAqLworICAgIHVfaW50
 IGJwYk1lZGlhOwkJCS8qIG1lZGlhIGRlc2NyaXB0b3IgKi8KKyAgICB1X2lu
 dCBicGJGQVRzZWNzOwkJCS8qIHNlY3RvcnMgcGVyIEZBVCAqLworICAgIHVf
 aW50IGJwYlNlY1BlclRyYWNrOwkJLyogc2VjdG9ycyBwZXIgdHJhY2sgKi8K
 KyAgICB1X2ludCBicGJIZWFkczsJCQkvKiBkcml2ZSBoZWFkcyAqLworICAg
 IHVfaW50IGJwYkhpZGRlblNlY3M7CQkvKiBoaWRkZW4gc2VjdG9ycyAqLwor
 ICAgIHVfaW50IGJwYkh1Z2VTZWN0b3JzOyAJCS8qIGJpZyB0b3RhbCBzZWN0
 b3JzICovCisgICAgdV9pbnQgYnBiQmlnRkFUc2VjczsgCQkvKiBiaWcgc2Vj
 dG9ycyBwZXIgRkFUICovCisvKiBYWFg6IE1pc3NpbmcgRVhURmxhZ3MgRlNW
 ZXJzICovCisgICAgdV9pbnQgYnBiUm9vdENsdXN0OyAJCS8qIHJvb3QgZGly
 ZWN0b3J5IHN0YXJ0IGNsdXN0ZXIgKi8KKyAgICB1X2ludCBicGJGU0luZm87
 IAkJLyogZmlsZSBzeXN0ZW0gaW5mbyBzZWN0b3IgKi8KKyAgICB1X2ludCBi
 cGJCYWNrdXA7IAkJLyogYmFja3VwIGJvb3Qgc2VjdG9yICovCiB9OwogCiAj
 ZGVmaW5lIEJQQkdBUCAwLCAwLCAwLCAwLCAwLCAwCiAKKyNkZWZpbmUgSU5J
 VChhLCBiLCBjLCBkLCBlLCBmLCBnLCBoLCBpLCBqKSBcCisgICAgeyAuYnBi
 Qnl0ZXNQZXJTZWMgPSBhLCAuYnBiU2VjUGVyQ2x1c3QgPSBiLCAuYnBiUmVz
 U2VjdG9ycyA9IGMsIC5icGJGQVRzID0gZCwgLmJwYlJvb3REaXJFbnRzID0g
 ZSwgXAorICAgICAgLmJwYlNlY3RvcnMgPSBmLCAuYnBiTWVkaWEgPSBnLCAu
 YnBiRkFUc2VjcyA9IGgsIC5icGJTZWNQZXJUcmFjayA9IGksIC5icGJIZWFk
 cyA9IGosIH0KIHN0YXRpYyBzdHJ1Y3QgewogICAgIGNvbnN0IGNoYXIgKm5h
 bWU7CiAgICAgc3RydWN0IGJwYiBicGI7CiB9IGNvbnN0IHN0ZGZtdFtdID0g
 ewotICAgIHsiMTYwIiwgIHs1MTIsIDEsIDEsIDIsICA2NCwgIDMyMCwgMHhm
 ZSwgMSwgIDgsIDEsIEJQQkdBUH19LAotICAgIHsiMTgwIiwgIHs1MTIsIDEs
 IDEsIDIsICA2NCwgIDM2MCwgMHhmYywgMiwgIDksIDEsIEJQQkdBUH19LAot
 ICAgIHsiMzIwIiwgIHs1MTIsIDIsIDEsIDIsIDExMiwgIDY0MCwgMHhmZiwg
 MSwgIDgsIDIsIEJQQkdBUH19LAotICAgIHsiMzYwIiwgIHs1MTIsIDIsIDEs
 IDIsIDExMiwgIDcyMCwgMHhmZCwgMiwgIDksIDIsIEJQQkdBUH19LAotICAg
 IHsiNjQwIiwgIHs1MTIsIDIsIDEsIDIsIDExMiwgMTI4MCwgMHhmYiwgMiwg
 IDgsIDIsIEJQQkdBUH19LCAgICAKLSAgICB7IjcyMCIsICB7NTEyLCAyLCAx
 LCAyLCAxMTIsIDE0NDAsIDB4ZjksIDMsICA5LCAyLCBCUEJHQVB9fSwKLSAg
 ICB7IjEyMDAiLCB7NTEyLCAxLCAxLCAyLCAyMjQsIDI0MDAsIDB4ZjksIDcs
 IDE1LCAyLCBCUEJHQVB9fSwKLSAgICB7IjEyMzIiLCB7MTAyNCwxLCAxLCAy
 LCAxOTIsIDEyMzIsIDB4ZmUsIDIsICA4LCAyLCBCUEJHQVB9fSwgICAgCi0g
 ICAgeyIxNDQwIiwgezUxMiwgMSwgMSwgMiwgMjI0LCAyODgwLCAweGYwLCA5
 LCAxOCwgMiwgQlBCR0FQfX0sCi0gICAgeyIyODgwIiwgezUxMiwgMiwgMSwg
 MiwgMjQwLCA1NzYwLCAweGYwLCA5LCAzNiwgMiwgQlBCR0FQfX0KKyAgICB7
 IjE2MCIsICBJTklUKDUxMiwgMSwgMSwgMiwgIDY0LCAgMzIwLCAweGZlLCAx
 LCAgOCwgMSl9LAorICAgIHsiMTgwIiwgIElOSVQoNTEyLCAxLCAxLCAyLCAg
 NjQsICAzNjAsIDB4ZmMsIDIsICA5LCAxKX0sCisgICAgeyIzMjAiLCAgSU5J
 VCg1MTIsIDIsIDEsIDIsIDExMiwgIDY0MCwgMHhmZiwgMSwgIDgsIDIpfSwK
 KyAgICB7IjM2MCIsICBJTklUKDUxMiwgMiwgMSwgMiwgMTEyLCAgNzIwLCAw
 eGZkLCAyLCAgOSwgMil9LAorICAgIHsiNjQwIiwgIElOSVQoNTEyLCAyLCAx
 LCAyLCAxMTIsIDEyODAsIDB4ZmIsIDIsICA4LCAyKX0sICAgIAorICAgIHsi
 NzIwIiwgIElOSVQoNTEyLCAyLCAxLCAyLCAxMTIsIDE0NDAsIDB4ZjksIDMs
 ICA5LCAyKX0sCisgICAgeyIxMjAwIiwgSU5JVCg1MTIsIDEsIDEsIDIsIDIy
 NCwgMjQwMCwgMHhmOSwgNywgMTUsIDIpfSwKKyAgICB7IjEyMzIiLCBJTklU
 KDEwMjQsMSwgMSwgMiwgMTkyLCAxMjMyLCAweGZlLCAyLCAgOCwgMil9LCAg
 ICAKKyAgICB7IjE0NDAiLCBJTklUKDUxMiwgMSwgMSwgMiwgMjI0LCAyODgw
 LCAweGYwLCA5LCAxOCwgMil9LAorICAgIHsiMjg4MCIsIElOSVQoNTEyLCAy
 LCAxLCAyLCAyNDAsIDU3NjAsIDB4ZjAsIDksIDM2LCAyKX0KIH07CiAKIHN0
 YXRpYyBjb25zdCB1X2ludDhfdCBib290Y29kZVtdID0gewpAQCAtMzgxLDQ5
 ICszODUsNDkgQEAKICAgICBtZW1zZXQoJmJwYiwgMCwgc2l6ZW9mKGJwYikp
 OwogICAgIGlmIChvcHRfZikgewogCWdldHN0ZGZtdChvcHRfZiwgJmJwYik7
 Ci0JYnBiLmJzZWMgPSBicGIuc2VjOwotCWJwYi5zZWMgPSAwOwotCWJwYi5i
 c3BmID0gYnBiLnNwZjsKLQlicGIuc3BmID0gMDsKKwlicGIuYnBiSHVnZVNl
 Y3RvcnMgPSBicGIuYnBiU2VjdG9yczsKKwlicGIuYnBiU2VjdG9ycyA9IDA7
 CisJYnBiLmJwYkJpZ0ZBVHNlY3MgPSBicGIuYnBiRkFUc2VjczsKKwlicGIu
 YnBiRkFUc2VjcyA9IDA7CiAgICAgfQogICAgIGlmIChvcHRfaCkKLQlicGIu
 aGRzID0gb3B0X2g7CisJYnBiLmJwYkhlYWRzID0gb3B0X2g7CiAgICAgaWYg
 KG9wdF91KQotCWJwYi5zcHQgPSBvcHRfdTsKKwlicGIuYnBiU2VjUGVyVHJh
 Y2sgPSBvcHRfdTsKICAgICBpZiAob3B0X1MpCi0JYnBiLmJwcyA9IG9wdF9T
 OworCWJwYi5icGJCeXRlc1BlclNlYyA9IG9wdF9TOwogICAgIGlmIChvcHRf
 cykKLQlicGIuYnNlYyA9IG9wdF9zOworCWJwYi5icGJIdWdlU2VjdG9ycyA9
 IG9wdF9zOwogICAgIGlmIChvZmxhZykKLQlicGIuaGlkID0gb3B0X287CisJ
 YnBiLmJwYkhpZGRlblNlY3MgPSBvcHRfbzsKICAgICBpZiAoIShvcHRfZiB8
 fCAob3B0X2ggJiYgb3B0X3UgJiYgb3B0X1MgJiYgb3B0X3MgJiYgb2ZsYWcp
 KSkgewogCW9mZl90IGRlbHRhOwogCWdldGRpc2tpbmZvKGZkLCBmbmFtZSwg
 ZHR5cGUsIG9mbGFnLCAmYnBiKTsKLQlicGIuYnNlYyAtPSAob3B0X29mcyAv
 IGJwYi5icHMpOwotCWRlbHRhID0gYnBiLmJzZWMgJSBicGIuc3B0OworCWJw
 Yi5icGJIdWdlU2VjdG9ycyAtPSAob3B0X29mcyAvIGJwYi5icGJCeXRlc1Bl
 clNlYyk7CisJZGVsdGEgPSBicGIuYnBiSHVnZVNlY3RvcnMgJSBicGIuYnBi
 U2VjUGVyVHJhY2s7CiAJaWYgKGRlbHRhICE9IDApIHsKIAkgICAgd2Fybngo
 InRyaW0gJWQgc2VjdG9ycyB0byBhZGp1c3QgdG8gYSBtdWx0aXBsZSBvZiAl
 ZCIsCi0JCShpbnQpZGVsdGEsIGJwYi5zcHQpOwotCSAgICBicGIuYnNlYyAt
 PSBkZWx0YTsKKwkJKGludClkZWx0YSwgYnBiLmJwYlNlY1BlclRyYWNrKTsK
 KwkgICAgYnBiLmJwYkh1Z2VTZWN0b3JzIC09IGRlbHRhOwogCX0KLQlpZiAo
 YnBiLnNwYyA9PSAwKSB7CS8qIHNldCBkZWZhdWx0cyAqLwotCSAgICBpZiAo
 YnBiLmJzZWMgPD0gNjAwMCkJLyogYWJvdXQgM01CIC0+IDUxMiBieXRlcyAq
 LwotCQlicGIuc3BjID0gMTsKLQkgICAgZWxzZSBpZiAoYnBiLmJzZWMgPD0g
 KDE8PDE3KSkgLyogNjRNIC0+IDRrICovCi0JCWJwYi5zcGMgPSA4OwotCSAg
 ICBlbHNlIGlmIChicGIuYnNlYyA8PSAoMTw8MTkpKSAvKiAyNTZNIC0+IDhr
 ICovCi0JCWJwYi5zcGMgPSAxNjsKLQkgICAgZWxzZSBpZiAoYnBiLmJzZWMg
 PD0gKDE8PDIxKSkgLyogMUcgLT4gMTZrICovCi0JCWJwYi5zcGMgPSAzMjsK
 KwlpZiAoYnBiLmJwYlNlY1BlckNsdXN0ID09IDApIHsJLyogc2V0IGRlZmF1
 bHRzICovCisJICAgIGlmIChicGIuYnBiSHVnZVNlY3RvcnMgPD0gNjAwMCkJ
 LyogYWJvdXQgM01CIC0+IDUxMiBieXRlcyAqLworCQlicGIuYnBiU2VjUGVy
 Q2x1c3QgPSAxOworCSAgICBlbHNlIGlmIChicGIuYnBiSHVnZVNlY3RvcnMg
 PD0gKDE8PDE3KSkgLyogNjRNIC0+IDRrICovCisJCWJwYi5icGJTZWNQZXJD
 bHVzdCA9IDg7CisJICAgIGVsc2UgaWYgKGJwYi5icGJIdWdlU2VjdG9ycyA8
 PSAoMTw8MTkpKSAvKiAyNTZNIC0+IDhrICovCisJCWJwYi5icGJTZWNQZXJD
 bHVzdCA9IDE2OworCSAgICBlbHNlIGlmIChicGIuYnBiSHVnZVNlY3RvcnMg
 PD0gKDE8PDIxKSkgLyogMUcgLT4gMTZrICovCisJCWJwYi5icGJTZWNQZXJD
 bHVzdCA9IDMyOwogCSAgICBlbHNlCi0JCWJwYi5zcGMgPSA2NDsJCS8qIG90
 aGVyd2lzZSAzMmsgKi8KKwkJYnBiLmJwYlNlY1BlckNsdXN0ID0gNjQ7CQkv
 KiBvdGhlcndpc2UgMzJrICovCiAJfQogICAgIH0KLSAgICBpZiAoIXBvd2Vy
 b2YyKGJwYi5icHMpKQotCWVycngoMSwgImJ5dGVzL3NlY3RvciAoJXUpIGlz
 IG5vdCBhIHBvd2VyIG9mIDIiLCBicGIuYnBzKTsKLSAgICBpZiAoYnBiLmJw
 cyA8IE1JTkJQUykKKyAgICBpZiAoIXBvd2Vyb2YyKGJwYi5icGJCeXRlc1Bl
 clNlYykpCisJZXJyeCgxLCAiYnl0ZXMvc2VjdG9yICgldSkgaXMgbm90IGEg
 cG93ZXIgb2YgMiIsIGJwYi5icGJCeXRlc1BlclNlYyk7CisgICAgaWYgKGJw
 Yi5icGJCeXRlc1BlclNlYyA8IE1JTkJQUykKIAllcnJ4KDEsICJieXRlcy9z
 ZWN0b3IgKCV1KSBpcyB0b28gc21hbGw7IG1pbmltdW0gaXMgJXUiLAotCSAg
 ICAgYnBiLmJwcywgTUlOQlBTKTsKKwkgICAgIGJwYi5icGJCeXRlc1BlclNl
 YywgTUlOQlBTKTsKICAgICBpZiAoIShmYXQgPSBvcHRfRikpIHsKIAlpZiAo
 b3B0X2YpCiAJICAgIGZhdCA9IDEyOwpAQCAtNDM1LDQ0ICs0MzksNDQgQEAK
 IAkgICAgIGZhdCA9PSAzMiA/ICdlJyA6IG9wdF9pID8gJ2knIDogJ2snLAog
 CSAgICAgZmF0ID09IDMyID8gIjMyIiA6ICIxMi8xNiIpOwogICAgIGlmIChv
 cHRfZiAmJiBmYXQgPT0gMzIpCi0JYnBiLnJkZSA9IDA7CisJYnBiLmJwYlJv
 b3REaXJFbnRzID0gMDsKICAgICBpZiAob3B0X2IpIHsKIAlpZiAoIXBvd2Vy
 b2YyKG9wdF9iKSkKIAkgICAgZXJyeCgxLCAiYmxvY2sgc2l6ZSAoJXUpIGlz
 IG5vdCBhIHBvd2VyIG9mIDIiLCBvcHRfYik7Ci0JaWYgKG9wdF9iIDwgYnBi
 LmJwcykKKwlpZiAob3B0X2IgPCBicGIuYnBiQnl0ZXNQZXJTZWMpCiAJICAg
 IGVycngoMSwgImJsb2NrIHNpemUgKCV1KSBpcyB0b28gc21hbGw7IG1pbmlt
 dW0gaXMgJXUiLAotCQkgb3B0X2IsIGJwYi5icHMpOwotCWlmIChvcHRfYiA+
 IGJwYi5icHMgKiBNQVhTUEMpCisJCSBvcHRfYiwgYnBiLmJwYkJ5dGVzUGVy
 U2VjKTsKKwlpZiAob3B0X2IgPiBicGIuYnBiQnl0ZXNQZXJTZWMgKiBNQVhT
 UEMpCiAJICAgIGVycngoMSwgImJsb2NrIHNpemUgKCV1KSBpcyB0b28gbGFy
 Z2U7IG1heGltdW0gaXMgJXUiLAotCQkgb3B0X2IsIGJwYi5icHMgKiBNQVhT
 UEMpOwotCWJwYi5zcGMgPSBvcHRfYiAvIGJwYi5icHM7CisJCSBvcHRfYiwg
 YnBiLmJwYkJ5dGVzUGVyU2VjICogTUFYU1BDKTsKKwlicGIuYnBiU2VjUGVy
 Q2x1c3QgPSBvcHRfYiAvIGJwYi5icGJCeXRlc1BlclNlYzsKICAgICB9CiAg
 ICAgaWYgKG9wdF9jKSB7CiAJaWYgKCFwb3dlcm9mMihvcHRfYykpCiAJICAg
 IGVycngoMSwgInNlY3RvcnMvY2x1c3RlciAoJXUpIGlzIG5vdCBhIHBvd2Vy
 IG9mIDIiLCBvcHRfYyk7Ci0JYnBiLnNwYyA9IG9wdF9jOworCWJwYi5icGJT
 ZWNQZXJDbHVzdCA9IG9wdF9jOwogICAgIH0KICAgICBpZiAob3B0X3IpCi0J
 YnBiLnJlcyA9IG9wdF9yOworCWJwYi5icGJSZXNTZWN0b3JzID0gb3B0X3I7
 CiAgICAgaWYgKG9wdF9uKSB7CiAJaWYgKG9wdF9uID4gTUFYTkZUKQogCSAg
 ICBlcnJ4KDEsICJudW1iZXIgb2YgRkFUcyAoJXUpIGlzIHRvbyBsYXJnZTsg
 bWF4aW11bSBpcyAldSIsCiAJCSBvcHRfbiwgTUFYTkZUKTsKLQlicGIubmZ0
 ID0gb3B0X247CisJYnBiLmJwYkZBVHMgPSBvcHRfbjsKICAgICB9CiAgICAg
 aWYgKG9wdF9lKQotCWJwYi5yZGUgPSBvcHRfZTsKKwlicGIuYnBiUm9vdERp
 ckVudHMgPSBvcHRfZTsKICAgICBpZiAobWZsYWcpIHsKIAlpZiAob3B0X20g
 PCAweGYwKQogCSAgICBlcnJ4KDEsICJpbGxlZ2FsIG1lZGlhIGRlc2NyaXB0
 b3IgKCUjeCkiLCBvcHRfbSk7Ci0JYnBiLm1pZCA9IG9wdF9tOworCWJwYi5i
 cGJNZWRpYSA9IG9wdF9tOwogICAgIH0KICAgICBpZiAob3B0X2EpCi0JYnBi
 LmJzcGYgPSBvcHRfYTsKKwlicGIuYnBiQmlnRkFUc2VjcyA9IG9wdF9hOwog
 ICAgIGlmIChvcHRfaSkKLQlicGIuaW5mcyA9IG9wdF9pOworCWJwYi5icGJG
 U0luZm8gPSBvcHRfaTsKICAgICBpZiAob3B0X2spCi0JYnBiLmJrYnMgPSBv
 cHRfazsKKwlicGIuYnBiQmFja3VwID0gb3B0X2s7CiAgICAgYnNzID0gMTsK
 ICAgICBibmFtZSA9IE5VTEw7CiAgICAgZmQxID0gLTE7CkBAIC00ODUsODcg
 KzQ4OSw4NyBAQAogCX0KIAlpZiAoKGZkMSA9IG9wZW4oYm5hbWUsIE9fUkRP
 TkxZKSkgPT0gLTEgfHwgZnN0YXQoZmQxLCAmc2IpKQogCSAgICBlcnIoMSwg
 IiVzIiwgYm5hbWUpOwotCWlmICghU19JU1JFRyhzYi5zdF9tb2RlKSB8fCBz
 Yi5zdF9zaXplICUgYnBiLmJwcyB8fAotCSAgICBzYi5zdF9zaXplIDwgYnBi
 LmJwcyB8fCBzYi5zdF9zaXplID4gYnBiLmJwcyAqIE1BWFUxNikKKwlpZiAo
 IVNfSVNSRUcoc2Iuc3RfbW9kZSkgfHwgc2Iuc3Rfc2l6ZSAlIGJwYi5icGJC
 eXRlc1BlclNlYyB8fAorCSAgICBzYi5zdF9zaXplIDwgYnBiLmJwYkJ5dGVz
 UGVyU2VjIHx8IHNiLnN0X3NpemUgPiBicGIuYnBiQnl0ZXNQZXJTZWMgKiBN
 QVhVMTYpCiAJICAgIGVycngoMSwgIiVzOiBpbmFwcHJvcHJpYXRlIGZpbGUg
 dHlwZSBvciBmb3JtYXQiLCBibmFtZSk7Ci0JYnNzID0gc2Iuc3Rfc2l6ZSAv
 IGJwYi5icHM7CisJYnNzID0gc2Iuc3Rfc2l6ZSAvIGJwYi5icGJCeXRlc1Bl
 clNlYzsKICAgICB9Ci0gICAgaWYgKCFicGIubmZ0KQotCWJwYi5uZnQgPSAy
 OworICAgIGlmICghYnBiLmJwYkZBVHMpCisJYnBiLmJwYkZBVHMgPSAyOwog
 ICAgIGlmICghZmF0KSB7Ci0JaWYgKGJwYi5ic2VjIDwgKGJwYi5yZXMgPyBi
 cGIucmVzIDogYnNzKSArCi0JICAgIGhvd21hbnkoKFJFU0ZURSArIChicGIu
 c3BjID8gTUlOQ0xTMTYgOiBNQVhDTFMxMiArIDEpKSAqCi0JCSAgICAoKGJw
 Yi5zcGMgPyAxNiA6IDEyKSAvIEJQTiksIGJwYi5icHMgKiBOUEIpICoKLQkg
 ICAgYnBiLm5mdCArCi0JICAgIGhvd21hbnkoYnBiLnJkZSA/IGJwYi5yZGUg
 OiBERUZSREUsCi0JCSAgICBicGIuYnBzIC8gc2l6ZW9mKHN0cnVjdCBkZSkp
 ICsKLQkgICAgKGJwYi5zcGMgPyBNSU5DTFMxNiA6IE1BWENMUzEyICsgMSkg
 KgotCSAgICAoYnBiLnNwYyA/IGJwYi5zcGMgOiBob3dtYW55KERFRkJMSywg
 YnBiLmJwcykpKQorCWlmIChicGIuYnBiSHVnZVNlY3RvcnMgPCAoYnBiLmJw
 YlJlc1NlY3RvcnMgPyBicGIuYnBiUmVzU2VjdG9ycyA6IGJzcykgKworCSAg
 ICBob3dtYW55KChSRVNGVEUgKyAoYnBiLmJwYlNlY1BlckNsdXN0ID8gTUlO
 Q0xTMTYgOiBNQVhDTFMxMiArIDEpKSAqCisJCSAgICAoKGJwYi5icGJTZWNQ
 ZXJDbHVzdCA/IDE2IDogMTIpIC8gQlBOKSwgYnBiLmJwYkJ5dGVzUGVyU2Vj
 ICogTlBCKSAqCisJICAgIGJwYi5icGJGQVRzICsKKwkgICAgaG93bWFueShi
 cGIuYnBiUm9vdERpckVudHMgPyBicGIuYnBiUm9vdERpckVudHMgOiBERUZS
 REUsCisJCSAgICBicGIuYnBiQnl0ZXNQZXJTZWMgLyBzaXplb2Yoc3RydWN0
 IGRlKSkgKworCSAgICAoYnBiLmJwYlNlY1BlckNsdXN0ID8gTUlOQ0xTMTYg
 OiBNQVhDTFMxMiArIDEpICoKKwkgICAgKGJwYi5icGJTZWNQZXJDbHVzdCA/
 IGJwYi5icGJTZWNQZXJDbHVzdCA6IGhvd21hbnkoREVGQkxLLCBicGIuYnBi
 Qnl0ZXNQZXJTZWMpKSkKIAkgICAgZmF0ID0gMTI7Ci0JZWxzZSBpZiAoYnBi
 LnJkZSB8fCBicGIuYnNlYyA8Ci0JCSAoYnBiLnJlcyA/IGJwYi5yZXMgOiBi
 c3MpICsKLQkJIGhvd21hbnkoKFJFU0ZURSArIE1BWENMUzE2KSAqIDIsIGJw
 Yi5icHMpICogYnBiLm5mdCArCi0JCSBob3dtYW55KERFRlJERSwgYnBiLmJw
 cyAvIHNpemVvZihzdHJ1Y3QgZGUpKSArCisJZWxzZSBpZiAoYnBiLmJwYlJv
 b3REaXJFbnRzIHx8IGJwYi5icGJIdWdlU2VjdG9ycyA8CisJCSAoYnBiLmJw
 YlJlc1NlY3RvcnMgPyBicGIuYnBiUmVzU2VjdG9ycyA6IGJzcykgKworCQkg
 aG93bWFueSgoUkVTRlRFICsgTUFYQ0xTMTYpICogMiwgYnBiLmJwYkJ5dGVz
 UGVyU2VjKSAqIGJwYi5icGJGQVRzICsKKwkJIGhvd21hbnkoREVGUkRFLCBi
 cGIuYnBiQnl0ZXNQZXJTZWMgLyBzaXplb2Yoc3RydWN0IGRlKSkgKwogCQkg
 KE1BWENMUzE2ICsgMSkgKgotCQkgKGJwYi5zcGMgPyBicGIuc3BjIDogaG93
 bWFueSg4MTkyLCBicGIuYnBzKSkpCisJCSAoYnBiLmJwYlNlY1BlckNsdXN0
 ID8gYnBiLmJwYlNlY1BlckNsdXN0IDogaG93bWFueSg4MTkyLCBicGIuYnBi
 Qnl0ZXNQZXJTZWMpKSkKIAkgICAgZmF0ID0gMTY7CiAJZWxzZQogCSAgICBm
 YXQgPSAzMjsKICAgICB9CiAgICAgeCA9IGJzczsKICAgICBpZiAoZmF0ID09
 IDMyKSB7Ci0JaWYgKCFicGIuaW5mcykgewotCSAgICBpZiAoeCA9PSBNQVhV
 MTYgfHwgeCA9PSBicGIuYmticykKKwlpZiAoIWJwYi5icGJGU0luZm8pIHsK
 KwkgICAgaWYgKHggPT0gTUFYVTE2IHx8IHggPT0gYnBiLmJwYkJhY2t1cCkK
 IAkJZXJyeCgxLCAibm8gcm9vbSBmb3IgaW5mbyBzZWN0b3IiKTsKLQkgICAg
 YnBiLmluZnMgPSB4OworCSAgICBicGIuYnBiRlNJbmZvID0geDsKIAl9Ci0J
 aWYgKGJwYi5pbmZzICE9IE1BWFUxNiAmJiB4IDw9IGJwYi5pbmZzKQotCSAg
 ICB4ID0gYnBiLmluZnMgKyAxOwotCWlmICghYnBiLmJrYnMpIHsKKwlpZiAo
 YnBiLmJwYkZTSW5mbyAhPSBNQVhVMTYgJiYgeCA8PSBicGIuYnBiRlNJbmZv
 KQorCSAgICB4ID0gYnBiLmJwYkZTSW5mbyArIDE7CisJaWYgKCFicGIuYnBi
 QmFja3VwKSB7CiAJICAgIGlmICh4ID09IE1BWFUxNikKIAkJZXJyeCgxLCAi
 bm8gcm9vbSBmb3IgYmFja3VwIHNlY3RvciIpOwotCSAgICBicGIuYmticyA9
 IHg7Ci0JfSBlbHNlIGlmIChicGIuYmticyAhPSBNQVhVMTYgJiYgYnBiLmJr
 YnMgPT0gYnBiLmluZnMpCisJICAgIGJwYi5icGJCYWNrdXAgPSB4OworCX0g
 ZWxzZSBpZiAoYnBiLmJwYkJhY2t1cCAhPSBNQVhVMTYgJiYgYnBiLmJwYkJh
 Y2t1cCA9PSBicGIuYnBiRlNJbmZvKQogCSAgICBlcnJ4KDEsICJiYWNrdXAg
 c2VjdG9yIHdvdWxkIG92ZXJ3cml0ZSBpbmZvIHNlY3RvciIpOwotCWlmIChi
 cGIuYmticyAhPSBNQVhVMTYgJiYgeCA8PSBicGIuYmticykKLQkgICAgeCA9
 IGJwYi5ia2JzICsgMTsKKwlpZiAoYnBiLmJwYkJhY2t1cCAhPSBNQVhVMTYg
 JiYgeCA8PSBicGIuYnBiQmFja3VwKQorCSAgICB4ID0gYnBiLmJwYkJhY2t1
 cCArIDE7CiAgICAgfQotICAgIGlmICghYnBiLnJlcykKLQlicGIucmVzID0g
 ZmF0ID09IDMyID8gTUFYKHgsIE1BWCgxNjM4NCAvIGJwYi5icHMsIDQpKSA6
 IHg7Ci0gICAgZWxzZSBpZiAoYnBiLnJlcyA8IHgpCi0JZXJyeCgxLCAidG9v
 IGZldyByZXNlcnZlZCBzZWN0b3JzIik7Ci0gICAgaWYgKGZhdCAhPSAzMiAm
 JiAhYnBiLnJkZSkKLQlicGIucmRlID0gREVGUkRFOwotICAgIHJkcyA9IGhv
 d21hbnkoYnBiLnJkZSwgYnBiLmJwcyAvIHNpemVvZihzdHJ1Y3QgZGUpKTsK
 LSAgICBpZiAoIWJwYi5zcGMpCi0JZm9yIChicGIuc3BjID0gaG93bWFueShm
 YXQgPT0gMTYgPyBERUZCTEsxNiA6IERFRkJMSywgYnBiLmJwcyk7Ci0JICAg
 ICBicGIuc3BjIDwgTUFYU1BDICYmCi0JICAgICBicGIucmVzICsKKyAgICBp
 ZiAoIWJwYi5icGJSZXNTZWN0b3JzKQorCWJwYi5icGJSZXNTZWN0b3JzID0g
 ZmF0ID09IDMyID8gTUFYKHgsIE1BWCgxNjM4NCAvIGJwYi5icGJCeXRlc1Bl
 clNlYywgNCkpIDogeDsKKyAgICBlbHNlIGlmIChicGIuYnBiUmVzU2VjdG9y
 cyA8IHgpCisJZXJyeCgxLCAidG9vIGZldyByZXNlcnZlZCBzZWN0b3JzIChu
 ZWVkICVkIGhhdmUgJWQpIiwgeCwgYnBiLmJwYlJlc1NlY3RvcnMpOworICAg
 IGlmIChmYXQgIT0gMzIgJiYgIWJwYi5icGJSb290RGlyRW50cykKKwlicGIu
 YnBiUm9vdERpckVudHMgPSBERUZSREU7CisgICAgcmRzID0gaG93bWFueShi
 cGIuYnBiUm9vdERpckVudHMsIGJwYi5icGJCeXRlc1BlclNlYyAvIHNpemVv
 ZihzdHJ1Y3QgZGUpKTsKKyAgICBpZiAoIWJwYi5icGJTZWNQZXJDbHVzdCkK
 Kwlmb3IgKGJwYi5icGJTZWNQZXJDbHVzdCA9IGhvd21hbnkoZmF0ID09IDE2
 ID8gREVGQkxLMTYgOiBERUZCTEssIGJwYi5icGJCeXRlc1BlclNlYyk7CisJ
 ICAgICBicGIuYnBiU2VjUGVyQ2x1c3QgPCBNQVhTUEMgJiYKKwkgICAgIGJw
 Yi5icGJSZXNTZWN0b3JzICsKIAkgICAgIGhvd21hbnkoKFJFU0ZURSArIG1h
 eGNscyhmYXQpKSAqIChmYXQgLyBCUE4pLAotCQkgICAgIGJwYi5icHMgKiBO
 UEIpICogYnBiLm5mdCArCisJCSAgICAgYnBiLmJwYkJ5dGVzUGVyU2VjICog
 TlBCKSAqIGJwYi5icGJGQVRzICsKIAkgICAgIHJkcyArCi0JICAgICAodV9p
 bnQ2NF90KShtYXhjbHMoZmF0KSArIDEpICogYnBiLnNwYyA8PSBicGIuYnNl
 YzsKLQkgICAgIGJwYi5zcGMgPDw9IDEpOwotICAgIGlmIChmYXQgIT0gMzIg
 JiYgYnBiLmJzcGYgPiBNQVhVMTYpCisJICAgICAodV9pbnQ2NF90KShtYXhj
 bHMoZmF0KSArIDEpICogYnBiLmJwYlNlY1BlckNsdXN0IDw9IGJwYi5icGJI
 dWdlU2VjdG9yczsKKwkgICAgIGJwYi5icGJTZWNQZXJDbHVzdCA8PD0gMSk7
 CisgICAgaWYgKGZhdCAhPSAzMiAmJiBicGIuYnBiQmlnRkFUc2VjcyA+IE1B
 WFUxNikKIAllcnJ4KDEsICJ0b28gbWFueSBzZWN0b3JzL0ZBVCBmb3IgRkFU
 MTIvMTYiKTsKLSAgICB4MSA9IGJwYi5yZXMgKyByZHM7Ci0gICAgeCA9IGJw
 Yi5ic3BmID8gYnBiLmJzcGYgOiAxOwotICAgIGlmICh4MSArICh1X2ludDY0
 X3QpeCAqIGJwYi5uZnQgPiBicGIuYnNlYykKKyAgICB4MSA9IGJwYi5icGJS
 ZXNTZWN0b3JzICsgcmRzOworICAgIHggPSBicGIuYnBiQmlnRkFUc2VjcyA/
 IGJwYi5icGJCaWdGQVRzZWNzIDogMTsKKyAgICBpZiAoeDEgKyAodV9pbnQ2
 NF90KXggKiBicGIuYnBiRkFUcyA+IGJwYi5icGJIdWdlU2VjdG9ycykKIAll
 cnJ4KDEsICJtZXRhIGRhdGEgZXhjZWVkcyBmaWxlIHN5c3RlbSBzaXplIik7
 Ci0gICAgeDEgKz0geCAqIGJwYi5uZnQ7Ci0gICAgeCA9ICh1X2ludDY0X3Qp
 KGJwYi5ic2VjIC0geDEpICogYnBiLmJwcyAqIE5QQiAvCi0JKGJwYi5zcGMg
 KiBicGIuYnBzICogTlBCICsgZmF0IC8gQlBOICogYnBiLm5mdCk7CisgICAg
 eDEgKz0geCAqIGJwYi5icGJGQVRzOworICAgIHggPSAodV9pbnQ2NF90KShi
 cGIuYnBiSHVnZVNlY3RvcnMgLSB4MSkgKiBicGIuYnBiQnl0ZXNQZXJTZWMg
 KiBOUEIgLworCShicGIuYnBiU2VjUGVyQ2x1c3QgKiBicGIuYnBiQnl0ZXNQ
 ZXJTZWMgKiBOUEIgKyBmYXQgLyBCUE4gKiBicGIuYnBiRkFUcyk7CiAgICAg
 eDIgPSBob3dtYW55KChSRVNGVEUgKyBNSU4oeCwgbWF4Y2xzKGZhdCkpKSAq
 IChmYXQgLyBCUE4pLAotCQkgYnBiLmJwcyAqIE5QQik7Ci0gICAgaWYgKCFi
 cGIuYnNwZikgewotCWJwYi5ic3BmID0geDI7Ci0JeDEgKz0gKGJwYi5ic3Bm
 IC0gMSkgKiBicGIubmZ0OworCQkgYnBiLmJwYkJ5dGVzUGVyU2VjICogTlBC
 KTsKKyAgICBpZiAoIWJwYi5icGJCaWdGQVRzZWNzKSB7CisJYnBiLmJwYkJp
 Z0ZBVHNlY3MgPSB4MjsKKwl4MSArPSAoYnBiLmJwYkJpZ0ZBVHNlY3MgLSAx
 KSAqIGJwYi5icGJGQVRzOwogICAgIH0KLSAgICBjbHMgPSAoYnBiLmJzZWMg
 LSB4MSkgLyBicGIuc3BjOwotICAgIHggPSAodV9pbnQ2NF90KWJwYi5ic3Bm
 ICogYnBiLmJwcyAqIE5QQiAvIChmYXQgLyBCUE4pIC0gUkVTRlRFOworICAg
 IGNscyA9IChicGIuYnBiSHVnZVNlY3RvcnMgLSB4MSkgLyBicGIuYnBiU2Vj
 UGVyQ2x1c3Q7CisgICAgeCA9ICh1X2ludDY0X3QpYnBiLmJwYkJpZ0ZBVHNl
 Y3MgKiBicGIuYnBiQnl0ZXNQZXJTZWMgKiBOUEIgLyAoZmF0IC8gQlBOKSAt
 IFJFU0ZURTsKICAgICBpZiAoY2xzID4geCkKIAljbHMgPSB4OwotICAgIGlm
 IChicGIuYnNwZiA8IHgyKQorICAgIGlmIChicGIuYnBiQmlnRkFUc2VjcyA8
 IHgyKQogCXdhcm54KCJ3YXJuaW5nOiBzZWN0b3JzL0ZBVCBsaW1pdHMgZmls
 ZSBzeXN0ZW0gdG8gJXUgY2x1c3RlcnMiLAogCSAgICAgIGNscyk7CiAgICAg
 aWYgKGNscyA8IG1pbmNscyhmYXQpKQpAQCAtNTczLDc5ICs1NzcsNzkgQEAK
 IAkgICAgbWluY2xzKGZhdCkpOwogICAgIGlmIChjbHMgPiBtYXhjbHMoZmF0
 KSkgewogCWNscyA9IG1heGNscyhmYXQpOwotCWJwYi5ic2VjID0geDEgKyAo
 Y2xzICsgMSkgKiBicGIuc3BjIC0gMTsKKwlicGIuYnBiSHVnZVNlY3RvcnMg
 PSB4MSArIChjbHMgKyAxKSAqIGJwYi5icGJTZWNQZXJDbHVzdCAtIDE7CiAJ
 d2FybngoIndhcm5pbmc6IEZBVCB0eXBlIGxpbWl0cyBmaWxlIHN5c3RlbSB0
 byAldSBzZWN0b3JzIiwKLQkgICAgICBicGIuYnNlYyk7CisJICAgICAgYnBi
 LmJwYkh1Z2VTZWN0b3JzKTsKICAgICB9CiAgICAgcHJpbnRmKCIlczogJXUg
 c2VjdG9yJXMgaW4gJXUgRkFUJXUgY2x1c3RlciVzICIKLQkgICAiKCV1IGJ5
 dGVzL2NsdXN0ZXIpXG4iLCBmbmFtZSwgY2xzICogYnBiLnNwYywKLQkgICBj
 bHMgKiBicGIuc3BjID09IDEgPyAiIiA6ICJzIiwgY2xzLCBmYXQsCi0JICAg
 Y2xzID09IDEgPyAiIiA6ICJzIiwgYnBiLmJwcyAqIGJwYi5zcGMpOwotICAg
 IGlmICghYnBiLm1pZCkKLQlicGIubWlkID0gIWJwYi5oaWQgPyAweGYwIDog
 MHhmODsKKwkgICAiKCV1IGJ5dGVzL2NsdXN0ZXIpXG4iLCBmbmFtZSwgY2xz
 ICogYnBiLmJwYlNlY1BlckNsdXN0LAorCSAgIGNscyAqIGJwYi5icGJTZWNQ
 ZXJDbHVzdCA9PSAxID8gIiIgOiAicyIsIGNscywgZmF0LAorCSAgIGNscyA9
 PSAxID8gIiIgOiAicyIsIGJwYi5icGJCeXRlc1BlclNlYyAqIGJwYi5icGJT
 ZWNQZXJDbHVzdCk7CisgICAgaWYgKCFicGIuYnBiTWVkaWEpCisJYnBiLmJw
 Yk1lZGlhID0gIWJwYi5icGJIaWRkZW5TZWNzID8gMHhmMCA6IDB4Zjg7CiAg
 ICAgaWYgKGZhdCA9PSAzMikKLQlicGIucmRjbCA9IFJFU0ZURTsKLSAgICBp
 ZiAoYnBiLmhpZCArIGJwYi5ic2VjIDw9IE1BWFUxNikgewotCWJwYi5zZWMg
 PSBicGIuYnNlYzsKLQlicGIuYnNlYyA9IDA7CisJYnBiLmJwYlJvb3RDbHVz
 dCA9IFJFU0ZURTsKKyAgICBpZiAoYnBiLmJwYkhpZGRlblNlY3MgKyBicGIu
 YnBiSHVnZVNlY3RvcnMgPD0gTUFYVTE2KSB7CisJYnBiLmJwYlNlY3RvcnMg
 PSBicGIuYnBiSHVnZVNlY3RvcnM7CisJYnBiLmJwYkh1Z2VTZWN0b3JzID0g
 MDsKICAgICB9CiAgICAgaWYgKGZhdCAhPSAzMikgewotCWJwYi5zcGYgPSBi
 cGIuYnNwZjsKLQlicGIuYnNwZiA9IDA7CisJYnBiLmJwYkZBVHNlY3MgPSBi
 cGIuYnBiQmlnRkFUc2VjczsKKwlicGIuYnBiQmlnRkFUc2VjcyA9IDA7CiAg
 ICAgfQogICAgIHByaW50X2JwYigmYnBiKTsKICAgICBpZiAoIW9wdF9OKSB7
 CiAJZ2V0dGltZW9mZGF5KCZ0diwgTlVMTCk7CiAJbm93ID0gdHYudHZfc2Vj
 OwogCXRtID0gbG9jYWx0aW1lKCZub3cpOwotCWlmICghKGltZyA9IG1hbGxv
 YyhicGIuYnBzKSkpCisJaWYgKCEoaW1nID0gbWFsbG9jKGJwYi5icGJCeXRl
 c1BlclNlYykpKQogCSAgICBlcnIoMSwgTlVMTCk7Ci0JZGlyID0gYnBiLnJl
 cyArIChicGIuc3BmID8gYnBiLnNwZiA6IGJwYi5ic3BmKSAqIGJwYi5uZnQ7
 Ci0JZm9yIChsc24gPSAwOyBsc24gPCBkaXIgKyAoZmF0ID09IDMyID8gYnBi
 LnNwYyA6IHJkcyk7IGxzbisrKSB7CisJZGlyID0gYnBiLmJwYlJlc1NlY3Rv
 cnMgKyAoYnBiLmJwYkZBVHNlY3MgPyBicGIuYnBiRkFUc2VjcyA6IGJwYi5i
 cGJCaWdGQVRzZWNzKSAqIGJwYi5icGJGQVRzOworCWZvciAobHNuID0gMDsg
 bHNuIDwgZGlyICsgKGZhdCA9PSAzMiA/IGJwYi5icGJTZWNQZXJDbHVzdCA6
 IHJkcyk7IGxzbisrKSB7CiAJICAgIHggPSBsc247CiAJICAgIGlmIChvcHRf
 QiAmJgotCQlmYXQgPT0gMzIgJiYgYnBiLmJrYnMgIT0gTUFYVTE2ICYmCi0J
 CWJzcyA8PSBicGIuYmticyAmJiB4ID49IGJwYi5ia2JzKSB7Ci0JCXggLT0g
 YnBiLmJrYnM7CisJCWZhdCA9PSAzMiAmJiBicGIuYnBiQmFja3VwICE9IE1B
 WFUxNiAmJgorCQlic3MgPD0gYnBiLmJwYkJhY2t1cCAmJiB4ID49IGJwYi5i
 cGJCYWNrdXApIHsKKwkJeCAtPSBicGIuYnBiQmFja3VwOwogCQlpZiAoIXgg
 JiYgbHNlZWsoZmQxLCBvcHRfb2ZzLCBTRUVLX1NFVCkpCiAJCSAgICBlcnIo
 MSwgIiVzIiwgYm5hbWUpOwogCSAgICB9CiAJICAgIGlmIChvcHRfQiAmJiB4
 IDwgYnNzKSB7Ci0JCWlmICgobiA9IHJlYWQoZmQxLCBpbWcsIGJwYi5icHMp
 KSA9PSAtMSkKKwkJaWYgKChuID0gcmVhZChmZDEsIGltZywgYnBiLmJwYkJ5
 dGVzUGVyU2VjKSkgPT0gLTEpCiAJCSAgICBlcnIoMSwgIiVzIiwgYm5hbWUp
 OwotCQlpZiAoKHVuc2lnbmVkKW4gIT0gYnBiLmJwcykKKwkJaWYgKCh1bnNp
 Z25lZCluICE9IGJwYi5icGJCeXRlc1BlclNlYykKIAkJICAgIGVycngoMSwg
 IiVzOiBjYW4ndCByZWFkIHNlY3RvciAldSIsIGJuYW1lLCB4KTsKIAkgICAg
 fSBlbHNlCi0JCW1lbXNldChpbWcsIDAsIGJwYi5icHMpOworCQltZW1zZXQo
 aW1nLCAwLCBicGIuYnBiQnl0ZXNQZXJTZWMpOwogCSAgICBpZiAoIWxzbiB8
 fAotCSAgICAgIChmYXQgPT0gMzIgJiYgYnBiLmJrYnMgIT0gTUFYVTE2ICYm
 IGxzbiA9PSBicGIuYmticykpIHsKKwkgICAgICAoZmF0ID09IDMyICYmIGJw
 Yi5icGJCYWNrdXAgIT0gTUFYVTE2ICYmIGxzbiA9PSBicGIuYnBiQmFja3Vw
 KSkgewogCQl4MSA9IHNpemVvZihzdHJ1Y3QgYnMpOwogCQlic2JwYiA9IChz
 dHJ1Y3QgYnNicGIgKikoaW1nICsgeDEpOwotCQltazIoYnNicGItPmJwcywg
 YnBiLmJwcyk7Ci0JCW1rMShic2JwYi0+c3BjLCBicGIuc3BjKTsKLQkJbWsy
 KGJzYnBiLT5yZXMsIGJwYi5yZXMpOwotCQltazEoYnNicGItPm5mdCwgYnBi
 Lm5mdCk7Ci0JCW1rMihic2JwYi0+cmRlLCBicGIucmRlKTsKLQkJbWsyKGJz
 YnBiLT5zZWMsIGJwYi5zZWMpOwotCQltazEoYnNicGItPm1pZCwgYnBiLm1p
 ZCk7Ci0JCW1rMihic2JwYi0+c3BmLCBicGIuc3BmKTsKLQkJbWsyKGJzYnBi
 LT5zcHQsIGJwYi5zcHQpOwotCQltazIoYnNicGItPmhkcywgYnBiLmhkcyk7
 Ci0JCW1rNChic2JwYi0+aGlkLCBicGIuaGlkKTsKLQkJbWs0KGJzYnBiLT5i
 c2VjLCBicGIuYnNlYyk7CisJCW1rMihic2JwYi0+YnBiQnl0ZXNQZXJTZWMs
 IGJwYi5icGJCeXRlc1BlclNlYyk7CisJCW1rMShic2JwYi0+YnBiU2VjUGVy
 Q2x1c3QsIGJwYi5icGJTZWNQZXJDbHVzdCk7CisJCW1rMihic2JwYi0+YnBi
 UmVzU2VjdG9ycywgYnBiLmJwYlJlc1NlY3RvcnMpOworCQltazEoYnNicGIt
 PmJwYkZBVHMsIGJwYi5icGJGQVRzKTsKKwkJbWsyKGJzYnBiLT5icGJSb290
 RGlyRW50cywgYnBiLmJwYlJvb3REaXJFbnRzKTsKKwkJbWsyKGJzYnBiLT5i
 cGJTZWN0b3JzLCBicGIuYnBiU2VjdG9ycyk7CisJCW1rMShic2JwYi0+YnBi
 TWVkaWEsIGJwYi5icGJNZWRpYSk7CisJCW1rMihic2JwYi0+YnBiRkFUc2Vj
 cywgYnBiLmJwYkZBVHNlY3MpOworCQltazIoYnNicGItPmJwYlNlY1BlclRy
 YWNrLCBicGIuYnBiU2VjUGVyVHJhY2spOworCQltazIoYnNicGItPmJwYkhl
 YWRzLCBicGIuYnBiSGVhZHMpOworCQltazQoYnNicGItPmJwYkhpZGRlblNl
 Y3MsIGJwYi5icGJIaWRkZW5TZWNzKTsKKwkJbWs0KGJzYnBiLT5icGJIdWdl
 U2VjdG9ycywgYnBiLmJwYkh1Z2VTZWN0b3JzKTsKIAkJeDEgKz0gc2l6ZW9m
 KHN0cnVjdCBic2JwYik7CiAJCWlmIChmYXQgPT0gMzIpIHsKIAkJICAgIGJz
 eGJwYiA9IChzdHJ1Y3QgYnN4YnBiICopKGltZyArIHgxKTsKLQkJICAgIG1r
 NChic3hicGItPmJzcGYsIGJwYi5ic3BmKTsKKwkJICAgIG1rNChic3hicGIt
 PmJzcGYsIGJwYi5icGJCaWdGQVRzZWNzKTsKIAkJICAgIG1rMihic3hicGIt
 PnhmbGcsIDApOwogCQkgICAgbWsyKGJzeGJwYi0+dmVycywgMCk7Ci0JCSAg
 ICBtazQoYnN4YnBiLT5yZGNsLCBicGIucmRjbCk7Ci0JCSAgICBtazIoYnN4
 YnBiLT5pbmZzLCBicGIuaW5mcyk7Ci0JCSAgICBtazIoYnN4YnBiLT5ia2Jz
 LCBicGIuYmticyk7CisJCSAgICBtazQoYnN4YnBiLT5yZGNsLCBicGIuYnBi
 Um9vdENsdXN0KTsKKwkJICAgIG1rMihic3hicGItPmluZnMsIGJwYi5icGJG
 U0luZm8pOworCQkgICAgbWsyKGJzeGJwYi0+YmticywgYnBiLmJwYkJhY2t1
 cCk7CiAJCSAgICB4MSArPSBzaXplb2Yoc3RydWN0IGJzeGJwYik7CiAJCX0K
 IAkJYnN4ID0gKHN0cnVjdCBic3ggKikoaW1nICsgeDEpOwotCQltazEoYnN4
 LT5zaWcsIDB4MjkpOworCQltazEoYnN4LT5leEJvb3RTaWduYXR1cmUsIDB4
 MjkpOwogCQlpZiAoSWZsYWcpCiAJCSAgICB4ID0gb3B0X0k7CiAJCWVsc2UK
 QEAgLTY1Niw1MiArNjYwLDUyIEBACiAJCQkoKHVfaW50KSgxOTAwICsgdG0t
 PnRtX3llYXIpICsKIAkJCSAoKHVfaW50KXRtLT50bV9ob3VyIDw8IDggfAog
 CQkJICAodV9pbnQpdG0tPnRtX21pbikpOwotCQltazQoYnN4LT52b2xpZCwg
 eCk7Ci0JCW1rbGFiZWwoYnN4LT5sYWJlbCwgb3B0X0wgPyBvcHRfTCA6ICJO
 TyBOQU1FIik7Ci0JCXNwcmludGYoYnVmLCAiRkFUJXUiLCBmYXQpOwotCQlz
 ZXRzdHIoYnN4LT50eXBlLCBidWYsIHNpemVvZihic3gtPnR5cGUpKTsKKwkJ
 bWs0KGJzeC0+ZXhWb2x1bWVJRCwgeCk7CisJCW1rbGFiZWwoYnN4LT5leFZv
 bHVtZUxhYmVsLCBvcHRfTCA/IG9wdF9MIDogIk5PX05BTUUiKTsKKwkJc25w
 cmludGYoYnVmLCBzaXplb2YoYnVmKSwgIkZBVCV1IiwgZmF0KTsKKwkJc2V0
 c3RyKGJzeC0+ZXhGaWxlU3lzVHlwZSwgYnVmLCBzaXplb2YoYnN4LT5leEZp
 bGVTeXNUeXBlKSk7CiAJCWlmICghb3B0X0IpIHsKIAkJICAgIHgxICs9IHNp
 emVvZihzdHJ1Y3QgYnN4KTsKIAkJICAgIGJzID0gKHN0cnVjdCBicyAqKWlt
 ZzsKLQkJICAgIG1rMShicy0+am1wWzBdLCAweGViKTsKLQkJICAgIG1rMShi
 cy0+am1wWzFdLCB4MSAtIDIpOwotCQkgICAgbWsxKGJzLT5qbXBbMl0sIDB4
 OTApOwotCQkgICAgc2V0c3RyKGJzLT5vZW0sIG9wdF9PID8gb3B0X08gOiAi
 QlNEICA0LjQiLAotCQkJICAgc2l6ZW9mKGJzLT5vZW0pKTsKKwkJICAgIG1r
 MShicy0+YnNKdW1wWzBdLCAweGViKTsKKwkJICAgIG1rMShicy0+YnNKdW1w
 WzFdLCB4MSAtIDIpOworCQkgICAgbWsxKGJzLT5ic0p1bXBbMl0sIDB4OTAp
 OworCQkgICAgc2V0c3RyKGJzLT5ic09lbU5hbWUsIG9wdF9PID8gb3B0X08g
 OiAiQlNENC40ICAiLAorCQkJICAgc2l6ZW9mKGJzLT5ic09lbU5hbWUpKTsK
 IAkJICAgIG1lbWNweShpbWcgKyB4MSwgYm9vdGNvZGUsIHNpemVvZihib290
 Y29kZSkpOwogCQkgICAgbWsyKGltZyArIE1JTkJQUyAtIDIsIERPU01BR0lD
 KTsKIAkJfQotCSAgICB9IGVsc2UgaWYgKGZhdCA9PSAzMiAmJiBicGIuaW5m
 cyAhPSBNQVhVMTYgJiYKLQkJICAgICAgIChsc24gPT0gYnBiLmluZnMgfHwK
 LQkJCShicGIuYmticyAhPSBNQVhVMTYgJiYKLQkJCSBsc24gPT0gYnBiLmJr
 YnMgKyBicGIuaW5mcykpKSB7CisJICAgIH0gZWxzZSBpZiAoZmF0ID09IDMy
 ICYmIGJwYi5icGJGU0luZm8gIT0gTUFYVTE2ICYmCisJCSAgICAgICAobHNu
 ID09IGJwYi5icGJGU0luZm8gfHwKKwkJCShicGIuYnBiQmFja3VwICE9IE1B
 WFUxNiAmJgorCQkJIGxzbiA9PSBicGIuYnBiQmFja3VwICsgYnBiLmJwYkZT
 SW5mbykpKSB7CiAJCW1rNChpbWcsIDB4NDE2MTUyNTIpOwogCQltazQoaW1n
 ICsgTUlOQlBTIC0gMjgsIDB4NjE0MTcyNzIpOwogCQltazQoaW1nICsgTUlO
 QlBTIC0gMjQsIDB4ZmZmZmZmZmYpOwotCQltazQoaW1nICsgTUlOQlBTIC0g
 MjAsIGJwYi5yZGNsKTsKKwkJbWs0KGltZyArIE1JTkJQUyAtIDIwLCBicGIu
 YnBiUm9vdENsdXN0KTsKIAkJbWsyKGltZyArIE1JTkJQUyAtIDIsIERPU01B
 R0lDKTsKLQkgICAgfSBlbHNlIGlmIChsc24gPj0gYnBiLnJlcyAmJiBsc24g
 PCBkaXIgJiYKLQkJICAgICAgICEoKGxzbiAtIGJwYi5yZXMpICUKLQkJCSAo
 YnBiLnNwZiA/IGJwYi5zcGYgOiBicGIuYnNwZikpKSB7Ci0JCW1rMShpbWdb
 MF0sIGJwYi5taWQpOworCSAgICB9IGVsc2UgaWYgKGxzbiA+PSBicGIuYnBi
 UmVzU2VjdG9ycyAmJiBsc24gPCBkaXIgJiYKKwkJICAgICAgICEoKGxzbiAt
 IGJwYi5icGJSZXNTZWN0b3JzKSAlCisJCQkgKGJwYi5icGJGQVRzZWNzID8g
 YnBiLmJwYkZBVHNlY3MgOiBicGIuYnBiQmlnRkFUc2VjcykpKSB7CisJCW1r
 MShpbWdbMF0sIGJwYi5icGJNZWRpYSk7CiAJCWZvciAoeCA9IDE7IHggPCBm
 YXQgKiAoZmF0ID09IDMyID8gMyA6IDIpIC8gODsgeCsrKQogCQkgICAgbWsx
 KGltZ1t4XSwgZmF0ID09IDMyICYmIHggJSA0ID09IDMgPyAweDBmIDogMHhm
 Zik7CiAJICAgIH0gZWxzZSBpZiAobHNuID09IGRpciAmJiBvcHRfTCkgewog
 CQlkZSA9IChzdHJ1Y3QgZGUgKilpbWc7Ci0JCW1rbGFiZWwoZGUtPm5hbWV4
 dCwgb3B0X0wpOwotCQltazEoZGUtPmF0dHIsIDA1MCk7CisJCW1rbGFiZWwo
 ZGUtPmRlTmFtZSwgb3B0X0wpOworCQltazEoZGUtPmRlQXR0cmlidXRlcywg
 MDUwKTsKIAkJeCA9ICh1X2ludCl0bS0+dG1faG91ciA8PCAxMSB8CiAJCSAg
 ICAodV9pbnQpdG0tPnRtX21pbiA8PCA1IHwKIAkJICAgICh1X2ludCl0bS0+
 dG1fc2VjID4+IDE7Ci0JCW1rMihkZS0+dGltZSwgeCk7CisJCW1rMihkZS0+
 ZGVDVGltZSwgeCk7CiAJCXggPSAodV9pbnQpKHRtLT50bV95ZWFyIC0gODAp
 IDw8IDkgfAogCQkgICAgKHVfaW50KSh0bS0+dG1fbW9uICsgMSkgPDwgNSB8
 CiAJCSAgICAodV9pbnQpdG0tPnRtX21kYXk7Ci0JCW1rMihkZS0+ZGF0ZSwg
 eCk7CisJCW1rMihkZS0+ZGVDRGF0ZSwgeCk7CiAJICAgIH0KLQkgICAgaWYg
 KChuID0gd3JpdGUoZmQsIGltZywgYnBiLmJwcykpID09IC0xKQorCSAgICBp
 ZiAoKG4gPSB3cml0ZShmZCwgaW1nLCBicGIuYnBiQnl0ZXNQZXJTZWMpKSA9
 PSAtMSkKIAkJZXJyKDEsICIlcyIsIGZuYW1lKTsKLQkgICAgaWYgKCh1bnNp
 Z25lZCluICE9IGJwYi5icHMpCisJICAgIGlmICgodW5zaWduZWQpbiAhPSBi
 cGIuYnBiQnl0ZXNQZXJTZWMpCiAJCWVycngoMSwgIiVzOiBjYW4ndCB3cml0
 ZSBzZWN0b3IgJXUiLCBmbmFtZSwgbHNuKTsKIAl9CiAgICAgfQpAQCAtNzk0
 LDE4ICs3OTgsMTkgQEAKIAogICAgIC8qIE1heWJlIGl0J3MgYSBmaXhlZCBk
 cml2ZSAqLwogICAgIGlmIChscCA9PSBOVUxMKSB7CisJaWYgKGJwYi0+YnBi
 Qnl0ZXNQZXJTZWMpCisJICAgIGRscC5kX3NlY3NpemUgPSBicGItPmJwYkJ5
 dGVzUGVyU2VjOwogCWlmIChpb2N0bChmZCwgRElPQ0dESU5GTywgJmRscCkg
 PT0gLTEpIHsKLQkgICAgaWYgKGJwYi0+YnBzID09IDAgJiYgaW9jdGwoZmQs
 IERJT0NHU0VDVE9SU0laRSwgJmRscC5kX3NlY3NpemUpID09IC0xKQorCSAg
 ICBpZiAoYnBiLT5icGJCeXRlc1BlclNlYyA9PSAwICYmIGlvY3RsKGZkLCBE
 SU9DR1NFQ1RPUlNJWkUsICZkbHAuZF9zZWNzaXplKSA9PSAtMSkKIAkJZXJy
 eCgxLCAiQ2Fubm90IGdldCBzZWN0b3Igc2l6ZSwgJXMiLCBzdHJlcnJvcihl
 cnJubykpOwogCi0JICAgIC8qIFhYWCBTaG91bGQgd2UgdXNlIGJwYi0+YnBz
 IGlmIGl0J3Mgc2V0PyAqLwogCSAgICBkbHAuZF9zZWNwZXJ1bml0ID0gbXMg
 LyBkbHAuZF9zZWNzaXplOwogCi0JICAgIGlmIChicGItPnNwdCA9PSAwICYm
 IGlvY3RsKGZkLCBESU9DR0ZXU0VDVE9SUywgJmRscC5kX25zZWN0b3JzKSA9
 PSAtMSkgeworCSAgICBpZiAoYnBiLT5icGJTZWNQZXJUcmFjayA9PSAwICYm
 IGlvY3RsKGZkLCBESU9DR0ZXU0VDVE9SUywgJmRscC5kX25zZWN0b3JzKSA9
 PSAtMSkgewogCQl3YXJueCgiQ2Fubm90IGdldCBudW1iZXIgb2Ygc2VjdG9y
 cyBwZXIgdHJhY2ssICVzIiwgc3RyZXJyb3IoZXJybm8pKTsKIAkJZGxwLmRf
 bnNlY3RvcnMgPSA2MzsKIAkgICAgfQotCSAgICBpZiAoYnBiLT5oZHMgPT0g
 MCAmJiBpb2N0bChmZCwgRElPQ0dGV0hFQURTLCAmZGxwLmRfbnRyYWNrcykg
 PT0gLTEpIHsKKwkgICAgaWYgKGJwYi0+YnBiSGVhZHMgPT0gMCAmJiBpb2N0
 bChmZCwgRElPQ0dGV0hFQURTLCAmZGxwLmRfbnRyYWNrcykgPT0gLTEpIHsK
 IAkJd2FybngoIkNhbm5vdCBnZXQgbnVtYmVyIG9mIGhlYWRzLCAlcyIsIHN0
 cmVycm9yKGVycm5vKSk7CiAJCWlmIChkbHAuZF9zZWNwZXJ1bml0IDw9IDYz
 KjEqMTAyNCkKIAkJICAgIGRscC5kX250cmFja3MgPSAxOwpAQCAtODIwLDE2
 ICs4MjUsMTYgQEAKIAlscCA9ICZkbHA7CiAgICAgfQogCi0gICAgaWYgKGJw
 Yi0+YnBzID09IDApCi0JYnBiLT5icHMgPSBja2dlb20oZm5hbWUsIGxwLT5k
 X3NlY3NpemUsICJieXRlcy9zZWN0b3IiKTsKLSAgICBpZiAoYnBiLT5zcHQg
 PT0gMCkKLQlicGItPnNwdCA9IGNrZ2VvbShmbmFtZSwgbHAtPmRfbnNlY3Rv
 cnMsICJzZWN0b3JzL3RyYWNrIik7Ci0gICAgaWYgKGJwYi0+aGRzID09IDAp
 Ci0JYnBiLT5oZHMgPSBja2dlb20oZm5hbWUsIGxwLT5kX250cmFja3MsICJk
 cml2ZSBoZWFkcyIpOwotICAgIGlmIChicGItPmJzZWMgPT0gMCkKLQlicGIt
 PmJzZWMgPSBscC0+ZF9zZWNwZXJ1bml0OwotICAgIGlmIChicGItPmhpZCA9
 PSAwKQotCWJwYi0+aGlkID0gaHM7CisgICAgaWYgKGJwYi0+YnBiQnl0ZXNQ
 ZXJTZWMgPT0gMCkKKwlicGItPmJwYkJ5dGVzUGVyU2VjID0gY2tnZW9tKGZu
 YW1lLCBscC0+ZF9zZWNzaXplLCAiYnl0ZXMvc2VjdG9yIik7CisgICAgaWYg
 KGJwYi0+YnBiU2VjUGVyVHJhY2sgPT0gMCkKKwlicGItPmJwYlNlY1BlclRy
 YWNrID0gY2tnZW9tKGZuYW1lLCBscC0+ZF9uc2VjdG9ycywgInNlY3RvcnMv
 dHJhY2siKTsKKyAgICBpZiAoYnBiLT5icGJIZWFkcyA9PSAwKQorCWJwYi0+
 YnBiSGVhZHMgPSBja2dlb20oZm5hbWUsIGxwLT5kX250cmFja3MsICJkcml2
 ZSBoZWFkcyIpOworICAgIGlmIChicGItPmJwYkh1Z2VTZWN0b3JzID09IDAp
 CisJYnBiLT5icGJIdWdlU2VjdG9ycyA9IGxwLT5kX3NlY3BlcnVuaXQ7Cisg
 ICAgaWYgKGJwYi0+YnBiSGlkZGVuU2VjcyA9PSAwKQorCWJwYi0+YnBiSGlk
 ZGVuU2VjcyA9IGhzOwogfQogCiAvKgpAQCAtODM4LDI0ICs4NDMsMjQgQEAK
 IHN0YXRpYyB2b2lkCiBwcmludF9icGIoc3RydWN0IGJwYiAqYnBiKQogewot
 ICAgIHByaW50ZigiYnBzPSV1IHNwYz0ldSByZXM9JXUgbmZ0PSV1IiwgYnBi
 LT5icHMsIGJwYi0+c3BjLCBicGItPnJlcywKLQkgICBicGItPm5mdCk7Ci0g
 ICAgaWYgKGJwYi0+cmRlKQotCXByaW50ZigiIHJkZT0ldSIsIGJwYi0+cmRl
 KTsKLSAgICBpZiAoYnBiLT5zZWMpCi0JcHJpbnRmKCIgc2VjPSV1IiwgYnBi
 LT5zZWMpOwotICAgIHByaW50ZigiIG1pZD0lI3giLCBicGItPm1pZCk7Ci0g
 ICAgaWYgKGJwYi0+c3BmKQotCXByaW50ZigiIHNwZj0ldSIsIGJwYi0+c3Bm
 KTsKLSAgICBwcmludGYoIiBzcHQ9JXUgaGRzPSV1IGhpZD0ldSIsIGJwYi0+
 c3B0LCBicGItPmhkcywgYnBiLT5oaWQpOwotICAgIGlmIChicGItPmJzZWMp
 Ci0JcHJpbnRmKCIgYnNlYz0ldSIsIGJwYi0+YnNlYyk7Ci0gICAgaWYgKCFi
 cGItPnNwZikgewotCXByaW50ZigiIGJzcGY9JXUgcmRjbD0ldSIsIGJwYi0+
 YnNwZiwgYnBiLT5yZGNsKTsKLQlwcmludGYoIiBpbmZzPSIpOwotCXByaW50
 ZihicGItPmluZnMgPT0gTUFYVTE2ID8gIiUjeCIgOiAiJXUiLCBicGItPmlu
 ZnMpOwotCXByaW50ZigiIGJrYnM9Iik7Ci0JcHJpbnRmKGJwYi0+YmticyA9
 PSBNQVhVMTYgPyAiJSN4IiA6ICIldSIsIGJwYi0+Ymticyk7CisgICAgcHJp
 bnRmKCJCeXRlc1BlclNlYz0ldSBTZWNQZXJDbHVzdD0ldSBSZXNTZWN0b3Jz
 PSV1IEZBVHM9JXUiLCBicGItPmJwYkJ5dGVzUGVyU2VjLCBicGItPmJwYlNl
 Y1BlckNsdXN0LCBicGItPmJwYlJlc1NlY3RvcnMsCisJICAgYnBiLT5icGJG
 QVRzKTsKKyAgICBpZiAoYnBiLT5icGJSb290RGlyRW50cykKKwlwcmludGYo
 IiBSb290RGlyRW50cz0ldSIsIGJwYi0+YnBiUm9vdERpckVudHMpOworICAg
 IGlmIChicGItPmJwYlNlY3RvcnMpCisJcHJpbnRmKCIgU2VjdG9ycz0ldSIs
 IGJwYi0+YnBiU2VjdG9ycyk7CisgICAgcHJpbnRmKCIgTWVkaWE9JSN4Iiwg
 YnBiLT5icGJNZWRpYSk7CisgICAgaWYgKGJwYi0+YnBiRkFUc2VjcykKKwlw
 cmludGYoIiBGQVRzZWNzPSV1IiwgYnBiLT5icGJGQVRzZWNzKTsKKyAgICBw
 cmludGYoIiBTZWNQZXJUcmFjaz0ldSBIZWFkcz0ldSBIaWRkZW5TZWNzPSV1
 IiwgYnBiLT5icGJTZWNQZXJUcmFjaywgYnBiLT5icGJIZWFkcywgYnBiLT5i
 cGJIaWRkZW5TZWNzKTsKKyAgICBpZiAoYnBiLT5icGJIdWdlU2VjdG9ycykK
 KwlwcmludGYoIiBIdWdlU2VjdG9ycz0ldSIsIGJwYi0+YnBiSHVnZVNlY3Rv
 cnMpOworICAgIGlmICghYnBiLT5icGJGQVRzZWNzKSB7CisJcHJpbnRmKCIg
 RkFUc2Vjcz0ldSBSb290Q2x1c3Rlcj0ldSIsIGJwYi0+YnBiQmlnRkFUc2Vj
 cywgYnBiLT5icGJSb290Q2x1c3QpOworCXByaW50ZigiIEZTSW5mbz0iKTsK
 KwlwcmludGYoYnBiLT5icGJGU0luZm8gPT0gTUFYVTE2ID8gIiUjeCIgOiAi
 JXUiLCBicGItPmJwYkZTSW5mbyk7CisJcHJpbnRmKCIgQmFja3VwPSIpOwor
 CXByaW50ZihicGItPmJwYkJhY2t1cCA9PSBNQVhVMTYgPyAiJSN4IiA6ICIl
 dSIsIGJwYi0+YnBiQmFja3VwKTsKICAgICB9CiAgICAgcHJpbnRmKCJcbiIp
 OwogfQo=
 
 --0-96800579-1263761668=:91781--


More information about the freebsd-bugs mailing list