From mboxrd@z Thu Jan 1 00:00:00 1970 From: Imre Deak Subject: Re: [PATCH v2 1/2] drm/i915/bxt: Port PLL programming BUN Date: Thu, 07 May 2015 12:27:51 +0300 Message-ID: <1430990871.8610.7.camel@intel.com> References: <1430980259-5471-1-git-send-email-vandana.kannan@intel.com> Reply-To: imre.deak@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 5B87D6E676 for ; Thu, 7 May 2015 02:27:55 -0700 (PDT) In-Reply-To: <1430980259-5471-1-git-send-email-vandana.kannan@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Vandana Kannan Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gdG8sIDIwMTUtMDUtMDcgYXQgMTI6MDAgKzA1MzAsIFZhbmRhbmEgS2FubmFuIHdyb3RlOgo+ IEJVTiAxOiBwcm9wX2NvZWZmLCBpbnRfY29lZmYsIHRkY3RhcmdldGNudCBwcm9ncmFtbWluZyB1 cGRhdGVkIGFuZCB0aWVkIHRvCj4gVkNPIGZyZXF1ZW5jaWVzLiBQcm9ncmFtIGlfbG9ja3RocmVz aCBpbiBQT1JUX1BMTF85Lgo+IAo+IFZDTyBjYWxjdWxhdGVkIGJhc2VkIG9uIHRoZSBmb3JtdWxh Ogo+IERlc2lyZWQgT3V0cHV0ID0gUG9ydCBiaXQgcmF0ZSBpbiBNSHogKERpc3BsYXlQb3J0IEhC UjIgaXMgNTQwMCBNSHopCj4gRmFzdCBDbG9jayA9IERlc2lyZWQgT3V0cHV0IC8gMgo+IFZDTyA9 IEZhc3QgQ2xvY2sgKiBQMSAqIFAyCj4gCj4gUHJvcF9jb2VmZiwgaW50X2NvZWZmLCBhbmQgdGRj dGFyZ2V0Y250IG1vZGlmaWVkIGFjY29yZGluZyB0byBhYm92ZQo+IGNhbGN1bGF0aW9uLgo+IAo+ IEJVTiAyOiBQb3J0IFBMTHMgcmVxdWlyZSBhZGRpdGlvbmFsIHByb2dyYW1taW5nIGF0IGNlcnRh aW4gZnJlcXVlbmNpZXMgLQo+IERDTyBhbXBsaXR1ZGUgaW4gUE9SVF9QTExfMTAKPiAKPiBSZXZp ZXcgY29tbWVudHMgZnJvbSBTaXZhIHdoaWNoIHdlcmUgYWRkcmVzc2VkIGluIHRoZSBpbml0aWFs IHZlcnNpb24gb2YgdGhlCj4gcGF0Y2guCj4gCS0gQ2hhbmdlIFBPUlRfUExMX0xPQ0tfVEhSRVNI T0xEIHRvIFBPUlRfUExMX0xPQ0tfVEhSRVNIT0xEX01BU0sKPiAJLSBDYWxjdWxhdGUgZm9yIEhE TUkKPiAJLSBDb3JyZWN0IHZhbHVlcyBmb3IgdmNvID0gNS40Cj4gCS0gcmV0dXJuIGluIGNhc2Ug b2YgaW52YWxpZCB2Y28gcmFuZ2UKPiAKPiB2MjogSW1yZSdzIHJldmlldyBjb21tZW50cyBhZGRy ZXNzZWQKPiAJLSBjaGFuZ2UgZGNvYW1wb3ZyX2VuIHRvIGRjb2FtcG92cl9lbl9oCj4gCS0gY2hh bmdlIFBPUlRfUExMX0RDT19BTVBfT1ZSX0VOIHRvIFBPUlRfUExMX0RDT19BTVBfT1ZSX0VOX0gK PiAJLSBDb3JyZWN0IGxhbmUgc3RhZ2dlciB2YWx1ZSBmb3IgMzI0TUh6Cj4gCS0gTWFrZSBjb2Vm IGNvbW1vbiBmb3IgSERNSSBhbmQgRFAKPiAJLSByZW1vdmUgc3VwZXJmbHVvdXMgY29tbWVudHMK PiAKPiBTaWduZWQtb2ZmLWJ5OiBWYW5kYW5hIEthbm5hbiA8dmFuZGFuYS5rYW5uYW5AaW50ZWwu Y29tPgo+IFJldmlld2VkLWJ5OiBTaXZha3VtYXIgVGh1bGFzaW1hbmkgPHNpdmFrdW1hci50aHVs YXNpbWFuaUBpbnRlbC5jb20+Cj4gQ2M6IFNpdmFrdW1hciBUaHVsYXNpbWFuaSA8c2l2YWt1bWFy LnRodWxhc2ltYW5pQGludGVsLmNvbT4KPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kcnYuaCAgfCAgMiArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oICB8ICA2 ICsrKysKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMgfCA2OSArKysrKysrKysr KysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tCj4gIDMgZmlsZXMgY2hhbmdlZCwgNjAgaW5z ZXJ0aW9ucygrKSwgMTcgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4g aW5kZXggMTM2ZDQyYS4uMDVhNGUxYyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2Rydi5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IEBA IC0zMDQsNyArMzA0LDcgQEAgc3RydWN0IGludGVsX2RwbGxfaHdfc3RhdGUgewo+ICAJdWludDMy X3QgY2ZnY3IxLCBjZmdjcjI7Cj4gIAo+ICAJLyogYnh0ICovCj4gLQl1aW50MzJfdCBlYmIwLCBw bGwwLCBwbGwxLCBwbGwyLCBwbGwzLCBwbGw2LCBwbGw4LCBwY3NkdzEyOwo+ICsJdWludDMyX3Qg ZWJiMCwgcGxsMCwgcGxsMSwgcGxsMiwgcGxsMywgcGxsNiwgcGxsOCwgcGxsMTAsIHBjc2R3MTI7 Cj4gIH07Cj4gIAo+ICBzdHJ1Y3QgaW50ZWxfc2hhcmVkX2RwbGxfY29uZmlnIHsKPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaCBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfcmVnLmgKPiBpbmRleCAxYjMxMjM4Li5iMDg2ZDI2IDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X3JlZy5oCj4gQEAgLTExODUsNiArMTE4NSwxMiBAQCBlbnVtIHNrbF9kaXNwX3Bvd2Vy X3dlbGxzIHsKPiAgI2RlZmluZSAgIFBPUlRfUExMX0dBSU5fQ1RMKHgpCQkoKHgpICA8PCAxNikK PiAgLyogUE9SVF9QTExfOF9BICovCj4gICNkZWZpbmUgICBQT1JUX1BMTF9UQVJHRVRfQ05UX01B U0sJMHgzRkYKPiArLyogUE9SVF9QTExfOV9BICovCj4gKyNkZWZpbmUgIFBPUlRfUExMX0xPQ0tf VEhSRVNIT0xEX01BU0sJMHhlCj4gKy8qIFBPUlRfUExMXzEwX0EgKi8KPiArI2RlZmluZSAgUE9S VF9QTExfRENPX0FNUF9PVlJfRU5fSAkoMTw8MjcpCj4gKyNkZWZpbmUgIFBPUlRfUExMX0RDT19B TVBfTUFTSwkJMHgzYzAwCj4gKyNkZWZpbmUgIFBPUlRfUExMX0RDT19BTVAoeCkJCSh4PDwxMCkK PiAgI2RlZmluZSBfUE9SVF9QTExfQkFTRShwb3J0KQkJX1BPUlQzKHBvcnQsIF9QT1JUX1BMTF8w X0EsCVwKPiAgCQkJCQkJX1BPUlRfUExMXzBfQiwJCVwKPiAgCQkJCQkJX1BPUlRfUExMXzBfQykK PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYwo+IGluZGV4IDljMWU3NGEuLjQ5YjlmZDggMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYwo+IEBAIC0xMzM3LDE4ICsxMzM3LDIwIEBAIHN0cnVj dCBieHRfY2xrX2RpdiB7Cj4gIAl1aW50MzJfdCBpbnRfY29lZjsKPiAgCXVpbnQzMl90IGdhaW5f Y3RsOwo+ICAJdWludDMyX3QgdGFyZ19jbnQ7Cj4gKwl1aW50MzJfdCBkY29hbXBvdnJfZW5faDsK PiArCXVpbnQzMl90IGRjb19hbXA7Cj4gIAl1aW50MzJfdCBsYW5lc3RhZ2dlcjsKPiAgfTsKPiAg Cj4gIC8qIHByZS1jYWxjdWxhdGVkIHZhbHVlcyBmb3IgRFAgbGlua3JhdGVzICovCj4gIHN0YXRp YyBzdHJ1Y3QgYnh0X2Nsa19kaXYgYnh0X2RwX2Nsa192YWxbN10gPSB7Cj4gLQkvKiAxNjIgKi8g ezQsIDIsIDMyLCAxNjc3NzIyLCAxLCAxLCA1LCAxMSwgMiwgOSwgMHhkfSwKPiAtCS8qIDI3MCAq LyB7NCwgMSwgMjcsICAgICAgIDAsIDAsIDEsIDMsICA4LCAxLCA5LCAweGR9LAo+IC0JLyogNTQw ICovIHsyLCAxLCAyNywgICAgICAgMCwgMCwgMSwgMywgIDgsIDEsIDksIDB4MTh9LAo+IC0JLyog MjE2ICovIHszLCAyLCAzMiwgMTY3NzcyMiwgMSwgMSwgNSwgMTEsIDIsIDksIDB4ZH0sCj4gLQkv KiAyNDMgKi8gezQsIDEsIDI0LCAxMjU4MjkxLCAxLCAxLCA1LCAxMSwgMiwgOSwgMHhkfSwKPiAt CS8qIDMyNCAqLyB7NCwgMSwgMzIsIDE2Nzc3MjIsIDEsIDEsIDUsIDExLCAyLCA5LCAweGR9LAo+ IC0JLyogNDMyICovIHszLCAxLCAzMiwgMTY3NzcyMiwgMSwgMSwgNSwgMTEsIDIsIDksIDB4MTh9 Cj4gKwkvKiAxNjIgKi8gezQsIDIsIDMyLCAxNjc3NzIyLCAxLCAxLCA0LCA5LCAzLCA4LCAwLCAx NSwgMHhkfSwKPiArCS8qIDI3MCAqLyB7NCwgMSwgMjcsICAgICAgIDAsIDAsIDEsIDMsICA4LCAx LCA5LCAwLCAxNSwgMHhkfSwKPiArCS8qIDU0MCAqLyB7MiwgMSwgMjcsICAgICAgIDAsIDAsIDEs IDMsICA4LCAxLCA5LCAwLCAxNSwgMHgxOH0sCj4gKwkvKiAyMTYgKi8gezMsIDIsIDMyLCAxNjc3 NzIyLCAxLCAxLCA0LCA5LCAzLCA4LCAwLCAxNSwgMHhkfSwKPiArCS8qIDI0MyAqLyB7NCwgMSwg MjQsIDEyNTgyOTEsIDEsIDEsIDUsIDExLCAzLCA5LCAxLCAxNSwgMHhkfSwKPiArCS8qIDMyNCAq LyB7NCwgMSwgMzIsIDE2Nzc3MjIsIDEsIDEsIDQsIDksIDMsIDgsIDAsIDE1LCAweDE4fSwKPiAr CS8qIDQzMiAqLyB7MywgMSwgMzIsIDE2Nzc3MjIsIDEsIDEsIDQsIDksIDMsIDgsIDAsIDE1LCAw eDE4fQoKV2UgY2FsY3VsYXRlIGFsbCBvZiBwcm9wX2NvZWYsIGludF9jb2VmLCBnYWluX2N0bCwg dGFyZ19jbnQsCmRjb2Fwb3ZyX2VuX2gsIGRjb19hbXAsIHNvIG5vIG5lZWQgdG8gaGF2ZSBmaXhl ZCB2YWx1ZXMgZm9yIHRoZXNlLiBUaGUKY29ycmVzcG9uZGluZyBmaWVsZHMgc2hvdWxkIGJlIHJl bW92ZWQgZnJvbSBieHRfY2xrX2RpdiBhbmQgcmVwbGFjZWQKd2l0aCBsb2NhbCB2YXJzIGluIGJ4 dF9kZGlfcGxsX3NlbGVjdC4KCj4gIH07Cj4gIAo+ICBzdGF0aWMgYm9vbAo+IEBAIC0xMzU5LDYg KzEzNjEsNyBAQCBieHRfZGRpX3BsbF9zZWxlY3Qoc3RydWN0IGludGVsX2NydGMgKmludGVsX2Ny dGMsCj4gIHsKPiAgCXN0cnVjdCBpbnRlbF9zaGFyZWRfZHBsbCAqcGxsOwo+ICAJc3RydWN0IGJ4 dF9jbGtfZGl2IGNsa19kaXYgPSB7MH07Cj4gKwlpbnQgdmNvID0gMDsKPiAgCj4gIAlpZiAoaW50 ZWxfZW5jb2Rlci0+dHlwZSA9PSBJTlRFTF9PVVRQVVRfSERNSSkgewo+ICAJCWludGVsX2Nsb2Nr X3QgYmVzdF9jbG9jazsKPiBAQCAtMTM4MiwxMSArMTM4NSw3IEBAIGJ4dF9kZGlfcGxsX3NlbGVj dChzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YywKPiAgCQljbGtfZGl2Lm0yX2ZyYWMgPSBi ZXN0X2Nsb2NrLm0yICYgKCgxIDw8IDIyKSAtIDEpOwo+ICAJCWNsa19kaXYubTJfZnJhY19lbiA9 IGNsa19kaXYubTJfZnJhYyAhPSAwOwo+ICAKPiAtCQkvKiBGSVhNRTogc2V0IGNvZWYsIGdhaW4s IHRhcmdjbnQgYmFzZWQgb24gZnJlcSBiYW5kICovCj4gLQkJY2xrX2Rpdi5wcm9wX2NvZWYgPSA1 Owo+IC0JCWNsa19kaXYuaW50X2NvZWYgPSAxMTsKPiAtCQljbGtfZGl2LmdhaW5fY3RsID0gMjsK PiAtCQljbGtfZGl2LnRhcmdfY250ID0gOTsKPiArCQl2Y28gPSBiZXN0X2Nsb2NrLnZjbzsKPiAg CQlpZiAoY2xvY2sgPiAyNzAwMDApCj4gIAkJCWNsa19kaXYubGFuZXN0YWdnZXIgPSAweDE4Owo+ ICAJCWVsc2UgaWYgKGNsb2NrID4gMTM1MDAwKQo+IEBAIC0xNDE2LDYgKzE0MTUsMzIgQEAgYnh0 X2RkaV9wbGxfc2VsZWN0KHN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjLAo+ICAJCQljbGtf ZGl2ID0gYnh0X2RwX2Nsa192YWxbMF07Cj4gIAkJCURSTV9FUlJPUigiVW5rbm93biBsaW5rIHJh dGVcbiIpOwo+ICAJCX0KPiArCQl2Y28gPSBjbG9jayAqIDEwIC8gMiAqIGNsa19kaXYucDEgKiBj bGtfZGl2LnAyOwo+ICsJfQo+ICsKPiArCWNsa19kaXYuZGNvX2FtcCA9IDE1Owo+ICsJY2xrX2Rp di5kY29hbXBvdnJfZW5faCA9IDA7Cj4gKwlpZiAodmNvID49IDYyMDAwMDAgJiYgdmNvIDw9IDY0 ODAwMDApIHsKPiArCQljbGtfZGl2LnByb3BfY29lZiA9IDQ7Cj4gKwkJY2xrX2Rpdi5pbnRfY29l ZiA9IDk7Cj4gKwkJY2xrX2Rpdi5nYWluX2N0bCA9IDM7Cj4gKwkJY2xrX2Rpdi50YXJnX2NudCA9 IDg7Cj4gKwl9IGVsc2UgaWYgKCh2Y28gPiA1NDAwMDAwICYmIHZjbyA8IDYyMDAwMDApIHx8Cj4g KwkJCSh2Y28gPj0gNDgwMDAwMCAmJiB2Y28gPCA1NDAwMDAwKSkgewo+ICsJCWNsa19kaXYucHJv cF9jb2VmID0gNTsKPiArCQljbGtfZGl2LmludF9jb2VmID0gMTE7Cj4gKwkJY2xrX2Rpdi5nYWlu X2N0bCA9IDM7Cj4gKwkJY2xrX2Rpdi50YXJnX2NudCA9IDk7Cj4gKwkJaWYgKHZjbyA+PSA0ODAw MDAwICYmIHZjbyA8IDU0MDAwMDApCj4gKwkJCWNsa19kaXYuZGNvYW1wb3ZyX2VuX2ggPSAxOwo+ ICsJfSBlbHNlIGlmICh2Y28gPT0gNTQwMDAwMCkgewo+ICsJCWNsa19kaXYucHJvcF9jb2VmID0g MzsKPiArCQljbGtfZGl2LmludF9jb2VmID0gODsKPiArCQljbGtfZGl2LmdhaW5fY3RsID0gMTsK PiArCQljbGtfZGl2LnRhcmdfY250ID0gOTsKPiArCX0gZWxzZSB7Cj4gKwkJRFJNX0VSUk9SKCJJ bnZhbGlkIFZDT1xuIik7Cj4gKwkJcmV0dXJuIGZhbHNlOwo+ICAJfQo+ICAKPiAgCWNydGNfc3Rh dGUtPmRwbGxfaHdfc3RhdGUuZWJiMCA9Cj4gQEAgLTE0MzUsNiArMTQ2MCwxMSBAQCBieHRfZGRp X3BsbF9zZWxlY3Qoc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMsCj4gIAo+ICAJY3J0Y19z dGF0ZS0+ZHBsbF9od19zdGF0ZS5wbGw4ID0gY2xrX2Rpdi50YXJnX2NudDsKPiAgCj4gKwlpZiAo Y2xrX2Rpdi5kY29hbXBvdnJfZW5faCkKPiArCQljcnRjX3N0YXRlLT5kcGxsX2h3X3N0YXRlLnBs bDEwID0gUE9SVF9QTExfRENPX0FNUF9PVlJfRU5fSDsKPiArCj4gKwljcnRjX3N0YXRlLT5kcGxs X2h3X3N0YXRlLnBsbDEwIHw9IFBPUlRfUExMX0RDT19BTVAoY2xrX2Rpdi5kY29fYW1wKTsKPiAr Cj4gIAljcnRjX3N0YXRlLT5kcGxsX2h3X3N0YXRlLnBjc2R3MTIgPQo+ICAJCUxBTkVTVEFHR0VS X1NUUkFQX09WUkQgfCBjbGtfZGl2LmxhbmVzdGFnZ2VyOwo+ICAKPiBAQCAtMjM2NiwxMCArMjM5 NiwxNiBAQCBzdGF0aWMgdm9pZCBieHRfZGRpX3BsbF9lbmFibGUoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LAo+ICAJdGVtcCB8PSBwbGwtPmNvbmZpZy5od19zdGF0ZS5wbGw4Owo+ ICAJSTkxNV9XUklURShCWFRfUE9SVF9QTEwocG9ydCwgOCksIHRlbXApOwo+ICAKPiAtCS8qCj4g LQkgKiBGSVhNRTogcHJvZ3JhbSBQT1JUX1BMTF85L2lfbG9ja3RocmVzaCBhY2NvcmRpbmcgdG8g dGhlIGxhdGVzdAo+IC0JICogc3BlY2lmaWNhdGlvbiB1cGRhdGUuCj4gLQkgKi8KPiArCXRlbXAg PSBJOTE1X1JFQUQoQlhUX1BPUlRfUExMKHBvcnQsIDkpKTsKPiArCXRlbXAgJj0gflBPUlRfUExM X0xPQ0tfVEhSRVNIT0xEX01BU0s7Cj4gKwl0ZW1wIHw9ICg1IDw8IDEpOwo+ICsJSTkxNV9XUklU RShCWFRfUE9SVF9QTEwocG9ydCwgOSksIHRlbXApOwo+ICsKPiArCXRlbXAgPSBJOTE1X1JFQUQo QlhUX1BPUlRfUExMKHBvcnQsIDEwKSk7Cj4gKwl0ZW1wICY9IH5QT1JUX1BMTF9EQ09fQU1QX09W Ul9FTl9IOwo+ICsJdGVtcCAmPSB+UE9SVF9QTExfRENPX0FNUF9NQVNLOwo+ICsJdGVtcCB8PSBw bGwtPmNvbmZpZy5od19zdGF0ZS5wbGwxMDsKPiArCUk5MTVfV1JJVEUoQlhUX1BPUlRfUExMKHBv cnQsIDEwKSwgdGVtcCk7Cj4gIAo+ICAJLyogUmVjYWxpYnJhdGUgd2l0aCBuZXcgc2V0dGluZ3Mg Ki8KPiAgCXRlbXAgPSBJOTE1X1JFQUQoQlhUX1BPUlRfUExMX0VCQl80KHBvcnQpKTsKPiBAQCAt MjQzMyw2ICsyNDY5LDcgQEAgc3RhdGljIGJvb2wgYnh0X2RkaV9wbGxfZ2V0X2h3X3N0YXRlKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCWh3X3N0YXRlLT5wbGwzID0gSTkx NV9SRUFEKEJYVF9QT1JUX1BMTChwb3J0LCAzKSk7Cj4gIAlod19zdGF0ZS0+cGxsNiA9IEk5MTVf UkVBRChCWFRfUE9SVF9QTEwocG9ydCwgNikpOwo+ICAJaHdfc3RhdGUtPnBsbDggPSBJOTE1X1JF QUQoQlhUX1BPUlRfUExMKHBvcnQsIDgpKTsKPiArCWh3X3N0YXRlLT5wbGwxMCA9IEk5MTVfUkVB RChCWFRfUE9SVF9QTEwocG9ydCwgMTApKTsKPiAgCS8qCj4gIAkgKiBXaGlsZSB3ZSB3cml0ZSB0 byB0aGUgZ3JvdXAgcmVnaXN0ZXIgdG8gcHJvZ3JhbSBhbGwgbGFuZXMgYXQgb25jZSB3ZQo+ICAJ ICogY2FuIHJlYWQgb25seSBsYW5lIHJlZ2lzdGVycy4gV2UgY29uZmlndXJlIGFsbCBsYW5lcyB0 aGUgc2FtZSB3YXksIHNvCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRl bC1nZngK