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=-1.0 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_PASS,URIBL_BLOCKED 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 44B42C43387 for ; Sat, 29 Dec 2018 06:29:04 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id F283720836 for ; Sat, 29 Dec 2018 06:29:03 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728810AbeL2G3B (ORCPT ); Sat, 29 Dec 2018 01:29:01 -0500 Received: from mx2.suse.de ([195.135.220.15]:44700 "EHLO mx1.suse.de" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726672AbeL2G3A (ORCPT ); Sat, 29 Dec 2018 01:29:00 -0500 X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (unknown [195.135.220.254]) by mx1.suse.de (Postfix) with ESMTP id C0B8EAD8F; Sat, 29 Dec 2018 06:28:56 +0000 (UTC) Subject: Re: [PATCH v5 6/6] net: lorawan: List LORAWAN in menuconfig To: Alexander Aring Cc: Xue Liu , Jian-Hong Pan , "David S . Miller" , Alan Cox , linux-lpwan@lists.infradead.org, netdev@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Marcel Holtmann , Dollar Chen , Ken Yu , linux-wpan - ML , Jiri Pirko , Stefan Schmidt References: <20181216101858.9585-7-starnight@g.ncu.edu.tw> <8bfdccbf-fb47-daa5-fbd0-ed16a3d6d334@suse.de> <20181224153205.ycr2zdrjbyklulfh@x220t> <57bead63-bc4e-4dfe-57a9-9875600f5e37@suse.de> <20181228154316.2x2tyfzidnb4emqo@x220t> From: =?UTF-8?Q?Andreas_F=c3=a4rber?= Openpgp: preference=signencrypt Autocrypt: addr=afaerber@suse.de; prefer-encrypt=mutual; keydata= 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 Organization: SUSE Linux GmbH Message-ID: <5c3c9f71-73f3-6010-04c3-75ac91a35b05@suse.de> Date: Sat, 29 Dec 2018 07:28:53 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.3.0 MIME-Version: 1.0 In-Reply-To: <20181228154316.2x2tyfzidnb4emqo@x220t> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Am 28.12.18 um 16:43 schrieb Alexander Aring: > On Fri, Dec 28, 2018 at 05:57:53AM +0100, Andreas Färber wrote: >> Am 24.12.18 um 16:32 schrieb Alexander Aring: >>> On Tue, Dec 18, 2018 at 02:50:58PM +0100, Xue Liu wrote: >>>> On Mon, 17 Dec 2018 at 15:19, Andreas Färber wrote: >>>>> Am 17.12.18 um 09:50 schrieb Xue Liu: >>>>>> I have a question about the architecture of your module. AFAIK LoRaWAN >>>>>> is already the MAC Layer above the LoRa technology. Why do you want to >>>>>> make a new layer called "maclorawan" ? >>>>> >>>>> I had asked Jian-Hong to separate between his soft-MAC implementation >>>>> and the common bits needed to drive hard-MAC implementations found on >>>>> several of the hardware modules made available to me. >>>>> >>>> As a reference Linux 802.11 uses cfg80211 to talk with hard-MAC devices. >>>> We may also use the name “cfglora” for hard-MAC implementation. >>> >>> There exists also a cfg802154. :-) >>> >>> Note that cfg80211 is also for providing a backwardscompatibility to the >>> wireless ioctl() interface. >>> >>> In theory it's simple: >>> >>> netlink API -> SoftMAC (macFOOBAR layer) -> cfgFOOBAR implementation -> driver layer >>> \-> HardMAC (driver layer) -> cfgFOOBAR implementation >> >> So how does cfgFOOBAR relate to nlFOOBAR now? Given that we were told to >> use netlink and pointed to some nl802whatever, I am confused about two >> people now calling for cfg. We have an nllora stubbed in linux-lora.git, >> and I was expecting to see an nllorawan¹ either in this series or on > > Why there is a different between two lora technologies? This sounds you > driving into two lora subsystems without one userspace api to access them, > this getting worse. This had just been explained to Jiri: LoRa PHY vs. LoRaWAN MAC. Similar splits exist for other technologies; and how the LoRaWAN soft-MAC can reuse underlying LoRa facilities is the very subject of this sub-thread! It entirely depends on what the user wants to do - connect to a LoRaWAN network as client, forward LoRaWAN packets as a gateway, communicate peer-to-peer, implement alternative MACs in userspace, ... So if a user is working on LoRaWAN MAC layer I expect him to deal with PF_LORAWAN and nllorawan and not need direct access to nllora, as that would be an implementation detail specific to the soft-MAC; a hard-MAC should not need to implement nllora, as it may not have that control. >> top. If you're suggesting to rename them technology-neutral, then please > > I am sorry, I actually meant that... People tell me that I can't explain > things all the time. > >> say so clearly - otherwise it sounds to me like you didn't actually look >> at the staged code yet or didn't read our previous discussions and lead >> our contributors to reinvent things we already have... > > As example for 802.15.4: > > nl802154 (which is one netlink interface for doesn't matter what > kind 802.15.4 device is behind) -> callback structure of cfg802154 which > goes to a somehow 802.15.4 device as SoftMAC layer or HardMAC driver. Okay, I took a shortcut there for LoRa and assume we always have a LoRa netdev (i.e., no theoretical SDR netdev), so that I could postpone figuring out how to register extra per-netdev cfg structs for quicker PoC of the netlink interface. :) My get_freq callback will need to be moved out from struct lora_dev_priv (lora/netdev.h) into its own struct. >> We really need to complete the layers from the ground up before we get >> lost in more nice-to-have upper layers: For LoRaWAN that means we need >> to have TX and RX working for LoRa _and_ FSK. sx1276 still has lots of >> hardcoded stuff from my own testing that needs to hook into nllora, and >> FSK exists only as ETH_P_FSK constant so far, with no concept for >> switching modes yet (which as mentioned in my presentation¹ needs to go >> via sleep mode, losing most register settings) nor any netlink support. >> Not all drivers need to be at the same implementation level, of course, >> but we need at least one that's far enough to validate such patches. > > Your register behaviour sounds for me like a feature for regmap. Or > either a feature to handle in your subsystem. We don't have regmap caching enabled. sx1276 has no paging implemented, as it's slightly more complicated than sx1301 (and the "youngest" of 3). I assume instead of just writing from netlink/cfg callbacks to regmap we'll need to also save the values in the driver for writing them back after a mode switch or suspend. However it's also a question of who initiates the mode switch and how, presumably via netlink. >> And seeing that I just found a major bug in sx1276 driver's TX path, >> apparently no one apart from me is testing that driver - sx128x and >> sx1301 were not yet complete enough to transmit, and due to the open >> socket address/protocol discussions none can receive yet, so as Jiri >> hinted, this LoRaWAN soft-MAC patch series can't have been >> runtime-tested against any staged driver at all! => [RFC lora-next v5 6/6] > > aha. When I started working on ieee802154 many times I thought nobody > had really tested it. That's somehow the process of upstream > programming, it's growing over the time. The first implementation is > always somehow crappy, but people working on it and get experience over > the time, you cannot have perfect code. This is not about iterative development, it's about discussing about a high-level cfg interface on top of nl on top of a PHY that didn't work; not just some optional offload feature being broken. ;) We may never have perfect code, but we can't merge a driver that doesn't work at all, and as long as I know it's not working sufficiently I am holding back on sending out a v2, in favor of queuing more fixes and cleanups that'll make it worth people's time to review. Having the soft-MAC be further implemented and actually using the functions it implements may avoid some of the declarations Jiri disliked by just making them static locally where they're needed. Earlier reviewers were already getting deep into coding style reviews, but it seems this is not yet a "PATCH" ready for merging after all and should therefore by its author be labeled "RFC" or at least "RFT" if it couldn't be tested yet. If it's a "PATCH", I expect to be able to queue it on my tree if I spot no major design problems or nits the author could help fix upfront. Compare below. >> Therefore I thought in our case some hard-MAC may be easier to validate >> LoRaWAN sockets (patch 1/6), to avoid a dependency on completing the MAC >> implementation first. For example, iM880, RF1276TS and 32001353 are pure >> LoRaWAN modules without raw LoRa support. (Whereas many others support >> both and I'm still looking for input on how to best deal with that - >> currently exposing them as LoRa devices for maximal flexibility.) > > So that means you ignore SoftMAC because HardMAC is easier? No, I don't ignore it, I'm missing infrastructure to evaluate it! As Jiri has pointed out earlier, this series is doing two things, 1) introduce LoRaWAN sockets (that's great, needs review/discussion) and 2) prepare a soft-MAC implementation with a number of functions that are not yet called from anywhere. Plus the series omits to extend my lower-level netlink interfaces and driver(s) with the facilities it'll need to actually work. The default Sync Word on sx1276 is 0x12, for instance. Basically Jian-Hong and I are at odds in which direction the layers should plug together, with me vehemently against coding LoRaWAN stuff in LoRa drivers (layering violation!) and instead wanting that centrally in an optional LoRaWAN soft-MAC module (=maclorawan) on top. Compare 2/6 still reading "driver should implement some of them according to the usage" - for me that should be a cfg struct at the nllorawan layer, which he should implement in maclorawan and I only for hard-MAC drivers, instead of exporting an ABI that's not called by anyone and would seemingly need to be reimplemented in each and every of my LoRa drivers! Note that duplicate copies and forks of LoRaWAN soft-MAC userspace implementations on GitHub were one of the reasons for me to start this kernel project, so I really, really don't want that here. And 5/6 main.c appears to still be based around the idea that he gets his own loraX netdevs, seemingly conflicting by name with mine if they would actually get created by the functions getting called anywhere... Maybe you can now grasp my annoyance with this non-RFC v5 making only cosmetic changes since v2? (and completely lacking any changelog in 0/6) > We actually > go the opposite way to say SoftMAC introduce the most infrastructure and > then say that we will bind HardMAC to it. The very definition of a hard-MAC is that it does not need a soft-MAC. So that doesn't make much sense to me. The netlink interfaces for LoRa (e.g., Join operations for authentication) will be constrained by what ops the hard-MACs need, whereas we have much more freedoms with our own soft-MAC. LoRaWAN provides a meta set of operations compared to LoRa+FSK (e.g., setting the data rate on MAC layer would involve regional awareness and translates to setting frequency+bandwidth+SF on PHY layer, and a LoRa transmission/reception will need to set a Sync Word of 0x34); therefore my saying that for the soft-MAC we need interfaces and implementations on my LoRa PHY layer that are still incomplete today. Once the PHY layer is working, the soft-MAC would just need to properly dispatch - and ideally I would have it provide packets in an ETH_P_LORA format, so that I don't need duplicate (ETH_P_LORA + ETH_P_LORAWAN) implementations in each soft-MAC capable LoRa driver. Thus, if the PHY doesn't transmit (yet), LoRaWAN can't send either. And that brings us back to the big question circling since months of how to design these socket layers: Currently I'm using a PF_LORA and was hoping to extend its sock_addr to cope with the Sync Word, frequency, etc. and set that via skb for each TX (which raised problems for RX). At ELCE 2018 it was suggested that we should rather take the easy route of not defining a PF_LORA and just use PF_PACKET with htons(ETH_P_LORA) and apply every global setting via netlink; that however appears to obsolete my lora/dgram.c code dealing with private ifindex field then, so that we could no longer pass any LoRa-specific per-packet metadata from LoRaWAN layer down to LoRa either. And since I'm unfamiliar with PF_PACKET, I'm focusing on making the basics work first before diving into refactorings that give us no functional benefits. Anyway, I assume we'll need to translate from LoRaWAN to LoRa skbs somewhere in this patch series to add the necessary LoRaWAN headers for SOCK_DGRAM or SOCK_SEQPACKET packets - it's neither in 1/6 nor in 5/6. Additionally, operations such as Join that the user would request via netlink command will need to create LoRa skbs in the soft-MAC directly. So in that way LoRaWAN may be comparable to Wifi connecting to an AP, whereas LoRa is more like shoveling packets into/out an Ethernet cable. Hope that explains better from my side as well. Most of it had been brought up in replies to the cover letter of my original RFC on netdev list: https://patchwork.ozlabs.org/cover/937545/ Regards, Andreas -- SUSE Linux GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany GF: Felix Imendörffer, Jane Smithard, Graham Norton HRB 21284 (AG Nürnberg) 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=-2.0 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_PASS, URIBL_BLOCKED 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 F3990C43387 for ; Sat, 29 Dec 2018 06:29:16 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (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 C1DA020836 for ; Sat, 29 Dec 2018 06:29:16 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="Dg2qz3Ga" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org C1DA020836 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=suse.de Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:Date: Message-ID:From:References:To:Subject:Reply-To:Content-ID:Content-Description :Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=okoHAgtxBh0Abpu9SurfqcY+9BLvYvJm97D249VKHow=; b=Dg2qz3GanIq/C9 wwRgt1Fx0ouY1kQHGrb8JHsOiaeQQtytubunUnURLcO9PqwnvASDN2k6cUdswY3CpTutBhf4exduP 2TgpBx1JrOwmeWEwhjIKTcVnG+PN4FXjTIziq8620DD73QbhaBVht1cLPTQ+/lOSWrxcIO5ECmi6t /RGhBipOdeEQKYPEDD0JACZ0tugeY/31b0ytfr1XJNntQwP5dsIZdCATGuFiwEHu1xS8eydJtQk1k fwWgw4j8gc2evleqQsLgHd6gIZ2Y9jkBJEdfslbiF+Itlia68cRhFbD+QuhHZS7XOpPWKgTm+MAtJ nWC7Qiq6vgljyN6QyMhA==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.90_1 #2 (Red Hat Linux)) id 1gd87X-00068s-Tt; Sat, 29 Dec 2018 06:29:16 +0000 Received: from mx2.suse.de ([195.135.220.15] helo=mx1.suse.de) by bombadil.infradead.org with esmtps (Exim 4.90_1 #2 (Red Hat Linux)) id 1gd87S-00067X-Tg; Sat, 29 Dec 2018 06:29:13 +0000 X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (unknown [195.135.220.254]) by mx1.suse.de (Postfix) with ESMTP id C0B8EAD8F; Sat, 29 Dec 2018 06:28:56 +0000 (UTC) Subject: Re: [PATCH v5 6/6] net: lorawan: List LORAWAN in menuconfig To: Alexander Aring References: <20181216101858.9585-7-starnight@g.ncu.edu.tw> <8bfdccbf-fb47-daa5-fbd0-ed16a3d6d334@suse.de> <20181224153205.ycr2zdrjbyklulfh@x220t> <57bead63-bc4e-4dfe-57a9-9875600f5e37@suse.de> <20181228154316.2x2tyfzidnb4emqo@x220t> From: =?UTF-8?Q?Andreas_F=c3=a4rber?= Openpgp: preference=signencrypt Autocrypt: addr=afaerber@suse.de; prefer-encrypt=mutual; keydata= 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 Organization: SUSE Linux GmbH Message-ID: <5c3c9f71-73f3-6010-04c3-75ac91a35b05@suse.de> Date: Sat, 29 Dec 2018 07:28:53 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.3.0 MIME-Version: 1.0 In-Reply-To: <20181228154316.2x2tyfzidnb4emqo@x220t> Content-Language: en-US X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20181228_222911_256136_529A0DD3 X-CRM114-Status: GOOD ( 33.57 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Alan Cox , Xue Liu , netdev@vger.kernel.org, Marcel Holtmann , Dollar Chen , linux-lpwan@lists.infradead.org, linux-kernel@vger.kernel.org, Stefan Schmidt , Jiri Pirko , Jian-Hong Pan , Ken Yu , linux-wpan - ML , "David S . Miller" , linux-arm-kernel@lists.infradead.org Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org QW0gMjguMTIuMTggdW0gMTY6NDMgc2NocmllYiBBbGV4YW5kZXIgQXJpbmc6Cj4gT24gRnJpLCBE ZWMgMjgsIDIwMTggYXQgMDU6NTc6NTNBTSArMDEwMCwgQW5kcmVhcyBGw6RyYmVyIHdyb3RlOgo+ PiBBbSAyNC4xMi4xOCB1bSAxNjozMiBzY2hyaWViIEFsZXhhbmRlciBBcmluZzoKPj4+IE9uIFR1 ZSwgRGVjIDE4LCAyMDE4IGF0IDAyOjUwOjU4UE0gKzAxMDAsIFh1ZSBMaXUgd3JvdGU6Cj4+Pj4g T24gTW9uLCAxNyBEZWMgMjAxOCBhdCAxNToxOSwgQW5kcmVhcyBGw6RyYmVyIDxhZmFlcmJlckBz dXNlLmRlPiB3cm90ZToKPj4+Pj4gQW0gMTcuMTIuMTggdW0gMDk6NTAgc2NocmllYiBYdWUgTGl1 Ogo+Pj4+Pj4gSSBoYXZlIGEgcXVlc3Rpb24gYWJvdXQgdGhlIGFyY2hpdGVjdHVyZSBvZiB5b3Vy IG1vZHVsZS4gQUZBSUsgTG9SYVdBTgo+Pj4+Pj4gaXMgYWxyZWFkeSB0aGUgTUFDIExheWVyIGFi b3ZlIHRoZSBMb1JhIHRlY2hub2xvZ3kuIFdoeSBkbyB5b3Ugd2FudCB0bwo+Pj4+Pj4gbWFrZSBh IG5ldyBsYXllciBjYWxsZWQgIm1hY2xvcmF3YW4iID8KPj4+Pj4KPj4+Pj4gSSBoYWQgYXNrZWQg Smlhbi1Ib25nIHRvIHNlcGFyYXRlIGJldHdlZW4gaGlzIHNvZnQtTUFDIGltcGxlbWVudGF0aW9u Cj4+Pj4+IGFuZCB0aGUgY29tbW9uIGJpdHMgbmVlZGVkIHRvIGRyaXZlIGhhcmQtTUFDIGltcGxl bWVudGF0aW9ucyBmb3VuZCBvbgo+Pj4+PiBzZXZlcmFsIG9mIHRoZSBoYXJkd2FyZSBtb2R1bGVz IG1hZGUgYXZhaWxhYmxlIHRvIG1lLgo+Pj4+Pgo+Pj4+IEFzIGEgcmVmZXJlbmNlIExpbnV4IDgw Mi4xMSB1c2VzIGNmZzgwMjExIHRvIHRhbGsgd2l0aCBoYXJkLU1BQyBkZXZpY2VzLgo+Pj4+IFdl IG1heSBhbHNvIHVzZSB0aGUgbmFtZSDigJxjZmdsb3Jh4oCdIGZvciBoYXJkLU1BQyBpbXBsZW1l bnRhdGlvbi4KPj4+Cj4+PiBUaGVyZSBleGlzdHMgYWxzbyBhIGNmZzgwMjE1NC4gOi0pCj4+Pgo+ Pj4gTm90ZSB0aGF0IGNmZzgwMjExIGlzIGFsc28gZm9yIHByb3ZpZGluZyBhIGJhY2t3YXJkc2Nv bXBhdGliaWxpdHkgdG8gdGhlCj4+PiB3aXJlbGVzcyBpb2N0bCgpIGludGVyZmFjZS4KPj4+Cj4+ PiBJbiB0aGVvcnkgaXQncyBzaW1wbGU6Cj4+Pgo+Pj4gbmV0bGluayBBUEkgLT4gU29mdE1BQyAo bWFjRk9PQkFSIGxheWVyKSAtPiBjZmdGT09CQVIgaW1wbGVtZW50YXRpb24gLT4gZHJpdmVyIGxh eWVyCj4+PiAgICAgICAgICAgICBcLT4gSGFyZE1BQyAoZHJpdmVyIGxheWVyKSAtPiBjZmdGT09C QVIgaW1wbGVtZW50YXRpb24KPj4KPj4gU28gaG93IGRvZXMgY2ZnRk9PQkFSIHJlbGF0ZSB0byBu bEZPT0JBUiBub3c/IEdpdmVuIHRoYXQgd2Ugd2VyZSB0b2xkIHRvCj4+IHVzZSBuZXRsaW5rIGFu ZCBwb2ludGVkIHRvIHNvbWUgbmw4MDJ3aGF0ZXZlciwgSSBhbSBjb25mdXNlZCBhYm91dCB0d28K Pj4gcGVvcGxlIG5vdyBjYWxsaW5nIGZvciBjZmcuIFdlIGhhdmUgYW4gbmxsb3JhIHN0dWJiZWQg aW4gbGludXgtbG9yYS5naXQsCj4+IGFuZCBJIHdhcyBleHBlY3RpbmcgdG8gc2VlIGFuIG5sbG9y YXdhbsK5IGVpdGhlciBpbiB0aGlzIHNlcmllcyBvciBvbgo+IAo+IFdoeSB0aGVyZSBpcyBhIGRp ZmZlcmVudCBiZXR3ZWVuIHR3byBsb3JhIHRlY2hub2xvZ2llcz8gVGhpcyBzb3VuZHMgeW91Cj4g ZHJpdmluZyBpbnRvIHR3byBsb3JhIHN1YnN5c3RlbXMgd2l0aG91dCBvbmUgdXNlcnNwYWNlIGFw aSB0byBhY2Nlc3MgdGhlbSwKPiB0aGlzIGdldHRpbmcgd29yc2UuCgpUaGlzIGhhZCBqdXN0IGJl ZW4gZXhwbGFpbmVkIHRvIEppcmk6IExvUmEgUEhZIHZzLiBMb1JhV0FOIE1BQy4gU2ltaWxhcgpz cGxpdHMgZXhpc3QgZm9yIG90aGVyIHRlY2hub2xvZ2llczsgYW5kIGhvdyB0aGUgTG9SYVdBTiBz b2Z0LU1BQyBjYW4KcmV1c2UgdW5kZXJseWluZyBMb1JhIGZhY2lsaXRpZXMgaXMgdGhlIHZlcnkg c3ViamVjdCBvZiB0aGlzIHN1Yi10aHJlYWQhCgpJdCBlbnRpcmVseSBkZXBlbmRzIG9uIHdoYXQg dGhlIHVzZXIgd2FudHMgdG8gZG8gLSBjb25uZWN0IHRvIGEgTG9SYVdBTgpuZXR3b3JrIGFzIGNs aWVudCwgZm9yd2FyZCBMb1JhV0FOIHBhY2tldHMgYXMgYSBnYXRld2F5LCBjb21tdW5pY2F0ZQpw ZWVyLXRvLXBlZXIsIGltcGxlbWVudCBhbHRlcm5hdGl2ZSBNQUNzIGluIHVzZXJzcGFjZSwgLi4u CgpTbyBpZiBhIHVzZXIgaXMgd29ya2luZyBvbiBMb1JhV0FOIE1BQyBsYXllciBJIGV4cGVjdCBo aW0gdG8gZGVhbCB3aXRoClBGX0xPUkFXQU4gYW5kIG5sbG9yYXdhbiBhbmQgbm90IG5lZWQgZGly ZWN0IGFjY2VzcyB0byBubGxvcmEsIGFzIHRoYXQKd291bGQgYmUgYW4gaW1wbGVtZW50YXRpb24g ZGV0YWlsIHNwZWNpZmljIHRvIHRoZSBzb2Z0LU1BQzsgYSBoYXJkLU1BQwpzaG91bGQgbm90IG5l ZWQgdG8gaW1wbGVtZW50IG5sbG9yYSwgYXMgaXQgbWF5IG5vdCBoYXZlIHRoYXQgY29udHJvbC4K Cj4+IHRvcC4gSWYgeW91J3JlIHN1Z2dlc3RpbmcgdG8gcmVuYW1lIHRoZW0gdGVjaG5vbG9neS1u ZXV0cmFsLCB0aGVuIHBsZWFzZQo+IAo+IEkgYW0gc29ycnksIEkgYWN0dWFsbHkgbWVhbnQgdGhh dC4uLiBQZW9wbGUgdGVsbCBtZSB0aGF0IEkgY2FuJ3QgZXhwbGFpbgo+IHRoaW5ncyBhbGwgdGhl IHRpbWUuCj4gCj4+IHNheSBzbyBjbGVhcmx5IC0gb3RoZXJ3aXNlIGl0IHNvdW5kcyB0byBtZSBs aWtlIHlvdSBkaWRuJ3QgYWN0dWFsbHkgbG9vawo+PiBhdCB0aGUgc3RhZ2VkIGNvZGUgeWV0IG9y IGRpZG4ndCByZWFkIG91ciBwcmV2aW91cyBkaXNjdXNzaW9ucyBhbmQgbGVhZAo+PiBvdXIgY29u dHJpYnV0b3JzIHRvIHJlaW52ZW50IHRoaW5ncyB3ZSBhbHJlYWR5IGhhdmUuLi4KPiAKPiBBcyBl eGFtcGxlIGZvciA4MDIuMTUuNDoKPiAKPiBubDgwMjE1NCAod2hpY2ggaXMgb25lIG5ldGxpbmsg aW50ZXJmYWNlIGZvciBkb2Vzbid0IG1hdHRlciB3aGF0Cj4ga2luZCA4MDIuMTUuNCBkZXZpY2Ug aXMgYmVoaW5kKSAtPiBjYWxsYmFjayBzdHJ1Y3R1cmUgb2YgY2ZnODAyMTU0IHdoaWNoCj4gZ29l cyB0byBhIHNvbWVob3cgODAyLjE1LjQgZGV2aWNlIGFzIFNvZnRNQUMgbGF5ZXIgb3IgSGFyZE1B QyBkcml2ZXIuCgpPa2F5LCBJIHRvb2sgYSBzaG9ydGN1dCB0aGVyZSBmb3IgTG9SYSBhbmQgYXNz dW1lIHdlIGFsd2F5cyBoYXZlIGEgTG9SYQpuZXRkZXYgKGkuZS4sIG5vIHRoZW9yZXRpY2FsIFNE UiBuZXRkZXYpLCBzbyB0aGF0IEkgY291bGQgcG9zdHBvbmUKZmlndXJpbmcgb3V0IGhvdyB0byBy ZWdpc3RlciBleHRyYSBwZXItbmV0ZGV2IGNmZyBzdHJ1Y3RzIGZvciBxdWlja2VyClBvQyBvZiB0 aGUgbmV0bGluayBpbnRlcmZhY2UuIDopIE15IGdldF9mcmVxIGNhbGxiYWNrIHdpbGwgbmVlZCB0 byBiZQptb3ZlZCBvdXQgZnJvbSBzdHJ1Y3QgbG9yYV9kZXZfcHJpdiAobG9yYS9uZXRkZXYuaCkg aW50byBpdHMgb3duIHN0cnVjdC4KCj4+IFdlIHJlYWxseSBuZWVkIHRvIGNvbXBsZXRlIHRoZSBs YXllcnMgZnJvbSB0aGUgZ3JvdW5kIHVwIGJlZm9yZSB3ZSBnZXQKPj4gbG9zdCBpbiBtb3JlIG5p Y2UtdG8taGF2ZSB1cHBlciBsYXllcnM6IEZvciBMb1JhV0FOIHRoYXQgbWVhbnMgd2UgbmVlZAo+ PiB0byBoYXZlIFRYIGFuZCBSWCB3b3JraW5nIGZvciBMb1JhIF9hbmRfIEZTSy4gc3gxMjc2IHN0 aWxsIGhhcyBsb3RzIG9mCj4+IGhhcmRjb2RlZCBzdHVmZiBmcm9tIG15IG93biB0ZXN0aW5nIHRo YXQgbmVlZHMgdG8gaG9vayBpbnRvIG5sbG9yYSwgYW5kCj4+IEZTSyBleGlzdHMgb25seSBhcyBF VEhfUF9GU0sgY29uc3RhbnQgc28gZmFyLCB3aXRoIG5vIGNvbmNlcHQgZm9yCj4+IHN3aXRjaGlu ZyBtb2RlcyB5ZXQgKHdoaWNoIGFzIG1lbnRpb25lZCBpbiBteSBwcmVzZW50YXRpb27CuSBuZWVk cyB0byBnbwo+PiB2aWEgc2xlZXAgbW9kZSwgbG9zaW5nIG1vc3QgcmVnaXN0ZXIgc2V0dGluZ3Mp IG5vciBhbnkgbmV0bGluayBzdXBwb3J0Lgo+PiBOb3QgYWxsIGRyaXZlcnMgbmVlZCB0byBiZSBh dCB0aGUgc2FtZSBpbXBsZW1lbnRhdGlvbiBsZXZlbCwgb2YgY291cnNlLAo+PiBidXQgd2UgbmVl ZCBhdCBsZWFzdCBvbmUgdGhhdCdzIGZhciBlbm91Z2ggdG8gdmFsaWRhdGUgc3VjaCBwYXRjaGVz Lgo+IAo+IFlvdXIgcmVnaXN0ZXIgYmVoYXZpb3VyIHNvdW5kcyBmb3IgbWUgbGlrZSBhIGZlYXR1 cmUgZm9yIHJlZ21hcC4gT3IKPiBlaXRoZXIgYSBmZWF0dXJlIHRvIGhhbmRsZSBpbiB5b3VyIHN1 YnN5c3RlbS4KCldlIGRvbid0IGhhdmUgcmVnbWFwIGNhY2hpbmcgZW5hYmxlZC4gc3gxMjc2IGhh cyBubyBwYWdpbmcgaW1wbGVtZW50ZWQsCmFzIGl0J3Mgc2xpZ2h0bHkgbW9yZSBjb21wbGljYXRl ZCB0aGFuIHN4MTMwMSAoYW5kIHRoZSAieW91bmdlc3QiIG9mIDMpLgoKSSBhc3N1bWUgaW5zdGVh ZCBvZiBqdXN0IHdyaXRpbmcgZnJvbSBuZXRsaW5rL2NmZyBjYWxsYmFja3MgdG8gcmVnbWFwCndl J2xsIG5lZWQgdG8gYWxzbyBzYXZlIHRoZSB2YWx1ZXMgaW4gdGhlIGRyaXZlciBmb3Igd3JpdGlu ZyB0aGVtIGJhY2sKYWZ0ZXIgYSBtb2RlIHN3aXRjaCBvciBzdXNwZW5kLgoKSG93ZXZlciBpdCdz IGFsc28gYSBxdWVzdGlvbiBvZiB3aG8gaW5pdGlhdGVzIHRoZSBtb2RlIHN3aXRjaCBhbmQgaG93 LApwcmVzdW1hYmx5IHZpYSBuZXRsaW5rLgoKPj4gQW5kIHNlZWluZyB0aGF0IEkganVzdCBmb3Vu ZCBhIG1ham9yIGJ1ZyBpbiBzeDEyNzYgZHJpdmVyJ3MgVFggcGF0aCwKPj4gYXBwYXJlbnRseSBu byBvbmUgYXBhcnQgZnJvbSBtZSBpcyB0ZXN0aW5nIHRoYXQgZHJpdmVyIC0gc3gxMjh4IGFuZAo+ PiBzeDEzMDEgd2VyZSBub3QgeWV0IGNvbXBsZXRlIGVub3VnaCB0byB0cmFuc21pdCwgYW5kIGR1 ZSB0byB0aGUgb3Blbgo+PiBzb2NrZXQgYWRkcmVzcy9wcm90b2NvbCBkaXNjdXNzaW9ucyBub25l IGNhbiByZWNlaXZlIHlldCwgc28gYXMgSmlyaQo+PiBoaW50ZWQsIHRoaXMgTG9SYVdBTiBzb2Z0 LU1BQyBwYXRjaCBzZXJpZXMgY2FuJ3QgaGF2ZSBiZWVuCj4+IHJ1bnRpbWUtdGVzdGVkIGFnYWlu c3QgYW55IHN0YWdlZCBkcml2ZXIgYXQgYWxsISAgPT4gW1JGQyBsb3JhLW5leHQgdjUgNi82XQo+ IAo+IGFoYS4gV2hlbiBJIHN0YXJ0ZWQgd29ya2luZyBvbiBpZWVlODAyMTU0IG1hbnkgdGltZXMg SSB0aG91Z2h0IG5vYm9keQo+IGhhZCByZWFsbHkgdGVzdGVkIGl0LiBUaGF0J3Mgc29tZWhvdyB0 aGUgcHJvY2VzcyBvZiB1cHN0cmVhbQo+IHByb2dyYW1taW5nLCBpdCdzIGdyb3dpbmcgb3ZlciB0 aGUgdGltZS4gVGhlIGZpcnN0IGltcGxlbWVudGF0aW9uIGlzCj4gYWx3YXlzIHNvbWVob3cgY3Jh cHB5LCBidXQgcGVvcGxlIHdvcmtpbmcgb24gaXQgYW5kIGdldCBleHBlcmllbmNlIG92ZXIKPiB0 aGUgdGltZSwgeW91IGNhbm5vdCBoYXZlIHBlcmZlY3QgY29kZS4KClRoaXMgaXMgbm90IGFib3V0 IGl0ZXJhdGl2ZSBkZXZlbG9wbWVudCwgaXQncyBhYm91dCBkaXNjdXNzaW5nIGFib3V0IGEKaGln aC1sZXZlbCBjZmcgaW50ZXJmYWNlIG9uIHRvcCBvZiBubCBvbiB0b3Agb2YgYSBQSFkgdGhhdCBk aWRuJ3Qgd29yazsKbm90IGp1c3Qgc29tZSBvcHRpb25hbCBvZmZsb2FkIGZlYXR1cmUgYmVpbmcg YnJva2VuLiA7KSBXZSBtYXkgbmV2ZXIKaGF2ZSBwZXJmZWN0IGNvZGUsIGJ1dCB3ZSBjYW4ndCBt ZXJnZSBhIGRyaXZlciB0aGF0IGRvZXNuJ3Qgd29yayBhdCBhbGwsCmFuZCBhcyBsb25nIGFzIEkg a25vdyBpdCdzIG5vdCB3b3JraW5nIHN1ZmZpY2llbnRseSBJIGFtIGhvbGRpbmcgYmFjayBvbgpz ZW5kaW5nIG91dCBhIHYyLCBpbiBmYXZvciBvZiBxdWV1aW5nIG1vcmUgZml4ZXMgYW5kIGNsZWFu dXBzIHRoYXQnbGwKbWFrZSBpdCB3b3J0aCBwZW9wbGUncyB0aW1lIHRvIHJldmlldy4KCkhhdmlu ZyB0aGUgc29mdC1NQUMgYmUgZnVydGhlciBpbXBsZW1lbnRlZCBhbmQgYWN0dWFsbHkgdXNpbmcg dGhlCmZ1bmN0aW9ucyBpdCBpbXBsZW1lbnRzIG1heSBhdm9pZCBzb21lIG9mIHRoZSBkZWNsYXJh dGlvbnMgSmlyaSBkaXNsaWtlZApieSBqdXN0IG1ha2luZyB0aGVtIHN0YXRpYyBsb2NhbGx5IHdo ZXJlIHRoZXkncmUgbmVlZGVkLgoKRWFybGllciByZXZpZXdlcnMgd2VyZSBhbHJlYWR5IGdldHRp bmcgZGVlcCBpbnRvIGNvZGluZyBzdHlsZSByZXZpZXdzLApidXQgaXQgc2VlbXMgdGhpcyBpcyBu b3QgeWV0IGEgIlBBVENIIiByZWFkeSBmb3IgbWVyZ2luZyBhZnRlciBhbGwgYW5kCnNob3VsZCB0 aGVyZWZvcmUgYnkgaXRzIGF1dGhvciBiZSBsYWJlbGVkICJSRkMiIG9yIGF0IGxlYXN0ICJSRlQi IGlmIGl0CmNvdWxkbid0IGJlIHRlc3RlZCB5ZXQuIElmIGl0J3MgYSAiUEFUQ0giLCBJIGV4cGVj dCB0byBiZSBhYmxlIHRvIHF1ZXVlCml0IG9uIG15IHRyZWUgaWYgSSBzcG90IG5vIG1ham9yIGRl c2lnbiBwcm9ibGVtcyBvciBuaXRzIHRoZSBhdXRob3IKY291bGQgaGVscCBmaXggdXBmcm9udC4g Q29tcGFyZSBiZWxvdy4KCj4+IFRoZXJlZm9yZSBJIHRob3VnaHQgaW4gb3VyIGNhc2Ugc29tZSBo YXJkLU1BQyBtYXkgYmUgZWFzaWVyIHRvIHZhbGlkYXRlCj4+IExvUmFXQU4gc29ja2V0cyAocGF0 Y2ggMS82KSwgdG8gYXZvaWQgYSBkZXBlbmRlbmN5IG9uIGNvbXBsZXRpbmcgdGhlIE1BQwo+PiBp bXBsZW1lbnRhdGlvbiBmaXJzdC4gRm9yIGV4YW1wbGUsIGlNODgwLCBSRjEyNzZUUyBhbmQgMzIw MDEzNTMgYXJlIHB1cmUKPj4gTG9SYVdBTiBtb2R1bGVzIHdpdGhvdXQgcmF3IExvUmEgc3VwcG9y dC4gKFdoZXJlYXMgbWFueSBvdGhlcnMgc3VwcG9ydAo+PiBib3RoIGFuZCBJJ20gc3RpbGwgbG9v a2luZyBmb3IgaW5wdXQgb24gaG93IHRvIGJlc3QgZGVhbCB3aXRoIHRoYXQgLQo+PiBjdXJyZW50 bHkgZXhwb3NpbmcgdGhlbSBhcyBMb1JhIGRldmljZXMgZm9yIG1heGltYWwgZmxleGliaWxpdHku KQo+IAo+IFNvIHRoYXQgbWVhbnMgeW91IGlnbm9yZSBTb2Z0TUFDIGJlY2F1c2UgSGFyZE1BQyBp cyBlYXNpZXI/CgpObywgSSBkb24ndCBpZ25vcmUgaXQsIEknbSBtaXNzaW5nIGluZnJhc3RydWN0 dXJlIHRvIGV2YWx1YXRlIGl0IQoKQXMgSmlyaSBoYXMgcG9pbnRlZCBvdXQgZWFybGllciwgdGhp cyBzZXJpZXMgaXMgZG9pbmcgdHdvIHRoaW5ncywgMSkKaW50cm9kdWNlIExvUmFXQU4gc29ja2V0 cyAodGhhdCdzIGdyZWF0LCBuZWVkcyByZXZpZXcvZGlzY3Vzc2lvbikgYW5kIDIpCnByZXBhcmUg YSBzb2Z0LU1BQyBpbXBsZW1lbnRhdGlvbiB3aXRoIGEgbnVtYmVyIG9mIGZ1bmN0aW9ucyB0aGF0 IGFyZQpub3QgeWV0IGNhbGxlZCBmcm9tIGFueXdoZXJlLiBQbHVzIHRoZSBzZXJpZXMgb21pdHMg dG8gZXh0ZW5kIG15Cmxvd2VyLWxldmVsIG5ldGxpbmsgaW50ZXJmYWNlcyBhbmQgZHJpdmVyKHMp IHdpdGggdGhlIGZhY2lsaXRpZXMgaXQnbGwKbmVlZCB0byBhY3R1YWxseSB3b3JrLiBUaGUgZGVm YXVsdCBTeW5jIFdvcmQgb24gc3gxMjc2IGlzIDB4MTIsIGZvcgppbnN0YW5jZS4KCkJhc2ljYWxs eSBKaWFuLUhvbmcgYW5kIEkgYXJlIGF0IG9kZHMgaW4gd2hpY2ggZGlyZWN0aW9uIHRoZSBsYXll cnMKc2hvdWxkIHBsdWcgdG9nZXRoZXIsIHdpdGggbWUgdmVoZW1lbnRseSBhZ2FpbnN0IGNvZGlu ZyBMb1JhV0FOIHN0dWZmIGluCkxvUmEgZHJpdmVycyAobGF5ZXJpbmcgdmlvbGF0aW9uISkgYW5k IGluc3RlYWQgd2FudGluZyB0aGF0IGNlbnRyYWxseSBpbgphbiBvcHRpb25hbCBMb1JhV0FOIHNv ZnQtTUFDIG1vZHVsZSAoPW1hY2xvcmF3YW4pIG9uIHRvcC4gQ29tcGFyZSAyLzYKc3RpbGwgcmVh ZGluZyAiZHJpdmVyIHNob3VsZCBpbXBsZW1lbnQgc29tZSBvZiB0aGVtIGFjY29yZGluZyB0byB0 aGUKdXNhZ2UiIC0gZm9yIG1lIHRoYXQgc2hvdWxkIGJlIGEgY2ZnIHN0cnVjdCBhdCB0aGUgbmxs b3Jhd2FuIGxheWVyLAp3aGljaCBoZSBzaG91bGQgaW1wbGVtZW50IGluIG1hY2xvcmF3YW4gYW5k IEkgb25seSBmb3IgaGFyZC1NQUMgZHJpdmVycywKaW5zdGVhZCBvZiBleHBvcnRpbmcgYW4gQUJJ IHRoYXQncyBub3QgY2FsbGVkIGJ5IGFueW9uZSBhbmQgd291bGQKc2VlbWluZ2x5IG5lZWQgdG8g YmUgcmVpbXBsZW1lbnRlZCBpbiBlYWNoIGFuZCBldmVyeSBvZiBteSBMb1JhIGRyaXZlcnMhCk5v dGUgdGhhdCBkdXBsaWNhdGUgY29waWVzIGFuZCBmb3JrcyBvZiBMb1JhV0FOIHNvZnQtTUFDIHVz ZXJzcGFjZQppbXBsZW1lbnRhdGlvbnMgb24gR2l0SHViIHdlcmUgb25lIG9mIHRoZSByZWFzb25z IGZvciBtZSB0byBzdGFydCB0aGlzCmtlcm5lbCBwcm9qZWN0LCBzbyBJIHJlYWxseSwgcmVhbGx5 IGRvbid0IHdhbnQgdGhhdCBoZXJlLiBBbmQgNS82IG1haW4uYwphcHBlYXJzIHRvIHN0aWxsIGJl IGJhc2VkIGFyb3VuZCB0aGUgaWRlYSB0aGF0IGhlIGdldHMgaGlzIG93biBsb3JhWApuZXRkZXZz LCBzZWVtaW5nbHkgY29uZmxpY3RpbmcgYnkgbmFtZSB3aXRoIG1pbmUgaWYgdGhleSB3b3VsZCBh Y3R1YWxseQpnZXQgY3JlYXRlZCBieSB0aGUgZnVuY3Rpb25zIGdldHRpbmcgY2FsbGVkIGFueXdo ZXJlLi4uCgpNYXliZSB5b3UgY2FuIG5vdyBncmFzcCBteSBhbm5veWFuY2Ugd2l0aCB0aGlzIG5v bi1SRkMgdjUgbWFraW5nIG9ubHkKY29zbWV0aWMgY2hhbmdlcyBzaW5jZSB2Mj8gKGFuZCBjb21w bGV0ZWx5IGxhY2tpbmcgYW55IGNoYW5nZWxvZyBpbiAwLzYpCgo+IFdlIGFjdHVhbGx5Cj4gZ28g dGhlIG9wcG9zaXRlIHdheSB0byBzYXkgU29mdE1BQyBpbnRyb2R1Y2UgdGhlIG1vc3QgaW5mcmFz dHJ1Y3R1cmUgYW5kCj4gdGhlbiBzYXkgdGhhdCB3ZSB3aWxsIGJpbmQgSGFyZE1BQyB0byBpdC4K ClRoZSB2ZXJ5IGRlZmluaXRpb24gb2YgYSBoYXJkLU1BQyBpcyB0aGF0IGl0IGRvZXMgbm90IG5l ZWQgYSBzb2Z0LU1BQy4KClNvIHRoYXQgZG9lc24ndCBtYWtlIG11Y2ggc2Vuc2UgdG8gbWUuIFRo ZSBuZXRsaW5rIGludGVyZmFjZXMgZm9yIExvUmEKKGUuZy4sIEpvaW4gb3BlcmF0aW9ucyBmb3Ig YXV0aGVudGljYXRpb24pIHdpbGwgYmUgY29uc3RyYWluZWQgYnkgd2hhdApvcHMgdGhlIGhhcmQt TUFDcyBuZWVkLCB3aGVyZWFzIHdlIGhhdmUgbXVjaCBtb3JlIGZyZWVkb21zIHdpdGggb3VyIG93 bgpzb2Z0LU1BQy4gTG9SYVdBTiBwcm92aWRlcyBhIG1ldGEgc2V0IG9mIG9wZXJhdGlvbnMgY29t cGFyZWQgdG8gTG9SYStGU0sKKGUuZy4sIHNldHRpbmcgdGhlIGRhdGEgcmF0ZSBvbiBNQUMgbGF5 ZXIgd291bGQgaW52b2x2ZSByZWdpb25hbAphd2FyZW5lc3MgYW5kIHRyYW5zbGF0ZXMgdG8gc2V0 dGluZyBmcmVxdWVuY3krYmFuZHdpZHRoK1NGIG9uIFBIWSBsYXllciwKYW5kIGEgTG9SYSB0cmFu c21pc3Npb24vcmVjZXB0aW9uIHdpbGwgbmVlZCB0byBzZXQgYSBTeW5jIFdvcmQgb2YgMHgzNCk7 CnRoZXJlZm9yZSBteSBzYXlpbmcgdGhhdCBmb3IgdGhlIHNvZnQtTUFDIHdlIG5lZWQgaW50ZXJm YWNlcyBhbmQKaW1wbGVtZW50YXRpb25zIG9uIG15IExvUmEgUEhZIGxheWVyIHRoYXQgYXJlIHN0 aWxsIGluY29tcGxldGUgdG9kYXkuCgpPbmNlIHRoZSBQSFkgbGF5ZXIgaXMgd29ya2luZywgdGhl IHNvZnQtTUFDIHdvdWxkIGp1c3QgbmVlZCB0byBwcm9wZXJseQpkaXNwYXRjaCAtIGFuZCBpZGVh bGx5IEkgd291bGQgaGF2ZSBpdCBwcm92aWRlIHBhY2tldHMgaW4gYW4gRVRIX1BfTE9SQQpmb3Jt YXQsIHNvIHRoYXQgSSBkb24ndCBuZWVkIGR1cGxpY2F0ZSAoRVRIX1BfTE9SQSArIEVUSF9QX0xP UkFXQU4pCmltcGxlbWVudGF0aW9ucyBpbiBlYWNoIHNvZnQtTUFDIGNhcGFibGUgTG9SYSBkcml2 ZXIuIFRodXMsIGlmIHRoZSBQSFkKZG9lc24ndCB0cmFuc21pdCAoeWV0KSwgTG9SYVdBTiBjYW4n dCBzZW5kIGVpdGhlci4KCkFuZCB0aGF0IGJyaW5ncyB1cyBiYWNrIHRvIHRoZSBiaWcgcXVlc3Rp b24gY2lyY2xpbmcgc2luY2UgbW9udGhzIG9mIGhvdwp0byBkZXNpZ24gdGhlc2Ugc29ja2V0IGxh eWVyczogQ3VycmVudGx5IEknbSB1c2luZyBhIFBGX0xPUkEgYW5kIHdhcwpob3BpbmcgdG8gZXh0 ZW5kIGl0cyBzb2NrX2FkZHIgdG8gY29wZSB3aXRoIHRoZSBTeW5jIFdvcmQsIGZyZXF1ZW5jeSwK ZXRjLiBhbmQgc2V0IHRoYXQgdmlhIHNrYiBmb3IgZWFjaCBUWCAod2hpY2ggcmFpc2VkIHByb2Js ZW1zIGZvciBSWCkuIEF0CkVMQ0UgMjAxOCBpdCB3YXMgc3VnZ2VzdGVkIHRoYXQgd2Ugc2hvdWxk IHJhdGhlciB0YWtlIHRoZSBlYXN5IHJvdXRlIG9mCm5vdCBkZWZpbmluZyBhIFBGX0xPUkEgYW5k IGp1c3QgdXNlIFBGX1BBQ0tFVCB3aXRoIGh0b25zKEVUSF9QX0xPUkEpIGFuZAphcHBseSBldmVy eSBnbG9iYWwgc2V0dGluZyB2aWEgbmV0bGluazsgdGhhdCBob3dldmVyIGFwcGVhcnMgdG8gb2Jz b2xldGUKbXkgbG9yYS9kZ3JhbS5jIGNvZGUgZGVhbGluZyB3aXRoIHByaXZhdGUgaWZpbmRleCBm aWVsZCB0aGVuLCBzbyB0aGF0IHdlCmNvdWxkIG5vIGxvbmdlciBwYXNzIGFueSBMb1JhLXNwZWNp ZmljIHBlci1wYWNrZXQgbWV0YWRhdGEgZnJvbSBMb1JhV0FOCmxheWVyIGRvd24gdG8gTG9SYSBl aXRoZXIuIEFuZCBzaW5jZSBJJ20gdW5mYW1pbGlhciB3aXRoIFBGX1BBQ0tFVCwgSSdtCmZvY3Vz aW5nIG9uIG1ha2luZyB0aGUgYmFzaWNzIHdvcmsgZmlyc3QgYmVmb3JlIGRpdmluZyBpbnRvIHJl ZmFjdG9yaW5ncwp0aGF0IGdpdmUgdXMgbm8gZnVuY3Rpb25hbCBiZW5lZml0cy4KCkFueXdheSwg SSBhc3N1bWUgd2UnbGwgbmVlZCB0byB0cmFuc2xhdGUgZnJvbSBMb1JhV0FOIHRvIExvUmEgc2ti cwpzb21ld2hlcmUgaW4gdGhpcyBwYXRjaCBzZXJpZXMgdG8gYWRkIHRoZSBuZWNlc3NhcnkgTG9S YVdBTiBoZWFkZXJzIGZvcgpTT0NLX0RHUkFNIG9yIFNPQ0tfU0VRUEFDS0VUIHBhY2tldHMgLSBp dCdzIG5laXRoZXIgaW4gMS82IG5vciBpbiA1LzYuCkFkZGl0aW9uYWxseSwgb3BlcmF0aW9ucyBz dWNoIGFzIEpvaW4gdGhhdCB0aGUgdXNlciB3b3VsZCByZXF1ZXN0IHZpYQpuZXRsaW5rIGNvbW1h bmQgd2lsbCBuZWVkIHRvIGNyZWF0ZSBMb1JhIHNrYnMgaW4gdGhlIHNvZnQtTUFDIGRpcmVjdGx5 LgpTbyBpbiB0aGF0IHdheSBMb1JhV0FOIG1heSBiZSBjb21wYXJhYmxlIHRvIFdpZmkgY29ubmVj dGluZyB0byBhbiBBUCwKd2hlcmVhcyBMb1JhIGlzIG1vcmUgbGlrZSBzaG92ZWxpbmcgcGFja2V0 cyBpbnRvL291dCBhbiBFdGhlcm5ldCBjYWJsZS4KCkhvcGUgdGhhdCBleHBsYWlucyBiZXR0ZXIg ZnJvbSBteSBzaWRlIGFzIHdlbGwuCk1vc3Qgb2YgaXQgaGFkIGJlZW4gYnJvdWdodCB1cCBpbiBy ZXBsaWVzIHRvIHRoZSBjb3ZlciBsZXR0ZXIgb2YgbXkKb3JpZ2luYWwgUkZDIG9uIG5ldGRldiBs aXN0OiBodHRwczovL3BhdGNod29yay5vemxhYnMub3JnL2NvdmVyLzkzNzU0NS8KClJlZ2FyZHMs CkFuZHJlYXMKCi0tIApTVVNFIExpbnV4IEdtYkgsIE1heGZlbGRzdHIuIDUsIDkwNDA5IE7DvHJu YmVyZywgR2VybWFueQpHRjogRmVsaXggSW1lbmTDtnJmZmVyLCBKYW5lIFNtaXRoYXJkLCBHcmFo YW0gTm9ydG9uCkhSQiAyMTI4NCAoQUcgTsO8cm5iZXJnKQoKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QK bGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRl YWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo=