From mboxrd@z Thu Jan 1 00:00:00 1970 From: Oleksandr Andrushchenko Subject: [PATCH v3] displif: add ABI for para-virtual display Date: Fri, 10 Feb 2017 09:29:58 +0200 Message-ID: <1486711798-32322-2-git-send-email-andr2000@gmail.com> References: <1486711798-32322-1-git-send-email-andr2000@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta5.messagelabs.com ([195.245.231.135]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cc5ek-0005jr-Va for xen-devel@lists.xenproject.org; Fri, 10 Feb 2017 07:30:11 +0000 Received: by mail-lf0-f67.google.com with SMTP id h65so2185021lfi.3 for ; Thu, 09 Feb 2017 23:30:09 -0800 (PST) In-Reply-To: <1486711798-32322-1-git-send-email-andr2000@gmail.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: vlad.babchuk@gmail.com, Oleksandr Andrushchenko , andrii.anisov@gmail.com, olekstysh@gmail.com, andr2000@gmail.com, al1img@gmail.com, Oleksandr Grytsov , joculator@gmail.com List-Id: xen-devel@lists.xenproject.org RnJvbTogT2xla3NhbmRyIEFuZHJ1c2hjaGVua28gPG9sZWtzYW5kcl9hbmRydXNoY2hlbmtvQGVw YW0uY29tPgoKVGhpcyBpcyB0aGUgQUJJIGZvciB0aGUgdHdvIGhhbHZlcyBvZiBhIHBhcmEtdmly dHVhbGl6ZWQKZGlzcGxheSBkcml2ZXIuCgpUaGlzIHByb3RvY29sIGFpbXMgdG8gcHJvdmlkZSBh IHVuaWZpZWQgcHJvdG9jb2wgd2hpY2ggZml0cyBtb3JlCnNvcGhpc3RpY2F0ZWQgdXNlLWNhc2Vz IHRoYW4gYSBmcmFtZWJ1ZmZlciBkZXZpY2UgY2FuIGhhbmRsZS4gQXQgdGhlCm1vbWVudCBiYXNp YyBmdW5jdGlvbmFsaXR5IGlzIHN1cHBvcnRlZCB3aXRoIHRoZSBpbnRlbnRpb24gdG8gZXh0ZW5k OgogIG8gbXVsdGlwbGUgZHluYW1pY2FsbHkgYWxsb2NhdGVkL2Rlc3Ryb3llZCBmcmFtZWJ1ZmZl cnMKICBvIGJ1ZmZlcnMgb2YgYXJiaXRyYXJ5IHNpemVzCiAgbyBiZXR0ZXIgY29uZmlndXJhdGlv biBvcHRpb25zIGluY2x1ZGluZyBtdWx0aXBsZSBkaXNwbGF5IHN1cHBvcnQKCk5vdGU6IGV4aXN0 aW5nIGZiaWYgY2FuIGJlIHVzZWQgdG9nZXRoZXIgd2l0aCBkaXNwbGlmIHJ1bm5pbmcgYXQgdGhl CnNhbWUgdGltZSwgZS5nLiBvbiBMaW51eCBvbmUgcHJvdmlkZXMgZnJhbWVidWZmZXIgYW5kIGFu b3RoZXIgRFJNL0tNUwoKRnV0dXJlIGV4dGVuc2lvbnMgdG8gdGhlIGV4aXN0aW5nIHByb3RvY29s IG1heSBpbmNsdWRlOgogIG8gYWxsb3cgZGlzcGxheS9jb25uZWN0b3IgY2xvbmluZwogIG8gYWxs b3cgYWxsb2NhdGluZyBvYmplY3RzIG90aGVyIHRoYW4gZGlzcGxheSBidWZmZXJzCiAgbyBhZGQg cGxhbmVzL292ZXJsYXlzIHN1cHBvcnQKICBvIHN1cHBvcnQgc2NhbGluZwogIG8gc3VwcG9ydCBy b3RhdGlvbgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KUmF0aW9uYWxlIGZvciBpbnRyb2R1Y2luZyB0aGlzIHByb3RvY29sIGluc3RlYWQgb2YKdXNp bmcgdGhlIGV4aXN0aW5nIGZiaWY6Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09CgoxLiBJbi9vdXQgZXZlbnQgc2l6ZXMKICBvIGZiaWYgLSA0MCBvY3Rl dHMKICBvIGRpc3BsaWYgLSA0MCBvY3RldHMKVGhpcyBpcyBvbmx5IHRoZSBpbml0aWFsIHZlcnNp b24gb2YgdGhlIGRpc3BsaWYgcHJvdG9jb2wKd2hpY2ggbWVhbnMgdGhhdCB0aGVyZSBjb3VsZCBi ZSByZXF1ZXN0cyB3aGljaCB3aWxsIG5vdCBmaXQKKFdSVCBpbnRyb2R1Y2luZyBzb21lIEdQVSBy ZWxhdGVkIGZ1bmN0aW9uYWxpdHkKbGF0ZXIgb24pLiBJbiB0aGF0IGNhc2Ugd2UgY2Fubm90IGFs dGVyIGZiaWYgc2l6ZXMgYXMgd2UgbmVlZCB0bwpiZSBiYWNrd2FyZCBjb21wYXRpYmxlIGFuIHdp bGwgYmUgZm9yY2VkIHRvIGhhbmRsZSB0aG9zZQphcGFydCBvZiBmYmlmLgoKMi4gU2hhcmVkIHBh Z2UKRGlzcGxpZiBkb2Vzbid0IHVzZSBhbnl0aGluZyBsaWtlIHN0cnVjdCB4ZW5mYl9wYWdlLCBi dXQKREVGSU5FX1JJTkdfVFlQRVMoeGVuX2Rpc3BsaWYsIHN0cnVjdCB4ZW5kaXNwbF9yZXEsIHN0 cnVjdAp4ZW5kaXNwbF9yZXNwKSB3aGljaCBpcyBhIGJldHRlciBhbmQgbW9yZSBjb21tb24gd2F5 LgpPdXRwdXQgZXZlbnRzIHVzZSBhIHNoYXJlZCBwYWdlIHdoaWNoIG9ubHkgaGFzIGluX2NvbnMg YW5kIGluX3Byb2QKYW5kIGFsbCB0aGUgcmVzdCBpcyB1c2VkIGZvciBpbmNvbWluZyBldmVudHMu IEhlcmUgc3RydWN0IHhlbmZiX3BhZ2UKY291bGQgcHJvYmFibHkgYmUgdXNlZCBhcyBpcyBkZXNw aXRlIHRoZSBmYWN0IHRoYXQgaXQgb25seSBoYXMgYSBoYWxmCm9mIGEgcGFnZSBmb3IgaW5jb21p bmcgZXZlbnRzIHdoaWNoIGlzIG9ubHkgNTAgZXZlbnRzLiAoY29uc2lkZXIKc29tZXRoaW5nIGxp a2UgNjBIeiBkaXNwbGF5KQoKMy4gQW1vdW50IG9mIGNoYW5nZXMuCmZiaWYgb25seSBwcm92aWRl cyBYRU5GQl9UWVBFX1VQREFURSBhbmQgWEVORkJfVFlQRV9SRVNJWkUKZXZlbnRzLCBzbyBpdCBs b29rcyBsaWtlIGl0IGlzIGVhc2llciB0byBnZXQgZmIgc3VwcG9ydCBpbnRvIGRpc3BsaWYKdGhh biB2aWNlIHZlcnNhLiBkaXNwbGlmIGF0IHRoZSBtb21lbnQgaGFzIDYgcmVxdWVzdHMgYW5kIDEg ZXZlbnQsCm11bHRpcGxlIGNvbm5lY3RvciBzdXBwb3J0LCBldGMuCgpDaGFuZ2VzIHNpbmNlIHYy OgogKiB1cGRhdGVkIFhlblN0b3JlIGNvbmZpZ3VyYXRpb24gdGVtcGxhdGUvcGF0dGVybgogKiBh ZGRlZCAiUmVjb3ZlcnkgZmxvdyIgdG8gc3RhdGUgZGlhZ3JhbSBkZXNjcmlwdGlvbgogKiByZW5h bWVkIGdyZWZfZGlyZWN0b3J5X3N0YXJ0IHRvIGdyZWZfZGlyZWN0b3J5CiAqIGFkZGVkIG1pc3Np bmcgInZlcnNpb25zIiBhbmQgInZlcnNpb24iIHN0cmluZyBjb25zdGFudHMKCkNoYW5nZXMgc2lu Y2UgdjE6CiAqIGZpeGVkIHhlbmRpc3BsX2V2ZW50X3BhZ2UgcGFkZGluZyBzaXplCiAqIGFkZGVk IHZlcnNpb25pbmcgc3VwcG9ydAogKiBleHBsaWNpdGx5IGRlZmluZSB2YWx1ZSB0eXBlcyBmb3Ig WGVuU3RvcmUgZmllbGRzCiAqIHRleHQgZGVjb3JhdGlvbiByZS13b3JrCiAqIGFkZGVkIG9mZnNl dHMgdG8gQVNDSUkgYm94IG5vdGF0aW9uCgpDaGFuZ2VzIHNpbmNlIGluaXRpYWw6CiAqIERSTSBj aGFuZ2VkIHRvIERJU1BMLCBwcm90b2NvbCBtYWRlIGdlbmVyaWMKICogbWFqb3IgcmUtd29yayBh ZGRyZXNzaW5nIGlzc3VlcyByYWlzZWQgZm9yIHNuZGlmCgpTaWduZWQtb2ZmLWJ5OiBPbGVrc2Fu ZHIgR3J5dHNvdiA8b2xla3NhbmRyX2dyeXRzb3ZAZXBhbS5jb20+ClNpZ25lZC1vZmYtYnk6IE9s ZWtzYW5kciBBbmRydXNoY2hlbmtvIDxvbGVrc2FuZHJfYW5kcnVzaGNoZW5rb0BlcGFtLmNvbT4K LS0tCiB4ZW4vaW5jbHVkZS9wdWJsaWMvaW8vZGlzcGxpZi5oIHwgNzc4ICsrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysKIDEgZmlsZSBjaGFuZ2VkLCA3NzggaW5zZXJ0aW9u cygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHhlbi9pbmNsdWRlL3B1YmxpYy9pby9kaXNwbGlmLmgK CmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9wdWJsaWMvaW8vZGlzcGxpZi5oIGIveGVuL2luY2x1 ZGUvcHVibGljL2lvL2Rpc3BsaWYuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwMDAuLjg0OWYyN2ZlNWYxZAotLS0gL2Rldi9udWxsCisrKyBiL3hlbi9pbmNsdWRlL3B1Ymxp Yy9pby9kaXNwbGlmLmgKQEAgLTAsMCArMSw3NzggQEAKKy8qKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioK KyAqIGRpc3BsaWYuaAorICoKKyAqIFVuaWZpZWQgZGlzcGxheSBkZXZpY2UgSS9PIGludGVyZmFj ZSBmb3IgWGVuIGd1ZXN0IE9TZXMuCisgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRl ZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQorICogb2Yg dGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNv ZnR3YXJlIiksIHRvCisgKiBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9u LCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZQorICogcmlnaHRzIHRvIHVzZSwgY29w eSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29y CisgKiBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0 byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRv IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5v dGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorICog YWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisgKgor ICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0Yg QU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlU RUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hB TEwgVEhFCisgKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5Z IENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNU SU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORworICogRlJPTSwgT1VU IE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhF UgorICogREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgorICoKKyAqIENvcHlyaWdodCAoQykgMjAx Ni0yMDE3IEVQQU0gU3lzdGVtcyBJbmMuCisgKgorICogQXV0aG9yczogT2xla3NhbmRyIEFuZHJ1 c2hjaGVua28gPG9sZWtzYW5kcl9hbmRydXNoY2hlbmtvQGVwYW0uY29tPgorICogICAgICAgICAg T2xla3NhbmRyIEdyeXRzb3YgPG9sZWtzYW5kcl9ncnl0c292QGVwYW0uY29tPgorICovCisKKyNp Zm5kZWYgX19YRU5fUFVCTElDX0lPX0RJU1BMSUZfSF9fCisjZGVmaW5lIF9fWEVOX1BVQkxJQ19J T19ESVNQTElGX0hfXworCisjaW5jbHVkZSAicmluZy5oIgorI2luY2x1ZGUgIi4uL2dyYW50X3Rh YmxlLmgiCisKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAgICAgICAgICAgICAgICAg IE1haW4gZmVhdHVyZXMgcHJvdmlkZWQgYnkgdGhlIHByb3RvY29sCisgKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqCisgKiBUaGlzIHByb3RvY29sIGFpbXMgdG8gcHJvdmlkZSBhIHVuaWZpZWQgcHJvdG9j b2wgd2hpY2ggZml0cyBtb3JlCisgKiBzb3BoaXN0aWNhdGVkIHVzZS1jYXNlcyB0aGFuIGEgZnJh bWVidWZmZXIgZGV2aWNlIGNhbiBoYW5kbGUuIEF0IHRoZQorICogbW9tZW50IGJhc2ljIGZ1bmN0 aW9uYWxpdHkgaXMgc3VwcG9ydGVkIHdpdGggdGhlIGludGVudGlvbiB0byBiZSBleHRlbmRlZDoK KyAqICBvIG11bHRpcGxlIGR5bmFtaWNhbGx5IGFsbG9jYXRlZC9kZXN0cm95ZWQgZnJhbWVidWZm ZXJzCisgKiAgbyBidWZmZXJzIG9mIGFyYml0cmFyeSBzaXplcworICogIG8gYnVmZmVyIGFsbG9j YXRpb24gYXQgZWl0aGVyIGJhY2sgb3IgZnJvbnQgZW5kCisgKiAgbyBiZXR0ZXIgY29uZmlndXJh dGlvbiBvcHRpb25zIGluY2x1ZGluZyBtdWx0aXBsZSBkaXNwbGF5IHN1cHBvcnQKKyAqCisgKiBO b3RlOiBleGlzdGluZyBmYmlmIGNhbiBiZSB1c2VkIHRvZ2V0aGVyIHdpdGggZGlzcGxpZiBydW5u aW5nIGF0IHRoZQorICogc2FtZSB0aW1lLCBlLmcuIG9uIExpbnV4IG9uZSBwcm92aWRlcyBmcmFt ZWJ1ZmZlciBhbmQgYW5vdGhlciBEUk0vS01TCisgKgorICoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgor ICogICAgICAgICAgICAgICAgICAgICAgICBEaXJlY3Rpb24gb2YgaW1wcm92ZW1lbnRzCisgKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqCisgKiBGdXR1cmUgZXh0ZW5zaW9ucyB0byB0aGUgZXhpc3Rpbmcg cHJvdG9jb2wgbWF5IGluY2x1ZGU6CisgKiAgbyBkaXNwbGF5L2Nvbm5lY3RvciBjbG9uaW5nCisg KiAgbyBhbGxvY2F0aW9uIG9mIG9iamVjdHMgb3RoZXIgdGhhbiBkaXNwbGF5IGJ1ZmZlcnMKKyAq ICBvIHBsYW5lL292ZXJsYXkgc3VwcG9ydAorICogIG8gc2NhbGluZyBzdXBwb3J0CisgKiAgbyBy b3RhdGlvbiBzdXBwb3J0CisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogICAgICAgICAg ICAgICAgICBGZWF0dXJlIGFuZCBQYXJhbWV0ZXIgTmVnb3RpYXRpb24KKyAqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioKKyAqCisgKiBGcm9udC0+YmFjayBub3RpZmljYXRpb25zOiB3aGVuIGVucXVldWlu ZyBhIG5ldyByZXF1ZXN0LCBzZW5kaW5nIGEKKyAqIG5vdGlmaWNhdGlvbiBjYW4gYmUgbWFkZSBj b25kaXRpb25hbCBvbiB4ZW5kaXNwbF9yZXEgKGkuZS4sIHRoZSBnZW5lcmljCisgKiBob2xkLW9m ZiBtZWNoYW5pc20gcHJvdmlkZWQgYnkgdGhlIHJpbmcgbWFjcm9zKS4gQmFja2VuZHMgbXVzdCBz ZXQKKyAqIHhlbmRpc3BsX3JlcSBhcHByb3ByaWF0ZWx5IChlLmcuLCB1c2luZyBSSU5HX0ZJTkFM X0NIRUNLX0ZPUl9SRVFVRVNUUygpKS4KKyAqCisgKiBCYWNrLT5mcm9udCBub3RpZmljYXRpb25z OiB3aGVuIGVucXVldWluZyBhIG5ldyByZXNwb25zZSwgc2VuZGluZyBhCisgKiBub3RpZmljYXRp b24gY2FuIGJlIG1hZGUgY29uZGl0aW9uYWwgb24geGVuZGlzcGxfcmVzcCAoaS5lLiwgdGhlIGdl bmVyaWMKKyAqIGhvbGQtb2ZmIG1lY2hhbmlzbSBwcm92aWRlZCBieSB0aGUgcmluZyBtYWNyb3Mp LiBGcm9udGVuZHMgbXVzdCBzZXQKKyAqIHhlbmRpc3BsX3Jlc3AgYXBwcm9wcmlhdGVseSAoZS5n LiwgdXNpbmcgUklOR19GSU5BTF9DSEVDS19GT1JfUkVTUE9OU0VTKCkpLgorICoKKyAqIFRoZSB0 d28gaGFsdmVzIG9mIGEgcGFyYS12aXJ0dWFsIGRpc3BsYXkgZHJpdmVyIHV0aWxpemUgbm9kZXMg d2l0aGluCisgKiBYZW5TdG9yZSB0byBjb21tdW5pY2F0ZSBjYXBhYmlsaXRpZXMgYW5kIHRvIG5l Z290aWF0ZSBvcGVyYXRpbmcgcGFyYW1ldGVycy4KKyAqIFRoaXMgc2VjdGlvbiBlbnVtZXJhdGVz IHRoZXNlIG5vZGVzIHdoaWNoIHJlc2lkZSBpbiB0aGUgcmVzcGVjdGl2ZSBmcm9udCBhbmQKKyAq IGJhY2tlbmQgcG9ydGlvbnMgb2YgWGVuU3RvcmUsIGZvbGxvd2luZyB0aGUgWGVuQnVzIGNvbnZl bnRpb24uCisgKgorICogQWxsIGRhdGEgaW4gWGVuU3RvcmUgaXMgc3RvcmVkIGFzIHN0cmluZ3Mu IE5vZGVzIHNwZWNpZnlpbmcgbnVtZXJpYworICogdmFsdWVzIGFyZSBlbmNvZGVkIGluIGRlY2lt YWwuIEludGVnZXIgdmFsdWUgcmFuZ2VzIGxpc3RlZCBiZWxvdyBhcmUKKyAqIGV4cHJlc3NlZCBh cyBmaXhlZCBzaXplZCBpbnRlZ2VyIHR5cGVzIGNhcGFibGUgb2Ygc3RvcmluZyB0aGUgY29udmVy c2lvbgorICogb2YgYSBwcm9wZXJseSBmb3JtYXRlZCBub2RlIHN0cmluZywgd2l0aG91dCBsb3Nz IG9mIGluZm9ybWF0aW9uLgorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICAgICAgICAg ICAgICAgICAgICAgICAgRXhhbXBsZSBjb25maWd1cmF0aW9uCisgKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqCisgKgorICogTm90ZTogZGVwZW5kaW5nIG9uIHRoZSB1c2UtY2FzZSBiYWNrZW5kIGNhbiBl eHBvc2UgbW9yZSBkaXNwbGF5IGNvbm5lY3RvcnMKKyAqIHRoYW4gdGhlIHVuZGVybHlpbmcgSFcg cGh5c2ljYWxseSBoYXMgYnkgZW1wbG95aW5nIFNXIGdyYXBoaWNzIGNvbXBvc2l0b3JzCisgKgor ICogVGhpcyBpcyBhbiBleGFtcGxlIG9mIGJhY2tlbmQgYW5kIGZyb250ZW5kIGNvbmZpZ3VyYXRp b246CisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQmFja2VuZCAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIC9sb2NhbC9kb21haW4vMC9i YWNrZW5kL3ZkaXNwbC8xLzAvZnJvbnRlbmQtaWQgPSAiMSIKKyAqIC9sb2NhbC9kb21haW4vMC9i YWNrZW5kL3ZkaXNwbC8xLzAvZnJvbnRlbmQgPSAiL2xvY2FsL2RvbWFpbi8xL2RldmljZS92ZGlz cGwvMCIKKyAqIC9sb2NhbC9kb21haW4vMC9iYWNrZW5kL3ZkaXNwbC8xLzAvc3RhdGUgPSAiNCIK KyAqIC9sb2NhbC9kb21haW4vMC9iYWNrZW5kL3ZkaXNwbC8xLzAvdmVyc2lvbnMgPSAiMSwyIgor ICogL2xvY2FsL2RvbWFpbi8wL2JhY2tlbmQvdmRpc3BsLzEvMC9mZWF0dXJlcyA9ICJiZV9hbGxv YyIKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBGcm9udGVuZCAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogL2xvY2FsL2RvbWFpbi8xL2Rl dmljZS92ZGlzcGwvMC9iYWNrZW5kLWlkID0gIjAiCisgKiAvbG9jYWwvZG9tYWluLzEvZGV2aWNl L3ZkaXNwbC8wL2JhY2tlbmQgPSAiL2xvY2FsL2RvbWFpbi8wL2JhY2tlbmQvdmRpc3BsLzEvMCIK KyAqIC9sb2NhbC9kb21haW4vMS9kZXZpY2UvdmRpc3BsLzAvc3RhdGUgPSAiNCIKKyAqIC9sb2Nh bC9kb21haW4vMS9kZXZpY2UvdmRpc3BsLzAvdmVyc2lvbiA9ICIxIgorICoKKyAqLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0gQ29ubmVjdG9yIDAgY29uZmlndXJhdGlvbiAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAqCisgKiAvbG9jYWwvZG9tYWluLzEvZGV2aWNlL3ZkaXNwbC8wLzAvcmVz b2x1dGlvbiA9ICIxOTIweDEwODAiCisgKiAvbG9jYWwvZG9tYWluLzEvZGV2aWNlL3ZkaXNwbC8w LzAvY3RybC1yaW5nLXJlZiA9ICIyODMyIgorICogL2xvY2FsL2RvbWFpbi8xL2RldmljZS92ZGlz cGwvMC8wL2N0cmwtY2hhbm5lbCA9ICIxNSIKKyAqIC9sb2NhbC9kb21haW4vMS9kZXZpY2UvdmRp c3BsLzAvMC9ldmVudC1yaW5nLXJlZiA9ICIzODciCisgKiAvbG9jYWwvZG9tYWluLzEvZGV2aWNl L3ZkaXNwbC8wLzAvZXZlbnQtY2hhbm5lbCA9ICIxNiIKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tIENvbm5lY3RvciAxIGNvbmZpZ3VyYXRpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgKgorICogL2xvY2FsL2RvbWFpbi8xL2RldmljZS92ZGlzcGwvMC8xL3Jlc29sdXRpb24g PSAiODAweDYwMCIKKyAqIC9sb2NhbC9kb21haW4vMS9kZXZpY2UvdmRpc3BsLzAvMS9jdHJsLXJp bmctcmVmID0gIjI4MzMiCisgKiAvbG9jYWwvZG9tYWluLzEvZGV2aWNlL3ZkaXNwbC8wLzEvY3Ry bC1jaGFubmVsID0gIjE3IgorICogL2xvY2FsL2RvbWFpbi8xL2RldmljZS92ZGlzcGwvMC8xL2V2 ZW50LXJpbmctcmVmID0gIjM4OCIKKyAqIC9sb2NhbC9kb21haW4vMS9kZXZpY2UvdmRpc3BsLzAv MS9ldmVudC1jaGFubmVsID0gIjE4IgorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICAg ICAgICAgICAgICAgICAgICAgICAgICAgIEJhY2tlbmQgWGVuQnVzIE5vZGVzCisgKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQcm90b2Nv bCB2ZXJzaW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIHZlcnNpb25z CisgKiAgICAgIFZhbHVlczogICAgICAgICA8c3RyaW5nPgorICoKKyAqICAgICAgTGlzdCBvZiBY RU5ESVNQTF9MSVNUX1NFUEFSQVRPUiBzZXBhcmF0ZWQgcHJvdG9jb2wgdmVyc2lvbnMgc3VwcG9y dGVkCisgKiAgICAgIGJ5IHRoZSBiYWNrZW5kLiBGb3IgZXhhbXBsZSAiMSwyLDMiLgorICoKKyAq IGZlYXR1cmVzCisgKiAgICAgIFZhbHVlczogICAgICAgICA8bGlzdCBvZiBzdHJpbmdzPgorICoK KyAqICAgICAgWEVORElTUExfTElTVF9TRVBBUkFUT1Igc2VwYXJhdGVkIGxpc3Qgb2YgZmVhdHVy ZXMKKyAqICAgICAgWEVORElTUExfRkVBVFVSRV9CRV8/Pz8gdGhhdCB0aGUgYmFja2VuZCBzdXBw b3J0cy4KKyAqCisgKiAgICAgIGJlX2FsbG9jCisgKiAgICAgICAgICAgICBCYWNrZW5kIGNhbiBi ZSBhIGJ1ZmZlciBwcm92aWRlci9hbGxvY2F0b3IgZHVyaW5nCisgKiAgICAgICAgICAgICBYRU5E SVNQTF9PUF9EQlVGX0NSRUFURSBvcGVyYXRpb24gKHNlZSBiZWxvdyBmb3IgbmVnb3RpYXRpb24p LgorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICAgICAgICAgICAgICAgICAgICAgICAg ICAgIEZyb250ZW5kIFhlbkJ1cyBOb2RlcworICoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAq LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQWRkcmVzc2luZyAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBkb20taWQKKyAqICAgICAgVmFsdWVzOiAgICAg ICAgIDx1aW50MTZfdD4KKyAqCisgKiAgICAgIERvbWFpbiBpZGVudGlmaWVyLgorICoKKyAqIGRl di1pZAorICogICAgICBWYWx1ZXM6ICAgICAgICAgPHVpbnQxNl90PgorICoKKyAqICAgICAgRGV2 aWNlIGlkZW50aWZpZXIuCisgKgorICogY29ubi1pZHgKKyAqICAgICAgVmFsdWVzOiAgICAgICAg IDx1aW50OF90PgorICoKKyAqICAgICAgWmVybyBiYXNlZCBjb250aWdvdXMgaW5kZXggb2YgdGhl IGNvbm5lY3Rvci4KKyAqICAgICAgL2xvY2FsL2RvbWFpbi88ZG9tLWlkPi9kZXZpY2UvdmRpc3Bs LzxkZXYtaWQ+Lzxjb25uLWlkeD4vLi4uCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSBQcm90b2NvbCB2ZXJzaW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoK KyAqIHZlcnNpb24KKyAqICAgICAgVmFsdWVzOiAgICAgICAgIDxzdHJpbmc+CisgKgorICogICAg ICBQcm90b2NvbCB2ZXJzaW9uLCBjaG9zZW4gYW1vbmcgdGhlIG9uZXMgc3VwcG9ydGVkIGJ5IHRo ZSBiYWNrZW5kLgorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQ29ubmVjdG9y IHNldHRpbmdzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiByZXNvbHV0aW9u CisgKiAgICAgIFZhbHVlczogICAgICAgICA8d2lkdGgsIHVpbnQzMl90Png8aGVpZ2h0LCB1aW50 MzJfdD4KKyAqCisgKiAgICAgIFdpZHRoIGFuZCBoZWlnaHQgb2YgdGhlIGNvbm5lY3RvciBpbiBw aXhlbHMgc2VwYXJhdGVkIGJ5CisgKiAgICAgIFhFTkRJU1BMX1JFU09MVVRJT05fU0VQQVJBVE9S LgorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tIENvbm5lY3RvciBSZXF1ZXN0IFRyYW5zcG9ydCBQ YXJhbWV0ZXJzIC0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBjdHJsLWNoYW5uZWwKKyAqICAg ICAgVmFsdWVzOiAgICAgICAgIDx1aW50MzJfdD4KKyAqCisgKiAgICAgIFRoZSBpZGVudGlmaWVy IG9mIHRoZSBYZW4gY29ubmVjdG9yJ3MgY29udHJvbCBldmVudCBjaGFubmVsCisgKiAgICAgIHVz ZWQgdG8gc2lnbmFsIGFjdGl2aXR5IGluIHRoZSByaW5nIGJ1ZmZlci4KKyAqCisgKiBjdHJsLXJp bmctcmVmCisgKiAgICAgIFZhbHVlczogICAgICAgICA8dWludDMyX3Q+CisgKgorICogICAgICBU aGUgWGVuIGdyYW50IHJlZmVyZW5jZSBncmFudGluZyBwZXJtaXNzaW9uIGZvciB0aGUgYmFja2Vu ZCB0byBtYXAKKyAqICAgICAgYSBzb2xlIHBhZ2UgaW4gYSBzaW5nbGUgcGFnZSBzaXplZCBjb25u ZWN0b3IncyBjb250cm9sIHJpbmcgYnVmZmVyLgorICoKKyAqIGV2ZW50LWNoYW5uZWwKKyAqICAg ICAgVmFsdWVzOiAgICAgICAgIDx1aW50MzJfdD4KKyAqCisgKiAgICAgIFRoZSBpZGVudGlmaWVy IG9mIHRoZSBYZW4gY29ubmVjdG9yJ3MgZXZlbnQgY2hhbm5lbAorICogICAgICB1c2VkIHRvIHNp Z25hbCBhY3Rpdml0eSBpbiB0aGUgcmluZyBidWZmZXIuCisgKgorICogZXZlbnQtcmluZy1yZWYK KyAqICAgICAgVmFsdWVzOiAgICAgICAgIDx1aW50MzJfdD4KKyAqCisgKiAgICAgIFRoZSBYZW4g Z3JhbnQgcmVmZXJlbmNlIGdyYW50aW5nIHBlcm1pc3Npb24gZm9yIHRoZSBiYWNrZW5kIHRvIG1h cAorICogICAgICBhIHNvbGUgcGFnZSBpbiBhIHNpbmdsZSBwYWdlIHNpemVkIGNvbm5lY3Rvcidz IGV2ZW50IHJpbmcgYnVmZmVyLgorICovCisKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisg KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVEFURSBESUFHUkFNUworICoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKgorICoKKyAqIFRvb2wgc3RhY2sgY3JlYXRlcyBmcm9udCBhbmQgYmFjayBz dGF0ZSBub2RlcyB3aXRoIGluaXRpYWwgc3RhdGUKKyAqIFhlbmJ1c1N0YXRlSW5pdGlhbGlzaW5n LgorICogVG9vbCBzdGFjayBjcmVhdGVzIGFuZCBzZXRzIHVwIGZyb250ZW5kIGRpc3BsYXkgY29u ZmlndXJhdGlvbgorICogbm9kZXMgcGVyIGRvbWFpbi4KKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tIE5vcm1hbCBmbG93IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgKgorICogRnJvbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJhY2sKKyAq ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAgICA9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09CisgKiBYZW5idXNTdGF0ZUluaXRpYWxpc2luZyAgICAgICAgICAg ICAgWGVuYnVzU3RhdGVJbml0aWFsaXNpbmcKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgbyBRdWVyeSBiYWNrZW5kIGRldmljZSBpZGVudGlmaWNhdGlvbgorICogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEuCisgKiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gT3BlbiBhbmQgdmFsaWRhdGUgYmFja2VuZCBk ZXZpY2UuCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHwKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAor ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWCisgKiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWGVuYnVzU3RhdGVJbml0V2FpdAor ICoKKyAqIG8gUXVlcnkgZnJvbnRlbmQgY29uZmlndXJhdGlvbgorICogbyBBbGxvY2F0ZSBhbmQg aW5pdGlhbGl6ZQorICogICBldmVudCBjaGFubmVscyBwZXIgY29uZmlndXJlZAorICogICBjb25u ZWN0b3IuCisgKiBvIFB1Ymxpc2ggdHJhbnNwb3J0IHBhcmFtZXRlcnMKKyAqICAgdGhhdCB3aWxs IGJlIGluIGVmZmVjdCBkdXJpbmcKKyAqICAgdGhpcyBjb25uZWN0aW9uLgorICogICAgICAgICAg ICAgIHwKKyAqICAgICAgICAgICAgICB8CisgKiAgICAgICAgICAgICAgVgorICogWGVuYnVzU3Rh dGVJbml0aWFsaXNlZAorICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgbyBRdWVyeSBmcm9udGVuZCB0cmFuc3BvcnQgcGFyYW1ldGVycy4KKyAqICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgbyBDb25uZWN0IHRvIHRoZSBldmVudCBjaGFubmVs cy4KKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAor ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgKiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFYKKyAqICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYZW5idXNTdGF0ZUNvbm5lY3RlZAorICoK KyAqICBvIENyZWF0ZSBhbmQgaW5pdGlhbGl6ZSBPUworICogICAgdmlydHVhbCBkaXNwbGF5IGNv bm5lY3RvcnMKKyAqICAgIGFzIHBlciBjb25maWd1cmF0aW9uLgorICogICAgICAgICAgICAgIHwK KyAqICAgICAgICAgICAgICB8CisgKiAgICAgICAgICAgICAgVgorICogWGVuYnVzU3RhdGVDb25u ZWN0ZWQKKyAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWGVuYnVz U3RhdGVVbmtub3duCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWGVu YnVzU3RhdGVDbG9zZWQKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBY ZW5idXNTdGF0ZUNsb3NpbmcKKyAqIG8gUmVtb3ZlIHZpcnR1YWwgZGlzcGxheSBkZXZpY2UKKyAq IG8gUmVtb3ZlIGV2ZW50IGNoYW5uZWxzCisgKiAgICAgICAgICAgICAgfAorICogICAgICAgICAg ICAgIHwKKyAqICAgICAgICAgICAgICBWCisgKiBYZW5idXNTdGF0ZUNsb3NlZAorICoKKyAqLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBSZWNvdmVyeSBmbG93IC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBJbiBjYXNlIG9mIGZyb250ZW5kIHVucmVjb3ZlcmFi bGUgZXJyb3JzIGJhY2tlbmQgaGFuZGxlcyB0aGF0IGFzCisgKiBpZiBmcm9udGVuZCBnb2VzIGlu dG8gdGhlIFhlbmJ1c1N0YXRlQ2xvc2VkIHN0YXRlLgorICoKKyAqIEluIGNhc2Ugb2YgYmFja2Vu ZCB1bnJlY292ZXJhYmxlIGVycm9ycyBmcm9udGVuZCB0cmllcyByZW1vdmluZworICogdGhlIGVt dWxhdGVkIGRldmljZS4gSWYgdGhpcyBpcyBwb3NzaWJsZSBhdCB0aGUgbW9tZW50IG9mIGVycm9y LAorICogdGhlbiBmcm9udGVuZCBnb2VzIGludG8gdGhlIFhlbmJ1c1N0YXRlSW5pdGlhbGlzaW5n IHN0YXRlIGFuZCBpcyByZWFkeSBmb3IKKyAqIG5ldyBjb25uZWN0aW9uIHdpdGggYmFja2VuZC4g SWYgdGhlIGVtdWxhdGVkIGRldmljZSBpcyBzdGlsbCBpbiB1c2UgYW5kCisgKiBjYW5ub3QgYmUg cmVtb3ZlZCwgdGhlbiBmcm9udGVuZCBnb2VzIGludG8gdGhlIFhlbmJ1c1N0YXRlUmVjb25maWd1 cmluZyBzdGF0ZQorICogdW50aWwgZWl0aGVyIHRoZSBlbXVsYXRlZCBkZXZpY2UgcmVtb3ZlZCBv ciBiYWNrZW5kIGluaXRpYXRlcyBhIG5ldworICogY29ubmVjdGlvbi4gT24gdGhlIGVtdWxhdGVk IGRldmljZSByZW1vdmFsIGZyb250ZW5kIGdvZXMgaW50byB0aGUKKyAqIFhlbmJ1c1N0YXRlSW5p dGlhbGlzaW5nIHN0YXRlLgorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBSRVFVRVNUIENPREVTCisgKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq CisgKi8KKyNkZWZpbmUgWEVORElTUExfT1BfREJVRl9DUkVBVEUgICAgICAgMAorI2RlZmluZSBY RU5ESVNQTF9PUF9EQlVGX0RFU1RST1kgICAgICAxCisjZGVmaW5lIFhFTkRJU1BMX09QX0ZCX0FU VEFDSCAgICAgICAgIDIKKyNkZWZpbmUgWEVORElTUExfT1BfRkJfREVUQUNIICAgICAgICAgMwor I2RlZmluZSBYRU5ESVNQTF9PUF9TRVRfQ09ORklHICAgICAgICA0CisjZGVmaW5lIFhFTkRJU1BM X09QX1BHX0ZMSVAgICAgICAgICAgIDUKKworLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAq ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVZFTlQgQ09ERVMKKyAqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioKKyAqLworI2RlZmluZSBYRU5ESVNQTF9FVlRfUEdfRkxJUCAgICAgICAgICAw CisKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAgICAgICAgICAgICAgIFhFTlNUT1JF IEZJRUxEIEFORCBQQVRIIE5BTUUgU1RSSU5HUywgSEVMUEVSUworICoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKgorICovCisjZGVmaW5lIFhFTkRJU1BMX0RSSVZFUl9OQU1FICAgICAgICAgICJ2ZGlzcGwi CisKKyNkZWZpbmUgWEVORElTUExfTElTVF9TRVBBUkFUT1IgICAgICAgIiwiCisjZGVmaW5lIFhF TkRJU1BMX1JFU09MVVRJT05fU0VQQVJBVE9SICJ4IgorLyogRmllbGQgbmFtZXMgKi8KKyNkZWZp bmUgWEVORElTUExfRklFTERfQkVfVkVSU0lPTlMgICAgInZlcnNpb25zIgorI2RlZmluZSBYRU5E SVNQTF9GSUVMRF9GRV9WRVJTSU9OICAgICAidmVyc2lvbiIKKyNkZWZpbmUgWEVORElTUExfRklF TERfRkVBVFVSRVMgICAgICAgImZlYXR1cmVzIgorI2RlZmluZSBYRU5ESVNQTF9GSUVMRF9DVFJM X1JJTkdfUkVGICAiY3RybC1yaW5nLXJlZiIKKyNkZWZpbmUgWEVORElTUExfRklFTERfQ1RSTF9D SEFOTkVMICAgImN0cmwtY2hhbm5lbCIKKyNkZWZpbmUgWEVORElTUExfRklFTERfRVZUX1JJTkdf UkVGICAgImV2ZW50LXJpbmctcmVmIgorI2RlZmluZSBYRU5ESVNQTF9GSUVMRF9FVlRfQ0hBTk5F TCAgICAiZXZlbnQtY2hhbm5lbCIKKyNkZWZpbmUgWEVORElTUExfRklFTERfUkVTT0xVVElPTiAg ICAgInJlc29sdXRpb24iCisKKyNkZWZpbmUgWEVORElTUExfRkVBVFVSRV9CRV9BTExPQyAgICAg ImJlX2FsbG9jIgorCisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogICAgICAgICAgICAg ICAgICAgICAgICAgIFNUQVRVUyBSRVRVUk4gQ09ERVMKKyAqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioK KyAqCisgKiBTdGF0dXMgcmV0dXJuIGNvZGUgaXMgemVybyBvbiBzdWNjZXNzIGFuZCAtWEVOX0VY WCBvbiBmYWlsdXJlLgorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgQXNzdW1wdGlvbnMKKyAqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAq IG8gdXNhZ2Ugb2YgZ3JhbnQgcmVmZXJlbmNlIDAgYXMgaW52YWxpZCBncmFudCByZWZlcmVuY2U6 CisgKiAgIGdyYW50IHJlZmVyZW5jZSAwIGlzIHZhbGlkLCBidXQgbmV2ZXIgZXhwb3NlZCB0byBh IFBWIGRyaXZlciwKKyAqICAgYmVjYXVzZSBvZiB0aGUgZmFjdCBpdCBpcyBhbHJlYWR5IGluIHVz ZS9yZXNlcnZlZCBieSB0aGUgUFYgY29uc29sZS4KKyAqIG8gYWxsIHJlZmVyZW5jZXMgaW4gdGhp cyBkb2N1bWVudCB0byBwYWdlIHNpemVzIG11c3QgYmUgdHJlYXRlZAorICogICBhcyBwYWdlcyBv ZiBzaXplIFhFTl9QQUdFX1NJWkUgdW5sZXNzIG90aGVyd2lzZSBub3RlZC4KKyAqCisgKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqCisgKiAgICAgICBEZXNjcmlwdGlvbiBvZiB0aGUgcHJvdG9jb2wgYmV0 d2VlbiBmcm9udGVuZCBhbmQgYmFja2VuZCBkcml2ZXIKKyAqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioK KyAqCisgKiBUaGUgdHdvIGhhbHZlcyBvZiBhIFBhcmEtdmlydHVhbCBkaXNwbGF5IGRyaXZlciBj b21tdW5pY2F0ZSB3aXRoCisgKiBlYWNoIG90aGVyIHVzaW5nIHNoYXJlZCBwYWdlcyBhbmQgZXZl bnQgY2hhbm5lbHMuCisgKiBTaGFyZWQgcGFnZSBjb250YWlucyBhIHJpbmcgd2l0aCByZXF1ZXN0 L3Jlc3BvbnNlIHBhY2tldHMuCisgKgorICogQWxsIHJlc2VydmVkIGZpZWxkcyBpbiB0aGUgc3Ry dWN0dXJlcyBiZWxvdyBtdXN0IGJlIDAuCisgKiBEaXNwbGF5IGJ1ZmZlcnMncyBjb29raWUgb2Yg dmFsdWUgMCB0cmVhdGVkIGFzIGludmFsaWQuCisgKiBGcmFtZWJ1ZmZlcidzIGNvb2tpZSBvZiB2 YWx1ZSAwIHRyZWF0ZWQgYXMgaW52YWxpZC4KKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0gUmVxdWVzdHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg KgorICogQWxsIHJlcXVlc3RzL3Jlc3BvbnNlcywgd2hpY2ggYXJlIG5vdCBjb25uZWN0b3Igc3Bl Y2lmaWMsIG11c3QgYmUgc2VudCBvdmVyCisgKiBjb250cm9sIHJpbmcgb2YgdGhlIGNvbm5lY3Rv ciB3aXRoIGluZGV4IDAuCisgKgorICogRm9yIGFsbCByZXF1ZXN0L3Jlc3BvbnNlL2V2ZW50IHBh Y2tldHMgdGhhdCB1c2UgY29va2llczoKKyAqICAgZGJ1Zl9jb29raWUgLSB1aW50NjRfdCwgdW5p cXVlIHRvIGd1ZXN0IGRvbWFpbiB2YWx1ZSB1c2VkIGJ5IHRoZSBiYWNrZW5kCisgKiAgICAgdG8g bWFwIHJlbW90ZSBkaXNwbGF5IGJ1ZmZlciB0byBpdHMgbG9jYWwgb25lCisgKiAgIGZiX2Nvb2tp ZSAtIHVpbnQ2NF90LCB1bmlxdWUgdG8gZ3Vlc3QgZG9tYWluIHZhbHVlIHVzZWQgYnkgdGhlIGJh Y2tlbmQKKyAqICAgICB0byBtYXAgcmVtb3RlIGZyYW1lYnVmZmVyIHRvIGl0cyBsb2NhbCBvbmUK KyAqCisgKiBBbGwgcmVxdWVzdCBwYWNrZXRzIGhhdmUgdGhlIHNhbWUgbGVuZ3RoICg2NCBvY3Rl dHMpCisgKiBBbGwgcmVxdWVzdCBwYWNrZXRzIGhhdmUgY29tbW9uIGhlYWRlcjoKKyAqICAgICAg ICAgMCAgICAgICAgICAgICAgICAxICAgICAgICAgICAgICAgICAyICAgICAgICAgICAgICAgMyAg ICAgICAgb2N0ZXQKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgIGlkICAgICAg ICAgICAgICAgIHwgICAgb3BlcmF0aW9uICAgfCAgIHJlc2VydmVkICAgICB8IDQKKyAqICstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB8IDgKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogICBpZCAtIHVp bnQxNl90LCBwcml2YXRlIGd1ZXN0IHZhbHVlLCBlY2hvZWQgaW4gcmVzcG9uc2UKKyAqICAgb3Bl cmF0aW9uIC0gdWludDhfdCwgb3BlcmF0aW9uIGNvZGUsIFhFTkRJU1BMX09QXz8/PworICoKKyAq IFJlcXVlc3QgZGJ1ZiBjcmVhdGlvbiAtIHJlcXVlc3QgY3JlYXRpb24gb2YgYSBkaXNwbGF5IGJ1 ZmZlci4KKyAqICAgICAgICAgMCAgICAgICAgICAgICAgICAxICAgICAgICAgICAgICAgICAyICAg ICAgICAgICAgICAgMyAgICAgICAgb2N0ZXQKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAg ICAgICAgIGlkICAgICAgICAgICAgICAgIHxfT1BfREJVRl9DUkVBVEUgfCAgIHJlc2VydmVkICAg ICB8IDQKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg cmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDgKKyAqICstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t KworICogfCAgICAgICAgICAgICAgICAgICAgICAgZGJ1Zl9jb29raWUgbG93IDMyLWJpdCAgICAg ICAgICAgICAgICAgICAgICB8IDEyCisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAg ICAgICAgICAgIGRidWZfY29va2llIGhpZ2ggMzItYml0ICAgICAgICAgICAgICAgICAgICAgfCAx NgorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdp ZHRoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMjAKKyAqICstLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwor ICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8IDI0CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGJwcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyOAor ICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJf c3ogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMzIKKyAqICstLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICog fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8IDM2CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgICAg ICAgICAgICBncmVmX2RpcmVjdG9yeSAgICAgICAgICAgICAgICAgICAgICAgICAgfCA0MAorICog Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNDQKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfC9c L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC98CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA2NAorICogKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0rCisgKgorICogTXVzdCBiZSBzZW50IG92ZXIgY29udHJvbCByaW5nIG9mIHRoZSBjb25u ZWN0b3Igd2l0aCBpbmRleCAwLgorICoKKyAqIHdpZHRoIC0gdWludDMyX3QsIHdpZHRoIGluIHBp eGVscworICogaGVpZ2h0IC0gdWludDMyX3QsIGhlaWdodCBpbiBwaXhlbHMKKyAqIGJwcCAtIHVp bnQzMl90LCBiaXRzIHBlciBwaXhlbAorICogYnVmZmVyX3N6IC0gdWludDMyX3QsIGJ1ZmZlciBz aXplIHRvIGJlIGFsbG9jYXRlZCwgb2N0ZXRzCisgKiBmbGFncyAtIHVpbnQzMl90LCBmbGFncyBv ZiB0aGUgb3BlcmF0aW9uCisgKiAgIG8gWEVORElTUExfREJVRl9GTEdfUkVRX0FMTE9DIC0gaWYg c2V0LCB0aGVuIGJhY2tlbmQgaXMgcmVxdWVzdGVkCisgKiAgICAgdG8gYWxsb2NhdGUgdGhlIGJ1 ZmZlciB3aXRoIHRoZSBwYXJhbWV0ZXJzIHByb3ZpZGVkIGluIHRoaXMgcmVxdWVzdC4KKyAqICAg ICBQYWdlIGRpcmVjdG9yeSBpcyBoYW5kbGVkIGFzIGZvbGxvd3M6CisgKiAgICAgICBGcm9udGVu ZCBvbiByZXF1ZXN0OgorICogICAgICAgICBvIGFsbG9jYXRlcyBwYWdlcyBmb3IgdGhlIGRpcmVj dG9yeQorICogICAgICAgICBvIGdyYW50cyBwZXJtaXNzaW9ucyBmb3IgdGhlIHBhZ2VzIG9mIHRo ZSBkaXJlY3RvcnkKKyAqICAgICAgICAgbyBzZXRzIGdyZWZfZGlyX25leHRfcGFnZSBmaWVsZHMK KyAqICAgICAgIEJhY2tlbmQgb24gcmVzcG9uc2U6CisgKiAgICAgICAgIG8gZ3JhbnRzIHBlcm1p c3Npb25zIGZvciB0aGUgcGFnZXMgb2YgdGhlIGJ1ZmZlciBhbGxvY2F0ZWQKKyAqICAgICAgICAg byBmaWxscyBpbiBwYWdlIGRpcmVjdG9yeSB3aXRoIGdyYW50IHJlZmVyZW5jZXMKKyAqIGdyZWZf ZGlyZWN0b3J5IC0gZ3JhbnRfcmVmX3QsIGEgcmVmZXJlbmNlIHRvIHRoZSBmaXJzdCBzaGFyZWQg cGFnZQorICogICBkZXNjcmliaW5nIHNoYXJlZCBidWZmZXIgcmVmZXJlbmNlcy4gQXQgbGVhc3Qg b25lIHBhZ2UgZXhpc3RzLiBJZiBzaGFyZWQKKyAqICAgYnVmZmVyIHNpemUgIChidWZmZXJfc3op IGV4Y2VlZHMgd2hhdCBjYW4gYmUgYWRkcmVzc2VkIGJ5IHRoaXMgc2luZ2xlIHBhZ2UsCisgKiAg IHRoZW4gcmVmZXJlbmNlIHRvIHRoZSBuZXh0IHBhZ2UgbXVzdCBiZSBzdXBwbGllZCAoc2VlIGdy ZWZfZGlyX25leHRfcGFnZQorICogICBiZWxvdykKKyAqLworCisjZGVmaW5lIFhFTkRJU1BMX0RC VUZfRkxHX1JFUV9BTExPQyAgICAgICAweDAwMDEKKworc3RydWN0IHhlbmRpc3BsX2RidWZfY3Jl YXRlX3JlcSB7CisgICAgdWludDY0X3QgZGJ1Zl9jb29raWU7CisgICAgdWludDMyX3Qgd2lkdGg7 CisgICAgdWludDMyX3QgaGVpZ2h0OworICAgIHVpbnQzMl90IGJwcDsKKyAgICB1aW50MzJfdCBi dWZmZXJfc3o7CisgICAgdWludDMyX3QgZmxhZ3M7CisgICAgZ3JhbnRfcmVmX3QgZ3JlZl9kaXJl Y3Rvcnk7Cit9OworCisvKgorICogU2hhcmVkIHBhZ2UgZm9yIFhFTkRJU1BMX09QX0RCVUZfQ1JF QVRFIGJ1ZmZlciBkZXNjcmlwdG9yIChncmVmX2RpcmVjdG9yeSBpbgorICogdGhlIHJlcXVlc3Qp IGVtcGxveXMgYSBsaXN0IG9mIHBhZ2VzLCBkZXNjcmliaW5nIGFsbCBwYWdlcyBvZiB0aGUgc2hh cmVkCisgKiBkYXRhIGJ1ZmZlcjoKKyAqICAgICAgICAgMCAgICAgICAgICAgICAgICAxICAgICAg ICAgICAgICAgICAyICAgICAgICAgICAgICAgMyAgICAgICAgb2N0ZXQKKyAqICstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t KworICogfCAgICAgICAgICAgICAgICAgICAgICAgIGdyZWZfZGlyX25leHRfcGFnZSAgICAgICAg ICAgICAgICAgICAgICAgICB8IDQKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGdyZWZbMF0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDgK KyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tKworICogfC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC98CisgKiArLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmVmW2ldICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCBpKjQrOAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8L1wvXC9cL1wvXC9cL1wvXC9c L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL3wKKyAqICst LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JlZltOIC0gMV0g ICAgICAgICAgICAgICAgICAgICAgICAgICB8IE4qNCs4CisgKiArLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqCisg KiBncmVmX2Rpcl9uZXh0X3BhZ2UgLSBncmFudF9yZWZfdCwgcmVmZXJlbmNlIHRvIHRoZSBuZXh0 IHBhZ2UgZGVzY3JpYmluZworICogICBwYWdlIGRpcmVjdG9yeS4gTXVzdCBiZSAwIGlmIHRoZXJl IGFyZSBubyBtb3JlIHBhZ2VzIGluIHRoZSBsaXN0LgorICogZ3JlZltpXSAtIGdyYW50X3JlZl90 LCByZWZlcmVuY2UgdG8gYSBzaGFyZWQgcGFnZSBvZiB0aGUgYnVmZmVyCisgKiAgIGFsbG9jYXRl ZCBhdCBYRU5ESVNQTF9PUF9EQlVGX0NSRUFURQorICoKKyAqIE51bWJlciBvZiBncmFudF9yZWZf dCBlbnRyaWVzIGluIHRoZSB3aG9sZSBwYWdlIGRpcmVjdG9yeSBpcyBub3QKKyAqIHBhc3NlZCwg YnV0IGluc3RlYWQgY2FuIGJlIGNhbGN1bGF0ZWQgYXM6CisgKiAgIG51bV9ncmVmc190b3RhbCA9 IChYRU5ESVNQTF9PUF9EQlVGX0NSRUFURS5idWZmZXJfc3ogKyBYRU5fUEFHRV9TSVpFIC0gMSkg LworICogICAgICAgWEVOX1BBR0VfU0laRQorICovCisKK3N0cnVjdCB4ZW5kaXNwbF9wYWdlX2Rp cmVjdG9yeSB7CisgICAgZ3JhbnRfcmVmX3QgZ3JlZl9kaXJfbmV4dF9wYWdlOworICAgIGdyYW50 X3JlZl90IGdyZWZbMV07IC8qIFZhcmlhYmxlIGxlbmd0aCAqLworfTsKKworLyoKKyAqIFJlcXVl c3QgZGJ1ZiBkZXN0cnVjdGlvbiAtIGRlc3Ryb3kgYSBwcmV2aW91c2x5IGFsbG9jYXRlZCBkaXNw bGF5IGJ1ZmZlcjoKKyAqICAgICAgICAgMCAgICAgICAgICAgICAgICAxICAgICAgICAgICAgICAg ICAyICAgICAgICAgICAgICAgMyAgICAgICAgb2N0ZXQKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAg ICAgICAgICAgICAgIGlkICAgICAgICAgICAgICAgIHxfT1BfREJVRl9ERVNUUk9ZfCAgIHJlc2Vy dmVkICAgICB8IDQKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDgKKyAqICstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAgZGJ1Zl9jb29raWUgbG93IDMyLWJp dCAgICAgICAgICAgICAgICAgICAgICB8IDEyCisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAg ICAgICAgICAgICAgICAgIGRidWZfY29va2llIGhpZ2ggMzItYml0ICAgICAgICAgICAgICAgICAg ICAgfCAxNgorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMjAKKyAqICstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tKworICogfC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvXC98CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA2 NAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0rCisgKgorICogTXVzdCBiZSBzZW50IG92ZXIgY29udHJvbCByaW5n IG9mIHRoZSBjb25uZWN0b3Igd2l0aCBpbmRleCAwLgorICovCisKK3N0cnVjdCB4ZW5kaXNwbF9k YnVmX2Rlc3Ryb3lfcmVxIHsKKyAgICB1aW50NjRfdCBkYnVmX2Nvb2tpZTsKK307CisKKy8qCisg KiBSZXF1ZXN0IGZyYW1lYnVmZmVyIGF0dGFjaG1lbnQgLSByZXF1ZXN0IGF0dGFjaG1lbnQgb2Yg YSBmcmFtZWJ1ZmZlciB0bworICogcHJldmlvdXNseSBjcmVhdGVkIGRpc3BsYXkgYnVmZmVyLgor ICogICAgICAgICAwICAgICAgICAgICAgICAgIDEgICAgICAgICAgICAgICAgIDIgICAgICAgICAg ICAgICAzICAgICAgICBvY3RldAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAg aWQgICAgICAgICAgICAgICAgfCBfT1BfRkJfQVRUQUNIICB8ICAgcmVzZXJ2ZWQgICAgIHwgNAor ICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNlcnZl ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgOAorICogKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8 ICAgICAgICAgICAgICAgICAgICAgICBkYnVmX2Nvb2tpZSBsb3cgMzItYml0ICAgICAgICAgICAg ICAgICAgICAgIHwgMTIKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgICAgICAg ICAgZGJ1Zl9jb29raWUgaGlnaCAzMi1iaXQgICAgICAgICAgICAgICAgICAgICB8IDE2CisgKiAr LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICBmYl9jb29raWUgbG93IDMy LWJpdCAgICAgICAgICAgICAgICAgICAgICAgfCAyMAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAg ICAgICAgICAgICAgICAgICAgICAgZmJfY29va2llIGhpZ2ggMzItYml0ICAgICAgICAgICAgICAg ICAgICAgIHwgMjQKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB3aWR0aCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDI4CisgKiArLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfCAzMgorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHBpeGVsX2Zvcm1hdCAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgMzYKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDQwCisgKiArLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLSsKKyAqIHwvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9c L1wvXC9cL1wvXC9cL1wvXC9cL1wvfAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg NjQKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tKworICoKKyAqIE11c3QgYmUgc2VudCBvdmVyIGNvbnRyb2wgcmlu ZyBvZiB0aGUgY29ubmVjdG9yIHdpdGggaW5kZXggMC4KKyAqCisgKiB3aWR0aCAtIHVpbnQzMl90 LCB3aWR0aCBpbiBwaXhlbHMKKyAqIGhlaWdodCAtIHVpbnQzMl90LCBoZWlnaHQgaW4gcGl4ZWxz CisgKiBwaXhlbF9mb3JtYXQgLSB1aW50MzJfdCwgcGl4ZWwgZm9ybWF0IG9mIHRoZSBmcmFtZWJ1 ZmZlciwgRk9VUkNDIGNvZGUKKyAqLworCitzdHJ1Y3QgeGVuZGlzcGxfZmJfYXR0YWNoX3JlcSB7 CisgICAgdWludDY0X3QgZGJ1Zl9jb29raWU7CisgICAgdWludDY0X3QgZmJfY29va2llOworICAg IHVpbnQzMl90IHdpZHRoOworICAgIHVpbnQzMl90IGhlaWdodDsKKyAgICB1aW50MzJfdCBwaXhl bF9mb3JtYXQ7Cit9OworCisvKgorICogUmVxdWVzdCBmcmFtZWJ1ZmZlciBkZXRhY2ggLSBkZXRh Y2ggYSBwcmV2aW91c2x5CisgKiBhdHRhY2hlZCBmcmFtZWJ1ZmZlciBmcm9tIHRoZSBkaXNwbGF5 IGJ1ZmZlciBpbiByZXF1ZXN0OgorICogICAgICAgICAwICAgICAgICAgICAgICAgIDEgICAgICAg ICAgICAgICAgIDIgICAgICAgICAgICAgICAzICAgICAgICBvY3RldAorICogKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0r CisgKiB8ICAgICAgICAgICAgICAgaWQgICAgICAgICAgICAgICAgfCAgX09QX0ZCX0RFVEFDSCB8 ICAgcmVzZXJ2ZWQgICAgIHwgNAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgOAor ICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgZmJfY29va2llIGxv dyAzMi1iaXQgICAgICAgICAgICAgICAgICAgICAgIHwgMTIKKyAqICstLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICog fCAgICAgICAgICAgICAgICAgICAgICAgIGZiX2Nvb2tpZSBoaWdoIDMyLWJpdCAgICAgICAgICAg ICAgICAgICAgICB8IDE2CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyMAorICog Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0rCisgKiB8L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL3wKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8IDY0CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqCisgKiBNdXN0IGJlIHNlbnQgb3ZlciBjb250 cm9sIHJpbmcgb2YgdGhlIGNvbm5lY3RvciB3aXRoIGluZGV4IDAuCisgKi8KKworc3RydWN0IHhl bmRpc3BsX2ZiX2RldGFjaF9yZXEgeworICAgIHVpbnQ2NF90IGZiX2Nvb2tpZTsKK307CisKKy8q CisgKiBSZXF1ZXN0IGNvbmZpZ3VyYXRpb24gc2V0L3Jlc2V0IC0gcmVxdWVzdCB0byBzZXQgb3Ig cmVzZXQKKyAqIHRoZSBjb25maWd1cmF0aW9uL21vZGUgb2YgdGhlIGRpc3BsYXk6CisgKiAgICAg ICAgIDAgICAgICAgICAgICAgICAgMSAgICAgICAgICAgICAgICAgMiAgICAgICAgICAgICAgIDMg ICAgICAgIG9jdGV0CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICBpZCAgICAg ICAgICAgICAgICB8IF9PUF9TRVRfQ09ORklHIHwgICByZXNlcnZlZCAgICAgfCA0CisgKiArLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVkICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfCA4CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAg ICAgICAgICAgICAgICAgICBmYl9jb29raWUgbG93IDMyLWJpdCAgICAgICAgICAgICAgICAgICAg ICAgfCAxMgorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgZmJf Y29va2llIGhpZ2ggMzItYml0ICAgICAgICAgICAgICAgICAgICAgIHwgMTYKKyAqICstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHggICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8IDIwCisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fCAyNAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHdpZHRoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMjgKKyAqICstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t KworICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8IDMyCisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGJwcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA0 MAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNl cnZlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNDQKKyAqICstLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwor ICogfC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvXC98CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA2NAorICog Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0rCisgKgorICogUGFzcyBhbGwgemVyb3MgdG8gcmVzZXQsIG90aGVyd2lzZSBj b21tYW5kIGlzIHRyZWF0ZWQgYXMKKyAqIGNvbmZpZ3VyYXRpb24gc2V0LgorICogSWYgdGhpcyBp cyBhIHNldCBjb25maWd1cmF0aW9uIHJlcXVlc3QgdGhlbiBmcmFtZWJ1ZmZlcidzIGNvb2tpZSB0 ZWxscworICogdGhlIGRpc3BsYXkgd2hpY2ggZnJhbWVidWZmZXIvZGJ1ZiBtdXN0IGJlIGRpc3Bs YXllZCB3aGlsZSBlbmFibGluZyBkaXNwbGF5CisgKiAoYXBwbHlpbmcgY29uZmlndXJhdGlvbiku CisgKgorICogeCAtIHVpbnQzMl90LCBzdGFydGluZyBwb3NpdGlvbiBpbiBwaXhlbHMgYnkgWCBh eGlzCisgKiB5IC0gdWludDMyX3QsIHN0YXJ0aW5nIHBvc2l0aW9uIGluIHBpeGVscyBieSBZIGF4 aXMKKyAqIHdpZHRoIC0gdWludDMyX3QsIHdpZHRoIGluIHBpeGVscworICogaGVpZ2h0IC0gdWlu dDMyX3QsIGhlaWdodCBpbiBwaXhlbHMKKyAqIGJwcCAtIHVpbnQzMl90LCBiaXRzIHBlciBwaXhl bAorICovCisKK3N0cnVjdCB4ZW5kaXNwbF9zZXRfY29uZmlnX3JlcSB7CisgICAgdWludDY0X3Qg ZmJfY29va2llOworICAgIHVpbnQzMl90IHg7CisgICAgdWludDMyX3QgeTsKKyAgICB1aW50MzJf dCB3aWR0aDsKKyAgICB1aW50MzJfdCBoZWlnaHQ7CisgICAgdWludDMyX3QgYnBwOworfTsKKwor LyoKKyAqIFJlcXVlc3QgcGFnZSBmbGlwIC0gcmVxdWVzdCB0byBmbGlwIGEgcGFnZSBpZGVudGlm aWVkIGJ5IHRoZSBmcmFtZWJ1ZmZlcgorICogY29va2llOgorICogICAgICAgICAwICAgICAgICAg ICAgICAgIDEgICAgICAgICAgICAgICAgIDIgICAgICAgICAgICAgICAzICAgICAgICBvY3RldAor ICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgaWQgICAgICAgICAgICAgICAgfCBf T1BfUEdfRkxJUCAgICB8ICAgcmVzZXJ2ZWQgICAgIHwgNAorICogKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgOAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAg ICAgZmJfY29va2llIGxvdyAzMi1iaXQgICAgICAgICAgICAgICAgICAgICAgIHwgMTIKKyAqICst LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAgIGZiX2Nvb2tpZSBoaWdoIDMy LWJpdCAgICAgICAgICAgICAgICAgICAgICB8IDE2CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfCAyMAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9c L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL3wKKyAqICstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8IDY0CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqLworCitzdHJ1Y3Qg eGVuZGlzcGxfcGFnZV9mbGlwX3JlcSB7CisgICAgdWludDY0X3QgZmJfY29va2llOworfTsKKwor LyoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBSZXNwb25zZXMgLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBBbGwgcmVzcG9uc2UgcGFja2V0cyBo YXZlIHRoZSBzYW1lIGxlbmd0aCAoNjQgb2N0ZXRzKQorICoKKyAqIEFsbCByZXNwb25zZSBwYWNr ZXRzIGhhdmUgY29tbW9uIGhlYWRlcjoKKyAqICAgICAgICAgMCAgICAgICAgICAgICAgICAxICAg ICAgICAgICAgICAgICAyICAgICAgICAgICAgICAgMyAgICAgICAgb2N0ZXQKKyAqICstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tKworICogfCAgICAgICAgICAgICAgIGlkICAgICAgICAgICAgICAgIHwgICAgICAgICAgICBy ZXNlcnZlZCAgICAgICAgICAgICB8IDQKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHN0YXR1cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 IDgKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVz ZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDEyCisgKiArLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsK KyAqIHwvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9c L1wvXC9cL1wvXC9cL1wvfAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNjQKKyAq ICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tKworICoKKyAqIGlkIC0gdWludDE2X3QsIHByaXZhdGUgZ3Vlc3QgdmFsdWUs IGVjaG9lZCBmcm9tIHJlcXVlc3QKKyAqIHN0YXR1cyAtIGludDMyX3QsIHJlc3BvbnNlIHN0YXR1 cywgemVybyBvbiBzdWNjZXNzIGFuZCAtWEVOX0VYWCBvbiBmYWlsdXJlCisgKgorICotLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBFdmVudHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorICoKKyAqIEV2ZW50cyBhcmUgc2VudCB2aWEgYSBzaGFyZWQgcGFnZSBh bGxvY2F0ZWQgYnkgdGhlIGZyb250IGFuZCBwcm9wYWdhdGVkIGJ5CisgKiAgIGV2ZW50LWNoYW5u ZWwvZXZlbnQtcmluZy1yZWYgWGVuU3RvcmUgZW50cmllcworICogQWxsIGV2ZW50IHBhY2tldHMg aGF2ZSB0aGUgc2FtZSBsZW5ndGggKDY0IG9jdGV0cykKKyAqIEFsbCBldmVudCBwYWNrZXRzIGhh dmUgY29tbW9uIGhlYWRlcjoKKyAqICAgICAgICAgMCAgICAgICAgICAgICAgICAxICAgICAgICAg ICAgICAgICAyICAgICAgICAgICAgICAgMyAgICAgICAgb2N0ZXQKKyAqICstLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwor ICogfCAgICAgICAgICAgICAgIGlkICAgICAgICAgICAgICAgIHwgICAgICB0eXBlICAgICAgfCAg IHJlc2VydmVkICAgICB8IDQKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDgKKyAq ICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tKworICoKKyAqIGlkIC0gdWludDE2X3QsIGV2ZW50IGlkLCBtYXkgYmUgdXNl ZCBieSBmcm9udAorICogdHlwZSAtIHVpbnQ4X3QsIHR5cGUgb2YgdGhlIGV2ZW50CisgKgorICoK KyAqIFBhZ2UgZmxpcCBjb21wbGV0ZSBldmVudCAtIGV2ZW50IGZyb20gYmFjayB0byBmcm9udCBv biBwYWdlIGZsaXAgY29tcGxldGVkOgorICogICAgICAgICAwICAgICAgICAgICAgICAgIDEgICAg ICAgICAgICAgICAgIDIgICAgICAgICAgICAgICAzICAgICAgICBvY3RldAorICogKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0rCisgKiB8ICAgICAgICAgICAgICAgaWQgICAgICAgICAgICAgICAgfCAgIF9FVlRfUEdfRkxJ UCB8ICAgcmVzZXJ2ZWQgICAgIHwgNAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg OAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgZmJfY29va2ll IGxvdyAzMi1iaXQgICAgICAgICAgICAgICAgICAgICAgIHwgMTIKKyAqICstLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwor ICogfCAgICAgICAgICAgICAgICAgICAgICAgIGZiX2Nvb2tpZSBoaWdoIDMyLWJpdCAgICAgICAg ICAgICAgICAgICAgICB8IDE2CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyMAor ICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0rCisgKiB8L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9c L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL3wKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8IDY0CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqLworCitzdHJ1Y3QgeGVuZGlzcGxfcGdf ZmxpcF9ldnQgeworICAgIHVpbnQ2NF90IGZiX2Nvb2tpZTsKK307CisKK3N0cnVjdCB4ZW5kaXNw bF9yZXEgeworICAgIHVpbnQxNl90IGlkOworICAgIHVpbnQ4X3Qgb3BlcmF0aW9uOworICAgIHVp bnQ4X3QgcmVzZXJ2ZWRbNV07CisgICAgdW5pb24geworICAgICAgICBzdHJ1Y3QgeGVuZGlzcGxf ZGJ1Zl9jcmVhdGVfcmVxIGRidWZfY3JlYXRlOworICAgICAgICBzdHJ1Y3QgeGVuZGlzcGxfZGJ1 Zl9kZXN0cm95X3JlcSBkYnVmX2Rlc3Ryb3k7CisgICAgICAgIHN0cnVjdCB4ZW5kaXNwbF9mYl9h dHRhY2hfcmVxIGZiX2F0dGFjaDsKKyAgICAgICAgc3RydWN0IHhlbmRpc3BsX2ZiX2RldGFjaF9y ZXEgZmJfZGV0YWNoOworICAgICAgICBzdHJ1Y3QgeGVuZGlzcGxfc2V0X2NvbmZpZ19yZXEgc2V0 X2NvbmZpZzsKKyAgICAgICAgc3RydWN0IHhlbmRpc3BsX3BhZ2VfZmxpcF9yZXEgcGdfZmxpcDsK KyAgICAgICAgdWludDhfdCByZXNlcnZlZFs1Nl07CisgICAgfSBvcDsKK307CisKK3N0cnVjdCB4 ZW5kaXNwbF9yZXNwIHsKKyAgICB1aW50MTZfdCBpZDsKKyAgICB1aW50OF90IG9wZXJhdGlvbjsK KyAgICB1aW50OF90IHJlc2VydmVkOworICAgIGludDMyX3Qgc3RhdHVzOworICAgIHVpbnQ4X3Qg cmVzZXJ2ZWQxWzU2XTsKK307CisKK3N0cnVjdCB4ZW5kaXNwbF9ldnQgeworICAgIHVpbnQxNl90 IGlkOworICAgIHVpbnQ4X3QgdHlwZTsKKyAgICB1aW50OF90IHJlc2VydmVkWzVdOworICAgIHVu aW9uIHsKKyAgICAgICAgc3RydWN0IHhlbmRpc3BsX3BnX2ZsaXBfZXZ0IHBnX2ZsaXA7CisgICAg ICAgIHVpbnQ4X3QgcmVzZXJ2ZWRbNTZdOworICAgIH0gb3A7Cit9OworCitERUZJTkVfUklOR19U WVBFUyh4ZW5fZGlzcGxpZiwgc3RydWN0IHhlbmRpc3BsX3JlcSwgc3RydWN0IHhlbmRpc3BsX3Jl c3ApOworCisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogICAgICAgICAgICAgICAgICAg ICAgICBCYWNrIHRvIGZyb250IGV2ZW50cyBkZWxpdmVyeQorICoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KgorICogSW4gb3JkZXIgdG8gZGVsaXZlciBhc3luY2hyb25vdXMgZXZlbnRzIGZyb20gYmFjayB0 byBmcm9udCBhIHNoYXJlZCBwYWdlIGlzCisgKiBhbGxvY2F0ZWQgYnkgZnJvbnQgYW5kIGl0cyBn cmVmcyBwcm9wYWdhdGVkIHRvIGJhY2sgdmlhIFhlblN0b3JlIGVudHJpZXMKKyAqIChldmVudC1Y WFgpLgorICogVGhpcyBwYWdlIGhhcyBhIGNvbW1vbiBoZWFkZXIgdXNlZCBieSBib3RoIGZyb250 IGFuZCBiYWNrIHRvIHN5bmNocm9uaXplCisgKiBhY2Nlc3MgYW5kIGNvbnRyb2wgZXZlbnQncyBy aW5nIGJ1ZmZlciwgd2hpbGUgYmFjayBiZWluZyBhIHByb2R1Y2VyIG9mIHRoZQorICogZXZlbnRz IGFuZCBmcm9udCBiZWluZyBhIGNvbnN1bWVyLiBUaGUgcmVzdCBvZiB0aGUgcGFnZSBhZnRlciB0 aGUgaGVhZGVyCisgKiBpcyB1c2VkIGZvciBldmVudCBwYWNrZXRzLgorICoKKyAqIFVwb24gcmVj ZXB0aW9uIG9mIGFuIGV2ZW50KHMpIGZyb250IG1heSBjb25maXJtIGl0cyByZWNlcHRpb24KKyAq IGZvciBlaXRoZXIgZWFjaCBldmVudCwgZ3JvdXAgb2YgZXZlbnRzIG9yIG5vbmUuCisgKi8KKwor c3RydWN0IHhlbmRpc3BsX2V2ZW50X3BhZ2UgeworICAgIHVpbnQzMl90IGluX2NvbnM7CisgICAg dWludDMyX3QgaW5fcHJvZDsKKyAgICB1aW50OF90IHJlc2VydmVkWzU2XTsKK307CisKKyNkZWZp bmUgWEVORElTUExfRVZFTlRfUEFHRV9TSVpFIDQwOTYKKyNkZWZpbmUgWEVORElTUExfSU5fUklO R19PRkZTIChzaXplb2Yoc3RydWN0IHhlbmRpc3BsX2V2ZW50X3BhZ2UpKQorI2RlZmluZSBYRU5E SVNQTF9JTl9SSU5HX1NJWkUgKFhFTkRJU1BMX0VWRU5UX1BBR0VfU0laRSAtIFhFTkRJU1BMX0lO X1JJTkdfT0ZGUykKKyNkZWZpbmUgWEVORElTUExfSU5fUklOR19MRU4gKFhFTkRJU1BMX0lOX1JJ TkdfU0laRSAvIHNpemVvZihzdHJ1Y3QgeGVuZGlzcGxfZXZ0KSkKKyNkZWZpbmUgWEVORElTUExf SU5fUklORyhwYWdlKSBcCisJKChzdHJ1Y3QgeGVuZGlzcGxfZXZ0ICopKChjaGFyICopKHBhZ2Up ICsgWEVORElTUExfSU5fUklOR19PRkZTKSkKKyNkZWZpbmUgWEVORElTUExfSU5fUklOR19SRUYo cGFnZSwgaWR4KSBcCisJKFhFTkRJU1BMX0lOX1JJTkcoKHBhZ2UpKVsoaWR4KSAlIFhFTkRJU1BM X0lOX1JJTkdfTEVOXSkKKworI2VuZGlmIC8qIF9fWEVOX1BVQkxJQ19JT19ESVNQTElGX0hfXyAq LwotLSAKMi43LjQKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBz Oi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK