From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.3 required=3.0 tests=DKIM_ADSP_CUSTOM_MED, DKIM_INVALID,DKIM_SIGNED,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,MENTIONS_GIT_HOSTING, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 2D9C2C433E0 for ; Wed, 1 Jul 2020 07:12:43 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 00991206BE for ; Wed, 1 Jul 2020 07:12:42 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="V4Ecb4WS" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 00991206BE Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 729CA6E7DD; Wed, 1 Jul 2020 07:12:06 +0000 (UTC) Received: from mail-lj1-x244.google.com (mail-lj1-x244.google.com [IPv6:2a00:1450:4864:20::244]) by gabe.freedesktop.org (Postfix) with ESMTPS id 228336E196 for ; Tue, 30 Jun 2020 19:48:41 +0000 (UTC) Received: by mail-lj1-x244.google.com with SMTP id 9so24019683ljv.5 for ; Tue, 30 Jun 2020 12:48:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=qQtk6HCQUvtYy3c5gorgoQB6+ujqBuKaIy85rcA/BUA=; b=V4Ecb4WSpNbuFSwyqzF9WA7lvGnfxs4mpFqR64suNnb/6eIS5y1yy79B2+FnXwKXei jnBa6Bblo7DyUrf1CXmQmQPKBtHknbM381IZzv3lW2zYOjLH9Ut5K8WjPsl3OC1sXILa IHIb9uw/eC8gnpf/y5PjQ01a0pnDCLNNP5rDqDLjUPY4R+IIk+3oDfUvO1oplY2lUfZh h8ChQbG37V0gfC2+GrsSZb7mMGUspEx33zpL07L4YhCyHDWiEGfRELNEc7wUSpQyIvD3 hJ/xJ6ZrwQQ//8RdJIaUhTKbvb8HpVVeyUxuGsqGSrZc5DMqY3dYddhEeEZHSE6tE7y5 QcYQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:cc:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=qQtk6HCQUvtYy3c5gorgoQB6+ujqBuKaIy85rcA/BUA=; b=id4LIgCKAlV/LTRsaXWLbWGWQdR2Z1z0410xXpqMfNWa+y7v98a5qMhM8kGSX7+2kN BXin4OWyzSQk16zfRzQR2dbe1/kjLVzriRq6wmGSTFNIesTCKG7bo33HMHODrj0cxXvE nH6lGJGs0X6URCElDCWFiFdax6R6SrdN9AV55nL8MaWC6JZGlv7wMTWmROfK1pFxyA/S +/QIAMYmOjZsp9KaVUkl2brL1KiBWfqcSrdhS4x5/eFUEylkZ0JN2xLKsNciKV776x95 s/ekzJqbuoAka30dO0LrwqDRguRzyT6wrhxrWqdwveiWHT5V6Ch1HKC7hFVpMxOjw2LQ XQqg== X-Gm-Message-State: AOAM5337vHkE4GLL216DQNCeeqDhkYfoYGWYKnVhFN4V3gQfQrFKzFR4 /mL2gB+3ND53fHbTzSioycU= X-Google-Smtp-Source: ABdhPJx8lztinhdpAOxWisEddoydfeeiQgFn4JQXshtjg4+N0sca92rMwF3B9thwUjMAL32z8C0jVA== X-Received: by 2002:a2e:9c3:: with SMTP id 186mr11734776ljj.293.1593546518909; Tue, 30 Jun 2020 12:48:38 -0700 (PDT) Received: from [192.168.2.145] (79-139-237-54.dynamic.spd-mgts.ru. [79.139.237.54]) by smtp.googlemail.com with ESMTPSA id y12sm1036425ljh.79.2020.06.30.12.48.37 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 30 Jun 2020 12:48:38 -0700 (PDT) Subject: Re: [RFC] Host1x/TegraDRM UAPI (drm_tegra_channel_map) To: Mikko Perttunen , Thierry Reding References: <9b06b7ec-f952-2561-7afb-5653514cd5d3@kapsi.fi> <4f9ddf30-ad8d-3750-20d7-867be17a1006@gmail.com> <20200626073430.GA3109062@ulmo> <4c243f7a-4c53-d995-88a1-0fe03d41fc3a@gmail.com> <76e46256-58d3-fdbe-41d6-8ac910fc7fd0@kapsi.fi> From: Dmitry Osipenko Message-ID: Date: Tue, 30 Jun 2020 22:48:36 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.7.0 MIME-Version: 1.0 In-Reply-To: <76e46256-58d3-fdbe-41d6-8ac910fc7fd0@kapsi.fi> Content-Language: en-US X-Mailman-Approved-At: Wed, 01 Jul 2020 07:12:04 +0000 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Erik Faye-Lund , David Airlie , gustavo@padovan.org, dri-devel , Jon Hunter , talho@nvidia.com, bhuntsman@nvidia.com, "linux-tegra@vger.kernel.org" Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" MzAuMDYuMjAyMCAxMzo1NSwgTWlra28gUGVydHR1bmVuINC/0LjRiNC10YI6Cj4gCj4gCj4gT24g Ni8yOS8yMCAxOjU5IEFNLCBEbWl0cnkgT3NpcGVua28gd3JvdGU6Cj4+IDI4LjA2LjIwMjAgMTQ6 MTYsIE1pa2tvIFBlcnR0dW5lbiDQv9C40YjQtdGCOgo+Pj4gT24gNi8yNi8yMCA3OjM1IFBNLCBE bWl0cnkgT3NpcGVua28gd3JvdGU6Cj4+Pj4gMjYuMDYuMjAyMCAxMDozNCwgVGhpZXJyeSBSZWRp bmcg0L/QuNGI0LXRgjoKPj4+Pj4gT24gRnJpLCBKdW4gMjYsIDIwMjAgYXQgMDE6NDc6NDZBTSAr MDMwMCwgRG1pdHJ5IE9zaXBlbmtvIHdyb3RlOgo+Pj4+Pj4gMjMuMDYuMjAyMCAxNTowOSwgTWlr a28gUGVydHR1bmVuINC/0LjRiNC10YI6Cj4+Pj4+Pj4gIyMjIERSTV9URUdSQV9DSEFOTkVMX01B UAo+Pj4+Pj4+Cj4+Pj4+Pj4gTWFrZSBtZW1vcnkgYWNjZXNzaWJsZSBieSB0aGUgZW5naW5lIHdo aWxlIGV4ZWN1dGluZyB3b3JrIG9uIHRoZQo+Pj4+Pj4+IGNoYW5uZWwuCj4+Pj4+Pj4KPj4+Pj4+ PiBgYGAKPj4+Pj4+PiAjZGVmaW5lIERSTV9URUdSQV9DSEFOTkVMX01BUF9SRUFEV1JJVEXCoMKg wqDCoMKgwqDCoCAoMTw8MCkKPj4+Pj4+Pgo+Pj4+Pj4+IHN0cnVjdCBkcm1fdGVncmFfY2hhbm5l bF9tYXAgewo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCAvKgo+Pj4+Pj4+IMKgwqDCoMKgwqDC oMKgwqDCoMKgICogW2luXSBJRCBvZiB0aGUgY2hhbm5lbCBmb3Igd2hpY2ggdG8gbWFwIG1lbW9y eSB0by4KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqLwo+Pj4+Pj4+IMKgwqDCoMKgwqDC oMKgwqDCoCBfX3UzMiBjaGFubmVsX2lkOwo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCAvKgo+ Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgICogW2luXSBHRU0gaGFuZGxlIG9mIHRoZSBtZW1v cnkgdG8gbWFwLgo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgICovCj4+Pj4+Pj4gwqDCoMKg wqDCoMKgwqDCoMKgIF9fdTMyIGhhbmRsZTsKPj4+Pj4+Pgo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKg wqDCoCAvKgo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgICogW2luXSBPZmZzZXQgaW4gR0VN IGhhbmRsZSBvZiB0aGUgbWVtb3J5IGFyZWEgdG8gbWFwLgo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKg wqDCoMKgICoKPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqIE11c3QgYmUgYWxpZ25lZCBi eSA0Sy4KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqLwo+Pj4+Pj4+IMKgwqDCoMKgwqDC oMKgwqDCoCBfX3U2NCBvZmZzZXQ7Cj4+Pj4+Pgo+Pj4+Pj4gQ291bGQgeW91IHBsZWFzZSBnaXZl IGEgdXNlLWNhc2UgZXhhbXBsZSBmb3IgdGhpcyBwYXJ0aWFsIG1hcHBpbmc/Cj4+Pj4+Pgo+Pj4+ Pj4gSSB2YWd1ZWx5IHJlY2FsbGluZyB0aGF0IG1heWJlIGl0IHdhcyBtZSB3aG8gc3VnZ2VzdGVk IHRoaXMgaW4gdGhlCj4+Pj4+PiBwYXN0Li4KPj4+Pj4+Cj4+Pj4+PiBJIGtpbmRhIHNlZSB0aGF0 IHRoaXMgY291bGQgYmUgdXNlZnVsIGZvciBhIGNhc2Ugd2hlcmUgdXNlcnNwYWNlCj4+Pj4+PiBh bGxvY2F0ZXMgYSBsYXJnZSBjaHVuayBvZiBtZW1vcnkgYW5kIHRoZW4gcGVyZm9ybXMKPj4+Pj4+ IHN1Yi1hbGxvY2F0aW9ucyBpbgo+Pj4+Pj4gdGhlIHVzZXJzcGFjZSBkcml2ZXIuIEJ1dCBkbyB3 ZSBoYXZlIGEgcmVhbC13b3JsZCBleGFtcGxlIGZvciB0aGlzCj4+Pj4+PiByaWdodAo+Pj4+Pj4g bm93Pwo+Pj4+Pgo+Pj4+PiBJIHRoaW5rIHRoZSBtYWluIHBvaW50IGFib3V0IHRoaXMgSU9DVEwg d2FzIHRvIG1ha2UgbWFwcGluZy91bm1hcHBpbmcKPj4+Pj4gbW9yZSBlZmZpY2llbnQgYW5kIGF2 b2lkIHJlbG9jYXRpb25zIGZvciBzaXR1YXRpb25zIHdoZXJlIHdlIGtub3cKPj4+Pj4gaXQgaXMK Pj4+Pj4gc2FmZSB0byBkbyBzby4KPj4+Pj4KPj4+Pj4gVGhlIGZhY3QgdGhhdCB0aGlzIGNhbiBi ZSB1c2VkIHRvIGNyZWF0ZSBwYXJ0aWFsIG1hcHBpbmdzIGlzIG1vc3RseQo+Pj4+PiBqdXN0Cj4+ Pj4+IGFuIGFkZGVkIGJvbnVzLCBpbiBteSBvcGluaW9uLiBEb2luZyB0aGlzIGRvZXNuJ3QgY3Jl YXRlIG11Y2gKPj4+Pj4gY29tcGxleGl0eQo+Pj4+PiBidXQgaW4gdHVybiBnaXZlcyB1cyBhIGxv dCBtb3JlIGZsZXhpYmlsaXR5Lgo+Pj4+Pgo+Pj4+PiBBIGNvdXBsZSBvZiBwbGFjZXMgd2hlcmUg SSB0aGluayB0aGlzIGNvdWxkIGJlIHVzZWZ1bCBhcmUgT3BlbkdMIGFuZAo+Pj4+PiBWdWxrYW4s IGJvdGggb2Ygd2hpY2ggc3VwcG9ydCBidWZmZXIgc3ViYWxsb2NhdGlvbi4gVGhpcyBoYXMgYQo+ Pj4+PiBjb3VwbGUgb2YKPj4+Pj4gYWR2YW50YWdlcyBvbiBtb2Rlcm4gR1BVcyB3aGVyZSBzb21l dGltZXMgeW91IHdhbnQgdG8gdXNlIHZlcnkgbGFyZ2UKPj4+Pj4gYWxsb2NhdGlvbiBncmFudWxh cml0eSwgZXRjLgo+Pj4+Pgo+Pj4+PiBOb3csIEkgZG9uJ3QgdGhpbmsgdGhhdCB3ZSdsbCBzZWUg bXVjaCBvZiB0aGF0IGluIFRlZ3JhIERSTSBkaXJlY3RseSwKPj4+Pj4gYWx0aG91Z2ggZ3JhdGUg Y291bGQgY2VydGFpbmx5IG1ha2UgdXNlIG9mIHRoaXMsIEkgc3VzcGVjdC4gSG93ZXZlciwgSQo+ Pj4+PiB0aGluayBmb3IgaW50ZXJvcGVyYXRpb24gb2YgZEdQVSBhbmQgVGVncmEgRFJNICh3aXRo IFZJQyBmb3IgcG9zdC0KPj4+Pj4gcHJvY2Vzc2luZywgb3IgaG9wZWZ1bGx5IHNvbWUgb2YgdGhl IG90aGVyIGhhcmR3YXJlIGFjY2VsZXJhdGlvbgo+Pj4+PiBlbmdpbmVzIGF0IHNvbWUgcG9pbnQp LCB0aGlzIG1pZ2h0IGNvbWUgaW4gaGFuZHkuCj4+Pj4+Cj4+Pj4+IFRoZXJlIGFyZSBvdGhlciBw b3NzaWJsZSB1c2UtY2FzZXMgd2l0aGluIGp1c3QgVGVncmEgRFJNIGFzIHdlbGwuCj4+Pj4+IFdl IG1heQo+Pj4+PiB3YW50IHRvIG9ubHkgcGFydGlhbGx5IG1hcCBwbGFuYXIgYnVmZmVycyBmb3Ig dmlkZW8KPj4+Pj4gcG9zdC1wcm9jZXNzaW5nLCBmb3IKPj4+Pj4gZXhhbXBsZS4gT3IgbWFwIGVh Y2ggcGxhbmUgc2VwYXJhdGVseS4KPj4+Pj4KPj4+Pj4+IFBsZWFzZSBzZWUgbW9yZSBiZWxvdy4K Pj4+Pj4+Cj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIC8qCj4+Pj4+Pj4gwqDCoMKgwqDCoMKg wqDCoMKgwqAgKiBbaW5dIExlbmd0aCBvZiBtZW1vcnkgYXJlYSB0byBtYXAgaW4gYnl0ZXMuCj4+ Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqAgKgo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKg ICogTXVzdCBiZSBhbGlnbmVkIGJ5IDRLLgo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgICov Cj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIF9fdTY0IGxlbmd0aDsKPj4+Pj4+Pgo+Pj4+Pj4+ IMKgwqDCoMKgwqDCoMKgwqDCoCAvKgo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgICogW291 dF0gSU9WQSBvZiBtYXBwZWQgbWVtb3J5LiBVc2Vyc3BhY2UgY2FuIHVzZSB0aGlzCj4+Pj4+Pj4g SU9WQQo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgICrCoMKgIGRpcmVjdGx5IHRvIHJlZmVy IHRvIHRoZSBtZW1vcnkgdG8gc2tpcCB1c2luZwo+Pj4+Pj4+IHJlbG9jYXRpb25zLgo+Pj4+Pj4+ IMKgwqDCoMKgwqDCoMKgwqDCoMKgICrCoMKgIE9ubHkgYXZhaWxhYmxlIGlmIGhhcmR3YXJlIG1l bW9yeSBpc29sYXRpb24gaXMKPj4+Pj4+PiBlbmFibGVkLgo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKg wqDCoMKgICoKPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqwqDCoCBXaWxsIGJlIHNldCB0 byAweGZmZmZfZmZmZl9mZmZmX2ZmZmYgaWYgdW5hdmFpbGFibGUuCj4+Pj4+Pj4gwqDCoMKgwqDC oMKgwqDCoMKgwqAgKi8KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgX191NjQgaW92YTsKPj4+ Pj4+Pgo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCAvKgo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKg wqDCoMKgICogW291dF0gSUQgY29ycmVzcG9uZGluZyB0byB0aGUgbWFwcGVkIG1lbW9yeSB0byBi ZQo+Pj4+Pj4+IHVzZWQgZm9yCj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqAgKsKgwqAgcmVs b2NhdGlvbnMgb3IgdW5tYXBwaW5nLgo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgICovCj4+ Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIF9fdTMyIG1hcHBpbmdfaWQ7Cj4+Pj4+Pj4gwqDCoMKg wqDCoMKgwqDCoMKgIC8qCj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiBbaW5dIEZsYWdz Lgo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgICovCj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDC oMKgIF9fdTMyIGZsYWdzOwo+Pj4+Pj4+Cj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIF9fdTMy IHJlc2VydmVkWzZdOwo+Pj4+Pj4+IH07Cj4+Pj4+Pgo+Pj4+Pj4gSXQgbG9va3MgdG8gbWUgdGhh dCB3ZSBhY3R1YWxseSBuZWVkIGEgYml0IGRpZmZlcmVudCB0aGluZyBoZXJlLgo+Pj4+Pj4KPj4+ Pj4+IFRoaXMgTUFQIElPQ1RMIG1hcHMgYSBwb3J0aW9uIG9mIGEgR0VNIGFuZCB0aGVuIHJldHVy bnMgdGhlCj4+Pj4+PiBtYXBwaW5nX2lkLgo+Pj4+Pj4gQW5kIEkgdGhpbmsgd2UgbmVlZCBzb21l dGhpbmcgbW9yZSBmbGV4aWJsZSB0aGF0IHdpbGwgYWxsb3cgdXMgdG8gdXNlCj4+Pj4+PiBHRU0g aGFuZGxlcyBmb3IgdGhlIHJlbG9jYXRpb24gSURzLCB3aGljaCBzaG91bGQgZml0IG5pY2VseSB3 aXRoIHRoZQo+Pj4+Pj4gRE1BLXJlc2VydmF0aW9ucy4KPj4+Pj4+Cj4+Pj4+PiBXaGF0IGFib3V0 IGFuIElPQ1RMIHRoYXQgd3JhcHMgR0VNIGludG8gYW5vdGhlciBHRU0/IFdlIGNvdWxkIHdyYXAg YQo+Pj4+Pj4gcG9ydGlvbiBvZiBHRU1fQSBpbnRvIGEgR0VNX0IsIGFuZCB0aGVuIG1hcCB0aGUg R0VNX0IgdXNpbmcgdGhlIE1BUAo+Pj4+Pj4gSU9DVEwuCj4+Pj4+Pgo+Pj4+Pj4gSXQgY291bGQg YmUgc29tZXRoaW5nIGxpa2UgdGhpczoKPj4+Pj4+Cj4+Pj4+PiAjIyMgRFJNX1RFR1JBX0JPX1dS QVAKPj4+Pj4+Cj4+Pj4+PiBzdHJ1Y3QgZHJtX3RlZ3JhX3dyYXBfYm8gewo+Pj4+Pj4gwqDCoMKg wqDCoF9fdTMyIGJvX2hhbmRsZV93cmFwcGVkOyAvLyBvdXQKPj4+Pj4+IMKgwqDCoMKgwqBfX3Uz MiBib19oYW5kbGU7wqDCoMKgwqDCoMKgwqDCoCAvLyBpbgo+Pj4+Pj4gwqDCoMKgwqDCoF9fdTY0 IG9mZnNldDsKPj4+Pj4+IMKgwqDCoMKgwqBfX3U2NCBsZW5ndGg7Cj4+Pj4+PiB9Owo+Pj4+Pj4K Pj4+Pj4+ICMjIyBEUk1fVEVHUkFfQ0hBTk5FTF9NQVAKPj4+Pj4+Cj4+Pj4+PiBzdHJ1Y3QgZHJt X3RlZ3JhX2NoYW5uZWxfbWFwIHsKPj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBfX3UzMiBjaGFu bmVsc19tYXNrOwo+Pj4+Pj4gwqDCoMKgwqDCoF9fdTMyIG1hcHBpbmdfaWQ7Cj4+Pj4+PiDCoMKg wqDCoMKgwqDCoMKgwqAgX191MzIgYm9faGFuZGxlOwo+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKg IF9fdTMyIGZsYWdzOwo+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIF9fdTY0IGlvdmE7Cj4+Pj4+ PiB9Owo+Pj4+Pj4KPj4+Pj4+ID09PQo+Pj4+Pj4KPj4+Pj4+IFRoaXMgYWxsb3dzIG11bHRpcGxl IG1hcHBpbmdfaWRzIHRvIGhhdmUgdGhlIHNhbWUgYmFja2luZyBHRU0sIHNvIHRoZQo+Pj4+Pj4g bWFwcGluZ19pZCBjb3VsZCBiZSByZXNvbHZlZCBpbnRvIGEgQk8gZHVyaW5nIG9mIGpvYidzIHN1 Ym1pc3Npb24gZm9yCj4+Pj4+PiB0aGUgRE1BLXJlc2VydmF0aW9ucyBoYW5kbGluZy4KPj4+Pj4K Pj4+Pj4gVGhhdCdzIHByZXR0eSBtdWNoIHdoYXQgd2UgaGF2ZSBhbHJlYWR5IGFib3ZlLCBpc24n dCBpdD8gSnVzdAo+Pj4+PiBiZWNhdXNlIHdlCj4+Pj4+IGNhbGwgdGhlIGZpZWxkICJtYXBwaW5n X2lkIiBkb2Vzbid0IG1lYW4gdGhhdCBpbiB0aGUgYmFja2dyb3VuZCB3ZQo+Pj4+PiBjYW4ndAo+ Pj4+PiBjcmVhdGUgYSBHRU0gb2JqZWN0IGFuZCByZXR1cm4gaXQncyBoYW5kbGUgYXMgIm1hcHBp bmdfaWQiLgo+Pj4+Pgo+Pj4+PiBPbmUgYWR2YW50YWdlIG9mIE1pa2tvJ3MgcHJvcG9zYWwgaXMg dGhhdCB3ZSBoYXZlIGEgc2luZ2xlIElPQ1RMCj4+Pj4+IHJhdGhlcgo+Pj4+PiB0aGFuIHR3byB0 byBjcmVhdGUgdGhlIG1hcHBpbmcsIG1ha2luZyBpdCBhIGJpdCBtb3JlIGxpZ2h0d2VpZ2h0Lgo+ Pj4+Cj4+Pj4gVGhpbmtpbmcgYSBiaXQgbW9yZSBhYm91dCBpdCwgSSBub3cgY2hhbmdlZCBteSBt aW5kLgo+Pj4+Cj4+Pj4gVGhlcmUgaXMgbm8gbmVlZCB0byBwZXJmb3JtIGltcGxpY2l0IGZlbmNp bmcgb24gZWFjaCBzdWJhbGxvY2F0aW9uLAo+Pj4+IGluc3RlYWQgZXhwbGljaXQgZmVuY2luZyBz aG91bGQgYmUgdXNlZCBmb3IgdGhlIHN1YmFsbG9jYXRpb25zLgo+Pj4+Cj4+Pj4gU28sIHdlIHdp bGwgbmVlZCB0byBhZGQgdGhlIHJlbG9jYXRpb24gZmxhZ3MgZm9yIHRoZSBkaXJlY3Rpb24gYW5k Cj4+Pj4gZXhwbGljaXQgKG9yIGltcGxpY2l0KSBmZW5jaW5nIHBlci1yZWxvY2F0aW9uLiBUaGUg ZGlyZWN0aW9uIHdpbGwgdGVsbAo+Pj4+IGhvdyBmZW5jZSBzaG91bGQgYmUgYXR0YWNoZWQgdG8g dGhlIEJPJ3MgRE1BLXJlc2VydmF0aW9uLCB3aGlsZSB0aGUKPj4+PiBmZW5jZS1mbGFnIHdpbGwg dGVsbCB3aGV0aGVyIGpvYidzIHNjaGVkdWxlciBzaG91bGQgd2FpdCBmb3IgdGhlIEJPJ3MKPj4+ PiByZXNlcnZhdGlvbiBiZWZvcmUgZXhlY3V0aW5nIGpvYiBvbiBoYXJkd2FyZS4gVGhpcyBhbGwg d2lsbCBiZSBuZWVkZWQKPj4+PiBmb3IgYSBwcm9wZXIgRFJJIGltcGxlbWVudGF0aW9uIG9uIG9s ZGVyIFRlZ3Jhcy4KPj4+Pgo+Pj4+IEFjdHVhbGx5LCBkdXJpbmcgb2YgbXkgZXhwZXJpbWVudHMg d2l0aCB0aGUgVUFQSSwgSSBhZGRlZCBib3RoIHRoZXNlCj4+Pj4gZmxhZ3MgZm9yIHRoZSByZWxv Y2F0aW9ucyBbMV0sIGJ1dCByZWFsbHkgdXNlZCBvbmx5IHRoZSBkaXJlY3Rpb24gZmxhZwo+Pj4+ IHNvIGZhciwgcmVseWluZyBvbiB0aGUgaW1wbGljaXQgZmVuY2luZy4KPj4+Pgo+Pj4+IFsxXQo+ Pj4+IGh0dHBzOi8vZ2l0aHViLmNvbS9ncmF0ZS1kcml2ZXIvbGludXgvYmxvYi9tYXN0ZXIvaW5j bHVkZS91YXBpL2RybS90ZWdyYV9kcm0uaCNMODk0Cj4+Pj4KPj4+Pgo+Pj4+Cj4+Pj4gU28sIGxl dCdzIGtlZXAgdGhlIGN1cnJlbnQgdmFyaWFudCBvZiB0aGlzIE1BUCBJT0NUTCBhcy1pcy4KPj4+ Pgo+Pj4KPj4+IExldCBtZSByZXBocmFzZSB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kOgo+Pj4K Pj4+IEZvciByZWxvY2F0aW9ucywgd2Ugc2hvdWxkIGFkZCBmbGFncyBmb3IgZGlyZWN0aW9uIGFu ZCBmZW5jaW5nLiBUaGlzIHdheQo+Pj4gYXQgc3VibWl0IHRpbWUgd2UgY2FuIGRvIHRoZSBwcm9w ZXIgZmVuY2luZyBvcGVyYXRpb25zIG9uIHRoZSByZWxvY2F0ZWQKPj4+IEJPJ3MgRE1BIHJlc2Vy dmF0aW9uLgo+Pgo+PiBDb3JyZWN0Cj4+Cj4+PiBUaGlzIHNvdW5kcyBnb29kIHRvIG1lLCBhbmQg SSB0aGluayBpdCBtYWtlcyB0aGUgInJlbG9jYXRpb24iIGNvbmNlcHQgYQo+Pj4gYml0IG1vcmUg Z2VuZXJhbCB0aGFuIGl0IGlzIGN1cnJlbnRseS4gSSB0aGluayB3ZSBjb3VsZCByZW5hbWUgaXQg dG8KPj4+IHNvbWV0aGluZyBsaWtlICJidWZmZXJfdXNhZ2UiIChvcGVuIHRvIGJpa2VzaGVkZGlu ZyksIGFuZCBpdCBjYW4gaGF2ZQo+Pj4gZmVuY2UtcmVsYXRlZCBmbGFncyBhbmQgcmVsb2NhdGlv bi1yZWxhdGVkIGZsYWdzLiBGb3IgbmV3ZXIgVGVncmEgY2hpcHMKPj4+IHdlIGRvbid0IG5lY2Vz c2FyaWx5IG5lZWQgdG8gcmVsb2NhdGUsIGJ1dCB3ZSBzdGlsbCBtYXkgbmVlZCB0byBoYW5kbGUK Pj4+IERNQSByZXNlcnZhdGlvbnMsIHNvIGluIHRoZXNlIGNhc2VzIG9ubHkgdGhlIGZlbmNpbmcg ZmxhZ3Mgd291bGQgYmUgc2V0Lgo+Pgo+PiBLZXJuZWwgZHJpdmVyIGFscmVhZHkga25vd3Mgd2hl dGhlciByZWxvY2F0aW9uIG5lZWRzIHRvIGJlIHBhdGNoZWQgc2luY2UKPj4gaXQgcmV0dXJucyAw eGZmZmZmZmZmIGJ5IHRoZSBNQVAgaWYgcGF0Y2hpbmcgaXMgbmVlZGVkLCBhbmQgdGh1cywKPj4g cGF0Y2hpbmcgY291bGQgYmUgYXV0by1za2lwcGVkIGJ5IHRoZSBkcml2ZXIuCj4+Cj4+IEkgZG9u J3QgdGhpbmsgdGhhdCBhIHNwZWNpYWwgZmxhZyBpcyByZXF1aXJlZCBmb3IgdGVsbGluZyBhYm91 dCB3aGV0aGVyCj4+IHJlbG9jYXRpb24gbmVlZHMgdG8gYmUgZG9uZS4gVGhlIGRpcmVjdGlvbiBh bmQgZmVuY2UgZmxhZ3Mgc2hvdWxkIGJlCj4+IGVub3VnaCBmb3Igbm93Lgo+IAo+IFllYWgsIEkg Z3Vlc3MgaXQncyBub3QgcmVhbGx5IHJlcXVpcmVkLgo+IAo+Pgo+PiA9PT0KPj4KPj4gSSdtIGN1 cmlvcyB3aGF0IGRvIHlvdSB0aGluayBhYm91dCBhbm90aGVyIHZhcmlhbnQ6Cj4+Cj4+IEluIHRo ZSBncmF0ZS1rZXJuZWwgSSdtIHVzaW5nIGEgQk8gdGFibGUgd2hpY2ggY29udGFpbnMgdW5pcXVl IEJPCj4+IGVudHJpZXMgZm9yIGVhY2ggam9iJ3MgcmVsb2NhdGlvbiBbMV0gYW5kIHRoZW4gSURz IG9mIHRoaXMgdGFibGUgYW5kCj4+IHRhcmdldCBvZmZzZXRzIGFyZSBlbWJlZGRlZCBpbnRvIHRo ZSBjbWRzdHJlYW0gaW4tcGxhY2Ugb2YgdGhlIG1lbW9yeQo+PiBhZGRyZXNzZXMgWzJdLiBUaGlz IHdheSwgd2hlbiBjbWRzdHJlYW0gaXMgZnVsbHkgZmlyZXdhbGxlZCwgd2UncmUKPj4gcmVhZGlu ZyB0aGUgc3RyZWFtJ3MgZGF0YSBhbnl3YXlzLCBhbmQgdGh1cywgaXQncyBxdWl0ZSBuaWNlIHRv IGVtYmVkCj4+IHRoZSBCTyB0YWJsZSBJRHMgYW5kIG9mZnNldHMgaW50byBjbWRzdHJlYW0gaXRz ZWxmIFszXS4KPj4KPj4gSW4gYSByZXN1bHQ6Cj4+Cj4+IMKgIC0gRWFjaCBqb2IncyBCTyBpcyBy ZXNvbHZlZCBvbmx5IG9uY2UgZHVyaW5nIHN1Ym1pc3Npb24uCj4+Cj4+IMKgIC0gQk8gdGFibGUg aXMga2VwdCBzbWFsbCBpZiBjbWRzdHJlYW0gY29udGFpbnMgZHVwbGljYXRlZCByZWxvY2F0aW9u cy4KPj4KPj4gWzFdCj4+IGh0dHBzOi8vZ2l0aHViLmNvbS9ncmF0ZS1kcml2ZXIvbGludXgvYmxv Yi9tYXN0ZXIvaW5jbHVkZS91YXBpL2RybS90ZWdyYV9kcm0uaCNMODkyCj4+Cj4+Cj4+IFsyXQo+ PiBodHRwczovL2dpdGh1Yi5jb20vZ3JhdGUtZHJpdmVyL2xpbnV4L2Jsb2IvbWFzdGVyL2luY2x1 ZGUvdWFwaS9kcm0vdGVncmFfZHJtLmgjTDc4Mwo+Pgo+Pgo+PiBbM10KPj4gaHR0cHM6Ly9naXRo dWIuY29tL2dyYXRlLWRyaXZlci9saW51eC9ibG9iL21hc3Rlci9kcml2ZXJzL2dwdS9kcm0vdGVn cmEvdWFwaS9wYXRjaGluZy5jI0w0Mwo+Pgo+Pgo+PiBPZiBjb3Vyc2UgdGhpcyBsaW1pdHMgdGhl IG51bWJlciBvZiBCT3MgcGVyLWpvYi4gSW4gYSBjYXNlIG9mCj4+IGdyYXRlLWtlcm5lbCBpdCdz IG1heCA2NCBCT3MgcGVyLWpvYiArIG1heCA2NE1CIGZvciB0YXJnZXQgb2Zmc2V0LiBJCj4+IGd1 ZXNzIHRoZSBCT3MgbnVtYmVyIGNvdWxkIGJlIGxvd2VyZWQgdG8gMzIgcGVyLWpvYiwgd2hpY2gg c2hvdWxkIGJlIGEKPj4gYml0IG1vcmUgcmVhbGlzdGljLCBhbmQgdGhlbiBtYXggdGFyZ2V0IG9m ZnNldCB3aWxsIGJlIDEyOE1CLgo+Pgo+PiBTbywgd2UgY291bGQgcmVwbGFjZSB0aGUgQk8gdGFi bGUgd2l0aCBhIG1hcHBpbmcgdGFibGUgYW5kIGhhdmUgdGhlCj4+IE1BUFBJTkdfVEFCTEUhIDop IEFuZCBpdCBkb2Vzbid0IG1hdHRlciB3aGV0aGVyIGNtZHN0cmVhbSBwYXRjaGVkIG9yCj4+IG5v dCwgZWl0aGVyIHdheSB0aGUgTUFQUElOR19UQUJMRSB3aWxsIGNvbnRhaW4gbWFwcGluZyBJRCAr IGZsYWdzLgo+Pgo+PiBUaGVyZSBhcmUgMyBwb3NzaWJsZSB2YXJpYW50cyBvZiBob3cgam9iIGNv dWxkIGJlIHByb2Nlc3NlZCwgZGVwZW5kaW5nCj4+IG9uIGhhcmR3YXJlIGdlbmVyYXRpb24gYW5k IGRyaXZlciBzZWN1cml0eSBjb25maWd1cmF0aW9uOgo+Pgo+PiDCoMKgIDEuIEpvYiBpcyBmdWxs eS1wYXJzZWQgYW5kIHBhdGNoZWQuCj4+IMKgwqAgMi4gSm9iIGlzIHBhdGNoZWQtb25seSAod2l0 aCByZWxvY2F0aW9ucykuCj4+IMKgwqAgMy4gSm9iIGlzbid0IHBhcnNlZCwgbm9yIHBhdGNoZWQu Cj4+Cj4+IE15IHZhcmlhbnQgY292ZXJzIDEgYW5kIDMuIEkgZ3Vlc3Mgd2UgY291bGQganVzdCBp Z25vcmUgdGhlIGNhc2UgMiBmb3IKPj4gbm93IGFuZCBmYWxsIGJhY2sgdG8gMSwgZm9yIHNpbXBs aWNpdHkuIEl0IHNob3VsZG4ndCBiZSBhIHByb2JsZW0gdG8gYWRkCj4+IHN1cHBvcnQgZm9yIHRo ZSBSRUxPQ1NfVEFCTEUgaW4gYWRkaXRpb24gdG8gTUFQUElOR19UQUJMRSBsYXRlciBvbiwgaWYK Pj4gd2lsbCBiZSByZWFsbHkgbmVlZGVkLgo+Pgo+IAo+IEkgdGhpbmsgdGhlIGJpdGZpZWxkIHdp bGwgZ2V0IGEgYml0IHRpZ2h0IG9uY2Ugd2UgYWRkIHRoZSAnc2hpZnQnIGZpZWxkCj4gYW5kICdi bG9ja2xpbmVhcicgZmxhZyB0byBpdCA6KSAod2hpY2ggbWFkZSBtZSBub3RpY2UgdGhhdCBhcHBh cmVudGx5IG15Cj4gb3JpZ2luYWwgcHJvcG9zYWwgaGFzIHRoZSBkZWZpbmUgZm9yCj4gRFJNX1RF R1JBX1NVQk1JVF9SRUxPQ0FUSU9OX0JMT0NLTElORUFSLCBidXQgZG9lc24ndCBoYXZlIGEgZmxh Z3MgZmllbGQKPiBpbiB0aGUgcmVsb2NhdGlvbiBzdHJ1Y3R1cmUsIG9vcHMhKQo+IEJvdGggb2Yg dGhvc2UgYWZmZWN0IHRoZSByZWxvY2F0aW9uIHZhbHVlLgoKVGhlIGZsYWdzIHdpbGwgYmUgaW4g dGhlIE1BUFBJTkdfVEFCTEUuIElmIHlvdSdsbCBoYXZlIHR3byBtYXBwaW5ncyB0aGF0CnVzZSBh IGRpZmZlcmVudCBtb2RpZmllciBmbGFnLCB0aGVuIGl0IHNob3VsZCBiZSB0d28gZGlmZmVyZW50 IGVudHJpZXMKaW4gdGhlIHRhYmxlLgoKVGhlIE1BUFBJTkdfVEFCTEUgaXMgc2ltaWxhciB0byBh IFJFTE9DQVRJT05fVEFCTEUsIGJ1dCBpdCdzIGEgYml0IG1vcmUKZmxleGlibGUgc2luY2UgaXQg YWxsb3dzIHRvIGF2b2lkIHRoZSBkdXBsaWNhdGVkIGVudHJpZXMuIEZvciBleGFtcGxlLAppZiB3 ZSBoYXZlIGEgam9iIHRoYXQgY29waWVzIG9uZSBhcmVhIG9mIHRoZSBtYXBwaW5nIHRvIGFub3Ro ZXIgYXJlYSBvZgp0aGUgc2FtZSBtYXBwaW5nLCB0aGVuIGl0IHdpbGwgYmUgYSBzaW5nbGUgZW50 cnkgaW4gdGhlIHRhYmxlLgoKSUlVQywgdGhlIHNoaWZ0IGlzIGFsd2F5cyBhIGNvbnN0YW50IHZh bHVlIGZvciBlYWNoIGFkZHJlc3MgcmVnaXN0ZXIsCmNvcnJlY3Q/IEhlbmNlLCB0aGUgc2hpZnQg dmFsdWUgY291bGQgYmUgbG9va2VkIHVwIGZyb20gdGhlIGFkZHJlc3MKcmVnaXN0ZXJzIHRhYmxl IG9mIHRoZSBrZXJuZWwgZHJpdmVyIGZvciBlYWNoIHBhdGNoZWQgcmVsb2NhdGlvbiBkdXJpbmcK b2YgdGhlIHBhdGNoaW5nIHByb2Nlc3MuCgo+IEZXSVcsIHdlIHNob3VsZCBkZXNpZ24gb3B0aW9u IDEgdG8gYmUgZnVuY3Rpb25hbCBmb3IgbmV3IGNoaXBzIGFzIHdlbGwsCj4gYXMgd2UgbmVlZCB0 byB1c2UgaXQgZS5nLiBpZiBJT01NVSBpcyBkaXNhYmxlZC4KCkZpcmV3YWxsIGFsc28gY291bGQg YmUgdXNlZnVsIGZvciBhIGRlYnVnZ2luZyBwdXJwb3Nlcy4gSXQgc2hvdWxkIHdvcmsKZm9yIGFs bCBoYXJkd2FyZSB2ZXJzaW9ucyB1bml2ZXJzYWxseS4KX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxA bGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxt YW4vbGlzdGluZm8vZHJpLWRldmVsCg==