LyoKICogKEMpIENvcHlyaWdodCAyMDAyCiAqIERhbmllbCBFbmdzdHL2bSwgT21pY3JvbiBDZXRpIEFCLCBkYW5pZWxAb21pY3Jvbi5zZQogKiAKICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKICogcHJvamVjdC4KICoKICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcwogKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgogKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKICogTUEgMDIxMTEtMTMwNyBVU0EKICovCgovKgogKiBCYXNlZCBvbiBtc2Jpb3MuYyBmcm9tIHJvbG8gMS42OgogKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICogKEMpIENvcHlyaWdodCAyMDAwCiAqIFN5c2dvIFJlYWwtVGltZSBTb2x1dGlvbnMgR21iSAogKiBLbGVpbi1XaW50ZXJuaGVpbSwgR2VybWFueQogKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICovCgojaW5jbHVkZSAiYmlvcy5oIgoKLyoKICogRHVyaW5nIGl0J3MgaW5pdGlhbGl6YXRpb24gcGhhc2UsIGJlZm9yZSBzd2l0Y2hpbmcgdG8gcHJvdGVjdGVkCiAqIG1vZGUsIHRoZSBMaW51eCBLZXJuZWwgbWFrZXMgYSBmZXcgQklPUyBjYWxscy4gVGhpcyB3b24ndCB3b3JrCiAqIGlmIHRoZSBib2FyZCBkb2VzIG5vdCBoYXZlIGEgQklPUy4KICoKICogVGhpcyBpcyBhIHZlcnkgbWluaW1hbGlzaWMgQklPUyB0aGF0IHN1cHBsaWVzIGp1c3QgZW5vdWdoCiAqIGZ1bmN0aW9uYWxpdHkgdG8ga2VlcCB0aGUgTGludXggS2VybmVsIGhhcHB5LiBJdCBpcyBOT1QKICogYSBnZW5lcmFsIHB1cnBvc2UgcmVwbGFjZW1lbnQgZm9yIGEgcmVhbCBCSU9TICEhCiAqLwoKCi5zZWN0aW9uIC5iaW9zLCAiYXgiCi5jb2RlMTYKLm9yZyAwCiAgICAgIAkvKiBhIGNhbGwgdG8gZjAwMDowIHNob3VsZCB3YXJtYm9vdCAqLwoJam1wCXJlYWxtb2RlX3Jlc2V0CgkKLmdsb2JsIHJtX2ludDAwCnJtX2ludDAwOgoJcHVzaHcJJDAKCWptcAlhbnlfaW50ZXJydXB0MTYKLmdsb2JsIHJtX2ludDAxCnJtX2ludDAxOgoJcHVzaHcJJDEKCWptcAlhbnlfaW50ZXJydXB0MTYKLmdsb2JsIHJtX2ludDAyCnJtX2ludDAyOgoJcHVzaHcJJDIKCWptcAlhbnlfaW50ZXJydXB0MTYKLmdsb2JsIHJtX2ludDAzCnJtX2ludDAzOgoJcHVzaHcJJDMKCWptcAlhbnlfaW50ZXJydXB0MTYKLmdsb2JsIHJtX2ludDA0CnJtX2ludDA0OgoJcHVzaHcJJDQKCWptcAlhbnlfaW50ZXJydXB0MTYKLmdsb2JsIHJtX2ludDA1CnJtX2ludDA1OgoJcHVzaHcJJDUKCWptcAlhbnlfaW50ZXJydXB0MTYKLmdsb2JsIHJtX2ludDA2CnJtX2ludDA2OgoJcHVzaHcJJDYKCWptcAlhbnlfaW50ZXJydXB0MTYKLmdsb2JsIHJtX2ludDA3CnJtX2ludDA3OgoJcHVzaHcJJDcKCWptcAlhbnlfaW50ZXJydXB0MTYKLmdsb2JsIHJtX2ludDA4CnJtX2ludDA4OgoJcHVzaHcJJDgKCWptcAlhbnlfaW50ZXJydXB0MTYKLmdsb2JsIHJtX2ludDA5CnJtX2ludDA5OgoJcHVzaHcJJDkKCWptcAlhbnlfaW50ZXJydXB0MTYKLmdsb2JsIHJtX2ludDBhCnJtX2ludDBhOgoJcHVzaHcJJDEwCglqbXAJYW55X2ludGVycnVwdDE2Ci5nbG9ibCBybV9pbnQwYgpybV9pbnQwYjoKCXB1c2h3CSQxMQoJam1wCWFueV9pbnRlcnJ1cHQxNgouZ2xvYmwgcm1faW50MGMKcm1faW50MGM6CglwdXNodwkkMTIKCWptcAlhbnlfaW50ZXJydXB0MTYKLmdsb2JsIHJtX2ludDBkCnJtX2ludDBkOgoJcHVzaHcJJDEzCglqbXAJYW55X2ludGVycnVwdDE2Ci5nbG9ibCBybV9pbnQwZQpybV9pbnQwZToKCXB1c2h3CSQxNAoJam1wCWFueV9pbnRlcnJ1cHQxNgouZ2xvYmwgcm1faW50MGYKcm1faW50MGY6CglwdXNodwkkMTUKCWptcAlhbnlfaW50ZXJydXB0MTYKLmdsb2JsIHJtX2ludDEwCnJtX2ludDEwOgoJcHVzaHcJJDE2CglqbXAJYW55X2ludGVycnVwdDE2Ci5nbG9ibCBybV9pbnQxMQpybV9pbnQxMToKCXB1c2h3CSQxNwoJam1wCWFueV9pbnRlcnJ1cHQxNgouZ2xvYmwgcm1faW50MTIKcm1faW50MTI6CglwdXNodwkkMTgKCWptcAlhbnlfaW50ZXJydXB0MTYKLmdsb2JsIHJtX2ludDEzCnJtX2ludDEzOgoJcHVzaHcJJDE5CglqbXAJYW55X2ludGVycnVwdDE2Ci5nbG9ibCBybV9pbnQxNApybV9pbnQxNDoKCXB1c2h3CSQyMAoJam1wCWFueV9pbnRlcnJ1cHQxNgouZ2xvYmwgcm1faW50MTUKcm1faW50MTU6CglwdXNodwkkMjEKCWptcAlhbnlfaW50ZXJydXB0MTYKLmdsb2JsIHJtX2ludDE2CnJtX2ludDE2OgoJcHVzaHcJJDIyCglqbXAJYW55X2ludGVycnVwdDE2Ci5nbG9ibCBybV9pbnQxNwpybV9pbnQxNzoKCXB1c2h3CSQyMwoJam1wCWFueV9pbnRlcnJ1cHQxNgouZ2xvYmwgcm1faW50MTgKcm1faW50MTg6CglwdXNodwkkMjQKCWptcAlhbnlfaW50ZXJydXB0MTYKLmdsb2JsIHJtX2ludDE5CnJtX2ludDE5OgoJcHVzaHcJJDI1CglqbXAJYW55X2ludGVycnVwdDE2Ci5nbG9ibCBybV9pbnQxYQpybV9pbnQxYToKCXB1c2h3CSQyNgoJam1wCWFueV9pbnRlcnJ1cHQxNgouZ2xvYmwgcm1faW50MWIKcm1faW50MWI6CglwdXNodwkkMjcKCWptcAlhbnlfaW50ZXJydXB0MTYKLmdsb2JsIHJtX2ludDFjCnJtX2ludDFjOgoJcHVzaHcJJDI4CglqbXAJYW55X2ludGVycnVwdDE2Ci5nbG9ibCBybV9pbnQxZApybV9pbnQxZDoKCXB1c2h3CSQyOQoJam1wCWFueV9pbnRlcnJ1cHQxNgouZ2xvYmwgcm1faW50MWUKcm1faW50MWU6CglwdXNodwkkMzAKCWptcAlhbnlfaW50ZXJydXB0MTYKLmdsb2JsIHJtX2ludDFmCnJtX2ludDFmOgoJcHVzaHcJJDMxCglqbXAJYW55X2ludGVycnVwdDE2Ci5nbG9ibCBybV9kZWZfaW50CnJtX2RlZl9pbnQ6CglpcmV0CgogCgkvKgoJICogQWxsIGludGVycnVwdCBqdW1wdGFibGUgZW50cmllcyBqdW1wIHRvIGhlcmUKCSAqIGFmdGVyIHB1c2hpbmcgdGhlIGludGVycnVwdCB2ZWN0b3IgbnVtYmVyIG9udG8gdGhlCgkgKiBzdGFjay4KCSAqLwphbnlfaW50ZXJydXB0MTY6CiAgICAgICAgTUFLRV9CSU9TX1NUQUNLCgpncwltb3Z3CU9GRlNfVkVDVE9SKCVicCksICVheAoJY21wdwkkMHgxMCwgJWF4CglqZQlMaW50XzEwaCAgICAgICAgIAoJY21wdwkkMHgxMSwgJWF4CglqZQlMaW50XzExaAoJY21wdwkkMHgxMiwgJWF4CglqZQlMaW50XzEyaAoJY21wdwkkMHgxMywgJWF4CglqZQlMaW50XzEzaAoJY21wdwkkMHgxNSwgJWF4CglqZQlMaW50XzE1aAoJY21wdwkkMHgxNiwgJWF4CglqZQlMaW50XzE2aAoJY21wdwkkMHgxYSwgJWF4CglqZQlMaW50XzFhaAoJbW92dwkkMHhmZmZmLCAlYXgKCWptcAlMb3V0CkxpbnRfMTBoOgkJCQkJLyogVkdBIEJJT1Mgc2VydmljZXMgKi8KCWNhbGwJYmlvc18xMGgKCWptcAlMb3V0CkxpbnRfMTFoOgkKCWNhbGwJYmlvc18xMWgKCWptcAlMb3V0CkxpbnRfMTJoOgkKCWNhbGwJYmlvc18xMmgKCWptcAlMb3V0CkxpbnRfMTNoOgkJCQkJLyogQklPUyBkaXNrIHNlcnZpY2VzICovCgljYWxsCWJpb3NfMTNoCglqbXAJTG91dApMaW50XzE1aDoJCQkJCS8qIE1pc2MuIEJJT1Mgc2VydmljZXMgKi8KCWNhbGwJYmlvc18xNWgKCWptcAlMb3V0CkxpbnRfMTZoOgkJCQkJLyoga2V5Ym9hcmQgc2VydmljZXMgKi8KCWNhbGwJYmlvc18xNmgKCWptcAlMb3V0CkxpbnRfMWFoOgkJCQkJLyogUENJIGJpb3MgKi8KCWNhbGwJYmlvc18xYWgKCWptcAlMb3V0CkxvdXQ6CQoJY21wdwkkMCwgJWF4CglqZQlMaGFuZGVsZWQKCQoJLyogSW5zZXJ0IGNvZGUgZm9yIHVuaGFuZGVsZWQgSU5UcyBoZXJlLgoJICoKCSAqIFJPTE8gcHJpbnRzIGEgbWVzc2FnZSB0byB0aGUgY29uc29sZSAKCSAqICh3ZSBjb3VsZCBkbyB0aGF0IGJ1dCB0aGVuIHdlJ3JlIGluIDE2Yml0IG1vZGUKCSAqIHNvIHdlJ2xsIGhhdmUgdG8gZ2V0IGJhY2sgaW50byAzMmJpdCBtb2RlCgkgKiB0byB1c2UgdGhlIGNvbnNvbGUgSS9PIHJvdXRpbmVzIChpZiB3ZSBkbyB0aGlzCgkgKiB3ZSBzaHVscyBtYWtlIGludCAweDEwIGFuZCBpbnQgMHgxNiB3b3JrIGFzIHdlbGwpKQoJICovCkxoYW5kZWxlZDoKCVJFU1RPUkVfQ0FMTEVSU19TVEFDSwoJYWRkdwkkMiwlc3AJCQkJLyogZHVtcCB2ZWN0b3IgbnVtYmVyICovCglpcmV0CQkJCQkvKiByZXR1cm4gZnJvbSBpbnRlcnJ1cHQgKi8KCgovKgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqIEJJT1MgCWludGVycnVwdCAxMGggLS0gVkdBIHNlcnZpY2VzCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICovCmJpb3NfMTBoOgpncwltb3Z3CU9GRlNfQVgoJWJwKSwgJWF4CglzaHJ3CSQ4LCAlYXgKCWNtcHcJJDB4MywgJWF4CglqZQlMY3VyX3BvcwoJY21wdwkkMHhmLCAlYXgKCWplCUx2aWRfc3RhdGUKCWNtcHcJJDB4MTIsICVheAoJamUJTHZpZF9jZmcKCW1vdncJJDB4ZmZmZiwgJWF4CglyZXQKTGN1cl9wb3M6CQkJCQkvKiBSZWFkIEN1cnNvciBQb3NpdGlvbiBhbmQgU2l6ZSAqLwpncwltb3Z3CSQwLCBPRkZTX0NYKCVicCkKZ3MJbW92dwkkMCwgT0ZGU19EWCglYnApCgl4b3J3CSVheCwgJWF4CglyZXQKTHZpZF9zdGF0ZToJCQkJCS8qIEdldCBWaWRlbyBTdGF0ZSAqLwpncwltb3Z3CSQoODAgPDwgOHwweDAzKSwgT0ZGU19BWCglYnApCS8qIDgwIGNvbHVtbnMsIDgweDI1LCAxNiBjb2xvcnMgKi8KZ3MJbW92dwkkMCwgT0ZGU19CWCglYnApCgl4b3J3CSVheCwgJWF4CglyZXQKTHZpZF9jZmc6CS8qIFZpZGVvIFN1YnN5c3RlbSBDb25maWd1cmF0aW9uIChFR0EvVkdBKSAqLwpncwltb3Z3CSQweDEwLCBPRkZTX0JYKCVicCkJCS8qIGluZGljYXRlIENHQS9NREEvSEdBICovCgl4b3J3CSVheCwgJWF4CglyZXQKCgovKgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqIEJJT1MgaW50ZXJydXB0IDExaCAtLSBFcXVpcG1lbnQgZGV0ZXJtaW5hdGlvbgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqLwoKYmlvc18xMWg6CmNzCW1vdncJYmlvc19lcXVpcG1lbnQsICVheApncwltb3Z3CSVheCwgT0ZGU19BWCglYnApICAKCXhvcncJJWF4LCAlYXgKCXJldAoKCi8qCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogQklPUyAJaW50ZXJydXB0IDEyaCAtLSBHZXQgTWVtb3J5IFNpemUKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKi8KYmlvc18xMmg6CmNzCW1vdncJcmFtX2luXzY0a2JfY2h1bmtzLCAlYXgKCWNtcHcJJDB4YSwgJWF4CglqYQliMTJfbW9yZV90aGFuXzY0MGsKCXNobHcJJDYsICVheAoJam1wCWIxMl9yZXR1cm4KYjEyX21vcmVfdGhhbl82NDBrOgoJbW92dwkkMHgyODAsICVheApiMTJfcmV0dXJuOgpncwltb3Z3CSVheCwgT0ZGU19BWCglYnApCQkvKiByZXR1cm4gbnVtYmVyIG9mIGtpbG9ieXRlcyBpbiBheCAqLwoKZ3MJbW92dwlPRkZTX0ZMQUdTKCVicCksICVheAoJYW5kdwkkMHhmZmZlLCAlYXgJCQkvKiBjbGVhciBjYXJyeSAtLSBmdW5jdGlvbiBzdWNjZWVkZWQgKi8KZ3MJbW92dwklYXgsIE9GRlNfRkxBR1MoJWJwKQoKCXhvcncJJWF4LCAlYXgKCXJldAoKCi8qCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogQklPUyBpbnRlcnJ1cHQgMTNoIC0tIERpc2sgc2VydmljZXMKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKi8KYmlvc18xM2g6CmdzCW1vdncJT0ZGU19BWCglYnApLCAlYXgKCXNocncJJDgsICVheAoJY21wdwkkMHgxNSwgJWF4CglqZQlMZnVuY18xNWgKCW1vdncJJDB4ZmZmZiwgJWF4CglyZXQKTGZ1bmNfMTVoOgkKZ3MJbW92dwlPRkZTX0FYKCVicCksICVheAoJYW5kdwkkMHhmZiwgJWF4CQkJLyogcmV0dXJuIEFIPTAtPmRyaXZlIG5vdCBwcmVzZW50ICovCmdzCW1vdncJJWF4LCBPRkZTX0FYKCVicCkKCXhvcncJJWF4LCAlYXgKCXJldAoJCgkKCi8qCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiBCSU9TIGludGVycnVwdCAxNWggLS0gTWlzY2VsbGFuZW91cyBzZXJ2aWNlcwogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICovCmJpb3NfMTVoOgpncwltb3Z3CU9GRlNfQVgoJWJwKSwgJWF4CglzaHJ3CSQ4LCAlYXgKCWNtcHcJJDB4YzAsICVheAoJamUJTGZ1bmNfYzBoCgljbXB3CSQweGU4LCAlYXgKCWplCUxmdW5jX2U4aAoJY21wdwkkMHg4OCwgJWF4CglqZQlMZnVuY184OGgKCW1vdncJJDB4ZmZmZiwgJWF4CglyZXQKCkxmdW5jX2MwaDogCQkJCQkvKiBSZXR1cm4gU3lzdGVtIENvbmZpZ3VyYXRpb24gUGFyYW1ldGVycyAoUFMyIG9ubHkpICovCmdzCW1vdncJT0ZGU19GTEFHUyglYnApLCAlYXgKCW9ydwkkMSwgJWF4CQkJCS8qIHJldHVybiBjYXJyeSAtLSBmdW5jdGlvbiBub3Qgc3VwcG9ydGVkICovCmdzCW1vdncJJWF4LCBPRkZTX0ZMQUdTKCVicCkKCXhvcncJJWF4LCAlYXgKCXJldAoJCkxmdW5jX2U4aDoKZ3MJbW92dwlPRkZTX0FYKCVicCksICVheAoJYW5kdwkkMHhmZiwgJWF4CgljbXB3CSQxLCAlYXgKCWplCUxmdW5jX2U4MDFoCmdzCW1vdncJT0ZGU19GTEFHUyglYnApLCAlYXgKCW9ydwkkMSwgJWF4CQkJCS8qIHJldHVybiBjYXJyeSAtLSBmdW5jdGlvbiBub3Qgc3VwcG9ydGVkICovCmdzCW1vdncJJWF4LCBPRkZTX0ZMQUdTKCVicCkKCXhvcncJJWF4LCAlYXgKCXJldAoJCkxmdW5jX2U4MDFoOgkJCQkJLyogR2V0IG1lbW9yeSBzaXplIGZvciA+NjRNIENvbmZpZ3VyYXRpb25zICovCmNzCW1vdncJcmFtX2luXzY0a2JfY2h1bmtzLCAlYXgKCWNtcHcJJDB4MTAwLCAlYXgKCWphCWU4MDFfbW9yZV90aGFuXzE2bWIKCXNobHcJJDYsICVheAkJCQkvKiBtdWx0aXBseSBieSA2NCAqLwoJc3VidwkkMHg0MDAsICVheAkJCS8qIDFzdCBtZWcgZG9lcyBub3QgY291bnQgKi8KIAkKZ3MJbW92dwklYXgsIE9GRlNfQVgoJWJwKSAgIAkJLyogcmV0dXJuIG1lbW9yeSBzaXplIGJldHdlZW4gMU0gYW5kIDE2TSBpbiAxa2IgY2h1bmtzIGluIEFYIGFuZCBDWCAqLwpncwltb3Z3CSVheCwgT0ZGU19DWCglYnApCmdzCW1vdncJJDAsIE9GRlNfQlgoJWJwKQkJLyogc2V0IEJYIGFuZCBEWCB0byAwKi8KZ3MJbW92dwkkMCwgT0ZGU19EWCglYnApCQpncwltb3Z3CU9GRlNfRkxBR1MoJWJwKSwgJWF4CglhbmR3CSQweGZmZmUsICVheAkJCS8qIGNsZWFyIGNhcnJ5IC0tIGZ1bmN0aW9uIHN1Y2NlZWRlZCAqLwpncwltb3Z3CSVheCwgT0ZGU19GTEFHUyglYnApCgl4b3J3CSVheCwgJWF4CglyZXQKCQplODAxX21vcmVfdGhhbl8xNm1iOgoJc3VidwkkMHgxMDAsICVheAkJCS8qIHN1YnRyYWN0IDE2TUIgKi8JCgkKZ3MJbW92dwkkMHgzYzAwLCBPRkZTX0FYKCVicCkJCS8qIHJldHVybiAweDNjMDAgKDE2TUItMU1CKSBpbiBBWCBhbmQgQ1ggKi8KZ3MJbW92dwkkMHgzYzAwLCBPRkZTX0NYKCVicCkKZ3MJbW92dwklYXgsIE9GRlNfQlgoJWJwKQkJLyogc2V0IEJYIGFuZCBEWCB0byBudW1iZXIgb2YgNjRrYiBjaHVua3MgYWJvdmUgMTZNQiAqLwpncwltb3Z3CSVheCwgT0ZGU19EWCglYnApCQoKZ3MJbW92dwlPRkZTX0ZMQUdTKCVicCksICVheAoJYW5kdwkkMHhmZmZlLCAlYXgJCQkvKiBjbGVhciBjYXJyeSAtLSBmdW5jdGlvbiBzdWNjZWVkZWQgKi8KZ3MJbW92dwklYXgsIE9GRlNfRkxBR1MoJWJwKQoJeG9ydwklYXgsICVheAoJcmV0CgpMZnVuY184OGg6CmNzCW1vdncJcmFtX2luXzY0a2JfY2h1bmtzLCAlYXgKCWNtcHcJJDB4MTAwLCAlYXgKCWpuYQliODhfbm90X21vcmVfdGhhbjE2Cgltb3Z3CSQweDEwMCwgJWF4CmI4OF9ub3RfbW9yZV90aGFuMTY6CglzaGx3CSQ2LCAlYXgKCXN1YncJJDB4NDAwLCAlYXgJCQkvKiAxc3QgbWVnIGRvZXMgbm90IGNvdW50ICovCgkJCmdzCW1vdncJJWF4LCBPRkZTX0FYKCVicCkJCS8qIHJldHVybiBudW1iZXIgb2Yga2lsb2J5dGVzIGJldHdlZW4gMTZNQiBhbmQgMTZNQiBpbiBheCAqLwoKZ3MJbW92dwlPRkZTX0ZMQUdTKCVicCksICVheAoJYW5kdwkkMHhmZmZlLCAlYXgJCQkvKiBjbGVhciBjYXJyeSAtLSBmdW5jdGlvbiBzdWNjZWVkZWQgKi8KZ3MJbW92dwklYXgsIE9GRlNfRkxBR1MoJWJwKQoKCXhvcncJJWF4LCAlYXgKCXJldAoKCi8qCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogQklPUyBpbnRlcnJ1cHQgMTZoIC0tIGtleWJvYXJkIHNlcnZpY2VzCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICovCmJpb3NfMTZoOgpncwltb3Z3CU9GRlNfQVgoJWJwKSwgJWF4CglzaHJ3CSQ4LCAlYXgKCWNtcHcJJDB4MDMsICVheAoJamUJTGZ1bmNfMDNoCgltb3Z3CSQweGZmZmYsICVheAoJcmV0CkxmdW5jXzAzaDoKCXhvcncJJWF4LCAlYXgJCQkvKiBkbyBub3RoaW5nIC0tIGZ1bmN0aW9uIG5vdCBzdXBwb3J0ZWQgKi8KCXJldAoKLyoKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiBCSU9TIGludGVycnVwdCAxYWggLS0gUENJIGJpb3MKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKi8KYmlvc18xYWg6CmdzCW1vdncJT0ZGU19BWCglYnApLCAlYXgKCWNtcGIJJDB4YjEsICVhaAoJamUJTGZ1bmNfYjFoCgltb3Z3CSQweGZmZmYsICVheAoJcmV0CkxmdW5jX2IxaDoKCWNhbGwJcmVhbG1vZGVfcGNpX2Jpb3MKCXhvcncJJWF4LCAlYXgJCQkvKiBkbyBub3RoaW5nIC0tIGZ1bmN0aW9uIG5vdCBzdXBwb3J0ZWQgKi8KCXJldAoKCi5nbG9ibCByYW1faW5fNjRrYl9jaHVua3MKcmFtX2luXzY0a2JfY2h1bmtzOgoJLndvcmQgCTAKCi5nbG9ibCBiaW9zX2VxdWlwbWVudApiaW9zX2VxdWlwbWVudDoKCS53b3JkIAkwCgo=