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 Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 29F97C433EF for ; Sat, 12 Feb 2022 13:05:06 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235191AbiBLNFG (ORCPT ); Sat, 12 Feb 2022 08:05:06 -0500 Received: from mxb-00190b01.gslb.pphosted.com ([23.128.96.19]:55070 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235157AbiBLNFF (ORCPT ); Sat, 12 Feb 2022 08:05:05 -0500 Received: from dfw.source.kernel.org (dfw.source.kernel.org [IPv6:2604:1380:4641:c500::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0BCF826543; Sat, 12 Feb 2022 05:05:00 -0800 (PST) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 8498860E86; Sat, 12 Feb 2022 13:04:59 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id E7F25C340E7; Sat, 12 Feb 2022 13:04:55 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1644671098; bh=v+g01wwGWAex++1H14Q1oSi8BHd4lI/w8GhNcGEtS6A=; h=From:To:Cc:Subject:Date:From; b=qC0NXLNKqYgXKlDzZDGNowkHQtBQO8wyF8dTxEdBUW61ZG9Ch7DdxlItr3qtWAUWc AkYr25CRoM8CGPTqNf6HqhUwxly6g949wZFvfILdaZ0xDGEVHc/g/q8MPhcaqjCBLu FdWV5Qy/iOSmfYFPhlKDcPHGbnZGIptjScdycsEnSIrXfxIhXx/fuF6oGD/66fjYVa nrRU2gpSRIjOU6YCNOiJR/Onu2saw3MjZw5DxPUvOHd+AFE7vyG/fy+NYK1UNhF82M OTJcSrZ9zXFZDHsTAv4EZTw93UxAlfx1L2ZrnwVaC36+4//nN5S1/dd7j4/ThaheTl 2/VQpGuVKCtIw== From: Miguel Ojeda To: Linus Torvalds , Greg Kroah-Hartman Cc: rust-for-linux@vger.kernel.org, linux-kernel@vger.kernel.org, Miguel Ojeda , linux-arm-kernel@lists.infradead.org, linux-doc@vger.kernel.org, linux-gpio@vger.kernel.org, linux-kbuild@vger.kernel.org, linux-perf-users@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, linux-riscv@lists.infradead.org, live-patching@vger.kernel.org Subject: [PATCH v4 00/20] Rust support Date: Sat, 12 Feb 2022 14:03:26 +0100 Message-Id: <20220212130410.6901-1-ojeda@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-doc@vger.kernel.org Rust support This is the patch series (v4) to add support for Rust as a second language to the Linux kernel. If you are interested in following this effort, please join us in the mailing list at: rust-for-linux@vger.kernel.org and take a look at the project itself at: https://github.com/Rust-for-Linux As usual, special thanks go to ISRG (Internet Security Research Group) and Google for their financial support on this endeavor. Cheers, Miguel -- # Rust support This cover letter explains the major changes and updates done since the previous ones. For those, please see: RFC: https://lore.kernel.org/lkml/20210414184604.23473-1-ojeda@kernel.org/ v1: https://lore.kernel.org/lkml/20210704202756.29107-1-ojeda@kernel.org/ v2: https://lore.kernel.org/lkml/20211206140313.5653-1-ojeda@kernel.org/ v3: https://lore.kernel.org/lkml/20220117053349.6804-1-ojeda@kernel.org/ ## Infrastructure updates There have been several improvements to the overall Rust support: - The Intel 0DAY/LKP kernel test robot is setting up Rust in their CI -- we already got the first reports from the bot which we could act upon, very useful! - KernelCI is also looking forward to enabling Rust in their runs. - The GitHub CI we use for quick pre-merge testing has been moved to use containers. - Kernel modules do not need to write the crate attributes `#![no_std]` and `#![feature(...)]` anymore, removing boilerplate. - Added single target support, including `.o`, `.s`, `.ll` and `.i` (i.e. macro expanded, similar to C preprocessed sources). - Explanation of the `helpers.c` file and licensing for helpers and exports. - The documentation logo is now vector based (SVG). In addition, a vector version of Tux has been proposed for upstream, and an RFC for improved custom logo support has been submitted to upstream Rust. - Added coding guidelines on comments (`//`) and code documentation (`///`). - `is_rust_module.sh` rework. - Generation of `.rmeta` for leaf modules is skipped now. - Other cleanups, fixes and improvements. ## Abstractions and driver updates Some of the improvements to the abstractions and example drivers are: - Added support for static (global shared variables) synchronization primitives. `CONFIG_CONSTRUCTORS` are used for the implementation. - Simplification of the lock guards by using marker types, i.e. `Guard` and `GuardMut` are unified into a single parametrized type. If the marker is `WriteLock`, then `Guard` implements `DerefMut` (only implemented by `GuardMut` previously). - Optional parameters added to the registration of misc devices, following the builder pattern., e.g. miscdev::Options::new() .mode(0o600) .minor(10) .parent(parent) .register(reg, c_str!("sample"), ()) - Added `RwSemaphore` abstraction that wraps the C side `struct rw_semaphore`. - New `mm` module and VMA abstraction (wrapping the C side `struct vm_area_struct`) for use with `mmap`. - GPIO PL061 now uses the recently added `dev_*!` Rust macros. - Support the `!CONFIG_PRINTK` case. - Other cleanups, fixes and improvements. ## Patch series status The Rust support is still to be considered experimental. However, support is good enough that kernel developers can start working on the Rust abstractions for subsystems and write drivers and other modules. The current series has just arrived in `linux-next`, as usual. Similarly, the preview docs for this series can be seen at: https://rust-for-linux.github.io/docs/kernel/ As usual, please see the following link for the live list of unstable Rust features we are using: https://github.com/Rust-for-Linux/linux/issues/2 ## Acknowledgements The signatures in the main commits correspond to the people that wrote code that has ended up in them at the present time. For details on contributions to code and discussions, please see our repository: https://github.com/Rust-for-Linux/linux However, we would like to give credit to everyone that has contributed in one way or another to the Rust for Linux project. Since the previous cover letter: - Philip Li, Yujie Liu et. al. for setting the Intel 0DAY/LKP kernel test robot with Rust support. - Maciej Falkowski for continuing his work on the Hardware Random Number Generator subsystem, Samsung Exynos true random number generator, clock subsystem, etc. - bjorn3 for an extensive re-review of the previous round. - Jonathan Corbet for his feedback on the previous round. - Garrett LeSage and IFo Hancroft for agreeing to the usage of their vector version of Tux within the kernel tree with the same license as the existing one from Larry Ewing. - Nathan Chancellor for noticing a case where a C module was being identified as a Rust one for purposes of skipping BTF generation and suggesting a few improvements around `is_rust_module.sh`. - Wei Liu for exporting the remaining helpers and triggering a useful discussion around it. - Miguel Cano for fixing an issue with compilers containing a full, 3-part version in the suffix part (e.g. Ubuntu Clang). - Abhik Jain for working on adding missing `// SAFETY` comments and `# Safety` sections to the code generated by the `module!` macro. - Jiapeng Chong and the Abaci Robot for reporting and fixing an unneeded header `#include`. - Finn Behrens for resuming his work on building Rust for Linux on Nix and spotting and fixing usability issues. - As usual, Gary Guo and bjorn3 for all the input on Rust compiler details and all the reviews and suggestions. - John Ericson, TennyZhuang and Xuanwo for their ongoing work on adding more fallible allocation methods (`try_*`) to the Rust standard library. - Stephan Sokolow and Mark Rousskov for their feedback on the custom documentation logo RFC. - Philip Herrons (and his supporters Open Source Security and Embecosm) et. al. for their ongoing work on GCC Rust. - Antoni Boucher (and his supporters) et. al. for their ongoing work on `rustc_codegen_gcc`. - Mats Larsen, Marc Poulhiès et. al. for their ongoing work on improving Rust support in Compiler Explorer. - Many folks that have reported issues, tested the project, helped spread the word, joined discussions and contributed in other ways! Please see also the acknowledgements on the previous cover letters. Boqun Feng (1): kallsyms: use the correct buffer size for symbols Gary Guo (2): rust: add `build_error` crate vsprintf: add new `%pA` format specifier Miguel Ojeda (13): kallsyms: support "big" kernel symbols kallsyms: increase maximum kernel symbol length to 512 rust: add C helpers rust: add `compiler_builtins` crate rust: add `alloc` crate rust: add `macros` crate rust: export generated symbols scripts: add `generate_rust_analyzer.py` scripts: decode_stacktrace: demangle Rust symbols docs: add Rust documentation Kbuild: add Rust support samples: add Rust examples MAINTAINERS: Rust Wedson Almeida Filho (4): rust: add `kernel` crate's `sync` module rust: add `kernel` crate [RFC] drivers: gpio: PrimeCell PL061 in Rust [RFC] drivers: android: Binder IPC in Rust .gitignore | 5 + .rustfmt.toml | 12 + Documentation/doc-guide/kernel-doc.rst | 3 + Documentation/index.rst | 1 + Documentation/kbuild/kbuild.rst | 4 + Documentation/process/changes.rst | 42 + Documentation/rust/arch-support.rst | 35 + Documentation/rust/coding-guidelines.rst | 153 + Documentation/rust/general-information.rst | 80 + Documentation/rust/index.rst | 21 + Documentation/rust/logo.svg | 357 ++ Documentation/rust/quick-start.rst | 231 ++ MAINTAINERS | 16 + Makefile | 154 +- arch/arm/rust/target.json | 27 + arch/arm64/rust/target.json | 34 + arch/powerpc/rust/target.json | 29 + arch/riscv/Makefile | 1 + arch/riscv/rust/rv32ima.json | 36 + arch/riscv/rust/rv32imac.json | 36 + arch/riscv/rust/rv64ima.json | 36 + arch/riscv/rust/rv64imac.json | 36 + arch/x86/rust/target.json | 36 + drivers/android/Kconfig | 7 + drivers/android/Makefile | 2 + drivers/android/allocation.rs | 266 ++ drivers/android/context.rs | 80 + drivers/android/defs.rs | 99 + drivers/android/node.rs | 476 +++ drivers/android/process.rs | 961 +++++ drivers/android/range_alloc.rs | 189 + drivers/android/rust_binder.rs | 111 + drivers/android/thread.rs | 871 +++++ drivers/android/transaction.rs | 326 ++ drivers/gpio/Kconfig | 8 + drivers/gpio/Makefile | 1 + drivers/gpio/gpio_pl061_rust.rs | 370 ++ include/linux/kallsyms.h | 2 +- include/linux/spinlock.h | 17 +- include/uapi/linux/android/binder.h | 28 +- init/Kconfig | 45 +- kernel/kallsyms.c | 26 +- kernel/livepatch/core.c | 4 +- kernel/printk/printk.c | 5 +- lib/Kconfig.debug | 144 + lib/rust.h | 14 + lib/vsprintf.c | 7 + rust/.gitignore | 7 + rust/Makefile | 374 ++ rust/alloc/README.md | 32 + rust/alloc/alloc.rs | 427 +++ rust/alloc/borrow.rs | 498 +++ rust/alloc/boxed.rs | 1847 ++++++++++ rust/alloc/collections/mod.rs | 156 + rust/alloc/fmt.rs | 601 ++++ rust/alloc/lib.rs | 217 ++ rust/alloc/macros.rs | 126 + rust/alloc/raw_vec.rs | 549 +++ rust/alloc/slice.rs | 1279 +++++++ rust/alloc/str.rs | 624 ++++ rust/alloc/string.rs | 2864 +++++++++++++++ rust/alloc/vec/drain.rs | 159 + rust/alloc/vec/drain_filter.rs | 145 + rust/alloc/vec/into_iter.rs | 356 ++ rust/alloc/vec/is_zero.rs | 106 + rust/alloc/vec/mod.rs | 3359 ++++++++++++++++++ rust/alloc/vec/partial_eq.rs | 49 + rust/alloc/vec/set_len_on_drop.rs | 30 + rust/alloc/vec/spec_extend.rs | 172 + rust/bindgen_parameters | 13 + rust/build_error.rs | 29 + rust/compiler_builtins.rs | 57 + rust/exports.c | 19 + rust/helpers.c | 529 +++ rust/kernel/allocator.rs | 65 + rust/kernel/amba.rs | 259 ++ rust/kernel/bindings.rs | 47 + rust/kernel/bindings_helper.h | 30 + rust/kernel/buffer.rs | 52 + rust/kernel/build_assert.rs | 80 + rust/kernel/c_types.rs | 119 + rust/kernel/chrdev.rs | 209 ++ rust/kernel/clk.rs | 75 + rust/kernel/cred.rs | 73 + rust/kernel/device.rs | 554 +++ rust/kernel/driver.rs | 440 +++ rust/kernel/error.rs | 542 +++ rust/kernel/file.rs | 147 + rust/kernel/file_operations.rs | 734 ++++ rust/kernel/gpio.rs | 477 +++ rust/kernel/io_buffer.rs | 153 + rust/kernel/io_mem.rs | 227 ++ rust/kernel/iov_iter.rs | 81 + rust/kernel/irq.rs | 409 +++ rust/kernel/lib.rs | 261 ++ rust/kernel/linked_list.rs | 247 ++ rust/kernel/miscdev.rs | 281 ++ rust/kernel/mm.rs | 149 + rust/kernel/module_param.rs | 497 +++ rust/kernel/of.rs | 63 + rust/kernel/pages.rs | 144 + rust/kernel/platform.rs | 224 ++ rust/kernel/power.rs | 118 + rust/kernel/prelude.rs | 36 + rust/kernel/print.rs | 417 +++ rust/kernel/random.rs | 50 + rust/kernel/raw_list.rs | 361 ++ rust/kernel/rbtree.rs | 562 +++ rust/kernel/revocable.rs | 163 + rust/kernel/security.rs | 36 + rust/kernel/static_assert.rs | 39 + rust/kernel/std_vendor.rs | 150 + rust/kernel/str.rs | 401 +++ rust/kernel/sync/arc.rs | 500 +++ rust/kernel/sync/condvar.rs | 138 + rust/kernel/sync/guard.rs | 150 + rust/kernel/sync/locked_by.rs | 112 + rust/kernel/sync/mod.rs | 157 + rust/kernel/sync/mutex.rs | 112 + rust/kernel/sync/revocable_mutex.rs | 184 + rust/kernel/sync/rwsem.rs | 147 + rust/kernel/sync/seqlock.rs | 202 ++ rust/kernel/sync/spinlock.rs | 180 + rust/kernel/sysctl.rs | 197 + rust/kernel/task.rs | 182 + rust/kernel/types.rs | 486 +++ rust/kernel/user_ptr.rs | 175 + rust/macros/helpers.rs | 79 + rust/macros/lib.rs | 94 + rust/macros/module.rs | 631 ++++ samples/Kconfig | 2 + samples/Makefile | 1 + samples/rust/Kconfig | 123 + samples/rust/Makefile | 13 + samples/rust/rust_chrdev.rs | 50 + samples/rust/rust_minimal.rs | 35 + samples/rust/rust_miscdev.rs | 144 + samples/rust/rust_module_parameters.rs | 69 + samples/rust/rust_platform.rs | 22 + samples/rust/rust_print.rs | 54 + samples/rust/rust_random.rs | 61 + samples/rust/rust_semaphore.rs | 172 + samples/rust/rust_semaphore_c.c | 212 ++ samples/rust/rust_stack_probing.rs | 36 + samples/rust/rust_sync.rs | 78 + scripts/Kconfig.include | 6 +- scripts/Makefile.build | 65 + scripts/Makefile.debug | 10 + scripts/Makefile.lib | 12 + scripts/Makefile.modfinal | 8 +- scripts/cc-version.sh | 12 +- scripts/decode_stacktrace.sh | 14 + scripts/generate_rust_analyzer.py | 133 + scripts/is_rust_module.sh | 13 + scripts/kallsyms.c | 40 +- scripts/kconfig/confdata.c | 75 + scripts/min-tool-version.sh | 6 + scripts/rust-is-available-bindgen-libclang.h | 2 + scripts/rust-is-available.sh | 158 + tools/include/linux/kallsyms.h | 2 +- tools/lib/perf/include/perf/event.h | 2 +- tools/lib/symbol/kallsyms.h | 2 +- 162 files changed, 34341 insertions(+), 57 deletions(-) create mode 100644 .rustfmt.toml create mode 100644 Documentation/rust/arch-support.rst create mode 100644 Documentation/rust/coding-guidelines.rst create mode 100644 Documentation/rust/general-information.rst create mode 100644 Documentation/rust/index.rst create mode 100644 Documentation/rust/logo.svg create mode 100644 Documentation/rust/quick-start.rst create mode 100644 arch/arm/rust/target.json create mode 100644 arch/arm64/rust/target.json create mode 100644 arch/powerpc/rust/target.json create mode 100644 arch/riscv/rust/rv32ima.json create mode 100644 arch/riscv/rust/rv32imac.json create mode 100644 arch/riscv/rust/rv64ima.json create mode 100644 arch/riscv/rust/rv64imac.json create mode 100644 arch/x86/rust/target.json create mode 100644 drivers/android/allocation.rs create mode 100644 drivers/android/context.rs create mode 100644 drivers/android/defs.rs create mode 100644 drivers/android/node.rs create mode 100644 drivers/android/process.rs create mode 100644 drivers/android/range_alloc.rs create mode 100644 drivers/android/rust_binder.rs create mode 100644 drivers/android/thread.rs create mode 100644 drivers/android/transaction.rs create mode 100644 drivers/gpio/gpio_pl061_rust.rs create mode 100644 lib/rust.h create mode 100644 rust/.gitignore create mode 100644 rust/Makefile create mode 100644 rust/alloc/README.md create mode 100644 rust/alloc/alloc.rs create mode 100644 rust/alloc/borrow.rs create mode 100644 rust/alloc/boxed.rs create mode 100644 rust/alloc/collections/mod.rs create mode 100644 rust/alloc/fmt.rs create mode 100644 rust/alloc/lib.rs create mode 100644 rust/alloc/macros.rs create mode 100644 rust/alloc/raw_vec.rs create mode 100644 rust/alloc/slice.rs create mode 100644 rust/alloc/str.rs create mode 100644 rust/alloc/string.rs create mode 100644 rust/alloc/vec/drain.rs create mode 100644 rust/alloc/vec/drain_filter.rs create mode 100644 rust/alloc/vec/into_iter.rs create mode 100644 rust/alloc/vec/is_zero.rs create mode 100644 rust/alloc/vec/mod.rs create mode 100644 rust/alloc/vec/partial_eq.rs create mode 100644 rust/alloc/vec/set_len_on_drop.rs create mode 100644 rust/alloc/vec/spec_extend.rs create mode 100644 rust/bindgen_parameters create mode 100644 rust/build_error.rs create mode 100644 rust/compiler_builtins.rs create mode 100644 rust/exports.c create mode 100644 rust/helpers.c create mode 100644 rust/kernel/allocator.rs create mode 100644 rust/kernel/amba.rs create mode 100644 rust/kernel/bindings.rs create mode 100644 rust/kernel/bindings_helper.h create mode 100644 rust/kernel/buffer.rs create mode 100644 rust/kernel/build_assert.rs create mode 100644 rust/kernel/c_types.rs create mode 100644 rust/kernel/chrdev.rs create mode 100644 rust/kernel/clk.rs create mode 100644 rust/kernel/cred.rs create mode 100644 rust/kernel/device.rs create mode 100644 rust/kernel/driver.rs create mode 100644 rust/kernel/error.rs create mode 100644 rust/kernel/file.rs create mode 100644 rust/kernel/file_operations.rs create mode 100644 rust/kernel/gpio.rs create mode 100644 rust/kernel/io_buffer.rs create mode 100644 rust/kernel/io_mem.rs create mode 100644 rust/kernel/iov_iter.rs create mode 100644 rust/kernel/irq.rs create mode 100644 rust/kernel/lib.rs create mode 100644 rust/kernel/linked_list.rs create mode 100644 rust/kernel/miscdev.rs create mode 100644 rust/kernel/mm.rs create mode 100644 rust/kernel/module_param.rs create mode 100644 rust/kernel/of.rs create mode 100644 rust/kernel/pages.rs create mode 100644 rust/kernel/platform.rs create mode 100644 rust/kernel/power.rs create mode 100644 rust/kernel/prelude.rs create mode 100644 rust/kernel/print.rs create mode 100644 rust/kernel/random.rs create mode 100644 rust/kernel/raw_list.rs create mode 100644 rust/kernel/rbtree.rs create mode 100644 rust/kernel/revocable.rs create mode 100644 rust/kernel/security.rs create mode 100644 rust/kernel/static_assert.rs create mode 100644 rust/kernel/std_vendor.rs create mode 100644 rust/kernel/str.rs create mode 100644 rust/kernel/sync/arc.rs create mode 100644 rust/kernel/sync/condvar.rs create mode 100644 rust/kernel/sync/guard.rs create mode 100644 rust/kernel/sync/locked_by.rs create mode 100644 rust/kernel/sync/mod.rs create mode 100644 rust/kernel/sync/mutex.rs create mode 100644 rust/kernel/sync/revocable_mutex.rs create mode 100644 rust/kernel/sync/rwsem.rs create mode 100644 rust/kernel/sync/seqlock.rs create mode 100644 rust/kernel/sync/spinlock.rs create mode 100644 rust/kernel/sysctl.rs create mode 100644 rust/kernel/task.rs create mode 100644 rust/kernel/types.rs create mode 100644 rust/kernel/user_ptr.rs create mode 100644 rust/macros/helpers.rs create mode 100644 rust/macros/lib.rs create mode 100644 rust/macros/module.rs create mode 100644 samples/rust/Kconfig create mode 100644 samples/rust/Makefile create mode 100644 samples/rust/rust_chrdev.rs create mode 100644 samples/rust/rust_minimal.rs create mode 100644 samples/rust/rust_miscdev.rs create mode 100644 samples/rust/rust_module_parameters.rs create mode 100644 samples/rust/rust_platform.rs create mode 100644 samples/rust/rust_print.rs create mode 100644 samples/rust/rust_random.rs create mode 100644 samples/rust/rust_semaphore.rs create mode 100644 samples/rust/rust_semaphore_c.c create mode 100644 samples/rust/rust_stack_probing.rs create mode 100644 samples/rust/rust_sync.rs create mode 100755 scripts/generate_rust_analyzer.py create mode 100755 scripts/is_rust_module.sh create mode 100644 scripts/rust-is-available-bindgen-libclang.h create mode 100755 scripts/rust-is-available.sh base-commit: dfd42facf1e4ada021b939b4e19c935dcdd55566 -- 2.35.1 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 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 smtp.lore.kernel.org (Postfix) with ESMTPS id E31E6C433F5 for ; Sat, 12 Feb 2022 13:05:26 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:Message-Id:Date:Subject:Cc :To:From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References: List-Owner; bh=dOPMNMwKDM/lHcGGqKdCEynblUMF+dpJ3LYoN0vd4y0=; b=04YEE5lR8kaAn5 SOAPs7AFlzk3o6BFfHet9oEFn5bh3LoAAXKGDr7WIRuTzNulUm3G48yqHTwBjGH55fCT+QpW/FG8k mXIPUXjmAqx+Ikn9UW+vpRJKFJdRk0tiWpVlokXkml1cwUIxjvQni/K3jKrucUtMqtg9E6QgwKoXH dZ5Wttxgk/iDY29UybHMO48sOMWWPbpMC0RKxhoCfcVApthma5qvqoDZrfue/IhlN8fHc1SCjexy0 LP5Ynjh4eql+AkUaeT4f5IUver1mXJNEcSb+/L54hAbflWuYpTfQIRf7dR/RSuMn2lYrDboERZDiB xVMshFtQ281ItKjBE2pw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1nIs5T-009w12-Bc; Sat, 12 Feb 2022 13:05:15 +0000 Received: from dfw.source.kernel.org ([2604:1380:4641:c500::1]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1nIs5E-009vy2-Rv; Sat, 12 Feb 2022 13:05:04 +0000 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 7800160E93; Sat, 12 Feb 2022 13:04:59 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id E7F25C340E7; Sat, 12 Feb 2022 13:04:55 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1644671098; bh=v+g01wwGWAex++1H14Q1oSi8BHd4lI/w8GhNcGEtS6A=; h=From:To:Cc:Subject:Date:From; b=qC0NXLNKqYgXKlDzZDGNowkHQtBQO8wyF8dTxEdBUW61ZG9Ch7DdxlItr3qtWAUWc AkYr25CRoM8CGPTqNf6HqhUwxly6g949wZFvfILdaZ0xDGEVHc/g/q8MPhcaqjCBLu FdWV5Qy/iOSmfYFPhlKDcPHGbnZGIptjScdycsEnSIrXfxIhXx/fuF6oGD/66fjYVa nrRU2gpSRIjOU6YCNOiJR/Onu2saw3MjZw5DxPUvOHd+AFE7vyG/fy+NYK1UNhF82M OTJcSrZ9zXFZDHsTAv4EZTw93UxAlfx1L2ZrnwVaC36+4//nN5S1/dd7j4/ThaheTl 2/VQpGuVKCtIw== From: Miguel Ojeda To: Linus Torvalds , Greg Kroah-Hartman Cc: rust-for-linux@vger.kernel.org, linux-kernel@vger.kernel.org, Miguel Ojeda , linux-arm-kernel@lists.infradead.org, linux-doc@vger.kernel.org, linux-gpio@vger.kernel.org, linux-kbuild@vger.kernel.org, linux-perf-users@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, linux-riscv@lists.infradead.org, live-patching@vger.kernel.org Subject: [PATCH v4 00/20] Rust support Date: Sat, 12 Feb 2022 14:03:26 +0100 Message-Id: <20220212130410.6901-1-ojeda@kernel.org> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220212_050501_056924_F84EDD4A X-CRM114-Status: GOOD ( 31.06 ) X-BeenThere: linux-riscv@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-riscv" Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org UnVzdCBzdXBwb3J0CgpUaGlzIGlzIHRoZSBwYXRjaCBzZXJpZXMgKHY0KSB0byBhZGQgc3VwcG9y dCBmb3IgUnVzdCBhcyBhIHNlY29uZApsYW5ndWFnZSB0byB0aGUgTGludXgga2VybmVsLgoKSWYg eW91IGFyZSBpbnRlcmVzdGVkIGluIGZvbGxvd2luZyB0aGlzIGVmZm9ydCwgcGxlYXNlIGpvaW4g dXMgaW4KdGhlIG1haWxpbmcgbGlzdCBhdDoKCiAgICBydXN0LWZvci1saW51eEB2Z2VyLmtlcm5l bC5vcmcKCmFuZCB0YWtlIGEgbG9vayBhdCB0aGUgcHJvamVjdCBpdHNlbGYgYXQ6CgogICAgaHR0 cHM6Ly9naXRodWIuY29tL1J1c3QtZm9yLUxpbnV4CgpBcyB1c3VhbCwgc3BlY2lhbCB0aGFua3Mg Z28gdG8gSVNSRyAoSW50ZXJuZXQgU2VjdXJpdHkgUmVzZWFyY2gKR3JvdXApIGFuZCBHb29nbGUg Zm9yIHRoZWlyIGZpbmFuY2lhbCBzdXBwb3J0IG9uIHRoaXMgZW5kZWF2b3IuCgpDaGVlcnMsCk1p Z3VlbAoKLS0KCiMgUnVzdCBzdXBwb3J0CgpUaGlzIGNvdmVyIGxldHRlciBleHBsYWlucyB0aGUg bWFqb3IgY2hhbmdlcyBhbmQgdXBkYXRlcyBkb25lIHNpbmNlCnRoZSBwcmV2aW91cyBvbmVzLiBG b3IgdGhvc2UsIHBsZWFzZSBzZWU6CgogICAgUkZDOiBodHRwczovL2xvcmUua2VybmVsLm9yZy9s a21sLzIwMjEwNDE0MTg0NjA0LjIzNDczLTEtb2plZGFAa2VybmVsLm9yZy8KICAgIHYxOiAgaHR0 cHM6Ly9sb3JlLmtlcm5lbC5vcmcvbGttbC8yMDIxMDcwNDIwMjc1Ni4yOTEwNy0xLW9qZWRhQGtl cm5lbC5vcmcvCiAgICB2MjogIGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL2xrbWwvMjAyMTEyMDYx NDAzMTMuNTY1My0xLW9qZWRhQGtlcm5lbC5vcmcvCiAgICB2MzogIGh0dHBzOi8vbG9yZS5rZXJu ZWwub3JnL2xrbWwvMjAyMjAxMTcwNTMzNDkuNjgwNC0xLW9qZWRhQGtlcm5lbC5vcmcvCgoKIyMg SW5mcmFzdHJ1Y3R1cmUgdXBkYXRlcwoKVGhlcmUgaGF2ZSBiZWVuIHNldmVyYWwgaW1wcm92ZW1l bnRzIHRvIHRoZSBvdmVyYWxsIFJ1c3Qgc3VwcG9ydDoKCiAgLSBUaGUgSW50ZWwgMERBWS9MS1Ag a2VybmVsIHRlc3Qgcm9ib3QgaXMgc2V0dGluZyB1cCBSdXN0IGluIHRoZWlyCiAgICBDSSAtLSB3 ZSBhbHJlYWR5IGdvdCB0aGUgZmlyc3QgcmVwb3J0cyBmcm9tIHRoZSBib3Qgd2hpY2ggd2UKICAg IGNvdWxkIGFjdCB1cG9uLCB2ZXJ5IHVzZWZ1bCEKCiAgLSBLZXJuZWxDSSBpcyBhbHNvIGxvb2tp bmcgZm9yd2FyZCB0byBlbmFibGluZyBSdXN0IGluIHRoZWlyIHJ1bnMuCgogIC0gVGhlIEdpdEh1 YiBDSSB3ZSB1c2UgZm9yIHF1aWNrIHByZS1tZXJnZSB0ZXN0aW5nIGhhcyBiZWVuIG1vdmVkCiAg ICB0byB1c2UgY29udGFpbmVycy4KCiAgLSBLZXJuZWwgbW9kdWxlcyBkbyBub3QgbmVlZCB0byB3 cml0ZSB0aGUgY3JhdGUgYXR0cmlidXRlcwogICAgYCMhW25vX3N0ZF1gIGFuZCBgIyFbZmVhdHVy ZSguLi4pXWAgYW55bW9yZSwgcmVtb3ZpbmcgYm9pbGVycGxhdGUuCgogIC0gQWRkZWQgc2luZ2xl IHRhcmdldCBzdXBwb3J0LCBpbmNsdWRpbmcgYC5vYCwgYC5zYCwgYC5sbGAgYW5kIGAuaWAKICAg IChpLmUuIG1hY3JvIGV4cGFuZGVkLCBzaW1pbGFyIHRvIEMgcHJlcHJvY2Vzc2VkIHNvdXJjZXMp LgoKICAtIEV4cGxhbmF0aW9uIG9mIHRoZSBgaGVscGVycy5jYCBmaWxlIGFuZCBsaWNlbnNpbmcg Zm9yIGhlbHBlcnMKICAgIGFuZCBleHBvcnRzLgoKICAtIFRoZSBkb2N1bWVudGF0aW9uIGxvZ28g aXMgbm93IHZlY3RvciBiYXNlZCAoU1ZHKS4gSW4gYWRkaXRpb24sCiAgICBhIHZlY3RvciB2ZXJz aW9uIG9mIFR1eCBoYXMgYmVlbiBwcm9wb3NlZCBmb3IgdXBzdHJlYW0sIGFuZCBhbgogICAgUkZD IGZvciBpbXByb3ZlZCBjdXN0b20gbG9nbyBzdXBwb3J0IGhhcyBiZWVuIHN1Ym1pdHRlZCB0bwog ICAgdXBzdHJlYW0gUnVzdC4KCiAgLSBBZGRlZCBjb2RpbmcgZ3VpZGVsaW5lcyBvbiBjb21tZW50 cyAoYC8vYCkgYW5kIGNvZGUgZG9jdW1lbnRhdGlvbgogICAgKGAvLy9gKS4KCiAgLSBgaXNfcnVz dF9tb2R1bGUuc2hgIHJld29yay4KCiAgLSBHZW5lcmF0aW9uIG9mIGAucm1ldGFgIGZvciBsZWFm IG1vZHVsZXMgaXMgc2tpcHBlZCBub3cuCgogIC0gT3RoZXIgY2xlYW51cHMsIGZpeGVzIGFuZCBp bXByb3ZlbWVudHMuCgoKIyMgQWJzdHJhY3Rpb25zIGFuZCBkcml2ZXIgdXBkYXRlcwoKU29tZSBv ZiB0aGUgaW1wcm92ZW1lbnRzIHRvIHRoZSBhYnN0cmFjdGlvbnMgYW5kIGV4YW1wbGUgZHJpdmVy cyBhcmU6CgogIC0gQWRkZWQgc3VwcG9ydCBmb3Igc3RhdGljIChnbG9iYWwgc2hhcmVkIHZhcmlh Ymxlcykgc3luY2hyb25pemF0aW9uCiAgICBwcmltaXRpdmVzLiBgQ09ORklHX0NPTlNUUlVDVE9S U2AgYXJlIHVzZWQgZm9yIHRoZSBpbXBsZW1lbnRhdGlvbi4KCiAgLSBTaW1wbGlmaWNhdGlvbiBv ZiB0aGUgbG9jayBndWFyZHMgYnkgdXNpbmcgbWFya2VyIHR5cGVzLCBpLmUuCiAgICBgR3VhcmRg IGFuZCBgR3VhcmRNdXRgIGFyZSB1bmlmaWVkIGludG8gYSBzaW5nbGUgcGFyYW1ldHJpemVkCiAg ICB0eXBlLiBJZiB0aGUgbWFya2VyIGlzIGBXcml0ZUxvY2tgLCB0aGVuIGBHdWFyZGAgaW1wbGVt ZW50cwogICAgYERlcmVmTXV0YCAob25seSBpbXBsZW1lbnRlZCBieSBgR3VhcmRNdXRgIHByZXZp b3VzbHkpLgoKICAtIE9wdGlvbmFsIHBhcmFtZXRlcnMgYWRkZWQgdG8gdGhlIHJlZ2lzdHJhdGlv biBvZiBtaXNjIGRldmljZXMsCiAgICBmb2xsb3dpbmcgdGhlIGJ1aWxkZXIgcGF0dGVybi4sIGUu Zy4KCiAgICAgICAgbWlzY2Rldjo6T3B0aW9uczo6bmV3KCkKICAgICAgICAgICAgLm1vZGUoMG82 MDApCiAgICAgICAgICAgIC5taW5vcigxMCkKICAgICAgICAgICAgLnBhcmVudChwYXJlbnQpCiAg ICAgICAgICAgIC5yZWdpc3RlcihyZWcsIGNfc3RyISgic2FtcGxlIiksICgpKQoKICAtIEFkZGVk IGBSd1NlbWFwaG9yZWAgYWJzdHJhY3Rpb24gdGhhdCB3cmFwcyB0aGUgQyBzaWRlCiAgICBgc3Ry dWN0IHJ3X3NlbWFwaG9yZWAuCgogIC0gTmV3IGBtbWAgbW9kdWxlIGFuZCBWTUEgYWJzdHJhY3Rp b24gKHdyYXBwaW5nIHRoZSBDIHNpZGUKICAgIGBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3RgKSBmb3Ig dXNlIHdpdGggYG1tYXBgLgoKICAtIEdQSU8gUEwwNjEgbm93IHVzZXMgdGhlIHJlY2VudGx5IGFk ZGVkIGBkZXZfKiFgIFJ1c3QgbWFjcm9zLgoKICAtIFN1cHBvcnQgdGhlIGAhQ09ORklHX1BSSU5U S2AgY2FzZS4KCiAgLSBPdGhlciBjbGVhbnVwcywgZml4ZXMgYW5kIGltcHJvdmVtZW50cy4KCgoj IyBQYXRjaCBzZXJpZXMgc3RhdHVzCgpUaGUgUnVzdCBzdXBwb3J0IGlzIHN0aWxsIHRvIGJlIGNv bnNpZGVyZWQgZXhwZXJpbWVudGFsLiBIb3dldmVyLApzdXBwb3J0IGlzIGdvb2QgZW5vdWdoIHRo YXQga2VybmVsIGRldmVsb3BlcnMgY2FuIHN0YXJ0IHdvcmtpbmcgb24gdGhlClJ1c3QgYWJzdHJh Y3Rpb25zIGZvciBzdWJzeXN0ZW1zIGFuZCB3cml0ZSBkcml2ZXJzIGFuZCBvdGhlciBtb2R1bGVz LgoKVGhlIGN1cnJlbnQgc2VyaWVzIGhhcyBqdXN0IGFycml2ZWQgaW4gYGxpbnV4LW5leHRgLCBh cyB1c3VhbC4KU2ltaWxhcmx5LCB0aGUgcHJldmlldyBkb2NzIGZvciB0aGlzIHNlcmllcyBjYW4g YmUgc2VlbiBhdDoKCiAgICBodHRwczovL3J1c3QtZm9yLWxpbnV4LmdpdGh1Yi5pby9kb2NzL2tl cm5lbC8KCkFzIHVzdWFsLCBwbGVhc2Ugc2VlIHRoZSBmb2xsb3dpbmcgbGluayBmb3IgdGhlCmxp dmUgbGlzdCBvZiB1bnN0YWJsZSBSdXN0IGZlYXR1cmVzIHdlIGFyZSB1c2luZzoKCiAgICBodHRw czovL2dpdGh1Yi5jb20vUnVzdC1mb3ItTGludXgvbGludXgvaXNzdWVzLzIKCgojIyBBY2tub3ds ZWRnZW1lbnRzCgpUaGUgc2lnbmF0dXJlcyBpbiB0aGUgbWFpbiBjb21taXRzIGNvcnJlc3BvbmQg dG8gdGhlIHBlb3BsZSB0aGF0Cndyb3RlIGNvZGUgdGhhdCBoYXMgZW5kZWQgdXAgaW4gdGhlbSBh dCB0aGUgcHJlc2VudCB0aW1lLiBGb3IgZGV0YWlscwpvbiBjb250cmlidXRpb25zIHRvIGNvZGUg YW5kIGRpc2N1c3Npb25zLCBwbGVhc2Ugc2VlIG91ciByZXBvc2l0b3J5OgoKICAgIGh0dHBzOi8v Z2l0aHViLmNvbS9SdXN0LWZvci1MaW51eC9saW51eAoKSG93ZXZlciwgd2Ugd291bGQgbGlrZSB0 byBnaXZlIGNyZWRpdCB0byBldmVyeW9uZSB0aGF0IGhhcyBjb250cmlidXRlZAppbiBvbmUgd2F5 IG9yIGFub3RoZXIgdG8gdGhlIFJ1c3QgZm9yIExpbnV4IHByb2plY3QuIFNpbmNlIHRoZQpwcmV2 aW91cyBjb3ZlciBsZXR0ZXI6CgogIC0gUGhpbGlwIExpLCBZdWppZSBMaXUgZXQuIGFsLiBmb3Ig c2V0dGluZyB0aGUgSW50ZWwgMERBWS9MS1Aga2VybmVsCiAgICB0ZXN0IHJvYm90IHdpdGggUnVz dCBzdXBwb3J0LgoKICAtIE1hY2llaiBGYWxrb3dza2kgZm9yIGNvbnRpbnVpbmcgaGlzIHdvcmsg b24gdGhlIEhhcmR3YXJlIFJhbmRvbQogICAgTnVtYmVyIEdlbmVyYXRvciBzdWJzeXN0ZW0sIFNh bXN1bmcgRXh5bm9zIHRydWUgcmFuZG9tIG51bWJlcgogICAgZ2VuZXJhdG9yLCBjbG9jayBzdWJz eXN0ZW0sIGV0Yy4KCiAgLSBiam9ybjMgZm9yIGFuIGV4dGVuc2l2ZSByZS1yZXZpZXcgb2YgdGhl IHByZXZpb3VzIHJvdW5kLgoKICAtIEpvbmF0aGFuIENvcmJldCBmb3IgaGlzIGZlZWRiYWNrIG9u IHRoZSBwcmV2aW91cyByb3VuZC4KCiAgLSBHYXJyZXR0IExlU2FnZSBhbmQgSUZvIEhhbmNyb2Z0 IGZvciBhZ3JlZWluZyB0byB0aGUgdXNhZ2Ugb2YKICAgIHRoZWlyIHZlY3RvciB2ZXJzaW9uIG9m IFR1eCB3aXRoaW4gdGhlIGtlcm5lbCB0cmVlIHdpdGggdGhlIHNhbWUKICAgIGxpY2Vuc2UgYXMg dGhlIGV4aXN0aW5nIG9uZSBmcm9tIExhcnJ5IEV3aW5nLgoKICAtIE5hdGhhbiBDaGFuY2VsbG9y IGZvciBub3RpY2luZyBhIGNhc2Ugd2hlcmUgYSBDIG1vZHVsZSB3YXMgYmVpbmcKICAgIGlkZW50 aWZpZWQgYXMgYSBSdXN0IG9uZSBmb3IgcHVycG9zZXMgb2Ygc2tpcHBpbmcgQlRGIGdlbmVyYXRp b24KICAgIGFuZCBzdWdnZXN0aW5nIGEgZmV3IGltcHJvdmVtZW50cyBhcm91bmQgYGlzX3J1c3Rf bW9kdWxlLnNoYC4KCiAgLSBXZWkgTGl1IGZvciBleHBvcnRpbmcgdGhlIHJlbWFpbmluZyBoZWxw ZXJzIGFuZCB0cmlnZ2VyaW5nIGEKICAgIHVzZWZ1bCBkaXNjdXNzaW9uIGFyb3VuZCBpdC4KCiAg LSBNaWd1ZWwgQ2FubyBmb3IgZml4aW5nIGFuIGlzc3VlIHdpdGggY29tcGlsZXJzIGNvbnRhaW5p bmcgYSBmdWxsLAogICAgMy1wYXJ0IHZlcnNpb24gaW4gdGhlIHN1ZmZpeCBwYXJ0IChlLmcuIFVi dW50dSBDbGFuZykuCgogIC0gQWJoaWsgSmFpbiBmb3Igd29ya2luZyBvbiBhZGRpbmcgbWlzc2lu ZyBgLy8gU0FGRVRZYCBjb21tZW50cyBhbmQKICAgIGAjIFNhZmV0eWAgc2VjdGlvbnMgdG8gdGhl IGNvZGUgZ2VuZXJhdGVkIGJ5IHRoZSBgbW9kdWxlIWAgbWFjcm8uCgogIC0gSmlhcGVuZyBDaG9u ZyBhbmQgdGhlIEFiYWNpIFJvYm90IGZvciByZXBvcnRpbmcgYW5kIGZpeGluZwogICAgYW4gdW5u ZWVkZWQgaGVhZGVyIGAjaW5jbHVkZWAuCgogIC0gRmlubiBCZWhyZW5zIGZvciByZXN1bWluZyBo aXMgd29yayBvbiBidWlsZGluZyBSdXN0IGZvciBMaW51eAogICAgb24gTml4IGFuZCBzcG90dGlu ZyBhbmQgZml4aW5nIHVzYWJpbGl0eSBpc3N1ZXMuCgogIC0gQXMgdXN1YWwsIEdhcnkgR3VvIGFu ZCBiam9ybjMgZm9yIGFsbCB0aGUgaW5wdXQgb24gUnVzdCBjb21waWxlcgogICAgZGV0YWlscyBh bmQgYWxsIHRoZSByZXZpZXdzIGFuZCBzdWdnZXN0aW9ucy4KCiAgLSBKb2huIEVyaWNzb24sIFRl bm55Wmh1YW5nIGFuZCBYdWFud28gZm9yIHRoZWlyIG9uZ29pbmcgd29yayBvbgogICAgYWRkaW5n IG1vcmUgZmFsbGlibGUgYWxsb2NhdGlvbiBtZXRob2RzIChgdHJ5XypgKSB0byB0aGUgUnVzdAog ICAgc3RhbmRhcmQgbGlicmFyeS4KCiAgLSBTdGVwaGFuIFNva29sb3cgYW5kIE1hcmsgUm91c3Nr b3YgZm9yIHRoZWlyIGZlZWRiYWNrIG9uIHRoZQogICAgY3VzdG9tIGRvY3VtZW50YXRpb24gbG9n byBSRkMuCgogIC0gUGhpbGlwIEhlcnJvbnMgKGFuZCBoaXMgc3VwcG9ydGVycyBPcGVuIFNvdXJj ZSBTZWN1cml0eSBhbmQKICAgIEVtYmVjb3NtKSBldC4gYWwuIGZvciB0aGVpciBvbmdvaW5nIHdv cmsgb24gR0NDIFJ1c3QuCgogIC0gQW50b25pIEJvdWNoZXIgKGFuZCBoaXMgc3VwcG9ydGVycykg ZXQuIGFsLiBmb3IgdGhlaXIgb25nb2luZwogICAgd29yayBvbiBgcnVzdGNfY29kZWdlbl9nY2Ng LgoKICAtIE1hdHMgTGFyc2VuLCBNYXJjIFBvdWxoacOocyBldC4gYWwuIGZvciB0aGVpciBvbmdv aW5nIHdvcmsgb24KICAgIGltcHJvdmluZyBSdXN0IHN1cHBvcnQgaW4gQ29tcGlsZXIgRXhwbG9y ZXIuCgogIC0gTWFueSBmb2xrcyB0aGF0IGhhdmUgcmVwb3J0ZWQgaXNzdWVzLCB0ZXN0ZWQgdGhl IHByb2plY3QsCiAgICBoZWxwZWQgc3ByZWFkIHRoZSB3b3JkLCBqb2luZWQgZGlzY3Vzc2lvbnMg YW5kIGNvbnRyaWJ1dGVkIGluCiAgICBvdGhlciB3YXlzIQoKUGxlYXNlIHNlZSBhbHNvIHRoZSBh Y2tub3dsZWRnZW1lbnRzIG9uIHRoZSBwcmV2aW91cyBjb3ZlciBsZXR0ZXJzLgoKQm9xdW4gRmVu ZyAoMSk6CiAga2FsbHN5bXM6IHVzZSB0aGUgY29ycmVjdCBidWZmZXIgc2l6ZSBmb3Igc3ltYm9s cwoKR2FyeSBHdW8gKDIpOgogIHJ1c3Q6IGFkZCBgYnVpbGRfZXJyb3JgIGNyYXRlCiAgdnNwcmlu dGY6IGFkZCBuZXcgYCVwQWAgZm9ybWF0IHNwZWNpZmllcgoKTWlndWVsIE9qZWRhICgxMyk6CiAg a2FsbHN5bXM6IHN1cHBvcnQgImJpZyIga2VybmVsIHN5bWJvbHMKICBrYWxsc3ltczogaW5jcmVh c2UgbWF4aW11bSBrZXJuZWwgc3ltYm9sIGxlbmd0aCB0byA1MTIKICBydXN0OiBhZGQgQyBoZWxw ZXJzCiAgcnVzdDogYWRkIGBjb21waWxlcl9idWlsdGluc2AgY3JhdGUKICBydXN0OiBhZGQgYGFs bG9jYCBjcmF0ZQogIHJ1c3Q6IGFkZCBgbWFjcm9zYCBjcmF0ZQogIHJ1c3Q6IGV4cG9ydCBnZW5l cmF0ZWQgc3ltYm9scwogIHNjcmlwdHM6IGFkZCBgZ2VuZXJhdGVfcnVzdF9hbmFseXplci5weWAK ICBzY3JpcHRzOiBkZWNvZGVfc3RhY2t0cmFjZTogZGVtYW5nbGUgUnVzdCBzeW1ib2xzCiAgZG9j czogYWRkIFJ1c3QgZG9jdW1lbnRhdGlvbgogIEtidWlsZDogYWRkIFJ1c3Qgc3VwcG9ydAogIHNh bXBsZXM6IGFkZCBSdXN0IGV4YW1wbGVzCiAgTUFJTlRBSU5FUlM6IFJ1c3QKCldlZHNvbiBBbG1l aWRhIEZpbGhvICg0KToKICBydXN0OiBhZGQgYGtlcm5lbGAgY3JhdGUncyBgc3luY2AgbW9kdWxl CiAgcnVzdDogYWRkIGBrZXJuZWxgIGNyYXRlCiAgW1JGQ10gZHJpdmVyczogZ3BpbzogUHJpbWVD ZWxsIFBMMDYxIGluIFJ1c3QKICBbUkZDXSBkcml2ZXJzOiBhbmRyb2lkOiBCaW5kZXIgSVBDIGlu IFJ1c3QKCiAuZ2l0aWdub3JlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg IDUgKwogLnJ1c3RmbXQudG9tbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEy ICsKIERvY3VtZW50YXRpb24vZG9jLWd1aWRlL2tlcm5lbC1kb2MucnN0ICAgICAgIHwgICAgMyAr CiBEb2N1bWVudGF0aW9uL2luZGV4LnJzdCAgICAgICAgICAgICAgICAgICAgICB8ICAgIDEgKwog RG9jdW1lbnRhdGlvbi9rYnVpbGQva2J1aWxkLnJzdCAgICAgICAgICAgICAgfCAgICA0ICsKIERv Y3VtZW50YXRpb24vcHJvY2Vzcy9jaGFuZ2VzLnJzdCAgICAgICAgICAgIHwgICA0MiArCiBEb2N1 bWVudGF0aW9uL3J1c3QvYXJjaC1zdXBwb3J0LnJzdCAgICAgICAgICB8ICAgMzUgKwogRG9jdW1l bnRhdGlvbi9ydXN0L2NvZGluZy1ndWlkZWxpbmVzLnJzdCAgICAgfCAgMTUzICsKIERvY3VtZW50 YXRpb24vcnVzdC9nZW5lcmFsLWluZm9ybWF0aW9uLnJzdCAgIHwgICA4MCArCiBEb2N1bWVudGF0 aW9uL3J1c3QvaW5kZXgucnN0ICAgICAgICAgICAgICAgICB8ICAgMjEgKwogRG9jdW1lbnRhdGlv bi9ydXN0L2xvZ28uc3ZnICAgICAgICAgICAgICAgICAgfCAgMzU3ICsrCiBEb2N1bWVudGF0aW9u L3J1c3QvcXVpY2stc3RhcnQucnN0ICAgICAgICAgICB8ICAyMzEgKysKIE1BSU5UQUlORVJTICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxNiArCiBNYWtlZmlsZSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxNTQgKy0KIGFyY2gvYXJtL3J1c3QvdGFy Z2V0Lmpzb24gICAgICAgICAgICAgICAgICAgIHwgICAyNyArCiBhcmNoL2FybTY0L3J1c3QvdGFy Z2V0Lmpzb24gICAgICAgICAgICAgICAgICB8ICAgMzQgKwogYXJjaC9wb3dlcnBjL3J1c3QvdGFy Z2V0Lmpzb24gICAgICAgICAgICAgICAgfCAgIDI5ICsKIGFyY2gvcmlzY3YvTWFrZWZpbGUgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgICAgMSArCiBhcmNoL3Jpc2N2L3J1c3QvcnYzMmltYS5q c29uICAgICAgICAgICAgICAgICB8ICAgMzYgKwogYXJjaC9yaXNjdi9ydXN0L3J2MzJpbWFjLmpz b24gICAgICAgICAgICAgICAgfCAgIDM2ICsKIGFyY2gvcmlzY3YvcnVzdC9ydjY0aW1hLmpzb24g ICAgICAgICAgICAgICAgIHwgICAzNiArCiBhcmNoL3Jpc2N2L3J1c3QvcnY2NGltYWMuanNvbiAg ICAgICAgICAgICAgICB8ICAgMzYgKwogYXJjaC94ODYvcnVzdC90YXJnZXQuanNvbiAgICAgICAg ICAgICAgICAgICAgfCAgIDM2ICsKIGRyaXZlcnMvYW5kcm9pZC9LY29uZmlnICAgICAgICAgICAg ICAgICAgICAgIHwgICAgNyArCiBkcml2ZXJzL2FuZHJvaWQvTWFrZWZpbGUgICAgICAgICAgICAg ICAgICAgICB8ICAgIDIgKwogZHJpdmVycy9hbmRyb2lkL2FsbG9jYXRpb24ucnMgICAgICAgICAg ICAgICAgfCAgMjY2ICsrCiBkcml2ZXJzL2FuZHJvaWQvY29udGV4dC5ycyAgICAgICAgICAgICAg ICAgICB8ICAgODAgKwogZHJpdmVycy9hbmRyb2lkL2RlZnMucnMgICAgICAgICAgICAgICAgICAg ICAgfCAgIDk5ICsKIGRyaXZlcnMvYW5kcm9pZC9ub2RlLnJzICAgICAgICAgICAgICAgICAgICAg IHwgIDQ3NiArKysKIGRyaXZlcnMvYW5kcm9pZC9wcm9jZXNzLnJzICAgICAgICAgICAgICAgICAg IHwgIDk2MSArKysrKwogZHJpdmVycy9hbmRyb2lkL3JhbmdlX2FsbG9jLnJzICAgICAgICAgICAg ICAgfCAgMTg5ICsKIGRyaXZlcnMvYW5kcm9pZC9ydXN0X2JpbmRlci5ycyAgICAgICAgICAgICAg IHwgIDExMSArCiBkcml2ZXJzL2FuZHJvaWQvdGhyZWFkLnJzICAgICAgICAgICAgICAgICAgICB8 ICA4NzEgKysrKysKIGRyaXZlcnMvYW5kcm9pZC90cmFuc2FjdGlvbi5ycyAgICAgICAgICAgICAg IHwgIDMyNiArKwogZHJpdmVycy9ncGlvL0tjb25maWcgICAgICAgICAgICAgICAgICAgICAgICAg fCAgICA4ICsKIGRyaXZlcnMvZ3Bpby9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgICAgIHwg ICAgMSArCiBkcml2ZXJzL2dwaW8vZ3Bpb19wbDA2MV9ydXN0LnJzICAgICAgICAgICAgICB8ICAz NzAgKysKIGluY2x1ZGUvbGludXgva2FsbHN5bXMuaCAgICAgICAgICAgICAgICAgICAgIHwgICAg MiArLQogaW5jbHVkZS9saW51eC9zcGlubG9jay5oICAgICAgICAgICAgICAgICAgICAgfCAgIDE3 ICstCiBpbmNsdWRlL3VhcGkvbGludXgvYW5kcm9pZC9iaW5kZXIuaCAgICAgICAgICB8ICAgMjgg Ky0KIGluaXQvS2NvbmZpZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA0NSAr LQoga2VybmVsL2thbGxzeW1zLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDI2ICst CiBrZXJuZWwvbGl2ZXBhdGNoL2NvcmUuYyAgICAgICAgICAgICAgICAgICAgICB8ICAgIDQgKy0K IGtlcm5lbC9wcmludGsvcHJpbnRrLmMgICAgICAgICAgICAgICAgICAgICAgIHwgICAgNSArLQog bGliL0tjb25maWcuZGVidWcgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTQ0ICsKIGxp Yi9ydXN0LmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxNCArCiBsaWIv dnNwcmludGYuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDcgKwogcnVzdC8u Z2l0aWdub3JlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICA3ICsKIHJ1c3QvTWFr ZWZpbGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDM3NCArKwogcnVzdC9hbGxv Yy9SRUFETUUubWQgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDMyICsKIHJ1c3QvYWxsb2Mv YWxsb2MucnMgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDQyNyArKysKIHJ1c3QvYWxsb2Mv Ym9ycm93LnJzICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDQ5OCArKysKIHJ1c3QvYWxsb2Mv Ym94ZWQucnMgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTg0NyArKysrKysrKysrCiBydXN0 L2FsbG9jL2NvbGxlY3Rpb25zL21vZC5ycyAgICAgICAgICAgICAgICB8ICAxNTYgKwogcnVzdC9h bGxvYy9mbXQucnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNjAxICsrKysKIHJ1c3Qv YWxsb2MvbGliLnJzICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIxNyArKwogcnVzdC9h bGxvYy9tYWNyb3MucnMgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTI2ICsKIHJ1c3QvYWxs b2MvcmF3X3ZlYy5ycyAgICAgICAgICAgICAgICAgICAgICAgIHwgIDU0OSArKysKIHJ1c3QvYWxs b2Mvc2xpY2UucnMgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTI3OSArKysrKysrCiBydXN0 L2FsbG9jL3N0ci5ycyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA2MjQgKysrKwogcnVz dC9hbGxvYy9zdHJpbmcucnMgICAgICAgICAgICAgICAgICAgICAgICAgfCAyODY0ICsrKysrKysr KysrKysrKwogcnVzdC9hbGxvYy92ZWMvZHJhaW4ucnMgICAgICAgICAgICAgICAgICAgICAgfCAg MTU5ICsKIHJ1c3QvYWxsb2MvdmVjL2RyYWluX2ZpbHRlci5ycyAgICAgICAgICAgICAgIHwgIDE0 NSArCiBydXN0L2FsbG9jL3ZlYy9pbnRvX2l0ZXIucnMgICAgICAgICAgICAgICAgICB8ICAzNTYg KysKIHJ1c3QvYWxsb2MvdmVjL2lzX3plcm8ucnMgICAgICAgICAgICAgICAgICAgIHwgIDEwNiAr CiBydXN0L2FsbG9jL3ZlYy9tb2QucnMgICAgICAgICAgICAgICAgICAgICAgICB8IDMzNTkgKysr KysrKysrKysrKysrKysrCiBydXN0L2FsbG9jL3ZlYy9wYXJ0aWFsX2VxLnJzICAgICAgICAgICAg ICAgICB8ICAgNDkgKwogcnVzdC9hbGxvYy92ZWMvc2V0X2xlbl9vbl9kcm9wLnJzICAgICAgICAg ICAgfCAgIDMwICsKIHJ1c3QvYWxsb2MvdmVjL3NwZWNfZXh0ZW5kLnJzICAgICAgICAgICAgICAg IHwgIDE3MiArCiBydXN0L2JpbmRnZW5fcGFyYW1ldGVycyAgICAgICAgICAgICAgICAgICAgICB8 ICAgMTMgKwogcnVzdC9idWlsZF9lcnJvci5ycyAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg IDI5ICsKIHJ1c3QvY29tcGlsZXJfYnVpbHRpbnMucnMgICAgICAgICAgICAgICAgICAgIHwgICA1 NyArCiBydXN0L2V4cG9ydHMuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTkg KwogcnVzdC9oZWxwZXJzLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNTI5ICsr KwogcnVzdC9rZXJuZWwvYWxsb2NhdG9yLnJzICAgICAgICAgICAgICAgICAgICAgfCAgIDY1ICsK IHJ1c3Qva2VybmVsL2FtYmEucnMgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDI1OSArKwog cnVzdC9rZXJuZWwvYmluZGluZ3MucnMgICAgICAgICAgICAgICAgICAgICAgfCAgIDQ3ICsKIHJ1 c3Qva2VybmVsL2JpbmRpbmdzX2hlbHBlci5oICAgICAgICAgICAgICAgIHwgICAzMCArCiBydXN0 L2tlcm5lbC9idWZmZXIucnMgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNTIgKwogcnVzdC9r ZXJuZWwvYnVpbGRfYXNzZXJ0LnJzICAgICAgICAgICAgICAgICAgfCAgIDgwICsKIHJ1c3Qva2Vy bmVsL2NfdHlwZXMucnMgICAgICAgICAgICAgICAgICAgICAgIHwgIDExOSArCiBydXN0L2tlcm5l bC9jaHJkZXYucnMgICAgICAgICAgICAgICAgICAgICAgICB8ICAyMDkgKysKIHJ1c3Qva2VybmVs L2Nsay5ycyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA3NSArCiBydXN0L2tlcm5lbC9j cmVkLnJzICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNzMgKwogcnVzdC9rZXJuZWwvZGV2 aWNlLnJzICAgICAgICAgICAgICAgICAgICAgICAgfCAgNTU0ICsrKwogcnVzdC9rZXJuZWwvZHJp dmVyLnJzICAgICAgICAgICAgICAgICAgICAgICAgfCAgNDQwICsrKwogcnVzdC9rZXJuZWwvZXJy b3IucnMgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNTQyICsrKwogcnVzdC9rZXJuZWwvZmls ZS5ycyAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTQ3ICsKIHJ1c3Qva2VybmVsL2ZpbGVf b3BlcmF0aW9ucy5ycyAgICAgICAgICAgICAgIHwgIDczNCArKysrCiBydXN0L2tlcm5lbC9ncGlv LnJzICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA0NzcgKysrCiBydXN0L2tlcm5lbC9pb19i dWZmZXIucnMgICAgICAgICAgICAgICAgICAgICB8ICAxNTMgKwogcnVzdC9rZXJuZWwvaW9fbWVt LnJzICAgICAgICAgICAgICAgICAgICAgICAgfCAgMjI3ICsrCiBydXN0L2tlcm5lbC9pb3ZfaXRl ci5ycyAgICAgICAgICAgICAgICAgICAgICB8ICAgODEgKwogcnVzdC9rZXJuZWwvaXJxLnJzICAg ICAgICAgICAgICAgICAgICAgICAgICAgfCAgNDA5ICsrKwogcnVzdC9rZXJuZWwvbGliLnJzICAg ICAgICAgICAgICAgICAgICAgICAgICAgfCAgMjYxICsrCiBydXN0L2tlcm5lbC9saW5rZWRfbGlz dC5ycyAgICAgICAgICAgICAgICAgICB8ICAyNDcgKysKIHJ1c3Qva2VybmVsL21pc2NkZXYucnMg ICAgICAgICAgICAgICAgICAgICAgIHwgIDI4MSArKwogcnVzdC9rZXJuZWwvbW0ucnMgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfCAgMTQ5ICsKIHJ1c3Qva2VybmVsL21vZHVsZV9wYXJhbS5y cyAgICAgICAgICAgICAgICAgIHwgIDQ5NyArKysKIHJ1c3Qva2VybmVsL29mLnJzICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgICA2MyArCiBydXN0L2tlcm5lbC9wYWdlcy5ycyAgICAgICAg ICAgICAgICAgICAgICAgICB8ICAxNDQgKwogcnVzdC9rZXJuZWwvcGxhdGZvcm0ucnMgICAgICAg ICAgICAgICAgICAgICAgfCAgMjI0ICsrCiBydXN0L2tlcm5lbC9wb3dlci5ycyAgICAgICAgICAg ICAgICAgICAgICAgICB8ICAxMTggKwogcnVzdC9rZXJuZWwvcHJlbHVkZS5ycyAgICAgICAgICAg ICAgICAgICAgICAgfCAgIDM2ICsKIHJ1c3Qva2VybmVsL3ByaW50LnJzICAgICAgICAgICAgICAg ICAgICAgICAgIHwgIDQxNyArKysKIHJ1c3Qva2VybmVsL3JhbmRvbS5ycyAgICAgICAgICAgICAg ICAgICAgICAgIHwgICA1MCArCiBydXN0L2tlcm5lbC9yYXdfbGlzdC5ycyAgICAgICAgICAgICAg ICAgICAgICB8ICAzNjEgKysKIHJ1c3Qva2VybmVsL3JidHJlZS5ycyAgICAgICAgICAgICAgICAg ICAgICAgIHwgIDU2MiArKysKIHJ1c3Qva2VybmVsL3Jldm9jYWJsZS5ycyAgICAgICAgICAgICAg ICAgICAgIHwgIDE2MyArCiBydXN0L2tlcm5lbC9zZWN1cml0eS5ycyAgICAgICAgICAgICAgICAg ICAgICB8ICAgMzYgKwogcnVzdC9rZXJuZWwvc3RhdGljX2Fzc2VydC5ycyAgICAgICAgICAgICAg ICAgfCAgIDM5ICsKIHJ1c3Qva2VybmVsL3N0ZF92ZW5kb3IucnMgICAgICAgICAgICAgICAgICAg IHwgIDE1MCArCiBydXN0L2tlcm5lbC9zdHIucnMgICAgICAgICAgICAgICAgICAgICAgICAgICB8 ICA0MDEgKysrCiBydXN0L2tlcm5lbC9zeW5jL2FyYy5ycyAgICAgICAgICAgICAgICAgICAgICB8 ICA1MDAgKysrCiBydXN0L2tlcm5lbC9zeW5jL2NvbmR2YXIucnMgICAgICAgICAgICAgICAgICB8 ICAxMzggKwogcnVzdC9rZXJuZWwvc3luYy9ndWFyZC5ycyAgICAgICAgICAgICAgICAgICAgfCAg MTUwICsKIHJ1c3Qva2VybmVsL3N5bmMvbG9ja2VkX2J5LnJzICAgICAgICAgICAgICAgIHwgIDEx MiArCiBydXN0L2tlcm5lbC9zeW5jL21vZC5ycyAgICAgICAgICAgICAgICAgICAgICB8ICAxNTcg KwogcnVzdC9rZXJuZWwvc3luYy9tdXRleC5ycyAgICAgICAgICAgICAgICAgICAgfCAgMTEyICsK IHJ1c3Qva2VybmVsL3N5bmMvcmV2b2NhYmxlX211dGV4LnJzICAgICAgICAgIHwgIDE4NCArCiBy dXN0L2tlcm5lbC9zeW5jL3J3c2VtLnJzICAgICAgICAgICAgICAgICAgICB8ICAxNDcgKwogcnVz dC9rZXJuZWwvc3luYy9zZXFsb2NrLnJzICAgICAgICAgICAgICAgICAgfCAgMjAyICsrCiBydXN0 L2tlcm5lbC9zeW5jL3NwaW5sb2NrLnJzICAgICAgICAgICAgICAgICB8ICAxODAgKwogcnVzdC9r ZXJuZWwvc3lzY3RsLnJzICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTk3ICsKIHJ1c3Qva2Vy bmVsL3Rhc2sucnMgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDE4MiArCiBydXN0L2tlcm5l bC90eXBlcy5ycyAgICAgICAgICAgICAgICAgICAgICAgICB8ICA0ODYgKysrCiBydXN0L2tlcm5l bC91c2VyX3B0ci5ycyAgICAgICAgICAgICAgICAgICAgICB8ICAxNzUgKwogcnVzdC9tYWNyb3Mv aGVscGVycy5ycyAgICAgICAgICAgICAgICAgICAgICAgfCAgIDc5ICsKIHJ1c3QvbWFjcm9zL2xp Yi5ycyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA5NCArCiBydXN0L21hY3Jvcy9tb2R1 bGUucnMgICAgICAgICAgICAgICAgICAgICAgICB8ICA2MzEgKysrKwogc2FtcGxlcy9LY29uZmln ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAyICsKIHNhbXBsZXMvTWFrZWZpbGUg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMSArCiBzYW1wbGVzL3J1c3QvS2NvbmZp ZyAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxMjMgKwogc2FtcGxlcy9ydXN0L01ha2VmaWxl ICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEzICsKIHNhbXBsZXMvcnVzdC9ydXN0X2NocmRl di5ycyAgICAgICAgICAgICAgICAgIHwgICA1MCArCiBzYW1wbGVzL3J1c3QvcnVzdF9taW5pbWFs LnJzICAgICAgICAgICAgICAgICB8ICAgMzUgKwogc2FtcGxlcy9ydXN0L3J1c3RfbWlzY2Rldi5y cyAgICAgICAgICAgICAgICAgfCAgMTQ0ICsKIHNhbXBsZXMvcnVzdC9ydXN0X21vZHVsZV9wYXJh bWV0ZXJzLnJzICAgICAgIHwgICA2OSArCiBzYW1wbGVzL3J1c3QvcnVzdF9wbGF0Zm9ybS5ycyAg ICAgICAgICAgICAgICB8ICAgMjIgKwogc2FtcGxlcy9ydXN0L3J1c3RfcHJpbnQucnMgICAgICAg ICAgICAgICAgICAgfCAgIDU0ICsKIHNhbXBsZXMvcnVzdC9ydXN0X3JhbmRvbS5ycyAgICAgICAg ICAgICAgICAgIHwgICA2MSArCiBzYW1wbGVzL3J1c3QvcnVzdF9zZW1hcGhvcmUucnMgICAgICAg ICAgICAgICB8ICAxNzIgKwogc2FtcGxlcy9ydXN0L3J1c3Rfc2VtYXBob3JlX2MuYyAgICAgICAg ICAgICAgfCAgMjEyICsrCiBzYW1wbGVzL3J1c3QvcnVzdF9zdGFja19wcm9iaW5nLnJzICAgICAg ICAgICB8ICAgMzYgKwogc2FtcGxlcy9ydXN0L3J1c3Rfc3luYy5ycyAgICAgICAgICAgICAgICAg ICAgfCAgIDc4ICsKIHNjcmlwdHMvS2NvbmZpZy5pbmNsdWRlICAgICAgICAgICAgICAgICAgICAg IHwgICAgNiArLQogc2NyaXB0cy9NYWtlZmlsZS5idWlsZCAgICAgICAgICAgICAgICAgICAgICAg fCAgIDY1ICsKIHNjcmlwdHMvTWFrZWZpbGUuZGVidWcgICAgICAgICAgICAgICAgICAgICAgIHwg ICAxMCArCiBzY3JpcHRzL01ha2VmaWxlLmxpYiAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg MTIgKwogc2NyaXB0cy9NYWtlZmlsZS5tb2RmaW5hbCAgICAgICAgICAgICAgICAgICAgfCAgICA4 ICstCiBzY3JpcHRzL2NjLXZlcnNpb24uc2ggICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTIg Ky0KIHNjcmlwdHMvZGVjb2RlX3N0YWNrdHJhY2Uuc2ggICAgICAgICAgICAgICAgIHwgICAxNCAr CiBzY3JpcHRzL2dlbmVyYXRlX3J1c3RfYW5hbHl6ZXIucHkgICAgICAgICAgICB8ICAxMzMgKwog c2NyaXB0cy9pc19ydXN0X21vZHVsZS5zaCAgICAgICAgICAgICAgICAgICAgfCAgIDEzICsKIHNj cmlwdHMva2FsbHN5bXMuYyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA0MCArLQogc2Ny aXB0cy9rY29uZmlnL2NvbmZkYXRhLmMgICAgICAgICAgICAgICAgICAgfCAgIDc1ICsKIHNjcmlw dHMvbWluLXRvb2wtdmVyc2lvbi5zaCAgICAgICAgICAgICAgICAgIHwgICAgNiArCiBzY3JpcHRz L3J1c3QtaXMtYXZhaWxhYmxlLWJpbmRnZW4tbGliY2xhbmcuaCB8ICAgIDIgKwogc2NyaXB0cy9y dXN0LWlzLWF2YWlsYWJsZS5zaCAgICAgICAgICAgICAgICAgfCAgMTU4ICsKIHRvb2xzL2luY2x1 ZGUvbGludXgva2FsbHN5bXMuaCAgICAgICAgICAgICAgIHwgICAgMiArLQogdG9vbHMvbGliL3Bl cmYvaW5jbHVkZS9wZXJmL2V2ZW50LmggICAgICAgICAgfCAgICAyICstCiB0b29scy9saWIvc3lt Ym9sL2thbGxzeW1zLmggICAgICAgICAgICAgICAgICB8ICAgIDIgKy0KIDE2MiBmaWxlcyBjaGFu Z2VkLCAzNDM0MSBpbnNlcnRpb25zKCspLCA1NyBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEw MDY0NCAucnVzdGZtdC50b21sCiBjcmVhdGUgbW9kZSAxMDA2NDQgRG9jdW1lbnRhdGlvbi9ydXN0 L2FyY2gtc3VwcG9ydC5yc3QKIGNyZWF0ZSBtb2RlIDEwMDY0NCBEb2N1bWVudGF0aW9uL3J1c3Qv Y29kaW5nLWd1aWRlbGluZXMucnN0CiBjcmVhdGUgbW9kZSAxMDA2NDQgRG9jdW1lbnRhdGlvbi9y dXN0L2dlbmVyYWwtaW5mb3JtYXRpb24ucnN0CiBjcmVhdGUgbW9kZSAxMDA2NDQgRG9jdW1lbnRh dGlvbi9ydXN0L2luZGV4LnJzdAogY3JlYXRlIG1vZGUgMTAwNjQ0IERvY3VtZW50YXRpb24vcnVz dC9sb2dvLnN2ZwogY3JlYXRlIG1vZGUgMTAwNjQ0IERvY3VtZW50YXRpb24vcnVzdC9xdWljay1z dGFydC5yc3QKIGNyZWF0ZSBtb2RlIDEwMDY0NCBhcmNoL2FybS9ydXN0L3RhcmdldC5qc29uCiBj cmVhdGUgbW9kZSAxMDA2NDQgYXJjaC9hcm02NC9ydXN0L3RhcmdldC5qc29uCiBjcmVhdGUgbW9k ZSAxMDA2NDQgYXJjaC9wb3dlcnBjL3J1c3QvdGFyZ2V0Lmpzb24KIGNyZWF0ZSBtb2RlIDEwMDY0 NCBhcmNoL3Jpc2N2L3J1c3QvcnYzMmltYS5qc29uCiBjcmVhdGUgbW9kZSAxMDA2NDQgYXJjaC9y aXNjdi9ydXN0L3J2MzJpbWFjLmpzb24KIGNyZWF0ZSBtb2RlIDEwMDY0NCBhcmNoL3Jpc2N2L3J1 c3QvcnY2NGltYS5qc29uCiBjcmVhdGUgbW9kZSAxMDA2NDQgYXJjaC9yaXNjdi9ydXN0L3J2NjRp bWFjLmpzb24KIGNyZWF0ZSBtb2RlIDEwMDY0NCBhcmNoL3g4Ni9ydXN0L3RhcmdldC5qc29uCiBj cmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9hbmRyb2lkL2FsbG9jYXRpb24ucnMKIGNyZWF0ZSBt b2RlIDEwMDY0NCBkcml2ZXJzL2FuZHJvaWQvY29udGV4dC5ycwogY3JlYXRlIG1vZGUgMTAwNjQ0 IGRyaXZlcnMvYW5kcm9pZC9kZWZzLnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9hbmRy b2lkL25vZGUucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2FuZHJvaWQvcHJvY2Vzcy5y cwogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvYW5kcm9pZC9yYW5nZV9hbGxvYy5ycwogY3Jl YXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvYW5kcm9pZC9ydXN0X2JpbmRlci5ycwogY3JlYXRlIG1v ZGUgMTAwNjQ0IGRyaXZlcnMvYW5kcm9pZC90aHJlYWQucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBk cml2ZXJzL2FuZHJvaWQvdHJhbnNhY3Rpb24ucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJz L2dwaW8vZ3Bpb19wbDA2MV9ydXN0LnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL3J1c3QuaAog Y3JlYXRlIG1vZGUgMTAwNjQ0IHJ1c3QvLmdpdGlnbm9yZQogY3JlYXRlIG1vZGUgMTAwNjQ0IHJ1 c3QvTWFrZWZpbGUKIGNyZWF0ZSBtb2RlIDEwMDY0NCBydXN0L2FsbG9jL1JFQURNRS5tZAogY3Jl YXRlIG1vZGUgMTAwNjQ0IHJ1c3QvYWxsb2MvYWxsb2MucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBy dXN0L2FsbG9jL2JvcnJvdy5ycwogY3JlYXRlIG1vZGUgMTAwNjQ0IHJ1c3QvYWxsb2MvYm94ZWQu cnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBydXN0L2FsbG9jL2NvbGxlY3Rpb25zL21vZC5ycwogY3Jl YXRlIG1vZGUgMTAwNjQ0IHJ1c3QvYWxsb2MvZm10LnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVz dC9hbGxvYy9saWIucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBydXN0L2FsbG9jL21hY3Jvcy5ycwog Y3JlYXRlIG1vZGUgMTAwNjQ0IHJ1c3QvYWxsb2MvcmF3X3ZlYy5ycwogY3JlYXRlIG1vZGUgMTAw NjQ0IHJ1c3QvYWxsb2Mvc2xpY2UucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBydXN0L2FsbG9jL3N0 ci5ycwogY3JlYXRlIG1vZGUgMTAwNjQ0IHJ1c3QvYWxsb2Mvc3RyaW5nLnJzCiBjcmVhdGUgbW9k ZSAxMDA2NDQgcnVzdC9hbGxvYy92ZWMvZHJhaW4ucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBydXN0 L2FsbG9jL3ZlYy9kcmFpbl9maWx0ZXIucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBydXN0L2FsbG9j L3ZlYy9pbnRvX2l0ZXIucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBydXN0L2FsbG9jL3ZlYy9pc196 ZXJvLnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9hbGxvYy92ZWMvbW9kLnJzCiBjcmVhdGUg bW9kZSAxMDA2NDQgcnVzdC9hbGxvYy92ZWMvcGFydGlhbF9lcS5ycwogY3JlYXRlIG1vZGUgMTAw NjQ0IHJ1c3QvYWxsb2MvdmVjL3NldF9sZW5fb25fZHJvcC5ycwogY3JlYXRlIG1vZGUgMTAwNjQ0 IHJ1c3QvYWxsb2MvdmVjL3NwZWNfZXh0ZW5kLnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9i aW5kZ2VuX3BhcmFtZXRlcnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBydXN0L2J1aWxkX2Vycm9yLnJz CiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9jb21waWxlcl9idWlsdGlucy5ycwogY3JlYXRlIG1v ZGUgMTAwNjQ0IHJ1c3QvZXhwb3J0cy5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9oZWxwZXJz LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBydXN0L2tlcm5lbC9hbGxvY2F0b3IucnMKIGNyZWF0ZSBt b2RlIDEwMDY0NCBydXN0L2tlcm5lbC9hbWJhLnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9r ZXJuZWwvYmluZGluZ3MucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBydXN0L2tlcm5lbC9iaW5kaW5n c19oZWxwZXIuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHJ1c3Qva2VybmVsL2J1ZmZlci5ycwogY3Jl YXRlIG1vZGUgMTAwNjQ0IHJ1c3Qva2VybmVsL2J1aWxkX2Fzc2VydC5ycwogY3JlYXRlIG1vZGUg MTAwNjQ0IHJ1c3Qva2VybmVsL2NfdHlwZXMucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBydXN0L2tl cm5lbC9jaHJkZXYucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBydXN0L2tlcm5lbC9jbGsucnMKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBydXN0L2tlcm5lbC9jcmVkLnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQg cnVzdC9rZXJuZWwvZGV2aWNlLnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9rZXJuZWwvZHJp dmVyLnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9rZXJuZWwvZXJyb3IucnMKIGNyZWF0ZSBt b2RlIDEwMDY0NCBydXN0L2tlcm5lbC9maWxlLnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9r ZXJuZWwvZmlsZV9vcGVyYXRpb25zLnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9rZXJuZWwv Z3Bpby5ycwogY3JlYXRlIG1vZGUgMTAwNjQ0IHJ1c3Qva2VybmVsL2lvX2J1ZmZlci5ycwogY3Jl YXRlIG1vZGUgMTAwNjQ0IHJ1c3Qva2VybmVsL2lvX21lbS5ycwogY3JlYXRlIG1vZGUgMTAwNjQ0 IHJ1c3Qva2VybmVsL2lvdl9pdGVyLnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9rZXJuZWwv aXJxLnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9rZXJuZWwvbGliLnJzCiBjcmVhdGUgbW9k ZSAxMDA2NDQgcnVzdC9rZXJuZWwvbGlua2VkX2xpc3QucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBy dXN0L2tlcm5lbC9taXNjZGV2LnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9rZXJuZWwvbW0u cnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBydXN0L2tlcm5lbC9tb2R1bGVfcGFyYW0ucnMKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBydXN0L2tlcm5lbC9vZi5ycwogY3JlYXRlIG1vZGUgMTAwNjQ0IHJ1c3Qv a2VybmVsL3BhZ2VzLnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9rZXJuZWwvcGxhdGZvcm0u cnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBydXN0L2tlcm5lbC9wb3dlci5ycwogY3JlYXRlIG1vZGUg MTAwNjQ0IHJ1c3Qva2VybmVsL3ByZWx1ZGUucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBydXN0L2tl cm5lbC9wcmludC5ycwogY3JlYXRlIG1vZGUgMTAwNjQ0IHJ1c3Qva2VybmVsL3JhbmRvbS5ycwog Y3JlYXRlIG1vZGUgMTAwNjQ0IHJ1c3Qva2VybmVsL3Jhd19saXN0LnJzCiBjcmVhdGUgbW9kZSAx MDA2NDQgcnVzdC9rZXJuZWwvcmJ0cmVlLnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9rZXJu ZWwvcmV2b2NhYmxlLnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9rZXJuZWwvc2VjdXJpdHku cnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBydXN0L2tlcm5lbC9zdGF0aWNfYXNzZXJ0LnJzCiBjcmVh dGUgbW9kZSAxMDA2NDQgcnVzdC9rZXJuZWwvc3RkX3ZlbmRvci5ycwogY3JlYXRlIG1vZGUgMTAw NjQ0IHJ1c3Qva2VybmVsL3N0ci5ycwogY3JlYXRlIG1vZGUgMTAwNjQ0IHJ1c3Qva2VybmVsL3N5 bmMvYXJjLnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9rZXJuZWwvc3luYy9jb25kdmFyLnJz CiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9rZXJuZWwvc3luYy9ndWFyZC5ycwogY3JlYXRlIG1v ZGUgMTAwNjQ0IHJ1c3Qva2VybmVsL3N5bmMvbG9ja2VkX2J5LnJzCiBjcmVhdGUgbW9kZSAxMDA2 NDQgcnVzdC9rZXJuZWwvc3luYy9tb2QucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBydXN0L2tlcm5l bC9zeW5jL211dGV4LnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9rZXJuZWwvc3luYy9yZXZv Y2FibGVfbXV0ZXgucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBydXN0L2tlcm5lbC9zeW5jL3J3c2Vt LnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9rZXJuZWwvc3luYy9zZXFsb2NrLnJzCiBjcmVh dGUgbW9kZSAxMDA2NDQgcnVzdC9rZXJuZWwvc3luYy9zcGlubG9jay5ycwogY3JlYXRlIG1vZGUg MTAwNjQ0IHJ1c3Qva2VybmVsL3N5c2N0bC5ycwogY3JlYXRlIG1vZGUgMTAwNjQ0IHJ1c3Qva2Vy bmVsL3Rhc2sucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBydXN0L2tlcm5lbC90eXBlcy5ycwogY3Jl YXRlIG1vZGUgMTAwNjQ0IHJ1c3Qva2VybmVsL3VzZXJfcHRyLnJzCiBjcmVhdGUgbW9kZSAxMDA2 NDQgcnVzdC9tYWNyb3MvaGVscGVycy5ycwogY3JlYXRlIG1vZGUgMTAwNjQ0IHJ1c3QvbWFjcm9z L2xpYi5ycwogY3JlYXRlIG1vZGUgMTAwNjQ0IHJ1c3QvbWFjcm9zL21vZHVsZS5ycwogY3JlYXRl IG1vZGUgMTAwNjQ0IHNhbXBsZXMvcnVzdC9LY29uZmlnCiBjcmVhdGUgbW9kZSAxMDA2NDQgc2Ft cGxlcy9ydXN0L01ha2VmaWxlCiBjcmVhdGUgbW9kZSAxMDA2NDQgc2FtcGxlcy9ydXN0L3J1c3Rf Y2hyZGV2LnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgc2FtcGxlcy9ydXN0L3J1c3RfbWluaW1hbC5y cwogY3JlYXRlIG1vZGUgMTAwNjQ0IHNhbXBsZXMvcnVzdC9ydXN0X21pc2NkZXYucnMKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBzYW1wbGVzL3J1c3QvcnVzdF9tb2R1bGVfcGFyYW1ldGVycy5ycwogY3Jl YXRlIG1vZGUgMTAwNjQ0IHNhbXBsZXMvcnVzdC9ydXN0X3BsYXRmb3JtLnJzCiBjcmVhdGUgbW9k ZSAxMDA2NDQgc2FtcGxlcy9ydXN0L3J1c3RfcHJpbnQucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBz YW1wbGVzL3J1c3QvcnVzdF9yYW5kb20ucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzYW1wbGVzL3J1 c3QvcnVzdF9zZW1hcGhvcmUucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzYW1wbGVzL3J1c3QvcnVz dF9zZW1hcGhvcmVfYy5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgc2FtcGxlcy9ydXN0L3J1c3Rfc3Rh Y2tfcHJvYmluZy5ycwogY3JlYXRlIG1vZGUgMTAwNjQ0IHNhbXBsZXMvcnVzdC9ydXN0X3N5bmMu cnMKIGNyZWF0ZSBtb2RlIDEwMDc1NSBzY3JpcHRzL2dlbmVyYXRlX3J1c3RfYW5hbHl6ZXIucHkK IGNyZWF0ZSBtb2RlIDEwMDc1NSBzY3JpcHRzL2lzX3J1c3RfbW9kdWxlLnNoCiBjcmVhdGUgbW9k ZSAxMDA2NDQgc2NyaXB0cy9ydXN0LWlzLWF2YWlsYWJsZS1iaW5kZ2VuLWxpYmNsYW5nLmgKIGNy ZWF0ZSBtb2RlIDEwMDc1NSBzY3JpcHRzL3J1c3QtaXMtYXZhaWxhYmxlLnNoCgoKYmFzZS1jb21t aXQ6IGRmZDQyZmFjZjFlNGFkYTAyMWI5MzliNGUxOWM5MzVkY2RkNTU1NjYKLS0gCjIuMzUuMQoK Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LXJp c2N2IG1haWxpbmcgbGlzdApsaW51eC1yaXNjdkBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9s aXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtcmlzY3YK 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 Received: from lists.ozlabs.org (lists.ozlabs.org [112.213.38.117]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id AE1D0C433F5 for ; Sat, 12 Feb 2022 22:06:57 +0000 (UTC) Received: from boromir.ozlabs.org (localhost [IPv6:::1]) by lists.ozlabs.org (Postfix) with ESMTP id 4Jx4Mg3nF0z3cN3 for ; Sun, 13 Feb 2022 09:06:55 +1100 (AEDT) Authentication-Results: lists.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256 header.s=k20201202 header.b=qC0NXLNK; dkim-atps=neutral Authentication-Results: lists.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=kernel.org (client-ip=2604:1380:4641:c500::1; helo=dfw.source.kernel.org; envelope-from=ojeda@kernel.org; receiver=) Authentication-Results: lists.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256 header.s=k20201202 header.b=qC0NXLNK; dkim-atps=neutral Received: from dfw.source.kernel.org (dfw.source.kernel.org [IPv6:2604:1380:4641:c500::1]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 4JwrLQ6YLWz30QD for ; Sun, 13 Feb 2022 00:05:02 +1100 (AEDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 7800160E93; Sat, 12 Feb 2022 13:04:59 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id E7F25C340E7; Sat, 12 Feb 2022 13:04:55 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1644671098; bh=v+g01wwGWAex++1H14Q1oSi8BHd4lI/w8GhNcGEtS6A=; h=From:To:Cc:Subject:Date:From; b=qC0NXLNKqYgXKlDzZDGNowkHQtBQO8wyF8dTxEdBUW61ZG9Ch7DdxlItr3qtWAUWc AkYr25CRoM8CGPTqNf6HqhUwxly6g949wZFvfILdaZ0xDGEVHc/g/q8MPhcaqjCBLu FdWV5Qy/iOSmfYFPhlKDcPHGbnZGIptjScdycsEnSIrXfxIhXx/fuF6oGD/66fjYVa nrRU2gpSRIjOU6YCNOiJR/Onu2saw3MjZw5DxPUvOHd+AFE7vyG/fy+NYK1UNhF82M OTJcSrZ9zXFZDHsTAv4EZTw93UxAlfx1L2ZrnwVaC36+4//nN5S1/dd7j4/ThaheTl 2/VQpGuVKCtIw== From: Miguel Ojeda To: Linus Torvalds , Greg Kroah-Hartman Subject: [PATCH v4 00/20] Rust support Date: Sat, 12 Feb 2022 14:03:26 +0100 Message-Id: <20220212130410.6901-1-ojeda@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Mailman-Approved-At: Sun, 13 Feb 2022 09:06:17 +1100 X-BeenThere: linuxppc-dev@lists.ozlabs.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Linux on PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: rust-for-linux@vger.kernel.org, linux-doc@vger.kernel.org, linux-kbuild@vger.kernel.org, linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org, linux-gpio@vger.kernel.org, Miguel Ojeda , live-patching@vger.kernel.org, linux-riscv@lists.infradead.org, linuxppc-dev@lists.ozlabs.org, linux-arm-kernel@lists.infradead.org Errors-To: linuxppc-dev-bounces+linuxppc-dev=archiver.kernel.org@lists.ozlabs.org Sender: "Linuxppc-dev" Rust support This is the patch series (v4) to add support for Rust as a second language to the Linux kernel. If you are interested in following this effort, please join us in the mailing list at: rust-for-linux@vger.kernel.org and take a look at the project itself at: https://github.com/Rust-for-Linux As usual, special thanks go to ISRG (Internet Security Research Group) and Google for their financial support on this endeavor. Cheers, Miguel -- # Rust support This cover letter explains the major changes and updates done since the previous ones. For those, please see: RFC: https://lore.kernel.org/lkml/20210414184604.23473-1-ojeda@kernel.org/ v1: https://lore.kernel.org/lkml/20210704202756.29107-1-ojeda@kernel.org/ v2: https://lore.kernel.org/lkml/20211206140313.5653-1-ojeda@kernel.org/ v3: https://lore.kernel.org/lkml/20220117053349.6804-1-ojeda@kernel.org/ ## Infrastructure updates There have been several improvements to the overall Rust support: - The Intel 0DAY/LKP kernel test robot is setting up Rust in their CI -- we already got the first reports from the bot which we could act upon, very useful! - KernelCI is also looking forward to enabling Rust in their runs. - The GitHub CI we use for quick pre-merge testing has been moved to use containers. - Kernel modules do not need to write the crate attributes `#![no_std]` and `#![feature(...)]` anymore, removing boilerplate. - Added single target support, including `.o`, `.s`, `.ll` and `.i` (i.e. macro expanded, similar to C preprocessed sources). - Explanation of the `helpers.c` file and licensing for helpers and exports. - The documentation logo is now vector based (SVG). In addition, a vector version of Tux has been proposed for upstream, and an RFC for improved custom logo support has been submitted to upstream Rust. - Added coding guidelines on comments (`//`) and code documentation (`///`). - `is_rust_module.sh` rework. - Generation of `.rmeta` for leaf modules is skipped now. - Other cleanups, fixes and improvements. ## Abstractions and driver updates Some of the improvements to the abstractions and example drivers are: - Added support for static (global shared variables) synchronization primitives. `CONFIG_CONSTRUCTORS` are used for the implementation. - Simplification of the lock guards by using marker types, i.e. `Guard` and `GuardMut` are unified into a single parametrized type. If the marker is `WriteLock`, then `Guard` implements `DerefMut` (only implemented by `GuardMut` previously). - Optional parameters added to the registration of misc devices, following the builder pattern., e.g. miscdev::Options::new() .mode(0o600) .minor(10) .parent(parent) .register(reg, c_str!("sample"), ()) - Added `RwSemaphore` abstraction that wraps the C side `struct rw_semaphore`. - New `mm` module and VMA abstraction (wrapping the C side `struct vm_area_struct`) for use with `mmap`. - GPIO PL061 now uses the recently added `dev_*!` Rust macros. - Support the `!CONFIG_PRINTK` case. - Other cleanups, fixes and improvements. ## Patch series status The Rust support is still to be considered experimental. However, support is good enough that kernel developers can start working on the Rust abstractions for subsystems and write drivers and other modules. The current series has just arrived in `linux-next`, as usual. Similarly, the preview docs for this series can be seen at: https://rust-for-linux.github.io/docs/kernel/ As usual, please see the following link for the live list of unstable Rust features we are using: https://github.com/Rust-for-Linux/linux/issues/2 ## Acknowledgements The signatures in the main commits correspond to the people that wrote code that has ended up in them at the present time. For details on contributions to code and discussions, please see our repository: https://github.com/Rust-for-Linux/linux However, we would like to give credit to everyone that has contributed in one way or another to the Rust for Linux project. Since the previous cover letter: - Philip Li, Yujie Liu et. al. for setting the Intel 0DAY/LKP kernel test robot with Rust support. - Maciej Falkowski for continuing his work on the Hardware Random Number Generator subsystem, Samsung Exynos true random number generator, clock subsystem, etc. - bjorn3 for an extensive re-review of the previous round. - Jonathan Corbet for his feedback on the previous round. - Garrett LeSage and IFo Hancroft for agreeing to the usage of their vector version of Tux within the kernel tree with the same license as the existing one from Larry Ewing. - Nathan Chancellor for noticing a case where a C module was being identified as a Rust one for purposes of skipping BTF generation and suggesting a few improvements around `is_rust_module.sh`. - Wei Liu for exporting the remaining helpers and triggering a useful discussion around it. - Miguel Cano for fixing an issue with compilers containing a full, 3-part version in the suffix part (e.g. Ubuntu Clang). - Abhik Jain for working on adding missing `// SAFETY` comments and `# Safety` sections to the code generated by the `module!` macro. - Jiapeng Chong and the Abaci Robot for reporting and fixing an unneeded header `#include`. - Finn Behrens for resuming his work on building Rust for Linux on Nix and spotting and fixing usability issues. - As usual, Gary Guo and bjorn3 for all the input on Rust compiler details and all the reviews and suggestions. - John Ericson, TennyZhuang and Xuanwo for their ongoing work on adding more fallible allocation methods (`try_*`) to the Rust standard library. - Stephan Sokolow and Mark Rousskov for their feedback on the custom documentation logo RFC. - Philip Herrons (and his supporters Open Source Security and Embecosm) et. al. for their ongoing work on GCC Rust. - Antoni Boucher (and his supporters) et. al. for their ongoing work on `rustc_codegen_gcc`. - Mats Larsen, Marc Poulhiès et. al. for their ongoing work on improving Rust support in Compiler Explorer. - Many folks that have reported issues, tested the project, helped spread the word, joined discussions and contributed in other ways! Please see also the acknowledgements on the previous cover letters. Boqun Feng (1): kallsyms: use the correct buffer size for symbols Gary Guo (2): rust: add `build_error` crate vsprintf: add new `%pA` format specifier Miguel Ojeda (13): kallsyms: support "big" kernel symbols kallsyms: increase maximum kernel symbol length to 512 rust: add C helpers rust: add `compiler_builtins` crate rust: add `alloc` crate rust: add `macros` crate rust: export generated symbols scripts: add `generate_rust_analyzer.py` scripts: decode_stacktrace: demangle Rust symbols docs: add Rust documentation Kbuild: add Rust support samples: add Rust examples MAINTAINERS: Rust Wedson Almeida Filho (4): rust: add `kernel` crate's `sync` module rust: add `kernel` crate [RFC] drivers: gpio: PrimeCell PL061 in Rust [RFC] drivers: android: Binder IPC in Rust .gitignore | 5 + .rustfmt.toml | 12 + Documentation/doc-guide/kernel-doc.rst | 3 + Documentation/index.rst | 1 + Documentation/kbuild/kbuild.rst | 4 + Documentation/process/changes.rst | 42 + Documentation/rust/arch-support.rst | 35 + Documentation/rust/coding-guidelines.rst | 153 + Documentation/rust/general-information.rst | 80 + Documentation/rust/index.rst | 21 + Documentation/rust/logo.svg | 357 ++ Documentation/rust/quick-start.rst | 231 ++ MAINTAINERS | 16 + Makefile | 154 +- arch/arm/rust/target.json | 27 + arch/arm64/rust/target.json | 34 + arch/powerpc/rust/target.json | 29 + arch/riscv/Makefile | 1 + arch/riscv/rust/rv32ima.json | 36 + arch/riscv/rust/rv32imac.json | 36 + arch/riscv/rust/rv64ima.json | 36 + arch/riscv/rust/rv64imac.json | 36 + arch/x86/rust/target.json | 36 + drivers/android/Kconfig | 7 + drivers/android/Makefile | 2 + drivers/android/allocation.rs | 266 ++ drivers/android/context.rs | 80 + drivers/android/defs.rs | 99 + drivers/android/node.rs | 476 +++ drivers/android/process.rs | 961 +++++ drivers/android/range_alloc.rs | 189 + drivers/android/rust_binder.rs | 111 + drivers/android/thread.rs | 871 +++++ drivers/android/transaction.rs | 326 ++ drivers/gpio/Kconfig | 8 + drivers/gpio/Makefile | 1 + drivers/gpio/gpio_pl061_rust.rs | 370 ++ include/linux/kallsyms.h | 2 +- include/linux/spinlock.h | 17 +- include/uapi/linux/android/binder.h | 28 +- init/Kconfig | 45 +- kernel/kallsyms.c | 26 +- kernel/livepatch/core.c | 4 +- kernel/printk/printk.c | 5 +- lib/Kconfig.debug | 144 + lib/rust.h | 14 + lib/vsprintf.c | 7 + rust/.gitignore | 7 + rust/Makefile | 374 ++ rust/alloc/README.md | 32 + rust/alloc/alloc.rs | 427 +++ rust/alloc/borrow.rs | 498 +++ rust/alloc/boxed.rs | 1847 ++++++++++ rust/alloc/collections/mod.rs | 156 + rust/alloc/fmt.rs | 601 ++++ rust/alloc/lib.rs | 217 ++ rust/alloc/macros.rs | 126 + rust/alloc/raw_vec.rs | 549 +++ rust/alloc/slice.rs | 1279 +++++++ rust/alloc/str.rs | 624 ++++ rust/alloc/string.rs | 2864 +++++++++++++++ rust/alloc/vec/drain.rs | 159 + rust/alloc/vec/drain_filter.rs | 145 + rust/alloc/vec/into_iter.rs | 356 ++ rust/alloc/vec/is_zero.rs | 106 + rust/alloc/vec/mod.rs | 3359 ++++++++++++++++++ rust/alloc/vec/partial_eq.rs | 49 + rust/alloc/vec/set_len_on_drop.rs | 30 + rust/alloc/vec/spec_extend.rs | 172 + rust/bindgen_parameters | 13 + rust/build_error.rs | 29 + rust/compiler_builtins.rs | 57 + rust/exports.c | 19 + rust/helpers.c | 529 +++ rust/kernel/allocator.rs | 65 + rust/kernel/amba.rs | 259 ++ rust/kernel/bindings.rs | 47 + rust/kernel/bindings_helper.h | 30 + rust/kernel/buffer.rs | 52 + rust/kernel/build_assert.rs | 80 + rust/kernel/c_types.rs | 119 + rust/kernel/chrdev.rs | 209 ++ rust/kernel/clk.rs | 75 + rust/kernel/cred.rs | 73 + rust/kernel/device.rs | 554 +++ rust/kernel/driver.rs | 440 +++ rust/kernel/error.rs | 542 +++ rust/kernel/file.rs | 147 + rust/kernel/file_operations.rs | 734 ++++ rust/kernel/gpio.rs | 477 +++ rust/kernel/io_buffer.rs | 153 + rust/kernel/io_mem.rs | 227 ++ rust/kernel/iov_iter.rs | 81 + rust/kernel/irq.rs | 409 +++ rust/kernel/lib.rs | 261 ++ rust/kernel/linked_list.rs | 247 ++ rust/kernel/miscdev.rs | 281 ++ rust/kernel/mm.rs | 149 + rust/kernel/module_param.rs | 497 +++ rust/kernel/of.rs | 63 + rust/kernel/pages.rs | 144 + rust/kernel/platform.rs | 224 ++ rust/kernel/power.rs | 118 + rust/kernel/prelude.rs | 36 + rust/kernel/print.rs | 417 +++ rust/kernel/random.rs | 50 + rust/kernel/raw_list.rs | 361 ++ rust/kernel/rbtree.rs | 562 +++ rust/kernel/revocable.rs | 163 + rust/kernel/security.rs | 36 + rust/kernel/static_assert.rs | 39 + rust/kernel/std_vendor.rs | 150 + rust/kernel/str.rs | 401 +++ rust/kernel/sync/arc.rs | 500 +++ rust/kernel/sync/condvar.rs | 138 + rust/kernel/sync/guard.rs | 150 + rust/kernel/sync/locked_by.rs | 112 + rust/kernel/sync/mod.rs | 157 + rust/kernel/sync/mutex.rs | 112 + rust/kernel/sync/revocable_mutex.rs | 184 + rust/kernel/sync/rwsem.rs | 147 + rust/kernel/sync/seqlock.rs | 202 ++ rust/kernel/sync/spinlock.rs | 180 + rust/kernel/sysctl.rs | 197 + rust/kernel/task.rs | 182 + rust/kernel/types.rs | 486 +++ rust/kernel/user_ptr.rs | 175 + rust/macros/helpers.rs | 79 + rust/macros/lib.rs | 94 + rust/macros/module.rs | 631 ++++ samples/Kconfig | 2 + samples/Makefile | 1 + samples/rust/Kconfig | 123 + samples/rust/Makefile | 13 + samples/rust/rust_chrdev.rs | 50 + samples/rust/rust_minimal.rs | 35 + samples/rust/rust_miscdev.rs | 144 + samples/rust/rust_module_parameters.rs | 69 + samples/rust/rust_platform.rs | 22 + samples/rust/rust_print.rs | 54 + samples/rust/rust_random.rs | 61 + samples/rust/rust_semaphore.rs | 172 + samples/rust/rust_semaphore_c.c | 212 ++ samples/rust/rust_stack_probing.rs | 36 + samples/rust/rust_sync.rs | 78 + scripts/Kconfig.include | 6 +- scripts/Makefile.build | 65 + scripts/Makefile.debug | 10 + scripts/Makefile.lib | 12 + scripts/Makefile.modfinal | 8 +- scripts/cc-version.sh | 12 +- scripts/decode_stacktrace.sh | 14 + scripts/generate_rust_analyzer.py | 133 + scripts/is_rust_module.sh | 13 + scripts/kallsyms.c | 40 +- scripts/kconfig/confdata.c | 75 + scripts/min-tool-version.sh | 6 + scripts/rust-is-available-bindgen-libclang.h | 2 + scripts/rust-is-available.sh | 158 + tools/include/linux/kallsyms.h | 2 +- tools/lib/perf/include/perf/event.h | 2 +- tools/lib/symbol/kallsyms.h | 2 +- 162 files changed, 34341 insertions(+), 57 deletions(-) create mode 100644 .rustfmt.toml create mode 100644 Documentation/rust/arch-support.rst create mode 100644 Documentation/rust/coding-guidelines.rst create mode 100644 Documentation/rust/general-information.rst create mode 100644 Documentation/rust/index.rst create mode 100644 Documentation/rust/logo.svg create mode 100644 Documentation/rust/quick-start.rst create mode 100644 arch/arm/rust/target.json create mode 100644 arch/arm64/rust/target.json create mode 100644 arch/powerpc/rust/target.json create mode 100644 arch/riscv/rust/rv32ima.json create mode 100644 arch/riscv/rust/rv32imac.json create mode 100644 arch/riscv/rust/rv64ima.json create mode 100644 arch/riscv/rust/rv64imac.json create mode 100644 arch/x86/rust/target.json create mode 100644 drivers/android/allocation.rs create mode 100644 drivers/android/context.rs create mode 100644 drivers/android/defs.rs create mode 100644 drivers/android/node.rs create mode 100644 drivers/android/process.rs create mode 100644 drivers/android/range_alloc.rs create mode 100644 drivers/android/rust_binder.rs create mode 100644 drivers/android/thread.rs create mode 100644 drivers/android/transaction.rs create mode 100644 drivers/gpio/gpio_pl061_rust.rs create mode 100644 lib/rust.h create mode 100644 rust/.gitignore create mode 100644 rust/Makefile create mode 100644 rust/alloc/README.md create mode 100644 rust/alloc/alloc.rs create mode 100644 rust/alloc/borrow.rs create mode 100644 rust/alloc/boxed.rs create mode 100644 rust/alloc/collections/mod.rs create mode 100644 rust/alloc/fmt.rs create mode 100644 rust/alloc/lib.rs create mode 100644 rust/alloc/macros.rs create mode 100644 rust/alloc/raw_vec.rs create mode 100644 rust/alloc/slice.rs create mode 100644 rust/alloc/str.rs create mode 100644 rust/alloc/string.rs create mode 100644 rust/alloc/vec/drain.rs create mode 100644 rust/alloc/vec/drain_filter.rs create mode 100644 rust/alloc/vec/into_iter.rs create mode 100644 rust/alloc/vec/is_zero.rs create mode 100644 rust/alloc/vec/mod.rs create mode 100644 rust/alloc/vec/partial_eq.rs create mode 100644 rust/alloc/vec/set_len_on_drop.rs create mode 100644 rust/alloc/vec/spec_extend.rs create mode 100644 rust/bindgen_parameters create mode 100644 rust/build_error.rs create mode 100644 rust/compiler_builtins.rs create mode 100644 rust/exports.c create mode 100644 rust/helpers.c create mode 100644 rust/kernel/allocator.rs create mode 100644 rust/kernel/amba.rs create mode 100644 rust/kernel/bindings.rs create mode 100644 rust/kernel/bindings_helper.h create mode 100644 rust/kernel/buffer.rs create mode 100644 rust/kernel/build_assert.rs create mode 100644 rust/kernel/c_types.rs create mode 100644 rust/kernel/chrdev.rs create mode 100644 rust/kernel/clk.rs create mode 100644 rust/kernel/cred.rs create mode 100644 rust/kernel/device.rs create mode 100644 rust/kernel/driver.rs create mode 100644 rust/kernel/error.rs create mode 100644 rust/kernel/file.rs create mode 100644 rust/kernel/file_operations.rs create mode 100644 rust/kernel/gpio.rs create mode 100644 rust/kernel/io_buffer.rs create mode 100644 rust/kernel/io_mem.rs create mode 100644 rust/kernel/iov_iter.rs create mode 100644 rust/kernel/irq.rs create mode 100644 rust/kernel/lib.rs create mode 100644 rust/kernel/linked_list.rs create mode 100644 rust/kernel/miscdev.rs create mode 100644 rust/kernel/mm.rs create mode 100644 rust/kernel/module_param.rs create mode 100644 rust/kernel/of.rs create mode 100644 rust/kernel/pages.rs create mode 100644 rust/kernel/platform.rs create mode 100644 rust/kernel/power.rs create mode 100644 rust/kernel/prelude.rs create mode 100644 rust/kernel/print.rs create mode 100644 rust/kernel/random.rs create mode 100644 rust/kernel/raw_list.rs create mode 100644 rust/kernel/rbtree.rs create mode 100644 rust/kernel/revocable.rs create mode 100644 rust/kernel/security.rs create mode 100644 rust/kernel/static_assert.rs create mode 100644 rust/kernel/std_vendor.rs create mode 100644 rust/kernel/str.rs create mode 100644 rust/kernel/sync/arc.rs create mode 100644 rust/kernel/sync/condvar.rs create mode 100644 rust/kernel/sync/guard.rs create mode 100644 rust/kernel/sync/locked_by.rs create mode 100644 rust/kernel/sync/mod.rs create mode 100644 rust/kernel/sync/mutex.rs create mode 100644 rust/kernel/sync/revocable_mutex.rs create mode 100644 rust/kernel/sync/rwsem.rs create mode 100644 rust/kernel/sync/seqlock.rs create mode 100644 rust/kernel/sync/spinlock.rs create mode 100644 rust/kernel/sysctl.rs create mode 100644 rust/kernel/task.rs create mode 100644 rust/kernel/types.rs create mode 100644 rust/kernel/user_ptr.rs create mode 100644 rust/macros/helpers.rs create mode 100644 rust/macros/lib.rs create mode 100644 rust/macros/module.rs create mode 100644 samples/rust/Kconfig create mode 100644 samples/rust/Makefile create mode 100644 samples/rust/rust_chrdev.rs create mode 100644 samples/rust/rust_minimal.rs create mode 100644 samples/rust/rust_miscdev.rs create mode 100644 samples/rust/rust_module_parameters.rs create mode 100644 samples/rust/rust_platform.rs create mode 100644 samples/rust/rust_print.rs create mode 100644 samples/rust/rust_random.rs create mode 100644 samples/rust/rust_semaphore.rs create mode 100644 samples/rust/rust_semaphore_c.c create mode 100644 samples/rust/rust_stack_probing.rs create mode 100644 samples/rust/rust_sync.rs create mode 100755 scripts/generate_rust_analyzer.py create mode 100755 scripts/is_rust_module.sh create mode 100644 scripts/rust-is-available-bindgen-libclang.h create mode 100755 scripts/rust-is-available.sh base-commit: dfd42facf1e4ada021b939b4e19c935dcdd55566 -- 2.35.1 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 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 smtp.lore.kernel.org (Postfix) with ESMTPS id 33AB5C433FE for ; Sat, 12 Feb 2022 13:06:30 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:Message-Id:Date:Subject:Cc :To:From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References: List-Owner; bh=XVoVaB87uxSpJVjVRlA0Ec82qQqQJs3M1Fg/0II3RRk=; b=KOegsOMpY7cNnY NVgCjcq04Kaas7OOVQHxbiPCpdoUVT7b24g4YogNEZDi8c4ED7DJhROE09VcKOtrDYBuF349gTWsc QIYG0Qnkmq4P7JdUYfVB/0TikR7eQZVLk5KTLUDgVPnWTQ78m2QazHPFnBPXR4ZR5LocMgkUZypxL Os7IeNhCjRLzuzuhGfHGHuQ7KGPu6PnfqhREafKHISN358F8/qzuGrjHwuyNrW2U2BK4oq2ODtzQG jKHWB3XDCUkZY4POGNdG0ZB8v3JfwqKzfFlbyfkJTvkoDVqcsEmW0ty4m6T3FVEf4MvQfICHd396+ JFJCnWWyX9KnvmhVWylA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1nIs5L-009vzY-5a; Sat, 12 Feb 2022 13:05:07 +0000 Received: from dfw.source.kernel.org ([2604:1380:4641:c500::1]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1nIs5E-009vy2-Rv; Sat, 12 Feb 2022 13:05:04 +0000 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 7800160E93; Sat, 12 Feb 2022 13:04:59 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id E7F25C340E7; Sat, 12 Feb 2022 13:04:55 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1644671098; bh=v+g01wwGWAex++1H14Q1oSi8BHd4lI/w8GhNcGEtS6A=; h=From:To:Cc:Subject:Date:From; b=qC0NXLNKqYgXKlDzZDGNowkHQtBQO8wyF8dTxEdBUW61ZG9Ch7DdxlItr3qtWAUWc AkYr25CRoM8CGPTqNf6HqhUwxly6g949wZFvfILdaZ0xDGEVHc/g/q8MPhcaqjCBLu FdWV5Qy/iOSmfYFPhlKDcPHGbnZGIptjScdycsEnSIrXfxIhXx/fuF6oGD/66fjYVa nrRU2gpSRIjOU6YCNOiJR/Onu2saw3MjZw5DxPUvOHd+AFE7vyG/fy+NYK1UNhF82M OTJcSrZ9zXFZDHsTAv4EZTw93UxAlfx1L2ZrnwVaC36+4//nN5S1/dd7j4/ThaheTl 2/VQpGuVKCtIw== From: Miguel Ojeda To: Linus Torvalds , Greg Kroah-Hartman Cc: rust-for-linux@vger.kernel.org, linux-kernel@vger.kernel.org, Miguel Ojeda , linux-arm-kernel@lists.infradead.org, linux-doc@vger.kernel.org, linux-gpio@vger.kernel.org, linux-kbuild@vger.kernel.org, linux-perf-users@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, linux-riscv@lists.infradead.org, live-patching@vger.kernel.org Subject: [PATCH v4 00/20] Rust support Date: Sat, 12 Feb 2022 14:03:26 +0100 Message-Id: <20220212130410.6901-1-ojeda@kernel.org> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220212_050501_056924_F84EDD4A X-CRM114-Status: GOOD ( 31.06 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org UnVzdCBzdXBwb3J0CgpUaGlzIGlzIHRoZSBwYXRjaCBzZXJpZXMgKHY0KSB0byBhZGQgc3VwcG9y dCBmb3IgUnVzdCBhcyBhIHNlY29uZApsYW5ndWFnZSB0byB0aGUgTGludXgga2VybmVsLgoKSWYg eW91IGFyZSBpbnRlcmVzdGVkIGluIGZvbGxvd2luZyB0aGlzIGVmZm9ydCwgcGxlYXNlIGpvaW4g dXMgaW4KdGhlIG1haWxpbmcgbGlzdCBhdDoKCiAgICBydXN0LWZvci1saW51eEB2Z2VyLmtlcm5l bC5vcmcKCmFuZCB0YWtlIGEgbG9vayBhdCB0aGUgcHJvamVjdCBpdHNlbGYgYXQ6CgogICAgaHR0 cHM6Ly9naXRodWIuY29tL1J1c3QtZm9yLUxpbnV4CgpBcyB1c3VhbCwgc3BlY2lhbCB0aGFua3Mg Z28gdG8gSVNSRyAoSW50ZXJuZXQgU2VjdXJpdHkgUmVzZWFyY2gKR3JvdXApIGFuZCBHb29nbGUg Zm9yIHRoZWlyIGZpbmFuY2lhbCBzdXBwb3J0IG9uIHRoaXMgZW5kZWF2b3IuCgpDaGVlcnMsCk1p Z3VlbAoKLS0KCiMgUnVzdCBzdXBwb3J0CgpUaGlzIGNvdmVyIGxldHRlciBleHBsYWlucyB0aGUg bWFqb3IgY2hhbmdlcyBhbmQgdXBkYXRlcyBkb25lIHNpbmNlCnRoZSBwcmV2aW91cyBvbmVzLiBG b3IgdGhvc2UsIHBsZWFzZSBzZWU6CgogICAgUkZDOiBodHRwczovL2xvcmUua2VybmVsLm9yZy9s a21sLzIwMjEwNDE0MTg0NjA0LjIzNDczLTEtb2plZGFAa2VybmVsLm9yZy8KICAgIHYxOiAgaHR0 cHM6Ly9sb3JlLmtlcm5lbC5vcmcvbGttbC8yMDIxMDcwNDIwMjc1Ni4yOTEwNy0xLW9qZWRhQGtl cm5lbC5vcmcvCiAgICB2MjogIGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL2xrbWwvMjAyMTEyMDYx NDAzMTMuNTY1My0xLW9qZWRhQGtlcm5lbC5vcmcvCiAgICB2MzogIGh0dHBzOi8vbG9yZS5rZXJu ZWwub3JnL2xrbWwvMjAyMjAxMTcwNTMzNDkuNjgwNC0xLW9qZWRhQGtlcm5lbC5vcmcvCgoKIyMg SW5mcmFzdHJ1Y3R1cmUgdXBkYXRlcwoKVGhlcmUgaGF2ZSBiZWVuIHNldmVyYWwgaW1wcm92ZW1l bnRzIHRvIHRoZSBvdmVyYWxsIFJ1c3Qgc3VwcG9ydDoKCiAgLSBUaGUgSW50ZWwgMERBWS9MS1Ag a2VybmVsIHRlc3Qgcm9ib3QgaXMgc2V0dGluZyB1cCBSdXN0IGluIHRoZWlyCiAgICBDSSAtLSB3 ZSBhbHJlYWR5IGdvdCB0aGUgZmlyc3QgcmVwb3J0cyBmcm9tIHRoZSBib3Qgd2hpY2ggd2UKICAg IGNvdWxkIGFjdCB1cG9uLCB2ZXJ5IHVzZWZ1bCEKCiAgLSBLZXJuZWxDSSBpcyBhbHNvIGxvb2tp bmcgZm9yd2FyZCB0byBlbmFibGluZyBSdXN0IGluIHRoZWlyIHJ1bnMuCgogIC0gVGhlIEdpdEh1 YiBDSSB3ZSB1c2UgZm9yIHF1aWNrIHByZS1tZXJnZSB0ZXN0aW5nIGhhcyBiZWVuIG1vdmVkCiAg ICB0byB1c2UgY29udGFpbmVycy4KCiAgLSBLZXJuZWwgbW9kdWxlcyBkbyBub3QgbmVlZCB0byB3 cml0ZSB0aGUgY3JhdGUgYXR0cmlidXRlcwogICAgYCMhW25vX3N0ZF1gIGFuZCBgIyFbZmVhdHVy ZSguLi4pXWAgYW55bW9yZSwgcmVtb3ZpbmcgYm9pbGVycGxhdGUuCgogIC0gQWRkZWQgc2luZ2xl IHRhcmdldCBzdXBwb3J0LCBpbmNsdWRpbmcgYC5vYCwgYC5zYCwgYC5sbGAgYW5kIGAuaWAKICAg IChpLmUuIG1hY3JvIGV4cGFuZGVkLCBzaW1pbGFyIHRvIEMgcHJlcHJvY2Vzc2VkIHNvdXJjZXMp LgoKICAtIEV4cGxhbmF0aW9uIG9mIHRoZSBgaGVscGVycy5jYCBmaWxlIGFuZCBsaWNlbnNpbmcg Zm9yIGhlbHBlcnMKICAgIGFuZCBleHBvcnRzLgoKICAtIFRoZSBkb2N1bWVudGF0aW9uIGxvZ28g aXMgbm93IHZlY3RvciBiYXNlZCAoU1ZHKS4gSW4gYWRkaXRpb24sCiAgICBhIHZlY3RvciB2ZXJz aW9uIG9mIFR1eCBoYXMgYmVlbiBwcm9wb3NlZCBmb3IgdXBzdHJlYW0sIGFuZCBhbgogICAgUkZD IGZvciBpbXByb3ZlZCBjdXN0b20gbG9nbyBzdXBwb3J0IGhhcyBiZWVuIHN1Ym1pdHRlZCB0bwog ICAgdXBzdHJlYW0gUnVzdC4KCiAgLSBBZGRlZCBjb2RpbmcgZ3VpZGVsaW5lcyBvbiBjb21tZW50 cyAoYC8vYCkgYW5kIGNvZGUgZG9jdW1lbnRhdGlvbgogICAgKGAvLy9gKS4KCiAgLSBgaXNfcnVz dF9tb2R1bGUuc2hgIHJld29yay4KCiAgLSBHZW5lcmF0aW9uIG9mIGAucm1ldGFgIGZvciBsZWFm IG1vZHVsZXMgaXMgc2tpcHBlZCBub3cuCgogIC0gT3RoZXIgY2xlYW51cHMsIGZpeGVzIGFuZCBp bXByb3ZlbWVudHMuCgoKIyMgQWJzdHJhY3Rpb25zIGFuZCBkcml2ZXIgdXBkYXRlcwoKU29tZSBv ZiB0aGUgaW1wcm92ZW1lbnRzIHRvIHRoZSBhYnN0cmFjdGlvbnMgYW5kIGV4YW1wbGUgZHJpdmVy cyBhcmU6CgogIC0gQWRkZWQgc3VwcG9ydCBmb3Igc3RhdGljIChnbG9iYWwgc2hhcmVkIHZhcmlh Ymxlcykgc3luY2hyb25pemF0aW9uCiAgICBwcmltaXRpdmVzLiBgQ09ORklHX0NPTlNUUlVDVE9S U2AgYXJlIHVzZWQgZm9yIHRoZSBpbXBsZW1lbnRhdGlvbi4KCiAgLSBTaW1wbGlmaWNhdGlvbiBv ZiB0aGUgbG9jayBndWFyZHMgYnkgdXNpbmcgbWFya2VyIHR5cGVzLCBpLmUuCiAgICBgR3VhcmRg IGFuZCBgR3VhcmRNdXRgIGFyZSB1bmlmaWVkIGludG8gYSBzaW5nbGUgcGFyYW1ldHJpemVkCiAg ICB0eXBlLiBJZiB0aGUgbWFya2VyIGlzIGBXcml0ZUxvY2tgLCB0aGVuIGBHdWFyZGAgaW1wbGVt ZW50cwogICAgYERlcmVmTXV0YCAob25seSBpbXBsZW1lbnRlZCBieSBgR3VhcmRNdXRgIHByZXZp b3VzbHkpLgoKICAtIE9wdGlvbmFsIHBhcmFtZXRlcnMgYWRkZWQgdG8gdGhlIHJlZ2lzdHJhdGlv biBvZiBtaXNjIGRldmljZXMsCiAgICBmb2xsb3dpbmcgdGhlIGJ1aWxkZXIgcGF0dGVybi4sIGUu Zy4KCiAgICAgICAgbWlzY2Rldjo6T3B0aW9uczo6bmV3KCkKICAgICAgICAgICAgLm1vZGUoMG82 MDApCiAgICAgICAgICAgIC5taW5vcigxMCkKICAgICAgICAgICAgLnBhcmVudChwYXJlbnQpCiAg ICAgICAgICAgIC5yZWdpc3RlcihyZWcsIGNfc3RyISgic2FtcGxlIiksICgpKQoKICAtIEFkZGVk IGBSd1NlbWFwaG9yZWAgYWJzdHJhY3Rpb24gdGhhdCB3cmFwcyB0aGUgQyBzaWRlCiAgICBgc3Ry dWN0IHJ3X3NlbWFwaG9yZWAuCgogIC0gTmV3IGBtbWAgbW9kdWxlIGFuZCBWTUEgYWJzdHJhY3Rp b24gKHdyYXBwaW5nIHRoZSBDIHNpZGUKICAgIGBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3RgKSBmb3Ig dXNlIHdpdGggYG1tYXBgLgoKICAtIEdQSU8gUEwwNjEgbm93IHVzZXMgdGhlIHJlY2VudGx5IGFk ZGVkIGBkZXZfKiFgIFJ1c3QgbWFjcm9zLgoKICAtIFN1cHBvcnQgdGhlIGAhQ09ORklHX1BSSU5U S2AgY2FzZS4KCiAgLSBPdGhlciBjbGVhbnVwcywgZml4ZXMgYW5kIGltcHJvdmVtZW50cy4KCgoj IyBQYXRjaCBzZXJpZXMgc3RhdHVzCgpUaGUgUnVzdCBzdXBwb3J0IGlzIHN0aWxsIHRvIGJlIGNv bnNpZGVyZWQgZXhwZXJpbWVudGFsLiBIb3dldmVyLApzdXBwb3J0IGlzIGdvb2QgZW5vdWdoIHRo YXQga2VybmVsIGRldmVsb3BlcnMgY2FuIHN0YXJ0IHdvcmtpbmcgb24gdGhlClJ1c3QgYWJzdHJh Y3Rpb25zIGZvciBzdWJzeXN0ZW1zIGFuZCB3cml0ZSBkcml2ZXJzIGFuZCBvdGhlciBtb2R1bGVz LgoKVGhlIGN1cnJlbnQgc2VyaWVzIGhhcyBqdXN0IGFycml2ZWQgaW4gYGxpbnV4LW5leHRgLCBh cyB1c3VhbC4KU2ltaWxhcmx5LCB0aGUgcHJldmlldyBkb2NzIGZvciB0aGlzIHNlcmllcyBjYW4g YmUgc2VlbiBhdDoKCiAgICBodHRwczovL3J1c3QtZm9yLWxpbnV4LmdpdGh1Yi5pby9kb2NzL2tl cm5lbC8KCkFzIHVzdWFsLCBwbGVhc2Ugc2VlIHRoZSBmb2xsb3dpbmcgbGluayBmb3IgdGhlCmxp dmUgbGlzdCBvZiB1bnN0YWJsZSBSdXN0IGZlYXR1cmVzIHdlIGFyZSB1c2luZzoKCiAgICBodHRw czovL2dpdGh1Yi5jb20vUnVzdC1mb3ItTGludXgvbGludXgvaXNzdWVzLzIKCgojIyBBY2tub3ds ZWRnZW1lbnRzCgpUaGUgc2lnbmF0dXJlcyBpbiB0aGUgbWFpbiBjb21taXRzIGNvcnJlc3BvbmQg dG8gdGhlIHBlb3BsZSB0aGF0Cndyb3RlIGNvZGUgdGhhdCBoYXMgZW5kZWQgdXAgaW4gdGhlbSBh dCB0aGUgcHJlc2VudCB0aW1lLiBGb3IgZGV0YWlscwpvbiBjb250cmlidXRpb25zIHRvIGNvZGUg YW5kIGRpc2N1c3Npb25zLCBwbGVhc2Ugc2VlIG91ciByZXBvc2l0b3J5OgoKICAgIGh0dHBzOi8v Z2l0aHViLmNvbS9SdXN0LWZvci1MaW51eC9saW51eAoKSG93ZXZlciwgd2Ugd291bGQgbGlrZSB0 byBnaXZlIGNyZWRpdCB0byBldmVyeW9uZSB0aGF0IGhhcyBjb250cmlidXRlZAppbiBvbmUgd2F5 IG9yIGFub3RoZXIgdG8gdGhlIFJ1c3QgZm9yIExpbnV4IHByb2plY3QuIFNpbmNlIHRoZQpwcmV2 aW91cyBjb3ZlciBsZXR0ZXI6CgogIC0gUGhpbGlwIExpLCBZdWppZSBMaXUgZXQuIGFsLiBmb3Ig c2V0dGluZyB0aGUgSW50ZWwgMERBWS9MS1Aga2VybmVsCiAgICB0ZXN0IHJvYm90IHdpdGggUnVz dCBzdXBwb3J0LgoKICAtIE1hY2llaiBGYWxrb3dza2kgZm9yIGNvbnRpbnVpbmcgaGlzIHdvcmsg b24gdGhlIEhhcmR3YXJlIFJhbmRvbQogICAgTnVtYmVyIEdlbmVyYXRvciBzdWJzeXN0ZW0sIFNh bXN1bmcgRXh5bm9zIHRydWUgcmFuZG9tIG51bWJlcgogICAgZ2VuZXJhdG9yLCBjbG9jayBzdWJz eXN0ZW0sIGV0Yy4KCiAgLSBiam9ybjMgZm9yIGFuIGV4dGVuc2l2ZSByZS1yZXZpZXcgb2YgdGhl IHByZXZpb3VzIHJvdW5kLgoKICAtIEpvbmF0aGFuIENvcmJldCBmb3IgaGlzIGZlZWRiYWNrIG9u IHRoZSBwcmV2aW91cyByb3VuZC4KCiAgLSBHYXJyZXR0IExlU2FnZSBhbmQgSUZvIEhhbmNyb2Z0 IGZvciBhZ3JlZWluZyB0byB0aGUgdXNhZ2Ugb2YKICAgIHRoZWlyIHZlY3RvciB2ZXJzaW9uIG9m IFR1eCB3aXRoaW4gdGhlIGtlcm5lbCB0cmVlIHdpdGggdGhlIHNhbWUKICAgIGxpY2Vuc2UgYXMg dGhlIGV4aXN0aW5nIG9uZSBmcm9tIExhcnJ5IEV3aW5nLgoKICAtIE5hdGhhbiBDaGFuY2VsbG9y IGZvciBub3RpY2luZyBhIGNhc2Ugd2hlcmUgYSBDIG1vZHVsZSB3YXMgYmVpbmcKICAgIGlkZW50 aWZpZWQgYXMgYSBSdXN0IG9uZSBmb3IgcHVycG9zZXMgb2Ygc2tpcHBpbmcgQlRGIGdlbmVyYXRp b24KICAgIGFuZCBzdWdnZXN0aW5nIGEgZmV3IGltcHJvdmVtZW50cyBhcm91bmQgYGlzX3J1c3Rf bW9kdWxlLnNoYC4KCiAgLSBXZWkgTGl1IGZvciBleHBvcnRpbmcgdGhlIHJlbWFpbmluZyBoZWxw ZXJzIGFuZCB0cmlnZ2VyaW5nIGEKICAgIHVzZWZ1bCBkaXNjdXNzaW9uIGFyb3VuZCBpdC4KCiAg LSBNaWd1ZWwgQ2FubyBmb3IgZml4aW5nIGFuIGlzc3VlIHdpdGggY29tcGlsZXJzIGNvbnRhaW5p bmcgYSBmdWxsLAogICAgMy1wYXJ0IHZlcnNpb24gaW4gdGhlIHN1ZmZpeCBwYXJ0IChlLmcuIFVi dW50dSBDbGFuZykuCgogIC0gQWJoaWsgSmFpbiBmb3Igd29ya2luZyBvbiBhZGRpbmcgbWlzc2lu ZyBgLy8gU0FGRVRZYCBjb21tZW50cyBhbmQKICAgIGAjIFNhZmV0eWAgc2VjdGlvbnMgdG8gdGhl IGNvZGUgZ2VuZXJhdGVkIGJ5IHRoZSBgbW9kdWxlIWAgbWFjcm8uCgogIC0gSmlhcGVuZyBDaG9u ZyBhbmQgdGhlIEFiYWNpIFJvYm90IGZvciByZXBvcnRpbmcgYW5kIGZpeGluZwogICAgYW4gdW5u ZWVkZWQgaGVhZGVyIGAjaW5jbHVkZWAuCgogIC0gRmlubiBCZWhyZW5zIGZvciByZXN1bWluZyBo aXMgd29yayBvbiBidWlsZGluZyBSdXN0IGZvciBMaW51eAogICAgb24gTml4IGFuZCBzcG90dGlu ZyBhbmQgZml4aW5nIHVzYWJpbGl0eSBpc3N1ZXMuCgogIC0gQXMgdXN1YWwsIEdhcnkgR3VvIGFu ZCBiam9ybjMgZm9yIGFsbCB0aGUgaW5wdXQgb24gUnVzdCBjb21waWxlcgogICAgZGV0YWlscyBh bmQgYWxsIHRoZSByZXZpZXdzIGFuZCBzdWdnZXN0aW9ucy4KCiAgLSBKb2huIEVyaWNzb24sIFRl bm55Wmh1YW5nIGFuZCBYdWFud28gZm9yIHRoZWlyIG9uZ29pbmcgd29yayBvbgogICAgYWRkaW5n IG1vcmUgZmFsbGlibGUgYWxsb2NhdGlvbiBtZXRob2RzIChgdHJ5XypgKSB0byB0aGUgUnVzdAog ICAgc3RhbmRhcmQgbGlicmFyeS4KCiAgLSBTdGVwaGFuIFNva29sb3cgYW5kIE1hcmsgUm91c3Nr b3YgZm9yIHRoZWlyIGZlZWRiYWNrIG9uIHRoZQogICAgY3VzdG9tIGRvY3VtZW50YXRpb24gbG9n byBSRkMuCgogIC0gUGhpbGlwIEhlcnJvbnMgKGFuZCBoaXMgc3VwcG9ydGVycyBPcGVuIFNvdXJj ZSBTZWN1cml0eSBhbmQKICAgIEVtYmVjb3NtKSBldC4gYWwuIGZvciB0aGVpciBvbmdvaW5nIHdv cmsgb24gR0NDIFJ1c3QuCgogIC0gQW50b25pIEJvdWNoZXIgKGFuZCBoaXMgc3VwcG9ydGVycykg ZXQuIGFsLiBmb3IgdGhlaXIgb25nb2luZwogICAgd29yayBvbiBgcnVzdGNfY29kZWdlbl9nY2Ng LgoKICAtIE1hdHMgTGFyc2VuLCBNYXJjIFBvdWxoacOocyBldC4gYWwuIGZvciB0aGVpciBvbmdv aW5nIHdvcmsgb24KICAgIGltcHJvdmluZyBSdXN0IHN1cHBvcnQgaW4gQ29tcGlsZXIgRXhwbG9y ZXIuCgogIC0gTWFueSBmb2xrcyB0aGF0IGhhdmUgcmVwb3J0ZWQgaXNzdWVzLCB0ZXN0ZWQgdGhl IHByb2plY3QsCiAgICBoZWxwZWQgc3ByZWFkIHRoZSB3b3JkLCBqb2luZWQgZGlzY3Vzc2lvbnMg YW5kIGNvbnRyaWJ1dGVkIGluCiAgICBvdGhlciB3YXlzIQoKUGxlYXNlIHNlZSBhbHNvIHRoZSBh Y2tub3dsZWRnZW1lbnRzIG9uIHRoZSBwcmV2aW91cyBjb3ZlciBsZXR0ZXJzLgoKQm9xdW4gRmVu ZyAoMSk6CiAga2FsbHN5bXM6IHVzZSB0aGUgY29ycmVjdCBidWZmZXIgc2l6ZSBmb3Igc3ltYm9s cwoKR2FyeSBHdW8gKDIpOgogIHJ1c3Q6IGFkZCBgYnVpbGRfZXJyb3JgIGNyYXRlCiAgdnNwcmlu dGY6IGFkZCBuZXcgYCVwQWAgZm9ybWF0IHNwZWNpZmllcgoKTWlndWVsIE9qZWRhICgxMyk6CiAg a2FsbHN5bXM6IHN1cHBvcnQgImJpZyIga2VybmVsIHN5bWJvbHMKICBrYWxsc3ltczogaW5jcmVh c2UgbWF4aW11bSBrZXJuZWwgc3ltYm9sIGxlbmd0aCB0byA1MTIKICBydXN0OiBhZGQgQyBoZWxw ZXJzCiAgcnVzdDogYWRkIGBjb21waWxlcl9idWlsdGluc2AgY3JhdGUKICBydXN0OiBhZGQgYGFs bG9jYCBjcmF0ZQogIHJ1c3Q6IGFkZCBgbWFjcm9zYCBjcmF0ZQogIHJ1c3Q6IGV4cG9ydCBnZW5l cmF0ZWQgc3ltYm9scwogIHNjcmlwdHM6IGFkZCBgZ2VuZXJhdGVfcnVzdF9hbmFseXplci5weWAK ICBzY3JpcHRzOiBkZWNvZGVfc3RhY2t0cmFjZTogZGVtYW5nbGUgUnVzdCBzeW1ib2xzCiAgZG9j czogYWRkIFJ1c3QgZG9jdW1lbnRhdGlvbgogIEtidWlsZDogYWRkIFJ1c3Qgc3VwcG9ydAogIHNh bXBsZXM6IGFkZCBSdXN0IGV4YW1wbGVzCiAgTUFJTlRBSU5FUlM6IFJ1c3QKCldlZHNvbiBBbG1l aWRhIEZpbGhvICg0KToKICBydXN0OiBhZGQgYGtlcm5lbGAgY3JhdGUncyBgc3luY2AgbW9kdWxl CiAgcnVzdDogYWRkIGBrZXJuZWxgIGNyYXRlCiAgW1JGQ10gZHJpdmVyczogZ3BpbzogUHJpbWVD ZWxsIFBMMDYxIGluIFJ1c3QKICBbUkZDXSBkcml2ZXJzOiBhbmRyb2lkOiBCaW5kZXIgSVBDIGlu IFJ1c3QKCiAuZ2l0aWdub3JlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg IDUgKwogLnJ1c3RmbXQudG9tbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEy ICsKIERvY3VtZW50YXRpb24vZG9jLWd1aWRlL2tlcm5lbC1kb2MucnN0ICAgICAgIHwgICAgMyAr CiBEb2N1bWVudGF0aW9uL2luZGV4LnJzdCAgICAgICAgICAgICAgICAgICAgICB8ICAgIDEgKwog RG9jdW1lbnRhdGlvbi9rYnVpbGQva2J1aWxkLnJzdCAgICAgICAgICAgICAgfCAgICA0ICsKIERv Y3VtZW50YXRpb24vcHJvY2Vzcy9jaGFuZ2VzLnJzdCAgICAgICAgICAgIHwgICA0MiArCiBEb2N1 bWVudGF0aW9uL3J1c3QvYXJjaC1zdXBwb3J0LnJzdCAgICAgICAgICB8ICAgMzUgKwogRG9jdW1l bnRhdGlvbi9ydXN0L2NvZGluZy1ndWlkZWxpbmVzLnJzdCAgICAgfCAgMTUzICsKIERvY3VtZW50 YXRpb24vcnVzdC9nZW5lcmFsLWluZm9ybWF0aW9uLnJzdCAgIHwgICA4MCArCiBEb2N1bWVudGF0 aW9uL3J1c3QvaW5kZXgucnN0ICAgICAgICAgICAgICAgICB8ICAgMjEgKwogRG9jdW1lbnRhdGlv bi9ydXN0L2xvZ28uc3ZnICAgICAgICAgICAgICAgICAgfCAgMzU3ICsrCiBEb2N1bWVudGF0aW9u L3J1c3QvcXVpY2stc3RhcnQucnN0ICAgICAgICAgICB8ICAyMzEgKysKIE1BSU5UQUlORVJTICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxNiArCiBNYWtlZmlsZSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxNTQgKy0KIGFyY2gvYXJtL3J1c3QvdGFy Z2V0Lmpzb24gICAgICAgICAgICAgICAgICAgIHwgICAyNyArCiBhcmNoL2FybTY0L3J1c3QvdGFy Z2V0Lmpzb24gICAgICAgICAgICAgICAgICB8ICAgMzQgKwogYXJjaC9wb3dlcnBjL3J1c3QvdGFy Z2V0Lmpzb24gICAgICAgICAgICAgICAgfCAgIDI5ICsKIGFyY2gvcmlzY3YvTWFrZWZpbGUgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgICAgMSArCiBhcmNoL3Jpc2N2L3J1c3QvcnYzMmltYS5q c29uICAgICAgICAgICAgICAgICB8ICAgMzYgKwogYXJjaC9yaXNjdi9ydXN0L3J2MzJpbWFjLmpz b24gICAgICAgICAgICAgICAgfCAgIDM2ICsKIGFyY2gvcmlzY3YvcnVzdC9ydjY0aW1hLmpzb24g ICAgICAgICAgICAgICAgIHwgICAzNiArCiBhcmNoL3Jpc2N2L3J1c3QvcnY2NGltYWMuanNvbiAg ICAgICAgICAgICAgICB8ICAgMzYgKwogYXJjaC94ODYvcnVzdC90YXJnZXQuanNvbiAgICAgICAg ICAgICAgICAgICAgfCAgIDM2ICsKIGRyaXZlcnMvYW5kcm9pZC9LY29uZmlnICAgICAgICAgICAg ICAgICAgICAgIHwgICAgNyArCiBkcml2ZXJzL2FuZHJvaWQvTWFrZWZpbGUgICAgICAgICAgICAg ICAgICAgICB8ICAgIDIgKwogZHJpdmVycy9hbmRyb2lkL2FsbG9jYXRpb24ucnMgICAgICAgICAg ICAgICAgfCAgMjY2ICsrCiBkcml2ZXJzL2FuZHJvaWQvY29udGV4dC5ycyAgICAgICAgICAgICAg ICAgICB8ICAgODAgKwogZHJpdmVycy9hbmRyb2lkL2RlZnMucnMgICAgICAgICAgICAgICAgICAg ICAgfCAgIDk5ICsKIGRyaXZlcnMvYW5kcm9pZC9ub2RlLnJzICAgICAgICAgICAgICAgICAgICAg IHwgIDQ3NiArKysKIGRyaXZlcnMvYW5kcm9pZC9wcm9jZXNzLnJzICAgICAgICAgICAgICAgICAg IHwgIDk2MSArKysrKwogZHJpdmVycy9hbmRyb2lkL3JhbmdlX2FsbG9jLnJzICAgICAgICAgICAg ICAgfCAgMTg5ICsKIGRyaXZlcnMvYW5kcm9pZC9ydXN0X2JpbmRlci5ycyAgICAgICAgICAgICAg IHwgIDExMSArCiBkcml2ZXJzL2FuZHJvaWQvdGhyZWFkLnJzICAgICAgICAgICAgICAgICAgICB8 ICA4NzEgKysrKysKIGRyaXZlcnMvYW5kcm9pZC90cmFuc2FjdGlvbi5ycyAgICAgICAgICAgICAg IHwgIDMyNiArKwogZHJpdmVycy9ncGlvL0tjb25maWcgICAgICAgICAgICAgICAgICAgICAgICAg fCAgICA4ICsKIGRyaXZlcnMvZ3Bpby9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgICAgIHwg ICAgMSArCiBkcml2ZXJzL2dwaW8vZ3Bpb19wbDA2MV9ydXN0LnJzICAgICAgICAgICAgICB8ICAz NzAgKysKIGluY2x1ZGUvbGludXgva2FsbHN5bXMuaCAgICAgICAgICAgICAgICAgICAgIHwgICAg MiArLQogaW5jbHVkZS9saW51eC9zcGlubG9jay5oICAgICAgICAgICAgICAgICAgICAgfCAgIDE3 ICstCiBpbmNsdWRlL3VhcGkvbGludXgvYW5kcm9pZC9iaW5kZXIuaCAgICAgICAgICB8ICAgMjgg Ky0KIGluaXQvS2NvbmZpZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA0NSAr LQoga2VybmVsL2thbGxzeW1zLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDI2ICst CiBrZXJuZWwvbGl2ZXBhdGNoL2NvcmUuYyAgICAgICAgICAgICAgICAgICAgICB8ICAgIDQgKy0K IGtlcm5lbC9wcmludGsvcHJpbnRrLmMgICAgICAgICAgICAgICAgICAgICAgIHwgICAgNSArLQog bGliL0tjb25maWcuZGVidWcgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTQ0ICsKIGxp Yi9ydXN0LmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxNCArCiBsaWIv dnNwcmludGYuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDcgKwogcnVzdC8u Z2l0aWdub3JlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICA3ICsKIHJ1c3QvTWFr ZWZpbGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDM3NCArKwogcnVzdC9hbGxv Yy9SRUFETUUubWQgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDMyICsKIHJ1c3QvYWxsb2Mv YWxsb2MucnMgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDQyNyArKysKIHJ1c3QvYWxsb2Mv Ym9ycm93LnJzICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDQ5OCArKysKIHJ1c3QvYWxsb2Mv Ym94ZWQucnMgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTg0NyArKysrKysrKysrCiBydXN0 L2FsbG9jL2NvbGxlY3Rpb25zL21vZC5ycyAgICAgICAgICAgICAgICB8ICAxNTYgKwogcnVzdC9h bGxvYy9mbXQucnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNjAxICsrKysKIHJ1c3Qv YWxsb2MvbGliLnJzICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIxNyArKwogcnVzdC9h bGxvYy9tYWNyb3MucnMgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTI2ICsKIHJ1c3QvYWxs b2MvcmF3X3ZlYy5ycyAgICAgICAgICAgICAgICAgICAgICAgIHwgIDU0OSArKysKIHJ1c3QvYWxs b2Mvc2xpY2UucnMgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTI3OSArKysrKysrCiBydXN0 L2FsbG9jL3N0ci5ycyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA2MjQgKysrKwogcnVz dC9hbGxvYy9zdHJpbmcucnMgICAgICAgICAgICAgICAgICAgICAgICAgfCAyODY0ICsrKysrKysr KysrKysrKwogcnVzdC9hbGxvYy92ZWMvZHJhaW4ucnMgICAgICAgICAgICAgICAgICAgICAgfCAg MTU5ICsKIHJ1c3QvYWxsb2MvdmVjL2RyYWluX2ZpbHRlci5ycyAgICAgICAgICAgICAgIHwgIDE0 NSArCiBydXN0L2FsbG9jL3ZlYy9pbnRvX2l0ZXIucnMgICAgICAgICAgICAgICAgICB8ICAzNTYg KysKIHJ1c3QvYWxsb2MvdmVjL2lzX3plcm8ucnMgICAgICAgICAgICAgICAgICAgIHwgIDEwNiAr CiBydXN0L2FsbG9jL3ZlYy9tb2QucnMgICAgICAgICAgICAgICAgICAgICAgICB8IDMzNTkgKysr KysrKysrKysrKysrKysrCiBydXN0L2FsbG9jL3ZlYy9wYXJ0aWFsX2VxLnJzICAgICAgICAgICAg ICAgICB8ICAgNDkgKwogcnVzdC9hbGxvYy92ZWMvc2V0X2xlbl9vbl9kcm9wLnJzICAgICAgICAg ICAgfCAgIDMwICsKIHJ1c3QvYWxsb2MvdmVjL3NwZWNfZXh0ZW5kLnJzICAgICAgICAgICAgICAg IHwgIDE3MiArCiBydXN0L2JpbmRnZW5fcGFyYW1ldGVycyAgICAgICAgICAgICAgICAgICAgICB8 ICAgMTMgKwogcnVzdC9idWlsZF9lcnJvci5ycyAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg IDI5ICsKIHJ1c3QvY29tcGlsZXJfYnVpbHRpbnMucnMgICAgICAgICAgICAgICAgICAgIHwgICA1 NyArCiBydXN0L2V4cG9ydHMuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTkg KwogcnVzdC9oZWxwZXJzLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNTI5ICsr KwogcnVzdC9rZXJuZWwvYWxsb2NhdG9yLnJzICAgICAgICAgICAgICAgICAgICAgfCAgIDY1ICsK IHJ1c3Qva2VybmVsL2FtYmEucnMgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDI1OSArKwog cnVzdC9rZXJuZWwvYmluZGluZ3MucnMgICAgICAgICAgICAgICAgICAgICAgfCAgIDQ3ICsKIHJ1 c3Qva2VybmVsL2JpbmRpbmdzX2hlbHBlci5oICAgICAgICAgICAgICAgIHwgICAzMCArCiBydXN0 L2tlcm5lbC9idWZmZXIucnMgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNTIgKwogcnVzdC9r ZXJuZWwvYnVpbGRfYXNzZXJ0LnJzICAgICAgICAgICAgICAgICAgfCAgIDgwICsKIHJ1c3Qva2Vy bmVsL2NfdHlwZXMucnMgICAgICAgICAgICAgICAgICAgICAgIHwgIDExOSArCiBydXN0L2tlcm5l bC9jaHJkZXYucnMgICAgICAgICAgICAgICAgICAgICAgICB8ICAyMDkgKysKIHJ1c3Qva2VybmVs L2Nsay5ycyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA3NSArCiBydXN0L2tlcm5lbC9j cmVkLnJzICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNzMgKwogcnVzdC9rZXJuZWwvZGV2 aWNlLnJzICAgICAgICAgICAgICAgICAgICAgICAgfCAgNTU0ICsrKwogcnVzdC9rZXJuZWwvZHJp dmVyLnJzICAgICAgICAgICAgICAgICAgICAgICAgfCAgNDQwICsrKwogcnVzdC9rZXJuZWwvZXJy b3IucnMgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNTQyICsrKwogcnVzdC9rZXJuZWwvZmls ZS5ycyAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTQ3ICsKIHJ1c3Qva2VybmVsL2ZpbGVf b3BlcmF0aW9ucy5ycyAgICAgICAgICAgICAgIHwgIDczNCArKysrCiBydXN0L2tlcm5lbC9ncGlv LnJzICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA0NzcgKysrCiBydXN0L2tlcm5lbC9pb19i dWZmZXIucnMgICAgICAgICAgICAgICAgICAgICB8ICAxNTMgKwogcnVzdC9rZXJuZWwvaW9fbWVt LnJzICAgICAgICAgICAgICAgICAgICAgICAgfCAgMjI3ICsrCiBydXN0L2tlcm5lbC9pb3ZfaXRl ci5ycyAgICAgICAgICAgICAgICAgICAgICB8ICAgODEgKwogcnVzdC9rZXJuZWwvaXJxLnJzICAg ICAgICAgICAgICAgICAgICAgICAgICAgfCAgNDA5ICsrKwogcnVzdC9rZXJuZWwvbGliLnJzICAg ICAgICAgICAgICAgICAgICAgICAgICAgfCAgMjYxICsrCiBydXN0L2tlcm5lbC9saW5rZWRfbGlz dC5ycyAgICAgICAgICAgICAgICAgICB8ICAyNDcgKysKIHJ1c3Qva2VybmVsL21pc2NkZXYucnMg ICAgICAgICAgICAgICAgICAgICAgIHwgIDI4MSArKwogcnVzdC9rZXJuZWwvbW0ucnMgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfCAgMTQ5ICsKIHJ1c3Qva2VybmVsL21vZHVsZV9wYXJhbS5y cyAgICAgICAgICAgICAgICAgIHwgIDQ5NyArKysKIHJ1c3Qva2VybmVsL29mLnJzICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgICA2MyArCiBydXN0L2tlcm5lbC9wYWdlcy5ycyAgICAgICAg ICAgICAgICAgICAgICAgICB8ICAxNDQgKwogcnVzdC9rZXJuZWwvcGxhdGZvcm0ucnMgICAgICAg ICAgICAgICAgICAgICAgfCAgMjI0ICsrCiBydXN0L2tlcm5lbC9wb3dlci5ycyAgICAgICAgICAg ICAgICAgICAgICAgICB8ICAxMTggKwogcnVzdC9rZXJuZWwvcHJlbHVkZS5ycyAgICAgICAgICAg ICAgICAgICAgICAgfCAgIDM2ICsKIHJ1c3Qva2VybmVsL3ByaW50LnJzICAgICAgICAgICAgICAg ICAgICAgICAgIHwgIDQxNyArKysKIHJ1c3Qva2VybmVsL3JhbmRvbS5ycyAgICAgICAgICAgICAg ICAgICAgICAgIHwgICA1MCArCiBydXN0L2tlcm5lbC9yYXdfbGlzdC5ycyAgICAgICAgICAgICAg ICAgICAgICB8ICAzNjEgKysKIHJ1c3Qva2VybmVsL3JidHJlZS5ycyAgICAgICAgICAgICAgICAg ICAgICAgIHwgIDU2MiArKysKIHJ1c3Qva2VybmVsL3Jldm9jYWJsZS5ycyAgICAgICAgICAgICAg ICAgICAgIHwgIDE2MyArCiBydXN0L2tlcm5lbC9zZWN1cml0eS5ycyAgICAgICAgICAgICAgICAg ICAgICB8ICAgMzYgKwogcnVzdC9rZXJuZWwvc3RhdGljX2Fzc2VydC5ycyAgICAgICAgICAgICAg ICAgfCAgIDM5ICsKIHJ1c3Qva2VybmVsL3N0ZF92ZW5kb3IucnMgICAgICAgICAgICAgICAgICAg IHwgIDE1MCArCiBydXN0L2tlcm5lbC9zdHIucnMgICAgICAgICAgICAgICAgICAgICAgICAgICB8 ICA0MDEgKysrCiBydXN0L2tlcm5lbC9zeW5jL2FyYy5ycyAgICAgICAgICAgICAgICAgICAgICB8 ICA1MDAgKysrCiBydXN0L2tlcm5lbC9zeW5jL2NvbmR2YXIucnMgICAgICAgICAgICAgICAgICB8 ICAxMzggKwogcnVzdC9rZXJuZWwvc3luYy9ndWFyZC5ycyAgICAgICAgICAgICAgICAgICAgfCAg MTUwICsKIHJ1c3Qva2VybmVsL3N5bmMvbG9ja2VkX2J5LnJzICAgICAgICAgICAgICAgIHwgIDEx MiArCiBydXN0L2tlcm5lbC9zeW5jL21vZC5ycyAgICAgICAgICAgICAgICAgICAgICB8ICAxNTcg KwogcnVzdC9rZXJuZWwvc3luYy9tdXRleC5ycyAgICAgICAgICAgICAgICAgICAgfCAgMTEyICsK IHJ1c3Qva2VybmVsL3N5bmMvcmV2b2NhYmxlX211dGV4LnJzICAgICAgICAgIHwgIDE4NCArCiBy dXN0L2tlcm5lbC9zeW5jL3J3c2VtLnJzICAgICAgICAgICAgICAgICAgICB8ICAxNDcgKwogcnVz dC9rZXJuZWwvc3luYy9zZXFsb2NrLnJzICAgICAgICAgICAgICAgICAgfCAgMjAyICsrCiBydXN0 L2tlcm5lbC9zeW5jL3NwaW5sb2NrLnJzICAgICAgICAgICAgICAgICB8ICAxODAgKwogcnVzdC9r ZXJuZWwvc3lzY3RsLnJzICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTk3ICsKIHJ1c3Qva2Vy bmVsL3Rhc2sucnMgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDE4MiArCiBydXN0L2tlcm5l bC90eXBlcy5ycyAgICAgICAgICAgICAgICAgICAgICAgICB8ICA0ODYgKysrCiBydXN0L2tlcm5l bC91c2VyX3B0ci5ycyAgICAgICAgICAgICAgICAgICAgICB8ICAxNzUgKwogcnVzdC9tYWNyb3Mv aGVscGVycy5ycyAgICAgICAgICAgICAgICAgICAgICAgfCAgIDc5ICsKIHJ1c3QvbWFjcm9zL2xp Yi5ycyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA5NCArCiBydXN0L21hY3Jvcy9tb2R1 bGUucnMgICAgICAgICAgICAgICAgICAgICAgICB8ICA2MzEgKysrKwogc2FtcGxlcy9LY29uZmln ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAyICsKIHNhbXBsZXMvTWFrZWZpbGUg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMSArCiBzYW1wbGVzL3J1c3QvS2NvbmZp ZyAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxMjMgKwogc2FtcGxlcy9ydXN0L01ha2VmaWxl ICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEzICsKIHNhbXBsZXMvcnVzdC9ydXN0X2NocmRl di5ycyAgICAgICAgICAgICAgICAgIHwgICA1MCArCiBzYW1wbGVzL3J1c3QvcnVzdF9taW5pbWFs LnJzICAgICAgICAgICAgICAgICB8ICAgMzUgKwogc2FtcGxlcy9ydXN0L3J1c3RfbWlzY2Rldi5y cyAgICAgICAgICAgICAgICAgfCAgMTQ0ICsKIHNhbXBsZXMvcnVzdC9ydXN0X21vZHVsZV9wYXJh bWV0ZXJzLnJzICAgICAgIHwgICA2OSArCiBzYW1wbGVzL3J1c3QvcnVzdF9wbGF0Zm9ybS5ycyAg ICAgICAgICAgICAgICB8ICAgMjIgKwogc2FtcGxlcy9ydXN0L3J1c3RfcHJpbnQucnMgICAgICAg ICAgICAgICAgICAgfCAgIDU0ICsKIHNhbXBsZXMvcnVzdC9ydXN0X3JhbmRvbS5ycyAgICAgICAg ICAgICAgICAgIHwgICA2MSArCiBzYW1wbGVzL3J1c3QvcnVzdF9zZW1hcGhvcmUucnMgICAgICAg ICAgICAgICB8ICAxNzIgKwogc2FtcGxlcy9ydXN0L3J1c3Rfc2VtYXBob3JlX2MuYyAgICAgICAg ICAgICAgfCAgMjEyICsrCiBzYW1wbGVzL3J1c3QvcnVzdF9zdGFja19wcm9iaW5nLnJzICAgICAg ICAgICB8ICAgMzYgKwogc2FtcGxlcy9ydXN0L3J1c3Rfc3luYy5ycyAgICAgICAgICAgICAgICAg ICAgfCAgIDc4ICsKIHNjcmlwdHMvS2NvbmZpZy5pbmNsdWRlICAgICAgICAgICAgICAgICAgICAg IHwgICAgNiArLQogc2NyaXB0cy9NYWtlZmlsZS5idWlsZCAgICAgICAgICAgICAgICAgICAgICAg fCAgIDY1ICsKIHNjcmlwdHMvTWFrZWZpbGUuZGVidWcgICAgICAgICAgICAgICAgICAgICAgIHwg ICAxMCArCiBzY3JpcHRzL01ha2VmaWxlLmxpYiAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg MTIgKwogc2NyaXB0cy9NYWtlZmlsZS5tb2RmaW5hbCAgICAgICAgICAgICAgICAgICAgfCAgICA4 ICstCiBzY3JpcHRzL2NjLXZlcnNpb24uc2ggICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTIg Ky0KIHNjcmlwdHMvZGVjb2RlX3N0YWNrdHJhY2Uuc2ggICAgICAgICAgICAgICAgIHwgICAxNCAr CiBzY3JpcHRzL2dlbmVyYXRlX3J1c3RfYW5hbHl6ZXIucHkgICAgICAgICAgICB8ICAxMzMgKwog c2NyaXB0cy9pc19ydXN0X21vZHVsZS5zaCAgICAgICAgICAgICAgICAgICAgfCAgIDEzICsKIHNj cmlwdHMva2FsbHN5bXMuYyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA0MCArLQogc2Ny aXB0cy9rY29uZmlnL2NvbmZkYXRhLmMgICAgICAgICAgICAgICAgICAgfCAgIDc1ICsKIHNjcmlw dHMvbWluLXRvb2wtdmVyc2lvbi5zaCAgICAgICAgICAgICAgICAgIHwgICAgNiArCiBzY3JpcHRz L3J1c3QtaXMtYXZhaWxhYmxlLWJpbmRnZW4tbGliY2xhbmcuaCB8ICAgIDIgKwogc2NyaXB0cy9y dXN0LWlzLWF2YWlsYWJsZS5zaCAgICAgICAgICAgICAgICAgfCAgMTU4ICsKIHRvb2xzL2luY2x1 ZGUvbGludXgva2FsbHN5bXMuaCAgICAgICAgICAgICAgIHwgICAgMiArLQogdG9vbHMvbGliL3Bl cmYvaW5jbHVkZS9wZXJmL2V2ZW50LmggICAgICAgICAgfCAgICAyICstCiB0b29scy9saWIvc3lt Ym9sL2thbGxzeW1zLmggICAgICAgICAgICAgICAgICB8ICAgIDIgKy0KIDE2MiBmaWxlcyBjaGFu Z2VkLCAzNDM0MSBpbnNlcnRpb25zKCspLCA1NyBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEw MDY0NCAucnVzdGZtdC50b21sCiBjcmVhdGUgbW9kZSAxMDA2NDQgRG9jdW1lbnRhdGlvbi9ydXN0 L2FyY2gtc3VwcG9ydC5yc3QKIGNyZWF0ZSBtb2RlIDEwMDY0NCBEb2N1bWVudGF0aW9uL3J1c3Qv Y29kaW5nLWd1aWRlbGluZXMucnN0CiBjcmVhdGUgbW9kZSAxMDA2NDQgRG9jdW1lbnRhdGlvbi9y dXN0L2dlbmVyYWwtaW5mb3JtYXRpb24ucnN0CiBjcmVhdGUgbW9kZSAxMDA2NDQgRG9jdW1lbnRh dGlvbi9ydXN0L2luZGV4LnJzdAogY3JlYXRlIG1vZGUgMTAwNjQ0IERvY3VtZW50YXRpb24vcnVz dC9sb2dvLnN2ZwogY3JlYXRlIG1vZGUgMTAwNjQ0IERvY3VtZW50YXRpb24vcnVzdC9xdWljay1z dGFydC5yc3QKIGNyZWF0ZSBtb2RlIDEwMDY0NCBhcmNoL2FybS9ydXN0L3RhcmdldC5qc29uCiBj cmVhdGUgbW9kZSAxMDA2NDQgYXJjaC9hcm02NC9ydXN0L3RhcmdldC5qc29uCiBjcmVhdGUgbW9k ZSAxMDA2NDQgYXJjaC9wb3dlcnBjL3J1c3QvdGFyZ2V0Lmpzb24KIGNyZWF0ZSBtb2RlIDEwMDY0 NCBhcmNoL3Jpc2N2L3J1c3QvcnYzMmltYS5qc29uCiBjcmVhdGUgbW9kZSAxMDA2NDQgYXJjaC9y aXNjdi9ydXN0L3J2MzJpbWFjLmpzb24KIGNyZWF0ZSBtb2RlIDEwMDY0NCBhcmNoL3Jpc2N2L3J1 c3QvcnY2NGltYS5qc29uCiBjcmVhdGUgbW9kZSAxMDA2NDQgYXJjaC9yaXNjdi9ydXN0L3J2NjRp bWFjLmpzb24KIGNyZWF0ZSBtb2RlIDEwMDY0NCBhcmNoL3g4Ni9ydXN0L3RhcmdldC5qc29uCiBj cmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9hbmRyb2lkL2FsbG9jYXRpb24ucnMKIGNyZWF0ZSBt b2RlIDEwMDY0NCBkcml2ZXJzL2FuZHJvaWQvY29udGV4dC5ycwogY3JlYXRlIG1vZGUgMTAwNjQ0 IGRyaXZlcnMvYW5kcm9pZC9kZWZzLnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9hbmRy b2lkL25vZGUucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2FuZHJvaWQvcHJvY2Vzcy5y cwogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvYW5kcm9pZC9yYW5nZV9hbGxvYy5ycwogY3Jl YXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvYW5kcm9pZC9ydXN0X2JpbmRlci5ycwogY3JlYXRlIG1v ZGUgMTAwNjQ0IGRyaXZlcnMvYW5kcm9pZC90aHJlYWQucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBk cml2ZXJzL2FuZHJvaWQvdHJhbnNhY3Rpb24ucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJz L2dwaW8vZ3Bpb19wbDA2MV9ydXN0LnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL3J1c3QuaAog Y3JlYXRlIG1vZGUgMTAwNjQ0IHJ1c3QvLmdpdGlnbm9yZQogY3JlYXRlIG1vZGUgMTAwNjQ0IHJ1 c3QvTWFrZWZpbGUKIGNyZWF0ZSBtb2RlIDEwMDY0NCBydXN0L2FsbG9jL1JFQURNRS5tZAogY3Jl YXRlIG1vZGUgMTAwNjQ0IHJ1c3QvYWxsb2MvYWxsb2MucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBy dXN0L2FsbG9jL2JvcnJvdy5ycwogY3JlYXRlIG1vZGUgMTAwNjQ0IHJ1c3QvYWxsb2MvYm94ZWQu cnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBydXN0L2FsbG9jL2NvbGxlY3Rpb25zL21vZC5ycwogY3Jl YXRlIG1vZGUgMTAwNjQ0IHJ1c3QvYWxsb2MvZm10LnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVz dC9hbGxvYy9saWIucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBydXN0L2FsbG9jL21hY3Jvcy5ycwog Y3JlYXRlIG1vZGUgMTAwNjQ0IHJ1c3QvYWxsb2MvcmF3X3ZlYy5ycwogY3JlYXRlIG1vZGUgMTAw NjQ0IHJ1c3QvYWxsb2Mvc2xpY2UucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBydXN0L2FsbG9jL3N0 ci5ycwogY3JlYXRlIG1vZGUgMTAwNjQ0IHJ1c3QvYWxsb2Mvc3RyaW5nLnJzCiBjcmVhdGUgbW9k ZSAxMDA2NDQgcnVzdC9hbGxvYy92ZWMvZHJhaW4ucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBydXN0 L2FsbG9jL3ZlYy9kcmFpbl9maWx0ZXIucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBydXN0L2FsbG9j L3ZlYy9pbnRvX2l0ZXIucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBydXN0L2FsbG9jL3ZlYy9pc196 ZXJvLnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9hbGxvYy92ZWMvbW9kLnJzCiBjcmVhdGUg bW9kZSAxMDA2NDQgcnVzdC9hbGxvYy92ZWMvcGFydGlhbF9lcS5ycwogY3JlYXRlIG1vZGUgMTAw NjQ0IHJ1c3QvYWxsb2MvdmVjL3NldF9sZW5fb25fZHJvcC5ycwogY3JlYXRlIG1vZGUgMTAwNjQ0 IHJ1c3QvYWxsb2MvdmVjL3NwZWNfZXh0ZW5kLnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9i aW5kZ2VuX3BhcmFtZXRlcnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBydXN0L2J1aWxkX2Vycm9yLnJz CiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9jb21waWxlcl9idWlsdGlucy5ycwogY3JlYXRlIG1v ZGUgMTAwNjQ0IHJ1c3QvZXhwb3J0cy5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9oZWxwZXJz LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBydXN0L2tlcm5lbC9hbGxvY2F0b3IucnMKIGNyZWF0ZSBt b2RlIDEwMDY0NCBydXN0L2tlcm5lbC9hbWJhLnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9r ZXJuZWwvYmluZGluZ3MucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBydXN0L2tlcm5lbC9iaW5kaW5n c19oZWxwZXIuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHJ1c3Qva2VybmVsL2J1ZmZlci5ycwogY3Jl YXRlIG1vZGUgMTAwNjQ0IHJ1c3Qva2VybmVsL2J1aWxkX2Fzc2VydC5ycwogY3JlYXRlIG1vZGUg MTAwNjQ0IHJ1c3Qva2VybmVsL2NfdHlwZXMucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBydXN0L2tl cm5lbC9jaHJkZXYucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBydXN0L2tlcm5lbC9jbGsucnMKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBydXN0L2tlcm5lbC9jcmVkLnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQg cnVzdC9rZXJuZWwvZGV2aWNlLnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9rZXJuZWwvZHJp dmVyLnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9rZXJuZWwvZXJyb3IucnMKIGNyZWF0ZSBt b2RlIDEwMDY0NCBydXN0L2tlcm5lbC9maWxlLnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9r ZXJuZWwvZmlsZV9vcGVyYXRpb25zLnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9rZXJuZWwv Z3Bpby5ycwogY3JlYXRlIG1vZGUgMTAwNjQ0IHJ1c3Qva2VybmVsL2lvX2J1ZmZlci5ycwogY3Jl YXRlIG1vZGUgMTAwNjQ0IHJ1c3Qva2VybmVsL2lvX21lbS5ycwogY3JlYXRlIG1vZGUgMTAwNjQ0 IHJ1c3Qva2VybmVsL2lvdl9pdGVyLnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9rZXJuZWwv aXJxLnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9rZXJuZWwvbGliLnJzCiBjcmVhdGUgbW9k ZSAxMDA2NDQgcnVzdC9rZXJuZWwvbGlua2VkX2xpc3QucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBy dXN0L2tlcm5lbC9taXNjZGV2LnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9rZXJuZWwvbW0u cnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBydXN0L2tlcm5lbC9tb2R1bGVfcGFyYW0ucnMKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBydXN0L2tlcm5lbC9vZi5ycwogY3JlYXRlIG1vZGUgMTAwNjQ0IHJ1c3Qv a2VybmVsL3BhZ2VzLnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9rZXJuZWwvcGxhdGZvcm0u cnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBydXN0L2tlcm5lbC9wb3dlci5ycwogY3JlYXRlIG1vZGUg MTAwNjQ0IHJ1c3Qva2VybmVsL3ByZWx1ZGUucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBydXN0L2tl cm5lbC9wcmludC5ycwogY3JlYXRlIG1vZGUgMTAwNjQ0IHJ1c3Qva2VybmVsL3JhbmRvbS5ycwog Y3JlYXRlIG1vZGUgMTAwNjQ0IHJ1c3Qva2VybmVsL3Jhd19saXN0LnJzCiBjcmVhdGUgbW9kZSAx MDA2NDQgcnVzdC9rZXJuZWwvcmJ0cmVlLnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9rZXJu ZWwvcmV2b2NhYmxlLnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9rZXJuZWwvc2VjdXJpdHku cnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBydXN0L2tlcm5lbC9zdGF0aWNfYXNzZXJ0LnJzCiBjcmVh dGUgbW9kZSAxMDA2NDQgcnVzdC9rZXJuZWwvc3RkX3ZlbmRvci5ycwogY3JlYXRlIG1vZGUgMTAw NjQ0IHJ1c3Qva2VybmVsL3N0ci5ycwogY3JlYXRlIG1vZGUgMTAwNjQ0IHJ1c3Qva2VybmVsL3N5 bmMvYXJjLnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9rZXJuZWwvc3luYy9jb25kdmFyLnJz CiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9rZXJuZWwvc3luYy9ndWFyZC5ycwogY3JlYXRlIG1v ZGUgMTAwNjQ0IHJ1c3Qva2VybmVsL3N5bmMvbG9ja2VkX2J5LnJzCiBjcmVhdGUgbW9kZSAxMDA2 NDQgcnVzdC9rZXJuZWwvc3luYy9tb2QucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBydXN0L2tlcm5l bC9zeW5jL211dGV4LnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9rZXJuZWwvc3luYy9yZXZv Y2FibGVfbXV0ZXgucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBydXN0L2tlcm5lbC9zeW5jL3J3c2Vt LnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9rZXJuZWwvc3luYy9zZXFsb2NrLnJzCiBjcmVh dGUgbW9kZSAxMDA2NDQgcnVzdC9rZXJuZWwvc3luYy9zcGlubG9jay5ycwogY3JlYXRlIG1vZGUg MTAwNjQ0IHJ1c3Qva2VybmVsL3N5c2N0bC5ycwogY3JlYXRlIG1vZGUgMTAwNjQ0IHJ1c3Qva2Vy bmVsL3Rhc2sucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBydXN0L2tlcm5lbC90eXBlcy5ycwogY3Jl YXRlIG1vZGUgMTAwNjQ0IHJ1c3Qva2VybmVsL3VzZXJfcHRyLnJzCiBjcmVhdGUgbW9kZSAxMDA2 NDQgcnVzdC9tYWNyb3MvaGVscGVycy5ycwogY3JlYXRlIG1vZGUgMTAwNjQ0IHJ1c3QvbWFjcm9z L2xpYi5ycwogY3JlYXRlIG1vZGUgMTAwNjQ0IHJ1c3QvbWFjcm9zL21vZHVsZS5ycwogY3JlYXRl IG1vZGUgMTAwNjQ0IHNhbXBsZXMvcnVzdC9LY29uZmlnCiBjcmVhdGUgbW9kZSAxMDA2NDQgc2Ft cGxlcy9ydXN0L01ha2VmaWxlCiBjcmVhdGUgbW9kZSAxMDA2NDQgc2FtcGxlcy9ydXN0L3J1c3Rf Y2hyZGV2LnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgc2FtcGxlcy9ydXN0L3J1c3RfbWluaW1hbC5y cwogY3JlYXRlIG1vZGUgMTAwNjQ0IHNhbXBsZXMvcnVzdC9ydXN0X21pc2NkZXYucnMKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBzYW1wbGVzL3J1c3QvcnVzdF9tb2R1bGVfcGFyYW1ldGVycy5ycwogY3Jl YXRlIG1vZGUgMTAwNjQ0IHNhbXBsZXMvcnVzdC9ydXN0X3BsYXRmb3JtLnJzCiBjcmVhdGUgbW9k ZSAxMDA2NDQgc2FtcGxlcy9ydXN0L3J1c3RfcHJpbnQucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBz YW1wbGVzL3J1c3QvcnVzdF9yYW5kb20ucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzYW1wbGVzL3J1 c3QvcnVzdF9zZW1hcGhvcmUucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzYW1wbGVzL3J1c3QvcnVz dF9zZW1hcGhvcmVfYy5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgc2FtcGxlcy9ydXN0L3J1c3Rfc3Rh Y2tfcHJvYmluZy5ycwogY3JlYXRlIG1vZGUgMTAwNjQ0IHNhbXBsZXMvcnVzdC9ydXN0X3N5bmMu cnMKIGNyZWF0ZSBtb2RlIDEwMDc1NSBzY3JpcHRzL2dlbmVyYXRlX3J1c3RfYW5hbHl6ZXIucHkK IGNyZWF0ZSBtb2RlIDEwMDc1NSBzY3JpcHRzL2lzX3J1c3RfbW9kdWxlLnNoCiBjcmVhdGUgbW9k ZSAxMDA2NDQgc2NyaXB0cy9ydXN0LWlzLWF2YWlsYWJsZS1iaW5kZ2VuLWxpYmNsYW5nLmgKIGNy ZWF0ZSBtb2RlIDEwMDc1NSBzY3JpcHRzL3J1c3QtaXMtYXZhaWxhYmxlLnNoCgoKYmFzZS1jb21t aXQ6IGRmZDQyZmFjZjFlNGFkYTAyMWI5MzliNGUxOWM5MzVkY2RkNTU1NjYKLS0gCjIuMzUuMQoK Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFy bS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9y ZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1r ZXJuZWwK