From mboxrd@z Thu Jan 1 00:00:00 1970 Received: with ECARTIS (v1.0.0; list linux-mips); Thu, 06 Sep 2018 22:15:13 +0200 (CEST) Received: from mail.bootlin.com ([62.4.15.54]:59044 "EHLO mail.bootlin.com" rhost-flags-OK-OK-OK-OK) by eddie.linux-mips.org with ESMTP id S23994641AbeIFUPKdXTmK convert rfc822-to-8bit (ORCPT ); Thu, 6 Sep 2018 22:15:10 +0200 Received: by mail.bootlin.com (Postfix, from userid 110) id F291B20756; Thu, 6 Sep 2018 22:15:04 +0200 (CEST) Received: from xps13 (unknown [91.224.148.103]) by mail.bootlin.com (Postfix) with ESMTPSA id 54267206EE; Thu, 6 Sep 2018 22:15:02 +0200 (CEST) Date: Thu, 6 Sep 2018 22:15:00 +0200 From: Miquel Raynal To: Boris Brezillon Cc: Richard Weinberger , linux-mtd@lists.infradead.org, David Woodhouse , Brian Norris , Marek Vasut , Jonathan Corbet , linux-doc@vger.kernel.org, Hartley Sweeten , Alexander Sverdlin , Lukasz Majewski , Shawn Guo , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , NXP Linux Team , Imre Kaloz , Krzysztof Halasa , Aaro Koskinen , Tony Lindgren , Alexander Clouter , Jason Cooper , Andrew Lunn , Sebastian Hesselbarth , Gregory Clement , Daniel Mack , Haojian Zhuang , Robert Jarzmik , Ralf Baechle , linux-mips@linux-mips.org, Yoshinori Sato , Rich Felker , linux-sh@vger.kernel.org, Nicolas Ferre , Alexandre Belloni , Kamal Dasu , Masahiro Yamada , Han Xu , Harvey Hunt , Vladimir Zapolskiy , Sylvain Lemieux , Xiaolei Li , Matthias Brugger , linux-mediatek@lists.infradead.org, Wan ZongShun , Neil Armstrong , Maxim Levitsky , Maxime Ripard , Chen-Yu Tsai , Marc Gonzalez , Mans Rullgard , Stefan Agner , linux-arm-kernel@lists.infradead.org, linux-omap@vger.kernel.org, Greg Kroah-Hartman , devel@driverdev.osuosl.org Subject: Re: [PATCH v2 00/23] mtd: rawnand: Stop passing mtd_info to drivers Message-ID: <20180906221500.740fa928@xps13> In-Reply-To: <20180906120535.21255-1-boris.brezillon@bootlin.com> References: <20180906120535.21255-1-boris.brezillon@bootlin.com> Organization: Bootlin X-Mailer: Claws Mail 3.16.0 (GTK+ 2.24.32; x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8BIT Return-Path: X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0) X-Orcpt: rfc822;linux-mips@linux-mips.org Original-Recipient: rfc822;linux-mips@linux-mips.org X-archive-position: 66075 X-ecartis-version: Ecartis v1.0.0 Sender: linux-mips-bounce@linux-mips.org Errors-to: linux-mips-bounce@linux-mips.org X-original-sender: miquel.raynal@bootlin.com Precedence: bulk List-help: List-unsubscribe: List-software: Ecartis version 1.0.0 List-Id: linux-mips X-List-ID: linux-mips List-subscribe: List-owner: List-post: List-archive: X-list: linux-mips Hi Boris, Boris Brezillon wrote on Thu, 6 Sep 2018 14:05:12 +0200: > Hello, > > This is the first set of patches aiming at cleaning the raw NAND API. > > This one focuses on inconsistencies we have in the API + the nand_chip > and nand_ecc_ctrl interfaces. Some functions/hooks are passed a > nand_chip object, some are passed an mtd_info object and some are > passed both. > > Since mtd_info can be extracted from nand_chip, we can simply always > pass a nand_chip and make things consistent. Hopefully with these > changes merged we'll stop seeing new drivers reproducing the same > mistake (passing both mtd_info and nand_chip or using mtd_info where > nand_chip is more appropriate). > > For those who want to see what's in the pipe, here is a branch [1] > containing all the cleanups I plan to merge. > > Not much has changed in this v2. I just rebased on top of nand/next, > fixed typos, added A-b/R-b tags, and that's all. > > Regards, > > Boris > > [1]https://github.com/bbrezillon/linux-0day/commits/nand/api-cleanup > > Boris Brezillon (23): > mtd: rawnand: plat_nand: Pass a nand_chip object to all > platform_nand_ctrl hooks > mtd: rawnand: Pass a nand_chip object to nand_scan() > mtd: rawnand: Pass a nand_chip object to nand_release() > mtd: rawnand: Pass a nand_chip object to nand_wait_ready() > mtd: rawnand: Pass a nand_chip object to ecc->hwctl() > mtd: rawnand: Pass a nand_chip object to ecc->calculate() > mtd: rawnand: Pass a nand_chip object to ecc->correct() > mtd: rawnand: Pass a nand_chip object to ecc->read_xxx() hooks > mtd: rawnand: Pass a nand_chip object to ecc->write_xxx() hooks > mtd: rawnand: Pass a nand_chip object to chip->read_xxx() hooks > mtd: rawnand: Pass a nand_chip object to chip->write_xxx() hooks > mtd: rawnand: Pass a nand_chip object to chip->select_chip() > mtd: rawnand: Pass a nand_chip object to chip->block_xxx() hooks > mtd: rawnand: Pass a nand_chip object to chip->cmd_ctrl() > mtd: rawnand: Pass a nand_chip object to chip->dev_ready() > mtd: rawnand: Pass a nand_chip object to chip->cmdfunc() > mtd: rawnand: Pass a nand_chip object to chip->waitfunc() > mtd: rawnand: Pass a nand_chip object to chip->erase() > mtd: rawnand: Pass a nand_chip object to chip->{get,set}_features() > mtd: rawnand: Pass a nand_chip object to chip->setup_read_retry() > mtd: rawnand: Pass a nand_chip object to chip->setup_data_interface() > mtd: rawnand: Pass a nand_chip object to all nand_xxx_bbt() helpers > mtd: rawnand: Pass a nand_chip object nand_erase_nand() > > Documentation/driver-api/mtdnand.rst | 4 +- > arch/arm/mach-ep93xx/snappercl15.c | 7 +- > arch/arm/mach-ep93xx/ts72xx.c | 7 +- > arch/arm/mach-imx/mach-qong.c | 11 +- > arch/arm/mach-ixp4xx/ixdp425-setup.c | 3 +- > arch/arm/mach-omap1/board-fsample.c | 2 +- > arch/arm/mach-omap1/board-h2.c | 2 +- > arch/arm/mach-omap1/board-h3.c | 2 +- > arch/arm/mach-omap1/board-nand.c | 3 +- > arch/arm/mach-omap1/board-perseus2.c | 2 +- > arch/arm/mach-omap1/common.h | 2 +- > arch/arm/mach-orion5x/ts78xx-setup.c | 18 +- > arch/arm/mach-pxa/balloon3.c | 8 +- > arch/arm/mach-pxa/em-x270.c | 5 +- > arch/arm/mach-pxa/palmtx.c | 5 +- > arch/mips/alchemy/devboards/db1200.c | 5 +- > arch/mips/alchemy/devboards/db1300.c | 5 +- > arch/mips/alchemy/devboards/db1550.c | 5 +- > arch/mips/netlogic/xlr/platform-flash.c | 4 +- > arch/mips/pnx833x/common/platform.c | 3 +- > arch/mips/rb532/devices.c | 5 +- > arch/sh/boards/mach-migor/setup.c | 6 +- > drivers/mtd/nand/raw/ams-delta.c | 24 +- > drivers/mtd/nand/raw/atmel/nand-controller.c | 74 ++- > drivers/mtd/nand/raw/au1550nd.c | 70 ++- > drivers/mtd/nand/raw/bcm47xxnflash/main.c | 2 +- > drivers/mtd/nand/raw/bcm47xxnflash/ops_bcm4706.c | 38 +- > drivers/mtd/nand/raw/brcmnand/brcmnand.c | 78 +-- > drivers/mtd/nand/raw/cafe_nand.c | 56 +-- > drivers/mtd/nand/raw/cmx270_nand.c | 20 +- > drivers/mtd/nand/raw/cs553x_nand.c | 33 +- > drivers/mtd/nand/raw/davinci_nand.c | 59 +-- > drivers/mtd/nand/raw/denali.c | 87 ++-- > drivers/mtd/nand/raw/diskonchip.c | 116 ++--- > drivers/mtd/nand/raw/docg4.c | 83 ++-- > drivers/mtd/nand/raw/fsl_elbc_nand.c | 52 +- > drivers/mtd/nand/raw/fsl_ifc_nand.c | 46 +- > drivers/mtd/nand/raw/fsl_upm.c | 34 +- > drivers/mtd/nand/raw/fsmc_nand.c | 42 +- > drivers/mtd/nand/raw/gpio.c | 13 +- > drivers/mtd/nand/raw/gpmi-nand/gpmi-lib.c | 3 +- > drivers/mtd/nand/raw/gpmi-nand/gpmi-nand.c | 99 ++-- > drivers/mtd/nand/raw/gpmi-nand/gpmi-nand.h | 2 +- > drivers/mtd/nand/raw/hisi504_nand.c | 44 +- > drivers/mtd/nand/raw/jz4740_nand.c | 39 +- > drivers/mtd/nand/raw/jz4780_nand.c | 30 +- > drivers/mtd/nand/raw/lpc32xx_mlc.c | 47 +- > drivers/mtd/nand/raw/lpc32xx_slc.c | 67 ++- > drivers/mtd/nand/raw/marvell_nand.c | 74 ++- > drivers/mtd/nand/raw/mpc5121_nfc.c | 40 +- > drivers/mtd/nand/raw/mtk_nand.c | 81 ++- > drivers/mtd/nand/raw/mxc_nand.c | 85 ++-- > drivers/mtd/nand/raw/nand_base.c | 606 ++++++++++------------- > drivers/mtd/nand/raw/nand_bbt.c | 21 +- > drivers/mtd/nand/raw/nand_bch.c | 10 +- > drivers/mtd/nand/raw/nand_ecc.c | 14 +- > drivers/mtd/nand/raw/nand_hynix.c | 12 +- > drivers/mtd/nand/raw/nand_micron.c | 16 +- > drivers/mtd/nand/raw/nand_toshiba.c | 10 +- > drivers/mtd/nand/raw/nandsim.c | 28 +- > drivers/mtd/nand/raw/ndfc.c | 25 +- > drivers/mtd/nand/raw/nuc900_nand.c | 27 +- > drivers/mtd/nand/raw/omap2.c | 148 +++--- > drivers/mtd/nand/raw/orion_nand.c | 14 +- > drivers/mtd/nand/raw/oxnas_nand.c | 19 +- > drivers/mtd/nand/raw/pasemi_nand.c | 19 +- > drivers/mtd/nand/raw/plat_nand.c | 6 +- > drivers/mtd/nand/raw/qcom_nandc.c | 52 +- > drivers/mtd/nand/raw/r852.c | 54 +- > drivers/mtd/nand/raw/s3c2410.c | 72 +-- > drivers/mtd/nand/raw/sh_flctl.c | 40 +- > drivers/mtd/nand/raw/sharpsl.c | 24 +- > drivers/mtd/nand/raw/sm_common.c | 5 +- > drivers/mtd/nand/raw/socrates_nand.c | 32 +- > drivers/mtd/nand/raw/sunxi_nand.c | 82 ++- > drivers/mtd/nand/raw/tango_nand.c | 67 ++- > drivers/mtd/nand/raw/tegra_nand.c | 36 +- > drivers/mtd/nand/raw/tmio_nand.c | 53 +- > drivers/mtd/nand/raw/txx9ndfmc.c | 38 +- > drivers/mtd/nand/raw/vf610_nfc.c | 43 +- > drivers/mtd/nand/raw/xway_nand.c | 27 +- > drivers/staging/mt29f_spinand/mt29f_spinand.c | 33 +- > include/linux/mtd/nand_bch.h | 11 +- > include/linux/mtd/nand_ecc.h | 8 +- > include/linux/mtd/rawnand.h | 142 +++--- > 85 files changed, 1617 insertions(+), 1829 deletions(-) > Series applied to nand/next. Thanks, Miquèl From mboxrd@z Thu Jan 1 00:00:00 1970 From: Miquel Raynal Subject: Re: [PATCH v2 00/23] mtd: rawnand: Stop passing mtd_info to drivers Date: Thu, 6 Sep 2018 22:15:00 +0200 Message-ID: <20180906221500.740fa928@xps13> References: <20180906120535.21255-1-boris.brezillon@bootlin.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180906120535.21255-1-boris.brezillon@bootlin.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: driverdev-devel-bounces@linuxdriverproject.org Sender: "devel" To: Boris Brezillon Cc: Andrew Lunn , Alexandre Belloni , Rich Felker , linux-doc@vger.kernel.org, Tony Lindgren , linux-mips@linux-mips.org, Stefan Agner , Masahiro Yamada , Mans Rullgard , linux-mtd@lists.infradead.org, Robert Jarzmik , Jason Cooper , devel@driverdev.osuosl.org, Maxime Ripard , Maxim Levitsky , Yoshinori Sato , Aaro Koskinen , Richard Weinberger , Gregory Clement , linux-sh@vger.kernel.org, Lukasz Majewski , Neil Armstrong , Marek Vasut , Chen-Yu Tsai , NXP List-Id: linux-mediatek@lists.infradead.org SGkgQm9yaXMsCgpCb3JpcyBCcmV6aWxsb24gPGJvcmlzLmJyZXppbGxvbkBib290bGluLmNvbT4g d3JvdGUgb24gVGh1LCAgNiBTZXAgMjAxOAoxNDowNToxMiArMDIwMDoKCj4gSGVsbG8sCj4gCj4g VGhpcyBpcyB0aGUgZmlyc3Qgc2V0IG9mIHBhdGNoZXMgYWltaW5nIGF0IGNsZWFuaW5nIHRoZSBy YXcgTkFORCBBUEkuCj4gCj4gVGhpcyBvbmUgZm9jdXNlcyBvbiBpbmNvbnNpc3RlbmNpZXMgd2Ug aGF2ZSBpbiB0aGUgQVBJICsgdGhlIG5hbmRfY2hpcAo+IGFuZCBuYW5kX2VjY19jdHJsIGludGVy ZmFjZXMuIFNvbWUgZnVuY3Rpb25zL2hvb2tzIGFyZSBwYXNzZWQgYQo+IG5hbmRfY2hpcCBvYmpl Y3QsIHNvbWUgYXJlIHBhc3NlZCBhbiBtdGRfaW5mbyBvYmplY3QgYW5kIHNvbWUgYXJlCj4gcGFz c2VkIGJvdGguCj4gCj4gU2luY2UgbXRkX2luZm8gY2FuIGJlIGV4dHJhY3RlZCBmcm9tIG5hbmRf Y2hpcCwgd2UgY2FuIHNpbXBseSBhbHdheXMKPiBwYXNzIGEgbmFuZF9jaGlwIGFuZCBtYWtlIHRo aW5ncyBjb25zaXN0ZW50LiBIb3BlZnVsbHkgd2l0aCB0aGVzZQo+IGNoYW5nZXMgbWVyZ2VkIHdl J2xsIHN0b3Agc2VlaW5nIG5ldyBkcml2ZXJzIHJlcHJvZHVjaW5nIHRoZSBzYW1lCj4gbWlzdGFr ZSAocGFzc2luZyBib3RoIG10ZF9pbmZvIGFuZCBuYW5kX2NoaXAgb3IgdXNpbmcgbXRkX2luZm8g d2hlcmUKPiBuYW5kX2NoaXAgaXMgbW9yZSBhcHByb3ByaWF0ZSkuCj4gCj4gRm9yIHRob3NlIHdo byB3YW50IHRvIHNlZSB3aGF0J3MgaW4gdGhlIHBpcGUsIGhlcmUgaXMgYSBicmFuY2ggWzFdCj4g Y29udGFpbmluZyBhbGwgdGhlIGNsZWFudXBzIEkgcGxhbiB0byBtZXJnZS4KPiAKPiBOb3QgbXVj aCBoYXMgY2hhbmdlZCBpbiB0aGlzIHYyLiBJIGp1c3QgcmViYXNlZCBvbiB0b3Agb2YgbmFuZC9u ZXh0LAo+IGZpeGVkIHR5cG9zLCBhZGRlZCBBLWIvUi1iIHRhZ3MsIGFuZCB0aGF0J3MgYWxsLgo+ IAo+IFJlZ2FyZHMsCj4gCj4gQm9yaXMKPiAKPiBbMV1odHRwczovL2dpdGh1Yi5jb20vYmJyZXpp bGxvbi9saW51eC0wZGF5L2NvbW1pdHMvbmFuZC9hcGktY2xlYW51cAo+IAo+IEJvcmlzIEJyZXpp bGxvbiAoMjMpOgo+ICAgbXRkOiByYXduYW5kOiBwbGF0X25hbmQ6IFBhc3MgYSBuYW5kX2NoaXAg b2JqZWN0IHRvIGFsbAo+ICAgICBwbGF0Zm9ybV9uYW5kX2N0cmwgaG9va3MKPiAgIG10ZDogcmF3 bmFuZDogUGFzcyBhIG5hbmRfY2hpcCBvYmplY3QgdG8gbmFuZF9zY2FuKCkKPiAgIG10ZDogcmF3 bmFuZDogUGFzcyBhIG5hbmRfY2hpcCBvYmplY3QgdG8gbmFuZF9yZWxlYXNlKCkKPiAgIG10ZDog cmF3bmFuZDogUGFzcyBhIG5hbmRfY2hpcCBvYmplY3QgdG8gbmFuZF93YWl0X3JlYWR5KCkKPiAg IG10ZDogcmF3bmFuZDogUGFzcyBhIG5hbmRfY2hpcCBvYmplY3QgdG8gZWNjLT5od2N0bCgpCj4g ICBtdGQ6IHJhd25hbmQ6IFBhc3MgYSBuYW5kX2NoaXAgb2JqZWN0IHRvIGVjYy0+Y2FsY3VsYXRl KCkKPiAgIG10ZDogcmF3bmFuZDogUGFzcyBhIG5hbmRfY2hpcCBvYmplY3QgdG8gZWNjLT5jb3Jy ZWN0KCkKPiAgIG10ZDogcmF3bmFuZDogUGFzcyBhIG5hbmRfY2hpcCBvYmplY3QgdG8gZWNjLT5y ZWFkX3h4eCgpIGhvb2tzCj4gICBtdGQ6IHJhd25hbmQ6IFBhc3MgYSBuYW5kX2NoaXAgb2JqZWN0 IHRvIGVjYy0+d3JpdGVfeHh4KCkgaG9va3MKPiAgIG10ZDogcmF3bmFuZDogUGFzcyBhIG5hbmRf Y2hpcCBvYmplY3QgdG8gY2hpcC0+cmVhZF94eHgoKSBob29rcwo+ICAgbXRkOiByYXduYW5kOiBQ YXNzIGEgbmFuZF9jaGlwIG9iamVjdCB0byBjaGlwLT53cml0ZV94eHgoKSBob29rcwo+ICAgbXRk OiByYXduYW5kOiBQYXNzIGEgbmFuZF9jaGlwIG9iamVjdCB0byBjaGlwLT5zZWxlY3RfY2hpcCgp Cj4gICBtdGQ6IHJhd25hbmQ6IFBhc3MgYSBuYW5kX2NoaXAgb2JqZWN0IHRvIGNoaXAtPmJsb2Nr X3h4eCgpIGhvb2tzCj4gICBtdGQ6IHJhd25hbmQ6IFBhc3MgYSBuYW5kX2NoaXAgb2JqZWN0IHRv IGNoaXAtPmNtZF9jdHJsKCkKPiAgIG10ZDogcmF3bmFuZDogUGFzcyBhIG5hbmRfY2hpcCBvYmpl Y3QgdG8gY2hpcC0+ZGV2X3JlYWR5KCkKPiAgIG10ZDogcmF3bmFuZDogUGFzcyBhIG5hbmRfY2hp cCBvYmplY3QgdG8gY2hpcC0+Y21kZnVuYygpCj4gICBtdGQ6IHJhd25hbmQ6IFBhc3MgYSBuYW5k X2NoaXAgb2JqZWN0IHRvIGNoaXAtPndhaXRmdW5jKCkKPiAgIG10ZDogcmF3bmFuZDogUGFzcyBh IG5hbmRfY2hpcCBvYmplY3QgdG8gY2hpcC0+ZXJhc2UoKQo+ICAgbXRkOiByYXduYW5kOiBQYXNz IGEgbmFuZF9jaGlwIG9iamVjdCB0byBjaGlwLT57Z2V0LHNldH1fZmVhdHVyZXMoKQo+ICAgbXRk OiByYXduYW5kOiBQYXNzIGEgbmFuZF9jaGlwIG9iamVjdCB0byBjaGlwLT5zZXR1cF9yZWFkX3Jl dHJ5KCkKPiAgIG10ZDogcmF3bmFuZDogUGFzcyBhIG5hbmRfY2hpcCBvYmplY3QgdG8gY2hpcC0+ c2V0dXBfZGF0YV9pbnRlcmZhY2UoKQo+ICAgbXRkOiByYXduYW5kOiBQYXNzIGEgbmFuZF9jaGlw IG9iamVjdCB0byBhbGwgbmFuZF94eHhfYmJ0KCkgaGVscGVycwo+ICAgbXRkOiByYXduYW5kOiBQ YXNzIGEgbmFuZF9jaGlwIG9iamVjdCBuYW5kX2VyYXNlX25hbmQoKQo+IAo+ICBEb2N1bWVudGF0 aW9uL2RyaXZlci1hcGkvbXRkbmFuZC5yc3QgICAgICAgICAgICAgfCAgIDQgKy0KPiAgYXJjaC9h cm0vbWFjaC1lcDkzeHgvc25hcHBlcmNsMTUuYyAgICAgICAgICAgICAgIHwgICA3ICstCj4gIGFy Y2gvYXJtL21hY2gtZXA5M3h4L3RzNzJ4eC5jICAgICAgICAgICAgICAgICAgICB8ICAgNyArLQo+ ICBhcmNoL2FybS9tYWNoLWlteC9tYWNoLXFvbmcuYyAgICAgICAgICAgICAgICAgICAgfCAgMTEg Ky0KPiAgYXJjaC9hcm0vbWFjaC1peHA0eHgvaXhkcDQyNS1zZXR1cC5jICAgICAgICAgICAgIHwg ICAzICstCj4gIGFyY2gvYXJtL21hY2gtb21hcDEvYm9hcmQtZnNhbXBsZS5jICAgICAgICAgICAg ICB8ICAgMiArLQo+ICBhcmNoL2FybS9tYWNoLW9tYXAxL2JvYXJkLWgyLmMgICAgICAgICAgICAg ICAgICAgfCAgIDIgKy0KPiAgYXJjaC9hcm0vbWFjaC1vbWFwMS9ib2FyZC1oMy5jICAgICAgICAg ICAgICAgICAgIHwgICAyICstCj4gIGFyY2gvYXJtL21hY2gtb21hcDEvYm9hcmQtbmFuZC5jICAg ICAgICAgICAgICAgICB8ICAgMyArLQo+ICBhcmNoL2FybS9tYWNoLW9tYXAxL2JvYXJkLXBlcnNl dXMyLmMgICAgICAgICAgICAgfCAgIDIgKy0KPiAgYXJjaC9hcm0vbWFjaC1vbWFwMS9jb21tb24u aCAgICAgICAgICAgICAgICAgICAgIHwgICAyICstCj4gIGFyY2gvYXJtL21hY2gtb3Jpb241eC90 czc4eHgtc2V0dXAuYyAgICAgICAgICAgICB8ICAxOCArLQo+ICBhcmNoL2FybS9tYWNoLXB4YS9i YWxsb29uMy5jICAgICAgICAgICAgICAgICAgICAgfCAgIDggKy0KPiAgYXJjaC9hcm0vbWFjaC1w eGEvZW0teDI3MC5jICAgICAgICAgICAgICAgICAgICAgIHwgICA1ICstCj4gIGFyY2gvYXJtL21h Y2gtcHhhL3BhbG10eC5jICAgICAgICAgICAgICAgICAgICAgICB8ICAgNSArLQo+ICBhcmNoL21p cHMvYWxjaGVteS9kZXZib2FyZHMvZGIxMjAwLmMgICAgICAgICAgICAgfCAgIDUgKy0KPiAgYXJj aC9taXBzL2FsY2hlbXkvZGV2Ym9hcmRzL2RiMTMwMC5jICAgICAgICAgICAgIHwgICA1ICstCj4g IGFyY2gvbWlwcy9hbGNoZW15L2RldmJvYXJkcy9kYjE1NTAuYyAgICAgICAgICAgICB8ICAgNSAr LQo+ICBhcmNoL21pcHMvbmV0bG9naWMveGxyL3BsYXRmb3JtLWZsYXNoLmMgICAgICAgICAgfCAg IDQgKy0KPiAgYXJjaC9taXBzL3BueDgzM3gvY29tbW9uL3BsYXRmb3JtLmMgICAgICAgICAgICAg IHwgICAzICstCj4gIGFyY2gvbWlwcy9yYjUzMi9kZXZpY2VzLmMgICAgICAgICAgICAgICAgICAg ICAgICB8ICAgNSArLQo+ICBhcmNoL3NoL2JvYXJkcy9tYWNoLW1pZ29yL3NldHVwLmMgICAgICAg ICAgICAgICAgfCAgIDYgKy0KPiAgZHJpdmVycy9tdGQvbmFuZC9yYXcvYW1zLWRlbHRhLmMgICAg ICAgICAgICAgICAgIHwgIDI0ICstCj4gIGRyaXZlcnMvbXRkL25hbmQvcmF3L2F0bWVsL25hbmQt Y29udHJvbGxlci5jICAgICB8ICA3NCArKy0KPiAgZHJpdmVycy9tdGQvbmFuZC9yYXcvYXUxNTUw bmQuYyAgICAgICAgICAgICAgICAgIHwgIDcwICsrLQo+ICBkcml2ZXJzL210ZC9uYW5kL3Jhdy9i Y200N3h4bmZsYXNoL21haW4uYyAgICAgICAgfCAgIDIgKy0KPiAgZHJpdmVycy9tdGQvbmFuZC9y YXcvYmNtNDd4eG5mbGFzaC9vcHNfYmNtNDcwNi5jIHwgIDM4ICstCj4gIGRyaXZlcnMvbXRkL25h bmQvcmF3L2JyY21uYW5kL2JyY21uYW5kLmMgICAgICAgICB8ICA3OCArLS0KPiAgZHJpdmVycy9t dGQvbmFuZC9yYXcvY2FmZV9uYW5kLmMgICAgICAgICAgICAgICAgIHwgIDU2ICstLQo+ICBkcml2 ZXJzL210ZC9uYW5kL3Jhdy9jbXgyNzBfbmFuZC5jICAgICAgICAgICAgICAgfCAgMjAgKy0KPiAg ZHJpdmVycy9tdGQvbmFuZC9yYXcvY3M1NTN4X25hbmQuYyAgICAgICAgICAgICAgIHwgIDMzICst Cj4gIGRyaXZlcnMvbXRkL25hbmQvcmF3L2RhdmluY2lfbmFuZC5jICAgICAgICAgICAgICB8ICA1 OSArLS0KPiAgZHJpdmVycy9tdGQvbmFuZC9yYXcvZGVuYWxpLmMgICAgICAgICAgICAgICAgICAg IHwgIDg3ICsrLS0KPiAgZHJpdmVycy9tdGQvbmFuZC9yYXcvZGlza29uY2hpcC5jICAgICAgICAg ICAgICAgIHwgMTE2ICsrLS0tCj4gIGRyaXZlcnMvbXRkL25hbmQvcmF3L2RvY2c0LmMgICAgICAg ICAgICAgICAgICAgICB8ICA4MyArKy0tCj4gIGRyaXZlcnMvbXRkL25hbmQvcmF3L2ZzbF9lbGJj X25hbmQuYyAgICAgICAgICAgICB8ICA1MiArLQo+ICBkcml2ZXJzL210ZC9uYW5kL3Jhdy9mc2xf aWZjX25hbmQuYyAgICAgICAgICAgICAgfCAgNDYgKy0KPiAgZHJpdmVycy9tdGQvbmFuZC9yYXcv ZnNsX3VwbS5jICAgICAgICAgICAgICAgICAgIHwgIDM0ICstCj4gIGRyaXZlcnMvbXRkL25hbmQv cmF3L2ZzbWNfbmFuZC5jICAgICAgICAgICAgICAgICB8ICA0MiArLQo+ICBkcml2ZXJzL210ZC9u YW5kL3Jhdy9ncGlvLmMgICAgICAgICAgICAgICAgICAgICAgfCAgMTMgKy0KPiAgZHJpdmVycy9t dGQvbmFuZC9yYXcvZ3BtaS1uYW5kL2dwbWktbGliLmMgICAgICAgIHwgICAzICstCj4gIGRyaXZl cnMvbXRkL25hbmQvcmF3L2dwbWktbmFuZC9ncG1pLW5hbmQuYyAgICAgICB8ICA5OSArKy0tCj4g IGRyaXZlcnMvbXRkL25hbmQvcmF3L2dwbWktbmFuZC9ncG1pLW5hbmQuaCAgICAgICB8ICAgMiAr LQo+ICBkcml2ZXJzL210ZC9uYW5kL3Jhdy9oaXNpNTA0X25hbmQuYyAgICAgICAgICAgICAgfCAg NDQgKy0KPiAgZHJpdmVycy9tdGQvbmFuZC9yYXcvano0NzQwX25hbmQuYyAgICAgICAgICAgICAg IHwgIDM5ICstCj4gIGRyaXZlcnMvbXRkL25hbmQvcmF3L2p6NDc4MF9uYW5kLmMgICAgICAgICAg ICAgICB8ICAzMCArLQo+ICBkcml2ZXJzL210ZC9uYW5kL3Jhdy9scGMzMnh4X21sYy5jICAgICAg ICAgICAgICAgfCAgNDcgKy0KPiAgZHJpdmVycy9tdGQvbmFuZC9yYXcvbHBjMzJ4eF9zbGMuYyAg ICAgICAgICAgICAgIHwgIDY3ICsrLQo+ICBkcml2ZXJzL210ZC9uYW5kL3Jhdy9tYXJ2ZWxsX25h bmQuYyAgICAgICAgICAgICAgfCAgNzQgKystCj4gIGRyaXZlcnMvbXRkL25hbmQvcmF3L21wYzUx MjFfbmZjLmMgICAgICAgICAgICAgICB8ICA0MCArLQo+ICBkcml2ZXJzL210ZC9uYW5kL3Jhdy9t dGtfbmFuZC5jICAgICAgICAgICAgICAgICAgfCAgODEgKystCj4gIGRyaXZlcnMvbXRkL25hbmQv cmF3L214Y19uYW5kLmMgICAgICAgICAgICAgICAgICB8ICA4NSArKy0tCj4gIGRyaXZlcnMvbXRk L25hbmQvcmF3L25hbmRfYmFzZS5jICAgICAgICAgICAgICAgICB8IDYwNiArKysrKysrKysrLS0t LS0tLS0tLS0tLQo+ICBkcml2ZXJzL210ZC9uYW5kL3Jhdy9uYW5kX2JidC5jICAgICAgICAgICAg ICAgICAgfCAgMjEgKy0KPiAgZHJpdmVycy9tdGQvbmFuZC9yYXcvbmFuZF9iY2guYyAgICAgICAg ICAgICAgICAgIHwgIDEwICstCj4gIGRyaXZlcnMvbXRkL25hbmQvcmF3L25hbmRfZWNjLmMgICAg ICAgICAgICAgICAgICB8ICAxNCArLQo+ICBkcml2ZXJzL210ZC9uYW5kL3Jhdy9uYW5kX2h5bml4 LmMgICAgICAgICAgICAgICAgfCAgMTIgKy0KPiAgZHJpdmVycy9tdGQvbmFuZC9yYXcvbmFuZF9t aWNyb24uYyAgICAgICAgICAgICAgIHwgIDE2ICstCj4gIGRyaXZlcnMvbXRkL25hbmQvcmF3L25h bmRfdG9zaGliYS5jICAgICAgICAgICAgICB8ICAxMCArLQo+ICBkcml2ZXJzL210ZC9uYW5kL3Jh dy9uYW5kc2ltLmMgICAgICAgICAgICAgICAgICAgfCAgMjggKy0KPiAgZHJpdmVycy9tdGQvbmFu ZC9yYXcvbmRmYy5jICAgICAgICAgICAgICAgICAgICAgIHwgIDI1ICstCj4gIGRyaXZlcnMvbXRk L25hbmQvcmF3L251YzkwMF9uYW5kLmMgICAgICAgICAgICAgICB8ICAyNyArLQo+ICBkcml2ZXJz L210ZC9uYW5kL3Jhdy9vbWFwMi5jICAgICAgICAgICAgICAgICAgICAgfCAxNDggKysrLS0tCj4g IGRyaXZlcnMvbXRkL25hbmQvcmF3L29yaW9uX25hbmQuYyAgICAgICAgICAgICAgICB8ICAxNCAr LQo+ICBkcml2ZXJzL210ZC9uYW5kL3Jhdy9veG5hc19uYW5kLmMgICAgICAgICAgICAgICAgfCAg MTkgKy0KPiAgZHJpdmVycy9tdGQvbmFuZC9yYXcvcGFzZW1pX25hbmQuYyAgICAgICAgICAgICAg IHwgIDE5ICstCj4gIGRyaXZlcnMvbXRkL25hbmQvcmF3L3BsYXRfbmFuZC5jICAgICAgICAgICAg ICAgICB8ICAgNiArLQo+ICBkcml2ZXJzL210ZC9uYW5kL3Jhdy9xY29tX25hbmRjLmMgICAgICAg ICAgICAgICAgfCAgNTIgKy0KPiAgZHJpdmVycy9tdGQvbmFuZC9yYXcvcjg1Mi5jICAgICAgICAg ICAgICAgICAgICAgIHwgIDU0ICstCj4gIGRyaXZlcnMvbXRkL25hbmQvcmF3L3MzYzI0MTAuYyAg ICAgICAgICAgICAgICAgICB8ICA3MiArLS0KPiAgZHJpdmVycy9tdGQvbmFuZC9yYXcvc2hfZmxj dGwuYyAgICAgICAgICAgICAgICAgIHwgIDQwICstCj4gIGRyaXZlcnMvbXRkL25hbmQvcmF3L3No YXJwc2wuYyAgICAgICAgICAgICAgICAgICB8ICAyNCArLQo+ICBkcml2ZXJzL210ZC9uYW5kL3Jh dy9zbV9jb21tb24uYyAgICAgICAgICAgICAgICAgfCAgIDUgKy0KPiAgZHJpdmVycy9tdGQvbmFu ZC9yYXcvc29jcmF0ZXNfbmFuZC5jICAgICAgICAgICAgIHwgIDMyICstCj4gIGRyaXZlcnMvbXRk L25hbmQvcmF3L3N1bnhpX25hbmQuYyAgICAgICAgICAgICAgICB8ICA4MiArKy0KPiAgZHJpdmVy cy9tdGQvbmFuZC9yYXcvdGFuZ29fbmFuZC5jICAgICAgICAgICAgICAgIHwgIDY3ICsrLQo+ICBk cml2ZXJzL210ZC9uYW5kL3Jhdy90ZWdyYV9uYW5kLmMgICAgICAgICAgICAgICAgfCAgMzYgKy0K PiAgZHJpdmVycy9tdGQvbmFuZC9yYXcvdG1pb19uYW5kLmMgICAgICAgICAgICAgICAgIHwgIDUz ICstCj4gIGRyaXZlcnMvbXRkL25hbmQvcmF3L3R4eDluZGZtYy5jICAgICAgICAgICAgICAgICB8 ICAzOCArLQo+ICBkcml2ZXJzL210ZC9uYW5kL3Jhdy92ZjYxMF9uZmMuYyAgICAgICAgICAgICAg ICAgfCAgNDMgKy0KPiAgZHJpdmVycy9tdGQvbmFuZC9yYXcveHdheV9uYW5kLmMgICAgICAgICAg ICAgICAgIHwgIDI3ICstCj4gIGRyaXZlcnMvc3RhZ2luZy9tdDI5Zl9zcGluYW5kL210MjlmX3Nw aW5hbmQuYyAgICB8ICAzMyArLQo+ICBpbmNsdWRlL2xpbnV4L210ZC9uYW5kX2JjaC5oICAgICAg ICAgICAgICAgICAgICAgfCAgMTEgKy0KPiAgaW5jbHVkZS9saW51eC9tdGQvbmFuZF9lY2MuaCAg ICAgICAgICAgICAgICAgICAgIHwgICA4ICstCj4gIGluY2x1ZGUvbGludXgvbXRkL3Jhd25hbmQu aCAgICAgICAgICAgICAgICAgICAgICB8IDE0MiArKystLS0KPiAgODUgZmlsZXMgY2hhbmdlZCwg MTYxNyBpbnNlcnRpb25zKCspLCAxODI5IGRlbGV0aW9ucygtKQo+IAoKU2VyaWVzIGFwcGxpZWQg dG8gbmFuZC9uZXh0LgoKVGhhbmtzLApNaXF1w6hsCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCmRldmVsIG1haWxpbmcgbGlzdApkZXZlbEBsaW51eGRyaXZl cnByb2plY3Qub3JnCmh0dHA6Ly9kcml2ZXJkZXYubGludXhkcml2ZXJwcm9qZWN0Lm9yZy9tYWls bWFuL2xpc3RpbmZvL2RyaXZlcmRldi1kZXZlbAo=