From mboxrd@z Thu Jan 1 00:00:00 1970 From: Deepak Rawat Subject: [PATCH 03/18] drm: Add helper iterator functions for plane fb_damage_clips blob Date: Thu, 27 Sep 2018 17:30:05 -0700 Message-ID: <20180928003020.1737-3-drawat@vmware.com> References: <20180928003020.1737-1-drawat@vmware.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from EX13-EDG-OU-001.vmware.com (ex13-edg-ou-001.vmware.com [208.91.0.189]) by gabe.freedesktop.org (Postfix) with ESMTPS id E9DFA6E0F8 for ; Fri, 28 Sep 2018 00:30:52 +0000 (UTC) In-Reply-To: <20180928003020.1737-1-drawat@vmware.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org, linux-graphics-maintainer@vmware.com, thellstrom@vmware.com, syeh@vmware.com Cc: Daniel Vetter , Deepak Rawat List-Id: dri-devel@lists.freedesktop.org V2l0aCBmYl9kYW1hZ2VfY2xpcHMgYmxvYiBwcm9wZXJ0eSBpbiBkcm1fcGxhbmVfc3RhdGUsIHRo aXMgcGF0Y2ggYWRkcwpoZWxwZXIgaXRlcmF0b3IgdG8gdHJhdmVyc2UgdGhlIGRhbWFnZSBjbGlw cyB0aGF0IGxpZSBpbnNpZGUgcGxhbmUgc3JjLgpJdGVyYXRvciB3aWxsIHJldHVybiBmdWxsIHBs YW5lIHNyYyBhcyBkYW1hZ2UgaW4gY2FzZSBuZWVkIGZ1bGwgcGxhbmUKdXBkYXRlIG9yIGRhbWFn ZSBpcyBub3Qgc3BlY2lmaWVkLgoKdjI6Ci0gUGxhbmUgc3JjIGNsaXBwaW5nIGNvcnJlY3Rpb24K LSBIYW5kbGUgbm8gcGxhbmUgdXBkYXRlIGNhc2UgaW4gaXRlcl9uZXh0CgpDYzogdmlsbGUuc3ly amFsYUBsaW51eC5pbnRlbC5jb20KQ2M6IERhbmllbCBWZXR0ZXIgPGRhbmllbC52ZXR0ZXJAZmZ3 bGwuY2g+CkNjOiBQZWtrYSBQYWFsYW5lbiA8cHBhYWxhbmVuQGdtYWlsLmNvbT4KU2lnbmVkLW9m Zi1ieTogRGVlcGFrIFJhd2F0IDxkcmF3YXRAdm13YXJlLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9k cm0vZHJtX2RhbWFnZV9oZWxwZXIuYyB8IDkxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr CiBpbmNsdWRlL2RybS9kcm1fZGFtYWdlX2hlbHBlci5oICAgICB8IDU0ICsrKysrKysrKysrKysr KysrCiBpbmNsdWRlL2RybS9kcm1fcGxhbmUuaCAgICAgICAgICAgICB8ICA0ICstCiAzIGZpbGVz IGNoYW5nZWQsIDE0OCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2RybV9kYW1hZ2VfaGVscGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJt X2RhbWFnZV9oZWxwZXIuYwppbmRleCBjMTMwNTE0YmJiMjEuLmJjNzM0ZGRhZjE4MCAxMDA2NDQK LS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9kYW1hZ2VfaGVscGVyLmMKKysrIGIvZHJpdmVycy9n cHUvZHJtL2RybV9kYW1hZ2VfaGVscGVyLmMKQEAgLTY1LDYgKzY1LDkgQEAKICAqCiAgKiBEcml2 ZXJzIHRoYXQgYXJlIGludGVyZXN0ZWQgaW4gZGFtYWdlIGludGVyZmFjZSBmb3IgcGxhbmUgc2hv dWxkIGVuYWJsZQogICogRkJfREFNQUdFX0NMSVBTIHByb3BlcnR5IGJ5IGNhbGxpbmcgZHJtX3Bs YW5lX2VuYWJsZV9mYl9kYW1hZ2VfY2xpcHMoKS4KKyAqIERyaXZlcnMgaW1wbGVtZW50aW5nIGRh bWFnZSBjYW4gdXNlIGRybV9hdG9taWNfaGVscGVyX2RhbWFnZV9pdGVyX2luaXQoKSBhbmQKKyAq IGRybV9hdG9taWNfaGVscGVyX2RhbWFnZV9pdGVyX25leHQoKSBoZWxwZXIgaXRlcmF0b3IgZnVu Y3Rpb24gdG8gZ2V0IGRhbWFnZQorICogcmVjdGFuZ2xlcyBjbGlwcGVkIHRvICZkcm1fcGxhbmVf c3RhdGUuc3JjLgogICovCiAKIC8qKgpAQCAtMTE5LDMgKzEyMiw5MSBAQCB2b2lkIGRybV9hdG9t aWNfaGVscGVyX2NoZWNrX3BsYW5lX2RhbWFnZShzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3Rh dGUsCiAJfQogfQogRVhQT1JUX1NZTUJPTChkcm1fYXRvbWljX2hlbHBlcl9jaGVja19wbGFuZV9k YW1hZ2UpOworCisvKioKKyAqIGRybV9hdG9taWNfaGVscGVyX2RhbWFnZV9pdGVyX2luaXQgLSBJ bml0aWFsaXplIHRoZSBkYW1hZ2UgaXRlcmF0b3IuCisgKiBAaXRlcjogVGhlIGl0ZXJhdG9yIHRv IGluaXRpYWxpemUuCisgKiBAb2xkX3N0YXRlOiBPbGQgcGxhbmUgc3RhdGUgZm9yIHZhbGlkYXRp b24uCisgKiBAbmV3X3N0YXRlOiBQbGFuZSBzdGF0ZSBmcm9tIHdoaWNoIHRvIGl0ZXJhdGUgdGhl IGRhbWFnZSBjbGlwcy4KKyAqCisgKiBJbml0aWFsaXplIGFuIGl0ZXJhdG9yLCB3aGljaCBjbGlw cyBwbGFuZSBkYW1hZ2UKKyAqICZkcm1fcGxhbmVfc3RhdGUuZmJfZGFtYWdlX2NsaXBzIHRvIHBs YW5lICZkcm1fcGxhbmVfc3RhdGUuc3JjLiBUaGlzIGl0ZXJhdG9yCisgKiByZXR1cm5zIGZ1bGwg cGxhbmUgc3JjIGluIGNhc2UgZGFtYWdlIGlzIG5vdCBwcmVzZW50IGJlY2F1c2UgZWl0aGVyCisg KiB1c2VyLXNwYWNlIGRpZG4ndCBzZW50IG9yIGRyaXZlciBkaXNjYXJkZWQgaXQgKGl0IHdhbnQg dG8gZG8gZnVsbCBwbGFuZQorICogdXBkYXRlKS4gQ3VycmVudGx5IHRoaXMgaXRlcmF0b3IgcmV0 dXJucyBmdWxsIHBsYW5lIHNyYyBpbiBjYXNlIHBsYW5lIHNyYworICogY2hhbmdlZCBidXQgdGhh dCBjYW4gYmUgY2hhbmdlZCBpbiBmdXR1cmUgdG8gcmV0dXJuIGRhbWFnZS4KKyAqCisgKiBGb3Ig dGhlIGNhc2Ugd2hlbiBwbGFuZSBpcyBub3QgdmlzaWJsZSBvciBwbGFuZSB1cGRhdGUgc2hvdWxk IG5vdCBoYXBwZW4gdGhlCisgKiBmaXJzdCBjYWxsIHRvIGl0ZXJfbmV4dCB3aWxsIHJldHVybiBm YWxzZS4gTm90ZSB0aGF0IHRoaXMgaGVscGVyIHVzZSBjbGlwcGVkCisgKiAmZHJtX3BsYW5lX3N0 YXRlLnNyYywgc28gZHJpdmVyIGNhbGxpbmcgdGhpcyBoZWxwZXIgc2hvdWxkIGhhdmUgY2FsbGVk CisgKiBkcm1fYXRvbWljX2hlbHBlcl9jaGVja19wbGFuZV9zdGF0ZSgpIGVhcmxpZXIuCisgKi8K K3ZvaWQKK2RybV9hdG9taWNfaGVscGVyX2RhbWFnZV9pdGVyX2luaXQoc3RydWN0IGRybV9hdG9t aWNfaGVscGVyX2RhbWFnZV9pdGVyICppdGVyLAorCQkJCSAgIGNvbnN0IHN0cnVjdCBkcm1fcGxh bmVfc3RhdGUgKm9sZF9zdGF0ZSwKKwkJCQkgICBjb25zdCBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRl ICpzdGF0ZSkKK3sKKwltZW1zZXQoaXRlciwgMCwgc2l6ZW9mKCppdGVyKSk7CisKKwlpZiAoIXN0 YXRlIHx8ICFzdGF0ZS0+Y3J0YyB8fCAhc3RhdGUtPmZiIHx8ICFzdGF0ZS0+dmlzaWJsZSkgewor CQlyZXR1cm47CisJfQorCisJaXRlci0+Y2xpcHMgPSBkcm1faGVscGVyX2dldF9wbGFuZV9kYW1h Z2VfY2xpcHMoc3RhdGUpOworCWl0ZXItPm51bV9jbGlwcyA9IGRybV9wbGFuZV9nZXRfZGFtYWdl X2NsaXBzX2NvdW50KHN0YXRlKTsKKworCS8qIFJvdW5kIGRvd24gZm9yIHgxL3kxIGFuZCByb3Vu ZCB1cCBmb3IgeDIveTIgdG8gY2F0Y2ggYWxsIHBpeGVscyAqLworCWl0ZXItPnBsYW5lX3NyYy54 MSA9IHN0YXRlLT5zcmMueDEgPj4gMTY7CisJaXRlci0+cGxhbmVfc3JjLnkxID0gc3RhdGUtPnNy Yy55MSA+PiAxNjsKKwlpdGVyLT5wbGFuZV9zcmMueDIgPSAoc3RhdGUtPnNyYy54MiA+PiAxNikg KyAhIShzdGF0ZS0+c3JjLngyICYgMHhGRkZGKTsKKwlpdGVyLT5wbGFuZV9zcmMueTIgPSAoc3Rh dGUtPnNyYy55MiA+PiAxNikgKyAhIShzdGF0ZS0+c3JjLnkyICYgMHhGRkZGKTsKKworCWlmICgh aXRlci0+Y2xpcHMgfHwgIWRybV9yZWN0X2VxdWFscygmc3RhdGUtPnNyYywgJm9sZF9zdGF0ZS0+ c3JjKSkgeworCQlpdGVyLT5jbGlwcyA9IDA7CisJCWl0ZXItPm51bV9jbGlwcyA9IDA7CisJCWl0 ZXItPmZ1bGxfdXBkYXRlID0gdHJ1ZTsKKwl9Cit9CitFWFBPUlRfU1lNQk9MKGRybV9hdG9taWNf aGVscGVyX2RhbWFnZV9pdGVyX2luaXQpOworCisvKioKKyAqIGRybV9hdG9taWNfaGVscGVyX2Rh bWFnZV9pdGVyX25leHQgLSBBZHZhbmNlIHRoZSBkYW1hZ2UgaXRlcmF0b3IuCisgKiBAaXRlcjog VGhlIGl0ZXJhdG9yIHRvIGFkdmFuY2UuCisgKiBAcmVjdDogUmV0dXJuIGEgcmVjdGFuZ2xlIGlu IGZiIGNvb3JkaW5hdGUgY2xpcHBlZCB0byBwbGFuZSBzcmMuCisgKgorICogU2luY2UgcGxhbmUg c3JjIGlzIGluIDE2LjE2IGZpeGVkIHBvaW50IGFuZCBkYW1hZ2UgY2xpcHMgYXJlIHdob2xlIG51 bWJlciwKKyAqIHRoaXMgaXRlcmF0b3Igcm91bmQgb2ZmIGNsaXBzIHRoYXQgaW50ZXJzZWN0IHdp dGggcGxhbmUgc3JjLiBSb3VuZCBkb3duIGZvcgorICogeDEveTEgYW5kIHJvdW5kIHVwIGZvciB4 Mi95MiBmb3IgdGhlIGludGVyc2VjdGVkIGNvb3JkaW5hdGUuIFNpbWlsYXIgcm91bmRpbmcKKyAq IG9mZiBmb3IgZnVsbCBwbGFuZSBzcmMsIGluIGNhc2UgaXQncyByZXR1cm5lZCBhcyBkYW1hZ2Uu IFRoaXMgaXRlcmF0b3Igd2lsbAorICogc2tpcCBkYW1hZ2UgY2xpcHMgb3V0c2lkZSBvZiBwbGFu ZSBzcmMuCisgKgorICogUmV0dXJuczogIFRydWUgaWYgdGhlIG91dHB1dCBpcyB2YWxpZCwgZmFs c2UgaWYgcmVhY2hlZCB0aGUgZW5kLgorICoKKyAqIElmIHRoZSBmaXJzdCBjYWxsIHRvIGl0ZXJh dG9yIG5leHQgcmV0dXJucyBmYWxzZSB0aGVuIGl0IG1lYW5zIG5vIG5lZWQgdG8KKyAqIHVwZGF0 ZSB0aGUgcGxhbmUuCisgKi8KK2Jvb2wKK2RybV9hdG9taWNfaGVscGVyX2RhbWFnZV9pdGVyX25l eHQoc3RydWN0IGRybV9hdG9taWNfaGVscGVyX2RhbWFnZV9pdGVyICppdGVyLAorCQkJCSAgIHN0 cnVjdCBkcm1fcmVjdCAqcmVjdCkKK3sKKwlib29sIHJldCA9IGZhbHNlOworCisJaWYgKGl0ZXIt PmZ1bGxfdXBkYXRlKSB7CisJCSpyZWN0ID0gaXRlci0+cGxhbmVfc3JjOworCQlpdGVyLT5mdWxs X3VwZGF0ZSA9IGZhbHNlOworCQlyZXR1cm4gdHJ1ZTsKKwl9CisKKwl3aGlsZSAoaXRlci0+Y3Vy cl9jbGlwIDwgaXRlci0+bnVtX2NsaXBzKSB7CisJCSpyZWN0ID0gaXRlci0+Y2xpcHNbaXRlci0+ Y3Vycl9jbGlwXTsKKwkJaXRlci0+Y3Vycl9jbGlwKys7CisKKwkJaWYgKGRybV9yZWN0X2ludGVy c2VjdChyZWN0LCAmaXRlci0+cGxhbmVfc3JjKSkgeworCQkJcmV0ID0gdHJ1ZTsKKwkJCWJyZWFr OworCQl9CisJfQorCisJcmV0dXJuIHJldDsKK30KK0VYUE9SVF9TWU1CT0woZHJtX2F0b21pY19o ZWxwZXJfZGFtYWdlX2l0ZXJfbmV4dCk7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1fZGFt YWdlX2hlbHBlci5oIGIvaW5jbHVkZS9kcm0vZHJtX2RhbWFnZV9oZWxwZXIuaAppbmRleCA1OTU4 NGNiZjNkNDAuLmFmMTg4Nzk5ODIwZiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9kcm0vZHJtX2RhbWFn ZV9oZWxwZXIuaAorKysgYi9pbmNsdWRlL2RybS9kcm1fZGFtYWdlX2hlbHBlci5oCkBAIC0zNCw4 ICszNCw2MiBAQAogCiAjaW5jbHVkZSA8ZHJtL2RybV9hdG9taWNfaGVscGVyLmg+CiAKKy8qKgor ICogZHJtX2F0b21pY19mb3JfZWFjaF9wbGFuZV9kYW1hZ2UgLSBJdGVyYXRvciBtYWNybyBmb3Ig cGxhbmUgZGFtYWdlLgorICogQGl0ZXI6IFRoZSBpdGVyYXRvciB0byBhZHZhbmNlLgorICogQHJl Y3Q6IFJldHVybiBhIHJlY3RhbmdsZSBpbiBmYiBjb29yZGluYXRlIGNsaXBwZWQgdG8gcGxhbmUg c3JjLgorICoKKyAqIE5vdGUgdGhhdCBpZiB0aGUgZmlyc3QgY2FsbCB0byBpdGVyYXRvciBtYWNy byByZXR1cm4gZmFsc2UgdGhlbiBubyBuZWVkIHRvIGRvCisgKiBwbGFuZSB1cGRhdGUuIEl0ZXJh dG9yIHdpbGwgcmV0dXJuIGZ1bGwgcGxhbmUgc3JjIHdoZW4gZGFtYWdlIGlzIG5vdCBwYXNzZWQK KyAqIGJ5IHVzZXItc3BhY2UuCisgKi8KKyNkZWZpbmUgZHJtX2F0b21pY19mb3JfZWFjaF9wbGFu ZV9kYW1hZ2UoaXRlciwgcmVjdCkgXAorCXdoaWxlIChkcm1fYXRvbWljX2hlbHBlcl9kYW1hZ2Vf aXRlcl9uZXh0KGl0ZXIsIHJlY3QpKQorCisvKioKKyAqIHN0cnVjdCBkcm1fYXRvbWljX2hlbHBl cl9kYW1hZ2VfaXRlciAtIENsb3N1cmUgc3RydWN0dXJlIGZvciBkYW1hZ2UgaXRlcmF0b3IuCisg KgorICogVGhpcyBzdHJ1Y3R1cmUgdHJhY2tzIHN0YXRlIG5lZWRlZCB0byB3YWxrIHRoZSBsaXN0 IG9mIHBsYW5lIGRhbWFnZSBjbGlwcy4KKyAqLworc3RydWN0IGRybV9hdG9taWNfaGVscGVyX2Rh bWFnZV9pdGVyIHsKKwkvKiBwcml2YXRlOiBQbGFuZSBzcmMgaW4gd2hvbGUgbnVtYmVyLiAqLwor CXN0cnVjdCBkcm1fcmVjdCBwbGFuZV9zcmM7CisJLyogcHJpdmF0ZTogUmVjdGFuZ2xlcyBpbiBw bGFuZSBkYW1hZ2UgYmxvYi4gKi8KKwljb25zdCBzdHJ1Y3QgZHJtX3JlY3QgKmNsaXBzOworCS8q IHByaXZhdGU6IE51bWJlciBvZiByZWN0YW5nbGVzIGluIHBsYW5lIGRhbWFnZSBibG9iLiAqLwor CXVpbnQzMl90IG51bV9jbGlwczsKKwkvKiBwcml2YXRlOiBDdXJyZW50IGNsaXAgaXRlcmF0b3Ig aXMgYWR2YW5jaW5nIG9uLiAqLworCXVpbnQzMl90IGN1cnJfY2xpcDsKKwkvKiBwcml2YXRlOiBX aGV0aGVyIG5lZWQgZnVsbCBwbGFuZSB1cGRhdGUuICovCisJYm9vbCBmdWxsX3VwZGF0ZTsKK307 CisKIHZvaWQgZHJtX3BsYW5lX2VuYWJsZV9mYl9kYW1hZ2VfY2xpcHMoc3RydWN0IGRybV9wbGFu ZSAqcGxhbmUpOwogdm9pZCBkcm1fYXRvbWljX2hlbHBlcl9jaGVja19wbGFuZV9kYW1hZ2Uoc3Ry dWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlLAogCQkJCQkgIHN0cnVjdCBkcm1fcGxhbmVfc3Rh dGUgKnBsYW5lX3N0YXRlKTsKK3ZvaWQKK2RybV9hdG9taWNfaGVscGVyX2RhbWFnZV9pdGVyX2lu aXQoc3RydWN0IGRybV9hdG9taWNfaGVscGVyX2RhbWFnZV9pdGVyICppdGVyLAorCQkJCSAgIGNv bnN0IHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKm9sZF9zdGF0ZSwKKwkJCQkgICBjb25zdCBzdHJ1 Y3QgZHJtX3BsYW5lX3N0YXRlICpuZXdfc3RhdGUpOworYm9vbAorZHJtX2F0b21pY19oZWxwZXJf ZGFtYWdlX2l0ZXJfbmV4dChzdHJ1Y3QgZHJtX2F0b21pY19oZWxwZXJfZGFtYWdlX2l0ZXIgKml0 ZXIsCisJCQkJICAgc3RydWN0IGRybV9yZWN0ICpyZWN0KTsKKworLyoqCisgKiBkcm1faGVscGVy X2dldF9wbGFuZV9kYW1hZ2VfY2xpcHMgLSBSZXR1cm5zIGRhbWFnZSBjbGlwcyBpbiAmZHJtX3Jl Y3QuCisgKiBAc3RhdGU6IFBsYW5lIHN0YXRlLgorICoKKyAqIFJldHVybnMgcGxhbmUgZGFtYWdl IHJlY3RhbmdsZXMgaW4gaW50ZXJuYWwgJmRybV9yZWN0LiBDdXJyZW50bHkgJmRybV9yZWN0Cisg KiBjYW4gYmUgb2J0YWluZWQgYnkgc2ltcGx5IHR5cGVjYXN0aW5nICZkcm1fbW9kZV9yZWN0LiBU aGlzIGlzIGJlY2F1c2UgYm90aAorICogYXJlIHNpZ25lZCAzMiBhbmQgZHVyaW5nIGRybV9hdG9t aWNfY2hlY2tfb25seSgpIGl0IGlzIHZlcmlmaWVkIHRoYXQgZGFtYWdlCisgKiBjbGlwcyBhcmUg aW5zaWRlIGZiLgorICoKKyAqIFJldHVybnM6IENsaXBzIGluIHBsYW5lIGZiX2RhbWFnZV9jbGlw cyBibG9iIHByb3BlcnR5LgorICovCitzdGF0aWMgaW5saW5lIHN0cnVjdCBkcm1fcmVjdCAqCitk cm1faGVscGVyX2dldF9wbGFuZV9kYW1hZ2VfY2xpcHMoY29uc3Qgc3RydWN0IGRybV9wbGFuZV9z dGF0ZSAqc3RhdGUpCit7CisJcmV0dXJuIChzdHJ1Y3QgZHJtX3JlY3QgKilkcm1fcGxhbmVfZ2V0 X2RhbWFnZV9jbGlwcyhzdGF0ZSk7Cit9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9k cm0vZHJtX3BsYW5lLmggYi9pbmNsdWRlL2RybS9kcm1fcGxhbmUuaAppbmRleCA4NGYzNWM2ZDY1 OTAuLjk5ODk0NTk4ZWQ3YyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9kcm0vZHJtX3BsYW5lLmgKKysr IGIvaW5jbHVkZS9kcm0vZHJtX3BsYW5lLmgKQEAgLTgyOCw3ICs4MjgsOSBAQCBkcm1fcGxhbmVf Z2V0X2RhbWFnZV9jbGlwc19jb3VudChjb25zdCBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpzdGF0 ZSkKICAqIGRybV9wbGFuZV9nZXRfZGFtYWdlX2NsaXBzIC0gUmV0dXJucyBkYW1hZ2UgY2xpcHMu CiAgKiBAc3RhdGU6IFBsYW5lIHN0YXRlLgogICoKLSAqIE5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9u IHJldHVybnMgdWFwaSB0eXBlICZkcm1fbW9kZV9yZWN0LgorICogTm90ZSB0aGF0IHRoaXMgZnVu Y3Rpb24gcmV0dXJucyB1YXBpIHR5cGUgJmRybV9tb2RlX3JlY3QuIERyaXZlcnMgbWlnaHQKKyAq IGluc3RlYWQgYmUgaW50ZXJlc3RlZCBpbiBpbnRlcm5hbCAmZHJtX3JlY3Qgd2hpY2ggY2FuIGJl IG9idGFpbmVkIGJ5IGNhbGxpbmcKKyAqIGRybV9oZWxwZXJfZ2V0X3BsYW5lX2RhbWFnZV9jbGlw cygpLgogICoKICAqIFJldHVybnM6IERhbWFnZSBjbGlwcyBpbiBwbGFuZSBmYl9kYW1hZ2VfY2xp cHMgYmxvYiBwcm9wZXJ0eS4KICAqLwotLSAKMi4xNy4xCgpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZl bEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFp bG1hbi9saXN0aW5mby9kcmktZGV2ZWwK