From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thomas Leonard Subject: [PATCH ARM v7 05/13] mini-os: arm: boot code Date: Fri, 8 Aug 2014 16:47:34 +0100 Message-ID: <1407512862-9373-6-git-send-email-talex5@gmail.com> References: <1407512862-9373-1-git-send-email-talex5@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.xen.org with esmtp (Exim 4.72) (envelope-from ) id 1XFmOE-00074U-8A for xen-devel@lists.xenproject.org; Fri, 08 Aug 2014 15:47:34 +0000 Received: by mail-we0-f180.google.com with SMTP id w61so5788805wes.39 for ; Fri, 08 Aug 2014 08:47:32 -0700 (PDT) In-Reply-To: <1407512862-9373-1-git-send-email-talex5@gmail.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: xen-devel@lists.xenproject.org Cc: Thomas Leonard , Dave.Scott@eu.citrix.com, anil@recoil.org, stefano.stabellini@eu.citrix.com, samuel.thibault@ens-lyon.org List-Id: xen-devel@lists.xenproject.org QmFzZWQgb24gYW4gaW5pdGlhbCBwYXRjaCBieSBLYXJpbSBSYXNsYW4uCgpTaWduZWQtb2ZmLWJ5 OiBLYXJpbSBBbGxhaCBBaG1lZCA8a2FyaW0uYWxsYWguYWhtZWRAZ21haWwuY29tPgpTaWduZWQt b2ZmLWJ5OiBUaG9tYXMgTGVvbmFyZCA8dGFsZXg1QGdtYWlsLmNvbT4KCi0tLQoKQ2hhbmdlcyBz aW5jZSB2NjoKCi0gRml4ZWQgcHJpbnRrIGZvcm1hdCB0eXBlcy4KCkFkZHJlc3NlZCBJYW4gQ2Ft cGJlbGwncyBjb21tZW50czoKLSBBUk12NyBBOC44LjI0NyBzYXlzIHVkZiBzaG91bGQgbm90IGJl IHVzZWQgY29uZGl0aW9uYWxseSwgc28gdXNlCiAgYSBicmFuY2ggaW5zdGVhZC4KLSBFbmFibGUg Y2FjaGluZyBlYXJsaWVyIChyZXF1aXJlZCBzZXR0aW5nIHRoZSBjYWNoZWFiaWxpdHkgZm9yIHRo ZQogIHRyYW5zbGF0aW9uIHRhYmxlIHdhbGtzKS4KLSBBZGRlZCBzb21lIGV4dHJhIGRzYiBpbnN0 cnVjdGlvbnMgdG8gcHJvdGVjdCBhZ2FpbnN0IHJlb3JkZXJpbmcuCgpBZGRyZXNzZWQgSnVsaWVu IEdyYWxsJ3MgY29tbWVudHM6Ci0gTm90ZSB0aGF0IFRUQkNSIGlzIHplcm8gKHVzaW5nIHNob3J0 LWRlc2NyaXB0b3JzLCBUVEJSMCBvbmx5KS4KLSBOb3RlIGFib3V0IHJlbHlpbmcgb24gMHg4MDAw IGxvYWQgb2Zmc2V0LgotLS0KIGV4dHJhcy9taW5pLW9zL2FyY2gvYXJtL2FybTMyLlMgICAgICAg ICAgfCAyMTEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogZXh0cmFzL21pbmktb3Mv YXJjaC9hcm0vaHlwZXJjYWxsczMyLlMgICB8ICA2NCArKysrKysrKysrCiBleHRyYXMvbWluaS1v cy9hcmNoL2FybS9taW5pb3MtYXJtMzIubGRzIHwgIDgzICsrKysrKysrKysrKwogZXh0cmFzL21p bmktb3MvYXJjaC9hcm0vc2V0dXAuYyAgICAgICAgICB8IDExOSArKysrKysrKysrKysrKysrKwog NCBmaWxlcyBjaGFuZ2VkLCA0NzcgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGV4 dHJhcy9taW5pLW9zL2FyY2gvYXJtL2FybTMyLlMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBleHRyYXMv bWluaS1vcy9hcmNoL2FybS9oeXBlcmNhbGxzMzIuUwogY3JlYXRlIG1vZGUgMTAwNzU1IGV4dHJh cy9taW5pLW9zL2FyY2gvYXJtL21pbmlvcy1hcm0zMi5sZHMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBl eHRyYXMvbWluaS1vcy9hcmNoL2FybS9zZXR1cC5jCgpkaWZmIC0tZ2l0IGEvZXh0cmFzL21pbmkt b3MvYXJjaC9hcm0vYXJtMzIuUyBiL2V4dHJhcy9taW5pLW9zL2FyY2gvYXJtL2FybTMyLlMKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDJlNjkzMgotLS0gL2Rldi9udWxsCisr KyBiL2V4dHJhcy9taW5pLW9zL2FyY2gvYXJtL2FybTMyLlMKQEAgLTAsMCArMSwyMTEgQEAKK0Ag T2Zmc2V0IG9mIHRoZSBrZXJuZWwgd2l0aGluIHRoZSBSQU0uIFRoaXMgaXMgYSBMaW51eC96SW1h Z2UgY29udmVudGlvbiB3aGljaCB3ZQorQCByZWx5IG9uIGZvciBub3cuCisjZGVmaW5lIFpJTUFH RV9LRVJORUxfT0ZGU0VUIDB4ODAwMAorCisuc2VjdGlvbiAudGV4dAorCisuZ2xvYmwgX3N0YXJ0 Citfc3RhcnQ6CisJQCB6SW1hZ2UgaGVhZGVyCisucmVwdCAgIDgKKyAgICAgICAgbW92ICAgICBy MCwgcjAKKy5lbmRyCisgICAgICAgIGIgICAgICAgcmVzZXQKKyAgICAgICAgLndvcmQgICAweDAx NmYyODE4ICAgICAgQCBNYWdpYyBudW1iZXJzIHRvIGhlbHAgdGhlIGxvYWRlcgorICAgICAgICAu d29yZCAgIDAJCUAgekltYWdlIHN0YXJ0IGFkZHJlc3MgKDAgPSByZWxvY2F0YWJsZSkKKyAgICAg ICAgLndvcmQgICBfZWRhdGEgLSBfc3RhcnQgQCB6SW1hZ2UgZW5kIGFkZHJlc3MgKGV4Y2x1ZGVz IGJzcyBzZWN0aW9uKQorCUAgZW5kIG9mIHpJbWFnZSBoZWFkZXIKKworQCBDYWxsZWQgYXQgYm9v dCB0aW1lLiBTZXRzIHVwIE1NVSwgZXhjZXB0aW9uIHZlY3RvcnMgYW5kIHN0YWNrLCBhbmQgdGhl biBjYWxscyBDIGFyY2hfaW5pdCgpIGZ1bmN0aW9uLgorQCA9PiByMiAtPiBEVEIKK0AgPD0gbmV2 ZXIgcmV0dXJucworQCBOb3RlOiB0aGlzIGJvb3QgY29kZSBuZWVkcyB0byBiZSB3aXRoaW4gdGhl IGZpcnN0ICgxTUIgLSBaSU1BR0VfS0VSTkVMX09GRlNFVCkgb2YgX3N0YXJ0LgorcmVzZXQ6CisJ QCBQcm9ibGVtOiB0aGUgQyBjb2RlIHdhbnRzIHRvIGJlIGF0IGEga25vd24gYWRkcmVzcyAoX3N0 YXJ0KSwgYnV0IFhlbiBtaWdodAorCUAgbG9hZCB1cyBhbnl3aGVyZS4gV2UgaW5pdGlhbGlzZSB0 aGUgTU1VIChtYXBwaW5nIHZpcnR1YWwgdG8gcGh5c2ljYWwgQCBhZGRyZXNzZXMpCisJQCBzbyBl dmVyeXRoaW5nIGVuZHMgdXAgd2hlcmUgdGhlIGNvZGUgZXhwZWN0cyBpdCB0byBiZS4KKwlACisJ QCBXZSBjYWxjdWxhdGUgdGhlIG9mZmV0IGJldHdlZW4gd2hlcmUgdGhlIGxpbmtlciB0aG91Z2h0 IF9zdGFydCB3b3VsZCBiZSBhbmQgd2hlcmUKKwlAIGl0IGFjdHVhbGx5IGlzIGFuZCBpbml0aWFs aXNlIHRoZSBwYWdlIHRhYmxlcyB0byBoYXZlIHRoYXQgb2Zmc2V0IGZvciBldmVyeSBwYWdlLgor CUAKKwlAIFdoZW4gd2UgdHVybiBvbiB0aGUgTU1VLCB3ZSdyZSBzdGlsbCBleGVjdXRpbmcgYXQg dGhlIG9sZCBhZGRyZXNzLiBXZSBkb24ndCB3YW50CisJQCB0aGUgY29kZSB0byBkaXNhcHBlYXIg ZnJvbSB1bmRlciB1cy4gU28gd2UgaGF2ZSB0byBkbyB0aGUgbWFwcGluZyBpbiBzdGFnZXM6CisJ QAorCUAgMS4gc2V0IHVwIGEgbWFwcGluZyB0byBvdXIgY3VycmVudCBwYWdlIGZyb20gYm90aCBp dHMgY3VycmVudCBhbmQgZGVzaXJlZCBhZGRyZXNzZXMKKwlAIDIuIGVuYWJsZSB0aGUgTU1VCisJ QCAzLiBqdW1wIHRvIHRoZSBuZXcgYWRkcmVzcworCUAgNC4gcmVtYXAgYWxsIHRoZSBvdGhlciBw YWdlcyB3aXRoIHRoZSBjYWxjdWxhdGVkIG9mZnNldAorCisJYWRyCXIxLCBfc3RhcnQJCUAgcjEg PSBwaHlzaWNhbCBhZGRyZXNzIG9mIF9zdGFydAorCWxkcglyMywgPV9zdGFydAkJQCByMyA9IChk ZXNpcmVkKSB2aXJ0dWFsIGFkZHJlc3Mgb2YgX3N0YXJ0CisJc3ViIAlyOSwgcjEsIHIzCQlAIHI5 ID0gKHBoeXNpY2FsIC0gdmlydHVhbCkgb2Zmc2V0CisKKwlsZHIJcjcsID1fcGFnZV9kaXIJCUAg cjcgPSAoZGVzaXJlZCkgdmlydHVhbCBhZGRyIG9mIHRyYW5zbGF0aW9uIHRhYmxlCisJYWRkCXIx LCByNywgcjkJCUAgcjEgPSBwaHlzaWNhbCBhZGRyIG9mIHRyYW5zbGF0aW9uIHRhYmxlCisKKwlA IFRlbGwgdGhlIHN5c3RlbSB3aGVyZSBvdXIgcGFnZSB0YWJsZSBpcyBsb2NhdGVkLgorCUAgVGhp cyBpcyB0aGUgMTYgS0IgdG9wLWxldmVsIHRyYW5zbGF0aW9uIHRhYmxlLCBpbiB3aGljaAorCUAg ZWFjaCB3b3JkIG1hcHMgb25lIDFNQiB2aXJ0dWFsIHNlY3Rpb24gdG8gYSBwaHlzaWNhbCBzZWN0 aW9uLgorCUAgTm90ZTogV2UgbGVhdmUgVFRCQ1IgYXMgMCwgbWVhbmluZyB0aGF0IG9ubHkgVFRC UjAgaXMgdXNlZCBhbmQKKwlAIHdlIHVzZSB0aGUgc2hvcnQtZGVzY3JpcHRvciBmb3JtYXQgKDMy LWJpdCBwaHlzaWNhbCBhZGRyZXNzZXMpLgorCW9ycglyMCwgcjEsICMwYjAwMDEwMTEJQCBTaGFy YWJsZSwgSW5uZXIvT3V0ZXIgV3JpdGUtQmFjayBXcml0ZS1BbGxvY2F0ZSBDYWNoZWFibGUKKwlt Y3IJcDE1LCAwLCByMCwgYzIsIGMwLCAwCUAgc2V0IFRUQlIwCisKKwlAIFNldCBhY2Nlc3MgcGVy bWlzc2lvbiBmb3IgZG9tYWlucy4KKwlAIERvbWFpbnMgYXJlIGRlcHJlY2F0ZWQsIGJ1dCB3ZSBo YXZlIHRvIGNvbmZpZ3VyZSB0aGVtIGFueXdheS4KKwlAIFdlIG1hcmsgZXZlcnkgcGFnZSBhcyBi ZWluZyBkb21haW4gMCBhbmQgc2V0IGRvbWFpbiAwIHRvICJjbGllbnQgbW9kZSIKKwlAIChjbGll bnQgbW9kZSA9IHVzZSBhY2Nlc3MgZmxhZ3MgaW4gcGFnZSB0YWJsZSkuCisJbW92CXIwLCAjMQkJ CUAgMSA9IGNsaWVudAorCW1jcglwMTUsIDAsIHIwLCBjMywgYzAsIDAJQCBEQUNSCisKKwlAIFRl bXBsYXRlIChmbGFncykgZm9yIGEgMSBNQiBwYWdlLXRhYmxlIGVudHJ5LgorCUAgVEVYWzI6MF0g QyBCID0gMDAxIDEgMSAob3V0ZXIgYW5kIGlubmVyIHdyaXRlLWJhY2ssIHdyaXRlLWFsbG9jYXRl KQorCWxkcglyOCwgPSgweDIgKyAgCQkvKiBTZWN0aW9uIGVudHJ5ICovIFwKKwkJICAgICAgMHhj ICsgIAkJLyogQyBCICovIFwKKwkJICAgICAgKDMgPDwgMTApICsgCS8qIFJlYWQvd3JpdGUgKi8g XAorCQkgICAgICAoMSA8PCAxMikgKwkvKiBURVggKi8gXAorCQkgICAgICAoMSA8PCAxNikgKwkv KiBTaGFyYWJsZSAqLyBcCisJCSAgICAgICgxPDwxOSkpCQkvKiBOb24tc2VjdXJlICovCisJQCBy OCA9IHRlbXBsYXRlIHBhZ2UgdGFibGUgZW50cnkKKworCUAgQWRkIGFuIGVudHJ5IGZvciB0aGUg Y3VycmVudCBwaHlzaWNhbCBzZWN0aW9uLCBhdCB0aGUgb2xkIGFuZCBuZXcKKwlAIGFkZHJlc3Nl cy4gSXQncyBPSyBpZiB0aGV5J3JlIHRoZSBzYW1lLgorCW1vdglyMCwgcGMsIGxzciMyMAorCW1v dglyMCwgcjAsIGxzbCMyMAkJQCByMCA9IHBoeXNpY2FsIGFkZHJlc3Mgb2YgdGhpcyBjb2RlJ3Mg c2VjdGlvbiBzdGFydAorCW9ycglyMywgcjAsIHI4CQlAIHIzID0gdGFibGUgZW50cnkgZm9yIHRo aXMgc2VjdGlvbgorCWxkcglyNCwgPV9zdGFydAkJQCByNCA9IGRlc2lyZWQgdmlydHVhbCBhZGRy ZXNzIG9mIHRoaXMgc2VjdGlvbgorCXN0cglyMywgW3IxLCByNCwgbHNyIzE4XSAJQCBtYXAgZGVz aXJlZCB2aXJ0dWFsIHNlY3Rpb24gdG8gdGhpcyBjb2RlCisJc3RyCXIzLCBbcjEsIHIwLCBsc3Ij MThdCUAgbWFwIGN1cnJlbnQgc2VjdGlvbiB0byB0aGlzIGNvZGUgdG9vCisKKwlAIEludmFsaWRh dGUgVExCCisJZHNiCQkJCUAgQ2FjaGluZyBpcyBvZmYsIGJ1dCBtdXN0IHN0aWxsIHByZXZlbnQg cmVvcmRlcmluZworCW1jcglwMTUsIDAsIHIxLCBjOCwgYzcsIDAJQCBUTEJJQUxMCisKKwlAIEVu YWJsZSBNTVUgLyBTQ1RMUgorCW1yYwlwMTUsIDAsIHIxLCBjMSwgYzAsIDAJQCBTQ1RMUgorCW9y cglyMSwgcjEsICMzIDw8IDExCUAgZW5hYmxlIGljYWNoZSwgYnJhbmNoIHByZWRpY3Rpb24KKwlv cnIJcjEsIHIxLCAjNCArIDEJCUAgZW5hYmxlIGRjYWNoZSwgTU1VCisJbWNyCXAxNSwgMCwgcjEs IGMxLCBjMCwgMAlAIFNDVExSCisJaXNiCisKKwlsZHIJcjEsID1zdGFnZTIJCUAgVmlydHVhbCBh ZGRyZXNzIG9mIHN0YWdlMgorCWJ4CXIxCisKK0AgQ2FsbGVkIG9uY2UgdGhlIE1NVSBpcyBlbmFi bGVkLiBUaGUgYm9vdCBjb2RlIGFuZCB0aGUgcGFnZSB0YWJsZSBhcmUgbWFwcGVkLAorQCBidXQg bm90aGluZyBlbHNlIGlzIHlldC4KK0AKK0AgPT4gcjIgLT4gZHRiIChwaHlzaWNhbCkKK0AgICAg cjcgPSB2aXJ0dWFsIGFkZHJlc3Mgb2YgcGFnZSB0YWJsZQorQCAgICByOCA9IHNlY3Rpb24gZW50 cnkgdGVtcGxhdGUgKGZsYWdzKQorQCAgICByOSA9IGRlc2lyZWQgcGh5c2ljYWwgLSB2aXJ0dWFs IG9mZnNldAorQCAgICBwYyAtPiBzb21ld2hlcmUgaW4gbmV3bHktbWFwcGVkIHZpcnR1YWwgY29k ZSBzZWN0aW9uCitzdGFnZTI6CisJQCBJbnZhbGlkYXRlIFRMQgorCW1jcglwMTUsIDAsIHIxLCBj OCwgYzcsIDAJQCBUTEJJQUxMCisJaXNiCisKKwlAIFRoZSBuZXcgbWFwcGluZyBoYXMgbm93IHRh a2VuIGVmZmVjdDoKKwlAIHI3IC0+IHBhZ2VfZGlyCisKKwlAIEZpbGwgaW4gdGhlIHdob2xlIHRv cC1sZXZlbCB0cmFuc2xhdGlvbiB0YWJsZSAoYXQgcGFnZV9kaXIpLgorCUAgUG9wdWxhdGUgdGhl IHdob2xlIHBhZ2VkaXIgd2l0aCAxTUIgc2VjdGlvbiBkZXNjcmlwdG9ycy4KKworCW1vdglyMSwg cjcJCQlAIHIxIC0+IGZpcnN0IHNlY3Rpb24gZW50cnkKKwlhZGQJcjMsIHIxLCAjNCo0KjEwMjQJ QCBsaW1pdCAoNCBHQiBhZGRyZXNzIHNwYWNlLCA0IGJ5dGUgZW50cmllcykKKwlvcnIJcjAsIHI4 LCByOQkJQCByMCA9IGVudHJ5IG1hcHBpbmcgc2VjdGlvbiB6ZXJvIHRvIHN0YXJ0IG9mIHBoeXNp Y2FsIFJBTQorMToKKwlzdHIJcjAsIFtyMV0sIzQJCUAgd3JpdGUgdGhlIHNlY3Rpb24gZW50cnkK KwlhZGQJcjAsIHIwLCAjMSA8PCAyMCAJQCBuZXh0IHBoeXNpY2FsIHBhZ2UgKHdyYXBzKQorCWNt cAlyMSwgcjMKKwlibmUJMWIKKworCUAgSW52YWxpZGF0ZSBUTEIKKwlkc2IKKwltY3IJcDE1LCAw LCByMSwgYzgsIGM3LCAwCUAgVExCSUFMTAorCWlzYgorCisJQCBTZXQgVkJBUiAtPiBleGNlcHRp b25fdmVjdG9yX3RhYmxlCisJQCBTQ1RMUi5WID0gMAorCWFkcglyMCwgZXhjZXB0aW9uX3ZlY3Rv cl90YWJsZQorCW1jcglwMTUsIDAsIHIwLCBjMTIsIGMwLCAwCisKKwlAIEVuYWJsZSBoYXJkd2Fy ZSBmbG9hdGluZyBwb2ludDoKKwlAIDEuIEFjY2VzcyB0byBDUDEwIGFuZCBDUDExIG11c3QgYmUg ZW5hYmxlZCBpbiB0aGUgQ29wcm9jZXNzb3IgQWNjZXNzCisJQCAgICBDb250cm9sIFJlZ2lzdGVy IChDUDE1LkNBQ1IpOgorCW1yYwlwMTUsIDAsIHIxLCBjMSwgYzAsIDIJCUAgQ0FDUgorCW9ycgly MSwgcjEsICMoMyA8PCAyMCkgKyAoMyA8PCAyMikJQCBmdWxsIGFjY2VzcyBmb3IgQ1AxMCAmIENQ MTEKKwltY3IJcDE1LCAwLCByMSwgYzEsIGMwLCAyCisJQCAyLiBUaGUgRU4gYml0IGluIHRoZSBG UEVYQyByZWdpc3RlciBtdXN0IGJlIHNldDoKKwl2bXJzCXIwLCBGUEVYQworCW9ycglyMCwgcjAs ICMxPDwzMAkJQCBFTiAoZW5hYmxlKQorCXZtc3IJRlBFWEMsIHIwCisKKwlAIEluaXRpYWxpc2Ug MTYgS0Igc3RhY2sKKwlsZHIJc3AsID1fYm9vdF9zdGFja19lbmQKKworCXN1YglyMCwgcjIsIHI5 CQlAIHIwIC0+IGRldmljZSB0cmVlICh2aXJ0dWFsIGFkZHJlc3MpCisJbW92CXIxLCByOQkJCUAg cjEgPSBwaHlzaWNhbF9hZGRyZXNzX29mZnNldAorCisJYglhcmNoX2luaXQKKworLnB1c2hzZWN0 aW9uIC5ic3MKK0AgTm90ZTogY2FsbGluZyBhcmNoX2luaXQgemVyb2VzIG91dCB0aGlzIHJlZ2lv bi4KKy5hbGlnbiAxMgorLmdsb2JsIHNoYXJlZF9pbmZvX3BhZ2UKK3NoYXJlZF9pbmZvX3BhZ2U6 CisJLmZpbGwgKDEwMjQpLCA0LCAweDAKKworLmFsaWduIDMKKy5nbG9ibCBpcnFzdGFjaworLmds b2JsIGlycXN0YWNrX2VuZAoraXJxc3RhY2s6CisJLmZpbGwgKDEwMjQpLCA0LCAweDAKK2lycXN0 YWNrX2VuZDoKKworLnBvcHNlY3Rpb24KKworQCBleGNlcHRpb24gYmFzZSBhZGRyZXNzCisuYWxp Z24gNQorLmdsb2JsIGV4Y2VwdGlvbl92ZWN0b3JfdGFibGUKK0AgTm90ZTogcmVtZW1iZXIgdG8g Y2FsbCBDTFJFWCBpZiByZXR1cm5pbmcgZnJvbSBhbiBleGNlcHRpb246CitAICJUaGUgYXJjaGl0 ZWN0dXJlIGVuYWJsZXMgdGhlIGxvY2FsIG1vbml0b3IgdG8gdHJlYXQgYW55IGV4Y2x1c2l2ZSBz dG9yZSBhcworQCAgbWF0Y2hpbmcgYSBwcmV2aW91cyBMRFJFWCBhZGRyZXNzLiBGb3IgdGhpcyBy ZWFzb24sIHVzZSBvZiB0aGUgQ0xSRVgKK0AgIGluc3RydWN0aW9uIHRvIGNsZWFyIGFuIGV4aXN0 aW5nIHRhZyBpcyByZXF1aXJlZCBvbiBjb250ZXh0IHN3aXRjaGVzLiIKK0AgLS0gQVJNIENvcnRl eC1BIFNlcmllcyBQcm9ncmFtbWVy4oCZcyBHdWlkZSAoVmVyc2lvbjogNC4wKQorZXhjZXB0aW9u X3ZlY3Rvcl90YWJsZToKKwliCS4gQCByZXNldAorCWIJLiBAIHVuZGVmaW5lZCBpbnN0cnVjdGlv bgorCWIJLiBAIHN1cGVydmlzb3IgY2FsbAorCWIJLiBAIHByZWZldGNoIGNhbGwKKwliCS4gQCBw cmVmZXRjaCBhYm9ydAorCWIJLiBAIGRhdGEgYWJvcnQKKwliCWlycV9oYW5kbGVyIEAgaXJxCisJ LndvcmQgMHhlN2YwMDBmMCAgICBAIGFib3J0IG9uIEZJUQorCitAIENhbGwgZmF1bHRfdW5kZWZp bmVkX2luc3RydWN0aW9uIGluICJVbmRlZmluZWQgbW9kZSIKK2J1ZzoKKwkud29yZAkweGU3ZjAw MGYwICAgIAlAIHVuZC91ZGYgLSBhICJQZXJtYW5lbnRseSBVbmRlZmluZWQiIGluc3RydWN0aW9u CisKK2lycV9oYW5kbGVyOgorCWxkcglzcCwgPWlycXN0YWNrX2VuZAorCXB1c2gJe3IwIC0gcjEy LCByMTR9CisKKwlsZHIJcjAsIElSUV9oYW5kbGVyCisJY21wCXIwLCAjMAorCWJlcQlidWcKKwli bHgJcjAJCUAgY2FsbCBoYW5kbGVyCisKKwlAIFJldHVybiBmcm9tIElSUQorCXBvcAl7cjAgLSBy MTIsIHIxNH0KKwljbHJleAorCXN1YnMJcGMsIGxyLCAjNAorCisuZ2xvYmwgSVJRX2hhbmRsZXIK K0lSUV9oYW5kbGVyOgorCS5sb25nCTB4MAorCitAIFRoaXMgaXMgY2FsbGVkIGlmIHlvdSB0cnkg dG8gZGl2aWRlIGJ5IHplcm8uIEZvciBub3csIHdlIG1ha2UgYSBzdXBlcnZpc29yIGNhbGwsCitA IHdoaWNoIHdpbGwgbWFrZSB1cyBoYWx0LgorLmdsb2JsIHJhaXNlCityYWlzZToKKwlzdmMJMApk aWZmIC0tZ2l0IGEvZXh0cmFzL21pbmktb3MvYXJjaC9hcm0vaHlwZXJjYWxsczMyLlMgYi9leHRy YXMvbWluaS1vcy9hcmNoL2FybS9oeXBlcmNhbGxzMzIuUwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwLi5hZjhlMTc1Ci0tLSAvZGV2L251bGwKKysrIGIvZXh0cmFzL21pbmktb3Mv YXJjaC9hcm0vaHlwZXJjYWxsczMyLlMKQEAgLTAsMCArMSw2NCBAQAorLyoqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKgorICogaHlwZXJjYWxsLlMKKyAqCisgKiBYZW4gaHlwZXJjYWxsIHdyYXBwZXJzCisg KgorICogU3RlZmFubyBTdGFiZWxsaW5pIDxzdGVmYW5vLnN0YWJlbGxpbmlAZXUuY2l0cml4LmNv bT4sIENpdHJpeCwgMjAxMgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5 b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy bXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMgorICogYXMgcHVi bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IG9yLCB3aGVuIGRpc3RyaWJ1 dGVkCisgKiBzZXBhcmF0ZWx5IGZyb20gdGhlIExpbnV4IGtlcm5lbCBvciBpbmNvcnBvcmF0ZWQg aW50byBvdGhlcgorICogc29mdHdhcmUgcGFja2FnZXMsIHN1YmplY3QgdG8gdGhlIGZvbGxvd2lu ZyBsaWNlbnNlOgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2Yg Y2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKKyAqIG9mIHRoaXMgc291cmNl IGZpbGUgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dAor ICogcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0 byB1c2UsIGNvcHksIG1vZGlmeSwKKyAqIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJs aWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLAorICogYW5kIHRvIHBl cm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywg c3ViamVjdCB0bworICogdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92 ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGlu Y2x1ZGVkIGluCisgKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBT b2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9V VCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5H IEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisg KiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJ TiBOTyBFVkVOVCBTSEFMTCBUSEUKKyAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUg TElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwgV0hF VEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5H CisgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBU SEUgVVNFIE9SIE9USEVSIERFQUxJTkdTCisgKiBJTiBUSEUgU09GVFdBUkUuCisgKi8KKworI2lu Y2x1ZGUgPHhlbi94ZW4uaD4KKworI2RlZmluZSBfX0hWQyhpbW0xNikgLmxvbmcgKCgweEUxNDAw MDcwIHwgKCgoaW1tMTYpICYgMHhGRkYwKSA8PCA0KSB8ICgoaW1tMTYpICYgMHgwMDBGKSkgJiAw eEZGRkZGRkZGKQorCisjZGVmaW5lIFhFTl9JTU0gMHhFQTEKKworI2RlZmluZSBIWVBFUkNBTExf U0lNUExFKGh5cGVyY2FsbCkJCVwKKy5nbG9ibCBIWVBFUlZJU09SXyMjaHlwZXJjYWxsOwkJCVwK Ky5hbGlnbiA0LDB4OTA7CQkJCQlcCitIWVBFUlZJU09SXyMjaHlwZXJjYWxsOgkJCQlcCisgICAg ICAgIG1vdiByMTIsICNfX0hZUEVSVklTT1JfIyNoeXBlcmNhbGw7CVwKKyAgICAgICAgX19IVkMo WEVOX0lNTSk7CQkJCVwKKyAgICAgICAgbW92IHBjLCBscjsKKworI2RlZmluZSBfaHlwZXJjYWxs MCBIWVBFUkNBTExfU0lNUExFCisjZGVmaW5lIF9oeXBlcmNhbGwxIEhZUEVSQ0FMTF9TSU1QTEUK KyNkZWZpbmUgX2h5cGVyY2FsbDIgSFlQRVJDQUxMX1NJTVBMRQorI2RlZmluZSBfaHlwZXJjYWxs MyBIWVBFUkNBTExfU0lNUExFCisjZGVmaW5lIF9oeXBlcmNhbGw0IEhZUEVSQ0FMTF9TSU1QTEUK KworX2h5cGVyY2FsbDIoc2NoZWRfb3ApOworX2h5cGVyY2FsbDIobWVtb3J5X29wKTsKK19oeXBl cmNhbGwyKGV2ZW50X2NoYW5uZWxfb3ApOworX2h5cGVyY2FsbDIoeGVuX3ZlcnNpb24pOworX2h5 cGVyY2FsbDMoY29uc29sZV9pbyk7CitfaHlwZXJjYWxsMShwaHlzZGV2X29wKTsKK19oeXBlcmNh bGwzKGdyYW50X3RhYmxlX29wKTsKK19oeXBlcmNhbGwzKHZjcHVfb3ApOworX2h5cGVyY2FsbDEo c3lzY3RsKTsKK19oeXBlcmNhbGwxKGRvbWN0bCk7CitfaHlwZXJjYWxsMihodm1fb3ApOworX2h5 cGVyY2FsbDEoeHNtX29wKTsKZGlmZiAtLWdpdCBhL2V4dHJhcy9taW5pLW9zL2FyY2gvYXJtL21p bmlvcy1hcm0zMi5sZHMgYi9leHRyYXMvbWluaS1vcy9hcmNoL2FybS9taW5pb3MtYXJtMzIubGRz Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjk2MjcxNjIKLS0tIC9kZXYvbnVs bAorKysgYi9leHRyYXMvbWluaS1vcy9hcmNoL2FybS9taW5pb3MtYXJtMzIubGRzCkBAIC0wLDAg KzEsODMgQEAKK09VVFBVVF9BUkNIKGFybSkKK0VOVFJZKF9zdGFydCkKK1NFQ1RJT05TCit7Cisg IC8qIE5vdGU6IHdlIGN1cnJlbnRseSBhc3N1bWUgdGhhdCBYZW4gd2lsbCBsb2FkIHRoZSBrZXJu ZWwgaW1hZ2UKKyAgICogYXQgc3RhcnQtb2YtUkFNICsgMHg4MDAwLiBXZSB1c2UgdGhpcyBpbml0 aWFsIDMyIEtCIGZvciB0aGUgc3RhY2sKKyAgICogYW5kIHRyYW5zbGF0aW9uIHRhYmxlcy4KKyAg ICovCisgIF9ib290X3N0YWNrIAkgPSAweDQwMDAwMDsJLyogMTYgS0IgYm9vdCBzdGFjayAqLwor ICBfYm9vdF9zdGFja19lbmQgPSAweDQwNDAwMDsKKyAgX3BhZ2VfZGlyICAgICAgPSAweDQwNDAw MDsJLyogMTYgS0IgdHJhbnNsYXRpb24gdGFibGUgKi8KKyAgLgkJID0gMHg0MDgwMDA7CisgIF90 ZXh0ID0gLjsJCQkvKiBUZXh0IGFuZCByZWFkLW9ubHkgZGF0YSAqLworICAudGV4dCA6IHsKKwkq KC50ZXh0KQorCSooLmdudS53YXJuaW5nKQorCX0gPSAweDkwOTAKKworICBfZXRleHQgPSAuOwkJ CS8qIEVuZCBvZiB0ZXh0IHNlY3Rpb24gKi8KKworICAucm9kYXRhIDogeyAqKC5yb2RhdGEpICoo LnJvZGF0YS4qKSB9CisgIC4gPSBBTElHTig0MDk2KTsKKyAgX2Vyb2RhdGEgPSAuOworCisgIC8q IG5ld2xpYiBpbml0aWFsaXphdGlvbiBmdW5jdGlvbnMgKi8KKyAgLiA9IEFMSUdOKDMyIC8gOCk7 CisgIFBST1ZJREUgKF9fcHJlaW5pdF9hcnJheV9zdGFydCA9IC4pOworICAucHJlaW5pdF9hcnJh eSAgICAgOiB7ICooLnByZWluaXRfYXJyYXkpIH0KKyAgUFJPVklERSAoX19wcmVpbml0X2FycmF5 X2VuZCA9IC4pOworICBQUk9WSURFIChfX2luaXRfYXJyYXlfc3RhcnQgPSAuKTsKKyAgLmluaXRf YXJyYXkgICAgIDogeyAqKC5pbml0X2FycmF5KSB9CisgIFBST1ZJREUgKF9faW5pdF9hcnJheV9l bmQgPSAuKTsKKyAgUFJPVklERSAoX19maW5pX2FycmF5X3N0YXJ0ID0gLik7CisgIC5maW5pX2Fy cmF5ICAgICA6IHsgKiguZmluaV9hcnJheSkgfQorICBQUk9WSURFIChfX2ZpbmlfYXJyYXlfZW5k ID0gLik7CisKKyAgLmN0b3JzIDogeworICAgICAgICBfX0NUT1JfTElTVF9fID0gLjsKKyAgICAg ICAgKiguY3RvcnMpCisJQ09OU1RSVUNUT1JTCisgICAgICAgIExPTkcoMCkKKyAgICAgICAgX19D VE9SX0VORF9fID0gLjsKKyAgICAgICAgfQorCisgIC5kdG9ycyA6IHsKKyAgICAgICAgX19EVE9S X0xJU1RfXyA9IC47CisgICAgICAgICooLmR0b3JzKQorICAgICAgICBMT05HKDApCisgICAgICAg IF9fRFRPUl9FTkRfXyA9IC47CisgICAgICAgIH0KKworICAuZGF0YSA6IHsJCQkvKiBEYXRhICov CisJKiguZGF0YSkKKwl9CisKKyAgLyogTm90ZTogbGlua2VyIHdpbGwgaW5zZXJ0IGFueSBleHRy YSBzZWN0aW9ucyBoZXJlLCBqdXN0IGJlZm9yZSAuYnNzICovCisKKyAgLmJzcyA6IHsKKwlfZWRh dGEgPSAuOwkJCS8qIEVuZCBvZiBkYXRhIGluY2x1ZGVkIGluIGltYWdlICovCisJLyogTm90aGlu ZyBhZnRlciBoZXJlIGlzIGluY2x1ZGVkIGluIHRoZSB6SW1hZ2UncyBzaXplICovCisKKwlfX2Jz c19zdGFydCA9IC47CisJKiguYnNzKQorICAgICAgICAqKC5hcHAuYnNzKQorCX0KKyAgX2VuZCA9 IC4gOworCisgIC8qIFNlY3Rpb25zIHRvIGJlIGRpc2NhcmRlZCAqLworICAvRElTQ0FSRC8gOiB7 CisJKigudGV4dC5leGl0KQorCSooLmRhdGEuZXhpdCkKKwkqKC5leGl0Y2FsbC5leGl0KQorCX0K KworICAvKiBTdGFicyBkZWJ1Z2dpbmcgc2VjdGlvbnMuICAqLworICAuc3RhYiAwIDogeyAqKC5z dGFiKSB9CisgIC5zdGFic3RyIDAgOiB7ICooLnN0YWJzdHIpIH0KKyAgLnN0YWIuZXhjbCAwIDog eyAqKC5zdGFiLmV4Y2wpIH0KKyAgLnN0YWIuZXhjbHN0ciAwIDogeyAqKC5zdGFiLmV4Y2xzdHIp IH0KKyAgLnN0YWIuaW5kZXggMCA6IHsgKiguc3RhYi5pbmRleCkgfQorICAuc3RhYi5pbmRleHN0 ciAwIDogeyAqKC5zdGFiLmluZGV4c3RyKSB9CisgIC5jb21tZW50IDAgOiB7ICooLmNvbW1lbnQp IH0KK30KZGlmZiAtLWdpdCBhL2V4dHJhcy9taW5pLW9zL2FyY2gvYXJtL3NldHVwLmMgYi9leHRy YXMvbWluaS1vcy9hcmNoL2FybS9zZXR1cC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAuLjA2YWZlNDYKLS0tIC9kZXYvbnVsbAorKysgYi9leHRyYXMvbWluaS1vcy9hcmNoL2Fy bS9zZXR1cC5jCkBAIC0wLDAgKzEsMTE5IEBACisjaW5jbHVkZSA8bWluaS1vcy9vcy5oPgorI2lu Y2x1ZGUgPG1pbmktb3Mva2VybmVsLmg+CisjaW5jbHVkZSA8bWluaS1vcy9naWMuaD4KKyNpbmNs dWRlIDxtaW5pLW9zL2NvbnNvbGUuaD4KKyNpbmNsdWRlIDx4ZW4veGVuLmg+CisjaW5jbHVkZSA8 eGVuL21lbW9yeS5oPgorI2luY2x1ZGUgPHhlbi9odm0vcGFyYW1zLmg+CisjaW5jbHVkZSA8YXJj aF9tbS5oPgorI2luY2x1ZGUgPGxpYmZkdC5oPgorCisvKgorICogVGhpcyBzdHJ1Y3R1cmUgY29u dGFpbnMgc3RhcnQtb2YtZGF5IGluZm8sIHN1Y2ggYXMgcGFnZXRhYmxlIGJhc2UgcG9pbnRlciwK KyAqIGFkZHJlc3Mgb2YgdGhlIHNoYXJlZF9pbmZvIHN0cnVjdHVyZSwgYW5kIHRoaW5ncyBsaWtl IHRoYXQuCisgKiBPbiB4ODYsIHRoZSBoeXBlcnZpc29yIHBhc3NlcyBpdCB0byB1cy4gT24gQVJN LCB3ZSBmaWxsIGl0IGluIG91cnNlbHZlcy4KKyAqLwordW5pb24gc3RhcnRfaW5mb191bmlvbiBz dGFydF9pbmZvX3VuaW9uOworCisvKgorICogU2hhcmVkIHBhZ2UgZm9yIGNvbW11bmljYXRpbmcg d2l0aCB0aGUgaHlwZXJ2aXNvci4KKyAqIEV2ZW50cyBmbGFncyBnbyBoZXJlLCBmb3IgZXhhbXBs ZS4KKyAqLworc2hhcmVkX2luZm9fdCAqSFlQRVJWSVNPUl9zaGFyZWRfaW5mbzsKKworZXh0ZXJu IGNoYXIgc2hhcmVkX2luZm9fcGFnZVtQQUdFX1NJWkVdOworCit2b2lkICpkZXZpY2VfdHJlZTsK Kworc3RhdGljIGludCBodm1fZ2V0X3BhcmFtZXRlcihpbnQgaWR4LCB1aW50NjRfdCAqdmFsdWUp Cit7CisgICAgc3RydWN0IHhlbl9odm1fcGFyYW0geGh2OworICAgIGludCByZXQ7CisKKyAgICB4 aHYuZG9taWQgPSBET01JRF9TRUxGOworICAgIHhodi5pbmRleCA9IGlkeDsKKyAgICByZXQgPSBI WVBFUlZJU09SX2h2bV9vcChIVk1PUF9nZXRfcGFyYW0sICZ4aHYpOworICAgIGlmIChyZXQgPCAw KSB7CisgICAgICAgIEJVRygpOworICAgIH0KKyAgICAqdmFsdWUgPSB4aHYudmFsdWU7CisgICAg cmV0dXJuIHJldDsKK30KKworc3RhdGljIHZvaWQgZ2V0X2NvbnNvbGUodm9pZCkKK3sKKyAgICB1 aW50NjRfdCB2ID0gLTE7CisKKyAgICBodm1fZ2V0X3BhcmFtZXRlcihIVk1fUEFSQU1fQ09OU09M RV9FVlRDSE4sICZ2KTsKKyAgICBzdGFydF9pbmZvLmNvbnNvbGUuZG9tVS5ldnRjaG4gPSB2Owor CisgICAgaHZtX2dldF9wYXJhbWV0ZXIoSFZNX1BBUkFNX0NPTlNPTEVfUEZOLCAmdik7CisgICAg c3RhcnRfaW5mby5jb25zb2xlLmRvbVUubWZuID0gdjsKKworICAgIHByaW50aygiQ29uc29sZSBp cyBvbiBwb3J0ICVkXG4iLCBzdGFydF9pbmZvLmNvbnNvbGUuZG9tVS5ldnRjaG4pOworICAgIHBy aW50aygiQ29uc29sZSByaW5nIGlzIGF0IG1mbiAlbHhcbiIsICh1bnNpZ25lZCBsb25nKSBzdGFy dF9pbmZvLmNvbnNvbGUuZG9tVS5tZm4pOworfQorCit2b2lkIGdldF94ZW5idXModm9pZCkKK3sK KyAgICB1aW50NjRfdCB2YWx1ZTsKKworICAgIGlmIChodm1fZ2V0X3BhcmFtZXRlcihIVk1fUEFS QU1fU1RPUkVfRVZUQ0hOLCAmdmFsdWUpKQorICAgICAgICBCVUcoKTsKKworICAgIHN0YXJ0X2lu Zm8uc3RvcmVfZXZ0Y2huID0gKGludCl2YWx1ZTsKKworICAgIGlmKGh2bV9nZXRfcGFyYW1ldGVy KEhWTV9QQVJBTV9TVE9SRV9QRk4sICZ2YWx1ZSkpCisgICAgICAgIEJVRygpOworICAgIHN0YXJ0 X2luZm8uc3RvcmVfbWZuID0gKHVuc2lnbmVkIGxvbmcpdmFsdWU7Cit9CisKKy8qCisgKiBJTklU SUFMIEMgRU5UUlkgUE9JTlQuCisgKi8KK3ZvaWQgYXJjaF9pbml0KHZvaWQgKmR0Yl9wb2ludGVy LCB1aW50MzJfdCBwaHlzaWNhbF9vZmZzZXQpCit7CisgICAgc3RydWN0IHhlbl9hZGRfdG9fcGh5 c21hcCB4YXRwOworICAgIGludCByOworCisgICAgbWVtc2V0KCZfX2Jzc19zdGFydCwgMCwgJl9l bmQgLSAmX19ic3Nfc3RhcnQpOworCisgICAgcGh5c2ljYWxfYWRkcmVzc19vZmZzZXQgPSBwaHlz aWNhbF9vZmZzZXQ7CisKKyAgICB4cHJpbnRrKCJWaXJ0dWFsIC0+IHBoeXNpY2FsIG9mZnNldCA9 ICV4XG4iLCBwaHlzaWNhbF9hZGRyZXNzX29mZnNldCk7CisKKyAgICB4cHJpbnRrKCJDaGVja2lu ZyBEVEIgYXQgJXAuLi5cbiIsIGR0Yl9wb2ludGVyKTsKKworICAgIGlmICgociA9IGZkdF9jaGVj a19oZWFkZXIoZHRiX3BvaW50ZXIpKSkgeworICAgICAgICB4cHJpbnRrKCJJbnZhbGlkIERUQiBm cm9tIFhlbjogJXNcbiIsIGZkdF9zdHJlcnJvcihyKSk7CisgICAgICAgIEJVRygpOworICAgIH0K KyAgICBkZXZpY2VfdHJlZSA9IGR0Yl9wb2ludGVyOworCisgICAgLyogTWFwIHNoYXJlZF9pbmZv IHBhZ2UgKi8KKyAgICB4YXRwLmRvbWlkID0gRE9NSURfU0VMRjsKKyAgICB4YXRwLmlkeCA9IDA7 CisgICAgeGF0cC5zcGFjZSA9IFhFTk1BUFNQQUNFX3NoYXJlZF9pbmZvOworICAgIHhhdHAuZ3Bm biA9IHZpcnRfdG9fcGZuKHNoYXJlZF9pbmZvX3BhZ2UpOworICAgIGlmIChIWVBFUlZJU09SX21l bW9yeV9vcChYRU5NRU1fYWRkX3RvX3BoeXNtYXAsICZ4YXRwKSAhPSAwKQorICAgICAgICBCVUco KTsKKyAgICBIWVBFUlZJU09SX3NoYXJlZF9pbmZvID0gKHN0cnVjdCBzaGFyZWRfaW5mbyAqKXNo YXJlZF9pbmZvX3BhZ2U7CisKKyAgICAvKiBGaWxsIGluIHN0YXJ0X2luZm8gKi8KKyAgICBnZXRf Y29uc29sZSgpOworICAgIGdldF94ZW5idXMoKTsKKworICAgIGdpY19pbml0KCk7CisKKyAgICBz dGFydF9rZXJuZWwoKTsKK30KKwordm9pZAorYXJjaF9maW5pKHZvaWQpCit7Cit9CisKK3ZvaWQK K2FyY2hfZG9fZXhpdCh2b2lkKQoreworfQotLSAKMi4wLjMKCgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1k ZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHA6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=