From mboxrd@z Thu Jan 1 00:00:00 1970 From: Zhigang Gong Subject: =?utf-8?q?=5BPATCH_1/2=5D_glamor=3A_Initial_commit_to?= =?utf-8?q?_introduce_glamor_acceleration=2E?= Date: Wed, 16 Nov 2011 15:04:36 +0800 Message-ID: <1321427077-26350-2-git-send-email-zhigang.gong@linux.intel.com> References: <1321427077-26350-1-git-send-email-zhigang.gong@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTP id 4FF869E78E for ; Tue, 15 Nov 2011 23:16:38 -0800 (PST) In-Reply-To: <1321427077-26350-1-git-send-email-zhigang.gong@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: intel-gfx-bounces+gcfxdi-intel-gfx=m.gmane.org@lists.freedesktop.org Errors-To: intel-gfx-bounces+gcfxdi-intel-gfx=m.gmane.org@lists.freedesktop.org To: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org QWRkZWQgb25lIGNvbmZpZ3VyYXRpb24gb3B0aW9uIC0tZW5hYmxlLWdsYW1vciB0byBjb250cm9s CndoZXRoZXIgdXNlIGdsYW1vci4gQWRkZWQgb25lIG5ldyBmaWxlIGludGVsX2dsYW1vci5jIHRv CndyYXAgZ2xhbW9yIGVnbCBBUEkgZm9yIGludGVsIGRyaXZlcidzIHVzYWdlLgpUaGlzIGNvbW1p dCBkb2Vzbid0IHJlYWxseSBjaGFuZ2UgdGhlIGRyaXZlcidzIGNvbnRyb2wgcGF0aC4KSXQganVz dCBhZGRzIG5lY2Vzc2FyeSBmaWxlcyBmb3IgZ2xhbW9yIGFuZCBjaGFuZ2Ugc29tZQpjb25maWd1 cmF0aW9uLgoKUmV2aWV3ZWQtYnk6IEV1Z2VuaSBEb2Rvbm92IDxldWdlbmkuZG9kb25vdkBpbnRl bC5jb20+ClNpZ25lZC1vZmYtYnk6IFpoaWdhbmcgR29uZyA8emhpZ2FuZy5nb25nQGxpbnV4Lmlu dGVsLmNvbT4KLS0tCiBjb25maWd1cmUuYWMgICAgICAgfCAgIDE3ICsrKysrKysKIHNyYy9NYWtl ZmlsZS5hbSAgICB8ICAgIDUgKysKIHNyYy9pbnRlbF9nbGFtb3IuYyB8ICAxMzAgKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogc3JjL2ludGVsX2ds YW1vci5oIHwgICA0NSArKysrKysrKysrKysrKysrKysKIDQgZmlsZXMgY2hhbmdlZCwgMTk3IGlu c2VydGlvbnMoKyksIDAgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2ludGVs X2dsYW1vci5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2ludGVsX2dsYW1vci5oCgpkaWZmIC0t Z2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCmluZGV4IDgzMWY2YjMuLmQ5OTA3MDIg MTAwNjQ0Ci0tLSBhL2NvbmZpZ3VyZS5hYworKysgYi9jb25maWd1cmUuYWMKQEAgLTEyNiw2ICsx MjYsMTUgQEAgQUNfQVJHX0VOQUJMRShzbmEsCiAJICAgICAgW1NOQT0iJGVuYWJsZXZhbCJdLAog CSAgICAgIFtTTkE9bm9dKQogQU1fQ09ORElUSU9OQUwoU05BLCB0ZXN0IHgkU05BICE9IHhubykK KworQUNfQVJHX0VOQUJMRShnbGFtb3IsCisJICAgICAgQVNfSEVMUF9TVFJJTkcoWy0tZW5hYmxl LWdsYW1vcl0sCisJCQkgICAgIFtFbmFibGUgZ2xhbW9yLCBhIG5ldyBHTC1iYXNlZCBhY2NlbGVy YXRpb24gW2RlZmF1bHQ9bm9dXSksCisJICAgICAgW0dMQU1PUj0iJGVuYWJsZXZhbCJdLAorCSAg ICAgIFtHTEFNT1I9bm9dKQorCitBTV9DT05ESVRJT05BTChHTEFNT1IsIHRlc3QgeCRHTEFNT1Ig IT0geG5vKQorCiBBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgdG8gaW5jbHVkZSBTTkEgc3VwcG9y dF0pCiAKIHJlcXVpcmVkX3hvcmdfeHNlcnZlcl92ZXJzaW9uPTEuNgpAQCAtMTM3LDYgKzE0Niwx NCBAQCBpZiB0ZXN0ICJ4JFNOQSIgIT0gInhubyI7IHRoZW4KIGZpCiBBQ19NU0dfUkVTVUxUKFsk U05BXSkKIAoraWYgdGVzdCAieCRHTEFNT1IiICE9ICJ4bm8iOyB0aGVuCisJUEtHX0NIRUNLX01P RFVMRVMoTElCR0xBTU9SLCBbZ2xhbW9yXSkKKwlQS0dfQ0hFQ0tfTU9EVUxFUyhMSUJHTEFNT1Jf RUdMLCBbZ2xhbW9yLWVnbF0pCisJQUNfREVGSU5FKEdMQU1PUiwgMSwgW0VuYWJsZSBnbGFtb3Ig YWNjZWxlcmF0aW9uXSkKK2ZpCisKK0FDX01TR19DSEVDS0lORyhbd2hldGhlciB0byBpbmNsdWRl IEdMQU1PUiBzdXBwb3J0XSkKK0FDX01TR19SRVNVTFQoWyRHTEFNT1JdKQogCiBBQ19BUkdfRU5B QkxFKHZtYXAsCiAJICAgICAgQVNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLXZtYXBdLApkaWZmIC0t Z2l0IGEvc3JjL01ha2VmaWxlLmFtIGIvc3JjL01ha2VmaWxlLmFtCmluZGV4IGNkMWJiMzYuLjFh MjkzOTAgMTAwNjQ0Ci0tLSBhL3NyYy9NYWtlZmlsZS5hbQorKysgYi9zcmMvTWFrZWZpbGUuYW0K QEAgLTQwLDYgKzQwLDEwIEBAIFNVQkRJUlMgKz0gc25hCiBpbnRlbF9kcnZfbGFfTElCQUREICs9 IHNuYS9saWJzbmEubGEKIGVuZGlmCiAKK2lmIEdMQU1PUgorR0xBTU9SX1NPVVJDRSA9IGludGVs X2dsYW1vci5jCitlbmRpZgorCiBOVUxMOj0jCiAKIGludGVsX2Rydl9sYV9TT1VSQ0VTID0gXApA QCAtNzAsNiArNzQsNyBAQCBpbnRlbF9kcnZfbGFfU09VUkNFUyA9IFwKIAkgaTk2NV8zZC5jIFwK IAkgaTk2NV92aWRlby5jIFwKIAkgaTk2NV9yZW5kZXIuYyBcCisJICQoR0xBTU9SX1NPVVJDRSkg XAogCSAkKE5VTEwpCiAKIGlmIERSSQpkaWZmIC0tZ2l0IGEvc3JjL2ludGVsX2dsYW1vci5jIGIv c3JjL2ludGVsX2dsYW1vci5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNh ZGZjNzEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvaW50ZWxfZ2xhbW9yLmMKQEAgLTAsMCArMSwx MzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgwqkgMjAxMSBJbnRlbCBDb3Jwb3JhdGlvbi4KKyAqCisg KiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBl cnNvbgorICogb2J0YWluaW5nIGEgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVk IGRvY3VtZW50YXRpb24KKyAqIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhl IFNvZnR3YXJlIHdpdGhvdXQKKyAqIHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1p dGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LAorICogbW9kaWZ5LCBtZXJnZSwgcHVibGlz aCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzCisgKiBvZiB0aGUg U29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwor ICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u czoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9u IG5vdGljZSAoaW5jbHVkaW5nCisgKiB0aGUgbmV4dCBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1 ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwKKyAqIHBvcnRpb25zIG9mIHRoZSBTb2Z0 d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBX QVJSQU5UWSBPRiBBTlkgS0lORCwKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJV VCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRgorICogTUVSQ0hBTlRBQklMSVRZLCBG SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQKKyAqIE5PTklORlJJTkdFTUVOVC4g IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVAorICogSE9MREVSUyBC RSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksCisgKiBX SEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJ TkcgRlJPTSwKKyAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9S IFRIRSBVU0UgT1IgT1RIRVIKKyAqIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KKyAqCisgKiBB dXRob3JzOgorICogICAgWmhpZ2FuZyBHb25nIDx6aGlnYW5nLmdvbmdAbGludXguaW50ZWwuY29t PgorICoKKyAqLworCisjaWZkZWYgSEFWRV9ESVhfQ09ORklHX0gKKyNpbmNsdWRlIDxkaXgtY29u ZmlnLmg+CisjZW5kaWYKKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNsdWRlIDxmY250bC5oPgor I2luY2x1ZGUgPHN5cy9pb2N0bC5oPgorI2luY2x1ZGUgPGVycm5vLmg+CisjaW5jbHVkZSA8eGY4 NmRybS5oPgorCisjZGVmaW5lIEdMQU1PUl9GT1JfWE9SRyAgMQorCisjaW5jbHVkZSA8Z2xhbW9y Lmg+CisjaW5jbHVkZSAiaW50ZWwuaCIKKyNpbmNsdWRlICJpbnRlbF9nbGFtb3IuaCIKKworQm9v bAoraW50ZWxfZ2xhbW9yX2NyZWF0ZV9zY3JlZW5fcmVzb3VyY2VzKFNjcmVlblB0ciBzY3JlZW4p Cit7CisJU2NybkluZm9QdHIgc2NybiA9IHhmODZTY3JlZW5zW3NjcmVlbi0+bXlOdW1dOworCWlu dGVsX3NjcmVlbl9wcml2YXRlICppbnRlbCA9IGludGVsX2dldF9zY3JlZW5fcHJpdmF0ZShzY3Ju KTsKKworCWlmICghZ2xhbW9yX2dseXBoc19pbml0KHNjcmVlbikpCisJCXJldHVybiBGQUxTRTsK KwlpZiAoIWdsYW1vcl9lZ2xfY3JlYXRlX3RleHR1cmVkX3NjcmVlbihzY3JlZW4sCisJCQkJCSAg ICAgICBpbnRlbC0+ZnJvbnRfYnVmZmVyLT5oYW5kbGUsCisJCQkJCSAgICAgICBpbnRlbC0+ZnJv bnRfcGl0Y2gpKQorCQlyZXR1cm4gRkFMU0U7CisJcmV0dXJuIFRSVUU7Cit9CisKK0Jvb2wKK2lu dGVsX2dsYW1vcl9wcmVfaW5pdChTY3JuSW5mb1B0ciBzY3JuKQoreworCWludGVsX3NjcmVlbl9w cml2YXRlICppbnRlbDsKKwlpbnRlbCA9IGludGVsX2dldF9zY3JlZW5fcHJpdmF0ZShzY3JuKTsK KwlyZXR1cm4gZ2xhbW9yX2VnbF9pbml0KHNjcm4sIGludGVsLT5kcm1TdWJGRCk7Cit9CisKK0Jv b2wKK2ludGVsX2dsYW1vcl9jcmVhdGVfdGV4dHVyZWRfcGl4bWFwKFBpeG1hcFB0ciBwaXhtYXAp Cit7CisJc3RydWN0IGludGVsX3BpeG1hcCAqcHJpdjsKKwlwcml2ID0gaW50ZWxfZ2V0X3BpeG1h cF9wcml2YXRlKHBpeG1hcCk7CisJcmV0dXJuIGdsYW1vcl9lZ2xfY3JlYXRlX3RleHR1cmVkX3Bp eG1hcChwaXhtYXAsIHByaXYtPmJvLT5oYW5kbGUsCisJCQkJCQkgcHJpdi0+c3RyaWRlKTsKK30K Kwordm9pZAoraW50ZWxfZ2xhbW9yX2Rlc3Ryb3lfcGl4bWFwKFBpeG1hcFB0ciBwaXhtYXApCit7 CisJZ2xhbW9yX2VnbF9kZXN0cm95X3RleHR1cmVkX3BpeG1hcChwaXhtYXApOworfQorCitCb29s CitpbnRlbF9nbGFtb3JfaW5pdChTY3JlZW5QdHIgc2NyZWVuKQoreworCVNjcm5JbmZvUHRyIHNj cm4gPSB4Zjg2U2NyZWVuc1tzY3JlZW4tPm15TnVtXTsKKworCWlmICghZ2xhbW9yX2luaXQoc2Ny ZWVuLCBHTEFNT1JfSU5WRVJURURfWV9BWElTKSkgeworCQl4Zjg2RHJ2TXNnKHNjcm4tPnNjcm5J bmRleCwgWF9FUlJPUiwKKwkJCSAgICJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBnbGFtb3JcbiIpOwor CQlyZXR1cm4gRkFMU0U7CisJfQorCisJaWYgKCFnbGFtb3JfZWdsX2luaXRfdGV4dHVyZWRfcGl4 bWFwKHNjcmVlbikpIHsKKwkJeGY4NkRydk1zZyhzY3JuLT5zY3JuSW5kZXgsIFhfRVJST1IsCisJ CQkgICAiRmFpbGVkIHRvIGluaXRpYWxpemUgZ2xhbW9yXG4iKTsKKwkJcmV0dXJuIEZBTFNFOwor CX0KKworCXJldHVybiBUUlVFOworfQorCit2b2lkCitpbnRlbF9nbGFtb3JfYmxvY2tfaGFuZGxl cihpbnRlbF9zY3JlZW5fcHJpdmF0ZSAqIGludGVsKQoreworCVNjcmVlblB0ciBzY3JlZW4gPSBz Y3JlZW5JbmZvLnNjcmVlbnNbaW50ZWwtPnNjcm4tPnNjcm5JbmRleF07CisJZ2xhbW9yX2Jsb2Nr X2hhbmRsZXIoc2NyZWVuKTsKK30KKworQm9vbAoraW50ZWxfZ2xhbW9yX2NyZWF0ZV9zY3JlZW5f aW1hZ2UoU2NyZWVuUHRyIHNjcmVlbiwgaW50IGhhbmRsZSwgaW50IHN0cmlkZSkKK3sKKwlQaXht YXBQdHIgcGl4bWFwOworCWlmICghZ2xhbW9yX2VnbF9jcmVhdGVfdGV4dHVyZWRfc2NyZWVuKHNj cmVlbiwgaGFuZGxlLCBzdHJpZGUpKQorCQlyZXR1cm4gRkFMU0U7CisJcGl4bWFwID0gc2NyZWVu LT5HZXRTY3JlZW5QaXhtYXAoc2NyZWVuKTsKKwlyZXR1cm4gVFJVRTsKK30KKworQm9vbAoraW50 ZWxfZ2xhbW9yX2Nsb3NlX3NjcmVlbihTY3JlZW5QdHIgc2NyZWVuKQoreworCXJldHVybiBnbGFt b3JfZWdsX2Nsb3NlX3NjcmVlbihzY3JlZW4pOworfQorCit2b2lkCitpbnRlbF9nbGFtb3JfZnJl ZV9zY3JlZW4oaW50IHNjcm5JbmRleCwgaW50IGZsYWdzKQoreworCWdsYW1vcl9lZ2xfZnJlZV9z Y3JlZW4oc2NybkluZGV4LCBHTEFNT1JfRUdMX0VYVEVSTkFMX0JVRkZFUik7Cit9CmRpZmYgLS1n aXQgYS9zcmMvaW50ZWxfZ2xhbW9yLmggYi9zcmMvaW50ZWxfZ2xhbW9yLmgKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDdjMmM4NgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9p bnRlbF9nbGFtb3IuaApAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0IMKpIDIwMTEg SW50ZWwgQ29ycG9yYXRpb24uCisgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwg ZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24KKyAqIG9idGFpbmluZyBhIGNvcHkgb2YgdGhp cyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uCisgKiBmaWxlcyAodGhlICJT b2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0CisgKiByZXN0cmljdGlv biwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwK KyAqIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9v ciBzZWxsIGNvcGllcworICogb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMg dG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0 byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBu b3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZworICogdGhlIG5leHQg cGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFs CisgKiBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBS T1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsCisgKiBFWFBSRVNT IE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMg T0YKKyAqIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug QU5ECisgKiBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBP UiBDT1BZUklHSFQKKyAqIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMg T1IgT1RIRVIgTElBQklMSVRZLAorICogV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1Qs IFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sCisgKiBPVVQgT0YgT1IgSU4gQ09OTkVD VElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSCisgKiBERUFMSU5HUyBJ TiBUSEUgU09GVFdBUkUuCisgKgorICogQXV0aG9yczoKKyAqICAgIFpoaWdhbmcgR29uZyA8emhp Z2FuZy5nb25nQGxpbnV4LmludGVsLmNvbT4KKyAqCisgKi8KK0Jvb2wgaW50ZWxfZ2xhbW9yX3By ZV9pbml0KFNjcm5JbmZvUHRyIHNjcm4pOworCitCb29sIGludGVsX2dsYW1vcl9pbml0KFNjcmVl blB0ciBzY3JlZW4pOworCitCb29sIGludGVsX2dsYW1vcl9jcmVhdGVfc2NyZWVuX3Jlc291cmNl cyhTY3JlZW5QdHIgc2NyZWVuKTsKKworQm9vbCBpbnRlbF9nbGFtb3JfY3JlYXRlX3NjcmVlbl9p bWFnZShTY3JlZW5QdHIgc2NyZWVuLCBpbnQgaGFuZGxlLCBpbnQgc3RyaWRlKTsKKworQm9vbCBp bnRlbF9nbGFtb3JfY2xvc2Vfc2NyZWVuKFNjcmVlblB0ciBzY3JlZW4pOworCit2b2lkIGludGVs X2dsYW1vcl9mcmVlX3NjcmVlbihpbnQgc2NybkluZGV4LCBpbnQgZmxhZ3MpOworCit2b2lkIGlu dGVsX2dsYW1vcl9ibG9ja19oYW5kbGVyKGludGVsX3NjcmVlbl9wcml2YXRlICogaW50ZWwpOwor CitCb29sIGludGVsX2dsYW1vcl9jcmVhdGVfdGV4dHVyZWRfcGl4bWFwKFBpeG1hcFB0ciBwaXht YXApOworCit2b2lkIGludGVsX2dsYW1vcl9kZXN0cm95X3BpeG1hcChQaXhtYXBQdHIgcGl4bWFw KTsKLS0gCjEuNy40LjQKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9w Lm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwt Z2Z4Cg==