aboutsummaryrefslogtreecommitdiff
path: root/devel
diff options
context:
space:
mode:
authorHiroki Tagato <tagattie@FreeBSD.org>2022-05-16 13:09:53 +0000
committerHiroki Tagato <tagattie@FreeBSD.org>2022-05-16 13:19:36 +0000
commitc413504f628248837997ee27dcb4fa5edd8a04fd (patch)
treed504d454b27c552a8307bb286b08af0152ceb378 /devel
parent3e971e9bf59b04d5bb7fa0eb35157c2aa2a9a295 (diff)
downloadports-c413504f628248837997ee27dcb4fa5edd8a04fd.tar.gz
ports-c413504f628248837997ee27dcb4fa5edd8a04fd.zip
devel/electron17: add port: Build cross-platform desktop apps with JavaScript, HTML, and CSS
Build cross platform desktop apps with JavaScript, HTML, and CSS. It's easier than you think. If you can build a website, you can build a desktop app. Electron is a framework for creating native applications with web technologies like JavaScript, HTML, and CSS. It takes care of the hard parts so you can focus on the core of your application. WWW: https://electronjs.org/
Diffstat (limited to 'devel')
-rw-r--r--devel/Makefile1
-rw-r--r--devel/electron17/Makefile339
-rw-r--r--devel/electron17/Makefile.version2
-rw-r--r--devel/electron17/distinfo21
-rw-r--r--devel/electron17/files/apply-electron-patches.sh26
-rw-r--r--devel/electron17/files/package.json144
-rw-r--r--devel/electron17/files/patch-BUILD.gn72
-rw-r--r--devel/electron17/files/patch-apps_ui_views_app__window__frame__view.cc11
-rw-r--r--devel/electron17/files/patch-ash_display_mirror__window__controller.cc14
-rw-r--r--devel/electron17/files/patch-base_BUILD.gn102
-rw-r--r--devel/electron17/files/patch-base_allocator_partition__allocator_address__space__randomization.h11
-rw-r--r--devel/electron17/files/patch-base_allocator_partition__allocator_page__allocator.h11
-rw-r--r--devel/electron17/files/patch-base_allocator_partition__allocator_page__allocator__internals__posix.h16
-rw-r--r--devel/electron17/files/patch-base_allocator_partition__allocator_partition__alloc.cc15
-rw-r--r--devel/electron17/files/patch-base_allocator_partition__allocator_partition__alloc__config.h11
-rw-r--r--devel/electron17/files/patch-base_allocator_partition__allocator_partition__alloc__constants.h11
-rw-r--r--devel/electron17/files/patch-base_allocator_partition__allocator_partition__page.h12
-rw-r--r--devel/electron17/files/patch-base_allocator_partition__allocator_partition__root.h11
-rw-r--r--devel/electron17/files/patch-base_allocator_partition__allocator_spinning__mutex.cc47
-rw-r--r--devel/electron17/files/patch-base_allocator_partition__allocator_starscan_stack_stack.cc50
-rw-r--r--devel/electron17/files/patch-base_allocator_partition__allocator_starscan_state__bitmap.h20
-rw-r--r--devel/electron17/files/patch-base_atomicops.h14
-rw-r--r--devel/electron17/files/patch-base_base__paths__posix.cc98
-rw-r--r--devel/electron17/files/patch-base_base__switches.cc11
-rw-r--r--devel/electron17/files/patch-base_base__switches.h11
-rw-r--r--devel/electron17/files/patch-base_compiler__specific.h11
-rw-r--r--devel/electron17/files/patch-base_cpu.h11
-rw-r--r--devel/electron17/files/patch-base_debug_debugger__posix.cc68
-rw-r--r--devel/electron17/files/patch-base_debug_elf__reader.cc18
-rw-r--r--devel/electron17/files/patch-base_debug_proc__maps__linux.cc11
-rw-r--r--devel/electron17/files/patch-base_debug_stack__trace__posix.cc38
-rw-r--r--devel/electron17/files/patch-base_files_file__path__watcher__bsd.cc57
-rw-r--r--devel/electron17/files/patch-base_files_file__path__watcher__kqueue.h10
-rw-r--r--devel/electron17/files/patch-base_files_file__util__posix.cc52
-rw-r--r--devel/electron17/files/patch-base_files_important__file__writer__cleaner.cc12
-rw-r--r--devel/electron17/files/patch-base_files_scoped__file.cc11
-rw-r--r--devel/electron17/files/patch-base_i18n_icu__util.cc21
-rw-r--r--devel/electron17/files/patch-base_linux__util.cc28
-rw-r--r--devel/electron17/files/patch-base_memory_discardable__memory.cc38
-rw-r--r--devel/electron17/files/patch-base_memory_discardable__memory__internal.h11
-rw-r--r--devel/electron17/files/patch-base_memory_madv__free__discardable__memory__posix.cc21
-rw-r--r--devel/electron17/files/patch-base_memory_platform__shared__memory__region.h29
-rw-r--r--devel/electron17/files/patch-base_memory_platform__shared__memory__region__posix.cc29
-rw-r--r--devel/electron17/files/patch-base_message__loop_message__pump__glib.cc28
-rw-r--r--devel/electron17/files/patch-base_native__library__posix.cc11
-rw-r--r--devel/electron17/files/patch-base_posix_can__lower__nice__to.cc16
-rw-r--r--devel/electron17/files/patch-base_posix_unix__domain__socket.cc39
-rw-r--r--devel/electron17/files/patch-base_process_kill.h11
-rw-r--r--devel/electron17/files/patch-base_process_kill__posix.cc11
-rw-r--r--devel/electron17/files/patch-base_process_launch.h11
-rw-r--r--devel/electron17/files/patch-base_process_launch__posix.cc12
-rw-r--r--devel/electron17/files/patch-base_process_memory.cc20
-rw-r--r--devel/electron17/files/patch-base_process_process__handle.cc11
-rw-r--r--devel/electron17/files/patch-base_process_process__handle.h11
-rw-r--r--devel/electron17/files/patch-base_process_process__handle__freebsd.cc23
-rw-r--r--devel/electron17/files/patch-base_process_process__handle__openbsd.cc89
-rw-r--r--devel/electron17/files/patch-base_process_process__iterator__freebsd.cc51
-rw-r--r--devel/electron17/files/patch-base_process_process__iterator__openbsd.cc45
-rw-r--r--devel/electron17/files/patch-base_process_process__metrics.cc38
-rw-r--r--devel/electron17/files/patch-base_process_process__metrics.h119
-rw-r--r--devel/electron17/files/patch-base_process_process__metrics__freebsd.cc277
-rw-r--r--devel/electron17/files/patch-base_process_process__metrics__openbsd.cc213
-rw-r--r--devel/electron17/files/patch-base_process_process__metrics__posix.cc20
-rw-r--r--devel/electron17/files/patch-base_process_process__posix.cc70
-rw-r--r--devel/electron17/files/patch-base_rand__util.h11
-rw-r--r--devel/electron17/files/patch-base_rand__util__posix.cc52
-rw-r--r--devel/electron17/files/patch-base_strings_string__util.cc11
-rw-r--r--devel/electron17/files/patch-base_synchronization_lock__impl.h23
-rw-r--r--devel/electron17/files/patch-base_syslog__logging.cc20
-rw-r--r--devel/electron17/files/patch-base_system_sys__info.cc11
-rw-r--r--devel/electron17/files/patch-base_system_sys__info.h20
-rw-r--r--devel/electron17/files/patch-base_system_sys__info__freebsd.cc102
-rw-r--r--devel/electron17/files/patch-base_system_sys__info__openbsd.cc100
-rw-r--r--devel/electron17/files/patch-base_system_sys__info__posix.cc11
-rw-r--r--devel/electron17/files/patch-base_test_launcher_test__launcher.cc10
-rw-r--r--devel/electron17/files/patch-base_test_test__file__util__linux.cc13
-rw-r--r--devel/electron17/files/patch-base_third__party_libevent_BUILD.gn24
-rw-r--r--devel/electron17/files/patch-base_third__party_libevent_event-config.h11
-rw-r--r--devel/electron17/files/patch-base_third__party_libevent_openbsd_config.h279
-rw-r--r--devel/electron17/files/patch-base_third__party_libevent_openbsd_event-config.h287
-rw-r--r--devel/electron17/files/patch-base_third__party_symbolize_symbolize.cc11
-rw-r--r--devel/electron17/files/patch-base_threading_platform__thread.h11
-rw-r--r--devel/electron17/files/patch-base_threading_platform__thread__linux.cc77
-rw-r--r--devel/electron17/files/patch-base_threading_platform__thread__posix.cc21
-rw-r--r--devel/electron17/files/patch-base_time_time.cc11
-rw-r--r--devel/electron17/files/patch-base_trace__event_malloc__dump__provider.cc21
-rw-r--r--devel/electron17/files/patch-base_trace__event_memory__dump__manager.cc11
-rw-r--r--devel/electron17/files/patch-base_trace__event_process__memory__dump.cc20
-rw-r--r--devel/electron17/files/patch-base_tracing_trace__time.cc28
-rw-r--r--devel/electron17/files/patch-base_tracing_trace__time.h11
-rw-r--r--devel/electron17/files/patch-build_config_BUILD.gn22
-rw-r--r--devel/electron17/files/patch-build_config_BUILDCONFIG.gn45
-rw-r--r--devel/electron17/files/patch-build_config_compiler_BUILD.gn113
-rw-r--r--devel/electron17/files/patch-build_config_compiler_pgo_pgo.gni11
-rw-r--r--devel/electron17/files/patch-build_config_linux_BUILD.gn11
-rw-r--r--devel/electron17/files/patch-build_config_linux_pkg-config.py11
-rw-r--r--devel/electron17/files/patch-build_config_ozone.gni21
-rw-r--r--devel/electron17/files/patch-build_config_rust.gni11
-rw-r--r--devel/electron17/files/patch-build_config_v8__target__cpu.gni13
-rw-r--r--devel/electron17/files/patch-build_detect__host__arch.py11
-rw-r--r--devel/electron17/files/patch-build_gn__run__binary.py11
-rw-r--r--devel/electron17/files/patch-build_linux_chrome.map13
-rw-r--r--devel/electron17/files/patch-build_linux_strip__binary.py10
-rw-r--r--devel/electron17/files/patch-build_linux_unbundle_libusb.gn27
-rw-r--r--devel/electron17/files/patch-build_linux_unbundle_replace__gn__files.py10
-rw-r--r--devel/electron17/files/patch-build_toolchain_freebsd_BUILD.gn69
-rw-r--r--devel/electron17/files/patch-build_toolchain_gcc__solink__wrapper.py11
-rw-r--r--devel/electron17/files/patch-build_toolchain_gcc__toolchain.gni39
-rw-r--r--devel/electron17/files/patch-build_toolchain_openbsd_BUILD.gn69
-rw-r--r--devel/electron17/files/patch-cc_BUILD.gn19
-rw-r--r--devel/electron17/files/patch-chrome_app_chrome__command__ids.h11
-rw-r--r--devel/electron17/files/patch-chrome_app_chrome__main.cc20
-rw-r--r--devel/electron17/files/patch-chrome_app_chrome__main__delegate.cc107
-rw-r--r--devel/electron17/files/patch-chrome_app_chromium__strings.grd29
-rw-r--r--devel/electron17/files/patch-chrome_app_generated__resources.grd56
-rw-r--r--devel/electron17/files/patch-chrome_app_google__chrome__strings.grd29
-rw-r--r--devel/electron17/files/patch-chrome_app_profiles__strings.grdp11
-rw-r--r--devel/electron17/files/patch-chrome_app_settings__strings.grdp20
-rw-r--r--devel/electron17/files/patch-chrome_app_theme_chrome__unscaled__resources.grd11
-rw-r--r--devel/electron17/files/patch-chrome_app_theme_theme__resources.grd11
-rw-r--r--devel/electron17/files/patch-chrome_browser_about__flags.cc155
-rw-r--r--devel/electron17/files/patch-chrome_browser_after__startup__task__utils.cc29
-rw-r--r--devel/electron17/files/patch-chrome_browser_apps_platform__apps_api_music__manager__private_device__id__linux.cc71
-rw-r--r--devel/electron17/files/patch-chrome_browser_apps_platform__apps_platform__app__launch.cc20
-rw-r--r--devel/electron17/files/patch-chrome_browser_apps_platform__apps_platform__app__launch.h11
-rw-r--r--devel/electron17/files/patch-chrome_browser_autocomplete_chrome__autocomplete__scheme__classifier.cc11
-rw-r--r--devel/electron17/files/patch-chrome_browser_background_background__mode__manager.cc11
-rw-r--r--devel/electron17/files/patch-chrome_browser_background_background__mode__optimizer.cc11
-rw-r--r--devel/electron17/files/patch-chrome_browser_browser__process__impl.cc29
-rw-r--r--devel/electron17/files/patch-chrome_browser_browser__process__impl.h11
-rw-r--r--devel/electron17/files/patch-chrome_browser_chrome__browser__interface__binders.cc56
-rw-r--r--devel/electron17/files/patch-chrome_browser_chrome__browser__main.cc52
-rw-r--r--devel/electron17/files/patch-chrome_browser_chrome__browser__main__extra__parts__linux.cc11
-rw-r--r--devel/electron17/files/patch-chrome_browser_chrome__browser__main__linux.cc20
-rw-r--r--devel/electron17/files/patch-chrome_browser_chrome__browser__main__posix.cc11
-rw-r--r--devel/electron17/files/patch-chrome_browser_chrome__content__browser__client.cc136
-rw-r--r--devel/electron17/files/patch-chrome_browser_chrome__content__browser__client.h11
-rw-r--r--devel/electron17/files/patch-chrome_browser_crash__upload__list_crash__upload__list.cc11
-rw-r--r--devel/electron17/files/patch-chrome_browser_custom__handlers_chrome__protocol__handler__registry__delegate.cc11
-rw-r--r--devel/electron17/files/patch-chrome_browser_defaults.cc11
-rw-r--r--devel/electron17/files/patch-chrome_browser_dev__ui__browser__resources.grd11
-rw-r--r--devel/electron17/files/patch-chrome_browser_device__identity_device__oauth2__token__service__factory.cc11
-rw-r--r--devel/electron17/files/patch-chrome_browser_devtools_devtools__eye__dropper.cc11
-rw-r--r--devel/electron17/files/patch-chrome_browser_diagnostics_diagnostics__writer.h11
-rw-r--r--devel/electron17/files/patch-chrome_browser_download_chrome__download__manager__delegate.cc47
-rw-r--r--devel/electron17/files/patch-chrome_browser_download_download__commands.cc20
-rw-r--r--devel/electron17/files/patch-chrome_browser_download_download__commands.h11
-rw-r--r--devel/electron17/files/patch-chrome_browser_download_download__item__model.cc20
-rw-r--r--devel/electron17/files/patch-chrome_browser_download_download__prefs.cc97
-rw-r--r--devel/electron17/files/patch-chrome_browser_download_download__prefs.h20
-rw-r--r--devel/electron17/files/patch-chrome_browser_enterprise_connectors_device__trust_device__trust__connector__service__factory.cc29
-rw-r--r--devel/electron17/files/patch-chrome_browser_enterprise_connectors_device__trust_device__trust__service__factory.cc11
-rw-r--r--devel/electron17/files/patch-chrome_browser_enterprise_connectors_device__trust_key__management_core_persistence_key__persistence__delegate__factory.cc20
-rw-r--r--devel/electron17/files/patch-chrome_browser_enterprise_connectors_device__trust_signals_signals__service__factory.cc20
-rw-r--r--devel/electron17/files/patch-chrome_browser_enterprise_signals_device__info__fetcher.cc20
-rw-r--r--devel/electron17/files/patch-chrome_browser_enterprise_signals_device__info__fetcher__linux.cc78
-rw-r--r--devel/electron17/files/patch-chrome_browser_extensions_BUILD.gn13
-rw-r--r--devel/electron17/files/patch-chrome_browser_extensions_api_enterprise__reporting__private_chrome__desktop__report__request__helper.cc29
-rw-r--r--devel/electron17/files/patch-chrome_browser_extensions_api_enterprise__reporting__private_enterprise__reporting__private__api.cc11
-rw-r--r--devel/electron17/files/patch-chrome_browser_extensions_api_enterprise__reporting__private_enterprise__reporting__private__api.h11
-rw-r--r--devel/electron17/files/patch-chrome_browser_extensions_api_image__writer__private_removable__storage__provider.cc20
-rw-r--r--devel/electron17/files/patch-chrome_browser_extensions_api_messaging_native__process__launcher__posix.cc11
-rw-r--r--devel/electron17/files/patch-chrome_browser_extensions_api_settings__private_prefs__util.cc20
-rw-r--r--devel/electron17/files/patch-chrome_browser_extensions_api_webrtc__logging__private_webrtc__logging__private__api.cc29
-rw-r--r--devel/electron17/files/patch-chrome_browser_extensions_browser__context__keyed__service__factories.cc20
-rw-r--r--devel/electron17/files/patch-chrome_browser_extensions_external__provider__impl.cc20
-rw-r--r--devel/electron17/files/patch-chrome_browser_file__system__access_chrome__file__system__access__permission__context.cc11
-rw-r--r--devel/electron17/files/patch-chrome_browser_first__run_first__run__dialog.h11
-rw-r--r--devel/electron17/files/patch-chrome_browser_first__run_first__run__internal.h11
-rw-r--r--devel/electron17/files/patch-chrome_browser_flag__descriptions.cc47
-rw-r--r--devel/electron17/files/patch-chrome_browser_flag__descriptions.h56
-rw-r--r--devel/electron17/files/patch-chrome_browser_headless_headless__mode__util.cc29
-rw-r--r--devel/electron17/files/patch-chrome_browser_intranet__redirect__detector.h11
-rw-r--r--devel/electron17/files/patch-chrome_browser_media__galleries_fileapi_mtp__device__map__service.cc15
-rw-r--r--devel/electron17/files/patch-chrome_browser_media__galleries_media__file__system__registry.cc16
-rw-r--r--devel/electron17/files/patch-chrome_browser_media_audio__service__util.cc20
-rw-r--r--devel/electron17/files/patch-chrome_browser_media_router_discovery_discovery__network__list__posix.cc35
-rw-r--r--devel/electron17/files/patch-chrome_browser_media_router_discovery_discovery__network__list__wifi__linux.cc30
-rw-r--r--devel/electron17/files/patch-chrome_browser_media_webrtc_webrtc__event__log__uploader.cc11
-rw-r--r--devel/electron17/files/patch-chrome_browser_media_webrtc_webrtc__log__uploader.cc13
-rw-r--r--devel/electron17/files/patch-chrome_browser_media_webrtc_webrtc__logging__controller.cc33
-rw-r--r--devel/electron17/files/patch-chrome_browser_media_webrtc_webrtc__logging__controller.h20
-rw-r--r--devel/electron17/files/patch-chrome_browser_memory__details.cc20
-rw-r--r--devel/electron17/files/patch-chrome_browser_memory__details__linux.cc37
-rw-r--r--devel/electron17/files/patch-chrome_browser_metrics_chrome__browser__main__extra__parts__metrics.cc33
-rw-r--r--devel/electron17/files/patch-chrome_browser_metrics_chrome__metrics__service__client.cc29
-rw-r--r--devel/electron17/files/patch-chrome_browser_metrics_perf_cpu__identity.cc11
-rw-r--r--devel/electron17/files/patch-chrome_browser_net_system__network__context__manager.cc47
-rw-r--r--devel/electron17/files/patch-chrome_browser_new__tab__page_modules_drive_drive__service.cc11
-rw-r--r--devel/electron17/files/patch-chrome_browser_notifications_notification__display__service__impl.cc38
-rw-r--r--devel/electron17/files/patch-chrome_browser_notifications_notification__platform__bridge__delegator.cc11
-rw-r--r--devel/electron17/files/patch-chrome_browser_password__manager_password__reuse__manager__factory.cc11
-rw-r--r--devel/electron17/files/patch-chrome_browser_performance__manager_policies_high__pmf__discard__policy.cc20
-rw-r--r--devel/electron17/files/patch-chrome_browser_performance__monitor_process__metrics__recorder__util.cc11
-rw-r--r--devel/electron17/files/patch-chrome_browser_performance__monitor_process__monitor.cc11
-rw-r--r--devel/electron17/files/patch-chrome_browser_performance__monitor_process__monitor.h11
-rw-r--r--devel/electron17/files/patch-chrome_browser_platform__util__linux.cc12
-rw-r--r--devel/electron17/files/patch-chrome_browser_plugins_plugins__resource__service.cc11
-rw-r--r--devel/electron17/files/patch-chrome_browser_policy_browser__signin__policy__handler.cc11
-rw-r--r--devel/electron17/files/patch-chrome_browser_policy_chrome__browser__cloud__management__controller__desktop.cc38
-rw-r--r--devel/electron17/files/patch-chrome_browser_policy_configuration__policy__handler__list__factory.cc47
-rw-r--r--devel/electron17/files/patch-chrome_browser_policy_device__management__service__configuration.cc20
-rw-r--r--devel/electron17/files/patch-chrome_browser_prefs_browser__prefs.cc46
-rw-r--r--devel/electron17/files/patch-chrome_browser_prefs_pref__service__incognito__allowlist.cc11
-rw-r--r--devel/electron17/files/patch-chrome_browser_printing_print__job__worker.cc11
-rw-r--r--devel/electron17/files/patch-chrome_browser_process__singleton__posix.cc36
-rw-r--r--devel/electron17/files/patch-chrome_browser_profiles_chrome__browser__main__extra__parts__profiles.cc11
-rw-r--r--devel/electron17/files/patch-chrome_browser_profiles_profile__impl.cc25
-rw-r--r--devel/electron17/files/patch-chrome_browser_profiles_profiles__state.cc11
-rw-r--r--devel/electron17/files/patch-chrome_browser_renderer__preferences__util.cc29
-rw-r--r--devel/electron17/files/patch-chrome_browser_resources_new__tab__page_new__tab__page.js13
-rw-r--r--devel/electron17/files/patch-chrome_browser_resources_plugin__metadata_plugins__linux.json31
-rw-r--r--devel/electron17/files/patch-chrome_browser_resources_settings_appearance__page_appearance__browser__proxy.ts20
-rw-r--r--devel/electron17/files/patch-chrome_browser_resources_settings_appearance__page_appearance__page.html29
-rw-r--r--devel/electron17/files/patch-chrome_browser_resources_settings_appearance__page_appearance__page.ts51
-rw-r--r--devel/electron17/files/patch-chrome_browser_resources_settings_autofill__page_passwords__shared__css.html11
-rw-r--r--devel/electron17/files/patch-chrome_browser_resources_settings_route.ts11
-rw-r--r--devel/electron17/files/patch-chrome_browser_resources_signin_signin__shared__css.html11
-rw-r--r--devel/electron17/files/patch-chrome_browser_safe__browsing_download__protection_file__analyzer.cc29
-rw-r--r--devel/electron17/files/patch-chrome_browser_safe__browsing_download__protection_file__analyzer.h29
-rw-r--r--devel/electron17/files/patch-chrome_browser_safe__browsing_incident__reporting_incident__reporting__service.cc11
-rw-r--r--devel/electron17/files/patch-chrome_browser_send__tab__to__self_receiving__ui__handler__registry.cc29
-rw-r--r--devel/electron17/files/patch-chrome_browser_send__tab__to__self_send__tab__to__self__client__service.cc20
-rw-r--r--devel/electron17/files/patch-chrome_browser_sharing_sharing__device__registration.cc11
-rw-r--r--devel/electron17/files/patch-chrome_browser_sharing_sharing__handler__registry__impl.cc20
-rw-r--r--devel/electron17/files/patch-chrome_browser_shutdown__signal__handlers__posix.cc21
-rw-r--r--devel/electron17/files/patch-chrome_browser_signin_signin__util.cc11
-rw-r--r--devel/electron17/files/patch-chrome_browser_sync_chrome__sync__client.cc11
-rw-r--r--devel/electron17/files/patch-chrome_browser_sync_device__info__sync__client__impl.cc11
-rw-r--r--devel/electron17/files/patch-chrome_browser_task__manager_sampling_task__group.cc38
-rw-r--r--devel/electron17/files/patch-chrome_browser_task__manager_sampling_task__group.h38
-rw-r--r--devel/electron17/files/patch-chrome_browser_task__manager_sampling_task__group__sampler.cc47
-rw-r--r--devel/electron17/files/patch-chrome_browser_task__manager_sampling_task__group__sampler.h38
-rw-r--r--devel/electron17/files/patch-chrome_browser_task__manager_sampling_task__manager__impl.cc11
-rw-r--r--devel/electron17/files/patch-chrome_browser_task__manager_task__manager__observer.h11
-rw-r--r--devel/electron17/files/patch-chrome_browser_themes_theme__helper.cc11
-rw-r--r--devel/electron17/files/patch-chrome_browser_themes_theme__service__factory.cc29
-rw-r--r--devel/electron17/files/patch-chrome_browser_ui_browser__command__controller.cc38
-rw-r--r--devel/electron17/files/patch-chrome_browser_ui_browser__dialogs.h29
-rw-r--r--devel/electron17/files/patch-chrome_browser_ui_browser__view__prefs.cc20
-rw-r--r--devel/electron17/files/patch-chrome_browser_ui_exclusive__access_exclusive__access__bubble.cc11
-rw-r--r--devel/electron17/files/patch-chrome_browser_ui_sad__tab.cc11
-rw-r--r--devel/electron17/files/patch-chrome_browser_ui_signin__view__controller.cc11
-rw-r--r--devel/electron17/files/patch-chrome_browser_ui_signin__view__controller__delegate.h11
-rw-r--r--devel/electron17/files/patch-chrome_browser_ui_signin_dice__web__signin__interceptor__delegate.cc11
-rw-r--r--devel/electron17/files/patch-chrome_browser_ui_startup_bad__flags__prompt.cc11
-rw-r--r--devel/electron17/files/patch-chrome_browser_ui_startup_startup__browser__creator.cc38
-rw-r--r--devel/electron17/files/patch-chrome_browser_ui_tab__helpers.cc36
-rw-r--r--devel/electron17/files/patch-chrome_browser_ui_task__manager_task__manager__columns.cc11
-rw-r--r--devel/electron17/files/patch-chrome_browser_ui_task__manager_task__manager__table__model.cc29
-rw-r--r--devel/electron17/files/patch-chrome_browser_ui_views_accelerator__table.cc29
-rw-r--r--devel/electron17/files/patch-chrome_browser_ui_views_apps_chrome__native__app__window__views__aura.cc20
-rw-r--r--devel/electron17/files/patch-chrome_browser_ui_views_chrome__browser__main__extra__parts__views.cc20
-rw-r--r--devel/electron17/files/patch-chrome_browser_ui_views_chrome__views__delegate.h11
-rw-r--r--devel/electron17/files/patch-chrome_browser_ui_views_download_download__item__view.cc20
-rw-r--r--devel/electron17/files/patch-chrome_browser_ui_views_eye__dropper_eye__dropper__view.cc11
-rw-r--r--devel/electron17/files/patch-chrome_browser_ui_views_eye__dropper_eye__dropper__view__aura.cc11
-rw-r--r--devel/electron17/files/patch-chrome_browser_ui_views_first__run__dialog.cc20
-rw-r--r--devel/electron17/files/patch-chrome_browser_ui_views_frame_browser__desktop__window__tree__host__linux.cc11
-rw-r--r--devel/electron17/files/patch-chrome_browser_ui_views_frame_browser__desktop__window__tree__host__linux.h11
-rw-r--r--devel/electron17/files/patch-chrome_browser_ui_views_frame_browser__frame.cc52
-rw-r--r--devel/electron17/files/patch-chrome_browser_ui_views_frame_browser__non__client__frame__view__factory__views.cc20
-rw-r--r--devel/electron17/files/patch-chrome_browser_ui_views_frame_browser__view.cc11
-rw-r--r--devel/electron17/files/patch-chrome_browser_ui_views_frame_opaque__browser__frame__view.cc29
-rw-r--r--devel/electron17/files/patch-chrome_browser_ui_views_frame_opaque__browser__frame__view.h11
-rw-r--r--devel/electron17/files/patch-chrome_browser_ui_views_frame_system__menu__model__builder.cc29
-rw-r--r--devel/electron17/files/patch-chrome_browser_ui_views_frame_system__menu__model__delegate.cc29
-rw-r--r--devel/electron17/files/patch-chrome_browser_ui_views_hung__renderer__view.cc11
-rw-r--r--devel/electron17/files/patch-chrome_browser_ui_views_profiles_profile__menu__view__base.cc11
-rw-r--r--devel/electron17/files/patch-chrome_browser_ui_views_profiles_signin__view__controller__delegate__views.cc20
-rw-r--r--devel/electron17/files/patch-chrome_browser_ui_views_profiles_signin__view__controller__delegate__views.h11
-rw-r--r--devel/electron17/files/patch-chrome_browser_ui_views_tabs_new__tab__button.cc11
-rw-r--r--devel/electron17/files/patch-chrome_browser_ui_views_tabs_tab.cc11
-rw-r--r--devel/electron17/files/patch-chrome_browser_ui_views_tabs_tab__drag__controller.cc29
-rw-r--r--devel/electron17/files/patch-chrome_browser_ui_views_tabs_tab__hover__card__controller.cc11
-rw-r--r--devel/electron17/files/patch-chrome_browser_ui_webui_about__ui.cc20
-rw-r--r--devel/electron17/files/patch-chrome_browser_ui_webui_chrome__web__ui__controller__factory.cc86
-rw-r--r--devel/electron17/files/patch-chrome_browser_ui_webui_connectors__internals_zero__trust__utils.cc29
-rw-r--r--devel/electron17/files/patch-chrome_browser_ui_webui_ntp_app__launcher__handler.cc29
-rw-r--r--devel/electron17/files/patch-chrome_browser_ui_webui_settings_appearance__handler.cc20
-rw-r--r--devel/electron17/files/patch-chrome_browser_ui_webui_settings_appearance__handler.h11
-rw-r--r--devel/electron17/files/patch-chrome_browser_ui_webui_settings_settings__localized__strings__provider.cc47
-rw-r--r--devel/electron17/files/patch-chrome_browser_ui_webui_settings_settings__ui.cc20
-rw-r--r--devel/electron17/files/patch-chrome_browser_ui_window__sizer_window__sizer.cc11
-rw-r--r--devel/electron17/files/patch-chrome_browser_web__applications_extension__status__utils.h11
-rw-r--r--devel/electron17/files/patch-chrome_browser_web__applications_extensions_extension__status__utils.cc11
-rw-r--r--devel/electron17/files/patch-chrome_browser_web__applications_externally__managed__app__install__task.cc11
-rw-r--r--devel/electron17/files/patch-chrome_browser_web__applications_web__app__file__handler__registration.h11
-rw-r--r--devel/electron17/files/patch-chrome_browser_web__applications_web__app__install__task.cc11
-rw-r--r--devel/electron17/files/patch-chrome_browser_web__applications_web__app__provider.cc11
-rw-r--r--devel/electron17/files/patch-chrome_browser_web__applications_web__app__shortcut.cc38
-rw-r--r--devel/electron17/files/patch-chrome_browser_web__applications_web__app__shortcut.h29
-rw-r--r--devel/electron17/files/patch-chrome_browser_web__applications_web__app__shortcut__manager.cc20
-rw-r--r--devel/electron17/files/patch-chrome_common_channel__info.h11
-rw-r--r--devel/electron17/files/patch-chrome_common_channel__info__posix.cc11
-rw-r--r--devel/electron17/files/patch-chrome_common_chrome__features.cc83
-rw-r--r--devel/electron17/files/patch-chrome_common_chrome__features.h56
-rw-r--r--devel/electron17/files/patch-chrome_common_chrome__paths.cc80
-rw-r--r--devel/electron17/files/patch-chrome_common_chrome__paths.h29
-rw-r--r--devel/electron17/files/patch-chrome_common_chrome__paths__internal.h11
-rw-r--r--devel/electron17/files/patch-chrome_common_chrome__switches.cc11
-rw-r--r--devel/electron17/files/patch-chrome_common_chrome__switches.h11
-rw-r--r--devel/electron17/files/patch-chrome_common_extensions_command.cc11
-rw-r--r--devel/electron17/files/patch-chrome_common_media_cdm__host__file__path.cc11
-rw-r--r--devel/electron17/files/patch-chrome_common_pref__names.cc56
-rw-r--r--devel/electron17/files/patch-chrome_common_pref__names.h56
-rw-r--r--devel/electron17/files/patch-chrome_common_webui__url__constants.cc81
-rw-r--r--devel/electron17/files/patch-chrome_common_webui__url__constants.h50
-rw-r--r--devel/electron17/files/patch-chrome_renderer_chrome__render__frame__observer.cc11
-rw-r--r--devel/electron17/files/patch-chrome_renderer_pepper_pepper__flash__font__file__host.cc29
-rw-r--r--devel/electron17/files/patch-chrome_renderer_pepper_pepper__flash__font__file__host.h20
-rw-r--r--devel/electron17/files/patch-chrome_service_cloud__print_print__system.cc11
-rw-r--r--devel/electron17/files/patch-chrome_services_file__util_public_mojom_safe__document__analyzer__mojom__traits.h11
-rw-r--r--devel/electron17/files/patch-chrome_services_printing_print__backend__service__impl.cc11
-rw-r--r--devel/electron17/files/patch-chrome_services_speech_audio__source__fetcher__impl.cc11
-rw-r--r--devel/electron17/files/patch-chrome_test_BUILD.gn11
-rw-r--r--devel/electron17/files/patch-chrome_test_chromedriver_chrome__launcher.cc10
-rw-r--r--devel/electron17/files/patch-chrome_test_chromedriver_chrome_chrome__finder.cc20
-rw-r--r--devel/electron17/files/patch-chrome_updater_app_app__install.cc11
-rw-r--r--devel/electron17/files/patch-chrome_updater_app_app__uninstall.cc11
-rw-r--r--devel/electron17/files/patch-chrome_updater_configurator.cc11
-rw-r--r--devel/electron17/files/patch-chrome_updater_device__management_cloud__policy__util.cc47
-rw-r--r--devel/electron17/files/patch-chrome_updater_device__management_dm__client.cc11
-rw-r--r--devel/electron17/files/patch-chrome_updater_device__management_dm__storage.cc11
-rw-r--r--devel/electron17/files/patch-chrome_updater_installer.cc11
-rw-r--r--devel/electron17/files/patch-chrome_updater_lib__util.cc11
-rw-r--r--devel/electron17/files/patch-chrome_updater_updater.cc11
-rw-r--r--devel/electron17/files/patch-chrome_updater_util.cc11
-rw-r--r--devel/electron17/files/patch-chrome_utility_services.cc29
-rw-r--r--devel/electron17/files/patch-chromecast_browser_cast__browser__main__parts.cc65
-rw-r--r--devel/electron17/files/patch-chromecast_browser_cast__content__browser__client.cc29
-rw-r--r--devel/electron17/files/patch-chromecast_browser_cast__content__browser__client__receiver__bindings.cc20
-rw-r--r--devel/electron17/files/patch-chromecast_media_base_default__monotonic__clock.cc20
-rw-r--r--devel/electron17/files/patch-chromecast_renderer_cast__content__renderer__client.cc11
-rw-r--r--devel/electron17/files/patch-components_autofill_core_browser_autofill__external__delegate.cc11
-rw-r--r--devel/electron17/files/patch-components_autofill_core_browser_personal__data__manager.cc11
-rw-r--r--devel/electron17/files/patch-components_autofill_core_common_autofill__payments__features.cc11
-rw-r--r--devel/electron17/files/patch-components_autofill_core_common_autofill__util.cc11
-rw-r--r--devel/electron17/files/patch-components_cast__channel_cast__message__util.cc11
-rw-r--r--devel/electron17/files/patch-components_content__settings_core_browser_website__settings__registry.cc11
-rw-r--r--devel/electron17/files/patch-components_cookie__config_cookie__store__util.cc11
-rw-r--r--devel/electron17/files/patch-components_crash_content_browser_BUILD.gn29
-rw-r--r--devel/electron17/files/patch-components_crash_core_app_BUILD.gn52
-rw-r--r--devel/electron17/files/patch-components_crash_core_app_chrome__crashpad__handler.cc12
-rw-r--r--devel/electron17/files/patch-components_crash_core_browser_crash__upload__list__crashpad.cc16
-rw-r--r--devel/electron17/files/patch-components_crash_core_common_BUILD.gn20
-rw-r--r--devel/electron17/files/patch-components_discardable__memory_service_discardable__shared__memory__manager.cc11
-rw-r--r--devel/electron17/files/patch-components_feature__engagement_public_event__constants.cc11
-rw-r--r--devel/electron17/files/patch-components_feature__engagement_public_event__constants.h11
-rw-r--r--devel/electron17/files/patch-components_feature__engagement_public_feature__configurations.cc11
-rw-r--r--devel/electron17/files/patch-components_feature__engagement_public_feature__constants.cc20
-rw-r--r--devel/electron17/files/patch-components_feature__engagement_public_feature__constants.h20
-rw-r--r--devel/electron17/files/patch-components_feature__engagement_public_feature__list.cc11
-rw-r--r--devel/electron17/files/patch-components_feature__engagement_public_feature__list.h20
-rw-r--r--devel/electron17/files/patch-components_feed_core_proto_v2_wire_version.proto13
-rw-r--r--devel/electron17/files/patch-components_feed_core_v2_proto__util.cc24
-rw-r--r--devel/electron17/files/patch-components_flags__ui_flags__state.cc11
-rw-r--r--devel/electron17/files/patch-components_gwp__asan_BUILD.gn11
-rw-r--r--devel/electron17/files/patch-components_gwp__asan_crash__handler_crash__analyzer.cc20
-rw-r--r--devel/electron17/files/patch-components_invalidation_impl_invalidation__switches.cc11
-rw-r--r--devel/electron17/files/patch-components_metrics_drive__metrics__provider__linux.cc16
-rw-r--r--devel/electron17/files/patch-components_neterror_resources_neterror.js11
-rw-r--r--devel/electron17/files/patch-components_network__session__configurator_browser_network__session__configurator.cc11
-rw-r--r--devel/electron17/files/patch-components_new__or__sad__tab__strings.grdp47
-rw-r--r--devel/electron17/files/patch-components_os__crypt_keyring__util__linux.cc17
-rw-r--r--devel/electron17/files/patch-components_os__crypt_libsecret__util__linux.cc18
-rw-r--r--devel/electron17/files/patch-components_os__crypt_os__crypt.h38
-rw-r--r--devel/electron17/files/patch-components_paint__preview_browser_paint__preview__client.cc13
-rw-r--r--devel/electron17/files/patch-components_paint__preview_common_proto_paint__preview.proto13
-rw-r--r--devel/electron17/files/patch-components_performance__manager_features.cc11
-rw-r--r--devel/electron17/files/patch-components_permissions_prediction__service_prediction__service__common.cc11
-rw-r--r--devel/electron17/files/patch-components_policy_core_common_cloud_cloud__policy__client.cc11
-rw-r--r--devel/electron17/files/patch-components_policy_core_common_cloud_cloud__policy__util.cc63
-rw-r--r--devel/electron17/files/patch-components_policy_resources_policy__templates.json191
-rw-r--r--devel/electron17/files/patch-components_policy_tools_generate__policy__source.py14
-rw-r--r--devel/electron17/files/patch-components_safe__browsing_content_resources_gen__file__type__proto.py19
-rw-r--r--devel/electron17/files/patch-components_safe__browsing_core_browser_db_v4__protocol__manager__util.cc11
-rw-r--r--devel/electron17/files/patch-components_safe__browsing_core_browser_realtime_url__lookup__service__base.cc11
-rw-r--r--devel/electron17/files/patch-components_security__interstitials_content_utils.cc11
-rw-r--r--devel/electron17/files/patch-components_services_paint__preview__compositor_paint__preview__compositor__collection__impl.cc29
-rw-r--r--devel/electron17/files/patch-components_services_paint__preview__compositor_paint__preview__compositor__collection__impl.h20
-rw-r--r--devel/electron17/files/patch-components_startup__metric__utils_browser_startup__metric__utils.cc20
-rw-r--r--devel/electron17/files/patch-components_storage__monitor_removable__device__constants.cc11
-rw-r--r--devel/electron17/files/patch-components_storage__monitor_removable__device__constants.h11
-rw-r--r--devel/electron17/files/patch-components_sync__device__info_local__device__info__util.cc11
-rw-r--r--devel/electron17/files/patch-components_sync__device__info_local__device__info__util__linux.cc14
-rw-r--r--devel/electron17/files/patch-components_translate_core_browser_translate__prefs.cc11
-rw-r--r--devel/electron17/files/patch-components_translate_core_common_translate__util.cc11
-rw-r--r--devel/electron17/files/patch-components_update__client_update__query__params.cc11
-rw-r--r--devel/electron17/files/patch-components_url__formatter_spoof__checks_idn__spoof__checker.cc11
-rw-r--r--devel/electron17/files/patch-components_viz_common_features.cc11
-rw-r--r--devel/electron17/files/patch-components_viz_common_gpu_dawn__context__provider.cc11
-rw-r--r--devel/electron17/files/patch-components_viz_host_host__display__client.cc11
-rw-r--r--devel/electron17/files/patch-components_viz_host_host__display__client.h11
-rw-r--r--devel/electron17/files/patch-components_viz_host_renderer__settings__creation.cc11
-rw-r--r--devel/electron17/files/patch-components_viz_service_display__embedder_skia__output__surface__impl.cc11
-rw-r--r--devel/electron17/files/patch-components_viz_service_display__embedder_software__output__surface.cc20
-rw-r--r--devel/electron17/files/patch-components_viz_service_display__embedder_software__output__surface.h20
-rw-r--r--devel/electron17/files/patch-components_viz_service_frame__sinks_root__compositor__frame__sink__impl.cc20
-rw-r--r--devel/electron17/files/patch-components_viz_service_frame__sinks_root__compositor__frame__sink__impl.h11
-rw-r--r--devel/electron17/files/patch-components_viz_test_fake__display__client.cc11
-rw-r--r--devel/electron17/files/patch-components_viz_test_mock__display__client.h11
-rw-r--r--devel/electron17/files/patch-content_app_content__main.cc11
-rw-r--r--devel/electron17/files/patch-content_app_content__main__runner__impl.cc128
-rw-r--r--devel/electron17/files/patch-content_browser_BUILD.gn16
-rw-r--r--devel/electron17/files/patch-content_browser_browser__child__process__host__impl.cc10
-rw-r--r--devel/electron17/files/patch-content_browser_browser__main__loop.cc46
-rw-r--r--devel/electron17/files/patch-content_browser_child__process__launcher__helper__linux.cc92
-rw-r--r--devel/electron17/files/patch-content_browser_compositor_viz__process__transport__factory.cc11
-rw-r--r--devel/electron17/files/patch-content_browser_compute__pressure_cpu__probe.cc10
-rw-r--r--devel/electron17/files/patch-content_browser_devtools_protocol_system__info__handler.cc11
-rw-r--r--devel/electron17/files/patch-content_browser_download_download__manager__impl.cc29
-rw-r--r--devel/electron17/files/patch-content_browser_font__access_font__enumeration__cache.h11
-rw-r--r--devel/electron17/files/patch-content_browser_gpu_compositor__util.cc20
-rw-r--r--devel/electron17/files/patch-content_browser_gpu_gpu__data__manager__impl__private.cc11
-rw-r--r--devel/electron17/files/patch-content_browser_gpu_gpu__process__host.cc28
-rw-r--r--devel/electron17/files/patch-content_browser_media_media__keys__listener__manager__impl.cc11
-rw-r--r--devel/electron17/files/patch-content_browser_memory_swap__metrics__driver__impl__linux.cc16
-rw-r--r--devel/electron17/files/patch-content_browser_ppapi__plugin__process__host__receiver__bindings.cc20
-rw-r--r--devel/electron17/files/patch-content_browser_renderer__host_delegated__frame__host.cc11
-rw-r--r--devel/electron17/files/patch-content_browser_renderer__host_input_input__device__change__observer.cc29
-rw-r--r--devel/electron17/files/patch-content_browser_renderer__host_pepper_pepper__file__io__host.cc20
-rw-r--r--devel/electron17/files/patch-content_browser_renderer__host_render__message__filter.cc29
-rw-r--r--devel/electron17/files/patch-content_browser_renderer__host_render__message__filter.h19
-rw-r--r--devel/electron17/files/patch-content_browser_renderer__host_render__process__host__impl.cc37
-rw-r--r--devel/electron17/files/patch-content_browser_renderer__host_render__process__host__impl.h11
-rw-r--r--devel/electron17/files/patch-content_browser_renderer__host_render__view__host__impl.cc11
-rw-r--r--devel/electron17/files/patch-content_browser_renderer__host_render__widget__host__view__aura.cc47
-rw-r--r--devel/electron17/files/patch-content_browser_renderer__host_render__widget__host__view__aura.h11
-rw-r--r--devel/electron17/files/patch-content_browser_renderer__host_render__widget__host__view__event__handler.cc11
-rw-r--r--devel/electron17/files/patch-content_browser_sandbox__host__linux.cc18
-rw-r--r--devel/electron17/files/patch-content_browser_scheduler_responsiveness_jank__monitor__impl.cc11
-rw-r--r--devel/electron17/files/patch-content_browser_scheduler_responsiveness_native__event__observer.cc20
-rw-r--r--devel/electron17/files/patch-content_browser_scheduler_responsiveness_native__event__observer.h47
-rw-r--r--devel/electron17/files/patch-content_browser_utility__process__host__receiver__bindings.cc20
-rw-r--r--devel/electron17/files/patch-content_browser_utility__sandbox__delegate.cc11
-rw-r--r--devel/electron17/files/patch-content_browser_v8__snapshot__files.cc11
-rw-r--r--devel/electron17/files/patch-content_browser_web__contents_web__contents__view__aura.cc29
-rw-r--r--devel/electron17/files/patch-content_browser_webui_web__ui__main__frame__observer.cc38
-rw-r--r--devel/electron17/files/patch-content_browser_webui_web__ui__main__frame__observer.h20
-rw-r--r--devel/electron17/files/patch-content_browser_zygote__host_zygote__host__impl__linux.cc70
-rw-r--r--devel/electron17/files/patch-content_browser_zygote__host_zygote__host__impl__linux.h25
-rw-r--r--devel/electron17/files/patch-content_child_child__process.cc11
-rw-r--r--devel/electron17/files/patch-content_common_BUILD.gn12
-rw-r--r--devel/electron17/files/patch-content_common_mojo__core__library__support.cc11
-rw-r--r--devel/electron17/files/patch-content_common_sandbox__init__linux.cc19
-rw-r--r--devel/electron17/files/patch-content_common_user__agent.cc19
-rw-r--r--devel/electron17/files/patch-content_gpu_gpu__main.cc73
-rw-r--r--devel/electron17/files/patch-content_gpu_gpu__sandbox__hook__linux.cc70
-rw-r--r--devel/electron17/files/patch-content_ppapi__plugin_ppapi__blink__platform__impl.cc29
-rw-r--r--devel/electron17/files/patch-content_ppapi__plugin_ppapi__blink__platform__impl.h25
-rw-r--r--devel/electron17/files/patch-content_ppapi__plugin_ppapi__plugin__main.cc24
-rw-r--r--devel/electron17/files/patch-content_public_browser_font__access__context.h11
-rw-r--r--devel/electron17/files/patch-content_public_browser_zygote__host_zygote__host__linux.h16
-rw-r--r--devel/electron17/files/patch-content_public_common_common__param__traits__macros.h11
-rw-r--r--devel/electron17/files/patch-content_public_common_content__features.cc68
-rw-r--r--devel/electron17/files/patch-content_public_common_content__features.h20
-rw-r--r--devel/electron17/files/patch-content_public_common_content__switches.cc20
-rw-r--r--devel/electron17/files/patch-content_public_common_content__switches.h19
-rw-r--r--devel/electron17/files/patch-content_public_common_use__zoom__for__dsf__policy.cc11
-rw-r--r--devel/electron17/files/patch-content_public_common_zygote_features.gni8
-rw-r--r--devel/electron17/files/patch-content_renderer_render__process__impl.cc29
-rw-r--r--devel/electron17/files/patch-content_renderer_render__thread__impl.cc47
-rw-r--r--devel/electron17/files/patch-content_renderer_renderer__blink__platform__impl.cc48
-rw-r--r--devel/electron17/files/patch-content_renderer_renderer__blink__platform__impl.h29
-rw-r--r--devel/electron17/files/patch-content_renderer_renderer__main__platform__delegate__linux.cc18
-rw-r--r--devel/electron17/files/patch-content_shell_BUILD.gn11
-rw-r--r--devel/electron17/files/patch-content_shell_app_shell__main__delegate.cc11
-rw-r--r--devel/electron17/files/patch-content_shell_browser_shell__browser__main__parts.cc20
-rw-r--r--devel/electron17/files/patch-content_shell_browser_shell__paths.cc20
-rw-r--r--devel/electron17/files/patch-content_shell_utility_shell__content__utility__client.cc20
-rw-r--r--devel/electron17/files/patch-content_test_BUILD.gn20
-rw-r--r--devel/electron17/files/patch-content_utility_services.cc20
-rw-r--r--devel/electron17/files/patch-content_utility_speech_speech__recognition__sandbox__hook__linux.cc37
-rw-r--r--devel/electron17/files/patch-content_utility_speech_speech__recognition__sandbox__hook__linux.h14
-rw-r--r--devel/electron17/files/patch-content_utility_utility__blink__platform__with__sandbox__support__impl.cc29
-rw-r--r--devel/electron17/files/patch-content_utility_utility__blink__platform__with__sandbox__support__impl.h24
-rw-r--r--devel/electron17/files/patch-content_utility_utility__main.cc55
-rw-r--r--devel/electron17/files/patch-content_zygote_BUILD.gn11
-rw-r--r--devel/electron17/files/patch-content_zygote_zygote__linux.cc15
-rw-r--r--devel/electron17/files/patch-content_zygote_zygote__main__linux.cc64
-rw-r--r--devel/electron17/files/patch-device_bluetooth_cast__bluetooth.gni9
-rw-r--r--devel/electron17/files/patch-device_fido_features.cc20
-rw-r--r--devel/electron17/files/patch-device_gamepad_gamepad__provider.cc11
-rw-r--r--devel/electron17/files/patch-device_gamepad_hid__writer__linux.cc11
-rw-r--r--devel/electron17/files/patch-electron_BUILD.gn71
-rw-r--r--devel/electron17/files/patch-electron_default__app_default__app.ts11
-rw-r--r--devel/electron17/files/patch-electron_filenames.gni13
-rw-r--r--devel/electron17/files/patch-electron_lib_browser_api_app.ts11
-rw-r--r--devel/electron17/files/patch-electron_lib_browser_api_dialog.ts11
-rw-r--r--devel/electron17/files/patch-electron_lib_browser_api_menu-item-roles.ts11
-rw-r--r--devel/electron17/files/patch-electron_lib_browser_api_power-monitor.ts11
-rw-r--r--devel/electron17/files/patch-electron_lib_browser_init.ts11
-rw-r--r--devel/electron17/files/patch-electron_lib_browser_rpc-server.ts11
-rw-r--r--devel/electron17/files/patch-electron_lib_common_api_clipboard.ts11
-rw-r--r--devel/electron17/files/patch-electron_script_lib_config.py12
-rw-r--r--devel/electron17/files/patch-electron_script_lib_utils.js11
-rw-r--r--devel/electron17/files/patch-electron_script_spec-runner.js11
-rw-r--r--devel/electron17/files/patch-electron_shell_app_electron__main__delegate.cc58
-rw-r--r--devel/electron17/files/patch-electron_shell_app_node__main.cc56
-rw-r--r--devel/electron17/files/patch-electron_shell_browser_api_electron__api__app.cc47
-rw-r--r--devel/electron17/files/patch-electron_shell_browser_api_electron__api__base__window.cc11
-rw-r--r--devel/electron17/files/patch-electron_shell_browser_api_electron__api__crash__reporter.cc72
-rw-r--r--devel/electron17/files/patch-electron_shell_browser_api_electron__api__power__monitor.cc23
-rw-r--r--devel/electron17/files/patch-electron_shell_browser_api_electron__api__power__monitor.h11
-rw-r--r--devel/electron17/files/patch-electron_shell_browser_api_electron__api__web__contents.cc61
-rw-r--r--devel/electron17/files/patch-electron_shell_browser_api_electron__api__web__contents.h11
-rw-r--r--devel/electron17/files/patch-electron_shell_browser_api_process__metric.h20
-rw-r--r--devel/electron17/files/patch-electron_shell_browser_browser.cc11
-rw-r--r--devel/electron17/files/patch-electron_shell_browser_browser.h33
-rw-r--r--devel/electron17/files/patch-electron_shell_browser_browser__linux.cc11
-rw-r--r--devel/electron17/files/patch-electron_shell_browser_electron__browser__client.cc11
-rw-r--r--devel/electron17/files/patch-electron_shell_browser_electron__browser__main__parts.cc83
-rw-r--r--devel/electron17/files/patch-electron_shell_browser_electron__browser__main__parts.h20
-rw-r--r--devel/electron17/files/patch-electron_shell_browser_electron__browser__main__parts__posix.cc19
-rw-r--r--devel/electron17/files/patch-electron_shell_browser_native__window.cc11
-rw-r--r--devel/electron17/files/patch-electron_shell_browser_native__window__views.cc128
-rw-r--r--devel/electron17/files/patch-electron_shell_browser_native__window__views.h11
-rw-r--r--devel/electron17/files/patch-electron_shell_browser_net_system__network__context__manager.cc38
-rw-r--r--devel/electron17/files/patch-electron_shell_browser_osr_osr__host__display__client.cc11
-rw-r--r--devel/electron17/files/patch-electron_shell_browser_osr_osr__host__display__client.h11
-rw-r--r--devel/electron17/files/patch-electron_shell_browser_relauncher__linux.cc32
-rw-r--r--devel/electron17/files/patch-electron_shell_browser_ui_inspectable__web__contents__view__delegate.h11
-rw-r--r--devel/electron17/files/patch-electron_shell_browser_ui_views_electron__views__delegate.cc38
-rw-r--r--devel/electron17/files/patch-electron_shell_browser_ui_views_electron__views__delegate.h11
-rw-r--r--devel/electron17/files/patch-electron_shell_browser_ui_views_inspectable__web__contents__view__views.cc11
-rw-r--r--devel/electron17/files/patch-electron_shell_browser_ui_views_menu__bar.cc29
-rw-r--r--devel/electron17/files/patch-electron_shell_browser_ui_views_menu__bar.h11
-rw-r--r--devel/electron17/files/patch-electron_shell_browser_ui_views_submenu__button.cc11
-rw-r--r--devel/electron17/files/patch-electron_shell_common_api_electron__api__clipboard.cc20
-rw-r--r--devel/electron17/files/patch-electron_shell_common_api_electron__api__native__image.cc11
-rw-r--r--devel/electron17/files/patch-electron_shell_common_api_electron__api__native__image.h11
-rw-r--r--devel/electron17/files/patch-electron_shell_common_api_electron__bindings.cc11
-rw-r--r--devel/electron17/files/patch-electron_shell_common_electron__command__line.cc11
-rw-r--r--devel/electron17/files/patch-electron_shell_common_electron__command__line.h11
-rw-r--r--devel/electron17/files/patch-electron_shell_common_electron__paths.h11
-rw-r--r--devel/electron17/files/patch-electron_shell_common_node__bindings.cc29
-rw-r--r--devel/electron17/files/patch-electron_shell_common_node__bindings__linux.cc69
-rw-r--r--devel/electron17/files/patch-electron_shell_common_platform__util.h11
-rw-r--r--devel/electron17/files/patch-electron_shell_renderer_api_electron__api__crash__reporter__renderer.cc36
-rw-r--r--devel/electron17/files/patch-electron_spec-main_api-app-spec.ts119
-rw-r--r--devel/electron17/files/patch-electron_spec-main_api-browser-window-spec.ts128
-rw-r--r--devel/electron17/files/patch-electron_spec-main_api-crash-reporter-spec.ts56
-rw-r--r--devel/electron17/files/patch-electron_spec-main_api-desktop-capturer-spec.ts74
-rw-r--r--devel/electron17/files/patch-electron_spec-main_api-net-log-spec.ts29
-rw-r--r--devel/electron17/files/patch-electron_spec-main_api-notification-dbus-spec.ts11
-rw-r--r--devel/electron17/files/patch-electron_spec-main_api-power-monitor-spec.ts11
-rw-r--r--devel/electron17/files/patch-electron_spec-main_api-safe-storage-spec.ts11
-rw-r--r--devel/electron17/files/patch-electron_spec-main_api-screen-spec.ts38
-rw-r--r--devel/electron17/files/patch-electron_spec-main_api-shell-spec.ts23
-rw-r--r--devel/electron17/files/patch-electron_spec-main_api-subframe-spec.ts11
-rw-r--r--devel/electron17/files/patch-electron_spec-main_api-tray-spec.ts11
-rw-r--r--devel/electron17/files/patch-electron_spec-main_api-web-contents-spec.ts11
-rw-r--r--devel/electron17/files/patch-electron_spec-main_chromium-spec.ts44
-rw-r--r--devel/electron17/files/patch-electron_spec-main_fixtures_apps_crash_node-crash.js8
-rw-r--r--devel/electron17/files/patch-electron_spec-main_fixtures_native-addon_uv-dlopen_index.js11
-rw-r--r--devel/electron17/files/patch-electron_spec-main_version-bump-spec.ts11
-rw-r--r--devel/electron17/files/patch-electron_spec-main_visibility-state-spec.ts11
-rw-r--r--devel/electron17/files/patch-electron_spec-main_webview-spec.ts11
-rw-r--r--devel/electron17/files/patch-electron_spec_api-clipboard-spec.js29
-rw-r--r--devel/electron17/files/patch-electron_spec_api-native-image-spec.js11
-rw-r--r--devel/electron17/files/patch-electron_spec_api-process-spec.js11
-rw-r--r--devel/electron17/files/patch-electron_spec_chromium-spec.js11
-rw-r--r--devel/electron17/files/patch-electron_spec_node-spec.js11
-rw-r--r--devel/electron17/files/patch-extensions_browser_api_messaging_message__service.cc20
-rw-r--r--devel/electron17/files/patch-extensions_browser_api_networking__private_networking__private__delegate__factory.cc20
-rw-r--r--devel/electron17/files/patch-extensions_browser_browser__context__keyed__service__factories.cc11
-rw-r--r--devel/electron17/files/patch-extensions_browser_extension__prefs.cc11
-rw-r--r--devel/electron17/files/patch-extensions_browser_pref__names.cc11
-rw-r--r--devel/electron17/files/patch-extensions_browser_pref__names.h11
-rw-r--r--devel/electron17/files/patch-extensions_common_api___permission__features.json29
-rw-r--r--devel/electron17/files/patch-extensions_common_features_feature.cc11
-rw-r--r--devel/electron17/files/patch-extensions_renderer_bindings_api__binding__util.cc11
-rw-r--r--devel/electron17/files/patch-extensions_shell_app_shell__main__delegate.cc20
-rw-r--r--devel/electron17/files/patch-extensions_shell_browser_api_runtime_shell__runtime__api__delegate.cc11
-rw-r--r--devel/electron17/files/patch-extensions_shell_browser_shell__browser__main__parts.cc11
-rw-r--r--devel/electron17/files/patch-extensions_shell_browser_shell__extensions__api__client.cc11
-rw-r--r--devel/electron17/files/patch-extensions_shell_browser_shell__extensions__api__client.h20
-rw-r--r--devel/electron17/files/patch-extensions_shell_common_switches.cc11
-rw-r--r--devel/electron17/files/patch-extensions_shell_common_switches.h11
-rw-r--r--devel/electron17/files/patch-google__apis_gcm_engine_heartbeat__manager.cc29
-rw-r--r--devel/electron17/files/patch-gpu_command__buffer_common_gpu__memory__buffer__support.cc20
-rw-r--r--devel/electron17/files/patch-gpu_command__buffer_service_external__semaphore.cc11
-rw-r--r--devel/electron17/files/patch-gpu_command__buffer_service_external__vk__image__backing.cc29
-rw-r--r--devel/electron17/files/patch-gpu_command__buffer_service_shared__image__factory.cc34
-rw-r--r--devel/electron17/files/patch-gpu_command__buffer_service_webgpu__decoder__impl.cc11
-rw-r--r--devel/electron17/files/patch-gpu_config_gpu__control__list.cc20
-rw-r--r--devel/electron17/files/patch-gpu_config_gpu__test__config.cc11
-rw-r--r--devel/electron17/files/patch-gpu_config_gpu__util.cc11
-rw-r--r--devel/electron17/files/patch-gpu_ipc_common_gpu__memory__buffer__support.cc20
-rw-r--r--devel/electron17/files/patch-gpu_ipc_common_gpu__memory__buffer__support.h11
-rw-r--r--devel/electron17/files/patch-gpu_ipc_service_gpu__init.cc83
-rw-r--r--devel/electron17/files/patch-gpu_ipc_service_gpu__memory__buffer__factory.cc20
-rw-r--r--devel/electron17/files/patch-gpu_ipc_service_x__util.h16
-rw-r--r--devel/electron17/files/patch-gpu_vulkan_generate__bindings.py29
-rw-r--r--devel/electron17/files/patch-gpu_vulkan_vulkan__device__queue.cc20
-rw-r--r--devel/electron17/files/patch-gpu_vulkan_vulkan__device__queue.h11
-rw-r--r--devel/electron17/files/patch-gpu_vulkan_vulkan__function__pointers.cc29
-rw-r--r--devel/electron17/files/patch-gpu_vulkan_vulkan__function__pointers.h63
-rw-r--r--devel/electron17/files/patch-gpu_vulkan_vulkan__image.cc11
-rw-r--r--devel/electron17/files/patch-gpu_vulkan_vulkan__image.h20
-rw-r--r--devel/electron17/files/patch-gpu_vulkan_x_vulkan__implementation__x11.cc14
-rw-r--r--devel/electron17/files/patch-headless_lib_browser_headless__browser__main__parts.h11
-rw-r--r--devel/electron17/files/patch-headless_lib_browser_headless__browser__main__parts__linux.cc11
-rw-r--r--devel/electron17/files/patch-headless_lib_browser_headless__content__browser__client.cc11
-rw-r--r--devel/electron17/files/patch-headless_lib_browser_headless__content__browser__client.h11
-rw-r--r--devel/electron17/files/patch-headless_lib_browser_headless__request__context__manager.cc20
-rw-r--r--devel/electron17/files/patch-headless_lib_browser_headless__web__contents__impl.cc11
-rw-r--r--devel/electron17/files/patch-headless_lib_headless__macros.h11
-rw-r--r--devel/electron17/files/patch-headless_public_headless__browser.cc11
-rw-r--r--devel/electron17/files/patch-ipc_ipc__channel.h11
-rw-r--r--devel/electron17/files/patch-ipc_ipc__channel__common.cc11
-rw-r--r--devel/electron17/files/patch-ipc_ipc__channel__mojo.cc11
-rw-r--r--devel/electron17/files/patch-ipc_ipc__message__utils.cc11
-rw-r--r--devel/electron17/files/patch-ipc_ipc__message__utils.h11
-rw-r--r--devel/electron17/files/patch-media_BUILD.gn12
-rw-r--r--devel/electron17/files/patch-media_audio_BUILD.gn24
-rw-r--r--devel/electron17/files/patch-media_audio_audio__features.cc11
-rw-r--r--devel/electron17/files/patch-media_audio_audio__input__device.cc11
-rw-r--r--devel/electron17/files/patch-media_audio_sndio_audio__manager__sndio.cc180
-rw-r--r--devel/electron17/files/patch-media_audio_sndio_audio__manager__sndio.h69
-rw-r--r--devel/electron17/files/patch-media_audio_sndio_sndio__input.cc203
-rw-r--r--devel/electron17/files/patch-media_audio_sndio_sndio__input.h94
-rw-r--r--devel/electron17/files/patch-media_audio_sndio_sndio__output.cc186
-rw-r--r--devel/electron17/files/patch-media_audio_sndio_sndio__output.h91
-rw-r--r--devel/electron17/files/patch-media_base_audio__latency.cc11
-rw-r--r--devel/electron17/files/patch-media_base_media__switches.cc47
-rw-r--r--devel/electron17/files/patch-media_base_media__switches.h20
-rw-r--r--devel/electron17/files/patch-media_base_scopedfd__helper.h11
-rw-r--r--devel/electron17/files/patch-media_base_vector__math.cc11
-rw-r--r--devel/electron17/files/patch-media_base_video__frame.cc74
-rw-r--r--devel/electron17/files/patch-media_base_video__frame.h47
-rw-r--r--devel/electron17/files/patch-media_capture_video_create__video__capture__device__factory.cc20
-rw-r--r--devel/electron17/files/patch-media_capture_video_fake__video__capture__device__factory.cc11
-rw-r--r--devel/electron17/files/patch-media_capture_video_file__video__capture__device__factory.cc11
-rw-r--r--devel/electron17/files/patch-media_capture_video_linux_fake__v4l2__impl.h11
-rw-r--r--devel/electron17/files/patch-media_capture_video_linux_v4l2__capture__delegate.cc44
-rw-r--r--devel/electron17/files/patch-media_capture_video_linux_v4l2__capture__delegate.h15
-rw-r--r--devel/electron17/files/patch-media_capture_video_linux_v4l2__capture__device.h11
-rw-r--r--devel/electron17/files/patch-media_capture_video_linux_v4l2__capture__device__impl.cc11
-rw-r--r--devel/electron17/files/patch-media_capture_video_linux_v4l2__capture__device__impl.h11
-rw-r--r--devel/electron17/files/patch-media_capture_video_linux_video__capture__device__factory__linux.cc45
-rw-r--r--devel/electron17/files/patch-media_capture_video_linux_video__capture__device__factory__linux.h11
-rw-r--r--devel/electron17/files/patch-media_capture_video_video__capture__buffer__pool__impl.cc11
-rw-r--r--devel/electron17/files/patch-media_capture_video_video__capture__device__client.cc11
-rw-r--r--devel/electron17/files/patch-media_gpu_buffer__validation.cc29
-rw-r--r--devel/electron17/files/patch-media_gpu_chromeos_video__decoder__pipeline.cc20
-rw-r--r--devel/electron17/files/patch-media_gpu_gpu__video__encode__accelerator__factory.cc11
-rw-r--r--devel/electron17/files/patch-media_gpu_vaapi_vaapi__video__decoder.cc11
-rw-r--r--devel/electron17/files/patch-media_gpu_vaapi_vaapi__wrapper.cc11
-rw-r--r--devel/electron17/files/patch-media_media__options.gni27
-rw-r--r--devel/electron17/files/patch-media_mojo_mojom_video__frame__mojom__traits.cc11
-rw-r--r--devel/electron17/files/patch-media_video_fake__gpu__memory__buffer.cc38
-rw-r--r--devel/electron17/files/patch-media_video_gpu__memory__buffer__video__frame__pool.cc11
-rw-r--r--devel/electron17/files/patch-media_video_video__encode__accelerator__adapter.cc20
-rw-r--r--devel/electron17/files/patch-media_webrtc_audio__processor.cc11
-rw-r--r--devel/electron17/files/patch-media_webrtc_webrtc__features.cc11
-rw-r--r--devel/electron17/files/patch-mojo_core_BUILD.gn11
-rw-r--r--devel/electron17/files/patch-mojo_core_channel.cc14
-rw-r--r--devel/electron17/files/patch-mojo_core_embedder_features.h11
-rw-r--r--devel/electron17/files/patch-mojo_public_c_system_thunks.cc38
-rw-r--r--devel/electron17/files/patch-mojo_public_js_mojo__bindings__resources.grd11
-rw-r--r--devel/electron17/files/patch-mojo_public_tools_bindings_mojom.gni19
-rw-r--r--devel/electron17/files/patch-net_BUILD.gn54
-rw-r--r--devel/electron17/files/patch-net_base_address__tracker__linux.cc410
-rw-r--r--devel/electron17/files/patch-net_base_address__tracker__linux.h12
-rw-r--r--devel/electron17/files/patch-net_base_network__change__notifier.cc26
-rw-r--r--devel/electron17/files/patch-net_base_network__change__notifier__posix.cc11
-rw-r--r--devel/electron17/files/patch-net_base_network__interfaces__posix.h11
-rw-r--r--devel/electron17/files/patch-net_cert_cert__verifier.cc11
-rw-r--r--devel/electron17/files/patch-net_cert_cert__verify__proc.cc11
-rw-r--r--devel/electron17/files/patch-net_cert_cert__verify__proc.h11
-rw-r--r--devel/electron17/files/patch-net_disk__cache_blockfile_disk__format.h12
-rw-r--r--devel/electron17/files/patch-net_disk__cache_simple_simple__file__tracker.cc20
-rw-r--r--devel/electron17/files/patch-net_dns_BUILD.gn11
-rw-r--r--devel/electron17/files/patch-net_dns_address__sorter__posix.cc10
-rw-r--r--devel/electron17/files/patch-net_dns_dns__reloader.cc18
-rw-r--r--devel/electron17/files/patch-net_dns_dns__reloader.h11
-rw-r--r--devel/electron17/files/patch-net_dns_dns__util.cc11
-rw-r--r--devel/electron17/files/patch-net_dns_host__resolver__manager.cc11
-rw-r--r--devel/electron17/files/patch-net_dns_host__resolver__proc.cc22
-rw-r--r--devel/electron17/files/patch-net_dns_public_BUILD.gn11
-rw-r--r--devel/electron17/files/patch-net_dns_public_resolv__reader.h9
-rw-r--r--devel/electron17/files/patch-net_http_http__auth__gssapi__posix.cc14
-rw-r--r--devel/electron17/files/patch-net_http_http__auth__gssapi__posix.h12
-rw-r--r--devel/electron17/files/patch-net_http_http__network__session.cc12
-rw-r--r--devel/electron17/files/patch-net_proxy__resolution_configured__proxy__resolution__service.cc29
-rw-r--r--devel/electron17/files/patch-net_proxy__resolution_proxy__config__service__linux.cc40
-rw-r--r--devel/electron17/files/patch-net_socket_socks5__client__socket.cc12
-rw-r--r--devel/electron17/files/patch-net_socket_udp__socket__posix.cc11
-rw-r--r--devel/electron17/files/patch-net_tools_cert__verify__tool_cert__verify__comparision__tool.cc29
-rw-r--r--devel/electron17/files/patch-net_tools_cert__verify__tool_cert__verify__tool.cc38
-rw-r--r--devel/electron17/files/patch-net_tools_quic_quic__http__proxy__backend.cc11
-rw-r--r--devel/electron17/files/patch-net_url__request_url__fetcher.cc11
-rw-r--r--devel/electron17/files/patch-net_url__request_url__fetcher.h11
-rw-r--r--devel/electron17/files/patch-net_url__request_url__request__context.cc11
-rw-r--r--devel/electron17/files/patch-net_url__request_url__request__context.h11
-rw-r--r--devel/electron17/files/patch-net_url__request_url__request__context__builder.cc11
-rw-r--r--devel/electron17/files/patch-pdf_font__table__linux.cc10
-rw-r--r--devel/electron17/files/patch-pdf_out__of__process__instance.cc20
-rw-r--r--devel/electron17/files/patch-pdf_pdfium_pdfium__engine.cc20
-rw-r--r--devel/electron17/files/patch-printing_mojom_printing__context__mojom__traits.cc20
-rw-r--r--devel/electron17/files/patch-printing_mojom_printing__context__mojom__traits.h11
-rw-r--r--devel/electron17/files/patch-printing_print__settings.cc29
-rw-r--r--devel/electron17/files/patch-printing_print__settings.h38
-rw-r--r--devel/electron17/files/patch-printing_print__settings__conversion.cc11
-rw-r--r--devel/electron17/files/patch-printing_printing__features.cc11
-rw-r--r--devel/electron17/files/patch-printing_sandbox_print__backend__sandbox__hook__linux.cc50
-rw-r--r--devel/electron17/files/patch-printing_sandbox_print__backend__sandbox__hook__linux.h16
-rw-r--r--devel/electron17/files/patch-remoting_base_chromoting__event.cc11
-rw-r--r--devel/electron17/files/patch-remoting_base_host__settings.cc20
-rw-r--r--devel/electron17/files/patch-remoting_client_display_sys__opengl.h11
-rw-r--r--devel/electron17/files/patch-remoting_codec_webrtc__video__encoder__vpx.cc11
-rw-r--r--devel/electron17/files/patch-remoting_host_base_switches.cc11
-rw-r--r--devel/electron17/files/patch-remoting_host_base_switches.h11
-rw-r--r--devel/electron17/files/patch-remoting_host_chromoting__host.cc11
-rw-r--r--devel/electron17/files/patch-remoting_host_chromoting__host__context.cc11
-rw-r--r--devel/electron17/files/patch-remoting_host_chromoting__host__services__client.cc20
-rw-r--r--devel/electron17/files/patch-remoting_host_evaluate__capability.cc11
-rw-r--r--devel/electron17/files/patch-remoting_host_heartbeat__sender.cc11
-rw-r--r--devel/electron17/files/patch-remoting_host_host__attributes.cc11
-rw-r--r--devel/electron17/files/patch-remoting_host_host__details.cc11
-rw-r--r--devel/electron17/files/patch-remoting_host_host__main.cc29
-rw-r--r--devel/electron17/files/patch-remoting_host_ipc__constants.cc11
-rw-r--r--devel/electron17/files/patch-remoting_host_it2me_it2me__native__messaging__host__main.cc47
-rw-r--r--devel/electron17/files/patch-remoting_host_me2me__desktop__environment.cc11
-rw-r--r--devel/electron17/files/patch-remoting_host_remote__open__url_remote__open__url__client.cc20
-rw-r--r--devel/electron17/files/patch-remoting_host_remote__open__url_remote__open__url__util.cc11
-rw-r--r--devel/electron17/files/patch-remoting_host_remote__open__url_url__forwarder__configurator.cc11
-rw-r--r--devel/electron17/files/patch-remoting_host_remoting__me2me__host.cc92
-rw-r--r--devel/electron17/files/patch-remoting_host_setup_start__host__main.cc29
-rw-r--r--devel/electron17/files/patch-remoting_resources_remoting__strings.grd20
-rw-r--r--devel/electron17/files/patch-sandbox_BUILD.gn11
-rw-r--r--devel/electron17/files/patch-sandbox_features.gni11
-rw-r--r--devel/electron17/files/patch-sandbox_linux_BUILD.gn58
-rw-r--r--devel/electron17/files/patch-sandbox_linux_services_init__process__reaper.cc15
-rw-r--r--devel/electron17/files/patch-sandbox_linux_services_libc__interceptor.cc21
-rw-r--r--devel/electron17/files/patch-sandbox_policy_BUILD.gn39
-rw-r--r--devel/electron17/files/patch-sandbox_policy_features.cc14
-rw-r--r--devel/electron17/files/patch-sandbox_policy_freebsd_sandbox__freebsd.cc250
-rw-r--r--devel/electron17/files/patch-sandbox_policy_freebsd_sandbox__freebsd.h281
-rw-r--r--devel/electron17/files/patch-sandbox_policy_mojom_sandbox.mojom15
-rw-r--r--devel/electron17/files/patch-sandbox_policy_openbsd_sandbox__openbsd.cc397
-rw-r--r--devel/electron17/files/patch-sandbox_policy_openbsd_sandbox__openbsd.h281
-rw-r--r--devel/electron17/files/patch-sandbox_policy_sandbox.cc22
-rw-r--r--devel/electron17/files/patch-sandbox_policy_sandbox.h22
-rw-r--r--devel/electron17/files/patch-sandbox_policy_sandbox__type.cc38
-rw-r--r--devel/electron17/files/patch-sandbox_policy_switches.cc13
-rw-r--r--devel/electron17/files/patch-sandbox_policy_switches.h12
-rw-r--r--devel/electron17/files/patch-services_audio_audio__sandbox__hook__linux.cc31
-rw-r--r--devel/electron17/files/patch-services_audio_audio__sandbox__hook__linux.h14
-rw-r--r--devel/electron17/files/patch-services_cert__verifier_cert__verifier__creation.cc29
-rw-r--r--devel/electron17/files/patch-services_device_geolocation_location__arbitrator.cc11
-rw-r--r--devel/electron17/files/patch-services_device_hid_BUILD.gn28
-rw-r--r--devel/electron17/files/patch-services_device_hid_hid__connection__fido.cc201
-rw-r--r--devel/electron17/files/patch-services_device_hid_hid__connection__fido.h60
-rw-r--r--devel/electron17/files/patch-services_device_hid_hid__connection__freebsd.cc246
-rw-r--r--devel/electron17/files/patch-services_device_hid_hid__connection__freebsd.h70
-rw-r--r--devel/electron17/files/patch-services_device_hid_hid__service.cc24
-rw-r--r--devel/electron17/files/patch-services_device_hid_hid__service__fido.cc331
-rw-r--r--devel/electron17/files/patch-services_device_hid_hid__service__fido.h46
-rw-r--r--devel/electron17/files/patch-services_device_hid_hid__service__freebsd.cc401
-rw-r--r--devel/electron17/files/patch-services_device_hid_hid__service__freebsd.h52
-rw-r--r--devel/electron17/files/patch-services_device_serial_BUILD.gn16
-rw-r--r--devel/electron17/files/patch-services_device_serial_serial__device__enumerator.cc20
-rw-r--r--devel/electron17/files/patch-services_device_serial_serial__io__handler__posix.cc11
-rw-r--r--devel/electron17/files/patch-services_device_time__zone__monitor_time__zone__monitor__linux.cc14
-rw-r--r--devel/electron17/files/patch-services_device_usb_BUILD.gn38
-rw-r--r--devel/electron17/files/patch-services_network_BUILD.gn10
-rw-r--r--devel/electron17/files/patch-services_network_network__context.cc11
-rw-r--r--devel/electron17/files/patch-services_network_network__sandbox__hook__linux.cc18
-rw-r--r--devel/electron17/files/patch-services_network_network__sandbox__hook__linux.h14
-rw-r--r--devel/electron17/files/patch-services_network_network__service.cc20
-rw-r--r--devel/electron17/files/patch-services_network_network__service.h11
-rw-r--r--devel/electron17/files/patch-services_resource__coordinator_public_cpp_memory__instrumentation_os__metrics.h20
-rw-r--r--devel/electron17/files/patch-services_resource__coordinator_public_cpp_memory__instrumentation_os__metrics__linux.cc83
-rw-r--r--devel/electron17/files/patch-services_service__manager_BUILD.gn11
-rw-r--r--devel/electron17/files/patch-services_service__manager_public_cpp_service__executable_BUILD.gn11
-rw-r--r--devel/electron17/files/patch-services_tracing_public_cpp_perfetto_perfetto__config.cc11
-rw-r--r--devel/electron17/files/patch-services_video__capture_broadcasting__receiver.cc20
-rw-r--r--devel/electron17/files/patch-services_video__capture_public_mojom_video__capture__service.mojom15
-rw-r--r--devel/electron17/files/patch-skia_ext_SkMemory__new__handler.cpp11
-rw-r--r--devel/electron17/files/patch-third__party_abseil-cpp_absl_base_config.h40
-rw-r--r--devel/electron17/files/patch-third__party_abseil-cpp_absl_base_internal_endian.h11
-rw-r--r--devel/electron17/files/patch-third__party_abseil-cpp_absl_base_internal_sysinfo.cc23
-rw-r--r--devel/electron17/files/patch-third__party_abseil-cpp_absl_debugging_internal_elf__mem__image.h11
-rw-r--r--devel/electron17/files/patch-third__party_abseil-cpp_absl_time_internal_cctz_src_time__zone__format.cc11
-rw-r--r--devel/electron17/files/patch-third__party_angle_BUILD.gn29
-rw-r--r--devel/electron17/files/patch-third__party_angle_src_common_platform.h19
-rw-r--r--devel/electron17/files/patch-third__party_angle_src_common_system__utils__posix.cpp12
-rw-r--r--devel/electron17/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__internal.h16
-rw-r--r--devel/electron17/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__libpci.cpp90
-rw-r--r--devel/electron17/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__linux.cpp35
-rw-r--r--devel/electron17/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__x11.cpp60
-rw-r--r--devel/electron17/files/patch-third__party_angle_src_libANGLE_Display.cpp47
-rw-r--r--devel/electron17/files/patch-third__party_angle_src_libANGLE_renderer_driver__utils.h11
-rw-r--r--devel/electron17/files/patch-third__party_angle_src_libANGLE_renderer_gl_glx_FunctionsGLX.cpp15
-rw-r--r--devel/electron17/files/patch-third__party_angle_src_libANGLE_renderer_vulkan_DisplayVk__api.h11
-rw-r--r--devel/electron17/files/patch-third__party_angle_src_libANGLE_validationEGL.h11
-rw-r--r--devel/electron17/files/patch-third__party_angle_util_BUILD.gn11
-rw-r--r--devel/electron17/files/patch-third__party_blink_common_renderer__preferences_renderer__preferences__mojom__traits.cc11
-rw-r--r--devel/electron17/files/patch-third__party_blink_public_common_renderer__preferences_renderer__preferences.h11
-rw-r--r--devel/electron17/files/patch-third__party_blink_public_common_renderer__preferences_renderer__preferences__mojom__traits.h11
-rw-r--r--devel/electron17/files/patch-third__party_blink_public_platform_web__vector.h11
-rw-r--r--devel/electron17/files/patch-third__party_blink_renderer_bindings_scripts_bind__gen_style__format.py11
-rw-r--r--devel/electron17/files/patch-third__party_blink_renderer_build_scripts_run__with__pythonpath.py10
-rw-r--r--devel/electron17/files/patch-third__party_blink_renderer_controller_blink__initializer.cc35
-rw-r--r--devel/electron17/files/patch-third__party_blink_renderer_controller_memory__usage__monitor__posix.cc21
-rw-r--r--devel/electron17/files/patch-third__party_blink_renderer_controller_memory__usage__monitor__posix.h47
-rw-r--r--devel/electron17/files/patch-third__party_blink_renderer_core_editing_editing__behavior.cc11
-rw-r--r--devel/electron17/files/patch-third__party_blink_renderer_core_exported_web__view__impl.cc20
-rw-r--r--devel/electron17/files/patch-third__party_blink_renderer_core_html_canvas_canvas__async__blob__creator.cc11
-rw-r--r--devel/electron17/files/patch-third__party_blink_renderer_core_html_forms_internal__popup__menu.cc11
-rw-r--r--devel/electron17/files/patch-third__party_blink_renderer_core_inspector_inspector__memory__agent.cc11
-rw-r--r--devel/electron17/files/patch-third__party_blink_renderer_core_layout_layout__view.cc20
-rw-r--r--devel/electron17/files/patch-third__party_blink_renderer_core_paint_paint__layer.cc11
-rw-r--r--devel/electron17/files/patch-third__party_blink_renderer_core_scroll_scrollbar__theme__aura.cc20
-rw-r--r--devel/electron17/files/patch-third__party_blink_renderer_modules_webgl_webgl__rendering__context__base.cc11
-rw-r--r--devel/electron17/files/patch-third__party_blink_renderer_modules_webgl_webgl__webcodecs__video__frame.cc11
-rw-r--r--devel/electron17/files/patch-third__party_blink_renderer_platform_fonts_font__cache.cc20
-rw-r--r--devel/electron17/files/patch-third__party_blink_renderer_platform_fonts_font__cache.h47
-rw-r--r--devel/electron17/files/patch-third__party_blink_renderer_platform_fonts_font__description.cc20
-rw-r--r--devel/electron17/files/patch-third__party_blink_renderer_platform_fonts_font__metrics.cc29
-rw-r--r--devel/electron17/files/patch-third__party_blink_renderer_platform_fonts_font__unique__name__lookup.cc20
-rw-r--r--devel/electron17/files/patch-third__party_blink_renderer_platform_fonts_skia_font__cache__skia.cc29
-rw-r--r--devel/electron17/files/patch-third__party_blink_renderer_platform_graphics_begin__frame__provider.cc14
-rw-r--r--devel/electron17/files/patch-third__party_blink_renderer_platform_graphics_video__frame__submitter.cc11
-rw-r--r--devel/electron17/files/patch-third__party_blink_renderer_platform_scheduler_common_thread.cc12
-rw-r--r--devel/electron17/files/patch-third__party_blink_renderer_platform_wtf_container__annotations.h11
-rw-r--r--devel/electron17/files/patch-third__party_blink_renderer_platform_wtf_math__extras.h23
-rw-r--r--devel/electron17/files/patch-third__party_blink_renderer_platform_wtf_stack__util.cc43
-rw-r--r--devel/electron17/files/patch-third__party_boringssl_BUILD.generated.gni10
-rw-r--r--devel/electron17/files/patch-third__party_boringssl_src_crypto_fipsmodule_rand_internal.h12
-rw-r--r--devel/electron17/files/patch-third__party_boringssl_src_crypto_rand__extra_arc4random.c36
-rw-r--r--devel/electron17/files/patch-third__party_boringssl_src_crypto_refcount__c11.c12
-rw-r--r--devel/electron17/files/patch-third__party_boringssl_src_include_openssl_base.h14
-rw-r--r--devel/electron17/files/patch-third__party_boringssl_src_include_openssl_cpu.h11
-rw-r--r--devel/electron17/files/patch-third__party_brotli_common_platform.h11
-rw-r--r--devel/electron17/files/patch-third__party_crashpad_crashpad_build_crashpad__buildconfig.gni11
-rw-r--r--devel/electron17/files/patch-third__party_crashpad_crashpad_client_BUILD.gn16
-rw-r--r--devel/electron17/files/patch-third__party_crashpad_crashpad_client_crashpad__client__posix.cc43
-rw-r--r--devel/electron17/files/patch-third__party_crashpad_crashpad_minidump_minidump__misc__info__writer.cc13
-rw-r--r--devel/electron17/files/patch-third__party_crashpad_crashpad_util_misc_address__types.h20
-rw-r--r--devel/electron17/files/patch-third__party_crashpad_crashpad_util_misc_capture__context.h21
-rw-r--r--devel/electron17/files/patch-third__party_crashpad_crashpad_util_misc_metrics.cc11
-rw-r--r--devel/electron17/files/patch-third__party_crashpad_crashpad_util_misc_uuid.cc11
-rw-r--r--devel/electron17/files/patch-third__party_crashpad_crashpad_util_posix_close__multiple.cc11
-rw-r--r--devel/electron17/files/patch-third__party_crashpad_crashpad_util_posix_drop__privileges.cc11
-rw-r--r--devel/electron17/files/patch-third__party_crashpad_crashpad_util_posix_signals.cc33
-rw-r--r--devel/electron17/files/patch-third__party_crashpad_crashpad_util_posix_symbolic__constants__posix.cc20
-rw-r--r--devel/electron17/files/patch-third__party_crc32c_BUILD.gn11
-rw-r--r--devel/electron17/files/patch-third__party_dawn_src_common_Platform.h13
-rw-r--r--devel/electron17/files/patch-third__party_dawn_src_dawn__native_vulkan_BackendVk.cpp11
-rw-r--r--devel/electron17/files/patch-third__party_dawn_src_include_dawn__native_VulkanBackend.h11
-rw-r--r--devel/electron17/files/patch-third__party_electron__node_deps_uv_BUILD.gn46
-rw-r--r--devel/electron17/files/patch-third__party_electron__node_deps_uv_src_unix_pipe.c18
-rw-r--r--devel/electron17/files/patch-third__party_ffmpeg_BUILD.gn10
-rw-r--r--devel/electron17/files/patch-third__party_ffmpeg_chromium_config_Chrome_openbsd_arm64_config.h2706
-rw-r--r--devel/electron17/files/patch-third__party_ffmpeg_chromium_config_Chrome_openbsd_ia32_config.asm2689
-rw-r--r--devel/electron17/files/patch-third__party_ffmpeg_chromium_config_Chrome_openbsd_ia32_config.h2706
-rw-r--r--devel/electron17/files/patch-third__party_ffmpeg_chromium_config_Chrome_openbsd_x64_config.asm2688
-rw-r--r--devel/electron17/files/patch-third__party_ffmpeg_chromium_config_Chrome_openbsd_x64_config.h2705
-rw-r--r--devel/electron17/files/patch-third__party_ffmpeg_libavcodec_x86_cabac.h12
-rw-r--r--devel/electron17/files/patch-third__party_ffmpeg_libavutil_cpu.c14
-rw-r--r--devel/electron17/files/patch-third__party_ffmpeg_libavutil_mem.c12
-rw-r--r--devel/electron17/files/patch-third__party_ffmpeg_libavutil_random__seed.c14
-rw-r--r--devel/electron17/files/patch-third__party_fontconfig_include_config.h89
-rw-r--r--devel/electron17/files/patch-third__party_fontconfig_src_src_fccompat.c13
-rw-r--r--devel/electron17/files/patch-third__party_glfw_src_src_egl__context.c11
-rw-r--r--devel/electron17/files/patch-third__party_leveldatabase_env__chromium.cc12
-rw-r--r--devel/electron17/files/patch-third__party_libXNVCtrl_NVCtrl.c25
-rw-r--r--devel/electron17/files/patch-third__party_libphonenumber_dist_cpp_src_phonenumbers_base_memory_singleton.h12
-rw-r--r--devel/electron17/files/patch-third__party_libphonenumber_dist_cpp_src_phonenumbers_base_synchronization_lock.h12
-rw-r--r--devel/electron17/files/patch-third__party_libphonenumber_dist_cpp_src_phonenumbers_base_thread__checker.h22
-rw-r--r--devel/electron17/files/patch-third__party_libsync_src_include_sync_sync.h12
-rw-r--r--devel/electron17/files/patch-third__party_libsync_src_sync.c25
-rw-r--r--devel/electron17/files/patch-third__party_libusb_BUILD.gn46
-rw-r--r--devel/electron17/files/patch-third__party_libusb_src_libusb_core.c11
-rw-r--r--devel/electron17/files/patch-third__party_libxml_linux_config.h12
-rw-r--r--devel/electron17/files/patch-third__party_libxml_src_dict.c52
-rw-r--r--devel/electron17/files/patch-third__party_maldoca_src_maldoca_base_get__runfiles__dir.cc32
-rw-r--r--devel/electron17/files/patch-third__party_maldoca_src_maldoca_service_common_process__doc__wrapper.cc29
-rw-r--r--devel/electron17/files/patch-third__party_nasm_BUILD.gn16
-rw-r--r--devel/electron17/files/patch-third__party_nasm_config_config-linux.h111
-rw-r--r--devel/electron17/files/patch-third__party_node_node.py11
-rw-r--r--devel/electron17/files/patch-third__party_opus_BUILD.gn10
-rw-r--r--devel/electron17/files/patch-third__party_pdfium_core_fxcrt_cfx__datetime.cpp11
-rw-r--r--devel/electron17/files/patch-third__party_pdfium_core_fxge_cfx__fontmapper.cpp11
-rw-r--r--devel/electron17/files/patch-third__party_pdfium_core_fxge_linux_fx__linux__impl.cpp23
-rw-r--r--devel/electron17/files/patch-third__party_pdfium_fxjs_fx__date__helpers.cpp22
-rw-r--r--devel/electron17/files/patch-third__party_pdfium_xfa_fxfa_parser_cxfa__timezoneprovider.cpp41
-rw-r--r--devel/electron17/files/patch-third__party_perfetto_include_perfetto_base_build__config.h66
-rw-r--r--devel/electron17/files/patch-third__party_perfetto_include_perfetto_base_thread__utils.h22
-rw-r--r--devel/electron17/files/patch-third__party_perfetto_include_perfetto_base_time.h20
-rw-r--r--devel/electron17/files/patch-third__party_perfetto_include_perfetto_ext_base_event__fd.h11
-rw-r--r--devel/electron17/files/patch-third__party_perfetto_include_perfetto_ext_base_thread__utils.h15
-rw-r--r--devel/electron17/files/patch-third__party_perfetto_src_base_event__fd.cc22
-rw-r--r--devel/electron17/files/patch-third__party_perfetto_src_base_periodic__task.cc20
-rw-r--r--devel/electron17/files/patch-third__party_perfetto_src_base_string__utils.cc15
-rw-r--r--devel/electron17/files/patch-third__party_perfetto_src_base_subprocess__posix.cc22
-rw-r--r--devel/electron17/files/patch-third__party_perfetto_src_base_thread__task__runner.cc14
-rw-r--r--devel/electron17/files/patch-third__party_perfetto_src_base_unix__socket.cc26
-rw-r--r--devel/electron17/files/patch-third__party_perfetto_src_tracing_core_tracing__service__impl.cc12
-rw-r--r--devel/electron17/files/patch-third__party_protobuf_src_google_protobuf_stubs_platform__macros.h11
-rw-r--r--devel/electron17/files/patch-third__party_protobuf_src_google_protobuf_stubs_strutil.h18
-rw-r--r--devel/electron17/files/patch-third__party_skia_src_gpu_GrAutoLocaleSetter.h11
-rw-r--r--devel/electron17/files/patch-third__party_skia_src_ports_SkOSFile__stdio.cpp11
-rw-r--r--devel/electron17/files/patch-third__party_sqlite_BUILD.gn11
-rw-r--r--devel/electron17/files/patch-third__party_sqlite_src_amalgamation_sqlite3.c23
-rw-r--r--devel/electron17/files/patch-third__party_swiftshader_src_Common_Configurator.cpp13
-rw-r--r--devel/electron17/files/patch-third__party_swiftshader_src_Common_MutexLock.hpp11
-rw-r--r--devel/electron17/files/patch-third__party_swiftshader_src_Common_SharedLibrary.hpp11
-rw-r--r--devel/electron17/files/patch-third__party_swiftshader_src_Main_SwiftConfig.cpp14
-rw-r--r--devel/electron17/files/patch-third__party_swiftshader_src_OpenGL_libEGL_Display.cpp20
-rw-r--r--devel/electron17/files/patch-third__party_swiftshader_src_OpenGL_libEGL_Surface.cpp11
-rw-r--r--devel/electron17/files/patch-third__party_swiftshader_src_OpenGL_libEGL_libEGL.cpp29
-rw-r--r--devel/electron17/files/patch-third__party_swiftshader_src_OpenGL_libEGL_libEGL.hpp11
-rw-r--r--devel/electron17/files/patch-third__party_swiftshader_src_OpenGL_libGLESv2_libGLESv2.hpp11
-rw-r--r--devel/electron17/files/patch-third__party_swiftshader_src_Reactor_Debug.cpp11
-rw-r--r--devel/electron17/files/patch-third__party_swiftshader_src_System_SharedLibrary.hpp11
-rw-r--r--devel/electron17/files/patch-third__party_swiftshader_src_Vulkan_VkSemaphoreExternalLinux.hpp20
-rw-r--r--devel/electron17/files/patch-third__party_swiftshader_src_WSI_libXCB.cpp11
-rw-r--r--devel/electron17/files/patch-third__party_swiftshader_third__party_llvm-10.0_configs_linux_include_llvm_Config_config.h213
-rw-r--r--devel/electron17/files/patch-third__party_swiftshader_third__party_llvm-subzero_build_Linux_include_llvm_Config_config.h47
-rw-r--r--devel/electron17/files/patch-third__party_swiftshader_third__party_marl_src_memory.cpp11
-rw-r--r--devel/electron17/files/patch-third__party_swiftshader_third__party_marl_src_thread.cpp11
-rw-r--r--devel/electron17/files/patch-third__party_unrar_src_crypt.cpp11
-rw-r--r--devel/electron17/files/patch-third__party_usrsctp_BUILD.gn11
-rw-r--r--devel/electron17/files/patch-third__party_vulkan-deps_vulkan-loader_src_loader_allocation.h14
-rw-r--r--devel/electron17/files/patch-third__party_vulkan-deps_vulkan-loader_src_loader_get__environment.c27
-rw-r--r--devel/electron17/files/patch-third__party_vulkan-deps_vulkan-loader_src_loader_get__environment.h16
-rw-r--r--devel/electron17/files/patch-third__party_vulkan-deps_vulkan-loader_src_loader_vk__loader__platform.h29
-rw-r--r--devel/electron17/files/patch-third__party_vulkan-deps_vulkan-validation-layers_src_layers_vk__loader__platform.h11
-rw-r--r--devel/electron17/files/patch-third__party_vulkan-deps_vulkan-validation-layers_src_layers_vk__mem__alloc.h12
-rw-r--r--devel/electron17/files/patch-third__party_vulkan__memory__allocator_include_vk__mem__alloc.h11
-rw-r--r--devel/electron17/files/patch-third__party_webrtc_BUILD.gn12
-rw-r--r--devel/electron17/files/patch-third__party_webrtc_modules_audio__device_BUILD.gn11
-rw-r--r--devel/electron17/files/patch-third__party_webrtc_modules_desktop__capture_linux_x__server__pixel__buffer.cc16
-rw-r--r--devel/electron17/files/patch-third__party_webrtc_rtc__base_BUILD.gn11
-rw-r--r--devel/electron17/files/patch-third__party_webrtc_rtc__base_byte__order.h11
-rw-r--r--devel/electron17/files/patch-third__party_webrtc_rtc__base_ip__address.cc12
-rw-r--r--devel/electron17/files/patch-third__party_webrtc_rtc__base_physical__socket__server.cc65
-rw-r--r--devel/electron17/files/patch-third__party_webrtc_rtc__base_physical__socket__server.h11
-rw-r--r--devel/electron17/files/patch-third__party_webrtc_rtc__base_platform__thread__types.cc40
-rw-r--r--devel/electron17/files/patch-third__party_webrtc_rtc__base_third__party_sigslot_sigslot.h23
-rw-r--r--devel/electron17/files/patch-third__party_webrtc_system__wrappers_BUILD.gn11
-rw-r--r--devel/electron17/files/patch-third__party_zlib_BUILD.gn29
-rw-r--r--devel/electron17/files/patch-tools_generate__stubs_rules.gni10
-rw-r--r--devel/electron17/files/patch-tools_gn_build_build__linux.ninja.template11
-rw-r--r--devel/electron17/files/patch-tools_gn_build_gen.py34
-rw-r--r--devel/electron17/files/patch-tools_gn_src_base_files_file__posix.cc11
-rw-r--r--devel/electron17/files/patch-tools_gn_src_gn_version.h15
-rw-r--r--devel/electron17/files/patch-tools_gn_src_util_exe__path.cc90
-rw-r--r--devel/electron17/files/patch-tools_json__schema__compiler_cpp__bundle__generator.py11
-rw-r--r--devel/electron17/files/patch-tools_json__schema__compiler_feature__compiler.py10
-rw-r--r--devel/electron17/files/patch-tools_perf_chrome__telemetry__build_BUILD.gn20
-rw-r--r--devel/electron17/files/patch-tools_protoc__wrapper_protoc__wrapper.py15
-rw-r--r--devel/electron17/files/patch-tools_variations_fieldtrial__to__struct.py11
-rw-r--r--devel/electron17/files/patch-ui_base_clipboard_clipboard__constants.cc11
-rw-r--r--devel/electron17/files/patch-ui_base_clipboard_clipboard__constants.h11
-rw-r--r--devel/electron17/files/patch-ui_base_cursor_cursor__factory.cc11
-rw-r--r--devel/electron17/files/patch-ui_base_cursor_cursor__factory.h11
-rw-r--r--devel/electron17/files/patch-ui_base_dragdrop_os__exchange__data__provider__factory.cc20
-rw-r--r--devel/electron17/files/patch-ui_base_dragdrop_os__exchange__data__provider__non__backed.cc11
-rw-r--r--devel/electron17/files/patch-ui_base_ime_dummy__text__input__client.cc11
-rw-r--r--devel/electron17/files/patch-ui_base_ime_dummy__text__input__client.h11
-rw-r--r--devel/electron17/files/patch-ui_base_ime_fake__text__input__client.cc11
-rw-r--r--devel/electron17/files/patch-ui_base_ime_fake__text__input__client.h11
-rw-r--r--devel/electron17/files/patch-ui_base_ime_init_input__method__initializer.cc38
-rw-r--r--devel/electron17/files/patch-ui_base_ime_text__input__client.h11
-rw-r--r--devel/electron17/files/patch-ui_base_resource_resource__bundle.cc11
-rw-r--r--devel/electron17/files/patch-ui_base_test_skia__gold__pixel__diff.cc11
-rw-r--r--devel/electron17/files/patch-ui_base_ui__base__features.cc20
-rw-r--r--devel/electron17/files/patch-ui_base_webui_web__ui__util.cc11
-rw-r--r--devel/electron17/files/patch-ui_base_x_x11__cursor__loader.cc14
-rw-r--r--devel/electron17/files/patch-ui_base_x_x11__shm__image__pool.cc53
-rw-r--r--devel/electron17/files/patch-ui_compositor_compositor.cc11
-rw-r--r--devel/electron17/files/patch-ui_compositor_compositor.h11
-rw-r--r--devel/electron17/files/patch-ui_compositor_compositor__observer.h11
-rw-r--r--devel/electron17/files/patch-ui_events_devices_x11_device__data__manager__x11.cc10
-rw-r--r--devel/electron17/files/patch-ui_events_event.cc20
-rw-r--r--devel/electron17/files/patch-ui_events_event__switches.cc11
-rw-r--r--devel/electron17/files/patch-ui_events_event__switches.h11
-rw-r--r--devel/electron17/files/patch-ui_events_keycodes_dom_keycode__converter.cc11
-rw-r--r--devel/electron17/files/patch-ui_gfx_BUILD.gn11
-rw-r--r--devel/electron17/files/patch-ui_gfx_canvas__skia.cc11
-rw-r--r--devel/electron17/files/patch-ui_gfx_codec_png__codec.cc11
-rw-r--r--devel/electron17/files/patch-ui_gfx_font__fallback__linux.cc11
-rw-r--r--devel/electron17/files/patch-ui_gfx_font__list.cc11
-rw-r--r--devel/electron17/files/patch-ui_gfx_font__render__params.h20
-rw-r--r--devel/electron17/files/patch-ui_gfx_font__util.cc20
-rw-r--r--devel/electron17/files/patch-ui_gfx_gpu__memory__buffer.cc11
-rw-r--r--devel/electron17/files/patch-ui_gfx_gpu__memory__buffer.h20
-rw-r--r--devel/electron17/files/patch-ui_gfx_ipc_gfx__param__traits__macros.h44
-rw-r--r--devel/electron17/files/patch-ui_gfx_linux_client__native__pixmap__dmabuf.cc25
-rw-r--r--devel/electron17/files/patch-ui_gfx_mojom_buffer__types__mojom__traits.cc20
-rw-r--r--devel/electron17/files/patch-ui_gfx_mojom_native__handle__types__mojom__traits.cc34
-rw-r--r--devel/electron17/files/patch-ui_gfx_mojom_native__handle__types__mojom__traits.h29
-rw-r--r--devel/electron17/files/patch-ui_gfx_native__pixmap__handle.cc62
-rw-r--r--devel/electron17/files/patch-ui_gfx_native__pixmap__handle.h38
-rw-r--r--devel/electron17/files/patch-ui_gfx_native__widget__types.h20
-rw-r--r--devel/electron17/files/patch-ui_gfx_render__text__api__fuzzer.cc29
-rw-r--r--devel/electron17/files/patch-ui_gfx_switches.cc11
-rw-r--r--devel/electron17/files/patch-ui_gfx_switches.h11
-rw-r--r--devel/electron17/files/patch-ui_gfx_x_generated__protos_dri3.cc11
-rw-r--r--devel/electron17/files/patch-ui_gfx_x_generated__protos_shm.cc11
-rw-r--r--devel/electron17/files/patch-ui_gfx_x_xlib__support.cc21
-rw-r--r--devel/electron17/files/patch-ui_gl_BUILD.gn36
-rw-r--r--devel/electron17/files/patch-ui_gl_generate__bindings.py12
-rw-r--r--devel/electron17/files/patch-ui_gl_gl__bindings__api__autogen__glx.h10
-rw-r--r--devel/electron17/files/patch-ui_gl_gl__bindings__autogen__glx.cc61
-rw-r--r--devel/electron17/files/patch-ui_gl_gl__bindings__autogen__glx.h43
-rw-r--r--devel/electron17/files/patch-ui_gl_gl__features.cc11
-rw-r--r--devel/electron17/files/patch-ui_gl_gl__image__glx__native__pixmap.cc11
-rw-r--r--devel/electron17/files/patch-ui_gl_init_gl__factory.cc11
-rw-r--r--devel/electron17/files/patch-ui_gl_sync__control__vsync__provider.cc38
-rw-r--r--devel/electron17/files/patch-ui_gl_sync__control__vsync__provider.h20
-rw-r--r--devel/electron17/files/patch-ui_gtk_gtk__compat.cc50
-rw-r--r--devel/electron17/files/patch-ui_gtk_printing_print__dialog__gtk.cc11
-rw-r--r--devel/electron17/files/patch-ui_message__center_views_message__popup__view.cc11
-rw-r--r--devel/electron17/files/patch-ui_native__theme_native__theme.h11
-rw-r--r--devel/electron17/files/patch-ui_native__theme_native__theme__base.cc11
-rw-r--r--devel/electron17/files/patch-ui_ozone_common_egl__util.cc14
-rw-r--r--devel/electron17/files/patch-ui_ozone_platform_x11_ozone__platform__x11.cc11
-rw-r--r--devel/electron17/files/patch-ui_ozone_public_ozone__platform.h11
-rw-r--r--devel/electron17/files/patch-ui_platform__window_platform__window__init__properties.h20
-rw-r--r--devel/electron17/files/patch-ui_strings_app__locale__settings.grd11
-rw-r--r--devel/electron17/files/patch-ui_views_controls_prefix__selector.cc11
-rw-r--r--devel/electron17/files/patch-ui_views_controls_prefix__selector.h11
-rw-r--r--devel/electron17/files/patch-ui_views_controls_textfield_textfield.cc64
-rw-r--r--devel/electron17/files/patch-ui_views_controls_textfield_textfield.h11
-rw-r--r--devel/electron17/files/patch-ui_views_corewm_tooltip__aura.cc11
-rw-r--r--devel/electron17/files/patch-ui_views_examples_widget__example.cc11
-rw-r--r--devel/electron17/files/patch-ui_views_focus_focus__manager.cc20
-rw-r--r--devel/electron17/files/patch-ui_views_style_platform__style.cc20
-rw-r--r--devel/electron17/files/patch-ui_views_views__delegate.cc11
-rw-r--r--devel/electron17/files/patch-ui_views_views__delegate.h11
-rw-r--r--devel/electron17/files/patch-ui_views_widget_desktop__aura_desktop__screen__ozone.cc11
-rw-r--r--devel/electron17/files/patch-ui_views_widget_desktop__aura_desktop__window__tree__host__platform.cc11
-rw-r--r--devel/electron17/files/patch-ui_views_widget_native__widget__aura.cc29
-rw-r--r--devel/electron17/files/patch-ui_views_widget_widget.cc20
-rw-r--r--devel/electron17/files/patch-ui_views_window_custom__frame__view.cc11
-rw-r--r--devel/electron17/files/patch-ui_views_window_dialog__delegate.cc11
-rw-r--r--devel/electron17/files/patch-ui_views_window_frame__background.cc11
-rw-r--r--devel/electron17/files/patch-ui_webui_resources_js_cr.js14
-rw-r--r--devel/electron17/files/patch-v8_BUILD.gn45
-rw-r--r--devel/electron17/files/patch-v8_include_v8config.h37
-rw-r--r--devel/electron17/files/patch-v8_src_api_api.cc20
-rw-r--r--devel/electron17/files/patch-v8_src_base_atomicops.h33
-rw-r--r--devel/electron17/files/patch-v8_src_base_platform_platform-freebsd.cc32
-rw-r--r--devel/electron17/files/patch-v8_src_base_platform_platform-openbsd.cc28
-rw-r--r--devel/electron17/files/patch-v8_src_base_platform_platform-posix.cc53
-rw-r--r--devel/electron17/files/patch-v8_src_base_sys-info.cc11
-rw-r--r--devel/electron17/files/patch-v8_src_compiler_backend_ia32_instruction-selector-ia32.cc20
-rw-r--r--devel/electron17/files/patch-v8_src_diagnostics_perf-jit.cc11
-rw-r--r--devel/electron17/files/patch-v8_src_diagnostics_perf-jit.h11
-rw-r--r--devel/electron17/files/patch-v8_src_trap-handler_handler-inside-posix.cc26
-rw-r--r--devel/electron17/files/patch-v8_src_trap-handler_handler-inside-posix.h11
-rw-r--r--devel/electron17/files/patch-v8_src_trap-handler_trap-handler.h11
-rw-r--r--devel/electron17/files/patch-v8_src_wasm_baseline_ia32_liftoff-assembler-ia32.h101
-rw-r--r--devel/electron17/files/patch-v8_tools_run.py11
-rw-r--r--devel/electron17/files/patch-weblayer_browser_browser__main__parts__impl.cc20
-rw-r--r--devel/electron17/files/patch-weblayer_browser_content__browser__client__impl.cc29
-rw-r--r--devel/electron17/files/patch-weblayer_browser_content__browser__client__impl.h11
-rw-r--r--devel/electron17/files/patch-weblayer_browser_system__network__context__manager.cc11
-rw-r--r--devel/electron17/files/patch-weblayer_common_weblayer__paths.cc20
-rw-r--r--devel/electron17/files/yarn.lock8333
-rw-r--r--devel/electron17/pkg-descr10
-rw-r--r--devel/electron17/pkg-plist177
1069 files changed, 50683 insertions, 0 deletions
diff --git a/devel/Makefile b/devel/Makefile
index 280a659de90f..b19cdda6bb74 100644
--- a/devel/Makefile
+++ b/devel/Makefile
@@ -568,6 +568,7 @@
SUBDIR += egypt
SUBDIR += eiffelstudio
SUBDIR += electron13
+ SUBDIR += electron17
SUBDIR += elf
SUBDIR += elf-dissector
SUBDIR += elfcat
diff --git a/devel/electron17/Makefile b/devel/electron17/Makefile
new file mode 100644
index 000000000000..69f6496eaa16
--- /dev/null
+++ b/devel/electron17/Makefile
@@ -0,0 +1,339 @@
+PORTNAME= electron
+DISTVERSIONPREFIX= v
+DISTVERSION= ${ELECTRON_VER:S/-beta./.b/}
+CATEGORIES= devel
+MASTER_SITES= https://github.com/tagattie/FreeBSD-Electron/releases/download/v17.4.4/:chromium \
+ https://commondatastorage.googleapis.com/chromium-nodejs/:chromium_node \
+ https://commondatastorage.googleapis.com/chromium-fonts/:chromium_testfonts
+PKGNAMESUFFIX= ${ELECTRON_VER_MAJOR}
+DISTFILES= chromium-${CHROMIUM_VER}${EXTRACT_SUFX}:chromium \
+ ${CHROMIUM_NODE_MODULES_HASH}:chromium_node \
+ ${CHROMIUM_TEST_FONTS_HASH}:chromium_testfonts \
+ electron-yarn-cache-${ELECTRON_VER}${EXTRACT_SUFX}:prefetch
+DIST_SUBDIR= ${PORTNAME}
+
+MAINTAINER= tagattie@FreeBSD.org
+COMMENT= Build cross-platform desktop apps with JavaScript, HTML, and CSS
+
+LICENSE= MIT
+LICENSE_FILE= ${WRKSRC}/electron/LICENSE
+
+FETCH_DEPENDS= yarn-node16>0:www/yarn-node16
+EXTRACT_DEPENDS= yarn-node16>0:www/yarn-node16
+PATCH_DEPENDS= git:devel/git
+BUILD_DEPENDS= ${LOCALBASE}/bin/ar:devel/binutils \
+ gperf:devel/gperf \
+ yasm:devel/yasm \
+ ${LOCALBASE}/libdata/pkgconfig/dri.pc:graphics/mesa-dri \
+ ${LOCALBASE}/include/linux/videodev2.h:multimedia/v4l_compat \
+ node16>0:www/node16 \
+ npm-node16>0:www/npm-node16
+LIB_DEPENDS= libatk-bridge-2.0.so:accessibility/at-spi2-atk \
+ libatspi.so:accessibility/at-spi2-core \
+ libsnappy.so:archivers/snappy \
+ libFLAC.so:audio/flac \
+ libopus.so:audio/opus \
+ libdbus-1.so:devel/dbus \
+ libnotify.so:devel/libnotify \
+ libpci.so:devel/libpci \
+ libnspr4.so:devel/nspr \
+ libre2.so:devel/re2 \
+ libdrm.so:graphics/libdrm \
+ libpng.so:graphics/png \
+ libwebp.so:graphics/webp \
+ libva.so:multimedia/libva \
+ libopenh264.so:multimedia/openh264 \
+ libfreetype.so:print/freetype2 \
+ libharfbuzz.so:print/harfbuzz \
+ libsecret-1.so:security/libsecret \
+ libnss3.so:security/nss \
+ libexpat.so:textproc/expat2 \
+ libxkbcommon.so:x11/libxkbcommon \
+ libxshmfence.so:x11/libxshmfence \
+ libfontconfig.so:x11-fonts/fontconfig
+RUN_DEPENDS= xdg-open:devel/xdg-utils
+TEST_DEPENDS= git:devel/git \
+ ${PYTHON_PKGNAMEPREFIX}python-dbusmock>0:devel/py-python-dbusmock@${PY_FLAVOR} \
+ npm-node16>0:www/npm-node16
+
+USES= bison cpe dos2unix gettext-tools gl gnome iconv jpeg \
+ localbase:ldflags ninja pkgconfig python:build,test shebangfix \
+ tar:xz xorg
+CPE_VENDOR= electronjs
+DOS2UNIX_FILES= third_party/vulkan_memory_allocator/include/vk_mem_alloc.h
+USE_GITHUB= yes
+GH_TAGNAME= ${DISTVERSIONPREFIX}${ELECTRON_VER}
+GH_TUPLE= nodejs:node:v${NODE_VER}:node \
+ nodejs:nan:${NAN_VER}:nan \
+ Squirrel:Squirrel.Mac:${SQUIRREL_MAC_VER}:squirrel_mac \
+ ReactiveCocoa:ReactiveObjC:${REACTIVEOBJC_VER}:reactiveobjc \
+ Mantle:Mantle:${MANTLE_VER}:mantle
+USE_GL= gbm gl glesv2
+USE_GNOME= atk cairo gdkpixbuf2 gtk30 libxml2 libxslt pango
+USE_LDCONFIG= ${DATADIR}
+USE_XORG= x11 xcb xcomposite xcursor xdamage xext xfixes xi xrandr \
+ xrender xscrnsaver xtst
+
+SHEBANG_FILES= buildtools/linux64/clang-format
+
+MAKE_ARGS= -C out/${BUILDTYPE}
+MAKE_ENV+= C_INCLUDE_PATH=${LOCALBASE}/include \
+ CPLUS_INCLUDE_PATH=${LOCALBASE}/include
+ALL_TARGET= electron third_party/electron_node:headers
+POST_BUILD_TARGETS= licenses version
+POST_BUILD_DIST_TARGETS= electron_dist_zip electron_chromedriver_zip \
+ electron_mksnapshot_zip
+
+DATADIR= ${PREFIX}/share/${PORTNAME}${PKGNAMESUFFIX}
+BINARY_ALIAS= python3=${PYTHON_CMD}
+
+NO_WRKSUBDIR= yes
+WRKSRC_SUBDIR= src
+
+PLIST_SUB= ELECTRON_VER=${ELECTRON_VER} \
+ ELECTRON_VER_MAJOR=${ELECTRON_VER_MAJOR}
+
+OPTIONS_DEFINE= CUPS DEBUG DIST DRIVER KERBEROS LTO
+OPTIONS_DEFAULT= CUPS DRIVER KERBEROS ALSA
+OPTIONS_GROUP= AUDIO
+OPTIONS_GROUP_AUDIO= ALSA PULSEAUDIO SNDIO
+OPTIONS_SUB= yes
+
+DIST_DESC= Build distribution zip files
+DRIVER_DESC= Install chromedriver
+
+ALSA_LIB_DEPENDS= libasound.so:audio/alsa-lib
+ALSA_RUN_DEPENDS= ${LOCALBASE}/lib/alsa-lib/libasound_module_pcm_oss.so:audio/alsa-plugins
+ALSA_VARS= GN_ARGS+=use_alsa=true
+ALSA_VARS_OFF= GN_ARGS+=use_alsa=false
+CUPS_LIB_DEPENDS= libcups.so:print/cups
+CUPS_VARS= GN_ARGS+=use_cups=true
+CUPS_VARS_OFF= GN_ARGS+=use_cups=false
+DEBUG_VARS= BUILDTYPE=Debug \
+ GN_FILE=testing.gn \
+ GN_ARGS+=is_debug=true \
+ GN_BOOTSTRAP_FLAGS+=--debug
+DEBUG_VARS_OFF= BUILDTYPE=Release \
+ GN_FILE=release.gn \
+ GN_ARGS+=blink_symbol_level=0 \
+ GN_ARGS+=is_debug=false \
+ GN_ARGS+=symbol_level=0
+DIST_IMPLIES= DRIVER
+DRIVER_ALL_TARGET= chromedriver
+KERBEROS_VARS= GN_ARGS+=use_kerberos=true
+KERBEROS_VARS_OFF= GN_ARGS+=use_kerberos=false
+LTO_VARS= GN_ARGS+=use_thin_lto=true \
+ GN_ARGS+=thin_lto_enable_optimizations=true
+LTO_VARS_OFF= GN_ARGS+=use_thin_lto=false
+PULSEAUDIO_LIB_DEPENDS= libpulse.so:audio/pulseaudio
+PULSEAUDIO_VARS= GN_ARGS+=use_pulseaudio=true
+PULSEAUDIO_VARS_OFF= GN_ARGS+=use_pulseaudio=false
+# With SNDIO=on we exclude audio_manager_linux from the build (see
+# media/audio/BUILD.gn) and use audio_manager_openbsd which does not
+# support falling back to ALSA or PulseAudio.
+SNDIO_PREVENTS= ALSA PULSEAUDIO
+SNDIO_LIB_DEPENDS= libsndio.so:audio/sndio
+SNDIO_VARS= GN_ARGS+=use_sndio=true
+SNDIO_VARS_OFF= GN_ARGS+=use_sndio=false
+
+# See ${WRKSRC}/electron/DEPS for CHROMIUM_VER
+CHROMIUM_VER= 98.0.4758.141
+# See ${WRKSRC}/third_party/node/node_modules.tar.gz.sha1 for CHROMIUM_NODE_MODULES_HASH
+CHROMIUM_NODE_MODULES_HASH= 31d731fb82ea62a6dae24d2bdfe6f0aa6164b949
+# See ${WRKSRC}/third_party/test_fonts/test_fonts.tar.gz.sha1 for CHROMIUM_TEST_FONTS_HASH
+CHROMIUM_TEST_FONTS_HASH= cd96fc55dc243f6c6f4cb63ad117cad6cd48dceb
+# See ${WRKSRC}/electron/DEPS for NODE_VER
+NODE_VER= 16.13.0
+# See ${WRKSRC}/electron/DEPS for NAN_VER
+NAN_VER= 65b32af46e9d7fab2e4ff657751205b3865f4920
+# See ${WRKSRC}/electron/DEPS for SQUIRREL_MAC_VER
+SQUIRREL_MAC_VER= 0e5d146ba13101a1302d59ea6e6e0b3cace4ae38
+# See ${WRKSRC}/electron/DEPS for REACTIVEOBJC_VER
+REACTIVEOBJC_VER= 74ab5baccc6f7202c8ac69a8d1e152c29dc1ea76
+# See ${WRKSRC}/electron/DEPS for MANTLE_VER
+MANTLE_VER= 78d3966b3c331292ea29ec38661b25df0a245948
+
+YARN_TIMESTAMP= 1652331828
+
+GN_ARGS+= clang_use_chrome_plugins=false \
+ enable_hangout_services_extension=true \
+ enable_js_type_check=false \
+ enable_nacl=false \
+ enable_one_click_signin=true \
+ enable_remoting=false \
+ enable_wmax_tokens=false \
+ fatal_linker_warnings=false \
+ is_clang=true \
+ optimize_webui=false \
+ toolkit_views=true \
+ treat_warnings_as_errors=false \
+ use_allocator="none" \
+ use_allocator_shim=false \
+ use_aura=true \
+ use_custom_libcxx=false \
+ use_gnome_keyring=false \
+ use_lld=true \
+ use_sysroot=false \
+ use_system_freetype=false \
+ use_system_harfbuzz=true \
+ use_system_libjpeg=true \
+ use_udev=false \
+ extra_cxxflags="${CXXFLAGS}" \
+ extra_ldflags="${LDFLAGS}"
+GN_BOOTSTRAP_FLAGS= --no-clean --no-rebuild --skip-generate-buildfiles
+
+.include "Makefile.version"
+.include <bsd.port.pre.mk>
+
+.if ${ARCH} == "amd64"
+PLIST_SUB+= AMD64=""
+.else
+PLIST_SUB+= AMD64="@comment "
+.endif
+
+.if ${ARCH} == "i386"
+PLIST_SUB+= I386=""
+.else
+PLIST_SUB+= I386="@comment "
+.endif
+
+pre-fetch:
+ @${MKDIR} ${DISTDIR}/${DIST_SUBDIR}
+ if [ ! -f ${DISTDIR}/${DIST_SUBDIR}/electron-yarn-cache-${ELECTRON_VER}${EXTRACT_SUFX} ]; \
+ then ${MKDIR} ${WRKDIR}; \
+ ${ECHO_CMD} 'yarn-offline-mirror "./yarn-offline-cache"' >> \
+ ${WRKDIR}/.yarnrc; \
+ ${CP} ${FILESDIR}/package.json ${FILESDIR}/yarn.lock ${WRKDIR}; \
+ cd ${WRKDIR} && ${SETENV} HOME=${WRKDIR} XDG_CACHE_HOME=${WRKDIR}/.cache \
+ yarn --frozen-lockfile --ignore-scripts; \
+ ${MTREE_CMD} -cbnSp yarn-offline-cache | ${MTREE_CMD} -C | ${SED} \
+ -e 's:time=[0-9.]*:time=${YARN_TIMESTAMP}.000000000:' \
+ -e 's:\([gu]id\)=[0-9]*:\1=0:g' \
+ -e 's:flags=.*:flags=none:' \
+ -e 's:^\.:./yarn-offline-cache:' > yarn-offline-cache.mtree; \
+ ${TAR} cJf ${DISTDIR}/${DIST_SUBDIR}/electron-yarn-cache-${ELECTRON_VER}${EXTRACT_SUFX} \
+ @yarn-offline-cache.mtree; \
+ ${RM} -r ${WRKDIR}; \
+ fi
+
+post-extract:
+# Move extracted sources to appropriate locations
+ ${MV} ${WRKDIR}/${PORTNAME}-${ELECTRON_VER}/chromium-${CHROMIUM_VER} ${WRKSRC}
+ ${MV} ${WRKDIR}/${PORTNAME}-${ELECTRON_VER}/${PORTNAME}-${ELECTRON_VER} ${WRKSRC}/electron
+ ${MV} ${WRKDIR}/${PORTNAME}-${ELECTRON_VER}/${GH_PROJECT_nan}-${NAN_VER} \
+ ${WRKSRC}/third_party/nan
+ ${MV} ${WRKDIR}/${PORTNAME}-${ELECTRON_VER}/${GH_PROJECT_node}-${NODE_VER} \
+ ${WRKSRC}/third_party/electron_node
+ ${MV} ${WRKDIR}/${PORTNAME}-${ELECTRON_VER}/${GH_PROJECT_squirrel_mac}-${SQUIRREL_MAC_VER} \
+ ${WRKSRC}/third_party/squirrel.mac
+ ${MKDIR} ${WRKSRC}/third_party/squirrel.mac/vendor
+ ${MV} ${WRKDIR}/${PORTNAME}-${ELECTRON_VER}/${GH_PROJECT_reactiveobjc}-${REACTIVEOBJC_VER} \
+ ${WRKSRC}/third_party/squirrel.mac/vendor/ReactiveObjC
+ ${MV} ${WRKDIR}/${PORTNAME}-${ELECTRON_VER}/${GH_PROJECT_mantle}-${MANTLE_VER} \
+ ${WRKSRC}/third_party/squirrel.mac/vendor/Mantle
+ ${MV} ${WRKDIR}/${PORTNAME}-${ELECTRON_VER}/node_modules ${WRKSRC}/third_party/node
+ ${MV} ${WRKDIR}/${PORTNAME}-${ELECTRON_VER}/test_fonts ${WRKSRC}/third_party/test_fonts
+# Install node modules for electron
+ ${MV} ${WRKDIR}/${PORTNAME}-${ELECTRON_VER}/yarn-offline-cache ${WRKDIR}
+ ${ECHO_CMD} 'yarn-offline-mirror "../../../yarn-offline-cache"' >> ${WRKSRC}/electron/.yarnrc
+ ${MV} ${WRKSRC}/electron/package.json ${WRKSRC}/electron/package.json.bak
+ ${CP} ${FILESDIR}/package.json ${WRKSRC}/electron
+ cd ${WRKSRC}/electron && \
+ ${SETENV} HOME=${WRKDIR} XDG_CACHE_HOME=${WRKDIR}/.cache yarn --frozen-lockfile --offline
+
+pre-patch:
+ ${SH} ${FILESDIR}/apply-electron-patches.sh ${WRKSRC}
+ # ${FIND} ${WRKSRC} -type f -name '*.orig' -print -delete
+ # ${FIND} ${WRKSRC} -type f -name '*~' -print -delete
+
+pre-configure:
+# We used to remove bundled libraries to be sure that chromium uses
+# system libraries and not shipped ones.
+# cd ${WRKSRC} && ${PYTHON_CMD} \
+#./build/linux/unbundle/remove_bundled_libraries.py [list of preserved]
+ cd ${WRKSRC} && ${SETENV} ${CONFIGURE_ENV} ${PYTHON_CMD} \
+ ./build/linux/unbundle/replace_gn_files.py --system-libraries \
+ flac fontconfig freetype harfbuzz-ng libdrm libpng libusb \
+ libwebp libxml libxslt openh264 opus snappy || ${FALSE}
+# Chromium uses an unreleased version of FFmpeg, so configure it
+.for brand in Chrome Chromium
+ ${CP} -r \
+ ${WRKSRC}/third_party/ffmpeg/chromium/config/${brand}/linux/ \
+ ${WRKSRC}/third_party/ffmpeg/chromium/config/${brand}/freebsd
+.endfor
+
+do-configure:
+# GN generator bootstrapping and generating ninja files
+ cd ${WRKSRC} && ${SETENV} ${CONFIGURE_ENV} CC=${CC} CXX=${CXX} LD=${CXX} \
+ READELF=${READELF} AR=${AR} NM=${NM} ${PYTHON_CMD} \
+ ./tools/gn/bootstrap/bootstrap.py ${GN_BOOTSTRAP_FLAGS}
+ cd ${WRKSRC} && ${SETENV} ${CONFIGURE_ENV} ./out/${BUILDTYPE}/gn gen out/${BUILDTYPE} \
+ --args='import("//electron/build/args/${GN_FILE}") ${GN_ARGS}'
+# Setup nodejs dependency
+ ${MKDIR} ${WRKSRC}/third_party/node/freebsd/node-freebsd/bin
+ ${LN} -sf ${LOCALBASE}/bin/node ${WRKSRC}/third_party/node/freebsd/node-freebsd/bin/node
+# Setup buildtools/freebsd
+ ${MKDIR} ${WRKSRC}/buildtools/freebsd
+ ${LN} -sf ${WRKSRC}/buildtools/linux64/clang-format ${WRKSRC}/buildtools/freebsd
+ ${LN} -sf ${WRKSRC}/out/${BUILDTYPE}/gn ${WRKSRC}/buildtools/freebsd
+ ${LN} -sf /usr/bin/strip ${WRKSRC}/buildtools/freebsd/strip
+
+post-build:
+ cd ${WRKSRC} && ${SETENV} ${MAKE_ENV} \
+ ${MAKE_CMD} ${MAKE_ARGS} ${POST_BUILD_TARGETS}
+
+post-build-DIST-on:
+ cd ${WRKSRC} && ${SETENV} ${MAKE_ENV} \
+ ${MAKE_CMD} ${MAKE_ARGS} ${POST_BUILD_DIST_TARGETS}
+ cd ${WRKSRC}/out/${BUILDTYPE} && \
+ ${CP} chromedriver.zip chromedriver-v${ELECTRON_VER}-freebsd-${ARCH:S/amd64/x64/:S/i386/ia32/}.zip && \
+ ${CP} dist.zip electron-v${ELECTRON_VER}-freebsd-${ARCH:S/amd64/x64/:S/i386/ia32/}.zip && \
+ ${CP} mksnapshot.zip mksnapshot-v${ELECTRON_VER}-freebsd-${ARCH:S/amd64/x64/:S/i386/ia32/}.zip && \
+ ${SHA256} -r *-v${ELECTRON_VER}-freebsd-*.zip | ${SED} -e 's/ / */' > SHASUMS256.txt
+
+do-install:
+ ${MKDIR} ${STAGEDIR}${DATADIR}
+.for f in electron mksnapshot v8_context_snapshot_generator
+ ${INSTALL_PROGRAM} ${WRKSRC}/out/${BUILDTYPE}/${f} ${STAGEDIR}${DATADIR}
+.endfor
+.for f in libEGL.so libGLESv2.so libffmpeg.so libvk_swiftshader.so libvulkan.so.1
+ ${INSTALL_LIB} ${WRKSRC}/out/${BUILDTYPE}/${f} ${STAGEDIR}${DATADIR}
+.endfor
+ ${MKDIR} ${STAGEDIR}${DATADIR}/swiftshader
+.for f in libEGL.so libGLESv2.so
+ ${INSTALL_LIB} ${WRKSRC}/out/${BUILDTYPE}/swiftshader/${f} ${STAGEDIR}${DATADIR}/swiftshader
+.endfor
+.for f in LICENSE LICENSES.chromium.html icudtl.dat snapshot_blob.bin v8_context_snapshot.bin version vk_swiftshader_icd.json
+ ${INSTALL_DATA} ${WRKSRC}/out/${BUILDTYPE}/${f} ${STAGEDIR}${DATADIR}
+.endfor
+.for f in chrome_100_percent.pak chrome_200_percent.pak resources.pak
+ ${INSTALL_DATA} ${WRKSRC}/out/${BUILDTYPE}/${f} ${STAGEDIR}${DATADIR}
+.endfor
+ ${MKDIR} ${STAGEDIR}${DATADIR}/locales
+ ${INSTALL_DATA} ${WRKSRC}/out/${BUILDTYPE}/locales/*.pak ${STAGEDIR}${DATADIR}/locales
+ ${MKDIR} ${STAGEDIR}${DATADIR}/resources
+.for f in default_app.asar
+ ${INSTALL_DATA} ${WRKSRC}/out/${BUILDTYPE}/resources/${f} ${STAGEDIR}${DATADIR}/resources
+.endfor
+ cd ${WRKSRC}/out/${BUILDTYPE}/gen && ${COPYTREE_SHARE} node_headers ${STAGEDIR}${DATADIR}
+ cd ${WRKSRC}/out/${BUILDTYPE} && ${COPYTREE_SHARE} gen/electron/buildflags ${STAGEDIR}${DATADIR}
+ cd ${WRKSRC}/out/${BUILDTYPE} && ${COPYTREE_SHARE} gen/v8/embedded.S ${STAGEDIR}${DATADIR}
+ ${RLN} ${STAGEDIR}${DATADIR}/electron ${STAGEDIR}${PREFIX}/bin/electron${PKGNAMESUFFIX}
+
+post-install-DIST-on:
+ ${MKDIR} ${STAGEDIR}${DATADIR}/releases
+ ${INSTALL_DATA} ${WRKSRC}/out/${BUILDTYPE}/SHASUMS256.txt ${STAGEDIR}${DATADIR}/releases
+ ${INSTALL_DATA} ${WRKSRC}/out/${BUILDTYPE}/*-v${ELECTRON_VER}-freebsd-*.zip ${STAGEDIR}${DATADIR}/releases
+
+post-install-DRIVER-on:
+ ${INSTALL_PROGRAM} ${WRKSRC}/out/${BUILDTYPE}/chromedriver.unstripped \
+ ${STAGEDIR}${DATADIR}/chromedriver
+
+do-test:
+# Note 1: "npm install" will run before actual tests are executed
+# Note 2: Xvfb or something similar is necessary for headless testing
+ cd ${WRKSRC}/electron && \
+ ${SETENV} ${TEST_ENV} ELECTRON_OUT_DIR=${BUILDTYPE} LOCAL_GIT_DIRECTORY=${LOCALBASE} \
+ npm run test -- --ci
+
+.include <bsd.port.post.mk>
diff --git a/devel/electron17/Makefile.version b/devel/electron17/Makefile.version
new file mode 100644
index 000000000000..65955e632d55
--- /dev/null
+++ b/devel/electron17/Makefile.version
@@ -0,0 +1,2 @@
+ELECTRON_VER= 17.4.4
+ELECTRON_VER_MAJOR= ${ELECTRON_VER:C/\..*//}
diff --git a/devel/electron17/distinfo b/devel/electron17/distinfo
new file mode 100644
index 000000000000..8fba0c897a57
--- /dev/null
+++ b/devel/electron17/distinfo
@@ -0,0 +1,21 @@
+TIMESTAMP = 1652335688
+SHA256 (electron/chromium-98.0.4758.141.tar.xz) = 0b712acb66c69b78b011c19ba07b2696ee36335e9712066ff5d74aedeb8fbb16
+SIZE (electron/chromium-98.0.4758.141.tar.xz) = 1115175012
+SHA256 (electron/31d731fb82ea62a6dae24d2bdfe6f0aa6164b949) = fc35bf178fb99ae9fca39191d7eb054a985824b8bf16f588ed6c03edfa96d4f9
+SIZE (electron/31d731fb82ea62a6dae24d2bdfe6f0aa6164b949) = 11461198
+SHA256 (electron/cd96fc55dc243f6c6f4cb63ad117cad6cd48dceb) = ec973eccd669d417fbf2d0a4dac730744a3174268ff062db5451b55c82bc3492
+SIZE (electron/cd96fc55dc243f6c6f4cb63ad117cad6cd48dceb) = 26759650
+SHA256 (electron/electron-yarn-cache-17.4.4.tar.xz) = 5b0e706093113582548130b1597ee9d895582fe7ab94e42a1d8a5a867dcc68b1
+SIZE (electron/electron-yarn-cache-17.4.4.tar.xz) = 36633704
+SHA256 (electron/electron-electron-v17.4.4_GH0.tar.gz) = 9ad8891cc131f3016f37c793ea2fe3158f52ba34642b1fce615547601113d114
+SIZE (electron/electron-electron-v17.4.4_GH0.tar.gz) = 10221111
+SHA256 (electron/nodejs-node-v16.13.0_GH0.tar.gz) = f0327e99f730bf2506a1f13dbd452ec80b33667a7ce1c77a2dacd6babc8643c7
+SIZE (electron/nodejs-node-v16.13.0_GH0.tar.gz) = 87424981
+SHA256 (electron/nodejs-nan-65b32af46e9d7fab2e4ff657751205b3865f4920_GH0.tar.gz) = a649b75bfa9c1a0254c73d022c6e98924b9471f593bcc83832daaf68da4cae8d
+SIZE (electron/nodejs-nan-65b32af46e9d7fab2e4ff657751205b3865f4920_GH0.tar.gz) = 178733
+SHA256 (electron/Squirrel-Squirrel.Mac-0e5d146ba13101a1302d59ea6e6e0b3cace4ae38_GH0.tar.gz) = f4ebb40a8d85dbb7ef02aa0571b2f8e22182c6d73b6992484a53c90047779d01
+SIZE (electron/Squirrel-Squirrel.Mac-0e5d146ba13101a1302d59ea6e6e0b3cace4ae38_GH0.tar.gz) = 2112918
+SHA256 (electron/ReactiveCocoa-ReactiveObjC-74ab5baccc6f7202c8ac69a8d1e152c29dc1ea76_GH0.tar.gz) = 88e65f116c7a06fccedb43970fba63080a57a4e5dc29147d2cdfe1ee58dd0546
+SIZE (electron/ReactiveCocoa-ReactiveObjC-74ab5baccc6f7202c8ac69a8d1e152c29dc1ea76_GH0.tar.gz) = 1136238
+SHA256 (electron/Mantle-Mantle-78d3966b3c331292ea29ec38661b25df0a245948_GH0.tar.gz) = a365df6d83e0be3cc000b70bd39734d80c28f0d9983ebe44698337a2ca464bb1
+SIZE (electron/Mantle-Mantle-78d3966b3c331292ea29ec38661b25df0a245948_GH0.tar.gz) = 62962
diff --git a/devel/electron17/files/apply-electron-patches.sh b/devel/electron17/files/apply-electron-patches.sh
new file mode 100644
index 000000000000..9d974b536054
--- /dev/null
+++ b/devel/electron17/files/apply-electron-patches.sh
@@ -0,0 +1,26 @@
+#! /bin/sh
+
+PATH=/bin:/usr/bin:/usr/local/bin
+
+GIT_CMD="git"
+PATCH_CMD="${GIT_CMD} apply"
+#PATCH_FLAGS="--numstat --check" # for debugging
+PATCH_FLAGS="--verbose --reject"
+
+WRKSRC=$1
+PATCH_CONF=${WRKSRC}/electron/patches/config.json
+
+${GIT_CMD} status "${WRKSRC}" > /dev/null 2>&1 && IS_GIT_REPO=1
+
+PATCHD_REPOD_PAIRS=$(sed -e '1d; $d; /^$/d; s/[",]//g; s/: */:/' "${PATCH_CONF}")
+for prp in ${PATCHD_REPOD_PAIRS}; do
+ pd=$(echo "${prp}" | awk -F: '{print $1}' | sed -e 's/src/./')
+ rd=$(echo "${prp}" | awk -F: '{print $2}' | sed -e 's/src/./')
+ (cd "${WRKSRC}/${rd}" && \
+ if [ -n "${IS_GIT_REPO}" ]; then
+ PATCH_FLAGS="${PATCH_FLAGS} --directory=$(${GIT_CMD} rev-parse --show-prefix)"
+ fi && \
+ while read -r p; do
+ ${PATCH_CMD} ${PATCH_FLAGS} "${WRKSRC}/${pd}/${p}"
+ done < "${WRKSRC}/${pd}/.patches")
+done
diff --git a/devel/electron17/files/package.json b/devel/electron17/files/package.json
new file mode 100644
index 000000000000..4ae7b6e9676c
--- /dev/null
+++ b/devel/electron17/files/package.json
@@ -0,0 +1,144 @@
+{
+ "name": "electron",
+ "version": "17.4.4",
+ "repository": "https://github.com/electron/electron",
+ "description": "Build cross platform desktop apps with JavaScript, HTML, and CSS",
+ "devDependencies": {
+ "@azure/storage-blob": "^12.9.0",
+ "@electron/docs-parser": "^0.12.3",
+ "@electron/typescript-definitions": "^8.9.5",
+ "@octokit/auth-app": "^2.10.0",
+ "@octokit/rest": "^18.0.3",
+ "@primer/octicons": "^10.0.0",
+ "@types/basic-auth": "^1.1.3",
+ "@types/busboy": "^0.2.3",
+ "@types/chai": "^4.2.12",
+ "@types/chai-as-promised": "^7.1.3",
+ "@types/dirty-chai": "^2.0.2",
+ "@types/express": "^4.17.7",
+ "@types/fs-extra": "^9.0.1",
+ "@types/klaw": "^3.0.1",
+ "@types/minimist": "^1.2.0",
+ "@types/mocha": "^7.0.2",
+ "@types/node": "^14.6.2",
+ "@types/semver": "^7.3.3",
+ "@types/send": "^0.14.5",
+ "@types/split": "^1.0.0",
+ "@types/stream-json": "^1.5.1",
+ "@types/temp": "^0.8.34",
+ "@types/uuid": "^3.4.6",
+ "@types/webpack": "^4.41.21",
+ "@types/webpack-env": "^1.15.2",
+ "@typescript-eslint/eslint-plugin": "^4.4.1",
+ "@typescript-eslint/parser": "^4.4.1",
+ "asar": "^3.1.0",
+ "aws-sdk": "^2.727.1",
+ "check-for-leaks": "^1.2.1",
+ "colors": "1.4.0",
+ "dotenv-safe": "^4.0.4",
+ "dugite": "^1.103.0",
+ "eslint": "^7.4.0",
+ "eslint-config-standard": "^14.1.1",
+ "eslint-plugin-import": "^2.22.0",
+ "eslint-plugin-mocha": "^7.0.1",
+ "eslint-plugin-node": "^11.1.0",
+ "eslint-plugin-standard": "^4.0.1",
+ "eslint-plugin-typescript": "^0.14.0",
+ "express": "^4.16.4",
+ "folder-hash": "^2.1.1",
+ "fs-extra": "^9.0.1",
+ "got": "^6.3.0",
+ "husky": "^6.0.0",
+ "klaw": "^3.0.0",
+ "lint": "^1.1.2",
+ "lint-staged": "^10.2.11",
+ "markdownlint": "^0.21.1",
+ "markdownlint-cli": "^0.25.0",
+ "minimist": "^1.2.5",
+ "null-loader": "^4.0.0",
+ "pre-flight": "^1.1.0",
+ "remark-cli": "^10.0.0",
+ "remark-preset-lint-markdown-style-guide": "^4.0.0",
+ "semver": "^5.6.0",
+ "shx": "^0.3.2",
+ "standard-markdown": "^6.0.0",
+ "stream-json": "^1.7.1",
+ "tap-xunit": "^2.4.1",
+ "temp": "^0.8.3",
+ "timers-browserify": "1.4.2",
+ "ts-loader": "^8.0.2",
+ "ts-node": "6.2.0",
+ "typescript": "^4.1.3",
+ "webpack": "^4.43.0",
+ "webpack-cli": "^3.3.12",
+ "wrapper-webpack-plugin": "^2.1.0"
+ },
+ "private": true,
+ "scripts": {
+ "asar": "asar",
+ "generate-version-json": "node script/generate-version-json.js",
+ "lint": "node ./script/lint.js && npm run lint:clang-format && npm run lint:docs",
+ "lint:js": "node ./script/lint.js --js",
+ "lint:clang-format": "python3 script/run-clang-format.py -r -c shell/ || (echo \"\\nCode not formatted correctly.\" && exit 1)",
+ "lint:clang-tidy": "ts-node ./script/run-clang-tidy.ts",
+ "lint:cpp": "node ./script/lint.js --cc",
+ "lint:objc": "node ./script/lint.js --objc",
+ "lint:py": "node ./script/lint.js --py",
+ "lint:gn": "node ./script/lint.js --gn",
+ "lint:docs": "remark docs -qf && npm run lint:js-in-markdown && npm run create-typescript-definitions && npm run lint:docs-relative-links && npm run lint:markdownlint",
+ "lint:docs-relative-links": "python3 ./script/check-relative-doc-links.py",
+ "lint:markdownlint": "markdownlint \"*.md\" \"docs/**/*.md\"",
+ "lint:js-in-markdown": "standard-markdown docs",
+ "create-api-json": "electron-docs-parser --dir=./",
+ "create-typescript-definitions": "npm run create-api-json && electron-typescript-definitions --api=electron-api.json && node spec/ts-smoke/runner.js",
+ "gn-typescript-definitions": "npm run create-typescript-definitions && shx cp electron.d.ts",
+ "pre-flight": "pre-flight",
+ "gn-check": "node ./script/gn-check.js",
+ "precommit": "lint-staged",
+ "preinstall": "node -e 'process.exit(0)'",
+ "prepack": "check-for-leaks",
+ "repl": "node ./script/start.js --interactive",
+ "start": "node ./script/start.js",
+ "test": "node ./script/spec-runner.js",
+ "tsc": "tsc",
+ "webpack": "webpack"
+ },
+ "license": "MIT",
+ "author": "Electron Community",
+ "keywords": [
+ "electron"
+ ],
+ "lint-staged": {
+ "*.{js,ts}": [
+ "node script/lint.js --js --fix --only --"
+ ],
+ "*.{js,ts,d.ts}": [
+ "ts-node script/gen-filenames.ts"
+ ],
+ "*.{cc,mm,c,h}": [
+ "python3 script/run-clang-format.py -r -c --fix"
+ ],
+ "*.md": [
+ "npm run lint:docs"
+ ],
+ "*.{gn,gni}": [
+ "npm run gn-check",
+ "python3 script/run-gn-format.py"
+ ],
+ "*.py": [
+ "node script/lint.js --py --fix --only --"
+ ],
+ "docs/api/**/*.md": [
+ "ts-node script/gen-filenames.ts",
+ "markdownlint --config .markdownlint.autofix.json --fix",
+ "git add filenames.auto.gni"
+ ],
+ "{*.patch,.patches}": [
+ "node script/lint.js --patches --only --",
+ "ts-node script/check-patch-diff.ts"
+ ],
+ "DEPS": [
+ "node script/gen-hunspell-filenames.js"
+ ]
+ }
+}
diff --git a/devel/electron17/files/patch-BUILD.gn b/devel/electron17/files/patch-BUILD.gn
new file mode 100644
index 000000000000..185b8462e91a
--- /dev/null
+++ b/devel/electron17/files/patch-BUILD.gn
@@ -0,0 +1,72 @@
+--- BUILD.gn.orig 2022-05-11 07:16:44 UTC
++++ BUILD.gn
+@@ -52,7 +52,7 @@ declare_args() {
+ root_extra_deps = []
+ }
+
+-if (is_official_build) {
++if (is_official_build && !is_bsd) {
+ # An official (maximally optimized!) component (optimized for build times)
+ # build doesn't make sense and usually doesn't work.
+ assert(!is_component_build)
+@@ -454,7 +454,7 @@ group("gn_all") {
+ ]
+ }
+
+- if (is_linux || is_chromeos || is_android) {
++ if ((is_linux && !is_bsd) || is_chromeos || is_android) {
+ deps += [
+ "//third_party/breakpad:breakpad_unittests",
+ "//third_party/breakpad:core-2-minidump",
+@@ -638,6 +638,15 @@ group("gn_all") {
+ }
+ }
+
++ if (is_bsd) {
++ deps -= [
++ "//third_party/breakpad:dump_syms($host_toolchain)",
++ "//third_party/breakpad:microdump_stackwalk($host_toolchain)",
++ "//third_party/breakpad:minidump_dump($host_toolchain)",
++ "//third_party/breakpad:minidump_stackwalk($host_toolchain)",
++ ]
++ }
++
+ if (is_mac) {
+ deps += [
+ "//third_party/breakpad:crash_inspector",
+@@ -688,7 +697,7 @@ group("gn_all") {
+ host_os == "win") {
+ deps += [ "//chrome/test/mini_installer:mini_installer_tests" ]
+ }
+- } else if (!is_android && !is_ios && !is_fuchsia) {
++ } else if (!is_android && !is_ios && !is_fuchsia && !is_bsd) {
+ deps += [ "//third_party/breakpad:symupload($host_toolchain)" ]
+ }
+
+@@ -1139,7 +1148,7 @@ if (!is_ios) {
+ data_deps += [ "//content/web_test:web_test_common_mojom_js_data_deps" ]
+ }
+
+- if (!is_win && !is_android) {
++ if (!is_win && !is_android && !is_bsd) {
+ data_deps +=
+ [ "//third_party/breakpad:minidump_stackwalk($host_toolchain)" ]
+ }
+@@ -1148,7 +1157,7 @@ if (!is_ios) {
+ data_deps += [ "//third_party/breakpad:dump_syms($host_toolchain)" ]
+ }
+
+- if (is_linux || is_chromeos) {
++ if ((is_linux && !is_bsd) || is_chromeos) {
+ data_deps += [ "//third_party/breakpad:dump_syms($host_toolchain)" ]
+ }
+
+@@ -1525,7 +1534,7 @@ group("chromium_builder_perf") {
+
+ if (is_win) {
+ data_deps += [ "//chrome/installer/mini_installer:mini_installer" ]
+- } else {
++ } else if (!is_bsd) {
+ data_deps +=
+ [ "//third_party/breakpad:minidump_stackwalk($host_toolchain)" ]
+ }
diff --git a/devel/electron17/files/patch-apps_ui_views_app__window__frame__view.cc b/devel/electron17/files/patch-apps_ui_views_app__window__frame__view.cc
new file mode 100644
index 000000000000..20715f229a14
--- /dev/null
+++ b/devel/electron17/files/patch-apps_ui_views_app__window__frame__view.cc
@@ -0,0 +1,11 @@
+--- apps/ui/views/app_window_frame_view.cc.orig 2022-05-11 07:16:44 UTC
++++ apps/ui/views/app_window_frame_view.cc
+@@ -137,7 +137,7 @@ gfx::Rect AppWindowFrameView::GetWindowBoundsForClient
+ gfx::Rect window_bounds = client_bounds;
+ // TODO(crbug.com/1052397): Revisit once build flag switch of lacros-chrome is
+ // complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ // Get the difference between the widget's client area bounds and window
+ // bounds, and grow |window_bounds| by that amount.
+ gfx::Insets native_frame_insets =
diff --git a/devel/electron17/files/patch-ash_display_mirror__window__controller.cc b/devel/electron17/files/patch-ash_display_mirror__window__controller.cc
new file mode 100644
index 000000000000..2646d598515d
--- /dev/null
+++ b/devel/electron17/files/patch-ash_display_mirror__window__controller.cc
@@ -0,0 +1,14 @@
+--- ash/display/mirror_window_controller.cc.orig 2022-05-11 07:16:45 UTC
++++ ash/display/mirror_window_controller.cc
+@@ -297,7 +297,11 @@ void MirrorWindowController::UpdateWindow(
+ return info.id() == iter->first;
+ }) == display_info_list.end()) {
+ CloseAndDeleteHost(iter->second, true);
++#if defined(__llvm__)
++ mirroring_host_info_map_.erase(iter++);
++#else
+ iter = mirroring_host_info_map_.erase(iter);
++#endif
+ } else {
+ ++iter;
+ }
diff --git a/devel/electron17/files/patch-base_BUILD.gn b/devel/electron17/files/patch-base_BUILD.gn
new file mode 100644
index 000000000000..1e9abe7e9960
--- /dev/null
+++ b/devel/electron17/files/patch-base_BUILD.gn
@@ -0,0 +1,102 @@
+--- base/BUILD.gn.orig 2022-05-11 07:16:46 UTC
++++ base/BUILD.gn
+@@ -975,7 +975,7 @@ component("base") {
+ "timer/hi_res_timer_manager_posix.cc",
+ ]
+
+- if (!is_nacl && !is_apple) {
++ if (!is_nacl && !is_apple && !is_bsd) {
+ sources += [
+ "cpu_affinity_posix.cc",
+ "cpu_affinity_posix.h",
+@@ -986,6 +986,12 @@ component("base") {
+ "profiler/thread_delegate_posix.h",
+ ]
+ }
++
++ if (is_bsd) {
++ sources += [
++ "profiler/stack_sampler_posix.cc",
++ ]
++ }
+ }
+
+ if (is_win) {
+@@ -1416,11 +1422,24 @@ component("base") {
+ # building inside the cros_sdk environment - use host_toolchain as a
+ # more robust check for this.
+ if (!use_sysroot &&
+- (is_android || ((is_linux || is_chromeos) && !is_chromecast)) &&
++ (is_android || ((is_linux || is_chromeos) && !is_chromecast && !is_bsd)) &&
+ host_toolchain != "//build/toolchain/cros:host") {
+ libs += [ "atomic" ]
+ }
+
++ # *BSD needs libkvm
++ if (is_bsd) {
++ libs += [ "kvm" ]
++ }
++
++ if (is_freebsd) {
++ libs += [
++ "iconv",
++ "execinfo",
++ "util",
++ ]
++ }
++
+ if (use_allocator_shim) {
+ sources += [
+ "allocator/allocator_shim.cc",
+@@ -1443,7 +1462,7 @@ component("base") {
+ "allocator/early_zone_registration_mac.h",
+ ]
+ }
+- if (is_chromeos || is_linux) {
++ if (is_chromeos || (is_linux && !is_bsd)) {
+ sources += [
+ "allocator/allocator_shim_override_cpp_symbols.h",
+ "allocator/allocator_shim_override_glibc_weak_symbols.h",
+@@ -2176,6 +2195,42 @@ component("base") {
+ "linux_util.h",
+ ]
+ }
++ }
++
++ if (is_bsd) {
++ sources -= [
++ "files/file_path_watcher_linux.cc",
++ "files/file_util_linux.cc",
++ "files/scoped_file_linux.cc",
++ "process/memory_linux.cc",
++ "process/process_linux.cc",
++ "system/sys_info_linux.cc",
++ "process/process_iterator_linux.cc",
++ "process/process_metrics_linux.cc",
++ "process/process_handle_linux.cc"
++ ]
++ sources += [
++ "process/memory_stubs.cc",
++ "files/file_path_watcher_kqueue.cc",
++ "files/file_path_watcher_kqueue.h",
++ "files/file_path_watcher_bsd.cc",
++ ]
++ }
++
++ if (is_openbsd) {
++ sources += [
++ "process/process_handle_openbsd.cc",
++ "process/process_iterator_openbsd.cc",
++ "process/process_metrics_openbsd.cc",
++ "system/sys_info_openbsd.cc",
++ ]
++ } else if (is_freebsd) {
++ sources += [
++ "process/process_handle_freebsd.cc",
++ "process/process_iterator_freebsd.cc",
++ "process/process_metrics_freebsd.cc",
++ "system/sys_info_freebsd.cc",
++ ]
+ }
+
+ # iOS
diff --git a/devel/electron17/files/patch-base_allocator_partition__allocator_address__space__randomization.h b/devel/electron17/files/patch-base_allocator_partition__allocator_address__space__randomization.h
new file mode 100644
index 000000000000..9f67f2be9f28
--- /dev/null
+++ b/devel/electron17/files/patch-base_allocator_partition__allocator_address__space__randomization.h
@@ -0,0 +1,11 @@
+--- base/allocator/partition_allocator/address_space_randomization.h.orig 2021-09-14 01:51:47 UTC
++++ base/allocator/partition_allocator/address_space_randomization.h
+@@ -36,7 +36,7 @@ AslrMask(uintptr_t bits) {
+
+ #if defined(ARCH_CPU_64_BITS)
+
+- #if defined(MEMORY_TOOL_REPLACES_ALLOCATOR)
++ #if defined(MEMORY_TOOL_REPLACES_ALLOCATOR) && !defined(OS_BSD)
+
+ // We shouldn't allocate system pages at all for sanitizer builds. However,
+ // we do, and if random hint addresses interfere with address ranges
diff --git a/devel/electron17/files/patch-base_allocator_partition__allocator_page__allocator.h b/devel/electron17/files/patch-base_allocator_partition__allocator_page__allocator.h
new file mode 100644
index 000000000000..e0615c2098e6
--- /dev/null
+++ b/devel/electron17/files/patch-base_allocator_partition__allocator_page__allocator.h
@@ -0,0 +1,11 @@
+--- base/allocator/partition_allocator/page_allocator.h.orig 2022-05-11 07:16:46 UTC
++++ base/allocator/partition_allocator/page_allocator.h
+@@ -170,7 +170,7 @@ BASE_EXPORT void DecommitAndZeroSystemPages(void* addr
+ // Whether decommitted memory is guaranteed to be zeroed when it is
+ // recommitted. Do not assume that this will not change over time.
+ constexpr BASE_EXPORT bool DecommittedMemoryIsAlwaysZeroed() {
+-#if defined(OS_APPLE)
++#if defined(OS_APPLE) || defined(OS_BSD)
+ return false;
+ #else
+ return true;
diff --git a/devel/electron17/files/patch-base_allocator_partition__allocator_page__allocator__internals__posix.h b/devel/electron17/files/patch-base_allocator_partition__allocator_page__allocator__internals__posix.h
new file mode 100644
index 000000000000..feba07ff7dd0
--- /dev/null
+++ b/devel/electron17/files/patch-base_allocator_partition__allocator_page__allocator__internals__posix.h
@@ -0,0 +1,16 @@
+--- base/allocator/partition_allocator/page_allocator_internals_posix.h.orig 2022-05-11 07:16:46 UTC
++++ base/allocator/partition_allocator/page_allocator_internals_posix.h
+@@ -339,8 +339,12 @@ bool TryRecommitSystemPagesInternal(
+ }
+
+ void DiscardSystemPagesInternal(void* address, size_t length) {
+-#if defined(OS_APPLE)
++#if defined(OS_APPLE) || defined(OS_BSD)
++#if defined(OS_BSD)
++ int ret = madvise(address, length, MADV_FREE);
++#else
+ int ret = madvise(address, length, MADV_FREE_REUSABLE);
++#endif
+ if (ret) {
+ // MADV_FREE_REUSABLE sometimes fails, so fall back to MADV_DONTNEED.
+ ret = madvise(address, length, MADV_DONTNEED);
diff --git a/devel/electron17/files/patch-base_allocator_partition__allocator_partition__alloc.cc b/devel/electron17/files/patch-base_allocator_partition__allocator_partition__alloc.cc
new file mode 100644
index 000000000000..bd01c9abe568
--- /dev/null
+++ b/devel/electron17/files/patch-base_allocator_partition__allocator_partition__alloc.cc
@@ -0,0 +1,15 @@
+--- base/allocator/partition_allocator/partition_alloc.cc.orig 2022-05-11 07:16:46 UTC
++++ base/allocator/partition_allocator/partition_alloc.cc
+@@ -56,7 +56,12 @@ void PartitionAllocGlobalInit(OomFunction on_out_of_me
+ "maximum direct mapped allocation");
+
+ // Check that some of our zanier calculations worked out as expected.
++#if defined(__i386__) && defined(OS_FREEBSD)
++ // alignof(std::max_align_t) is only 4 on FreeBSD/i386
++ static_assert(kSmallestBucket >= kAlignment, "generic smallest bucket");
++#else
+ static_assert(kSmallestBucket == kAlignment, "generic smallest bucket");
++#endif
+ static_assert(kMaxBucketed == 917504, "generic max bucketed");
+ STATIC_ASSERT_OR_PA_CHECK(
+ MaxSystemPagesPerRegularSlotSpan() <= 16,
diff --git a/devel/electron17/files/patch-base_allocator_partition__allocator_partition__alloc__config.h b/devel/electron17/files/patch-base_allocator_partition__allocator_partition__alloc__config.h
new file mode 100644
index 000000000000..8b267790ca98
--- /dev/null
+++ b/devel/electron17/files/patch-base_allocator_partition__allocator_partition__alloc__config.h
@@ -0,0 +1,11 @@
+--- base/allocator/partition_allocator/partition_alloc_config.h.orig 2022-05-11 07:16:46 UTC
++++ base/allocator/partition_allocator/partition_alloc_config.h
+@@ -59,7 +59,7 @@ static_assert(sizeof(void*) != 8, "");
+
+ // POSIX is not only UNIX, e.g. macOS and other OSes. We do use Linux-specific
+ // features such as futex(2).
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID) || defined(OS_BSD)
+ #define PA_HAS_LINUX_KERNEL
+ #endif
+
diff --git a/devel/electron17/files/patch-base_allocator_partition__allocator_partition__alloc__constants.h b/devel/electron17/files/patch-base_allocator_partition__allocator_partition__alloc__constants.h
new file mode 100644
index 000000000000..acdb2a3acaf2
--- /dev/null
+++ b/devel/electron17/files/patch-base_allocator_partition__allocator_partition__alloc__constants.h
@@ -0,0 +1,11 @@
+--- base/allocator/partition_allocator/partition_alloc_constants.h.orig 2022-05-11 07:16:46 UTC
++++ base/allocator/partition_allocator/partition_alloc_constants.h
+@@ -371,7 +371,7 @@ constexpr size_t kBitsPerSizeT = sizeof(void*) * CHAR_
+ // PartitionPurgeDecommitEmptySlotSpans flag will eagerly decommit all entries
+ // in the ring buffer, so with periodic purge enabled, this typically happens
+ // every few seconds.
+-#if defined(OS_LINUX) || defined(OS_APPLE)
++#if defined(OS_LINUX) || defined(OS_APPLE) || defined(OS_BSD)
+ // Set to a higher value on Linux and macOS, to assess impact on performance
+ // bots. This roughly halves the number of syscalls done during a speedometer
+ // 2.0 run on these platforms.
diff --git a/devel/electron17/files/patch-base_allocator_partition__allocator_partition__page.h b/devel/electron17/files/patch-base_allocator_partition__allocator_partition__page.h
new file mode 100644
index 000000000000..93c42e924dbf
--- /dev/null
+++ b/devel/electron17/files/patch-base_allocator_partition__allocator_partition__page.h
@@ -0,0 +1,12 @@
+--- base/allocator/partition_allocator/partition_page.h.orig 2022-05-11 07:16:46 UTC
++++ base/allocator/partition_allocator/partition_page.h
+@@ -141,7 +141,8 @@ struct __attribute__((packed)) SlotSpanMetadata {
+ // in PartitionPage, which has other fields as well, and must fit in 32 bytes.
+
+ // CHECK()ed in AllocNewSlotSpan().
+-#if defined(PA_HAS_64_BITS_POINTERS) && defined(OS_APPLE)
++#if (defined(PA_HAS_64_BITS_POINTERS) && defined(OS_APPLE)) || \
++ (defined(OS_FREEBSD) && defined(__i386__))
+ // System page size is not a constant on Apple OSes, but is either 4 or 16kiB
+ // (1 << 12 or 1 << 14), as checked in PartitionRoot::Init(). And
+ // PartitionPageSize() is 4 times the OS page size.
diff --git a/devel/electron17/files/patch-base_allocator_partition__allocator_partition__root.h b/devel/electron17/files/patch-base_allocator_partition__allocator_partition__root.h
new file mode 100644
index 000000000000..13d3a41c4965
--- /dev/null
+++ b/devel/electron17/files/patch-base_allocator_partition__allocator_partition__root.h
@@ -0,0 +1,11 @@
+--- base/allocator/partition_allocator/partition_root.h.orig 2022-05-11 07:16:46 UTC
++++ base/allocator/partition_allocator/partition_root.h
+@@ -1044,7 +1044,7 @@ ALWAYS_INLINE void PartitionRoot<thread_safe>::FreeNoH
+ // essentially).
+ #if BUILDFLAG(USE_PARTITION_ALLOC_AS_MALLOC) && \
+ ((defined(OS_ANDROID) && !BUILDFLAG(IS_CHROMECAST)) || \
+- (defined(OS_LINUX) && defined(ARCH_CPU_64_BITS)))
++ ((defined(OS_LINUX) || defined(OS_BSD)) && defined(ARCH_CPU_64_BITS)))
+ PA_CHECK(IsManagedByPartitionAlloc(reinterpret_cast<uintptr_t>(ptr)));
+ #endif
+
diff --git a/devel/electron17/files/patch-base_allocator_partition__allocator_spinning__mutex.cc b/devel/electron17/files/patch-base_allocator_partition__allocator_spinning__mutex.cc
new file mode 100644
index 000000000000..8abb92fa0043
--- /dev/null
+++ b/devel/electron17/files/patch-base_allocator_partition__allocator_spinning__mutex.cc
@@ -0,0 +1,47 @@
+--- base/allocator/partition_allocator/spinning_mutex.cc.orig 2022-05-11 07:16:46 UTC
++++ base/allocator/partition_allocator/spinning_mutex.cc
+@@ -17,7 +17,15 @@
+
+ #if defined(PA_HAS_LINUX_KERNEL)
+ #include <errno.h>
++#if defined(OS_OPENBSD)
++#include <sys/futex.h>
++#elif defined(OS_FREEBSD)
++#include <sys/types.h>
++#include <sys/thr.h>
++#include <sys/umtx.h>
++#else
+ #include <linux/futex.h>
++#endif
+ #include <sys/syscall.h>
+ #include <unistd.h>
+ #endif // defined(PA_HAS_LINUX_KERNEL)
+@@ -86,8 +94,13 @@ void SpinningMutex::FutexWait() {
+ // |kLockedContended| anymore. Note that even without spurious wakeups, the
+ // value of |state_| is not guaranteed when this returns, as another thread
+ // may get the lock before we get to run.
++#if defined(OS_FREEBSD)
++ int err = _umtx_op(&state_, UMTX_OP_WAIT_UINT_PRIVATE,
++ kLockedContended, nullptr, nullptr);
++#else
+ int err = syscall(SYS_futex, &state_, FUTEX_WAIT | FUTEX_PRIVATE_FLAG,
+ kLockedContended, nullptr, nullptr, 0);
++#endif
+
+ if (err) {
+ // These are programming error, check them.
+@@ -99,8 +112,14 @@ void SpinningMutex::FutexWait() {
+
+ void SpinningMutex::FutexWake() {
+ int saved_errno = errno;
++#if defined(OS_FREEBSD)
++ long retval = _umtx_op(&state_, UMTX_OP_WAKE_PRIVATE,
++ 1 /* wake up a single waiter */, nullptr, nullptr);
++#else
+ long retval = syscall(SYS_futex, &state_, FUTEX_WAKE | FUTEX_PRIVATE_FLAG,
+ 1 /* wake up a single waiter */, nullptr, nullptr, 0);
++#endif
++
+ PA_CHECK(retval != -1);
+ errno = saved_errno;
+ }
diff --git a/devel/electron17/files/patch-base_allocator_partition__allocator_starscan_stack_stack.cc b/devel/electron17/files/patch-base_allocator_partition__allocator_starscan_stack_stack.cc
new file mode 100644
index 000000000000..e81aacd5d221
--- /dev/null
+++ b/devel/electron17/files/patch-base_allocator_partition__allocator_starscan_stack_stack.cc
@@ -0,0 +1,50 @@
+--- base/allocator/partition_allocator/starscan/stack/stack.cc.orig 2022-05-11 07:16:46 UTC
++++ base/allocator/partition_allocator/starscan/stack/stack.cc
+@@ -17,6 +17,10 @@
+ #include <pthread.h>
+ #endif
+
++#if defined(OS_BSD)
++#include <pthread_np.h>
++#endif
++
+ #if defined(LIBC_GLIBC)
+ extern "C" void* __libc_stack_end;
+ #endif
+@@ -48,6 +52,36 @@ void* GetStackTop() {
+
+ void* GetStackTop() {
+ return pthread_get_stackaddr_np(pthread_self());
++}
++
++#elif defined(OS_OPENBSD)
++
++void* GetStackTop() {
++ stack_t ss;
++ if (pthread_stackseg_np(pthread_self(), &ss) != 0)
++ return nullptr;
++ return reinterpret_cast<uint8_t*>(ss.ss_sp);
++}
++
++#elif defined(OS_FREEBSD)
++
++void* GetStackTop() {
++ pthread_attr_t attr;
++ int error = pthread_attr_init(&attr);
++ if (error) {
++ return nullptr;
++ }
++ error = pthread_attr_get_np(pthread_self(), &attr);
++ if (!error) {
++ void* base;
++ size_t size;
++ error = pthread_attr_getstack(&attr, &base, &size);
++ PA_CHECK(!error);
++ pthread_attr_destroy(&attr);
++ return reinterpret_cast<uint8_t*>(base) + size;
++ }
++ pthread_attr_destroy(&attr);
++ return nullptr;
+ }
+
+ #elif defined(OS_POSIX) || defined(OS_FUCHSIA)
diff --git a/devel/electron17/files/patch-base_allocator_partition__allocator_starscan_state__bitmap.h b/devel/electron17/files/patch-base_allocator_partition__allocator_starscan_state__bitmap.h
new file mode 100644
index 000000000000..9baee309890a
--- /dev/null
+++ b/devel/electron17/files/patch-base_allocator_partition__allocator_starscan_state__bitmap.h
@@ -0,0 +1,20 @@
+--- base/allocator/partition_allocator/starscan/state_bitmap.h.orig 2022-05-11 07:16:46 UTC
++++ base/allocator/partition_allocator/starscan/state_bitmap.h
+@@ -393,7 +393,7 @@ template <size_t PageSize, size_t PageAlignment, size_
+ template <typename Filter,
+ typename CallbackForwarder,
+ typename Callback,
+- bool Clear>
++ bool ClearBits>
+ inline void
+ StateBitmap<PageSize, PageAlignment, AllocationAlignment>::IterateImpl(
+ size_t epoch,
+@@ -423,7 +423,7 @@ StateBitmap<PageSize, PageAlignment, AllocationAlignme
+
+ callback_forwarder(callback, object_address, bits);
+
+- if (Clear) {
++ if (ClearBits) {
+ // Clear the current bits.
+ AsAtomicCell(cell_index)
+ .fetch_and(clear_value_mask, std::memory_order_relaxed);
diff --git a/devel/electron17/files/patch-base_atomicops.h b/devel/electron17/files/patch-base_atomicops.h
new file mode 100644
index 000000000000..13798b80a082
--- /dev/null
+++ b/devel/electron17/files/patch-base_atomicops.h
@@ -0,0 +1,14 @@
+--- base/atomicops.h.orig 2022-05-11 07:16:46 UTC
++++ base/atomicops.h
+@@ -57,7 +57,11 @@ typedef intptr_t Atomic64;
+
+ // Use AtomicWord for a machine-sized pointer. It will use the Atomic32 or
+ // Atomic64 routines below, depending on your architecture.
++#if !defined(OS_OPENBSD) && defined(__i386__)
++typedef Atomic32 AtomicWord;
++#else
+ typedef intptr_t AtomicWord;
++#endif
+
+ // Atomically execute:
+ // result = *ptr;
diff --git a/devel/electron17/files/patch-base_base__paths__posix.cc b/devel/electron17/files/patch-base_base__paths__posix.cc
new file mode 100644
index 000000000000..5fd4c5c74179
--- /dev/null
+++ b/devel/electron17/files/patch-base_base__paths__posix.cc
@@ -0,0 +1,98 @@
+--- base/base_paths_posix.cc.orig 2022-05-11 07:16:46 UTC
++++ base/base_paths_posix.cc
+@@ -15,6 +15,7 @@
+ #include <ostream>
+ #include <string>
+
++#include "base/command_line.h"
+ #include "base/environment.h"
+ #include "base/files/file_path.h"
+ #include "base/files/file_util.h"
+@@ -25,9 +26,13 @@
+ #include "base/process/process_metrics.h"
+ #include "build/build_config.h"
+
+-#if defined(OS_FREEBSD)
++#if defined(OS_BSD)
+ #include <sys/param.h>
+ #include <sys/sysctl.h>
++#if defined(OS_OPENBSD)
++#include <kvm.h>
++#define MAXTOKENS 2
++#endif
+ #elif defined(OS_SOLARIS) || defined(OS_AIX)
+ #include <stdlib.h>
+ #endif
+@@ -68,13 +73,65 @@ bool PathProviderPosix(int key, FilePath* result) {
+ *result = FilePath(bin_dir);
+ return true;
+ #elif defined(OS_OPENBSD) || defined(OS_AIX)
+- // There is currently no way to get the executable path on OpenBSD
+- char* cpath;
+- if ((cpath = getenv("CHROME_EXE_PATH")) != NULL)
+- *result = FilePath(cpath);
+- else
+- *result = FilePath("/usr/local/chrome/chrome");
+- return true;
++ char *cpath;
++#if !defined(OS_AIX)
++ struct kinfo_file *files;
++ kvm_t *kd = NULL;
++ char errbuf[_POSIX2_LINE_MAX];
++ static char retval[PATH_MAX];
++ int cnt;
++ struct stat sb;
++ pid_t cpid = getpid();
++ bool ret = false;
++
++ const base::CommandLine* command_line =
++ base::CommandLine::ForCurrentProcess();
++
++ VLOG(1) << "PathProviderPosix argv: " << command_line->argv()[0];
++
++ if (realpath(command_line->argv()[0].c_str(), retval) == NULL)
++ goto out;
++
++ if (stat(command_line->argv()[0].c_str(), &sb) < 0)
++ goto out;
++
++ if (!command_line->HasSwitch("no-sandbox")) {
++ ret = true;
++ *result = FilePath(retval);
++ VLOG(1) << "PathProviderPosix (sandbox) result: " << retval;
++ goto out;
++ }
++
++ if ((kd = kvm_openfiles(NULL, NULL, NULL, KVM_NO_FILES, errbuf)) == NULL)
++ goto out;
++
++ if ((files = kvm_getfiles(kd, KERN_FILE_BYPID, cpid,
++ sizeof(struct kinfo_file), &cnt)) == NULL)
++ goto out;
++
++ for (int i = 0; i < cnt; i++) {
++ if (files[i].fd_fd == KERN_FILE_TEXT &&
++ files[i].va_fsid == static_cast<uint32_t>(sb.st_dev) &&
++ files[i].va_fileid == sb.st_ino) {
++ ret = true;
++ *result = FilePath(retval);
++ VLOG(1) << "PathProviderPosix result: " << retval;
++ }
++ }
++out:
++ if (kd)
++ kvm_close(kd);
++ if (!ret) {
++#endif
++ if ((cpath = getenv("CHROME_EXE_PATH")) != NULL)
++ *result = FilePath(cpath);
++ else
++ *result = FilePath("/usr/local/chrome/chrome");
++ return true;
++#if !defined(OS_AIX)
++ }
++ return ret;
++#endif
+ #endif
+ }
+ case DIR_SRC_TEST_DATA_ROOT: {
diff --git a/devel/electron17/files/patch-base_base__switches.cc b/devel/electron17/files/patch-base_base__switches.cc
new file mode 100644
index 000000000000..36be51f8b5ef
--- /dev/null
+++ b/devel/electron17/files/patch-base_base__switches.cc
@@ -0,0 +1,11 @@
+--- base/base_switches.cc.orig 2022-05-11 07:16:46 UTC
++++ base/base_switches.cc
+@@ -170,7 +170,7 @@ const char kForceFieldTrialParams[] = "force-fieldtria
+
+ #endif
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // Controls whether or not retired instruction counts are surfaced for threads
+ // in trace events on Linux.
+ //
diff --git a/devel/electron17/files/patch-base_base__switches.h b/devel/electron17/files/patch-base_base__switches.h
new file mode 100644
index 000000000000..f37639459cba
--- /dev/null
+++ b/devel/electron17/files/patch-base_base__switches.h
@@ -0,0 +1,11 @@
+--- base/base_switches.h.orig 2022-05-11 07:16:46 UTC
++++ base/base_switches.h
+@@ -60,7 +60,7 @@ extern const char kEnableIdleTracing[];
+ extern const char kForceFieldTrialParams[];
+ #endif
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ extern const char kEnableThreadInstructionCount[];
+
+ // TODO(crbug.com/1176772): Remove kEnableCrashpad and IsCrashpadEnabled() when
diff --git a/devel/electron17/files/patch-base_compiler__specific.h b/devel/electron17/files/patch-base_compiler__specific.h
new file mode 100644
index 000000000000..5fb504ef0e7d
--- /dev/null
+++ b/devel/electron17/files/patch-base_compiler__specific.h
@@ -0,0 +1,11 @@
+--- base/compiler_specific.h.orig 2022-05-11 07:16:46 UTC
++++ base/compiler_specific.h
+@@ -366,7 +366,7 @@ inline constexpr bool AnalyzerAssumeTrue(bool arg) {
+ #endif // defined(__clang_analyzer__)
+
+ // Use nomerge attribute to disable optimization of merging multiple same calls.
+-#if defined(__clang__) && __has_attribute(nomerge)
++#if defined(__clang__) && __has_attribute(nomerge) && !defined(OS_FREEBSD)
+ #define NOMERGE [[clang::nomerge]]
+ #else
+ #define NOMERGE
diff --git a/devel/electron17/files/patch-base_cpu.h b/devel/electron17/files/patch-base_cpu.h
new file mode 100644
index 000000000000..7555ded98c06
--- /dev/null
+++ b/devel/electron17/files/patch-base_cpu.h
@@ -0,0 +1,11 @@
+--- base/cpu.h.orig 2022-05-11 07:16:46 UTC
++++ base/cpu.h
+@@ -104,7 +104,7 @@ class BASE_EXPORT CPU final {
+ const std::string& cpu_brand() const { return cpu_brand_; }
+
+ #if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID) || \
+- defined(OS_AIX)
++ defined(OS_AIX) || defined(OS_BSD)
+ enum class CoreType {
+ kUnknown = 0,
+ kOther,
diff --git a/devel/electron17/files/patch-base_debug_debugger__posix.cc b/devel/electron17/files/patch-base_debug_debugger__posix.cc
new file mode 100644
index 000000000000..3e40491c9d4c
--- /dev/null
+++ b/devel/electron17/files/patch-base_debug_debugger__posix.cc
@@ -0,0 +1,68 @@
+--- base/debug/debugger_posix.cc.orig 2022-05-11 07:16:46 UTC
++++ base/debug/debugger_posix.cc
+@@ -36,6 +36,10 @@
+ #include <sys/sysctl.h>
+ #endif
+
++#if defined(OS_OPENBSD)
++#include <sys/proc.h>
++#endif
++
+ #if defined(OS_FREEBSD)
+ #include <sys/user.h>
+ #endif
+@@ -95,32 +99,51 @@ bool BeingDebugged() {
+
+ // Caution: struct kinfo_proc is marked __APPLE_API_UNSTABLE. The source and
+ // binary interfaces may change.
++#if defined(OS_OPENBSD)
++ struct kinfo_proc *info;
++ size_t info_size;
++#else
+ struct kinfo_proc info;
+ size_t info_size = sizeof(info);
++#endif
+
+ #if defined(OS_OPENBSD)
+ if (sysctl(mib, base::size(mib), NULL, &info_size, NULL, 0) < 0)
+ return -1;
+
+ mib[5] = (info_size / sizeof(struct kinfo_proc));
++ if ((info = reinterpret_cast<kinfo_proc*>(malloc(info_size))) == NULL) {
++ is_set = true;
++ being_debugged = false;
++ return being_debugged;
++ }
++
++ int sysctl_result = sysctl(mib, base::size(mib), info, &info_size, NULL, 0);
+ #endif
+
++#if !defined(OS_OPENBSD)
+ int sysctl_result = sysctl(mib, base::size(mib), &info, &info_size, NULL, 0);
++#endif
+ DCHECK_EQ(sysctl_result, 0);
+ if (sysctl_result != 0) {
+ is_set = true;
+ being_debugged = false;
+- return being_debugged;
++ goto out;
+ }
+
+ // This process is being debugged if the P_TRACED flag is set.
+ is_set = true;
+ #if defined(OS_FREEBSD)
+ being_debugged = (info.ki_flag & P_TRACED) != 0;
+-#elif defined(OS_BSD)
+- being_debugged = (info.p_flag & P_TRACED) != 0;
++#elif defined(OS_OPENBSD)
++ being_debugged = (info->p_psflags & PS_TRACED) != 0;
+ #else
+ being_debugged = (info.kp_proc.p_flag & P_TRACED) != 0;
++#endif
++
++out:
++#if defined(OS_OPENBSD)
++ free(info);
+ #endif
+ return being_debugged;
+ }
diff --git a/devel/electron17/files/patch-base_debug_elf__reader.cc b/devel/electron17/files/patch-base_debug_elf__reader.cc
new file mode 100644
index 000000000000..caa6dce3467f
--- /dev/null
+++ b/devel/electron17/files/patch-base_debug_elf__reader.cc
@@ -0,0 +1,18 @@
+--- base/debug/elf_reader.cc.orig 2022-05-11 07:16:46 UTC
++++ base/debug/elf_reader.cc
+@@ -76,6 +76,7 @@ size_t ReadElfBuildId(const void* elf_mapped_base,
+ bool found = false;
+ while (current_section < section_end) {
+ current_note = reinterpret_cast<const Nhdr*>(current_section);
++#if !defined(OS_BSD)
+ if (current_note->n_type == NT_GNU_BUILD_ID) {
+ StringPiece note_name(current_section + sizeof(Nhdr),
+ current_note->n_namesz);
+@@ -85,6 +86,7 @@ size_t ReadElfBuildId(const void* elf_mapped_base,
+ break;
+ }
+ }
++#endif
+
+ size_t section_size = bits::AlignUp(current_note->n_namesz, 4) +
+ bits::AlignUp(current_note->n_descsz, 4) +
diff --git a/devel/electron17/files/patch-base_debug_proc__maps__linux.cc b/devel/electron17/files/patch-base_debug_proc__maps__linux.cc
new file mode 100644
index 000000000000..782e8ef7c73e
--- /dev/null
+++ b/devel/electron17/files/patch-base_debug_proc__maps__linux.cc
@@ -0,0 +1,11 @@
+--- base/debug/proc_maps_linux.cc.orig 2022-05-11 07:16:46 UTC
++++ base/debug/proc_maps_linux.cc
+@@ -13,7 +13,7 @@
+ #include "base/strings/string_split.h"
+ #include "build/build_config.h"
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID) || defined(OS_BSD)
+ #include <inttypes.h>
+ #endif
+
diff --git a/devel/electron17/files/patch-base_debug_stack__trace__posix.cc b/devel/electron17/files/patch-base_debug_stack__trace__posix.cc
new file mode 100644
index 000000000000..1f5cdde669cb
--- /dev/null
+++ b/devel/electron17/files/patch-base_debug_stack__trace__posix.cc
@@ -0,0 +1,38 @@
+--- base/debug/stack_trace_posix.cc.orig 2022-05-11 07:16:46 UTC
++++ base/debug/stack_trace_posix.cc
+@@ -35,7 +35,7 @@
+ #include <AvailabilityMacros.h>
+ #endif
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ #include "base/debug/proc_maps_linux.h"
+ #endif
+
+@@ -693,6 +693,9 @@ class SandboxSymbolizeHelper {
+ // for the modules that are loaded in the current process.
+ // Returns true on success.
+ bool CacheMemoryRegions() {
++#if defined(OS_BSD)
++ return false;
++#else
+ // Reads /proc/self/maps.
+ std::string contents;
+ if (!ReadProcMaps(&contents)) {
+@@ -710,6 +713,7 @@ class SandboxSymbolizeHelper {
+
+ is_initialized_ = true;
+ return true;
++#endif
+ }
+
+ // Opens all object files and caches their file descriptors.
+@@ -866,7 +870,7 @@ size_t CollectStackTrace(void** trace, size_t count) {
+ // If we do not have unwind tables, then try tracing using frame pointers.
+ return base::debug::TraceStackFramePointers(const_cast<const void**>(trace),
+ count, 0);
+-#elif !defined(__UCLIBC__) && !defined(_AIX)
++#elif !defined(__UCLIBC__) && !defined(_AIX) && !defined(OS_BSD)
+ // Though the backtrace API man page does not list any possible negative
+ // return values, we take no chance.
+ return base::saturated_cast<size_t>(backtrace(trace, count));
diff --git a/devel/electron17/files/patch-base_files_file__path__watcher__bsd.cc b/devel/electron17/files/patch-base_files_file__path__watcher__bsd.cc
new file mode 100644
index 000000000000..a99ff700edff
--- /dev/null
+++ b/devel/electron17/files/patch-base_files_file__path__watcher__bsd.cc
@@ -0,0 +1,57 @@
+--- base/files/file_path_watcher_bsd.cc.orig 2022-05-13 07:20:04 UTC
++++ base/files/file_path_watcher_bsd.cc
+@@ -0,0 +1,54 @@
++// Copyright 2021 The Chromium Authors. All rights reserved.
++// Use of this source code is governed by a BSD-style license that can be
++// found in the LICENSE file.
++
++#include <memory>
++
++#include "base/files/file_path_watcher.h"
++#include "base/files/file_path_watcher_kqueue.h"
++#include "base/memory/ptr_util.h"
++#include "build/build_config.h"
++
++namespace base {
++
++namespace {
++
++class FilePathWatcherImpl : public FilePathWatcher::PlatformDelegate {
++ public:
++ FilePathWatcherImpl() = default;
++ FilePathWatcherImpl(const FilePathWatcherImpl&) = delete;
++ FilePathWatcherImpl& operator=(const FilePathWatcherImpl&) = delete;
++ ~FilePathWatcherImpl() override = default;
++
++ bool Watch(const FilePath& path,
++ Type type,
++ const FilePathWatcher::Callback& callback) override {
++ DCHECK(!impl_.get());
++ if (type == Type::kRecursive) {
++ if (!FilePathWatcher::RecursiveWatchAvailable())
++ return false;
++ } else {
++ impl_ = std::make_unique<FilePathWatcherKQueue>();
++ }
++ DCHECK(impl_.get());
++ return impl_->Watch(path, type, callback);
++ }
++
++ void Cancel() override {
++ if (impl_.get())
++ impl_->Cancel();
++ set_cancelled();
++ }
++
++ private:
++ std::unique_ptr<PlatformDelegate> impl_;
++};
++
++} // namespace
++
++FilePathWatcher::FilePathWatcher() {
++ sequence_checker_.DetachFromSequence();
++ impl_ = std::make_unique<FilePathWatcherImpl>();
++}
++
++} // namespace base
diff --git a/devel/electron17/files/patch-base_files_file__path__watcher__kqueue.h b/devel/electron17/files/patch-base_files_file__path__watcher__kqueue.h
new file mode 100644
index 000000000000..408ab1ec7ca2
--- /dev/null
+++ b/devel/electron17/files/patch-base_files_file__path__watcher__kqueue.h
@@ -0,0 +1,10 @@
+--- base/files/file_path_watcher_kqueue.h.orig 2022-05-11 07:00:27 UTC
++++ base/files/file_path_watcher_kqueue.h
+@@ -5,6 +5,7 @@
+ #ifndef BASE_FILES_FILE_PATH_WATCHER_KQUEUE_H_
+ #define BASE_FILES_FILE_PATH_WATCHER_KQUEUE_H_
+
++#include <sys/time.h>
+ #include <sys/event.h>
+
+ #include <memory>
diff --git a/devel/electron17/files/patch-base_files_file__util__posix.cc b/devel/electron17/files/patch-base_files_file__util__posix.cc
new file mode 100644
index 000000000000..b097b4efd8d1
--- /dev/null
+++ b/devel/electron17/files/patch-base_files_file__util__posix.cc
@@ -0,0 +1,52 @@
+--- base/files/file_util_posix.cc.orig 2022-05-11 07:16:46 UTC
++++ base/files/file_util_posix.cc
+@@ -694,32 +694,34 @@ bool CreateDirectoryAndGetError(const FilePath& full_p
+ File::Error* error) {
+ ScopedBlockingCall scoped_blocking_call(
+ FROM_HERE, BlockingType::MAY_BLOCK); // For call to mkdir().
++ const FilePath kFileSystemRoot("/");
+ std::vector<FilePath> subpaths;
+
+ // Collect a list of all parent directories.
+ FilePath last_path = full_path;
+- subpaths.push_back(full_path);
++ if (full_path != kFileSystemRoot)
++ subpaths.push_back(full_path);
+ for (FilePath path = full_path.DirName();
+- path.value() != last_path.value(); path = path.DirName()) {
++ (path.value() != last_path.value() &&
++ (path != kFileSystemRoot)); path = path.DirName()) {
+ subpaths.push_back(path);
+ last_path = path;
+ }
+
+ // Iterate through the parents and create the missing ones.
+ for (auto i = subpaths.rbegin(); i != subpaths.rend(); ++i) {
+- if (DirectoryExists(*i))
+- continue;
+- if (mkdir(i->value().c_str(), 0700) == 0)
+- continue;
+- // Mkdir failed, but it might have failed with EEXIST, or some other error
+- // due to the directory appearing out of thin air. This can occur if
+- // two processes are trying to create the same file system tree at the same
+- // time. Check to see if it exists and make sure it is a directory.
+- int saved_errno = errno;
+- if (!DirectoryExists(*i)) {
+- if (error)
+- *error = File::OSErrorToFileError(saved_errno);
+- return false;
++ if (!PathExists(*i)) {
++ if ((mkdir(i->value().c_str(), 0700) == -1) &&
++ ((full_path != *i) ? (errno != ENOENT) : (-1))) {
++ int saved_errno = errno;
++ if (error)
++ *error = File::OSErrorToFileError(saved_errno);
++ return false;
++ }
++ } else if (!DirectoryExists(*i)) {
++ if (error)
++ *error = File::OSErrorToFileError(ENOTDIR);
++ return false;
+ }
+ }
+ return true;
diff --git a/devel/electron17/files/patch-base_files_important__file__writer__cleaner.cc b/devel/electron17/files/patch-base_files_important__file__writer__cleaner.cc
new file mode 100644
index 000000000000..7586b175963d
--- /dev/null
+++ b/devel/electron17/files/patch-base_files_important__file__writer__cleaner.cc
@@ -0,0 +1,12 @@
+--- base/files/important_file_writer_cleaner.cc.orig 2022-05-11 07:16:46 UTC
++++ base/files/important_file_writer_cleaner.cc
+@@ -24,7 +24,8 @@ namespace base {
+ namespace {
+
+ base::Time GetUpperBoundTime() {
+-#if defined(OS_ANDROID) || defined(OS_IOS) || defined(OS_FUCHSIA)
++// needed because of .CreationTime() pledge
++#if defined(OS_ANDROID) || defined(OS_IOS) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ // If process creation time is not available then use instance creation
+ // time as the upper-bound for old files. Modification times may be
+ // rounded-down to coarse-grained increments, e.g. FAT has 2s granularity,
diff --git a/devel/electron17/files/patch-base_files_scoped__file.cc b/devel/electron17/files/patch-base_files_scoped__file.cc
new file mode 100644
index 000000000000..2afc9deb8f78
--- /dev/null
+++ b/devel/electron17/files/patch-base_files_scoped__file.cc
@@ -0,0 +1,11 @@
+--- base/files/scoped_file.cc.orig 2022-05-11 07:16:46 UTC
++++ base/files/scoped_file.cc
+@@ -31,7 +31,7 @@ void ScopedFDCloseTraits::Free(int fd) {
+ int ret = IGNORE_EINTR(close(fd));
+
+ #if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_APPLE) || \
+- defined(OS_FUCHSIA) || defined(OS_ANDROID)
++ defined(OS_FUCHSIA) || defined(OS_ANDROID) || defined(OS_BSD)
+ // NB: Some file descriptors can return errors from close() e.g. network
+ // filesystems such as NFS and Linux input devices. On Linux, macOS, and
+ // Fuchsia's POSIX layer, errors from close other than EBADF do not indicate
diff --git a/devel/electron17/files/patch-base_i18n_icu__util.cc b/devel/electron17/files/patch-base_i18n_icu__util.cc
new file mode 100644
index 000000000000..2fd3f8d398ae
--- /dev/null
+++ b/devel/electron17/files/patch-base_i18n_icu__util.cc
@@ -0,0 +1,21 @@
+--- base/i18n/icu_util.cc.orig 2022-05-11 07:16:46 UTC
++++ base/i18n/icu_util.cc
+@@ -49,7 +49,7 @@
+ #include "third_party/icu/source/common/unicode/unistr.h"
+ #endif
+
+-#if defined(OS_ANDROID) || defined(OS_FUCHSIA) || \
++#if defined(OS_ANDROID) || defined(OS_FUCHSIA) || defined(OS_BSD) || \
+ ((defined(OS_LINUX) || defined(OS_CHROMEOS)) && !BUILDFLAG(IS_CHROMECAST))
+ #include "third_party/icu/source/i18n/unicode/timezone.h"
+ #endif
+@@ -343,7 +343,8 @@ void InitializeIcuTimeZone() {
+ FuchsiaIntlProfileWatcher::GetPrimaryTimeZoneIdForIcuInitialization();
+ icu::TimeZone::adoptDefault(
+ icu::TimeZone::createTimeZone(icu::UnicodeString::fromUTF8(zone_id)));
+-#elif (defined(OS_LINUX) || defined(OS_CHROMEOS)) && !BUILDFLAG(IS_CHROMECAST)
++#elif (defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)) && \
++ !BUILDFLAG(IS_CHROMECAST)
+ // To respond to the time zone change properly, the default time zone
+ // cache in ICU has to be populated on starting up.
+ // See TimeZoneMonitorLinux::NotifyClientsFromImpl().
diff --git a/devel/electron17/files/patch-base_linux__util.cc b/devel/electron17/files/patch-base_linux__util.cc
new file mode 100644
index 000000000000..ab6564a58b95
--- /dev/null
+++ b/devel/electron17/files/patch-base_linux__util.cc
@@ -0,0 +1,28 @@
+--- base/linux_util.cc.orig 2022-05-11 07:16:46 UTC
++++ base/linux_util.cc
+@@ -15,6 +15,7 @@
+
+ #include <iomanip>
+ #include <memory>
++#include <sstream>
+
+ #include "base/files/dir_reader_posix.h"
+ #include "base/files/file_util.h"
+@@ -134,6 +135,9 @@ void SetLinuxDistro(const std::string& distro) {
+ }
+
+ bool GetThreadsForProcess(pid_t pid, std::vector<pid_t>* tids) {
++#if defined(OS_BSD)
++ return false;
++#else
+ // 25 > strlen("/proc//task") + strlen(std::to_string(INT_MAX)) + 1 = 22
+ char buf[25];
+ strings::SafeSPrintf(buf, "/proc/%d/task", pid);
+@@ -153,6 +157,7 @@ bool GetThreadsForProcess(pid_t pid, std::vector<pid_t
+ }
+
+ return true;
++#endif
+ }
+
+ pid_t FindThreadIDWithSyscall(pid_t pid, const std::string& expected_data,
diff --git a/devel/electron17/files/patch-base_memory_discardable__memory.cc b/devel/electron17/files/patch-base_memory_discardable__memory.cc
new file mode 100644
index 000000000000..66867e190492
--- /dev/null
+++ b/devel/electron17/files/patch-base_memory_discardable__memory.cc
@@ -0,0 +1,38 @@
+--- base/memory/discardable_memory.cc.orig 2022-05-11 07:16:46 UTC
++++ base/memory/discardable_memory.cc
+@@ -24,7 +24,7 @@ const base::Feature kMadvFreeDiscardableMemory{
+ "MadvFreeDiscardableMemory", base::FEATURE_DISABLED_BY_DEFAULT};
+ #endif // defined(OS_POSIX)
+
+-#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ const base::Feature kDiscardableMemoryBackingTrial{
+ "DiscardableMemoryBackingTrial", base::FEATURE_DISABLED_BY_DEFAULT};
+
+@@ -48,7 +48,7 @@ const base::FeatureParam<DiscardableMemoryTrialGroup>
+
+ namespace {
+
+-#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+
+ DiscardableMemoryBacking GetBackingForFieldTrial() {
+ DiscardableMemoryTrialGroup trial_group =
+@@ -66,7 +66,7 @@ DiscardableMemoryBacking GetBackingForFieldTrial() {
+
+ } // namespace
+
+-#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+
+ // Probe capabilities of this device to determine whether we should participate
+ // in the discardable memory backing trial.
+@@ -95,7 +95,7 @@ DiscardableMemory::DiscardableMemory() = default;
+ DiscardableMemory::~DiscardableMemory() = default;
+
+ DiscardableMemoryBacking GetDiscardableMemoryBacking() {
+-#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ if (DiscardableMemoryBackingFieldTrialIsEnabled()) {
+ return GetBackingForFieldTrial();
+ }
diff --git a/devel/electron17/files/patch-base_memory_discardable__memory__internal.h b/devel/electron17/files/patch-base_memory_discardable__memory__internal.h
new file mode 100644
index 000000000000..ebaf6548f198
--- /dev/null
+++ b/devel/electron17/files/patch-base_memory_discardable__memory__internal.h
@@ -0,0 +1,11 @@
+--- base/memory/discardable_memory_internal.h.orig 2022-05-11 07:16:46 UTC
++++ base/memory/discardable_memory_internal.h
+@@ -10,7 +10,7 @@
+ #include "base/metrics/field_trial_params.h"
+ #include "build/build_config.h"
+
+-#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+
+ namespace base {
+
diff --git a/devel/electron17/files/patch-base_memory_madv__free__discardable__memory__posix.cc b/devel/electron17/files/patch-base_memory_madv__free__discardable__memory__posix.cc
new file mode 100644
index 000000000000..440ec7fa256e
--- /dev/null
+++ b/devel/electron17/files/patch-base_memory_madv__free__discardable__memory__posix.cc
@@ -0,0 +1,21 @@
+--- base/memory/madv_free_discardable_memory_posix.cc.orig 2022-05-11 07:16:46 UTC
++++ base/memory/madv_free_discardable_memory_posix.cc
+@@ -292,6 +292,10 @@ void MadvFreeDiscardableMemoryPosix::SetKeepMemoryForT
+
+ bool MadvFreeDiscardableMemoryPosix::IsResident() const {
+ DFAKE_SCOPED_RECURSIVE_LOCK(thread_collision_warner_);
++// XXX mincore
++#if defined(OS_BSD)
++ return false;
++#else
+ #if defined(OS_APPLE)
+ std::vector<char> vec(allocated_pages_);
+ #else
+@@ -307,6 +311,7 @@ bool MadvFreeDiscardableMemoryPosix::IsResident() cons
+ return false;
+ }
+ return true;
++#endif
+ }
+
+ bool MadvFreeDiscardableMemoryPosix::IsDiscarded() const {
diff --git a/devel/electron17/files/patch-base_memory_platform__shared__memory__region.h b/devel/electron17/files/patch-base_memory_platform__shared__memory__region.h
new file mode 100644
index 000000000000..c0a687c305a8
--- /dev/null
+++ b/devel/electron17/files/patch-base_memory_platform__shared__memory__region.h
@@ -0,0 +1,29 @@
+--- base/memory/platform_shared_memory_region.h.orig 2021-11-19 04:25:04 UTC
++++ base/memory/platform_shared_memory_region.h
+@@ -24,7 +24,7 @@
+ #include "base/files/scoped_file.h"
+ #endif
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ namespace content {
+ class SandboxIPCHandler;
+ }
+@@ -117,7 +117,7 @@ class BASE_EXPORT PlatformSharedMemoryRegion {
+ kMaxValue = GET_SHMEM_TEMP_DIR_FAILURE
+ };
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // Structure to limit access to executable region creation.
+ struct ExecutableRegion {
+ private:
+@@ -264,7 +264,7 @@ class BASE_EXPORT PlatformSharedMemoryRegion {
+ CheckPlatformHandlePermissionsCorrespondToMode);
+ static PlatformSharedMemoryRegion Create(Mode mode,
+ size_t size
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ ,
+ bool executable = false
+ #endif
diff --git a/devel/electron17/files/patch-base_memory_platform__shared__memory__region__posix.cc b/devel/electron17/files/patch-base_memory_platform__shared__memory__region__posix.cc
new file mode 100644
index 000000000000..abce20b1c534
--- /dev/null
+++ b/devel/electron17/files/patch-base_memory_platform__shared__memory__region__posix.cc
@@ -0,0 +1,29 @@
+--- base/memory/platform_shared_memory_region_posix.cc.orig 2022-05-11 07:16:46 UTC
++++ base/memory/platform_shared_memory_region_posix.cc
+@@ -70,7 +70,7 @@ FDPair ScopedFDPair::get() const {
+ return {fd.get(), readonly_fd.get()};
+ }
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // static
+ ScopedFD PlatformSharedMemoryRegion::ExecutableRegion::CreateFD(size_t size) {
+ PlatformSharedMemoryRegion region =
+@@ -204,7 +204,7 @@ bool PlatformSharedMemoryRegion::MapAtInternal(off_t o
+ // static
+ PlatformSharedMemoryRegion PlatformSharedMemoryRegion::Create(Mode mode,
+ size_t size
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ ,
+ bool executable
+ #endif
+@@ -233,7 +233,7 @@ PlatformSharedMemoryRegion PlatformSharedMemoryRegion:
+ // flag.
+ FilePath directory;
+ if (!GetShmemTempDir(
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ executable,
+ #else
+ false /* executable */,
diff --git a/devel/electron17/files/patch-base_message__loop_message__pump__glib.cc b/devel/electron17/files/patch-base_message__loop_message__pump__glib.cc
new file mode 100644
index 000000000000..5cf21bba2dbd
--- /dev/null
+++ b/devel/electron17/files/patch-base_message__loop_message__pump__glib.cc
@@ -0,0 +1,28 @@
+--- base/message_loop/message_pump_glib.cc.orig 2021-09-14 01:51:47 UTC
++++ base/message_loop/message_pump_glib.cc
+@@ -8,6 +8,11 @@
+ #include <glib.h>
+ #include <math.h>
+
++#if defined(OS_BSD)
++#include <pthread.h>
++#include <pthread_np.h>
++#endif
++
+ #include "base/logging.h"
+ #include "base/notreached.h"
+ #include "base/numerics/safe_conversions.h"
+@@ -49,9 +54,13 @@ int GetTimeIntervalMilliseconds(TimeTicks next_task_ti
+ }
+
+ bool RunningOnMainThread() {
++#if defined(OS_BSD)
++ return pthread_main_np();
++#else
+ auto pid = getpid();
+ auto tid = PlatformThread::CurrentId();
+ return pid > 0 && tid > 0 && pid == tid;
++#endif
+ }
+
+ // A brief refresher on GLib:
diff --git a/devel/electron17/files/patch-base_native__library__posix.cc b/devel/electron17/files/patch-base_native__library__posix.cc
new file mode 100644
index 000000000000..00088d5f79e3
--- /dev/null
+++ b/devel/electron17/files/patch-base_native__library__posix.cc
@@ -0,0 +1,11 @@
+--- base/native_library_posix.cc.orig 2021-07-15 19:13:29 UTC
++++ base/native_library_posix.cc
+@@ -31,7 +31,7 @@ NativeLibrary LoadNativeLibraryWithOptions(const FileP
+ // http://crbug.com/17943, http://crbug.com/17557, http://crbug.com/36892,
+ // and http://crbug.com/40794.
+ int flags = RTLD_LAZY;
+-#if defined(OS_ANDROID) || !defined(RTLD_DEEPBIND)
++#if defined(OS_ANDROID) || !defined(RTLD_DEEPBIND) || defined(OS_BSD)
+ // Certain platforms don't define RTLD_DEEPBIND. Android dlopen() requires
+ // further investigation, as it might vary across versions. Crash here to
+ // warn developers that they're trying to rely on uncertain behavior.
diff --git a/devel/electron17/files/patch-base_posix_can__lower__nice__to.cc b/devel/electron17/files/patch-base_posix_can__lower__nice__to.cc
new file mode 100644
index 000000000000..20cd2e219df1
--- /dev/null
+++ b/devel/electron17/files/patch-base_posix_can__lower__nice__to.cc
@@ -0,0 +1,16 @@
+--- base/posix/can_lower_nice_to.cc.orig 2022-05-11 07:16:46 UTC
++++ base/posix/can_lower_nice_to.cc
+@@ -11,8 +11,12 @@
+
+ #include "build/build_config.h"
+
++#if defined(OS_FREEBSD)
++#include <sys/param.h>
++#endif
++
+ // Not defined on AIX by default.
+-#if defined(OS_AIX)
++#if defined(OS_AIX) || defined(OS_BSD)
+ #if defined(RLIMIT_NICE)
+ #error Assumption about OS_AIX is incorrect
+ #endif
diff --git a/devel/electron17/files/patch-base_posix_unix__domain__socket.cc b/devel/electron17/files/patch-base_posix_unix__domain__socket.cc
new file mode 100644
index 000000000000..476c87d7b9b7
--- /dev/null
+++ b/devel/electron17/files/patch-base_posix_unix__domain__socket.cc
@@ -0,0 +1,39 @@
+--- base/posix/unix_domain_socket.cc.orig 2022-05-11 07:16:46 UTC
++++ base/posix/unix_domain_socket.cc
+@@ -50,7 +50,7 @@ bool CreateSocketPair(ScopedFD* one, ScopedFD* two) {
+
+ // static
+ bool UnixDomainSocket::EnableReceiveProcessId(int fd) {
+-#if !defined(OS_APPLE)
++#if !defined(OS_APPLE) && !defined(OS_BSD)
+ const int enable = 1;
+ return setsockopt(fd, SOL_SOCKET, SO_PASSCRED, &enable, sizeof(enable)) == 0;
+ #else
+@@ -140,7 +140,7 @@ ssize_t UnixDomainSocket::RecvMsgWithFlags(int fd,
+
+ const size_t kControlBufferSize =
+ CMSG_SPACE(sizeof(int) * kMaxFileDescriptors)
+-#if !defined(OS_APPLE)
++#if !defined(OS_APPLE) && !defined(OS_BSD)
+ // macOS does not support ucred.
+ // macOS supports xucred, but this structure is insufficient.
+ + CMSG_SPACE(sizeof(struct ucred))
+@@ -168,7 +168,7 @@ ssize_t UnixDomainSocket::RecvMsgWithFlags(int fd,
+ wire_fds = reinterpret_cast<int*>(CMSG_DATA(cmsg));
+ wire_fds_len = payload_len / sizeof(int);
+ }
+-#if !defined(OS_APPLE)
++#if !defined(OS_APPLE) && !defined(OS_BSD)
+ // macOS does not support SCM_CREDENTIALS.
+ if (cmsg->cmsg_level == SOL_SOCKET &&
+ cmsg->cmsg_type == SCM_CREDENTIALS) {
+@@ -202,6 +202,9 @@ ssize_t UnixDomainSocket::RecvMsgWithFlags(int fd,
+ socklen_t pid_size = sizeof(pid);
+ if (getsockopt(fd, SOL_LOCAL, LOCAL_PEERPID, &pid, &pid_size) != 0)
+ pid = -1;
++#elif defined(OS_BSD)
++ NOTIMPLEMENTED();
++ pid = -1;
+ #else
+ // |pid| will legitimately be -1 if we read EOF, so only DCHECK if we
+ // actually received a message. Unfortunately, Linux allows sending zero
diff --git a/devel/electron17/files/patch-base_process_kill.h b/devel/electron17/files/patch-base_process_kill.h
new file mode 100644
index 000000000000..3535ef71a7ea
--- /dev/null
+++ b/devel/electron17/files/patch-base_process_kill.h
@@ -0,0 +1,11 @@
+--- base/process/kill.h.orig 2022-05-11 07:16:46 UTC
++++ base/process/kill.h
+@@ -112,7 +112,7 @@ BASE_EXPORT TerminationStatus GetTerminationStatus(Pro
+ BASE_EXPORT TerminationStatus GetKnownDeadTerminationStatus(
+ ProcessHandle handle, int* exit_code);
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // Spawns a thread to wait asynchronously for the child |process| to exit
+ // and then reaps it.
+ BASE_EXPORT void EnsureProcessGetsReaped(Process process);
diff --git a/devel/electron17/files/patch-base_process_kill__posix.cc b/devel/electron17/files/patch-base_process_kill__posix.cc
new file mode 100644
index 000000000000..df9934e99589
--- /dev/null
+++ b/devel/electron17/files/patch-base_process_kill__posix.cc
@@ -0,0 +1,11 @@
+--- base/process/kill_posix.cc.orig 2022-05-11 07:16:46 UTC
++++ base/process/kill_posix.cc
+@@ -159,7 +159,7 @@ void EnsureProcessTerminated(Process process) {
+ 0, new BackgroundReaper(std::move(process), Seconds(2)));
+ }
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ void EnsureProcessGetsReaped(Process process) {
+ DCHECK(!process.is_current());
+
diff --git a/devel/electron17/files/patch-base_process_launch.h b/devel/electron17/files/patch-base_process_launch.h
new file mode 100644
index 000000000000..d64c3bfca847
--- /dev/null
+++ b/devel/electron17/files/patch-base_process_launch.h
@@ -0,0 +1,11 @@
+--- base/process/launch.h.orig 2022-05-11 07:16:46 UTC
++++ base/process/launch.h
+@@ -192,7 +192,7 @@ struct BASE_EXPORT LaunchOptions {
+ bool clear_environment = false;
+ #endif // OS_WIN || OS_POSIX || OS_FUCHSIA
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // If non-zero, start the process using clone(), using flags as provided.
+ // Unlike in clone, clone_flags may not contain a custom termination signal
+ // that is sent to the parent when the child dies. The termination signal will
diff --git a/devel/electron17/files/patch-base_process_launch__posix.cc b/devel/electron17/files/patch-base_process_launch__posix.cc
new file mode 100644
index 000000000000..86a2400e9833
--- /dev/null
+++ b/devel/electron17/files/patch-base_process_launch__posix.cc
@@ -0,0 +1,12 @@
+--- base/process/launch_posix.cc.orig 2022-05-11 07:16:46 UTC
++++ base/process/launch_posix.cc
+@@ -64,6 +64,9 @@
+ #error "macOS should use launch_mac.cc"
+ #endif
+
++#if defined(OS_FREEBSD)
++#pragma weak environ
++#endif
+ extern char** environ;
+
+ namespace base {
diff --git a/devel/electron17/files/patch-base_process_memory.cc b/devel/electron17/files/patch-base_process_memory.cc
new file mode 100644
index 000000000000..20b4fcf66df0
--- /dev/null
+++ b/devel/electron17/files/patch-base_process_memory.cc
@@ -0,0 +1,20 @@
+--- base/process/memory.cc.orig 2022-05-11 07:16:46 UTC
++++ base/process/memory.cc
+@@ -63,14 +63,16 @@ NOINLINE void OnNoMemoryInternal(size_t size) {
+
+ } // namespace internal
+
++#if !defined(OS_BSD)
+ void TerminateBecauseOutOfMemory(size_t size) {
+ internal::OnNoMemoryInternal(size);
+ }
++#endif
+
+ // Defined in memory_mac.mm for macOS + use_allocator="none". In case of
+ // USE_PARTITION_ALLOC_AS_MALLOC, no need to route the call to the system
+ // default calloc of macOS.
+-#if !defined(OS_APPLE) || BUILDFLAG(USE_PARTITION_ALLOC_AS_MALLOC)
++#if (!defined(OS_APPLE) && !defined(OS_BSD)) || BUILDFLAG(USE_PARTITION_ALLOC_AS_MALLOC)
+
+ bool UncheckedCalloc(size_t num_items, size_t size, void** result) {
+ const size_t alloc_size = num_items * size;
diff --git a/devel/electron17/files/patch-base_process_process__handle.cc b/devel/electron17/files/patch-base_process_process__handle.cc
new file mode 100644
index 000000000000..acc48a9b6ec4
--- /dev/null
+++ b/devel/electron17/files/patch-base_process_process__handle.cc
@@ -0,0 +1,11 @@
+--- base/process/process_handle.cc.orig 2021-01-07 00:36:18 UTC
++++ base/process/process_handle.cc
+@@ -30,7 +30,7 @@ UniqueProcId GetUniqueIdForProcess() {
+ : UniqueProcId(GetCurrentProcId());
+ }
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_AIX)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_AIX) || defined(OS_BSD)
+
+ void InitUniqueIdForProcessInPidNamespace(ProcessId pid_outside_of_namespace) {
+ DCHECK(pid_outside_of_namespace != kNullProcessId);
diff --git a/devel/electron17/files/patch-base_process_process__handle.h b/devel/electron17/files/patch-base_process_process__handle.h
new file mode 100644
index 000000000000..d607b9fe7bd2
--- /dev/null
+++ b/devel/electron17/files/patch-base_process_process__handle.h
@@ -0,0 +1,11 @@
+--- base/process/process_handle.h.orig 2021-09-14 01:51:47 UTC
++++ base/process/process_handle.h
+@@ -106,7 +106,7 @@ BASE_EXPORT ProcessId GetCurrentProcId();
+ // processes may be reused.
+ BASE_EXPORT UniqueProcId GetUniqueIdForProcess();
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // When a process is started in a different PID namespace from the browser
+ // process, this function must be called with the process's PID in the browser's
+ // PID namespace in order to initialize its unique ID. Not thread safe.
diff --git a/devel/electron17/files/patch-base_process_process__handle__freebsd.cc b/devel/electron17/files/patch-base_process_process__handle__freebsd.cc
new file mode 100644
index 000000000000..e43bd6086675
--- /dev/null
+++ b/devel/electron17/files/patch-base_process_process__handle__freebsd.cc
@@ -0,0 +1,23 @@
+--- base/process/process_handle_freebsd.cc.orig 2021-09-14 01:51:47 UTC
++++ base/process/process_handle_freebsd.cc
+@@ -12,15 +12,19 @@
+ #include <unistd.h>
+
+ #include "base/cxx17_backports.h"
++#include "base/files/file_path.h"
+
+ namespace base {
+
+ ProcessId GetParentProcessId(ProcessHandle process) {
+ struct kinfo_proc info;
+- size_t length;
++ size_t length = sizeof(struct kinfo_proc);
+ int mib[] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, process };
+
+ if (sysctl(mib, base::size(mib), &info, &length, NULL, 0) < 0)
++ return -1;
++
++ if (length < sizeof(struct kinfo_proc))
+ return -1;
+
+ return info.ki_ppid;
diff --git a/devel/electron17/files/patch-base_process_process__handle__openbsd.cc b/devel/electron17/files/patch-base_process_process__handle__openbsd.cc
new file mode 100644
index 000000000000..53e42c48a449
--- /dev/null
+++ b/devel/electron17/files/patch-base_process_process__handle__openbsd.cc
@@ -0,0 +1,89 @@
+--- base/process/process_handle_openbsd.cc.orig 2022-05-11 07:16:46 UTC
++++ base/process/process_handle_openbsd.cc
+@@ -3,8 +3,11 @@
+ // found in the LICENSE file.
+
+ #include "base/process/process_handle.h"
++#include "base/files/file_util.h"
+
+ #include <stddef.h>
++#include <sys/param.h>
++#include <sys/proc.h>
+ #include <sys/sysctl.h>
+ #include <sys/types.h>
+ #include <unistd.h>
+@@ -14,39 +17,59 @@
+ namespace base {
+
+ ProcessId GetParentProcessId(ProcessHandle process) {
+- struct kinfo_proc info;
++ struct kinfo_proc *info;
+ size_t length;
++ pid_t ppid;
+ int mib[] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, process,
+ sizeof(struct kinfo_proc), 0 };
+
+ if (sysctl(mib, base::size(mib), NULL, &length, NULL, 0) < 0)
+ return -1;
+
++ info = (struct kinfo_proc *)malloc(length);
++
+ mib[5] = (length / sizeof(struct kinfo_proc));
+
+- if (sysctl(mib, base::size(mib), &info, &length, NULL, 0) < 0)
+- return -1;
++ if (sysctl(mib, base::size(mib), info, &length, NULL, 0) < 0) {
++ ppid = -1;
++ goto out;
++ }
+
+- return info.p_ppid;
++ ppid = info->p_ppid;
++
++out:
++ free(info);
++ return ppid;
+ }
+
+ FilePath GetProcessExecutablePath(ProcessHandle process) {
+- struct kinfo_proc kp;
+- size_t len;
++ struct kinfo_proc *info;
++ size_t length;
++ char *path = NULL;
+ int mib[] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, process,
+ sizeof(struct kinfo_proc), 0 };
+
+- if (sysctl(mib, base::size(mib), NULL, &len, NULL, 0) == -1)
++ if (sysctl(mib, base::size(mib), NULL, &length, NULL, 0) == -1)
+ return FilePath();
+- mib[5] = (len / sizeof(struct kinfo_proc));
+- if (sysctl(mib, base::size(mib), &kp, &len, NULL, 0) < 0)
+- return FilePath();
+- if ((kp.p_flag & P_SYSTEM) != 0)
+- return FilePath();
+- if (strcmp(kp.p_comm, "chrome") == 0)
+- return FilePath(kp.p_comm);
+
+- return FilePath();
++ info = (struct kinfo_proc *)malloc(length);
++
++ mib[5] = (length / sizeof(struct kinfo_proc));
++
++ if (sysctl(mib, base::size(mib), info, &length, NULL, 0) < 0)
++ goto out;
++
++ if ((info->p_flag & P_SYSTEM) != 0)
++ goto out;
++
++ if (strcmp(info->p_comm, "chrome") == 0) {
++ path = info->p_comm;
++ goto out;
++ }
++
++out:
++ free(info);
++ return FilePath(path);
+ }
+
+ } // namespace base
diff --git a/devel/electron17/files/patch-base_process_process__iterator__freebsd.cc b/devel/electron17/files/patch-base_process_process__iterator__freebsd.cc
new file mode 100644
index 000000000000..0491e2a111a9
--- /dev/null
+++ b/devel/electron17/files/patch-base_process_process__iterator__freebsd.cc
@@ -0,0 +1,51 @@
+--- base/process/process_iterator_freebsd.cc.orig 2021-09-14 01:51:47 UTC
++++ base/process/process_iterator_freebsd.cc
+@@ -21,7 +21,7 @@ ProcessIterator::ProcessIterator(const ProcessFilter*
+ : index_of_kinfo_proc_(),
+ filter_(filter) {
+
+- int mib[] = { CTL_KERN, KERN_PROC, KERN_PROC_UID, getuid() };
++ int mib[] = { CTL_KERN, KERN_PROC, KERN_PROC_UID, (int) getuid() };
+
+ bool done = false;
+ int try_num = 1;
+@@ -40,7 +40,7 @@ ProcessIterator::ProcessIterator(const ProcessFilter*
+ num_of_kinfo_proc += 16;
+ kinfo_procs_.resize(num_of_kinfo_proc);
+ len = num_of_kinfo_proc * sizeof(struct kinfo_proc);
+- if (sysctl(mib, base::size(mib), &kinfo_procs_[0], &len, NULL, 0) < 0) {
++ if (sysctl(mib, base::size(mib), kinfo_procs_.data(), &len, NULL, 0) < 0) {
+ // If we get a mem error, it just means we need a bigger buffer, so
+ // loop around again. Anything else is a real error and give up.
+ if (errno != ENOMEM) {
+@@ -50,7 +50,7 @@ ProcessIterator::ProcessIterator(const ProcessFilter*
+ }
+ } else {
+ // Got the list, just make sure we're sized exactly right
+- size_t num_of_kinfo_proc = len / sizeof(struct kinfo_proc);
++ num_of_kinfo_proc = len / sizeof(struct kinfo_proc);
+ kinfo_procs_.resize(num_of_kinfo_proc);
+ done = true;
+ }
+@@ -72,18 +72,13 @@ bool ProcessIterator::CheckForNextProcess() {
+ for (; index_of_kinfo_proc_ < kinfo_procs_.size(); ++index_of_kinfo_proc_) {
+ size_t length;
+ struct kinfo_proc kinfo = kinfo_procs_[index_of_kinfo_proc_];
+- int mib[] = { CTL_KERN, KERN_PROC_ARGS, kinfo.ki_pid };
++ int mib[] = { CTL_KERN, KERN_PROC, KERN_PROC_ARGS, kinfo.ki_pid };
+
+ if ((kinfo.ki_pid > 0) && (kinfo.ki_stat == SZOMB))
+ continue;
+
+- length = 0;
+- if (sysctl(mib, base::size(mib), NULL, &length, NULL, 0) < 0) {
+- LOG(ERROR) << "failed to figure out the buffer size for a command line";
+- continue;
+- }
+-
+- data.resize(length);
++ data.resize(ARG_MAX);
++ length = ARG_MAX;
+
+ if (sysctl(mib, base::size(mib), &data[0], &length, NULL, 0) < 0) {
+ LOG(ERROR) << "failed to fetch a commandline";
diff --git a/devel/electron17/files/patch-base_process_process__iterator__openbsd.cc b/devel/electron17/files/patch-base_process_process__iterator__openbsd.cc
new file mode 100644
index 000000000000..aa0a99325f5d
--- /dev/null
+++ b/devel/electron17/files/patch-base_process_process__iterator__openbsd.cc
@@ -0,0 +1,45 @@
+--- base/process/process_iterator_openbsd.cc.orig 2022-05-11 07:16:46 UTC
++++ base/process/process_iterator_openbsd.cc
+@@ -6,6 +6,9 @@
+
+ #include <errno.h>
+ #include <stddef.h>
++#include <unistd.h>
++#include <sys/param.h>
++#include <sys/proc.h>
+ #include <sys/sysctl.h>
+
+ #include "base/cxx17_backports.h"
+@@ -19,12 +22,13 @@ ProcessIterator::ProcessIterator(const ProcessFilter*
+ : index_of_kinfo_proc_(),
+ filter_(filter) {
+
+- int mib[] = { CTL_KERN, KERN_PROC, KERN_PROC_UID, getuid(),
++ int mib[] = { CTL_KERN, KERN_PROC, KERN_PROC_UID, static_cast<int>(getuid()),
+ sizeof(struct kinfo_proc), 0 };
+
+ bool done = false;
+ int try_num = 1;
+ const int max_tries = 10;
++ size_t num_of_kinfo_proc;
+
+ do {
+ size_t len = 0;
+@@ -33,7 +37,7 @@ ProcessIterator::ProcessIterator(const ProcessFilter*
+ kinfo_procs_.resize(0);
+ done = true;
+ } else {
+- size_t num_of_kinfo_proc = len / sizeof(struct kinfo_proc);
++ num_of_kinfo_proc = len / sizeof(struct kinfo_proc);
+ // Leave some spare room for process table growth (more could show up
+ // between when we check and now)
+ num_of_kinfo_proc += 16;
+@@ -49,7 +53,7 @@ ProcessIterator::ProcessIterator(const ProcessFilter*
+ }
+ } else {
+ // Got the list, just make sure we're sized exactly right
+- size_t num_of_kinfo_proc = len / sizeof(struct kinfo_proc);
++ num_of_kinfo_proc = len / sizeof(struct kinfo_proc);
+ kinfo_procs_.resize(num_of_kinfo_proc);
+ done = true;
+ }
diff --git a/devel/electron17/files/patch-base_process_process__metrics.cc b/devel/electron17/files/patch-base_process_process__metrics.cc
new file mode 100644
index 000000000000..96206b18a50d
--- /dev/null
+++ b/devel/electron17/files/patch-base_process_process__metrics.cc
@@ -0,0 +1,38 @@
+--- base/process/process_metrics.cc.orig 2022-05-11 07:16:46 UTC
++++ base/process/process_metrics.cc
+@@ -18,7 +18,7 @@ namespace base {
+ namespace {
+
+ #if defined(OS_APPLE) || defined(OS_LINUX) || defined(OS_CHROMEOS) || \
+- defined(OS_AIX)
++ defined(OS_AIX) || defined(OS_BSD)
+ int CalculateEventsPerSecond(uint64_t event_count,
+ uint64_t* last_event_count,
+ base::TimeTicks* last_calculated) {
+@@ -55,7 +55,7 @@ SystemMetrics SystemMetrics::Sample() {
+ SystemMetrics system_metrics;
+
+ system_metrics.committed_memory_ = GetSystemCommitCharge();
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID) || defined(OS_BSD)
+ GetSystemMemoryInfo(&system_metrics.memory_info_);
+ GetVmStatInfo(&system_metrics.vmstat_info_);
+ GetSystemDiskInfo(&system_metrics.disk_info_);
+@@ -74,7 +74,7 @@ Value SystemMetrics::ToValue() const {
+ Value res(Value::Type::DICTIONARY);
+
+ res.SetIntKey("committed_memory", static_cast<int>(committed_memory_));
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID) || defined(OS_BSD)
+ Value meminfo = memory_info_.ToValue();
+ Value vmstat = vmstat_info_.ToValue();
+ meminfo.MergeDictionary(&vmstat);
+@@ -126,7 +126,7 @@ double ProcessMetrics::GetPlatformIndependentCPUUsage(
+ #endif
+
+ #if defined(OS_APPLE) || defined(OS_LINUX) || defined(OS_CHROMEOS) || \
+- defined(OS_AIX)
++ defined(OS_AIX) || defined(OS_BSD)
+ int ProcessMetrics::CalculateIdleWakeupsPerSecond(
+ uint64_t absolute_idle_wakeups) {
+ return CalculateEventsPerSecond(absolute_idle_wakeups,
diff --git a/devel/electron17/files/patch-base_process_process__metrics.h b/devel/electron17/files/patch-base_process_process__metrics.h
new file mode 100644
index 000000000000..ec0cc9695efc
--- /dev/null
+++ b/devel/electron17/files/patch-base_process_process__metrics.h
@@ -0,0 +1,119 @@
+--- base/process/process_metrics.h.orig 2022-05-11 07:16:46 UTC
++++ base/process/process_metrics.h
+@@ -37,7 +37,7 @@
+ #endif
+
+ #if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID) || \
+- defined(OS_AIX)
++ defined(OS_AIX) || defined(OS_BSD)
+ #include <string>
+ #include <utility>
+ #include <vector>
+@@ -53,7 +53,7 @@ class Value;
+ // Full declaration is in process_metrics_iocounters.h.
+ struct IoCounters;
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID) || defined(OS_BSD)
+ // Minor and major page fault counts since the process creation.
+ // Both counts are process-wide, and exclude child processes.
+ //
+@@ -107,7 +107,7 @@ class BASE_EXPORT ProcessMetrics {
+ // convenience wrapper for CreateProcessMetrics().
+ static std::unique_ptr<ProcessMetrics> CreateCurrentProcessMetrics();
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID) || defined(OS_BSD)
+ // Resident Set Size is a Linux/Android specific memory concept. Do not
+ // attempt to extend this to other platforms.
+ BASE_EXPORT size_t GetResidentSetSize() const;
+@@ -134,7 +134,7 @@ class BASE_EXPORT ProcessMetrics {
+ TimeDelta GetCumulativeCPUUsage() WARN_UNUSED_RESULT;
+
+ #if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID) || \
+- defined(OS_AIX)
++ defined(OS_AIX) || defined(OS_BSD)
+ // Emits the cumulative CPU usage for all currently active threads since they
+ // were started into the output parameter (replacing its current contents).
+ // Threads that have already terminated will not be reported. Thus, the sum of
+@@ -217,7 +217,7 @@ class BASE_EXPORT ProcessMetrics {
+ int GetOpenFdSoftLimit() const;
+ #endif // defined(OS_POSIX)
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID) || defined(OS_BSD)
+ // Bytes of swap as reported by /proc/[pid]/status.
+ uint64_t GetVmSwapBytes() const;
+
+@@ -237,7 +237,7 @@ class BASE_EXPORT ProcessMetrics {
+ #endif // !defined(OS_MAC)
+
+ #if defined(OS_APPLE) || defined(OS_LINUX) || defined(OS_CHROMEOS) || \
+- defined(OS_AIX)
++ defined(OS_AIX) || defined(OS_BSD)
+ int CalculateIdleWakeupsPerSecond(uint64_t absolute_idle_wakeups);
+ #endif
+ #if defined(OS_APPLE)
+@@ -248,7 +248,7 @@ class BASE_EXPORT ProcessMetrics {
+ #endif
+
+ #if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID) || \
+- defined(OS_AIX)
++ defined(OS_AIX) || defined(OS_BSD)
+ CPU::CoreType GetCoreType(int core_index);
+ #endif // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID) ||
+ // defined(OS_AIX)
+@@ -273,7 +273,7 @@ class BASE_EXPORT ProcessMetrics {
+ uint64_t last_cumulative_disk_usage_ = 0;
+
+ #if defined(OS_APPLE) || defined(OS_LINUX) || defined(OS_CHROMEOS) || \
+- defined(OS_AIX)
++ defined(OS_AIX) || defined(OS_BSD)
+ // Same thing for idle wakeups.
+ TimeTicks last_idle_wakeups_time_;
+ uint64_t last_absolute_idle_wakeups_;
+@@ -316,7 +316,7 @@ BASE_EXPORT void IncreaseFdLimitTo(unsigned int max_de
+
+ #if defined(OS_WIN) || defined(OS_APPLE) || defined(OS_LINUX) || \
+ defined(OS_CHROMEOS) || defined(OS_ANDROID) || defined(OS_AIX) || \
+- defined(OS_FUCHSIA)
++ defined(OS_FUCHSIA) || defined(OS_BSD)
+ // Data about system-wide memory consumption. Values are in KB. Available on
+ // Windows, Mac, Linux, Android and Chrome OS.
+ //
+@@ -351,7 +351,7 @@ struct BASE_EXPORT SystemMemoryInfoKB {
+ #endif
+
+ #if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID) || \
+- defined(OS_AIX)
++ defined(OS_AIX) || defined(OS_BSD)
+ // This provides an estimate of available memory as described here:
+ // https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=34e431b0ae398fc54ea69ff85ec700722c9da773
+ // NOTE: this is ONLY valid in kernels 3.14 and up. Its value will always
+@@ -366,7 +366,7 @@ struct BASE_EXPORT SystemMemoryInfoKB {
+ #endif
+
+ #if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS) || \
+- defined(OS_AIX) || defined(OS_FUCHSIA)
++ defined(OS_AIX) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ int buffers = 0;
+ int cached = 0;
+ int active_anon = 0;
+@@ -403,7 +403,7 @@ BASE_EXPORT bool GetSystemMemoryInfo(SystemMemoryInfoK
+ // defined(OS_FUCHSIA)
+
+ #if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID) || \
+- defined(OS_AIX)
++ defined(OS_AIX) || defined(OS_BSD)
+ // Parse the data found in /proc/<pid>/stat and return the sum of the
+ // CPU-related ticks. Returns -1 on parse error.
+ // Exposed for testing.
+@@ -590,7 +590,7 @@ class BASE_EXPORT SystemMetrics {
+ FRIEND_TEST_ALL_PREFIXES(SystemMetricsTest, SystemMetrics);
+
+ size_t committed_memory_;
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID) || defined(OS_BSD)
+ SystemMemoryInfoKB memory_info_;
+ VmStatInfo vmstat_info_;
+ SystemDiskInfo disk_info_;
diff --git a/devel/electron17/files/patch-base_process_process__metrics__freebsd.cc b/devel/electron17/files/patch-base_process_process__metrics__freebsd.cc
new file mode 100644
index 000000000000..dbec2fa29088
--- /dev/null
+++ b/devel/electron17/files/patch-base_process_process__metrics__freebsd.cc
@@ -0,0 +1,277 @@
+--- base/process/process_metrics_freebsd.cc.orig 2021-09-14 01:51:47 UTC
++++ base/process/process_metrics_freebsd.cc
+@@ -3,21 +3,41 @@
+ // found in the LICENSE file.
+
+ #include "base/process/process_metrics.h"
++#include "base/notreached.h"
+
+ #include <stddef.h>
++#include <sys/types.h>
+ #include <sys/sysctl.h>
+ #include <sys/user.h>
+ #include <unistd.h>
+
++#include <fcntl.h> /* O_RDONLY */
++#include <kvm.h>
++#include <libutil.h>
++
+ #include "base/cxx17_backports.h"
+ #include "base/memory/ptr_util.h"
+ #include "base/process/process_metrics_iocounters.h"
++#include "base/values.h"
+
+ namespace base {
++namespace {
+
++int GetPageShift() {
++ int pagesize = getpagesize();
++ int pageshift = 0;
++
++ while (pagesize > 1) {
++ pageshift++;
++ pagesize >>= 1;
++ }
++
++ return pageshift;
++}
++}
++
+ ProcessMetrics::ProcessMetrics(ProcessHandle process)
+- : process_(process),
+- last_cpu_(0) {}
++ : process_(process) {}
+
+ // static
+ std::unique_ptr<ProcessMetrics> ProcessMetrics::CreateProcessMetrics(
+@@ -37,7 +57,7 @@ double ProcessMetrics::GetPlatformIndependentCPUUsage(
+ }
+
+ TimeDelta ProcessMetrics::GetCumulativeCPUUsage() {
+- NOTREACHED();
++ NOTIMPLEMENTED();
+ return TimeDelta();
+ }
+
+@@ -68,4 +88,221 @@ size_t GetSystemCommitCharge() {
+ return mem_total - (mem_free*pagesize) - (mem_inactive*pagesize);
+ }
+
++int GetNumberOfThreads(ProcessHandle process) {
++ // Taken from FreeBSD top (usr.bin/top/machine.c)
++
++ kvm_t* kd = kvm_open(NULL, "/dev/null", NULL, O_RDONLY, "kvm_open");
++ if (kd == NULL)
++ return 0;
++
++ struct kinfo_proc* pbase;
++ int nproc;
++ pbase = kvm_getprocs(kd, KERN_PROC_PID, process, &nproc);
++ if (pbase == NULL)
++ return 0;
++
++ if (kvm_close(kd) == -1)
++ return 0;
++
++ return nproc;
++}
++
++bool GetSystemMemoryInfo(SystemMemoryInfoKB *meminfo) {
++ unsigned int mem_total, mem_free, swap_total, swap_used;
++ size_t length;
++ int pagesizeKB;
++
++ pagesizeKB = getpagesize() / 1024;
++
++ length = sizeof(mem_total);
++ if (sysctlbyname("vm.stats.vm.v_page_count", &mem_total,
++ &length, NULL, 0) != 0 || length != sizeof(mem_total))
++ return false;
++
++ length = sizeof(mem_free);
++ if (sysctlbyname("vm.stats.vm.v_free_count", &mem_free, &length, NULL, 0)
++ != 0 || length != sizeof(mem_free))
++ return false;
++
++ length = sizeof(swap_total);
++ if (sysctlbyname("vm.swap_size", &swap_total, &length, NULL, 0)
++ != 0 || length != sizeof(swap_total))
++ return false;
++
++ length = sizeof(swap_used);
++ if (sysctlbyname("vm.swap_anon_use", &swap_used, &length, NULL, 0)
++ != 0 || length != sizeof(swap_used))
++ return false;
++
++ meminfo->total = mem_total * pagesizeKB;
++ meminfo->free = mem_free * pagesizeKB;
++ meminfo->swap_total = swap_total * pagesizeKB;
++ meminfo->swap_free = (swap_total - swap_used) * pagesizeKB;
++
++ return true;
++}
++
++int ProcessMetrics::GetOpenFdCount() const {
++ struct kinfo_file * kif;
++ int cnt;
++
++ if ((kif = kinfo_getfile(process_, &cnt)) == NULL)
++ return -1;
++
++ free(kif);
++
++ return cnt;
++}
++
++int ProcessMetrics::GetOpenFdSoftLimit() const {
++ size_t length;
++ int total_count = 0;
++ int mib[] = { CTL_KERN, KERN_MAXFILESPERPROC };
++
++ length = sizeof(total_count);
++
++ if (sysctl(mib, base::size(mib), &total_count, &length, NULL, 0) < 0) {
++ total_count = -1;
++ }
++
++ return total_count;
++}
++
++size_t ProcessMetrics::GetResidentSetSize() const {
++ kvm_t *kd = kvm_open(nullptr, "/dev/null", nullptr, O_RDONLY, "kvm_open");
++
++ if (kd == nullptr)
++ return 0;
++
++ struct kinfo_proc *pp;
++ int nproc;
++
++ if ((pp = kvm_getprocs(kd, KERN_PROC_PID, process_, &nproc)) == nullptr) {
++ kvm_close(kd);
++ return 0;
++ }
++
++ size_t rss;
++
++ if (nproc > 0) {
++ rss = pp->ki_rssize << GetPageShift();
++ } else {
++ rss = 0;
++ }
++
++ kvm_close(kd);
++ return rss;
++}
++
++uint64_t ProcessMetrics::GetVmSwapBytes() const {
++ kvm_t *kd = kvm_open(nullptr, "/dev/null", nullptr, O_RDONLY, "kvm_open");
++
++ if (kd == nullptr)
++ return 0;
++
++ struct kinfo_proc *pp;
++ int nproc;
++
++ if ((pp = kvm_getprocs(kd, KERN_PROC_PID, process_, &nproc)) == nullptr) {
++ kvm_close(kd);
++ return 0;
++ }
++
++ size_t swrss;
++
++ if (nproc > 0) {
++ swrss = pp->ki_swrss > pp->ki_rssize
++ ? (pp->ki_swrss - pp->ki_rssize) << GetPageShift()
++ : 0;
++ } else {
++ swrss = 0;
++ }
++
++ kvm_close(kd);
++ return swrss;
++}
++
++int ProcessMetrics::GetIdleWakeupsPerSecond() {
++ NOTIMPLEMENTED();
++ return 0;
++}
++
++bool GetSystemDiskInfo(SystemDiskInfo* diskinfo) {
++ NOTIMPLEMENTED();
++ return false;
++}
++
++bool GetVmStatInfo(VmStatInfo* vmstat) {
++ NOTIMPLEMENTED();
++ return false;
++}
++
++SystemDiskInfo::SystemDiskInfo() {
++ reads = 0;
++ reads_merged = 0;
++ sectors_read = 0;
++ read_time = 0;
++ writes = 0;
++ writes_merged = 0;
++ sectors_written = 0;
++ write_time = 0;
++ io = 0;
++ io_time = 0;
++ weighted_io_time = 0;
++}
++
++SystemDiskInfo::SystemDiskInfo(const SystemDiskInfo& other) = default;
++
++SystemDiskInfo& SystemDiskInfo::operator=(const SystemDiskInfo&) = default;
++
++Value SystemDiskInfo::ToValue() const {
++ Value res(Value::Type::DICTIONARY);
++
++ // Write out uint64_t variables as doubles.
++ // Note: this may discard some precision, but for JS there's no other option.
++ res.SetDoubleKey("reads", static_cast<double>(reads));
++ res.SetDoubleKey("reads_merged", static_cast<double>(reads_merged));
++ res.SetDoubleKey("sectors_read", static_cast<double>(sectors_read));
++ res.SetDoubleKey("read_time", static_cast<double>(read_time));
++ res.SetDoubleKey("writes", static_cast<double>(writes));
++ res.SetDoubleKey("writes_merged", static_cast<double>(writes_merged));
++ res.SetDoubleKey("sectors_written", static_cast<double>(sectors_written));
++ res.SetDoubleKey("write_time", static_cast<double>(write_time));
++ res.SetDoubleKey("io", static_cast<double>(io));
++ res.SetDoubleKey("io_time", static_cast<double>(io_time));
++ res.SetDoubleKey("weighted_io_time", static_cast<double>(weighted_io_time));
++
++ return res;
++}
++
++Value SystemMemoryInfoKB::ToValue() const {
++ Value res(Value::Type::DICTIONARY);
++
++ res.SetIntKey("total", total);
++ res.SetIntKey("free", free);
++ res.SetIntKey("available", available);
++ res.SetIntKey("buffers", buffers);
++ res.SetIntKey("cached", cached);
++ res.SetIntKey("active_anon", active_anon);
++ res.SetIntKey("inactive_anon", inactive_anon);
++ res.SetIntKey("active_file", active_file);
++ res.SetIntKey("inactive_file", inactive_file);
++ res.SetIntKey("swap_total", swap_total);
++ res.SetIntKey("swap_free", swap_free);
++ res.SetIntKey("swap_used", swap_total - swap_free);
++ res.SetIntKey("dirty", dirty);
++ res.SetIntKey("reclaimable", reclaimable);
++
++ return res;
++}
++
++Value VmStatInfo::ToValue() const {
++ Value res(Value::Type::DICTIONARY);
++
++ res.SetIntKey("pswpin", pswpin);
++ res.SetIntKey("pswpout", pswpout);
++ res.SetIntKey("pgmajfault", pgmajfault);
++
++ return res;
++}
+ } // namespace base
diff --git a/devel/electron17/files/patch-base_process_process__metrics__openbsd.cc b/devel/electron17/files/patch-base_process_process__metrics__openbsd.cc
new file mode 100644
index 000000000000..85426f65e018
--- /dev/null
+++ b/devel/electron17/files/patch-base_process_process__metrics__openbsd.cc
@@ -0,0 +1,213 @@
+--- base/process/process_metrics_openbsd.cc.orig 2022-05-11 07:16:46 UTC
++++ base/process/process_metrics_openbsd.cc
+@@ -4,14 +4,30 @@
+
+ #include "base/process/process_metrics.h"
+
++#include "base/files/file_util.h"
++#include "base/logging.h"
++#include "base/process/internal_linux.h"
++#include "base/strings/string_number_conversions.h"
++#include "base/strings/string_split.h"
++#include "base/strings/string_tokenizer.h"
++#include "base/strings/string_util.h"
++#include "base/system/sys_info.h"
++#include "base/threading/thread_restrictions.h"
++#include "base/notreached.h"
++
+ #include <stddef.h>
+ #include <stdint.h>
++#include <fcntl.h>
+ #include <sys/param.h>
+ #include <sys/sysctl.h>
++#include <sys/vmmeter.h>
+
++#include <kvm.h>
++
+ #include "base/cxx17_backports.h"
+ #include "base/memory/ptr_util.h"
+ #include "base/process/process_metrics_iocounters.h"
++#include "base/values.h"
+
+ namespace base {
+
+@@ -25,48 +41,13 @@ bool ProcessMetrics::GetIOCounters(IoCounters* io_coun
+ return false;
+ }
+
+-static int GetProcessCPU(pid_t pid) {
+- struct kinfo_proc info;
+- size_t length;
+- int mib[] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, pid,
+- sizeof(struct kinfo_proc), 0 };
+-
+- if (sysctl(mib, base::size(mib), NULL, &length, NULL, 0) < 0)
+- return -1;
+-
+- mib[5] = (length / sizeof(struct kinfo_proc));
+-
+- if (sysctl(mib, base::size(mib), &info, &length, NULL, 0) < 0)
+- return 0;
+-
+- return info.p_pctcpu;
+-}
+-
+-double ProcessMetrics::GetPlatformIndependentCPUUsage() {
+- TimeTicks time = TimeTicks::Now();
+-
+- if (last_cpu_time_.is_zero()) {
+- // First call, just set the last values.
+- last_cpu_time_ = time;
+- return 0;
+- }
+-
+- int cpu = GetProcessCPU(process_);
+-
+- last_cpu_time_ = time;
+- double percentage = static_cast<double>((cpu * 100.0) / FSCALE);
+-
+- return percentage;
+-}
+-
+ TimeDelta ProcessMetrics::GetCumulativeCPUUsage() {
+ NOTREACHED();
+ return TimeDelta();
+ }
+
+ ProcessMetrics::ProcessMetrics(ProcessHandle process)
+- : process_(process),
+- last_cpu_(0) {}
++ : process_(process) {}
+
+ size_t GetSystemCommitCharge() {
+ int mib[] = { CTL_VM, VM_METER };
+@@ -85,6 +66,129 @@ size_t GetSystemCommitCharge() {
+ pagesize = getpagesize();
+
+ return mem_total - (mem_free*pagesize) - (mem_inactive*pagesize);
++}
++
++int ProcessMetrics::GetOpenFdCount() const {
++ struct kinfo_file *files;
++ kvm_t *kd = NULL;
++ int total_count = 0;
++ char errbuf[_POSIX2_LINE_MAX];
++
++ if ((kd = kvm_openfiles(NULL, NULL, NULL, KVM_NO_FILES, errbuf)) == NULL)
++ goto out;
++
++ if ((files = kvm_getfiles(kd, KERN_FILE_BYPID, process_,
++ sizeof(struct kinfo_file), &total_count)) == NULL) {
++ total_count = 0;
++ goto out;
++ }
++
++ kvm_close(kd);
++
++out:
++ return total_count;
++}
++
++int ProcessMetrics::GetOpenFdSoftLimit() const {
++ return GetMaxFds();
++}
++
++uint64_t ProcessMetrics::GetVmSwapBytes() const {
++ NOTIMPLEMENTED();
++ return 0;
++}
++
++bool GetSystemMemoryInfo(SystemMemoryInfoKB* meminfo) {
++ NOTIMPLEMENTED_LOG_ONCE();
++ return false;
++}
++
++SystemDiskInfo::SystemDiskInfo() {
++ reads = 0;
++ reads_merged = 0;
++ sectors_read = 0;
++ read_time = 0;
++ writes = 0;
++ writes_merged = 0;
++ sectors_written = 0;
++ write_time = 0;
++ io = 0;
++ io_time = 0;
++ weighted_io_time = 0;
++}
++
++SystemDiskInfo::SystemDiskInfo(const SystemDiskInfo& other) = default;
++
++bool GetSystemDiskInfo(SystemDiskInfo* diskinfo) {
++ NOTIMPLEMENTED();
++ return false;
++}
++
++bool GetVmStatInfo(VmStatInfo* vmstat) {
++ NOTIMPLEMENTED();
++ return false;
++}
++
++int ProcessMetrics::GetIdleWakeupsPerSecond() {
++ NOTIMPLEMENTED();
++ return 0;
++}
++
++Value SystemMemoryInfoKB::ToValue() const {
++ Value res(Value::Type::DICTIONARY);
++ res.SetIntKey("total", total);
++ res.SetIntKey("free", free);
++ res.SetIntKey("available", available);
++ res.SetIntKey("buffers", buffers);
++ res.SetIntKey("cached", cached);
++ res.SetIntKey("active_anon", active_anon);
++ res.SetIntKey("inactive_anon", inactive_anon);
++ res.SetIntKey("active_file", active_file);
++ res.SetIntKey("inactive_file", inactive_file);
++ res.SetIntKey("swap_total", swap_total);
++ res.SetIntKey("swap_free", swap_free);
++ res.SetIntKey("swap_used", swap_total - swap_free);
++ res.SetIntKey("dirty", dirty);
++ res.SetIntKey("reclaimable", reclaimable);
++
++ NOTIMPLEMENTED();
++
++ return res;
++}
++
++Value VmStatInfo::ToValue() const {
++ Value res(Value::Type::DICTIONARY);
++ res.SetIntKey("pswpin", pswpin);
++ res.SetIntKey("pswpout", pswpout);
++ res.SetIntKey("pgmajfault", pgmajfault);
++
++ NOTIMPLEMENTED();
++
++ return res;
++}
++
++SystemDiskInfo& SystemDiskInfo::operator=(const SystemDiskInfo&) = default;
++
++Value SystemDiskInfo::ToValue() const {
++ Value res(Value::Type::DICTIONARY);
++
++ // Write out uint64_t variables as doubles.
++ // Note: this may discard some precision, but for JS there's no other option.
++ res.SetDoubleKey("reads", static_cast<double>(reads));
++ res.SetDoubleKey("reads_merged", static_cast<double>(reads_merged));
++ res.SetDoubleKey("sectors_read", static_cast<double>(sectors_read));
++ res.SetDoubleKey("read_time", static_cast<double>(read_time));
++ res.SetDoubleKey("writes", static_cast<double>(writes));
++ res.SetDoubleKey("writes_merged", static_cast<double>(writes_merged));
++ res.SetDoubleKey("sectors_written", static_cast<double>(sectors_written));
++ res.SetDoubleKey("write_time", static_cast<double>(write_time));
++ res.SetDoubleKey("io", static_cast<double>(io));
++ res.SetDoubleKey("io_time", static_cast<double>(io_time));
++ res.SetDoubleKey("weighted_io_time", static_cast<double>(weighted_io_time));
++
++ NOTIMPLEMENTED();
++
++ return res;
+ }
+
+ } // namespace base
diff --git a/devel/electron17/files/patch-base_process_process__metrics__posix.cc b/devel/electron17/files/patch-base_process_process__metrics__posix.cc
new file mode 100644
index 000000000000..c90cceb4e8b9
--- /dev/null
+++ b/devel/electron17/files/patch-base_process_process__metrics__posix.cc
@@ -0,0 +1,20 @@
+--- base/process/process_metrics_posix.cc.orig 2022-05-11 07:16:46 UTC
++++ base/process/process_metrics_posix.cc
+@@ -20,6 +20,8 @@
+
+ #if defined(OS_APPLE)
+ #include <malloc/malloc.h>
++#elif defined(OS_OPENBSD)
++#include <stdlib.h>
+ #else
+ #include <malloc.h>
+ #endif
+@@ -136,7 +138,7 @@ size_t ProcessMetrics::GetMallocUsage() {
+ return stats.size_in_use;
+ #elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
+ return GetMallocUsageMallinfo();
+-#elif defined(OS_FUCHSIA)
++#elif defined(OS_FUCHSIA) || defined(OS_BSD)
+ // TODO(fuchsia): Not currently exposed. https://crbug.com/735087.
+ return 0;
+ #endif
diff --git a/devel/electron17/files/patch-base_process_process__posix.cc b/devel/electron17/files/patch-base_process_process__posix.cc
new file mode 100644
index 000000000000..048e7c3ba708
--- /dev/null
+++ b/devel/electron17/files/patch-base_process_process__posix.cc
@@ -0,0 +1,70 @@
+--- base/process/process_posix.cc.orig 2022-05-11 07:16:46 UTC
++++ base/process/process_posix.cc
+@@ -27,6 +27,11 @@
+ #include <sys/event.h>
+ #endif
+
++#if defined(OS_BSD)
++#include <sys/types.h>
++#include <sys/sysctl.h>
++#endif
++
+ #if BUILDFLAG(CLANG_PROFILING)
+ #include "base/test/clang_profiling.h"
+ #endif
+@@ -358,7 +363,55 @@ void Process::Exited(int exit_code) const {}
+
+ int Process::GetPriority() const {
+ DCHECK(IsValid());
++// avoid pledge(2) violation
++#if defined(OS_BSD)
++ return 0;
++#else
+ return getpriority(PRIO_PROCESS, process_);
++#endif
++}
++
++Time Process::CreationTime() const {
++// avoid ps pledge in the network process
++#if !defined(OS_BSD)
++ int mib[] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, getpid(),
++ sizeof(struct kinfo_proc), 0 };
++ struct kinfo_proc *info = nullptr;
++ size_t info_size;
++#endif
++ Time ct = Time();
++
++#if !defined(OS_BSD)
++ if (sysctl(mib, base::size(mib), NULL, &info_size, NULL, 0) < 0)
++ goto out;
++
++ mib[5] = (info_size / sizeof(struct kinfo_proc));
++ if ((info = reinterpret_cast<kinfo_proc*>(malloc(info_size))) == NULL)
++ goto out;
++
++ if (sysctl(mib, base::size(mib), info, &info_size, NULL, 0) < 0)
++ goto out;
++
++ ct = Time::FromTimeT(info->p_ustart_sec);
++
++out:
++ if (info)
++ free(info);
++#endif
++ return ct;
++}
++
++bool Process::IsProcessBackgrounded() const {
++ return false;
++}
++
++bool Process::SetProcessBackgrounded(bool value) {
++ return false;
++}
++
++// static
++bool Process::CanBackgroundProcesses() {
++ return false;
+ }
+
+ } // namespace base
diff --git a/devel/electron17/files/patch-base_rand__util.h b/devel/electron17/files/patch-base_rand__util.h
new file mode 100644
index 000000000000..2f5de1b76772
--- /dev/null
+++ b/devel/electron17/files/patch-base_rand__util.h
@@ -0,0 +1,11 @@
+--- base/rand_util.h.orig 2022-05-11 07:16:46 UTC
++++ base/rand_util.h
+@@ -77,7 +77,7 @@ void RandomShuffle(Itr first, Itr last) {
+ std::shuffle(first, last, RandomBitGenerator());
+ }
+
+-#if defined(OS_POSIX)
++#if defined(OS_POSIX) && !defined(OS_OPENBSD)
+ BASE_EXPORT int GetUrandomFD();
+ #endif
+
diff --git a/devel/electron17/files/patch-base_rand__util__posix.cc b/devel/electron17/files/patch-base_rand__util__posix.cc
new file mode 100644
index 000000000000..e6a72a7fb9f3
--- /dev/null
+++ b/devel/electron17/files/patch-base_rand__util__posix.cc
@@ -0,0 +1,52 @@
+--- base/rand_util_posix.cc.orig 2022-05-11 07:16:46 UTC
++++ base/rand_util_posix.cc
+@@ -17,7 +17,7 @@
+ #include "base/posix/eintr_wrapper.h"
+ #include "build/build_config.h"
+
+-#if (defined(OS_LINUX) || defined(OS_CHROMEOS)) && !defined(OS_NACL)
++#if (defined(OS_LINUX) || defined(OS_CHROMEOS)) && !defined(OS_NACL) && !defined(OS_BSD)
+ #include "third_party/lss/linux_syscall_support.h"
+ #elif defined(OS_MAC)
+ // TODO(crbug.com/995996): Waiting for this header to appear in the iOS SDK.
+@@ -34,6 +34,7 @@ static constexpr int kOpenFlags = O_RDONLY;
+ static constexpr int kOpenFlags = O_RDONLY | O_CLOEXEC;
+ #endif
+
++#if !defined(OS_OPENBSD)
+ // We keep the file descriptor for /dev/urandom around so we don't need to
+ // reopen it (which is expensive), and since we may not even be able to reopen
+ // it if we are later put in a sandbox. This class wraps the file descriptor so
+@@ -51,6 +52,7 @@ class URandomFd {
+ private:
+ const int fd_;
+ };
++#endif
+
+ } // namespace
+
+@@ -62,6 +64,7 @@ namespace base {
+ // (https://chromium-review.googlesource.com/c/chromium/src/+/1545096) and land
+ // it or some form of it.
+ void RandBytes(void* output, size_t output_length) {
++#if !defined(OS_OPENBSD)
+ #if (defined(OS_LINUX) || defined(OS_CHROMEOS)) && !defined(OS_NACL)
+ // We have to call `getrandom` via Linux Syscall Support, rather than through
+ // the libc wrapper, because we might not have an up-to-date libc (e.g. on
+@@ -93,11 +96,16 @@ void RandBytes(void* output, size_t output_length) {
+ const bool success =
+ ReadFromFD(urandom_fd, static_cast<char*>(output), output_length);
+ CHECK(success);
++#else
++ arc4random_buf(static_cast<char*>(output), output_length);
++#endif
+ }
+
++#if !defined(OS_OPENBSD)
+ int GetUrandomFD() {
+ static NoDestructor<URandomFd> urandom_fd;
+ return urandom_fd->fd();
+ }
++#endif
+
+ } // namespace base
diff --git a/devel/electron17/files/patch-base_strings_string__util.cc b/devel/electron17/files/patch-base_strings_string__util.cc
new file mode 100644
index 000000000000..d4d6856c507e
--- /dev/null
+++ b/devel/electron17/files/patch-base_strings_string__util.cc
@@ -0,0 +1,11 @@
+--- base/strings/string_util.cc.orig 2022-05-11 07:16:46 UTC
++++ base/strings/string_util.cc
+@@ -36,7 +36,7 @@ namespace base {
+ bool IsWprintfFormatPortable(const wchar_t* format) {
+ // This snippet of code checks that we can build C++17 code.
+ // TODO(thakis): Enable this on all platforms, and then remove it again.
+-#if !defined(OS_LINUX) && !BUILDFLAG(CFI_ICALL_CHECK) && \
++#if !defined(OS_LINUX) && !defined(OS_BSD) && !BUILDFLAG(CFI_ICALL_CHECK) && \
+ !BUILDFLAG(CFI_CAST_CHECK)
+ if constexpr (constexpr int i = 0; i > 0) {
+ }
diff --git a/devel/electron17/files/patch-base_synchronization_lock__impl.h b/devel/electron17/files/patch-base_synchronization_lock__impl.h
new file mode 100644
index 000000000000..c371c359eafb
--- /dev/null
+++ b/devel/electron17/files/patch-base_synchronization_lock__impl.h
@@ -0,0 +1,23 @@
+--- base/synchronization/lock_impl.h.orig 2022-05-11 07:16:46 UTC
++++ base/synchronization/lock_impl.h
+@@ -107,6 +107,10 @@ void LockImpl::Unlock() {
+ }
+
+ #elif defined(OS_POSIX) || defined(OS_FUCHSIA)
++#if defined(OS_FREEBSD)
++#pragma GCC diagnostic push
++#pragma GCC diagnostic ignored "-Wthread-safety-analysis"
++#endif
+
+ BASE_EXPORT std::string SystemErrorCodeToString(int error_code);
+
+@@ -121,6 +125,9 @@ void LockImpl::Unlock() {
+ int rv = pthread_mutex_unlock(&native_handle_);
+ DCHECK_EQ(rv, 0) << ". " << strerror(rv);
+ }
++#if defined(OS_FREEBSD)
++#pragma GCC diagnostic pop
++#endif
+ #endif
+
+ // This is an implementation used for AutoLock templated on the lock type.
diff --git a/devel/electron17/files/patch-base_syslog__logging.cc b/devel/electron17/files/patch-base_syslog__logging.cc
new file mode 100644
index 000000000000..3c179fa084ef
--- /dev/null
+++ b/devel/electron17/files/patch-base_syslog__logging.cc
@@ -0,0 +1,20 @@
+--- base/syslog_logging.cc.orig 2022-05-11 07:16:46 UTC
++++ base/syslog_logging.cc
+@@ -13,7 +13,7 @@
+ #include "base/strings/string_util.h"
+ #include "base/win/scoped_handle.h"
+ #include "base/win/win_util.h"
+-#elif defined(OS_LINUX) || defined(OS_CHROMEOS)
++#elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // <syslog.h> defines LOG_INFO, LOG_WARNING macros that could conflict with
+ // base::LOG_INFO, base::LOG_WARNING.
+ #include <syslog.h>
+@@ -145,7 +145,7 @@ EventLogMessage::~EventLogMessage() {
+
+ if (user_sid != nullptr)
+ ::LocalFree(user_sid);
+-#elif defined(OS_LINUX) || defined(OS_CHROMEOS)
++#elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ const char kEventSource[] = "chrome";
+ openlog(kEventSource, LOG_NOWAIT | LOG_PID, LOG_USER);
+ // We can't use the defined names for the logging severity from syslog.h
diff --git a/devel/electron17/files/patch-base_system_sys__info.cc b/devel/electron17/files/patch-base_system_sys__info.cc
new file mode 100644
index 000000000000..72c69e2c34d1
--- /dev/null
+++ b/devel/electron17/files/patch-base_system_sys__info.cc
@@ -0,0 +1,11 @@
+--- base/system/sys_info.cc.orig 2022-05-11 07:16:46 UTC
++++ base/system/sys_info.cc
+@@ -100,7 +100,7 @@ void SysInfo::GetHardwareInfo(base::OnceCallback<void(
+ #if defined(OS_WIN) || defined(OS_ANDROID) || defined(OS_APPLE)
+ base::ThreadPool::PostTaskAndReplyWithResult(
+ FROM_HERE, {}, base::BindOnce(&GetHardwareInfoSync), std::move(callback));
+-#elif defined(OS_LINUX) || defined(OS_CHROMEOS)
++#elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ base::ThreadPool::PostTaskAndReplyWithResult(
+ FROM_HERE, {base::MayBlock()}, base::BindOnce(&GetHardwareInfoSync),
+ std::move(callback));
diff --git a/devel/electron17/files/patch-base_system_sys__info.h b/devel/electron17/files/patch-base_system_sys__info.h
new file mode 100644
index 000000000000..c98a35111ec7
--- /dev/null
+++ b/devel/electron17/files/patch-base_system_sys__info.h
@@ -0,0 +1,20 @@
+--- base/system/sys_info.h.orig 2022-05-11 07:16:46 UTC
++++ base/system/sys_info.h
+@@ -236,6 +236,8 @@ class BASE_EXPORT SysInfo {
+ // On Desktop this returns true when memory <= 2GB.
+ static bool IsLowEndDevice();
+
++ static uint64_t MaxSharedMemorySize();
++
+ private:
+ FRIEND_TEST_ALL_PREFIXES(SysInfoTest, AmountOfAvailablePhysicalMemory);
+ FRIEND_TEST_ALL_PREFIXES(debug::SystemMetricsTest, ParseMeminfo);
+@@ -246,7 +248,7 @@ class BASE_EXPORT SysInfo {
+ static HardwareInfo GetHardwareInfoSync();
+
+ #if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID) || \
+- defined(OS_AIX)
++ defined(OS_AIX) || defined(OS_BSD)
+ static int64_t AmountOfAvailablePhysicalMemory(
+ const SystemMemoryInfoKB& meminfo);
+ #endif
diff --git a/devel/electron17/files/patch-base_system_sys__info__freebsd.cc b/devel/electron17/files/patch-base_system_sys__info__freebsd.cc
new file mode 100644
index 000000000000..f479b84ebdd5
--- /dev/null
+++ b/devel/electron17/files/patch-base_system_sys__info__freebsd.cc
@@ -0,0 +1,102 @@
+--- base/system/sys_info_freebsd.cc.orig 2021-01-07 00:36:18 UTC
++++ base/system/sys_info_freebsd.cc
+@@ -9,30 +9,95 @@
+ #include <sys/sysctl.h>
+
+ #include "base/notreached.h"
++#include "base/process/process_metrics.h"
++#include "base/strings/string_util.h"
+
+ namespace base {
+
+ int64_t SysInfo::AmountOfPhysicalMemoryImpl() {
+- int pages, page_size;
++ int pages, page_size, r = 0;
+ size_t size = sizeof(pages);
+- sysctlbyname("vm.stats.vm.v_page_count", &pages, &size, NULL, 0);
+- sysctlbyname("vm.stats.vm.v_page_size", &page_size, &size, NULL, 0);
+- if (pages == -1 || page_size == -1) {
++
++ if (r == 0)
++ r = sysctlbyname("vm.stats.vm.v_page_count", &pages, &size, NULL, 0);
++ if (r == 0)
++ r = sysctlbyname("vm.stats.vm.v_page_size", &page_size, &size, NULL, 0);
++
++ if (r == -1) {
+ NOTREACHED();
+ return 0;
+ }
++
+ return static_cast<int64_t>(pages) * page_size;
+ }
+
++int64_t SysInfo::AmountOfAvailablePhysicalMemoryImpl() {
++ int page_size, r = 0;
++ unsigned int pgfree, pginact, pgcache;
++ size_t size = sizeof(page_size);
++ size_t szpg = sizeof(pgfree);
++
++ if (r == 0)
++ r = sysctlbyname("vm.stats.vm.v_page_size", &page_size, &size, NULL, 0);
++ if (r == 0)
++ r = sysctlbyname("vm.stats.vm.v_free_count", &pgfree, &szpg, NULL, 0);
++ if (r == 0)
++ r = sysctlbyname("vm.stats.vm.v_inactive_count", &pginact, &szpg, NULL, 0);
++ if (r == 0)
++ r = sysctlbyname("vm.stats.vm.v_cache_count", &pgcache, &szpg, NULL, 0);
++
++ if (r == -1) {
++ NOTREACHED();
++ return 0;
++ }
++
++ return static_cast<int64_t>((pgfree + pginact + pgcache) * page_size);
++}
++
+ // static
++int64_t SysInfo::AmountOfAvailablePhysicalMemory(const SystemMemoryInfoKB& info) {
++ int64_t res_kb = info.available != 0
++ ? info.available - info.active_file
++ : info.free + info.reclaimable + info.inactive_file;
++ return res_kb * 1024;
++}
++
++// static
++std::string SysInfo::CPUModelName() {
++ int mib[] = { CTL_HW, HW_MODEL };
++ char name[256];
++ size_t size = base::size(name);
++
++ if (sysctl(mib, base::size(mib), &name, &size, NULL, 0) == 0) {
++ return name;
++ }
++
++ return std::string();
++}
++
++// static
+ uint64_t SysInfo::MaxSharedMemorySize() {
+ size_t limit;
+ size_t size = sizeof(limit);
++
+ if (sysctlbyname("kern.ipc.shmmax", &limit, &size, NULL, 0) < 0) {
+ NOTREACHED();
+ return 0;
+ }
++
+ return static_cast<uint64_t>(limit);
++}
++
++SysInfo::HardwareInfo SysInfo::GetHardwareInfoSync() {
++ HardwareInfo info;
++
++ info.manufacturer = "FreeBSD";
++ info.model = HardwareModelName();
++
++ DCHECK(IsStringUTF8(info.manufacturer));
++ DCHECK(IsStringUTF8(info.model));
++
++ return info;
+ }
+
+ } // namespace base
diff --git a/devel/electron17/files/patch-base_system_sys__info__openbsd.cc b/devel/electron17/files/patch-base_system_sys__info__openbsd.cc
new file mode 100644
index 000000000000..cd34b6db52c5
--- /dev/null
+++ b/devel/electron17/files/patch-base_system_sys__info__openbsd.cc
@@ -0,0 +1,100 @@
+--- base/system/sys_info_openbsd.cc.orig 2022-05-11 07:16:46 UTC
++++ base/system/sys_info_openbsd.cc
+@@ -12,6 +12,7 @@
+
+ #include "base/cxx17_backports.h"
+ #include "base/notreached.h"
++#include "base/strings/string_util.h"
+
+ namespace {
+
+@@ -29,9 +30,14 @@ int64_t AmountOfMemory(int pages_name) {
+
+ namespace base {
+
++// pledge(2)
++int64_t aofpmem = 0;
++int64_t aofapmem = 0;
++int64_t shmmax = 0;
++
+ // static
+ int SysInfo::NumberOfProcessors() {
+- int mib[] = {CTL_HW, HW_NCPU};
++ int mib[] = {CTL_HW, HW_NCPUONLINE};
+ int ncpu;
+ size_t size = sizeof(ncpu);
+ if (sysctl(mib, base::size(mib), &ncpu, &size, NULL, 0) < 0) {
+@@ -43,38 +49,61 @@ int SysInfo::NumberOfProcessors() {
+
+ // static
+ int64_t SysInfo::AmountOfPhysicalMemoryImpl() {
+- return AmountOfMemory(_SC_PHYS_PAGES);
++ // pledge(2)
++ if (!aofpmem)
++ aofpmem = AmountOfMemory(_SC_PHYS_PAGES);
++ return aofpmem;
+ }
+
+ // static
+ int64_t SysInfo::AmountOfAvailablePhysicalMemoryImpl() {
+ // We should add inactive file-backed memory also but there is no such
+ // information from OpenBSD unfortunately.
+- return AmountOfMemory(_SC_AVPHYS_PAGES);
++ // pledge(2)
++ if (!aofapmem)
++ aofapmem = AmountOfMemory(_SC_AVPHYS_PAGES);
++ return aofapmem;
+ }
+
+ // static
++std::string SysInfo::CPUModelName() {
++ int mib[] = {CTL_HW, HW_MODEL};
++ char name[256];
++ size_t len = base::size(name);
++ if (sysctl(mib, base::size(mib), name, &len, NULL, 0) < 0) {
++ NOTREACHED();
++ return std::string();
++ }
++ return name;
++}
++
++// static
+ uint64_t SysInfo::MaxSharedMemorySize() {
+ int mib[] = {CTL_KERN, KERN_SHMINFO, KERN_SHMINFO_SHMMAX};
+ size_t limit;
+ size_t size = sizeof(limit);
++ // pledge(2)
++ if (shmmax)
++ goto out;
+ if (sysctl(mib, base::size(mib), &limit, &size, NULL, 0) < 0) {
+ NOTREACHED();
+ return 0;
+ }
+- return static_cast<uint64_t>(limit);
++ shmmax = static_cast<uint64_t>(limit);
++out:
++ return shmmax;
+ }
+
+ // static
+-std::string SysInfo::CPUModelName() {
+- int mib[] = {CTL_HW, HW_MODEL};
+- char name[256];
+- size_t len = base::size(name);
+- if (sysctl(mib, base::size(mib), name, &len, NULL, 0) < 0) {
+- NOTREACHED();
+- return std::string();
+- }
+- return name;
++SysInfo::HardwareInfo SysInfo::GetHardwareInfoSync() {
++ HardwareInfo info;
++ // Set the manufacturer to "OpenBSD" and the model to
++ // an empty string.
++ info.manufacturer = "OpenBSD";
++ info.model = HardwareModelName();
++ DCHECK(IsStringUTF8(info.manufacturer));
++ DCHECK(IsStringUTF8(info.model));
++ return info;
+ }
+
+ } // namespace base
diff --git a/devel/electron17/files/patch-base_system_sys__info__posix.cc b/devel/electron17/files/patch-base_system_sys__info__posix.cc
new file mode 100644
index 000000000000..9ad3f736d8da
--- /dev/null
+++ b/devel/electron17/files/patch-base_system_sys__info__posix.cc
@@ -0,0 +1,11 @@
+--- base/system/sys_info_posix.cc.orig 2022-05-11 07:16:46 UTC
++++ base/system/sys_info_posix.cc
+@@ -252,6 +252,8 @@ std::string SysInfo::OperatingSystemArchitecture() {
+ arch = "x86";
+ } else if (arch == "amd64") {
+ arch = "x86_64";
++ } else if (arch == "arm64") {
++ arch = "aarch64";
+ } else if (std::string(info.sysname) == "AIX") {
+ arch = "ppc64";
+ }
diff --git a/devel/electron17/files/patch-base_test_launcher_test__launcher.cc b/devel/electron17/files/patch-base_test_launcher_test__launcher.cc
new file mode 100644
index 000000000000..484b636db0ae
--- /dev/null
+++ b/devel/electron17/files/patch-base_test_launcher_test__launcher.cc
@@ -0,0 +1,10 @@
+--- base/test/launcher/test_launcher.cc.orig 2022-05-11 07:16:46 UTC
++++ base/test/launcher/test_launcher.cc
+@@ -63,6 +63,7 @@
+ #include "testing/gtest/include/gtest/gtest.h"
+
+ #if defined(OS_POSIX)
++#include <signal.h>
+ #include <fcntl.h>
+
+ #include "base/files/file_descriptor_watcher_posix.h"
diff --git a/devel/electron17/files/patch-base_test_test__file__util__linux.cc b/devel/electron17/files/patch-base_test_test__file__util__linux.cc
new file mode 100644
index 000000000000..026207f033fd
--- /dev/null
+++ b/devel/electron17/files/patch-base_test_test__file__util__linux.cc
@@ -0,0 +1,13 @@
+--- base/test/test_file_util_linux.cc.orig 2022-05-11 07:16:46 UTC
++++ base/test/test_file_util_linux.cc
+@@ -52,8 +52,10 @@ bool EvictFileFromSystemCache(const FilePath& file) {
+ return false;
+ if (fdatasync(fd.get()) != 0)
+ return false;
++#if !defined(OS_BSD)
+ if (posix_fadvise(fd.get(), 0, 0, POSIX_FADV_DONTNEED) != 0)
+ return false;
++#endif
+ return true;
+ }
+
diff --git a/devel/electron17/files/patch-base_third__party_libevent_BUILD.gn b/devel/electron17/files/patch-base_third__party_libevent_BUILD.gn
new file mode 100644
index 000000000000..54a799039c66
--- /dev/null
+++ b/devel/electron17/files/patch-base_third__party_libevent_BUILD.gn
@@ -0,0 +1,24 @@
+--- base/third_party/libevent/BUILD.gn.orig 2021-01-07 00:36:18 UTC
++++ base/third_party/libevent/BUILD.gn
+@@ -43,13 +43,20 @@ static_library("libevent") {
+ "mac/event-config.h",
+ ]
+ include_dirs = [ "mac" ]
+- } else if (is_linux || is_chromeos) {
++ } else if ((is_linux || is_chromeos) && !is_bsd) {
+ sources += [
+ "epoll.c",
+ "linux/config.h",
+ "linux/event-config.h",
+ ]
+ include_dirs = [ "linux" ]
++ } else if (is_bsd) {
++ sources += [
++ "kqueue.c",
++ "freebsd/config.h",
++ "freebsd/event-config.h",
++ ]
++ include_dirs = [ "freebsd" ]
+ } else if (is_android) {
+ sources += [
+ "android/config.h",
diff --git a/devel/electron17/files/patch-base_third__party_libevent_event-config.h b/devel/electron17/files/patch-base_third__party_libevent_event-config.h
new file mode 100644
index 000000000000..4bff75e5c811
--- /dev/null
+++ b/devel/electron17/files/patch-base_third__party_libevent_event-config.h
@@ -0,0 +1,11 @@
+--- base/third_party/libevent/event-config.h.orig 2022-05-11 07:00:27 UTC
++++ base/third_party/libevent/event-config.h
+@@ -13,6 +13,8 @@
+ #include "base/third_party/libevent/linux/event-config.h"
+ #elif defined(__FreeBSD__)
+ #include "base/third_party/libevent/freebsd/event-config.h"
++#elif defined(__OpenBSD__)
++#include "base/third_party/libevent/openbsd/event-config.h"
+ #elif defined(__sun)
+ #include "base/third_party/libevent/solaris/event-config.h"
+ #elif defined(_AIX)
diff --git a/devel/electron17/files/patch-base_third__party_libevent_openbsd_config.h b/devel/electron17/files/patch-base_third__party_libevent_openbsd_config.h
new file mode 100644
index 000000000000..cb325373930e
--- /dev/null
+++ b/devel/electron17/files/patch-base_third__party_libevent_openbsd_config.h
@@ -0,0 +1,279 @@
+--- base/third_party/libevent/openbsd/config.h.orig 2022-05-13 07:20:04 UTC
++++ base/third_party/libevent/openbsd/config.h
+@@ -0,0 +1,276 @@
++/* config.h. Generated from config.h.in by configure. */
++/* config.h.in. Generated from configure.in by autoheader. */
++
++/* Define if clock_gettime is available in libc */
++#define DNS_USE_CPU_CLOCK_FOR_ID 1
++
++/* Define is no secure id variant is available */
++/* #undef DNS_USE_GETTIMEOFDAY_FOR_ID */
++
++/* Define to 1 if you have the `clock_gettime' function. */
++#define HAVE_CLOCK_GETTIME 1
++
++/* Define if /dev/poll is available */
++/* #undef HAVE_DEVPOLL */
++
++/* Define to 1 if you have the <dlfcn.h> header file. */
++#define HAVE_DLFCN_H 1
++
++/* Define if your system supports the epoll system calls */
++/* #undef HAVE_EPOLL */
++
++/* Define to 1 if you have the `epoll_ctl' function. */
++/* #undef HAVE_EPOLL_CTL */
++
++/* Define if your system supports event ports */
++/* #undef HAVE_EVENT_PORTS */
++
++/* Define to 1 if you have the `fcntl' function. */
++#define HAVE_FCNTL 1
++
++/* Define to 1 if you have the <fcntl.h> header file. */
++#define HAVE_FCNTL_H 1
++
++/* Define to 1 if the system has the type `fd_mask'. */
++#define HAVE_FD_MASK 1
++
++/* Define to 1 if you have the `getaddrinfo' function. */
++#define HAVE_GETADDRINFO 1
++
++/* Define to 1 if you have the `getegid' function. */
++#define HAVE_GETEGID 1
++
++/* Define to 1 if you have the `geteuid' function. */
++#define HAVE_GETEUID 1
++
++/* Define to 1 if you have the `getnameinfo' function. */
++#define HAVE_GETNAMEINFO 1
++
++/* Define to 1 if you have the `gettimeofday' function. */
++#define HAVE_GETTIMEOFDAY 1
++
++/* Define to 1 if you have the `inet_ntop' function. */
++#define HAVE_INET_NTOP 1
++
++/* Define to 1 if you have the <inttypes.h> header file. */
++#define HAVE_INTTYPES_H 1
++
++/* Define to 1 if you have the `issetugid' function. */
++#define HAVE_ISSETUGID 1
++
++/* Define to 1 if you have the `kqueue' function. */
++#define HAVE_KQUEUE 1
++
++/* Define to 1 if you have the `nsl' library (-lnsl). */
++/* #undef HAVE_LIBNSL */
++
++/* Define to 1 if you have the `resolv' library (-lresolv). */
++/* #undef HAVE_LIBRESOLV */
++
++/* Define to 1 if you have the `rt' library (-lrt). */
++/* #undef HAVE_LIBRT */
++
++/* Define to 1 if you have the `socket' library (-lsocket). */
++/* #undef HAVE_LIBSOCKET */
++
++/* Define to 1 if you have the <memory.h> header file. */
++#define HAVE_MEMORY_H 1
++
++/* Define to 1 if you have the <netinet/in6.h> header file. */
++/* #undef HAVE_NETINET_IN6_H */
++
++/* Define to 1 if you have the `poll' function. */
++#define HAVE_POLL 1
++
++/* Define to 1 if you have the <poll.h> header file. */
++#define HAVE_POLL_H 1
++
++/* Define to 1 if you have the `port_create' function. */
++/* #undef HAVE_PORT_CREATE */
++
++/* Define to 1 if you have the <port.h> header file. */
++/* #undef HAVE_PORT_H */
++
++/* Define to 1 if you have the `select' function. */
++#define HAVE_SELECT 1
++
++/* Define if F_SETFD is defined in <fcntl.h> */
++#define HAVE_SETFD 1
++
++/* Define to 1 if you have the `sigaction' function. */
++#define HAVE_SIGACTION 1
++
++/* Define to 1 if you have the `signal' function. */
++#define HAVE_SIGNAL 1
++
++/* Define to 1 if you have the <signal.h> header file. */
++#define HAVE_SIGNAL_H 1
++
++/* Define to 1 if you have the <stdarg.h> header file. */
++#define HAVE_STDARG_H 1
++
++/* Define to 1 if you have the <stdint.h> header file. */
++#define HAVE_STDINT_H 1
++
++/* Define to 1 if you have the <stdlib.h> header file. */
++#define HAVE_STDLIB_H 1
++
++/* Define to 1 if you have the <strings.h> header file. */
++#define HAVE_STRINGS_H 1
++
++/* Define to 1 if you have the <string.h> header file. */
++#define HAVE_STRING_H 1
++
++/* Define to 1 if you have the `strlcpy' function. */
++#define HAVE_STRLCPY 1
++
++/* Define to 1 if you have the `strsep' function. */
++#define HAVE_STRSEP 1
++
++/* Define to 1 if you have the `strtok_r' function. */
++#define HAVE_STRTOK_R 1
++
++/* Define to 1 if you have the `strtoll' function. */
++#define HAVE_STRTOLL 1
++
++/* Define to 1 if the system has the type `struct in6_addr'. */
++#define HAVE_STRUCT_IN6_ADDR 1
++
++/* Define to 1 if you have the <sys/devpoll.h> header file. */
++/* #undef HAVE_SYS_DEVPOLL_H */
++
++/* Define to 1 if you have the <sys/epoll.h> header file. */
++/* #undef HAVE_SYS_EPOLL_H */
++
++/* Define to 1 if you have the <sys/event.h> header file. */
++#define HAVE_SYS_EVENT_H 1
++
++/* Define to 1 if you have the <sys/ioctl.h> header file. */
++#define HAVE_SYS_IOCTL_H 1
++
++/* Define to 1 if you have the <sys/param.h> header file. */
++#define HAVE_SYS_PARAM_H 1
++
++/* Define to 1 if you have the <sys/queue.h> header file. */
++#define HAVE_SYS_QUEUE_H 1
++
++/* Define to 1 if you have the <sys/select.h> header file. */
++#define HAVE_SYS_SELECT_H 1
++
++/* Define to 1 if you have the <sys/socket.h> header file. */
++#define HAVE_SYS_SOCKET_H 1
++
++/* Define to 1 if you have the <sys/stat.h> header file. */
++#define HAVE_SYS_STAT_H 1
++
++/* Define to 1 if you have the <sys/time.h> header file. */
++#define HAVE_SYS_TIME_H 1
++
++/* Define to 1 if you have the <sys/types.h> header file. */
++#define HAVE_SYS_TYPES_H 1
++
++/* Define if TAILQ_FOREACH is defined in <sys/queue.h> */
++#define HAVE_TAILQFOREACH 1
++
++/* Define if timeradd is defined in <sys/time.h> */
++#define HAVE_TIMERADD 1
++
++/* Define if timerclear is defined in <sys/time.h> */
++#define HAVE_TIMERCLEAR 1
++
++/* Define if timercmp is defined in <sys/time.h> */
++#define HAVE_TIMERCMP 1
++
++/* Define if timerisset is defined in <sys/time.h> */
++#define HAVE_TIMERISSET 1
++
++/* Define to 1 if the system has the type `uint16_t'. */
++#define HAVE_UINT16_T 1
++
++/* Define to 1 if the system has the type `uint32_t'. */
++#define HAVE_UINT32_T 1
++
++/* Define to 1 if the system has the type `uint64_t'. */
++#define HAVE_UINT64_T 1
++
++/* Define to 1 if the system has the type `uint8_t'. */
++#define HAVE_UINT8_T 1
++
++/* Define to 1 if you have the <unistd.h> header file. */
++#define HAVE_UNISTD_H 1
++
++/* Define to 1 if you have the `vasprintf' function. */
++#define HAVE_VASPRINTF 1
++
++/* Define if kqueue works correctly with pipes */
++#define HAVE_WORKING_KQUEUE 1
++
++/* Define to the sub-directory in which libtool stores uninstalled libraries.
++ */
++#define LT_OBJDIR ".libs/"
++
++/* Numeric representation of the version */
++#define NUMERIC_VERSION 0x01040f00
++
++/* Name of package */
++#define PACKAGE "libevent"
++
++/* Define to the address where bug reports for this package should be sent. */
++#define PACKAGE_BUGREPORT ""
++
++/* Define to the full name of this package. */
++#define PACKAGE_NAME ""
++
++/* Define to the full name and version of this package. */
++#define PACKAGE_STRING ""
++
++/* Define to the one symbol short name of this package. */
++#define PACKAGE_TARNAME ""
++
++/* Define to the home page for this package. */
++#define PACKAGE_URL ""
++
++/* Define to the version of this package. */
++#define PACKAGE_VERSION ""
++
++/* The size of `int', as computed by sizeof. */
++#define SIZEOF_INT 4
++
++/* The size of `long', as computed by sizeof. */
++#define SIZEOF_LONG 8
++
++/* The size of `long long', as computed by sizeof. */
++#define SIZEOF_LONG_LONG 8
++
++/* The size of `short', as computed by sizeof. */
++#define SIZEOF_SHORT 2
++
++/* Define to 1 if you have the ANSI C header files. */
++#define STDC_HEADERS 1
++
++/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
++#define TIME_WITH_SYS_TIME 1
++
++/* Version number of package */
++#define VERSION "1.4.15"
++
++/* Define to appropriate substitue if compiler doesnt have __func__ */
++/* #undef __func__ */
++
++/* Define to empty if `const' does not conform to ANSI C. */
++/* #undef const */
++
++/* Define to `__inline__' or `__inline' if that's what the C compiler
++ calls it, or to nothing if 'inline' is not supported under any name. */
++#ifndef __cplusplus
++/* #undef inline */
++#endif
++
++/* Define to `int' if <sys/types.h> does not define. */
++/* #undef pid_t */
++
++/* Define to `unsigned int' if <sys/types.h> does not define. */
++/* #undef size_t */
++
++/* Define to unsigned int if you dont have it */
++/* #undef socklen_t */
diff --git a/devel/electron17/files/patch-base_third__party_libevent_openbsd_event-config.h b/devel/electron17/files/patch-base_third__party_libevent_openbsd_event-config.h
new file mode 100644
index 000000000000..39e595ac1ef3
--- /dev/null
+++ b/devel/electron17/files/patch-base_third__party_libevent_openbsd_event-config.h
@@ -0,0 +1,287 @@
+--- base/third_party/libevent/openbsd/event-config.h.orig 2022-05-13 07:20:04 UTC
++++ base/third_party/libevent/openbsd/event-config.h
+@@ -0,0 +1,284 @@
++/* event-config.h
++ * Generated by autoconf; post-processed by libevent.
++ * Do not edit this file.
++ * Do not rely on macros in this file existing in later versions.
++ */
++#ifndef _EVENT_CONFIG_H_
++#define _EVENT_CONFIG_H_
++/* config.h. Generated from config.h.in by configure. */
++/* config.h.in. Generated from configure.in by autoheader. */
++
++/* Define if clock_gettime is available in libc */
++#define _EVENT_DNS_USE_CPU_CLOCK_FOR_ID 1
++
++/* Define is no secure id variant is available */
++/* #undef _EVENT_DNS_USE_GETTIMEOFDAY_FOR_ID */
++
++/* Define to 1 if you have the `clock_gettime' function. */
++#define _EVENT_HAVE_CLOCK_GETTIME 1
++
++/* Define if /dev/poll is available */
++/* #undef _EVENT_HAVE_DEVPOLL */
++
++/* Define to 1 if you have the <dlfcn.h> header file. */
++#define _EVENT_HAVE_DLFCN_H 1
++
++/* Define if your system supports the epoll system calls */
++/* #undef _EVENT_HAVE_EPOLL */
++
++/* Define to 1 if you have the `epoll_ctl' function. */
++/* #undef _EVENT_HAVE_EPOLL_CTL */
++
++/* Define if your system supports event ports */
++/* #undef _EVENT_HAVE_EVENT_PORTS */
++
++/* Define to 1 if you have the `fcntl' function. */
++#define _EVENT_HAVE_FCNTL 1
++
++/* Define to 1 if you have the <fcntl.h> header file. */
++#define _EVENT_HAVE_FCNTL_H 1
++
++/* Define to 1 if the system has the type `fd_mask'. */
++#define _EVENT_HAVE_FD_MASK 1
++
++/* Define to 1 if you have the `getaddrinfo' function. */
++#define _EVENT_HAVE_GETADDRINFO 1
++
++/* Define to 1 if you have the `getegid' function. */
++#define _EVENT_HAVE_GETEGID 1
++
++/* Define to 1 if you have the `geteuid' function. */
++#define _EVENT_HAVE_GETEUID 1
++
++/* Define to 1 if you have the `getnameinfo' function. */
++#define _EVENT_HAVE_GETNAMEINFO 1
++
++/* Define to 1 if you have the `gettimeofday' function. */
++#define _EVENT_HAVE_GETTIMEOFDAY 1
++
++/* Define to 1 if you have the `inet_ntop' function. */
++#define _EVENT_HAVE_INET_NTOP 1
++
++/* Define to 1 if you have the <inttypes.h> header file. */
++#define _EVENT_HAVE_INTTYPES_H 1
++
++/* Define to 1 if you have the `issetugid' function. */
++#define _EVENT_HAVE_ISSETUGID 1
++
++/* Define to 1 if you have the `kqueue' function. */
++#define _EVENT_HAVE_KQUEUE 1
++
++/* Define to 1 if you have the `nsl' library (-lnsl). */
++/* #undef _EVENT_HAVE_LIBNSL */
++
++/* Define to 1 if you have the `resolv' library (-lresolv). */
++/* #undef _EVENT_HAVE_LIBRESOLV */
++
++/* Define to 1 if you have the `rt' library (-lrt). */
++/* #undef _EVENT_HAVE_LIBRT */
++
++/* Define to 1 if you have the `socket' library (-lsocket). */
++/* #undef _EVENT_HAVE_LIBSOCKET */
++
++/* Define to 1 if you have the <memory.h> header file. */
++#define _EVENT_HAVE_MEMORY_H 1
++
++/* Define to 1 if you have the <netinet/in6.h> header file. */
++/* #undef _EVENT_HAVE_NETINET_IN6_H */
++
++/* Define to 1 if you have the `poll' function. */
++#define _EVENT_HAVE_POLL 1
++
++/* Define to 1 if you have the <poll.h> header file. */
++#define _EVENT_HAVE_POLL_H 1
++
++/* Define to 1 if you have the `port_create' function. */
++/* #undef _EVENT_HAVE_PORT_CREATE */
++
++/* Define to 1 if you have the <port.h> header file. */
++/* #undef _EVENT_HAVE_PORT_H */
++
++/* Define to 1 if you have the `select' function. */
++#define _EVENT_HAVE_SELECT 1
++
++/* Define if F_SETFD is defined in <fcntl.h> */
++#define _EVENT_HAVE_SETFD 1
++
++/* Define to 1 if you have the `sigaction' function. */
++#define _EVENT_HAVE_SIGACTION 1
++
++/* Define to 1 if you have the `signal' function. */
++#define _EVENT_HAVE_SIGNAL 1
++
++/* Define to 1 if you have the <signal.h> header file. */
++#define _EVENT_HAVE_SIGNAL_H 1
++
++/* Define to 1 if you have the <stdarg.h> header file. */
++#define _EVENT_HAVE_STDARG_H 1
++
++/* Define to 1 if you have the <stdint.h> header file. */
++#define _EVENT_HAVE_STDINT_H 1
++
++/* Define to 1 if you have the <stdlib.h> header file. */
++#define _EVENT_HAVE_STDLIB_H 1
++
++/* Define to 1 if you have the <strings.h> header file. */
++#define _EVENT_HAVE_STRINGS_H 1
++
++/* Define to 1 if you have the <string.h> header file. */
++#define _EVENT_HAVE_STRING_H 1
++
++/* Define to 1 if you have the `strlcpy' function. */
++#define _EVENT_HAVE_STRLCPY 1
++
++/* Define to 1 if you have the `strsep' function. */
++#define _EVENT_HAVE_STRSEP 1
++
++/* Define to 1 if you have the `strtok_r' function. */
++#define _EVENT_HAVE_STRTOK_R 1
++
++/* Define to 1 if you have the `strtoll' function. */
++#define _EVENT_HAVE_STRTOLL 1
++
++/* Define to 1 if the system has the type `struct in6_addr'. */
++#define _EVENT_HAVE_STRUCT_IN6_ADDR 1
++
++/* Define to 1 if you have the <sys/devpoll.h> header file. */
++/* #undef _EVENT_HAVE_SYS_DEVPOLL_H */
++
++/* Define to 1 if you have the <sys/epoll.h> header file. */
++/* #undef _EVENT_HAVE_SYS_EPOLL_H */
++
++/* Define to 1 if you have the <sys/event.h> header file. */
++#define _EVENT_HAVE_SYS_EVENT_H 1
++
++/* Define to 1 if you have the <sys/ioctl.h> header file. */
++#define _EVENT_HAVE_SYS_IOCTL_H 1
++
++/* Define to 1 if you have the <sys/param.h> header file. */
++#define _EVENT_HAVE_SYS_PARAM_H 1
++
++/* Define to 1 if you have the <sys/queue.h> header file. */
++#define _EVENT_HAVE_SYS_QUEUE_H 1
++
++/* Define to 1 if you have the <sys/select.h> header file. */
++#define _EVENT_HAVE_SYS_SELECT_H 1
++
++/* Define to 1 if you have the <sys/socket.h> header file. */
++#define _EVENT_HAVE_SYS_SOCKET_H 1
++
++/* Define to 1 if you have the <sys/stat.h> header file. */
++#define _EVENT_HAVE_SYS_STAT_H 1
++
++/* Define to 1 if you have the <sys/time.h> header file. */
++#define _EVENT_HAVE_SYS_TIME_H 1
++
++/* Define to 1 if you have the <sys/types.h> header file. */
++#define _EVENT_HAVE_SYS_TYPES_H 1
++
++/* Define if TAILQ_FOREACH is defined in <sys/queue.h> */
++#define _EVENT_HAVE_TAILQFOREACH 1
++
++/* Define if timeradd is defined in <sys/time.h> */
++#define _EVENT_HAVE_TIMERADD 1
++
++/* Define if timerclear is defined in <sys/time.h> */
++#define _EVENT_HAVE_TIMERCLEAR 1
++
++/* Define if timercmp is defined in <sys/time.h> */
++#define _EVENT_HAVE_TIMERCMP 1
++
++/* Define if timerisset is defined in <sys/time.h> */
++#define _EVENT_HAVE_TIMERISSET 1
++
++/* Define to 1 if the system has the type `uint16_t'. */
++#define _EVENT_HAVE_UINT16_T 1
++
++/* Define to 1 if the system has the type `uint32_t'. */
++#define _EVENT_HAVE_UINT32_T 1
++
++/* Define to 1 if the system has the type `uint64_t'. */
++#define _EVENT_HAVE_UINT64_T 1
++
++/* Define to 1 if the system has the type `uint8_t'. */
++#define _EVENT_HAVE_UINT8_T 1
++
++/* Define to 1 if you have the <unistd.h> header file. */
++#define _EVENT_HAVE_UNISTD_H 1
++
++/* Define to 1 if you have the `vasprintf' function. */
++#define _EVENT_HAVE_VASPRINTF 1
++
++/* Define if kqueue works correctly with pipes */
++#define _EVENT_HAVE_WORKING_KQUEUE 1
++
++/* Define to the sub-directory in which libtool stores uninstalled libraries.
++ */
++#define _EVENT_LT_OBJDIR ".libs/"
++
++/* Numeric representation of the version */
++#define _EVENT_NUMERIC_VERSION 0x01040f00
++
++/* Name of package */
++#define _EVENT_PACKAGE "libevent"
++
++/* Define to the address where bug reports for this package should be sent. */
++#define _EVENT_PACKAGE_BUGREPORT ""
++
++/* Define to the full name of this package. */
++#define _EVENT_PACKAGE_NAME ""
++
++/* Define to the full name and version of this package. */
++#define _EVENT_PACKAGE_STRING ""
++
++/* Define to the one symbol short name of this package. */
++#define _EVENT_PACKAGE_TARNAME ""
++
++/* Define to the home page for this package. */
++#define _EVENT_PACKAGE_URL ""
++
++/* Define to the version of this package. */
++#define _EVENT_PACKAGE_VERSION ""
++
++/* The size of `int', as computed by sizeof. */
++#define _EVENT_SIZEOF_INT 4
++
++/* The size of `long', as computed by sizeof. */
++#define _EVENT_SIZEOF_LONG 8
++
++/* The size of `long long', as computed by sizeof. */
++#define _EVENT_SIZEOF_LONG_LONG 8
++
++/* The size of `short', as computed by sizeof. */
++#define _EVENT_SIZEOF_SHORT 2
++
++/* Define to 1 if you have the ANSI C header files. */
++#define _EVENT_STDC_HEADERS 1
++
++/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
++#define _EVENT_TIME_WITH_SYS_TIME 1
++
++/* Version number of package */
++#define _EVENT_VERSION "1.4.15"
++
++/* Define to appropriate substitue if compiler doesnt have __func__ */
++/* #undef _EVENT___func__ */
++
++/* Define to empty if `const' does not conform to ANSI C. */
++/* #undef _EVENT_const */
++
++/* Define to `__inline__' or `__inline' if that's what the C compiler
++ calls it, or to nothing if 'inline' is not supported under any name. */
++#ifndef _EVENT___cplusplus
++/* #undef _EVENT_inline */
++#endif
++
++/* Define to `int' if <sys/types.h> does not define. */
++/* #undef _EVENT_pid_t */
++
++/* Define to `unsigned int' if <sys/types.h> does not define. */
++/* #undef _EVENT_size_t */
++
++/* Define to unsigned int if you dont have it */
++/* #undef _EVENT_socklen_t */
++#endif
diff --git a/devel/electron17/files/patch-base_third__party_symbolize_symbolize.cc b/devel/electron17/files/patch-base_third__party_symbolize_symbolize.cc
new file mode 100644
index 000000000000..cc34a20ee071
--- /dev/null
+++ b/devel/electron17/files/patch-base_third__party_symbolize_symbolize.cc
@@ -0,0 +1,11 @@
+--- base/third_party/symbolize/symbolize.cc.orig 2022-05-11 07:16:46 UTC
++++ base/third_party/symbolize/symbolize.cc
+@@ -113,7 +113,7 @@ _END_GOOGLE_NAMESPACE_
+ #if defined(HAVE_DLFCN_H)
+ #include <dlfcn.h>
+ #endif
+-#if defined(OS_OPENBSD)
++#if defined(__OpenBSD__)
+ #include <sys/exec_elf.h>
+ #else
+ #include <elf.h>
diff --git a/devel/electron17/files/patch-base_threading_platform__thread.h b/devel/electron17/files/patch-base_threading_platform__thread.h
new file mode 100644
index 000000000000..c149968fc2bb
--- /dev/null
+++ b/devel/electron17/files/patch-base_threading_platform__thread.h
@@ -0,0 +1,11 @@
+--- base/threading/platform_thread.h.orig 2022-05-11 07:16:46 UTC
++++ base/threading/platform_thread.h
+@@ -243,7 +243,7 @@ class BASE_EXPORT PlatformThread {
+ // Returns a realtime period provided by `delegate`.
+ static TimeDelta GetRealtimePeriod(Delegate* delegate);
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // Toggles a specific thread's priority at runtime. This can be used to
+ // change the priority of a thread in a different process and will fail
+ // if the calling process does not have proper permissions. The
diff --git a/devel/electron17/files/patch-base_threading_platform__thread__linux.cc b/devel/electron17/files/patch-base_threading_platform__thread__linux.cc
new file mode 100644
index 000000000000..06de403d90bc
--- /dev/null
+++ b/devel/electron17/files/patch-base_threading_platform__thread__linux.cc
@@ -0,0 +1,77 @@
+--- base/threading/platform_thread_linux.cc.orig 2022-05-11 07:16:46 UTC
++++ base/threading/platform_thread_linux.cc
+@@ -29,7 +29,9 @@
+
+ #if !defined(OS_NACL) && !defined(OS_AIX)
+ #include <pthread.h>
++#if !defined(OS_BSD)
+ #include <sys/prctl.h>
++#endif
+ #include <sys/resource.h>
+ #include <sys/time.h>
+ #include <sys/types.h>
+@@ -132,7 +134,7 @@ int sched_setattr(pid_t pid,
+ #endif // !defined(OS_NACL) && !defined(OS_AIX)
+ #endif // BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_CHROMEOS_LACROS)
+
+-#if !defined(OS_NACL)
++#if !defined(OS_NACL) && !defined(OS_BSD)
+ const FilePath::CharType kCgroupDirectory[] =
+ FILE_PATH_LITERAL("/sys/fs/cgroup");
+
+@@ -286,7 +288,7 @@ void SetThreadCgroupsForThreadPriority(PlatformThreadI
+ namespace internal {
+
+ namespace {
+-#if !defined(OS_NACL)
++#if !defined(OS_NACL) && !defined(OS_BSD)
+ const struct sched_param kRealTimePrio = {8};
+ #endif
+ } // namespace
+@@ -299,7 +301,7 @@ const ThreadPriorityToNiceValuePair kThreadPriorityToN
+ };
+
+ bool CanSetThreadPriorityToRealtimeAudio() {
+-#if !defined(OS_NACL)
++#if !defined(OS_NACL) && !defined(OS_BSD)
+ // A non-zero soft-limit on RLIMIT_RTPRIO is required to be allowed to invoke
+ // pthread_setschedparam in SetCurrentThreadPriorityForPlatform().
+ struct rlimit rlim;
+@@ -310,7 +312,7 @@ bool CanSetThreadPriorityToRealtimeAudio() {
+ }
+
+ bool SetCurrentThreadPriorityForPlatform(ThreadPriority priority) {
+-#if !defined(OS_NACL)
++#if !defined(OS_NACL) && !defined(OS_BSD)
+ // For legacy schedtune interface
+ SetThreadCgroupsForThreadPriority(PlatformThread::CurrentId(), priority);
+
+@@ -328,7 +330,7 @@ bool SetCurrentThreadPriorityForPlatform(ThreadPriorit
+ }
+
+ absl::optional<ThreadPriority> GetCurrentThreadPriorityForPlatform() {
+-#if !defined(OS_NACL)
++#if !defined(OS_NACL) && !defined(OS_BSD)
+ int maybe_sched_rr = 0;
+ struct sched_param maybe_realtime_prio = {0};
+ if (pthread_getschedparam(pthread_self(), &maybe_sched_rr,
+@@ -347,7 +349,7 @@ absl::optional<ThreadPriority> GetCurrentThreadPriorit
+ void PlatformThread::SetName(const std::string& name) {
+ ThreadIdNameManager::GetInstance()->SetName(name);
+
+-#if !defined(OS_NACL) && !defined(OS_AIX)
++#if !defined(OS_NACL) && !defined(OS_AIX) && !defined(OS_BSD)
+ // On linux we can get the thread names to show up in the debugger by setting
+ // the process name for the LWP. We don't want to do this for the main
+ // thread because that would rename the process, causing tools like killall
+@@ -377,8 +379,10 @@ void PlatformThread::SetThreadPriority(ProcessId proce
+ // priority.
+ CHECK_NE(thread_id, process_id);
+
++#if !defined(OS_BSD)
+ // For legacy schedtune interface
+ SetThreadCgroupsForThreadPriority(thread_id, priority);
++#endif
+
+ #if BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_CHROMEOS_LACROS)
+ // For upstream uclamp interface. We try both legacy (schedtune, as done
diff --git a/devel/electron17/files/patch-base_threading_platform__thread__posix.cc b/devel/electron17/files/patch-base_threading_platform__thread__posix.cc
new file mode 100644
index 000000000000..e73219e9b465
--- /dev/null
+++ b/devel/electron17/files/patch-base_threading_platform__thread__posix.cc
@@ -0,0 +1,21 @@
+--- base/threading/platform_thread_posix.cc.orig 2022-05-13 07:19:54 UTC
++++ base/threading/platform_thread_posix.cc
+@@ -75,7 +75,7 @@ void* ThreadFunc(void* params) {
+ if (!thread_params->joinable)
+ base::DisallowSingleton();
+
+-#if !defined(OS_NACL)
++#if !defined(OS_NACL) && !defined(OS_BSD)
+ #if BUILDFLAG(USE_PARTITION_ALLOC_AS_MALLOC) && defined(PA_ALLOW_PCSCAN)
+ internal::PCScan::NotifyThreadCreated(internal::GetStackPointer());
+ #endif
+@@ -334,6 +334,9 @@ bool PlatformThread::CanChangeThreadPriority(ThreadPri
+ // static
+ void PlatformThread::SetCurrentThreadPriorityImpl(ThreadPriority priority) {
+ #if defined(OS_NACL)
++ NOTIMPLEMENTED();
++// avoid pledge(2) violation
++#elif defined(OS_BSD)
+ NOTIMPLEMENTED();
+ #else
+ if (internal::SetCurrentThreadPriorityForPlatform(priority))
diff --git a/devel/electron17/files/patch-base_time_time.cc b/devel/electron17/files/patch-base_time_time.cc
new file mode 100644
index 000000000000..401e7c8bcbc3
--- /dev/null
+++ b/devel/electron17/files/patch-base_time_time.cc
@@ -0,0 +1,11 @@
+--- base/time/time.cc.orig 2022-05-11 07:16:46 UTC
++++ base/time/time.cc
+@@ -4,7 +4,7 @@
+
+ #include "base/time/time.h"
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // time.h is a widely included header and its size impacts build time.
+ // Try not to raise this limit unless necessary. See
+ // https://chromium.googlesource.com/chromium/src/+/HEAD/docs/wmax_tokens.md
diff --git a/devel/electron17/files/patch-base_trace__event_malloc__dump__provider.cc b/devel/electron17/files/patch-base_trace__event_malloc__dump__provider.cc
new file mode 100644
index 000000000000..cd18f7458c15
--- /dev/null
+++ b/devel/electron17/files/patch-base_trace__event_malloc__dump__provider.cc
@@ -0,0 +1,21 @@
+--- base/trace_event/malloc_dump_provider.cc.orig 2021-11-19 04:25:04 UTC
++++ base/trace_event/malloc_dump_provider.cc
+@@ -23,6 +23,8 @@
+
+ #if defined(OS_APPLE)
+ #include <malloc/malloc.h>
++#elif defined(OS_BSD)
++#include <stdlib.h>
+ #else
+ #include <malloc.h>
+ #endif
+@@ -217,6 +219,9 @@ bool MallocDumpProvider::OnMemoryDump(const MemoryDump
+ &allocated_objects_count);
+ #elif defined(OS_FUCHSIA)
+ // TODO(fuchsia): Port, see https://crbug.com/706592.
++#elif defined(OS_BSD)
++ total_virtual_size = 0;
++ allocated_objects_size = 0;
+ #else
+ #if defined(__GLIBC__) && defined(__GLIBC_PREREQ)
+ #if __GLIBC_PREREQ(2, 33)
diff --git a/devel/electron17/files/patch-base_trace__event_memory__dump__manager.cc b/devel/electron17/files/patch-base_trace__event_memory__dump__manager.cc
new file mode 100644
index 000000000000..dbdd5c471db7
--- /dev/null
+++ b/devel/electron17/files/patch-base_trace__event_memory__dump__manager.cc
@@ -0,0 +1,11 @@
+--- base/trace_event/memory_dump_manager.cc.orig 2022-05-11 07:16:46 UTC
++++ base/trace_event/memory_dump_manager.cc
+@@ -78,7 +78,7 @@ const char* const MemoryDumpManager::kSystemAllocatorP
+ #if defined(MALLOC_MEMORY_TRACING_SUPPORTED)
+ MallocDumpProvider::kAllocatedObjects;
+ #else
+- nullptr;
++ "";
+ #endif
+
+ // static
diff --git a/devel/electron17/files/patch-base_trace__event_process__memory__dump.cc b/devel/electron17/files/patch-base_trace__event_process__memory__dump.cc
new file mode 100644
index 000000000000..cd8cf94b01a1
--- /dev/null
+++ b/devel/electron17/files/patch-base_trace__event_process__memory__dump.cc
@@ -0,0 +1,20 @@
+--- base/trace_event/process_memory_dump.cc.orig 2022-05-11 07:16:46 UTC
++++ base/trace_event/process_memory_dump.cc
+@@ -105,7 +105,7 @@ absl::optional<size_t> ProcessMemoryDump::CountResiden
+ #if defined(OS_WIN)
+ std::unique_ptr<PSAPI_WORKING_SET_EX_INFORMATION[]> vec(
+ new PSAPI_WORKING_SET_EX_INFORMATION[max_vec_size]);
+-#elif defined(OS_APPLE)
++#elif defined(OS_APPLE) || defined(OS_BSD)
+ std::unique_ptr<char[]> vec(new char[max_vec_size]);
+ #elif defined(OS_POSIX) || defined(OS_FUCHSIA)
+ std::unique_ptr<unsigned char[]> vec(new unsigned char[max_vec_size]);
+@@ -127,7 +127,7 @@ absl::optional<size_t> ProcessMemoryDump::CountResiden
+
+ for (size_t i = 0; i < page_count; i++)
+ resident_page_count += vec[i].VirtualAttributes.Valid;
+-#elif defined(OS_FUCHSIA)
++#elif defined(OS_FUCHSIA) | defined(OS_BSD)
+ // TODO(fuchsia): Port, see https://crbug.com/706592.
+ ALLOW_UNUSED_LOCAL(chunk_start);
+ ALLOW_UNUSED_LOCAL(page_count);
diff --git a/devel/electron17/files/patch-base_tracing_trace__time.cc b/devel/electron17/files/patch-base_tracing_trace__time.cc
new file mode 100644
index 000000000000..3c90f4df7f93
--- /dev/null
+++ b/devel/electron17/files/patch-base_tracing_trace__time.cc
@@ -0,0 +1,28 @@
+--- base/tracing/trace_time.cc.orig 2022-05-11 07:16:46 UTC
++++ base/tracing/trace_time.cc
+@@ -8,13 +8,17 @@
+ #include "build/build_config.h"
+ #include "third_party/perfetto/include/perfetto/base/time.h"
+
++#if defined(OS_FREEBSD)
++#define CLOCK_BOOTTIME CLOCK_UPTIME
++#endif
++
+ namespace base {
+ namespace tracing {
+
+ int64_t TraceBootTicksNow() {
+ // On Windows and Mac, TRACE_TIME_TICKS_NOW() behaves like boottime already.
+ #if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID) || \
+- defined(OS_FUCHSIA)
++ defined(OS_FUCHSIA) || defined(OS_BSD)
+ struct timespec ts;
+ int res = clock_gettime(CLOCK_BOOTTIME, &ts);
+ if (res != -1)
+@@ -24,4 +28,4 @@ int64_t TraceBootTicksNow() {
+ }
+
+ } // namespace tracing
+-} // namespace base
+\ No newline at end of file
++} // namespace base
diff --git a/devel/electron17/files/patch-base_tracing_trace__time.h b/devel/electron17/files/patch-base_tracing_trace__time.h
new file mode 100644
index 000000000000..849609bb2e1d
--- /dev/null
+++ b/devel/electron17/files/patch-base_tracing_trace__time.h
@@ -0,0 +1,11 @@
+--- base/tracing/trace_time.h.orig 2022-05-11 07:16:46 UTC
++++ base/tracing/trace_time.h
+@@ -12,7 +12,7 @@ namespace base {
+ namespace tracing {
+
+ #if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID) || \
+- defined(OS_FUCHSIA)
++ defined(OS_FUCHSIA) || defined(OS_BSD)
+ // Linux, Android, and Fuchsia all use CLOCK_MONOTONIC. See crbug.com/166153
+ // about efforts to unify base::TimeTicks across all platforms.
+ constexpr perfetto::protos::pbzero::BuiltinClock kTraceClockId =
diff --git a/devel/electron17/files/patch-build_config_BUILD.gn b/devel/electron17/files/patch-build_config_BUILD.gn
new file mode 100644
index 000000000000..b396114d7a30
--- /dev/null
+++ b/devel/electron17/files/patch-build_config_BUILD.gn
@@ -0,0 +1,22 @@
+--- build/config/BUILD.gn.orig 2022-05-11 07:16:46 UTC
++++ build/config/BUILD.gn
+@@ -222,13 +222,17 @@ config("default_libs") {
+ "CoreText.framework",
+ "Foundation.framework",
+ ]
+- } else if (is_linux || is_chromeos) {
++ } else if ((is_linux && !is_bsd) || is_chromeos) {
+ libs = [
+ "dl",
+ "pthread",
+ "rt",
+ ]
+- }
++ } else if (is_bsd) {
++ libs = [
++ "pthread",
++ ]
++ }
+ }
+
+ group("common_deps") {
diff --git a/devel/electron17/files/patch-build_config_BUILDCONFIG.gn b/devel/electron17/files/patch-build_config_BUILDCONFIG.gn
new file mode 100644
index 000000000000..63ac5fa67d60
--- /dev/null
+++ b/devel/electron17/files/patch-build_config_BUILDCONFIG.gn
@@ -0,0 +1,45 @@
+--- build/config/BUILDCONFIG.gn.orig 2022-05-13 07:19:54 UTC
++++ build/config/BUILDCONFIG.gn
+@@ -139,7 +139,8 @@ declare_args() {
+ is_official_build = false
+
+ # Set to true when compiling with the Clang compiler.
+- is_clang = current_os != "linux" ||
++ is_clang = current_os != "linux" || current_os == "openbsd" ||
++ current_os == "freebsd" ||
+ (current_cpu != "s390x" && current_cpu != "s390" &&
+ current_cpu != "ppc64" && current_cpu != "ppc" &&
+ current_cpu != "mips" && current_cpu != "mips64" &&
+@@ -221,6 +222,10 @@ if (host_toolchain == "") {
+ host_toolchain = "//build/toolchain/aix:$host_cpu"
+ } else if (host_os == "zos") {
+ host_toolchain = "//build/toolchain/zos:$host_cpu"
++ } else if (host_os == "openbsd") {
++ host_toolchain = "//build/toolchain/openbsd:clang_$host_cpu"
++ } else if (host_os == "freebsd") {
++ host_toolchain = "//build/toolchain/freebsd:clang_$host_cpu"
+ } else {
+ assert(false, "Unsupported host_os: $host_os")
+ }
+@@ -265,6 +270,8 @@ if (target_os == "android") {
+ _default_toolchain = "//build/toolchain/aix:$target_cpu"
+ } else if (target_os == "zos") {
+ _default_toolchain = "//build/toolchain/zos:$target_cpu"
++} else if (target_os == "openbsd" || target_os == "freebsd") {
++ _default_toolchain = host_toolchain
+ } else {
+ assert(false, "Unsupported target_os: $target_os")
+ }
+@@ -299,7 +306,11 @@ is_android = current_os == "android"
+ is_chromeos = current_os == "chromeos"
+ is_fuchsia = current_os == "fuchsia"
+ is_ios = current_os == "ios"
+-is_linux = current_os == "linux"
++is_linux = current_os == "linux" || current_os == "openbsd" ||
++ current_os == "freebsd"
++is_openbsd = current_os == "openbsd"
++is_freebsd = current_os == "freebsd"
++is_bsd = current_os == "openbsd" || current_os == "freebsd"
+ is_mac = current_os == "mac"
+ is_nacl = current_os == "nacl"
+ is_win = current_os == "win" || current_os == "winuwp"
diff --git a/devel/electron17/files/patch-build_config_compiler_BUILD.gn b/devel/electron17/files/patch-build_config_compiler_BUILD.gn
new file mode 100644
index 000000000000..fb1dacabbb2a
--- /dev/null
+++ b/devel/electron17/files/patch-build_config_compiler_BUILD.gn
@@ -0,0 +1,113 @@
+--- build/config/compiler/BUILD.gn.orig 2022-05-11 07:16:46 UTC
++++ build/config/compiler/BUILD.gn
+@@ -236,13 +236,16 @@ config("default_include_dirs") {
+ # Compiler instrumentation can introduce dependencies in DSOs to symbols in
+ # the executable they are loaded into, so they are unresolved at link-time.
+ config("no_unresolved_symbols") {
+- if (!using_sanitizer &&
++ if (!using_sanitizer && !is_bsd &&
+ (is_linux || is_chromeos || is_android || is_fuchsia)) {
+ ldflags = [
+ "-Wl,-z,defs",
+ "-Wl,--as-needed",
+ ]
+ }
++ if (current_cpu == "x86" && is_openbsd) {
++ ldflags = [ "-Wl,-z,notext" ]
++ }
+ }
+
+ # compiler ---------------------------------------------------------------------
+@@ -452,6 +455,10 @@ config("compiler") {
+ }
+ }
+
++ if (is_openbsd) {
++ ldflags += [ "-Wl,-z,wxneeded" ]
++ }
++
+ # Linux-specific compiler flags setup.
+ # ------------------------------------
+ if ((is_posix || is_fuchsia) && !is_apple && use_lld) {
+@@ -534,7 +541,7 @@ config("compiler") {
+ ldflags += [ "-Wl,-z,keep-text-section-prefix" ]
+ }
+
+- if (is_clang && !is_nacl && current_os != "zos") {
++ if (is_clang && !is_nacl && current_os != "zos" && !is_bsd) {
+ cflags += [ "-fcrash-diagnostics-dir=" + clang_diagnostic_dir ]
+
+ # TODO(hans): Remove this once Clang generates better optimized debug info
+@@ -903,7 +910,7 @@ config("compiler_cpu_abi") {
+ ]
+ }
+ } else if (current_cpu == "arm") {
+- if (is_clang && !is_android && !is_nacl) {
++ if (is_clang && !is_android && !is_nacl && !is_bsd) {
+ cflags += [ "--target=arm-linux-gnueabihf" ]
+ ldflags += [ "--target=arm-linux-gnueabihf" ]
+ }
+@@ -917,7 +924,7 @@ config("compiler_cpu_abi") {
+ cflags += [ "-mtune=$arm_tune" ]
+ }
+ } else if (current_cpu == "arm64") {
+- if (is_clang && !is_android && !is_nacl && !is_fuchsia) {
++ if (is_clang && !is_android && !is_nacl && !is_fuchsia && !is_bsd) {
+ cflags += [ "--target=aarch64-linux-gnu" ]
+ ldflags += [ "--target=aarch64-linux-gnu" ]
+ }
+@@ -1238,7 +1245,7 @@ config("compiler_deterministic") {
+ # different build directory like "out/feature_a" and "out/feature_b" if
+ # we build same files with same compile flag.
+ # Other paths are already given in relative, no need to normalize them.
+- if (is_nacl) {
++ if (is_nacl || is_bsd) {
+ # TODO(https://crbug.com/1231236): Use -ffile-compilation-dir= here.
+ cflags += [
+ "-Xclang",
+@@ -1525,7 +1532,7 @@ config("default_warnings") {
+ "-Wno-ignored-pragma-optimize",
+ ]
+
+- if (is_chromeos || default_toolchain == "//build/toolchain/cros:target") {
++ if (is_chromeos || default_toolchain == "//build/toolchain/cros:target" || is_bsd) {
+ # TODO(https://crbug.com/1016945): Re-enable once ChromeOS toolchain is up to date
+ cflags += [ "-Wno-builtin-assume-aligned-alignment" ]
+ }
+@@ -1676,7 +1683,7 @@ config("no_chromium_code") {
+ # third-party libraries.
+ "-Wno-c++11-narrowing",
+ ]
+- if (!is_nacl) {
++ if (!is_nacl && !is_freebsd) {
+ cflags += [
+ # Disabled for similar reasons as -Wunused-variable.
+ "-Wno-unused-but-set-variable",
+@@ -2191,7 +2198,7 @@ config("afdo_optimize_size") {
+ # between //base/allocator:tcmalloc and AFDO on GCC), so we provide a separate
+ # config to allow AFDO to be disabled per-target.
+ config("afdo") {
+- if (is_clang) {
++ if (is_clang && !is_bsd) {
+ cflags = []
+ if (clang_emit_debug_info_for_profiling) {
+ # Add the following flags to generate debug info for profiling.
+@@ -2207,7 +2214,7 @@ config("afdo") {
+ cflags += [ "-fprofile-sample-use=${rebased_clang_sample_profile}" ]
+ inputs = [ _clang_sample_profile ]
+ }
+- } else if (auto_profile_path != "" && is_a_target_toolchain) {
++ } else if (auto_profile_path != "" && is_a_target_toolchain && !is_bsd) {
+ cflags = [ "-fauto-profile=${auto_profile_path}" ]
+ inputs = [ auto_profile_path ]
+ }
+@@ -2346,7 +2353,8 @@ config("symbols") {
+ }
+ }
+
+- if (is_clang && (!is_nacl || is_nacl_saigo) && current_os != "zos") {
++ if (is_clang && (!is_nacl || is_nacl_saigo) && current_os != "zos" &&
++ !is_bsd) {
+ if (is_apple) {
+ # TODO(https://crbug.com/1050118): Investigate missing debug info on mac.
+ # Make sure we don't use constructor homing on mac.
diff --git a/devel/electron17/files/patch-build_config_compiler_pgo_pgo.gni b/devel/electron17/files/patch-build_config_compiler_pgo_pgo.gni
new file mode 100644
index 000000000000..02c05d65664d
--- /dev/null
+++ b/devel/electron17/files/patch-build_config_compiler_pgo_pgo.gni
@@ -0,0 +1,11 @@
+--- build/config/compiler/pgo/pgo.gni.orig 2021-04-14 01:08:36 UTC
++++ build/config/compiler/pgo/pgo.gni
+@@ -16,7 +16,7 @@ declare_args() {
+ # TODO(crbug.com/1052397): Remove chromeos_is_browser_only once
+ # target_os switch for lacros-chrome is completed.
+ (is_win || is_mac ||
+- (is_linux && !chromeos_is_browser_only && !is_chromecast))) {
++ (is_linux && !chromeos_is_browser_only && !is_chromecast && !is_bsd))) {
+ chrome_pgo_phase = 2
+ }
+
diff --git a/devel/electron17/files/patch-build_config_linux_BUILD.gn b/devel/electron17/files/patch-build_config_linux_BUILD.gn
new file mode 100644
index 000000000000..cbec501bf212
--- /dev/null
+++ b/devel/electron17/files/patch-build_config_linux_BUILD.gn
@@ -0,0 +1,11 @@
+--- build/config/linux/BUILD.gn.orig 2022-05-11 07:16:46 UTC
++++ build/config/linux/BUILD.gn
+@@ -42,7 +42,7 @@ config("runtime_library") {
+
+ if ((!(is_chromeos_ash || is_chromeos_lacros) ||
+ default_toolchain != "//build/toolchain/cros:target") &&
+- (!use_custom_libcxx || current_cpu == "mipsel")) {
++ (!use_custom_libcxx || current_cpu == "mipsel") && !is_bsd) {
+ libs = [ "atomic" ]
+ }
+ }
diff --git a/devel/electron17/files/patch-build_config_linux_pkg-config.py b/devel/electron17/files/patch-build_config_linux_pkg-config.py
new file mode 100644
index 000000000000..c193109a7476
--- /dev/null
+++ b/devel/electron17/files/patch-build_config_linux_pkg-config.py
@@ -0,0 +1,11 @@
+--- build/config/linux/pkg-config.py.orig 2022-05-11 07:00:27 UTC
++++ build/config/linux/pkg-config.py
+@@ -109,7 +109,7 @@ def main():
+ # If this is run on non-Linux platforms, just return nothing and indicate
+ # success. This allows us to "kind of emulate" a Linux build from other
+ # platforms.
+- if "linux" not in sys.platform:
++ if not sys.platform.startswith(tuple(['linux', 'openbsd', 'freebsd'])):
+ print("[[],[],[],[],[]]")
+ return 0
+
diff --git a/devel/electron17/files/patch-build_config_ozone.gni b/devel/electron17/files/patch-build_config_ozone.gni
new file mode 100644
index 000000000000..2b3ad05680a4
--- /dev/null
+++ b/devel/electron17/files/patch-build_config_ozone.gni
@@ -0,0 +1,21 @@
+--- build/config/ozone.gni.orig 2022-05-11 07:16:46 UTC
++++ build/config/ozone.gni
+@@ -91,9 +91,17 @@ declare_args() {
+ } else if (is_chromeos_lacros) {
+ ozone_platform = "wayland"
+ ozone_platform_wayland = true
+- } else if (is_linux) {
++ } else if (is_linux && !is_bsd) {
+ ozone_platform = "x11"
+ ozone_platform_wayland = true
++ ozone_platform_x11 = true
++ } else if (is_openbsd) {
++ ozone_platform = "x11"
++ ozone_platform_wayland = false
++ ozone_platform_x11 = true
++ } else if (is_freebsd) {
++ ozone_platform = "x11"
++ ozone_platform_wayland = false
+ ozone_platform_x11 = true
+ } else if (is_win) {
+ ozone_platform = "windows"
diff --git a/devel/electron17/files/patch-build_config_rust.gni b/devel/electron17/files/patch-build_config_rust.gni
new file mode 100644
index 000000000000..172b2d82f62e
--- /dev/null
+++ b/devel/electron17/files/patch-build_config_rust.gni
@@ -0,0 +1,11 @@
+--- build/config/rust.gni.orig 2022-05-11 07:16:46 UTC
++++ build/config/rust.gni
+@@ -84,7 +84,7 @@ if (enable_rust) {
+ rust_sysroot = get_path_info(rust_sysroot_absolute, "abspath")
+ use_unverified_rust_toolchain = true
+ } else {
+- if (host_os != "linux") {
++ if (host_os != "linux" && host_os != "openbsd" && host_os != "freebsd") {
+ assert(
+ false,
+ "Attempt to use standard Rust toolchain on an unsupported platform")
diff --git a/devel/electron17/files/patch-build_config_v8__target__cpu.gni b/devel/electron17/files/patch-build_config_v8__target__cpu.gni
new file mode 100644
index 000000000000..696e23cf26a2
--- /dev/null
+++ b/devel/electron17/files/patch-build_config_v8__target__cpu.gni
@@ -0,0 +1,13 @@
+--- build/config/v8_target_cpu.gni.orig 2022-05-11 07:00:27 UTC
++++ build/config/v8_target_cpu.gni
+@@ -36,6 +36,10 @@ declare_args() {
+ if (v8_target_cpu == "") {
+ if (current_toolchain == "//build/toolchain/linux:clang_x64_v8_arm64") {
+ v8_target_cpu = "arm64"
++ } else if (current_toolchain == "//build/toolchain/openbsd:clang_arm64") {
++ v8_target_cpu = "arm64"
++ } else if (current_toolchain == "//build/toolchain/freebsd:clang_arm64") {
++ v8_target_cpu = "arm64"
+ } else if (current_toolchain == "//build/toolchain/linux:clang_x86_v8_arm") {
+ v8_target_cpu = "arm"
+ } else if (current_toolchain ==
diff --git a/devel/electron17/files/patch-build_detect__host__arch.py b/devel/electron17/files/patch-build_detect__host__arch.py
new file mode 100644
index 000000000000..d09ac4de3025
--- /dev/null
+++ b/devel/electron17/files/patch-build_detect__host__arch.py
@@ -0,0 +1,11 @@
+--- build/detect_host_arch.py.orig 2021-01-07 00:36:18 UTC
++++ build/detect_host_arch.py
+@@ -21,6 +21,8 @@ def HostArch():
+ host_arch = 'ia32'
+ elif host_arch in ['x86_64', 'amd64']:
+ host_arch = 'x64'
++ elif host_arch.startswith('arm64'):
++ host_arch = 'arm64'
+ elif host_arch.startswith('arm'):
+ host_arch = 'arm'
+ elif host_arch.startswith('aarch64'):
diff --git a/devel/electron17/files/patch-build_gn__run__binary.py b/devel/electron17/files/patch-build_gn__run__binary.py
new file mode 100644
index 000000000000..6386f3ded4e0
--- /dev/null
+++ b/devel/electron17/files/patch-build_gn__run__binary.py
@@ -0,0 +1,11 @@
+--- build/gn_run_binary.py.orig 2022-05-11 07:00:27 UTC
++++ build/gn_run_binary.py
+@@ -24,7 +24,7 @@ if not os.path.isabs(path):
+ # The rest of the arguments are passed directly to the executable.
+ args = [path] + sys.argv[2:]
+
+-ret = subprocess.call(args)
++ret = subprocess.call(args, env={"CHROME_EXE_PATH":"${WRKSRC}/out/Release/chrome","LD_LIBRARY_PATH":"${WRKSRC}/out/Release"})
+ if ret != 0:
+ if ret <= -100:
+ # Windows error codes such as 0xC0000005 and 0xC0000409 are much easier to
diff --git a/devel/electron17/files/patch-build_linux_chrome.map b/devel/electron17/files/patch-build_linux_chrome.map
new file mode 100644
index 000000000000..ec30be863c9d
--- /dev/null
+++ b/devel/electron17/files/patch-build_linux_chrome.map
@@ -0,0 +1,13 @@
+--- build/linux/chrome.map.orig 2022-05-11 07:16:46 UTC
++++ build/linux/chrome.map
+@@ -20,6 +20,10 @@ global:
+ # Program entry point.
+ _start;
+
++ # FreeBSD specific variables.
++ __progname;
++ environ;
++
+ # Memory allocation symbols. We want chrome and any libraries to
+ # share the same heap, so it is correct to export these symbols.
+ calloc;
diff --git a/devel/electron17/files/patch-build_linux_strip__binary.py b/devel/electron17/files/patch-build_linux_strip__binary.py
new file mode 100644
index 000000000000..c2ea9d8239fd
--- /dev/null
+++ b/devel/electron17/files/patch-build_linux_strip__binary.py
@@ -0,0 +1,10 @@
+--- build/linux/strip_binary.py.orig 2022-05-11 07:16:46 UTC
++++ build/linux/strip_binary.py
+@@ -10,6 +10,7 @@ import sys
+
+
+ def main():
++ return 0
+ argparser = argparse.ArgumentParser(description='eu-strip binary.')
+
+ argparser.add_argument('--eu-strip-binary-path', help='eu-strip path.')
diff --git a/devel/electron17/files/patch-build_linux_unbundle_libusb.gn b/devel/electron17/files/patch-build_linux_unbundle_libusb.gn
new file mode 100644
index 000000000000..500e6b423ce6
--- /dev/null
+++ b/devel/electron17/files/patch-build_linux_unbundle_libusb.gn
@@ -0,0 +1,27 @@
+--- build/linux/unbundle/libusb.gn.orig 2021-01-25 11:28:15 UTC
++++ build/linux/unbundle/libusb.gn
+@@ -0,0 +1,24 @@
++# Copyright 2016 The Chromium Authors. All rights reserved.
++# Use of this source code is governed by a BSD-style license that can be
++# found in the LICENSE file.
++
++import("//build/config/linux/pkg_config.gni")
++import("//build/shim_headers.gni")
++
++pkg_config("system_libusb") {
++ packages = [ "libusb-1.0" ]
++}
++
++shim_headers("libusb_shim") {
++ root_path = "src/libusb"
++ headers = [
++ "libusb.h",
++ ]
++}
++
++source_set("libusb") {
++ deps = [
++ ":libusb_shim",
++ ]
++ public_configs = [ ":system_libusb" ]
++}
diff --git a/devel/electron17/files/patch-build_linux_unbundle_replace__gn__files.py b/devel/electron17/files/patch-build_linux_unbundle_replace__gn__files.py
new file mode 100644
index 000000000000..edc386dbc180
--- /dev/null
+++ b/devel/electron17/files/patch-build_linux_unbundle_replace__gn__files.py
@@ -0,0 +1,10 @@
+--- build/linux/unbundle/replace_gn_files.py.orig 2021-11-19 04:25:04 UTC
++++ build/linux/unbundle/replace_gn_files.py
+@@ -25,6 +25,7 @@ REPLACEMENTS = {
+ 'libevent': 'base/third_party/libevent/BUILD.gn',
+ 'libjpeg': 'third_party/libjpeg.gni',
+ 'libpng': 'third_party/libpng/BUILD.gn',
++ 'libusb': 'third_party/libusb/BUILD.gn',
+ 'libvpx': 'third_party/libvpx/BUILD.gn',
+ 'libwebp': 'third_party/libwebp/BUILD.gn',
+ 'libxml': 'third_party/libxml/BUILD.gn',
diff --git a/devel/electron17/files/patch-build_toolchain_freebsd_BUILD.gn b/devel/electron17/files/patch-build_toolchain_freebsd_BUILD.gn
new file mode 100644
index 000000000000..3afd3c1b8126
--- /dev/null
+++ b/devel/electron17/files/patch-build_toolchain_freebsd_BUILD.gn
@@ -0,0 +1,69 @@
+--- build/toolchain/freebsd/BUILD.gn.orig 2022-05-13 07:20:04 UTC
++++ build/toolchain/freebsd/BUILD.gn
+@@ -0,0 +1,66 @@
++# Copyright 2013 The Chromium Authors. All rights reserved.
++# Use of this source code is governed by a BSD-style license that can be
++# found in the LICENSE file.
++
++import("//build/config/sysroot.gni")
++import("//build/toolchain/gcc_toolchain.gni")
++
++clang_toolchain("clang_x86") {
++ toolchain_args = {
++ current_cpu = "x86"
++ current_os = "freebsd"
++ }
++}
++
++gcc_toolchain("x86") {
++ cc = "gcc"
++ cxx = "g++"
++
++ readelf = "readelf"
++ nm = "nm"
++ ar = "ar"
++ ld = cxx
++
++ toolchain_args = {
++ current_cpu = "x86"
++ current_os = "freebsd"
++ is_clang = false
++ }
++}
++
++clang_toolchain("clang_x64") {
++ toolchain_args = {
++ current_cpu = "x64"
++ current_os = "freebsd"
++ }
++}
++
++gcc_toolchain("x64") {
++ cc = "gcc"
++ cxx = "g++"
++
++ readelf = "readelf"
++ nm = "nm"
++ ar = "ar"
++ ld = cxx
++
++ toolchain_args = {
++ current_cpu = "x64"
++ current_os = "freebsd"
++ is_clang = false
++ }
++}
++
++clang_toolchain("clang_arm") {
++ toolchain_args = {
++ current_cpu = "arm64"
++ current_os = "freebsd"
++ }
++}
++
++clang_toolchain("clang_arm64") {
++ toolchain_args = {
++ current_cpu = "arm64"
++ current_os = "freebsd"
++ }
++}
diff --git a/devel/electron17/files/patch-build_toolchain_gcc__solink__wrapper.py b/devel/electron17/files/patch-build_toolchain_gcc__solink__wrapper.py
new file mode 100644
index 000000000000..70496fe7ab9d
--- /dev/null
+++ b/devel/electron17/files/patch-build_toolchain_gcc__solink__wrapper.py
@@ -0,0 +1,11 @@
+--- build/toolchain/gcc_solink_wrapper.py.orig 2022-05-11 07:00:27 UTC
++++ build/toolchain/gcc_solink_wrapper.py
+@@ -39,7 +39,7 @@ def CollectDynSym(args):
+ """Replaces: nm --format=posix -g -D -p $sofile | cut -f1-2 -d' '"""
+ toc = ''
+ nm = subprocess.Popen(wrapper_utils.CommandToRun(
+- [args.nm, '--format=posix', '-g', '-D', '-p', args.sofile]),
++ [args.nm, '-g', '-D', '-p', args.sofile]),
+ stdout=subprocess.PIPE,
+ bufsize=-1,
+ universal_newlines=True)
diff --git a/devel/electron17/files/patch-build_toolchain_gcc__toolchain.gni b/devel/electron17/files/patch-build_toolchain_gcc__toolchain.gni
new file mode 100644
index 000000000000..2df54ebd42c1
--- /dev/null
+++ b/devel/electron17/files/patch-build_toolchain_gcc__toolchain.gni
@@ -0,0 +1,39 @@
+--- build/toolchain/gcc_toolchain.gni.orig 2022-05-11 07:16:46 UTC
++++ build/toolchain/gcc_toolchain.gni
+@@ -49,6 +49,12 @@ if (enable_resource_allowlist_generation) {
+ "enable_resource_allowlist_generation=true does not work for target_os=$target_os")
+ }
+
++declare_args() {
++ extra_cppflags = ""
++ extra_cxxflags = ""
++ extra_ldflags = ""
++}
++
+ # This template defines a toolchain for something that works like gcc
+ # (including clang).
+ #
+@@ -737,13 +743,17 @@ template("gcc_toolchain") {
+ # use_gold too.
+ template("clang_toolchain") {
+ gcc_toolchain(target_name) {
+- prefix = rebase_path("$clang_base_path/bin", root_build_dir)
+- cc = "${prefix}/clang"
+- cxx = "${prefix}/clang++"
++ if (is_freebsd) {
++ prefix = "/usr/local/bin"
++ } else {
++ prefix = "/usr/bin"
++ }
++ cc = "cc"
++ cxx = "c++"
+ ld = cxx
+- readelf = "${prefix}/llvm-readelf"
+- ar = "${prefix}/llvm-ar"
+- nm = "${prefix}/llvm-nm"
++ readelf = "${prefix}/readelf"
++ ar = "${prefix}/ar"
++ nm = "${prefix}/nm"
+
+ forward_variables_from(invoker,
+ [
diff --git a/devel/electron17/files/patch-build_toolchain_openbsd_BUILD.gn b/devel/electron17/files/patch-build_toolchain_openbsd_BUILD.gn
new file mode 100644
index 000000000000..1ce8a6afcc11
--- /dev/null
+++ b/devel/electron17/files/patch-build_toolchain_openbsd_BUILD.gn
@@ -0,0 +1,69 @@
+--- build/toolchain/openbsd/BUILD.gn.orig 2022-05-13 07:20:04 UTC
++++ build/toolchain/openbsd/BUILD.gn
+@@ -0,0 +1,66 @@
++# Copyright 2013 The Chromium Authors. All rights reserved.
++# Use of this source code is governed by a BSD-style license that can be
++# found in the LICENSE file.
++
++import("//build/config/sysroot.gni")
++import("//build/toolchain/gcc_toolchain.gni")
++
++clang_toolchain("clang_x86") {
++ toolchain_args = {
++ current_cpu = "x86"
++ current_os = "openbsd"
++ }
++}
++
++gcc_toolchain("x86") {
++ cc = "gcc"
++ cxx = "g++"
++
++ readelf = "readelf"
++ nm = "nm"
++ ar = "ar"
++ ld = cxx
++
++ toolchain_args = {
++ current_cpu = "x86"
++ current_os = "openbsd"
++ is_clang = false
++ }
++}
++
++clang_toolchain("clang_x64") {
++ toolchain_args = {
++ current_cpu = "x64"
++ current_os = "openbsd"
++ }
++}
++
++gcc_toolchain("x64") {
++ cc = "gcc"
++ cxx = "g++"
++
++ readelf = "readelf"
++ nm = "nm"
++ ar = "ar"
++ ld = cxx
++
++ toolchain_args = {
++ current_cpu = "x64"
++ current_os = "openbsd"
++ is_clang = false
++ }
++}
++
++clang_toolchain("clang_arm") {
++ toolchain_args = {
++ current_cpu = "arm64"
++ current_os = "openbsd"
++ }
++}
++
++clang_toolchain("clang_arm64") {
++ toolchain_args = {
++ current_cpu = "arm64"
++ current_os = "openbsd"
++ }
++}
diff --git a/devel/electron17/files/patch-cc_BUILD.gn b/devel/electron17/files/patch-cc_BUILD.gn
new file mode 100644
index 000000000000..c1f1e1213bff
--- /dev/null
+++ b/devel/electron17/files/patch-cc_BUILD.gn
@@ -0,0 +1,19 @@
+--- cc/BUILD.gn.orig 2022-05-11 07:16:46 UTC
++++ cc/BUILD.gn
+@@ -659,7 +659,7 @@ cc_test_static_library("test_support") {
+ if (enable_vulkan) {
+ deps += [ "//gpu/vulkan/init" ]
+ }
+- if (!is_android) {
++ if (!is_android && !is_bsd) {
+ data_deps = [ "//third_party/mesa_headers" ]
+ }
+ }
+@@ -884,7 +884,6 @@ cc_test("cc_unittests") {
+ ]
+ data_deps = [
+ "//testing/buildbot/filters:cc_unittests_filters",
+- "//third_party/mesa_headers",
+ ]
+
+ if (is_fuchsia) {
diff --git a/devel/electron17/files/patch-chrome_app_chrome__command__ids.h b/devel/electron17/files/patch-chrome_app_chrome__command__ids.h
new file mode 100644
index 000000000000..9890ab276a1b
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_app_chrome__command__ids.h
@@ -0,0 +1,11 @@
+--- chrome/app/chrome_command_ids.h.orig 2021-09-14 01:51:48 UTC
++++ chrome/app/chrome_command_ids.h
+@@ -66,7 +66,7 @@
+ #define IDC_NAME_WINDOW 34049
+
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ #define IDC_USE_SYSTEM_TITLE_BAR 34051
+ #define IDC_RESTORE_WINDOW 34052
+ #endif
diff --git a/devel/electron17/files/patch-chrome_app_chrome__main.cc b/devel/electron17/files/patch-chrome_app_chrome__main.cc
new file mode 100644
index 000000000000..509b27eff826
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_app_chrome__main.cc
@@ -0,0 +1,20 @@
+--- chrome/app/chrome_main.cc.orig 2022-05-11 07:16:46 UTC
++++ chrome/app/chrome_main.cc
+@@ -26,7 +26,7 @@
+ #include "chrome/app/notification_metrics.h"
+ #endif
+
+-#if defined(OS_WIN) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)
+ #include "base/base_switches.h"
+ #endif
+
+@@ -147,7 +147,7 @@ int ChromeMain(int argc, const char** argv) {
+ headless::SetUpCommandLine(command_line);
+ } else {
+ #if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC) || \
+- defined(OS_WIN)
++ defined(OS_WIN) || defined(OS_BSD)
+ if (command_line->HasSwitch(switches::kHeadless)) {
+ #if BUILDFLAG(GOOGLE_CHROME_BRANDING)
+ command_line->AppendSwitch(::headless::switches::kEnableCrashReporter);
diff --git a/devel/electron17/files/patch-chrome_app_chrome__main__delegate.cc b/devel/electron17/files/patch-chrome_app_chrome__main__delegate.cc
new file mode 100644
index 000000000000..b99ba90491a7
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_app_chrome__main__delegate.cc
@@ -0,0 +1,107 @@
+--- chrome/app/chrome_main_delegate.cc.orig 2022-05-11 07:16:46 UTC
++++ chrome/app/chrome_main_delegate.cc
+@@ -112,7 +112,7 @@
+ #include "chrome/app/chrome_crash_reporter_client.h"
+ #endif
+
+-#if BUILDFLAG(ENABLE_NACL) && (defined(OS_LINUX) || defined(OS_CHROMEOS))
++#if BUILDFLAG(ENABLE_NACL) && (defined(OS_LINUX) || defined(OS_CHROMEOS)) && !defined(OS_BSD)
+ #include "components/nacl/common/nacl_paths.h"
+ #include "components/nacl/zygote/nacl_fork_delegate_linux.h"
+ #endif
+@@ -156,12 +156,12 @@
+ #include "v8/include/v8.h"
+ #endif
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ #include "base/environment.h"
+ #endif
+
+ #if defined(OS_MAC) || defined(OS_WIN) || defined(OS_ANDROID) || \
+- defined(OS_LINUX) || defined(OS_CHROMEOS)
++ defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ #include "chrome/browser/policy/policy_path_parser.h"
+ #include "components/crash/core/app/crashpad.h"
+ #endif
+@@ -309,7 +309,7 @@ void AdjustLinuxOOMScore(const std::string& process_ty
+ // and resources loaded.
+ bool SubprocessNeedsResourceBundle(const std::string& process_type) {
+ return
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // The zygote process opens the resources for the renderers.
+ process_type == switches::kZygoteProcess ||
+ #endif
+@@ -349,7 +349,7 @@ bool HandleVersionSwitches(const base::CommandLine& co
+
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ // Show the man page if --help or -h is on the command line.
+ void HandleHelpSwitches(const base::CommandLine& command_line) {
+ if (command_line.HasSwitch(switches::kHelp) ||
+@@ -413,7 +413,7 @@ void InitializeUserDataDir(base::CommandLine* command_
+ std::string process_type =
+ command_line->GetSwitchValueASCII(switches::kProcessType);
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // On Linux, Chrome does not support running multiple copies under different
+ // DISPLAYs, so the profile directory can be specified in the environment to
+ // support the virtual desktop use-case.
+@@ -497,7 +497,7 @@ void RecordMainStartupMetrics(base::TimeTicks applicat
+ #endif
+
+ #if defined(OS_MAC) || defined(OS_WIN) || defined(OS_LINUX) || \
+- defined(OS_CHROMEOS)
++ defined(OS_CHROMEOS) || defined(OS_BSD)
+ // Record the startup process creation time on supported platforms. On Android
+ // this is recorded in ChromeMainDelegateAndroid.
+ startup_metric_utils::RecordStartupProcessCreationTime(
+@@ -685,6 +685,8 @@ void ChromeMainDelegate::PostFieldTrialInitialization(
+ // not always enabled on Linux/ChromeOS.
+ #if defined(OS_LINUX) || defined(OS_CHROMEOS)
+ bool enable_gwp_asan = crash_reporter::IsCrashpadEnabled();
++#elif defined(OS_BSD)
++ bool enable_gwp_asan = false;
+ #else
+ bool enable_gwp_asan = true;
+ #endif
+@@ -809,7 +811,7 @@ bool ChromeMainDelegate::BasicStartupComplete(int* exi
+ }
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ // This will directly exit if the user asked for help.
+ HandleHelpSwitches(command_line);
+ #endif
+@@ -840,7 +842,7 @@ bool ChromeMainDelegate::BasicStartupComplete(int* exi
+ #if BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_CHROMEOS_LACROS)
+ chromeos::dbus_paths::RegisterPathProvider();
+ #endif
+-#if BUILDFLAG(ENABLE_NACL) && (defined(OS_LINUX) || defined(OS_CHROMEOS))
++#if BUILDFLAG(ENABLE_NACL) && (defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD))
+ nacl::RegisterPathProvider();
+ #endif
+
+@@ -1154,7 +1156,7 @@ void ChromeMainDelegate::PreSandboxStartup() {
+ locale;
+ }
+
+-#if defined(OS_POSIX) && !defined(OS_MAC)
++#if defined(OS_POSIX) && !defined(OS_MAC) && !defined(OS_BSD)
+ // Zygote needs to call InitCrashReporter() in RunZygote().
+ if (process_type != switches::kZygoteProcess) {
+ #if defined(OS_ANDROID)
+@@ -1237,7 +1239,7 @@ absl::variant<int, content::MainFunctionParams> Chrome
+
+ // This entry is not needed on Linux, where the NaCl loader
+ // process is launched via nacl_helper instead.
+-#if BUILDFLAG(ENABLE_NACL) && !defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if BUILDFLAG(ENABLE_NACL) && !defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(OS_BSD)
+ {switches::kNaClLoaderProcess, NaClMain},
+ #else
+ {"<invalid>", nullptr}, // To avoid constant array of size 0
diff --git a/devel/electron17/files/patch-chrome_app_chromium__strings.grd b/devel/electron17/files/patch-chrome_app_chromium__strings.grd
new file mode 100644
index 000000000000..9e93e6a9ba99
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_app_chromium__strings.grd
@@ -0,0 +1,29 @@
+--- chrome/app/chromium_strings.grd.orig 2022-05-11 07:16:46 UTC
++++ chrome/app/chromium_strings.grd
+@@ -296,7 +296,7 @@ If you update this file, be sure also to update google
+ Welcome to Chromium; new browser window opened
+ </message>
+ </if>
+- <if expr="is_macosx or is_linux">
++ <if expr="is_macosx or is_posix">
+ <message name="IDS_FIRST_RUN_DIALOG_WINDOW_TITLE" desc="Window title of First Run dialog on Mac and Linux, displayed in title bar">
+ Welcome to Chromium
+ </message>
+@@ -808,7 +808,7 @@ Chromium is unable to recover your settings.
+ </if>
+
+ <!-- about:browser-switch strings -->
+- <if expr="is_win or is_macosx or is_fuchsia or (is_linux and not chromeos)">
++ <if expr="is_win or is_macosx or is_fuchsia or (is_posix and not chromeos)">
+ <message name="IDS_ABOUT_BROWSER_SWITCH_DESCRIPTION_UNKNOWN_BROWSER" desc="Description shown while waiting for an alternative browser to open, when the browser name is not auto-detected">
+ Your system administrator has configured Chromium to open an alternative browser to access <ph name="TARGET_URL_HOSTNAME">$1<ex>example.com</ex></ph>.
+ </message>
+@@ -934,7 +934,7 @@ Chromium is unable to recover your settings.
+ </message>
+
+ <!-- ProcessSingleton -->
+- <if expr="is_linux or is_macosx">
++ <if expr="is_posix or is_macosx">
+ <message name="IDS_PROFILE_IN_USE_POSIX" desc="Message shown when the browser cannot start because the profile is in use on a different host.">
+ The profile appears to be in use by another Chromium process (<ph name="PROCESS_ID">$1<ex>12345</ex></ph>) on another computer (<ph name="HOST_NAME">$2<ex>example.com</ex></ph>). Chromium has locked the profile so that it doesn't get corrupted. If you are sure no other processes are using this profile, you can unlock the profile and relaunch Chromium.
+ </message>
diff --git a/devel/electron17/files/patch-chrome_app_generated__resources.grd b/devel/electron17/files/patch-chrome_app_generated__resources.grd
new file mode 100644
index 000000000000..c7e283575e34
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_app_generated__resources.grd
@@ -0,0 +1,56 @@
+--- chrome/app/generated_resources.grd.orig 2022-05-11 07:16:46 UTC
++++ chrome/app/generated_resources.grd
+@@ -2,7 +2,7 @@
+
+ <!--
+ This file contains definitions of resources that will be translated for each
+-locale. The variables is_win, is_macosx, is_linux, and is_posix are available
++locale. The variables is_win, is_macosx, is_posix, and is_posix are available
+ for making strings OS specific. Other platform defines such as use_titlecase
+ are declared in tools/grit/grit_rule.gni.
+ -->
+@@ -296,7 +296,7 @@ are declared in tools/grit/grit_rule.gni.
+ <part file="profiles_strings.grdp" />
+
+ <!-- Web app intent picker strings -->
+- <if expr="is_win or is_macosx or is_linux">
++ <if expr="is_win or is_macosx or is_posix">
+ <part file="url_handler_intent_picker_strings.grdp" />
+ </if>
+
+@@ -2811,7 +2811,7 @@ are declared in tools/grit/grit_rule.gni.
+ </if>
+
+ <!-- Bluetooth Device Credentials (i.e. PIN/Passkey) dialog -->
+- <if expr="is_win or is_linux">
++ <if expr="is_win or is_posix">
+ <message name="IDS_BLUETOOTH_DEVICE_CREDENTIALS_TITLE" desc="Title of the Bluetooth device credentials prompt dialog.">
+ Device Credentials
+ </message>
+@@ -5557,7 +5557,7 @@ Keep your key file in a safe place. You will need it t
+ </if>
+
+ <!-- chrome://browser-switch strings -->
+- <if expr="is_win or is_macosx or is_fuchsia or (is_linux and not chromeos)">
++ <if expr="is_win or is_macosx or is_fuchsia or (is_posix and not chromeos)">
+ <message name="IDS_ABOUT_BROWSER_SWITCH_TITLE" desc="about:browser-switch page title">
+ Legacy Browser Support
+ </message>
+@@ -8016,7 +8016,7 @@ Keep your key file in a safe place. You will need it t
+ Google Pay
+ </message>
+
+- <if expr="is_linux and not chromeos and not lacros">
++ <if expr="is_posix and not chromeos and not lacros">
+ <message name="IDS_SHOW_WINDOW_DECORATIONS" desc="The label of a radio button in the options dialog for using the system title bar and borders.">
+ Use system title bar and borders
+ </message>
+@@ -9104,7 +9104,7 @@ Please help our engineers fix this problem. Tell us wh
+ Set as default
+ </message>
+
+- <if expr="is_linux and not chromeos and not lacros">
++ <if expr="is_posix and not chromeos and not lacros">
+ <message name="IDS_MINIMIZE_WINDOW_MENU" desc="The Linux browser window menu item text for minimizing the window.">
+ Minimize
+ </message>
diff --git a/devel/electron17/files/patch-chrome_app_google__chrome__strings.grd b/devel/electron17/files/patch-chrome_app_google__chrome__strings.grd
new file mode 100644
index 000000000000..0658b64ee91e
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_app_google__chrome__strings.grd
@@ -0,0 +1,29 @@
+--- chrome/app/google_chrome_strings.grd.orig 2022-05-11 07:16:46 UTC
++++ chrome/app/google_chrome_strings.grd
+@@ -301,7 +301,7 @@ chromium_strings.grd. -->
+ Welcome to Chrome; new browser window opened
+ </message>
+ </if>
+- <if expr="is_macosx or is_linux">
++ <if expr="is_macosx or is_posix">
+ <message name="IDS_FIRST_RUN_DIALOG_WINDOW_TITLE" desc="Window title of First Run dialog on Mac and Linux, displayed in title bar">
+ Welcome to Google Chrome
+ </message>
+@@ -816,7 +816,7 @@ Google Chrome is unable to recover your settings.
+ </if>
+
+ <!-- about:browser-switch strings -->
+- <if expr="is_win or is_macosx or is_fuchsia or (is_linux and not chromeos)">
++ <if expr="is_win or is_macosx or is_fuchsia or (is_posix and not chromeos)">
+ <message name="IDS_ABOUT_BROWSER_SWITCH_DESCRIPTION_UNKNOWN_BROWSER" desc="Description shown while waiting for an alternative browser to open, when the browser name is not auto-detected">
+ Your system administrator has configured Google Chrome to open an alternative browser to access <ph name="TARGET_URL_HOSTNAME">$1<ex>example.com</ex></ph>.
+ </message>
+@@ -942,7 +942,7 @@ Google Chrome is unable to recover your settings.
+ </message>
+
+ <!-- ProcessSingleton -->
+- <if expr="is_linux or is_macosx">
++ <if expr="is_posix or is_macosx">
+ <message name="IDS_PROFILE_IN_USE_POSIX" desc="Message shown when the browser cannot start because the profile is in use on a different host.">
+ The profile appears to be in use by another Google Chrome process (<ph name="PROCESS_ID">$1<ex>12345</ex></ph>) on another computer (<ph name="HOST_NAME">$2<ex>example.com</ex></ph>). Chrome has locked the profile so that it doesn't get corrupted. If you are sure no other processes are using this profile, you can unlock the profile and relaunch Chrome.
+ </message>
diff --git a/devel/electron17/files/patch-chrome_app_profiles__strings.grdp b/devel/electron17/files/patch-chrome_app_profiles__strings.grdp
new file mode 100644
index 000000000000..55c6e35238e0
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_app_profiles__strings.grdp
@@ -0,0 +1,11 @@
+--- chrome/app/profiles_strings.grdp.orig 2022-05-11 07:16:46 UTC
++++ chrome/app/profiles_strings.grdp
+@@ -66,7 +66,7 @@
+ Add Profile...
+ </message>
+ </if>
+- <if expr="is_linux">
++ <if expr="is_posix">
+ <message name="IDS_PROFILES_ADD_PROFILE_LABEL" desc="Menu item for adding a new profile.">
+ Add profile...
+ </message>
diff --git a/devel/electron17/files/patch-chrome_app_settings__strings.grdp b/devel/electron17/files/patch-chrome_app_settings__strings.grdp
new file mode 100644
index 000000000000..e0be89211d5f
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_app_settings__strings.grdp
@@ -0,0 +1,20 @@
+--- chrome/app/settings_strings.grdp.orig 2021-10-08 06:25:37 UTC
++++ chrome/app/settings_strings.grdp
+@@ -123,7 +123,7 @@
+ Theme
+ </message>
+ </if>
+- <if expr="is_linux and not chromeos and not lacros">
++ <if expr="is_posix and not chromeos and not lacros">
+ <message name="IDS_SETTINGS_SYSTEM_THEME" desc="Text of the label describing the system (GTK+) browser theme on Linux">
+ GTK+
+ </message>
+@@ -137,7 +137,7 @@
+ Use Classic
+ </message>
+ </if>
+- <if expr="not is_linux or chromeos or lacros or is_fuchsia">
++ <if expr="not is_posix or chromeos or lacros or is_fuchsia">
+ <message name="IDS_SETTINGS_RESET_TO_DEFAULT_THEME" desc="Name of the control which resets the browser theme back to the default theme.">
+ Reset to default
+ </message>
diff --git a/devel/electron17/files/patch-chrome_app_theme_chrome__unscaled__resources.grd b/devel/electron17/files/patch-chrome_app_theme_chrome__unscaled__resources.grd
new file mode 100644
index 000000000000..77ff628b3405
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_app_theme_chrome__unscaled__resources.grd
@@ -0,0 +1,11 @@
+--- chrome/app/theme/chrome_unscaled_resources.grd.orig 2021-01-07 00:36:21 UTC
++++ chrome/app/theme/chrome_unscaled_resources.grd
+@@ -18,7 +18,7 @@
+ <include name="IDR_PRODUCT_LOGO_64" file="google_chrome/product_logo_64.png" type="BINDATA" />
+ <include name="IDR_PRODUCT_LOGO_128" file="google_chrome/product_logo_128.png" type="BINDATA" />
+ <include name="IDR_PRODUCT_LOGO_256" file="google_chrome/product_logo_256.png" type="BINDATA" />
+- <if expr="is_linux">
++ <if expr="is_posix">
+ <include name="IDR_PRODUCT_LOGO_128_BETA" file="google_chrome/product_logo_128_beta.png" type="BINDATA" />
+ <include name="IDR_PRODUCT_LOGO_128_DEV" file="google_chrome/product_logo_128_dev.png" type="BINDATA" />
+ </if>
diff --git a/devel/electron17/files/patch-chrome_app_theme_theme__resources.grd b/devel/electron17/files/patch-chrome_app_theme_theme__resources.grd
new file mode 100644
index 000000000000..e74a4425f72d
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_app_theme_theme__resources.grd
@@ -0,0 +1,11 @@
+--- chrome/app/theme/theme_resources.grd.orig 2021-01-07 00:36:21 UTC
++++ chrome/app/theme/theme_resources.grd
+@@ -25,7 +25,7 @@
+ <!-- KEEP THESE IN ALPHABETICAL ORDER! DO NOT ADD TO RANDOM PLACES JUST
+ BECAUSE YOUR RESOURCES ARE FUNCTIONALLY RELATED OR FALL UNDER THE
+ SAME CONDITIONALS. -->
+- <if expr="is_linux or is_win or chromeos">
++ <if expr="is_posix or is_win or chromeos">
+ <structure type="chrome_scaled_image" name="IDR_ACCESSIBILITY_CAPTIONS_PREVIEW_BACKGROUND" file="common/captions-preview-bg.png" />
+ </if>
+ <if expr="toolkit_views and not is_macosx">
diff --git a/devel/electron17/files/patch-chrome_browser_about__flags.cc b/devel/electron17/files/patch-chrome_browser_about__flags.cc
new file mode 100644
index 000000000000..5c284a6ce1ea
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_about__flags.cc
@@ -0,0 +1,155 @@
+--- chrome/browser/about_flags.cc.orig 2022-05-11 07:16:47 UTC
++++ chrome/browser/about_flags.cc
+@@ -203,7 +203,7 @@
+ #include "ui/native_theme/native_theme_features.h"
+ #include "ui/ui_features.h"
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ #include "base/allocator/buildflags.h"
+ #endif
+
+@@ -271,7 +271,7 @@
+ #include "chrome/browser/supervised_user/supervised_user_features/supervised_user_features.h"
+ #endif // ENABLE_SUPERVISED_USERS
+
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_ASH)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_ASH) || defined(OS_BSD)
+ #include "ui/ozone/buildflags.h"
+ #include "ui/ozone/public/ozone_switches.h"
+ #endif // OS_LINUX || BUILDFLAG(IS_CHROMEOS_ASH)
+@@ -358,7 +358,7 @@ const FeatureEntry::Choice kUseAngleChoicesMac[] = {
+ gl::kANGLEImplementationMetalName}};
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ const FeatureEntry::Choice kOzonePlatformHintRuntimeChoices[] = {
+ {flag_descriptions::kOzonePlatformHintChoiceDefault, "", ""},
+ {flag_descriptions::kOzonePlatformHintChoiceAuto,
+@@ -941,7 +941,7 @@ const FeatureEntry::FeatureVariation kPageContentAnnot
+ };
+
+ #if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC) || \
+- defined(OS_WIN) || defined(OS_FUCHSIA)
++ defined(OS_WIN) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ const FeatureEntry::FeatureParam kOmniboxDocumentProviderServerScoring[] = {
+ {"DocumentUseServerScore", "true"},
+ {"DocumentUseClientScore", "false"},
+@@ -2344,7 +2344,7 @@ const FeatureEntry::FeatureVariation kPasswordChangeFe
+ nullptr}};
+ #endif // defined(OS_ANDROID)
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ const FeatureEntry::FeatureParam
+ kSendWebUIJavaScriptErrorReportsVariationSendToStaging[] = {
+ {features::kSendWebUIJavaScriptErrorReportsSendToProductionVariation,
+@@ -2699,7 +2699,7 @@ const FeatureEntry kFeatureEntries[] = {
+ flag_descriptions::kWebKioskEnableLacrosDescription, kOsCrOS,
+ FEATURE_VALUE_TYPE(features::kWebKioskEnableLacros)},
+ #endif // BUILDFLAG(IS_CHROMEOS_ASH)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ {"send-webui-javascript-error-reports",
+ flag_descriptions::kSendWebUIJavaScriptErrorReportsName,
+ flag_descriptions::kSendWebUIJavaScriptErrorReportsDescription,
+@@ -3208,7 +3208,7 @@ const FeatureEntry kFeatureEntries[] = {
+ FEATURE_VALUE_TYPE(chromeos::kLacrosTtsSupport)},
+ #endif // defined(OS_CHROMEOS)
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ {
+ "enable-accelerated-video-decode",
+ flag_descriptions::kAcceleratedVideoDecodeName,
+@@ -3620,7 +3620,7 @@ const FeatureEntry kFeatureEntries[] = {
+ {"enable-login-detection", flag_descriptions::kEnableLoginDetectionName,
+ flag_descriptions::kEnableLoginDetectionDescription, kOsAll,
+ FEATURE_VALUE_TYPE(login_detection::kLoginDetection)},
+-#if defined(OS_CHROMEOS) || defined(OS_LINUX)
++#if defined(OS_CHROMEOS) || defined(OS_LINUX) || defined(OS_BSD)
+ {"enable-save-data", flag_descriptions::kEnableSaveDataName,
+ flag_descriptions::kEnableSaveDataDescription, kOsCrOS | kOsLinux,
+ SINGLE_VALUE_TYPE(
+@@ -3808,7 +3808,7 @@ const FeatureEntry kFeatureEntries[] = {
+ FEATURE_VALUE_TYPE(features::kWebShare)},
+ #endif // BUILDFLAG(IS_CHROMEOS_ASH) || OS_WIN || OS_MAC
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ {"ozone-platform-hint", flag_descriptions::kOzonePlatformHintName,
+ flag_descriptions::kOzonePlatformHintDescription, kOsLinux,
+ MULTI_VALUE_TYPE(kOzonePlatformHintRuntimeChoices)},
+@@ -4493,7 +4493,7 @@ const FeatureEntry kFeatureEntries[] = {
+ "OmniboxBundledExperimentV1")},
+
+ #if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC) || \
+- defined(OS_WIN) || defined(OS_FUCHSIA)
++ defined(OS_WIN) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ {"omnibox-experimental-keyword-mode",
+ flag_descriptions::kOmniboxExperimentalKeywordModeName,
+ flag_descriptions::kOmniboxExperimentalKeywordModeDescription, kOsDesktop,
+@@ -4870,7 +4870,7 @@ const FeatureEntry kFeatureEntries[] = {
+ #endif // !defined(OS_ANDROID)
+
+ #if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || \
+- defined(OS_CHROMEOS) || defined(OS_FUCHSIA)
++ defined(OS_CHROMEOS) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ {"webui-feedback", flag_descriptions::kWebuiFeedbackName,
+ flag_descriptions::kWebuiFeedbackDescription, kOsDesktop,
+ FEATURE_VALUE_TYPE(features::kWebUIFeedback)},
+@@ -5492,7 +5492,7 @@ const FeatureEntry kFeatureEntries[] = {
+ FEATURE_VALUE_TYPE(kSharingSendViaSync)},
+
+ #if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || \
+- defined(OS_FUCHSIA)
++ defined(OS_FUCHSIA) || defined(OS_BSD)
+ {"sharing-hub-desktop-app-menu",
+ flag_descriptions::kSharingHubDesktopAppMenuName,
+ flag_descriptions::kSharingHubDesktopAppMenuDescription, kOsDesktop,
+@@ -5917,7 +5917,7 @@ const FeatureEntry kFeatureEntries[] = {
+ FEATURE_VALUE_TYPE(features::kMouseSubframeNoImplicitCapture)},
+
+ #if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || \
+- defined(OS_CHROMEOS) || defined(OS_FUCHSIA)
++ defined(OS_CHROMEOS) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ {"global-media-controls-modern-ui",
+ flag_descriptions::kGlobalMediaControlsModernUIName,
+ flag_descriptions::kGlobalMediaControlsModernUIDescription,
+@@ -6606,7 +6606,7 @@ const FeatureEntry kFeatureEntries[] = {
+ #endif
+
+ #if defined(OS_MAC) || defined(OS_WIN) || defined(OS_LINUX) || \
+- defined(OS_CHROMEOS) || defined(OS_FUCHSIA)
++ defined(OS_CHROMEOS) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ {"incognito-brand-consistency-for-desktop",
+ flag_descriptions::kIncognitoBrandConsistencyForDesktopName,
+ flag_descriptions::kIncognitoBrandConsistencyForDesktopDescription,
+@@ -6739,7 +6739,7 @@ const FeatureEntry kFeatureEntries[] = {
+ #endif
+
+ #if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || \
+- defined(OS_FUCHSIA)
++ defined(OS_FUCHSIA) || defined(OS_BSD)
+ {"commander", flag_descriptions::kCommanderName,
+ flag_descriptions::kCommanderDescription, kOsDesktop,
+ FEATURE_VALUE_TYPE(features::kCommander)},
+@@ -6982,7 +6982,7 @@ const FeatureEntry kFeatureEntries[] = {
+ FEATURE_VALUE_TYPE(media::kVp9kSVCHWDecoding)},
+
+ #if defined(OS_WIN) || (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) || \
+- defined(OS_MAC) || defined(OS_FUCHSIA)
++ defined(OS_MAC) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ {
+ "ui-debug-tools",
+ flag_descriptions::kUIDebugToolsName,
+@@ -7124,7 +7124,7 @@ const FeatureEntry kFeatureEntries[] = {
+ #endif
+
+ #if BUILDFLAG(IS_CHROMEOS_ASH) || defined(OS_MAC) || defined(OS_LINUX) || \
+- defined(OS_FUCHSIA)
++ defined(OS_FUCHSIA) || defined(OS_BSD)
+ {"enable-desktop-pwas-app-icon-shortcuts-menu-ui",
+ flag_descriptions::kDesktopPWAsAppIconShortcutsMenuUIName,
+ flag_descriptions::kDesktopPWAsAppIconShortcutsMenuUIDescription,
diff --git a/devel/electron17/files/patch-chrome_browser_after__startup__task__utils.cc b/devel/electron17/files/patch-chrome_browser_after__startup__task__utils.cc
new file mode 100644
index 000000000000..b80a13d95df2
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_after__startup__task__utils.cc
@@ -0,0 +1,29 @@
+--- chrome/browser/after_startup_task_utils.cc.orig 2022-05-11 07:16:47 UTC
++++ chrome/browser/after_startup_task_utils.cc
+@@ -25,7 +25,7 @@
+
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ #include "ui/views/linux_ui/linux_ui.h"
+ #endif
+
+@@ -111,7 +111,7 @@ void SetBrowserStartupIsComplete() {
+
+ g_startup_complete_flag.Get().Set();
+ #if defined(OS_MAC) || defined(OS_WIN) || defined(OS_LINUX) || \
+- defined(OS_CHROMEOS)
++ defined(OS_CHROMEOS) || defined(OS_BSD)
+ // Process::Current().CreationTime() is not available on all platforms.
+ const base::Time process_creation_time =
+ base::Process::Current().CreationTime();
+@@ -130,7 +130,7 @@ void SetBrowserStartupIsComplete() {
+
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ // Make sure we complete the startup notification sequence, or launchers will
+ // get confused by not receiving the expected message from the main process.
+ views::LinuxUI* linux_ui = views::LinuxUI::instance();
diff --git a/devel/electron17/files/patch-chrome_browser_apps_platform__apps_api_music__manager__private_device__id__linux.cc b/devel/electron17/files/patch-chrome_browser_apps_platform__apps_api_music__manager__private_device__id__linux.cc
new file mode 100644
index 000000000000..06365cb2235e
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_apps_platform__apps_api_music__manager__private_device__id__linux.cc
@@ -0,0 +1,71 @@
+--- chrome/browser/apps/platform_apps/api/music_manager_private/device_id_linux.cc.orig 2022-05-11 07:16:47 UTC
++++ chrome/browser/apps/platform_apps/api/music_manager_private/device_id_linux.cc
+@@ -4,6 +4,15 @@
+
+ #include "chrome/browser/apps/platform_apps/api/music_manager_private/device_id.h"
+
++#include "build/build_config.h"
++
++#if defined(OS_BSD)
++#include <sys/types.h>
++#include <net/if_dl.h>
++#include <netinet/in.h>
++#include <sys/socket.h>
++#endif
++
+ #include <ifaddrs.h>
+ #include <net/if.h>
+ #include <stddef.h>
+@@ -105,11 +114,33 @@ class MacAddressProcessor {
+ const char* const prefixes[],
+ size_t prefixes_count) {
+ const int MAC_LENGTH = 6;
++#if defined(OS_BSD)
++ struct ifaddrs *ifap, *ifinfo;
++#else
+ struct ifreq ifinfo;
++#endif
+
+ memset(&ifinfo, 0, sizeof(ifinfo));
+- strncpy(ifinfo.ifr_name, ifaddr->ifa_name, sizeof(ifinfo.ifr_name) - 1);
+
++#if defined(OS_BSD)
++ int result = getifaddrs(&ifap);
++ if (result != 0)
++ return true;
++ result = 1; // no MAC found yet
++ for (ifinfo = ifap; ifinfo != NULL; ifinfo = ifinfo->ifa_next) {
++ struct sockaddr* sa = ifinfo->ifa_addr;
++ if (sa->sa_family == AF_LINK &&
++ !strncmp(ifinfo->ifa_name, ifaddr->ifa_name,
++ sizeof(ifinfo->ifa_name) - 1)) {
++ result = 0;
++ break;
++ }
++ }
++
++ char mac_address[6];
++ strncpy(mac_address, (const char*)LLADDR((struct sockaddr_dl*)ifinfo->ifa_addr), sizeof(mac_address));
++#else
++ strncpy(ifinfo.ifr_name, ifaddr->ifa_name, sizeof(ifinfo.ifr_name) - 1);
+ int sd = socket(AF_INET, SOCK_DGRAM, 0);
+ int result = ioctl(sd, SIOCGIFHWADDR, &ifinfo);
+ close(sd);
+@@ -119,11 +150,17 @@ class MacAddressProcessor {
+
+ const char* mac_address =
+ static_cast<const char*>(ifinfo.ifr_hwaddr.sa_data);
++#endif
+ if (!is_valid_mac_address_.Run(mac_address, MAC_LENGTH))
+ return true;
+
++#if defined(OS_BSD)
++ if (!IsValidPrefix(ifinfo->ifa_name, prefixes, prefixes_count))
++ return true;
++#else
+ if (!IsValidPrefix(ifinfo.ifr_name, prefixes, prefixes_count))
+ return true;
++#endif
+
+ // Got one!
+ found_mac_address_ =
diff --git a/devel/electron17/files/patch-chrome_browser_apps_platform__apps_platform__app__launch.cc b/devel/electron17/files/patch-chrome_browser_apps_platform__apps_platform__app__launch.cc
new file mode 100644
index 000000000000..9635e6379b76
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_apps_platform__apps_platform__app__launch.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/apps/platform_apps/platform_app_launch.cc.orig 2022-05-11 07:16:47 UTC
++++ chrome/browser/apps/platform_apps/platform_app_launch.cc
+@@ -17,7 +17,7 @@
+ #include "extensions/common/constants.h"
+ #include "extensions/common/extension.h"
+
+-#if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || defined(OS_BSD)
+ #include "chrome/browser/ui/browser.h"
+ #include "chrome/browser/ui/browser_navigator.h"
+ #include "chrome/browser/ui/browser_window.h"
+@@ -122,7 +122,7 @@ bool OpenExtensionApplicationTab(Profile* profile, con
+ return app_tab != nullptr;
+ }
+
+-#if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || defined(OS_BSD)
+ bool OpenDeprecatedApplicationPrompt(Profile* profile,
+ const std::string& app_id) {
+ if (!extensions::IsExtensionUnsupportedDeprecatedApp(profile, app_id))
diff --git a/devel/electron17/files/patch-chrome_browser_apps_platform__apps_platform__app__launch.h b/devel/electron17/files/patch-chrome_browser_apps_platform__apps_platform__app__launch.h
new file mode 100644
index 000000000000..be3e1b078f39
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_apps_platform__apps_platform__app__launch.h
@@ -0,0 +1,11 @@
+--- chrome/browser/apps/platform_apps/platform_app_launch.h.orig 2021-10-08 06:25:38 UTC
++++ chrome/browser/apps/platform_apps/platform_app_launch.h
+@@ -36,7 +36,7 @@ bool OpenExtensionApplicationWindow(Profile* profile,
+ // and false otherwise.
+ bool OpenExtensionApplicationTab(Profile* profile, const std::string& app_id);
+
+-#if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || defined(OS_BSD)
+ // Opens the deprecated Chrome Apps flow if |app_id| refers to a Chrome App and
+ // Chrome Apps are deprecated on the |profile|. Returns true if that was the
+ // case, or false otherwise.
diff --git a/devel/electron17/files/patch-chrome_browser_autocomplete_chrome__autocomplete__scheme__classifier.cc b/devel/electron17/files/patch-chrome_browser_autocomplete_chrome__autocomplete__scheme__classifier.cc
new file mode 100644
index 000000000000..25d4808a29c6
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_autocomplete_chrome__autocomplete__scheme__classifier.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/autocomplete/chrome_autocomplete_scheme_classifier.cc.orig 2022-05-11 07:16:47 UTC
++++ chrome/browser/autocomplete/chrome_autocomplete_scheme_classifier.cc
+@@ -89,7 +89,7 @@ ChromeAutocompleteSchemeClassifier::GetInputTypeForSch
+ return metrics::OmniboxInputType::QUERY;
+
+ case ExternalProtocolHandler::UNKNOWN: {
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // Linux impl of GetApplicationNameForProtocol doesn't distinguish
+ // between URL schemes with handers and those without. This will
+ // make the default behaviour be search on Linux.
diff --git a/devel/electron17/files/patch-chrome_browser_background_background__mode__manager.cc b/devel/electron17/files/patch-chrome_browser_background_background__mode__manager.cc
new file mode 100644
index 000000000000..c7d098d8f4ec
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_background_background__mode__manager.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/background/background_mode_manager.cc.orig 2021-10-08 06:25:38 UTC
++++ chrome/browser/background/background_mode_manager.cc
+@@ -892,7 +892,7 @@ gfx::ImageSkia GetStatusTrayIcon() {
+ return gfx::ImageSkia();
+
+ return family->CreateExact(size).AsImageSkia();
+-#elif defined(OS_LINUX) || defined(OS_CHROMEOS)
++#elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ return *ui::ResourceBundle::GetSharedInstance().GetImageSkiaNamed(
+ IDR_PRODUCT_LOGO_128);
+ #elif defined(OS_MAC)
diff --git a/devel/electron17/files/patch-chrome_browser_background_background__mode__optimizer.cc b/devel/electron17/files/patch-chrome_browser_background_background__mode__optimizer.cc
new file mode 100644
index 000000000000..a1d59a531d77
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_background_background__mode__optimizer.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/background/background_mode_optimizer.cc.orig 2022-05-11 07:16:47 UTC
++++ chrome/browser/background/background_mode_optimizer.cc
+@@ -31,7 +31,7 @@ std::unique_ptr<BackgroundModeOptimizer> BackgroundMod
+ switches::kKeepAliveForTest))
+ return nullptr;
+
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ if (base::FeatureList::IsEnabled(features::kBackgroundModeAllowRestart))
+ return base::WrapUnique(new BackgroundModeOptimizer());
+ #endif // defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS)
diff --git a/devel/electron17/files/patch-chrome_browser_browser__process__impl.cc b/devel/electron17/files/patch-chrome_browser_browser__process__impl.cc
new file mode 100644
index 000000000000..430a8bbd78bb
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_browser__process__impl.cc
@@ -0,0 +1,29 @@
+--- chrome/browser/browser_process_impl.cc.orig 2022-05-11 07:16:47 UTC
++++ chrome/browser/browser_process_impl.cc
+@@ -208,7 +208,7 @@
+ #include "components/enterprise/browser/controller/chrome_browser_cloud_management_controller.h"
+ #endif
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ #include "chrome/browser/error_reporting/chrome_js_error_report_processor.h" // nogncheck
+ #endif
+
+@@ -1160,7 +1160,7 @@ void BrowserProcessImpl::PreMainMessageLoopRun() {
+ ApplyMetricsReportingPolicy();
+ #endif
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ ChromeJsErrorReportProcessor::Create();
+ #endif
+
+@@ -1420,7 +1420,7 @@ void BrowserProcessImpl::Unpin() {
+ // Mac is currently not supported.
+ // TODO(crbug.com/1052397): Revisit once build flag switch of lacros-chrome is
+ // complete.
+-#if defined(OS_WIN) || (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
++#if defined(OS_WIN) || (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) || defined(OS_BSD)
+
+ bool BrowserProcessImpl::IsRunningInBackground() const {
+ // Check if browser is in the background.
diff --git a/devel/electron17/files/patch-chrome_browser_browser__process__impl.h b/devel/electron17/files/patch-chrome_browser_browser__process__impl.h
new file mode 100644
index 000000000000..43a1f73ab06e
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_browser__process__impl.h
@@ -0,0 +1,11 @@
+--- chrome/browser/browser_process_impl.h.orig 2022-05-11 07:16:47 UTC
++++ chrome/browser/browser_process_impl.h
+@@ -373,7 +373,7 @@ class BrowserProcessImpl : public BrowserProcess,
+
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_WIN) || (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
++#if defined(OS_WIN) || (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) || defined(OS_BSD)
+ base::RepeatingTimer autoupdate_timer_;
+
+ // Gets called by autoupdate timer to see if browser needs restart and can be
diff --git a/devel/electron17/files/patch-chrome_browser_chrome__browser__interface__binders.cc b/devel/electron17/files/patch-chrome_browser_chrome__browser__interface__binders.cc
new file mode 100644
index 000000000000..5fc287abd2bf
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_chrome__browser__interface__binders.cc
@@ -0,0 +1,56 @@
+--- chrome/browser/chrome_browser_interface_binders.cc.orig 2022-05-11 07:16:47 UTC
++++ chrome/browser/chrome_browser_interface_binders.cc
+@@ -97,7 +97,7 @@
+ #endif // BUILDFLAG(FULL_SAFE_BROWSING)
+
+ #if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || \
+- BUILDFLAG(IS_CHROMEOS_ASH)
++ BUILDFLAG(IS_CHROMEOS_ASH) || defined(OS_BSD)
+ #include "chrome/browser/ui/webui/connectors_internals/connectors_internals.mojom.h"
+ #include "chrome/browser/ui/webui/connectors_internals/connectors_internals_ui.h"
+ #endif
+@@ -165,7 +165,7 @@
+ #endif // defined(OS_ANDROID)
+
+ #if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || \
+- defined(OS_CHROMEOS)
++ defined(OS_CHROMEOS) || defined(OS_BSD)
+ #include "chrome/browser/ui/webui/discards/discards.mojom.h"
+ #include "chrome/browser/ui/webui/discards/discards_ui.h"
+ #include "chrome/browser/ui/webui/discards/site_data.mojom.h"
+@@ -654,7 +654,7 @@ void PopulateChromeFrameBinders(
+ #endif
+
+ #if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || \
+- defined(OS_CHROMEOS)
++ defined(OS_CHROMEOS) || defined(OS_BSD)
+ if (!render_frame_host->GetParent()) {
+ map->Add<chrome::mojom::DraggableRegions>(
+ base::BindRepeating(&DraggableRegionsHostImpl::CreateIfAllowed));
+@@ -662,7 +662,7 @@ void PopulateChromeFrameBinders(
+ #endif
+
+ #if defined(OS_CHROMEOS) || defined(OS_LINUX) || defined(OS_MAC) || \
+- defined(OS_WIN)
++ defined(OS_WIN) || defined(OS_BSD)
+ if (base::FeatureList::IsEnabled(blink::features::kDesktopPWAsSubApps) &&
+ !render_frame_host->GetParent()) {
+ map->Add<blink::mojom::SubAppsProvider>(
+@@ -702,7 +702,7 @@ void PopulateChromeWebUIFrameBinders(
+ SegmentationInternalsUI>(map);
+
+ #if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || \
+- BUILDFLAG(IS_CHROMEOS_ASH)
++ BUILDFLAG(IS_CHROMEOS_ASH) || defined(OS_BSD)
+ RegisterWebUIControllerInterfaceBinder<
+ connectors_internals::mojom::PageHandler,
+ enterprise_connectors::ConnectorsInternalsUI>(map);
+@@ -1003,7 +1003,7 @@ void PopulateChromeWebUIFrameBinders(
+ #endif
+
+ #if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || \
+- defined(OS_CHROMEOS)
++ defined(OS_CHROMEOS) || defined(OS_BSD)
+ RegisterWebUIControllerInterfaceBinder<discards::mojom::DetailsProvider,
+ DiscardsUI>(map);
+
diff --git a/devel/electron17/files/patch-chrome_browser_chrome__browser__main.cc b/devel/electron17/files/patch-chrome_browser_chrome__browser__main.cc
new file mode 100644
index 000000000000..f186a2c5a4f8
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_chrome__browser__main.cc
@@ -0,0 +1,52 @@
+--- chrome/browser/chrome_browser_main.cc.orig 2022-05-11 07:16:47 UTC
++++ chrome/browser/chrome_browser_main.cc
+@@ -224,11 +224,11 @@
+
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ #include "chrome/browser/first_run/upgrade_util_linux.h"
+ #endif // defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ #include "components/crash/core/app/breakpad_linux.h"
+ #include "components/crash/core/app/crashpad.h"
+ #endif
+@@ -263,7 +263,7 @@
+
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_WIN) || defined(OS_MAC) || \
++#if defined(OS_WIN) || defined(OS_MAC) || defined(OS_BSD) || \
+ (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
+ #include "chrome/browser/metrics/desktop_session_duration/desktop_session_duration_tracker.h"
+ #include "chrome/browser/metrics/desktop_session_duration/touch_mode_stats_tracker.h"
+@@ -949,7 +949,7 @@ int ChromeBrowserMainParts::PreCreateThreadsImpl() {
+ AddFirstRunNewTabs(browser_creator_.get(), master_prefs_->new_tabs);
+ }
+
+-#if defined(OS_MAC) || defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_MAC) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // Create directory for user-level Native Messaging manifest files. This
+ // makes it less likely that the directory will be created by third-party
+ // software with incorrect owner or permission. See crbug.com/725513 .
+@@ -962,7 +962,7 @@ int ChromeBrowserMainParts::PreCreateThreadsImpl() {
+ }
+ #endif // !defined(OS_ANDROID) && !BUILDFLAG(IS_CHROMEOS_ASH)
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_OPENBSD)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS)
+ // Set the product channel for crash reports.
+ if (!crash_reporter::IsCrashpadEnabled()) {
+ breakpad::SetChannelCrashKey(
+@@ -982,7 +982,7 @@ int ChromeBrowserMainParts::PreCreateThreadsImpl() {
+
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_WIN) || defined(OS_MAC) || \
++#if defined(OS_WIN) || defined(OS_MAC) || defined(OS_BSD) || \
+ (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
+ metrics::DesktopSessionDurationTracker::Initialize();
+ ProfileActivityMetricsRecorder::Initialize();
diff --git a/devel/electron17/files/patch-chrome_browser_chrome__browser__main__extra__parts__linux.cc b/devel/electron17/files/patch-chrome_browser_chrome__browser__main__extra__parts__linux.cc
new file mode 100644
index 000000000000..97ac4040cab7
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_chrome__browser__main__extra__parts__linux.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/chrome_browser_main_extra_parts_linux.cc.orig 2022-05-11 07:16:47 UTC
++++ chrome/browser/chrome_browser_main_extra_parts_linux.cc
+@@ -120,7 +120,7 @@ ChromeBrowserMainExtraPartsLinux::ChromeBrowserMainExt
+ ChromeBrowserMainExtraPartsLinux::~ChromeBrowserMainExtraPartsLinux() = default;
+
+ void ChromeBrowserMainExtraPartsLinux::PreEarlyInitialization() {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // On the desktop, we fix the platform name if necessary.
+ // See https://crbug.com/1246928.
+ auto* const command_line = base::CommandLine::ForCurrentProcess();
diff --git a/devel/electron17/files/patch-chrome_browser_chrome__browser__main__linux.cc b/devel/electron17/files/patch-chrome_browser_chrome__browser__main__linux.cc
new file mode 100644
index 000000000000..a1dbcc88b71e
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_chrome__browser__main__linux.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/chrome_browser_main_linux.cc.orig 2022-05-11 07:16:47 UTC
++++ chrome/browser/chrome_browser_main_linux.cc
+@@ -86,7 +86,7 @@ void ChromeBrowserMainPartsLinux::PreProfileInit() {
+ }
+
+ void ChromeBrowserMainPartsLinux::PostCreateMainMessageLoop() {
+-#if BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ // No-op: Ash and Lacros Bluetooth DBusManager initialization depend on
+ // FeatureList, and is done elsewhere.
+ #else
+@@ -115,7 +115,7 @@ void ChromeBrowserMainPartsLinux::PostBrowserStart() {
+ #endif // defined(USE_DBUS) && !defined(OS_CHROMEOS)
+
+ void ChromeBrowserMainPartsLinux::PostDestroyThreads() {
+-#if BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ // No-op; per PostBrowserStart() comment, this is done elsewhere.
+ #else
+ bluez::BluezDBusManager::Shutdown();
diff --git a/devel/electron17/files/patch-chrome_browser_chrome__browser__main__posix.cc b/devel/electron17/files/patch-chrome_browser_chrome__browser__main__posix.cc
new file mode 100644
index 000000000000..34dbf18e0de0
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_chrome__browser__main__posix.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/chrome_browser_main_posix.cc.orig 2022-05-11 07:16:47 UTC
++++ chrome/browser/chrome_browser_main_posix.cc
+@@ -72,7 +72,7 @@ void ExitHandler::ExitWhenPossibleOnUIThread(int signa
+ } else {
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ switch (signal) {
+ case SIGINT:
+ case SIGHUP:
diff --git a/devel/electron17/files/patch-chrome_browser_chrome__content__browser__client.cc b/devel/electron17/files/patch-chrome_browser_chrome__content__browser__client.cc
new file mode 100644
index 000000000000..f520e35a01c7
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_chrome__content__browser__client.cc
@@ -0,0 +1,136 @@
+--- chrome/browser/chrome_content_browser_client.cc.orig 2022-05-11 07:16:47 UTC
++++ chrome/browser/chrome_content_browser_client.cc
+@@ -373,7 +373,7 @@
+ #include "components/user_manager/user_manager.h"
+ #include "services/service_manager/public/mojom/interface_provider_spec.mojom.h"
+ #include "storage/browser/file_system/external_mount_points.h"
+-#elif defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#elif defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ #include "chrome/browser/chrome_browser_main_linux.h"
+ #elif defined(OS_ANDROID)
+ #include "base/android/application_status_listener.h"
+@@ -437,17 +437,17 @@
+
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_WIN) || defined(OS_MAC) || \
++#if defined(OS_WIN) || defined(OS_MAC) || defined(OS_BSD) || \
+ (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
+ #include "chrome/browser/browser_switcher/browser_switcher_navigation_throttle.h"
+ #endif
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ #include "components/crash/core/app/crash_switches.h"
+ #include "components/crash/core/app/crashpad.h"
+ #endif
+
+-#if defined(OS_POSIX) && !defined(OS_MAC)
++#if defined(OS_POSIX) && !defined(OS_MAC) && !defined(OS_BSD)
+ #if !defined(OS_ANDROID)
+ #include "base/debug/leak_annotations.h"
+ #include "components/crash/core/app/breakpad_linux.h"
+@@ -456,7 +456,7 @@
+ #endif
+
+ #if defined(OS_LINUX) || defined(OS_MAC) || defined(OS_WIN) || \
+- BUILDFLAG(IS_CHROMEOS_ASH)
++ BUILDFLAG(IS_CHROMEOS_ASH) || defined(OS_BSD)
+ #include "chrome/browser/enterprise/connectors/device_trust/navigation_throttle.h"
+ #endif // defined(OS_LINUX) || defined(OS_MAC) || defined(OS_WIN) ||
+ // BUILDFLAG(IS_CHROMEOS_ASH)
+@@ -478,11 +478,11 @@
+
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ #include "chrome/browser/ui/views/chrome_browser_main_extra_parts_views_linux.h"
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "chrome/browser/chrome_browser_main_extra_parts_linux.h"
+ #elif defined(USE_OZONE)
+ #include "chrome/browser/chrome_browser_main_extra_parts_ozone.h"
+@@ -866,7 +866,7 @@ blink::mojom::AutoplayPolicy GetAutoplayPolicyForWebCo
+ int GetCrashSignalFD(const base::CommandLine& command_line) {
+ return crashpad::CrashHandlerHost::Get()->GetDeathSignalSocket();
+ }
+-#elif defined(OS_POSIX) && !defined(OS_MAC)
++#elif defined(OS_POSIX) && !defined(OS_MAC) && !defined(OS_BSD)
+ breakpad::CrashHandlerHostLinux* CreateCrashHandlerHost(
+ const std::string& process_type) {
+ base::FilePath dumps_path;
+@@ -1361,7 +1361,7 @@ ChromeContentBrowserClient::CreateBrowserMainParts(
+ #elif BUILDFLAG(IS_CHROMEOS_LACROS)
+ main_parts = std::make_unique<ChromeBrowserMainPartsLacros>(
+ std::move(parameters), &startup_data_);
+-#elif defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#elif defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ main_parts = std::make_unique<ChromeBrowserMainPartsLinux>(
+ std::move(parameters), &startup_data_);
+ #elif defined(OS_ANDROID)
+@@ -1395,7 +1395,7 @@ ChromeContentBrowserClient::CreateBrowserMainParts(
+ std::make_unique<ChromeBrowserMainExtraPartsViewsLacros>());
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#elif defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#elif defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ main_parts->AddParts(
+ std::make_unique<ChromeBrowserMainExtraPartsViewsLinux>());
+ #else
+@@ -1412,7 +1412,7 @@ ChromeContentBrowserClient::CreateBrowserMainParts(
+ main_parts->AddParts(std::make_unique<ChromeBrowserMainExtraPartsLacros>());
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ main_parts->AddParts(std::make_unique<ChromeBrowserMainExtraPartsLinux>());
+ #elif defined(USE_OZONE)
+ main_parts->AddParts(std::make_unique<ChromeBrowserMainExtraPartsOzone>());
+@@ -2184,6 +2184,8 @@ void ChromeContentBrowserClient::AppendExtraCommandLin
+ #elif defined(OS_POSIX)
+ #if defined(OS_ANDROID)
+ bool enable_crash_reporter = true;
++#elif defined(OS_BSD)
++ bool enable_crash_reporter = false;
+ #else
+ bool enable_crash_reporter = false;
+ if (crash_reporter::IsCrashpadEnabled()) {
+@@ -2497,7 +2499,7 @@ void ChromeContentBrowserClient::AppendExtraCommandLin
+ ThreadProfilerConfiguration::Get()->AppendCommandLineSwitchForChildProcess(
+ command_line);
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // Processes may only query perf_event_open with the BPF sandbox disabled.
+ if (browser_command_line.HasSwitch(switches::kEnableThreadInstructionCount) &&
+ command_line->HasSwitch(sandbox::policy::switches::kNoSandbox)) {
+@@ -3858,7 +3860,7 @@ void ChromeContentBrowserClient::GetAdditionalFileSyst
+ }
+ }
+
+-#if defined(OS_POSIX) && !defined(OS_MAC)
++#if defined(OS_POSIX) && !defined(OS_MAC) && !defined(OS_BSD)
+ void ChromeContentBrowserClient::GetAdditionalMappedFilesForChildProcess(
+ const base::CommandLine& command_line,
+ int child_process_id,
+@@ -4266,7 +4268,7 @@ ChromeContentBrowserClient::CreateThrottlesForNavigati
+ }
+
+ #if defined(OS_LINUX) || defined(OS_MAC) || defined(OS_WIN) || \
+- BUILDFLAG(IS_CHROMEOS_ASH)
++ BUILDFLAG(IS_CHROMEOS_ASH) || defined(OS_BSD)
+ MaybeAddThrottle(enterprise_connectors::DeviceTrustNavigationThrottle::
+ MaybeCreateThrottleFor(handle),
+ &throttles);
+@@ -4299,7 +4301,7 @@ ChromeContentBrowserClient::CreateThrottlesForNavigati
+
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_WIN) || defined(OS_MAC) || \
++#if defined(OS_WIN) || defined(OS_MAC) || defined(OS_BSD) || \
+ (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
+ MaybeAddThrottle(browser_switcher::BrowserSwitcherNavigationThrottle::
+ MaybeCreateThrottleFor(handle),
diff --git a/devel/electron17/files/patch-chrome_browser_chrome__content__browser__client.h b/devel/electron17/files/patch-chrome_browser_chrome__content__browser__client.h
new file mode 100644
index 000000000000..d1376e234953
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_chrome__content__browser__client.h
@@ -0,0 +1,11 @@
+--- chrome/browser/chrome_content_browser_client.h.orig 2022-05-11 07:16:47 UTC
++++ chrome/browser/chrome_content_browser_client.h
+@@ -412,7 +412,7 @@ class ChromeContentBrowserClient : public content::Con
+ void OverridePageVisibilityState(
+ content::RenderFrameHost* render_frame_host,
+ content::PageVisibilityState* visibility_state) override;
+-#if defined(OS_POSIX) && !defined(OS_MAC)
++#if defined(OS_POSIX) && !defined(OS_MAC) && !defined(OS_BSD)
+ void GetAdditionalMappedFilesForChildProcess(
+ const base::CommandLine& command_line,
+ int child_process_id,
diff --git a/devel/electron17/files/patch-chrome_browser_crash__upload__list_crash__upload__list.cc b/devel/electron17/files/patch-chrome_browser_crash__upload__list_crash__upload__list.cc
new file mode 100644
index 000000000000..cb6e878ac41c
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_crash__upload__list_crash__upload__list.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/crash_upload_list/crash_upload_list.cc.orig 2021-10-08 06:25:38 UTC
++++ chrome/browser/crash_upload_list/crash_upload_list.cc
+@@ -52,7 +52,7 @@ scoped_refptr<UploadList> CreateCrashUploadList() {
+ // to log uploads in CrashUploadList::kReporterLogFilename.
+ // Linux is handled below.
+ #if !(BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_CHROMEOS_LACROS) || \
+- defined(OS_LINUX))
++ defined(OS_LINUX) || defined(OS_BSD))
+ if (crash_reporter::IsCrashpadEnabled()) {
+ return new CrashUploadListCrashpad();
+ }
diff --git a/devel/electron17/files/patch-chrome_browser_custom__handlers_chrome__protocol__handler__registry__delegate.cc b/devel/electron17/files/patch-chrome_browser_custom__handlers_chrome__protocol__handler__registry__delegate.cc
new file mode 100644
index 000000000000..ab43257e15fa
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_custom__handlers_chrome__protocol__handler__registry__delegate.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/custom_handlers/chrome_protocol_handler_registry_delegate.cc.orig 2022-05-11 07:16:47 UTC
++++ chrome/browser/custom_handlers/chrome_protocol_handler_registry_delegate.cc
+@@ -69,7 +69,7 @@ void ChromeProtocolHandlerRegistryDelegate::CheckDefau
+ // If true default protocol handlers will be removed if the OS level
+ // registration for a protocol is no longer Chrome.
+ bool ChromeProtocolHandlerRegistryDelegate::ShouldRemoveHandlersNotInOS() {
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // We don't do this on Linux as the OS registration there is not reliable,
+ // and Chrome OS doesn't have any notion of OS registration.
+ // TODO(benwells): When Linux support is more reliable remove this
diff --git a/devel/electron17/files/patch-chrome_browser_defaults.cc b/devel/electron17/files/patch-chrome_browser_defaults.cc
new file mode 100644
index 000000000000..dba79aec5b14
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_defaults.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/defaults.cc.orig 2021-11-19 04:25:08 UTC
++++ chrome/browser/defaults.cc
+@@ -50,7 +50,7 @@ const bool kSyncAutoStarts = false;
+
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ const bool kScrollEventChangesTab = true;
+ #else
+ const bool kScrollEventChangesTab = false;
diff --git a/devel/electron17/files/patch-chrome_browser_dev__ui__browser__resources.grd b/devel/electron17/files/patch-chrome_browser_dev__ui__browser__resources.grd
new file mode 100644
index 000000000000..449a43c81631
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_dev__ui__browser__resources.grd
@@ -0,0 +1,11 @@
+--- chrome/browser/dev_ui_browser_resources.grd.orig 2021-07-15 19:13:32 UTC
++++ chrome/browser/dev_ui_browser_resources.grd
+@@ -47,7 +47,7 @@ This file specifies browser resources for developer-fa
+ <include name="IDR_MEDIA_SESSION_MOJOM_LITE_JS" file="${root_gen_dir}\services\media_session\public\mojom\media_session.mojom-lite.js" use_base_dir="false" type="BINDATA" />
+ <include name="IDR_UI_GEOMETRY_MOJOM_LITE_JS" file="${root_gen_dir}\ui\gfx\geometry\mojom\geometry.mojom-lite.js" use_base_dir="false" type="BINDATA" />
+
+- <if expr="is_android or is_linux">
++ <if expr="is_android or is_posix">
+ <include name="IDR_SANDBOX_INTERNALS_HTML" file="resources\sandbox_internals\sandbox_internals.html" preprocess="true" type="BINDATA" />
+ <include name="IDR_SANDBOX_INTERNALS_JS" file="resources\sandbox_internals\sandbox_internals.js" preprocess="true" type="BINDATA" />
+ </if>
diff --git a/devel/electron17/files/patch-chrome_browser_device__identity_device__oauth2__token__service__factory.cc b/devel/electron17/files/patch-chrome_browser_device__identity_device__oauth2__token__service__factory.cc
new file mode 100644
index 000000000000..a2721460bc0d
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_device__identity_device__oauth2__token__service__factory.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/device_identity/device_oauth2_token_service_factory.cc.orig 2022-05-11 07:16:47 UTC
++++ chrome/browser/device_identity/device_oauth2_token_service_factory.cc
+@@ -28,7 +28,7 @@ std::unique_ptr<DeviceOAuth2TokenStore> CreatePlatform
+ return std::make_unique<chromeos::DeviceOAuth2TokenStoreChromeOS>(
+ local_state);
+ #elif defined(OS_WIN) || defined(OS_MAC) || defined(OS_FUCHSIA) || \
+- (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
++ (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) || defined(OS_BSD)
+ return std::make_unique<DeviceOAuth2TokenStoreDesktop>(local_state);
+ #else
+ NOTREACHED();
diff --git a/devel/electron17/files/patch-chrome_browser_devtools_devtools__eye__dropper.cc b/devel/electron17/files/patch-chrome_browser_devtools_devtools__eye__dropper.cc
new file mode 100644
index 000000000000..b860e0247f65
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_devtools_devtools__eye__dropper.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/devtools/devtools_eye_dropper.cc.orig 2022-05-11 07:16:47 UTC
++++ chrome/browser/devtools/devtools_eye_dropper.cc
+@@ -186,7 +186,7 @@ void DevToolsEyeDropper::UpdateCursor() {
+ // magnified projection only with centered hotspot.
+ // Mac Retina requires cursor to be > 120px in order to render smoothly.
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ const float kCursorSize = 63;
+ const float kDiameter = 63;
+ const float kHotspotOffset = 32;
diff --git a/devel/electron17/files/patch-chrome_browser_diagnostics_diagnostics__writer.h b/devel/electron17/files/patch-chrome_browser_diagnostics_diagnostics__writer.h
new file mode 100644
index 000000000000..6ce49765d875
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_diagnostics_diagnostics__writer.h
@@ -0,0 +1,11 @@
+--- chrome/browser/diagnostics/diagnostics_writer.h.orig 2022-05-11 07:00:29 UTC
++++ chrome/browser/diagnostics/diagnostics_writer.h
+@@ -14,6 +14,8 @@ namespace diagnostics {
+ // Console base class used internally.
+ class SimpleConsole;
+
++#undef MACHINE
++
+ class DiagnosticsWriter : public DiagnosticsModel::Observer {
+ public:
+ // The type of formatting done by this writer.
diff --git a/devel/electron17/files/patch-chrome_browser_download_chrome__download__manager__delegate.cc b/devel/electron17/files/patch-chrome_browser_download_chrome__download__manager__delegate.cc
new file mode 100644
index 000000000000..412bef43e70a
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_download_chrome__download__manager__delegate.cc
@@ -0,0 +1,47 @@
+--- chrome/browser/download/chrome_download_manager_delegate.cc.orig 2022-05-11 07:16:47 UTC
++++ chrome/browser/download/chrome_download_manager_delegate.cc
+@@ -1539,7 +1539,7 @@ void ChromeDownloadManagerDelegate::OnDownloadTargetDe
+ target_info->is_filetype_handled_safely)
+ DownloadItemModel(item).SetShouldPreferOpeningInBrowser(true);
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ if (item->GetOriginalMimeType() == "application/x-x509-user-cert")
+ DownloadItemModel(item).SetShouldPreferOpeningInBrowser(true);
+ #endif
+@@ -1608,7 +1608,7 @@ void ChromeDownloadManagerDelegate::OnDownloadTargetDe
+ bool ChromeDownloadManagerDelegate::IsOpenInBrowserPreferreredForFile(
+ const base::FilePath& path) {
+ #if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) || \
+- defined(OS_MAC)
++ defined(OS_MAC) || defined(OS_BSD)
+ if (path.MatchesExtension(FILE_PATH_LITERAL(".pdf"))) {
+ return !download_prefs_->ShouldOpenPdfInSystemReader();
+ }
+@@ -1716,7 +1716,7 @@ void ChromeDownloadManagerDelegate::CheckDownloadAllow
+ content::CheckDownloadAllowedCallback check_download_allowed_cb) {
+ DCHECK_CURRENTLY_ON(BrowserThread::UI);
+ #if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) || \
+- defined(OS_MAC)
++ defined(OS_MAC) || defined(OS_BSD)
+ // Don't download pdf if it is a file URL, as that might cause an infinite
+ // download loop if Chrome is not the system pdf viewer.
+ if (url.SchemeIsFile() && download_prefs_->ShouldOpenPdfInSystemReader()) {
+@@ -1758,7 +1758,7 @@ std::unique_ptr<download::DownloadItemRenameHandler>
+ ChromeDownloadManagerDelegate::GetRenameHandlerForDownload(
+ download::DownloadItem* download_item) {
+ #if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) || \
+- defined(OS_MAC)
++ defined(OS_MAC) || defined(OS_BSD)
+ return enterprise_connectors::FileSystemRenameHandler::CreateIfNeeded(
+ download_item);
+ #else
+@@ -1774,7 +1774,7 @@ void ChromeDownloadManagerDelegate::CheckSavePackageAl
+ DCHECK(download_item->IsSavePackageDownload());
+
+ #if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) || \
+- defined(OS_MAC)
++ defined(OS_MAC) || defined(OS_BSD)
+ if (!base::FeatureList::IsEnabled(
+ download::features::kAllowSavePackageScanning)) {
+ std::move(callback).Run(true);
diff --git a/devel/electron17/files/patch-chrome_browser_download_download__commands.cc b/devel/electron17/files/patch-chrome_browser_download_download__commands.cc
new file mode 100644
index 000000000000..0e8d6cafc044
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_download_download__commands.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/download/download_commands.cc.orig 2022-05-11 07:16:47 UTC
++++ chrome/browser/download/download_commands.cc
+@@ -27,7 +27,7 @@
+ #include "ui/base/clipboard/scoped_clipboard_writer.h"
+
+ #if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) || \
+- defined(OS_MAC) || defined(OS_FUCHSIA)
++ defined(OS_MAC) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ #include "chrome/browser/ui/browser.h"
+ #include "chrome/browser/ui/browser_finder.h"
+ #include "chrome/browser/ui/scoped_tabbed_browser_displayer.h"
+@@ -168,7 +168,7 @@ void DownloadCommands::ExecuteCommand(Command command)
+ }
+
+ #if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || \
+- defined(OS_CHROMEOS) || defined(OS_FUCHSIA)
++ defined(OS_CHROMEOS) || defined(OS_FUCHSIA) || defined(OS_BSD)
+
+ Browser* DownloadCommands::GetBrowser() const {
+ if (!model_)
diff --git a/devel/electron17/files/patch-chrome_browser_download_download__commands.h b/devel/electron17/files/patch-chrome_browser_download_download__commands.h
new file mode 100644
index 000000000000..dd0b32ccb662
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_download_download__commands.h
@@ -0,0 +1,11 @@
+--- chrome/browser/download/download_commands.h.orig 2022-05-11 07:16:47 UTC
++++ chrome/browser/download/download_commands.h
+@@ -54,7 +54,7 @@ class DownloadCommands {
+ void ExecuteCommand(Command command);
+
+ #if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) || \
+- defined(OS_MAC) || defined(OS_FUCHSIA)
++ defined(OS_MAC) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ bool IsDownloadPdf() const;
+ bool CanOpenPdfInSystemViewer() const;
+ Browser* GetBrowser() const;
diff --git a/devel/electron17/files/patch-chrome_browser_download_download__item__model.cc b/devel/electron17/files/patch-chrome_browser_download_download__item__model.cc
new file mode 100644
index 000000000000..5c1203cb3c18
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_download_download__item__model.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/download/download_item_model.cc.orig 2022-05-11 07:16:47 UTC
++++ chrome/browser/download/download_item_model.cc
+@@ -635,7 +635,7 @@ bool DownloadItemModel::IsCommandChecked(
+ download_crx_util::IsExtensionDownload(*download_);
+ case DownloadCommands::ALWAYS_OPEN_TYPE:
+ #if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) || \
+- defined(OS_MAC)
++ defined(OS_MAC) || defined(OS_BSD)
+ if (download_commands->CanOpenPdfInSystemViewer()) {
+ DownloadPrefs* prefs = DownloadPrefs::FromBrowserContext(profile());
+ return prefs->ShouldOpenPdfInSystemReader();
+@@ -676,7 +676,7 @@ void DownloadItemModel::ExecuteCommand(DownloadCommand
+ DownloadCommands::ALWAYS_OPEN_TYPE);
+ DownloadPrefs* prefs = DownloadPrefs::FromBrowserContext(profile());
+ #if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) || \
+- defined(OS_MAC)
++ defined(OS_MAC) || defined(OS_BSD)
+ if (download_commands->CanOpenPdfInSystemViewer()) {
+ prefs->SetShouldOpenPdfInSystemReader(!is_checked);
+ SetShouldPreferOpeningInBrowser(is_checked);
diff --git a/devel/electron17/files/patch-chrome_browser_download_download__prefs.cc b/devel/electron17/files/patch-chrome_browser_download_download__prefs.cc
new file mode 100644
index 000000000000..eb551f2c9c6a
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_download_download__prefs.cc
@@ -0,0 +1,97 @@
+--- chrome/browser/download/download_prefs.cc.orig 2022-05-11 07:16:47 UTC
++++ chrome/browser/download/download_prefs.cc
+@@ -13,6 +13,7 @@
+ #include "base/callback_helpers.h"
+ #include "base/check.h"
+ #include "base/cxx17_backports.h"
++#include "base/command_line.h"
+ #include "base/feature_list.h"
+ #include "base/files/file_util.h"
+ #include "base/no_destructor.h"
+@@ -60,6 +61,8 @@
+ #include "chrome/browser/ui/pdf/adobe_reader_info_win.h"
+ #endif
+
++#include "sandbox/policy/switches.h"
++
+ using content::BrowserContext;
+ using content::BrowserThread;
+ using content::DownloadManager;
+@@ -70,7 +73,7 @@ namespace {
+ // Consider downloads 'dangerous' if they go to the home directory on Linux and
+ // to the desktop on any platform.
+ bool DownloadPathIsDangerous(const base::FilePath& download_path) {
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ base::FilePath home_dir = base::GetHomeDir();
+ if (download_path == home_dir) {
+ return true;
+@@ -168,7 +171,7 @@ DownloadPrefs::DownloadPrefs(Profile* profile) : profi
+ #endif // BUILDFLAG(IS_CHROMEOS_ASH)
+
+ #if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) || \
+- defined(OS_MAC)
++ defined(OS_MAC) || defined(OS_BSD)
+ should_open_pdf_in_system_reader_ =
+ prefs->GetBoolean(prefs::kOpenPdfDownloadInSystemReader);
+ #endif
+@@ -287,7 +290,7 @@ void DownloadPrefs::RegisterProfilePrefs(
+ registry->RegisterFilePathPref(prefs::kSaveFileDefaultDirectory,
+ default_download_path);
+ #if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) || \
+- defined(OS_MAC)
++ defined(OS_MAC) || defined(OS_BSD)
+ registry->RegisterBooleanPref(prefs::kOpenPdfDownloadInSystemReader, false);
+ #endif
+ #if defined(OS_ANDROID)
+@@ -421,7 +424,7 @@ bool DownloadPrefs::IsDownloadPathManaged() const {
+
+ bool DownloadPrefs::IsAutoOpenByUserUsed() const {
+ #if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) || \
+- defined(OS_MAC)
++ defined(OS_MAC) || defined(OS_BSD)
+ if (ShouldOpenPdfInSystemReader())
+ return true;
+ #endif
+@@ -436,7 +439,7 @@ bool DownloadPrefs::IsAutoOpenEnabled(const GURL& url,
+ DCHECK(extension[0] == base::FilePath::kExtensionSeparator);
+ extension.erase(0, 1);
+ #if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) || \
+- defined(OS_MAC)
++ defined(OS_MAC) || defined(OS_BSD)
+ if (base::FilePath::CompareEqualIgnoreCase(extension,
+ FILE_PATH_LITERAL("pdf")) &&
+ ShouldOpenPdfInSystemReader())
+@@ -491,7 +494,7 @@ void DownloadPrefs::DisableAutoOpenByUserBasedOnExtens
+ }
+
+ #if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) || \
+- defined(OS_MAC)
++ defined(OS_MAC) || defined(OS_BSD)
+ void DownloadPrefs::SetShouldOpenPdfInSystemReader(bool should_open) {
+ if (should_open_pdf_in_system_reader_ == should_open)
+ return;
+@@ -513,7 +516,7 @@ bool DownloadPrefs::ShouldOpenPdfInSystemReader() cons
+
+ void DownloadPrefs::ResetAutoOpenByUser() {
+ #if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) || \
+- defined(OS_MAC)
++ defined(OS_MAC) || defined(OS_BSD)
+ SetShouldOpenPdfInSystemReader(false);
+ #endif
+ auto_open_by_user_.clear();
+@@ -630,9 +633,13 @@ base::FilePath DownloadPrefs::SanitizeDownloadTargetPa
+ // Fall back to the default download directory for all other paths.
+ return GetDefaultDownloadDirectoryForProfile();
+ #else
++ // If unveil(2) is used, force the file dialog directory to something we
++ // know is available.
++ base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
++
+ // If the stored download directory is an absolute path, we presume it's
+ // correct; there's not really much more validation we can do here.
+- if (path.IsAbsolute())
++ if (command_line->HasSwitch(sandbox::policy::switches::kDisableUnveil) && path.IsAbsolute())
+ return path;
+
+ // When the default download directory is *not* an absolute path, we use the
diff --git a/devel/electron17/files/patch-chrome_browser_download_download__prefs.h b/devel/electron17/files/patch-chrome_browser_download_download__prefs.h
new file mode 100644
index 000000000000..ef904358c918
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_download_download__prefs.h
@@ -0,0 +1,20 @@
+--- chrome/browser/download/download_prefs.h.orig 2022-05-11 07:16:47 UTC
++++ chrome/browser/download/download_prefs.h
+@@ -122,7 +122,7 @@ class DownloadPrefs {
+ void DisableAutoOpenByUserBasedOnExtension(const base::FilePath& file_name);
+
+ #if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) || \
+- defined(OS_MAC)
++ defined(OS_MAC) || defined(OS_BSD)
+ // Store the user preference to disk. If |should_open| is true, also disable
+ // the built-in PDF plugin. If |should_open| is false, enable the PDF plugin.
+ void SetShouldOpenPdfInSystemReader(bool should_open);
+@@ -181,7 +181,7 @@ class DownloadPrefs {
+ std::unique_ptr<policy::URLBlocklist> auto_open_allowed_by_urls_;
+
+ #if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) || \
+- defined(OS_MAC)
++ defined(OS_MAC) || defined(OS_BSD)
+ bool should_open_pdf_in_system_reader_;
+ #endif
+
diff --git a/devel/electron17/files/patch-chrome_browser_enterprise_connectors_device__trust_device__trust__connector__service__factory.cc b/devel/electron17/files/patch-chrome_browser_enterprise_connectors_device__trust_device__trust__connector__service__factory.cc
new file mode 100644
index 000000000000..941da444684a
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_enterprise_connectors_device__trust_device__trust__connector__service__factory.cc
@@ -0,0 +1,29 @@
+--- chrome/browser/enterprise/connectors/device_trust/device_trust_connector_service_factory.cc.orig 2022-05-11 07:16:47 UTC
++++ chrome/browser/enterprise/connectors/device_trust/device_trust_connector_service_factory.cc
+@@ -12,7 +12,7 @@
+ #include "components/keyed_service/content/browser_context_dependency_manager.h"
+ #include "components/keyed_service/core/keyed_service.h"
+
+-#if defined(OS_LINUX) || defined(OS_WIN) || defined(OS_MAC)
++#if defined(OS_LINUX) || defined(OS_WIN) || defined(OS_MAC) || defined(OS_BSD)
+ #include "chrome/browser/browser_process.h"
+ #include "chrome/browser/enterprise/connectors/device_trust/browser/browser_device_trust_connector_service.h"
+ #include "chrome/browser/policy/chrome_browser_policy_connector.h"
+@@ -37,7 +37,7 @@ DeviceTrustConnectorService* DeviceTrustConnectorServi
+
+ bool DeviceTrustConnectorServiceFactory::ServiceIsCreatedWithBrowserContext()
+ const {
+-#if defined(OS_LINUX) || defined(OS_WIN) || defined(OS_MAC)
++#if defined(OS_LINUX) || defined(OS_WIN) || defined(OS_MAC) || defined(OS_BSD)
+ return IsDeviceTrustConnectorFeatureEnabled();
+ #else
+ return false;
+@@ -58,7 +58,7 @@ KeyedService* DeviceTrustConnectorServiceFactory::Buil
+
+ DeviceTrustConnectorService* service = nullptr;
+
+-#if defined(OS_LINUX) || defined(OS_WIN) || defined(OS_MAC)
++#if defined(OS_LINUX) || defined(OS_WIN) || defined(OS_MAC) || defined(OS_BSD)
+ if (IsDeviceTrustConnectorFeatureEnabled()) {
+ auto* key_manager = g_browser_process->browser_policy_connector()
+ ->chrome_browser_cloud_management_controller()
diff --git a/devel/electron17/files/patch-chrome_browser_enterprise_connectors_device__trust_device__trust__service__factory.cc b/devel/electron17/files/patch-chrome_browser_enterprise_connectors_device__trust_device__trust__service__factory.cc
new file mode 100644
index 000000000000..e18b47f335f3
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_enterprise_connectors_device__trust_device__trust__service__factory.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/enterprise/connectors/device_trust/device_trust_service_factory.cc.orig 2022-05-11 07:16:47 UTC
++++ chrome/browser/enterprise/connectors/device_trust/device_trust_service_factory.cc
+@@ -21,7 +21,7 @@
+ #include "components/policy/content/policy_blocklist_service.h"
+ #include "content/public/browser/browser_context.h"
+
+-#if defined(OS_LINUX) || defined(OS_WIN) || defined(OS_MAC)
++#if defined(OS_LINUX) || defined(OS_WIN) || defined(OS_MAC) || defined(OS_BSD)
+ #include "chrome/browser/browser_process.h"
+ #include "chrome/browser/enterprise/connectors/device_trust/attestation/desktop/desktop_attestation_service.h"
+ #include "chrome/browser/policy/chrome_browser_policy_connector.h"
diff --git a/devel/electron17/files/patch-chrome_browser_enterprise_connectors_device__trust_key__management_core_persistence_key__persistence__delegate__factory.cc b/devel/electron17/files/patch-chrome_browser_enterprise_connectors_device__trust_key__management_core_persistence_key__persistence__delegate__factory.cc
new file mode 100644
index 000000000000..4bd84d068c93
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_enterprise_connectors_device__trust_key__management_core_persistence_key__persistence__delegate__factory.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/enterprise/connectors/device_trust/key_management/core/persistence/key_persistence_delegate_factory.cc.orig 2022-05-11 07:16:47 UTC
++++ chrome/browser/enterprise/connectors/device_trust/key_management/core/persistence/key_persistence_delegate_factory.cc
+@@ -13,7 +13,7 @@
+ #include "chrome/browser/enterprise/connectors/device_trust/key_management/core/persistence/win_key_persistence_delegate.h"
+ #elif defined(OS_MAC)
+ #include "chrome/browser/enterprise/connectors/device_trust/key_management/core/persistence/mac_key_persistence_delegate.h"
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ #include "chrome/browser/enterprise/connectors/device_trust/key_management/core/persistence/linux_key_persistence_delegate.h"
+ #endif
+
+@@ -44,7 +44,7 @@ KeyPersistenceDelegateFactory::CreateKeyPersistenceDel
+ return std::make_unique<WinKeyPersistenceDelegate>();
+ #elif defined(OS_MAC)
+ return std::make_unique<MacKeyPersistenceDelegate>();
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ return std::make_unique<LinuxKeyPersistenceDelegate>();
+ #else
+ NOTREACHED();
diff --git a/devel/electron17/files/patch-chrome_browser_enterprise_connectors_device__trust_signals_signals__service__factory.cc b/devel/electron17/files/patch-chrome_browser_enterprise_connectors_device__trust_signals_signals__service__factory.cc
new file mode 100644
index 000000000000..dc432c8aaa80
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_enterprise_connectors_device__trust_signals_signals__service__factory.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/enterprise/connectors/device_trust/signals/signals_service_factory.cc.orig 2022-05-11 07:16:47 UTC
++++ chrome/browser/enterprise/connectors/device_trust/signals/signals_service_factory.cc
+@@ -14,7 +14,7 @@
+ #include "chrome/browser/enterprise/connectors/device_trust/signals/signals_service_impl.h"
+ #include "chrome/browser/profiles/profile.h"
+
+-#if defined(OS_LINUX) || defined(OS_WIN) || defined(OS_MAC)
++#if defined(OS_LINUX) || defined(OS_WIN) || defined(OS_MAC) || defined(OS_BSD)
+ #include "base/check.h"
+ #include "chrome/browser/enterprise/connectors/device_trust/signals/decorators/browser/browser_signals_decorator.h"
+ #include "chrome/browser/policy/chrome_browser_policy_connector.h"
+@@ -44,7 +44,7 @@ std::unique_ptr<SignalsService> CreateSignalsService(
+ decorators.push_back(
+ std::make_unique<ContentSignalsDecorator>(policy_blocklist_service));
+
+-#if defined(OS_LINUX) || defined(OS_WIN) || defined(OS_MAC)
++#if defined(OS_LINUX) || defined(OS_WIN) || defined(OS_MAC) || defined(OS_BSD)
+ policy::ChromeBrowserPolicyConnector* browser_policy_connector =
+ g_browser_process->browser_policy_connector();
+ DCHECK(browser_policy_connector);
diff --git a/devel/electron17/files/patch-chrome_browser_enterprise_signals_device__info__fetcher.cc b/devel/electron17/files/patch-chrome_browser_enterprise_signals_device__info__fetcher.cc
new file mode 100644
index 000000000000..8cf6d01f4c8b
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_enterprise_signals_device__info__fetcher.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/enterprise/signals/device_info_fetcher.cc.orig 2022-05-11 07:16:47 UTC
++++ chrome/browser/enterprise/signals/device_info_fetcher.cc
+@@ -10,7 +10,7 @@
+ #include "chrome/browser/enterprise/signals/device_info_fetcher_mac.h"
+ #elif defined(OS_WIN)
+ #include "chrome/browser/enterprise/signals/device_info_fetcher_win.h"
+-#elif defined(OS_LINUX) || defined(OS_CHROMEOS)
++#elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ #include "chrome/browser/enterprise/signals/device_info_fetcher_linux.h"
+ #endif
+
+@@ -70,7 +70,7 @@ std::unique_ptr<DeviceInfoFetcher> DeviceInfoFetcher::
+ return std::make_unique<DeviceInfoFetcherMac>();
+ #elif defined(OS_WIN)
+ return std::make_unique<DeviceInfoFetcherWin>();
+-#elif defined(OS_LINUX) || defined(OS_CHROMEOS)
++#elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ return std::make_unique<DeviceInfoFetcherLinux>();
+ #else
+ return std::make_unique<StubDeviceFetcher>();
diff --git a/devel/electron17/files/patch-chrome_browser_enterprise_signals_device__info__fetcher__linux.cc b/devel/electron17/files/patch-chrome_browser_enterprise_signals_device__info__fetcher__linux.cc
new file mode 100644
index 000000000000..25cdcfb4fbe3
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_enterprise_signals_device__info__fetcher__linux.cc
@@ -0,0 +1,78 @@
+--- chrome/browser/enterprise/signals/device_info_fetcher_linux.cc.orig 2022-05-11 07:00:29 UTC
++++ chrome/browser/enterprise/signals/device_info_fetcher_linux.cc
+@@ -4,12 +4,23 @@
+
+ #include "chrome/browser/enterprise/signals/device_info_fetcher_linux.h"
+
++#include "build/build_config.h"
++
+ #if defined(USE_GIO)
+ #include <gio/gio.h>
+ #endif // defined(USE_GIO)
+ #include <sys/stat.h>
++#if !defined(OS_BSD)
+ #include <sys/sysmacros.h>
++#endif
+
++#if defined(OS_BSD)
++#include <sys/types.h>
++#include <sys/socket.h>
++#include <ifaddrs.h>
++#include <net/if_dl.h>
++#endif
++
+ #include <string>
+
+ #include "base/environment.h"
+@@ -118,6 +129,7 @@ SettingValue GetScreenlockSecured() {
+ // Implements the logic from the native host installation script. First find the
+ // root device identifier, then locate its parent and get its type.
+ SettingValue GetDiskEncrypted() {
++#if !defined(OS_BSD)
+ struct stat info;
+ // First figure out the device identifier. Fail fast if this fails.
+ if (stat("/", &info) != 0)
+@@ -139,11 +151,35 @@ SettingValue GetDiskEncrypted() {
+ }
+ return SettingValue::UNKNOWN;
+ }
++#endif
+ return SettingValue::DISABLED;
+ }
+
+ std::vector<std::string> GetMacAddresses() {
+ std::vector<std::string> result;
++#if defined(OS_BSD)
++ struct ifaddrs* ifa = nullptr;
++
++ if (getifaddrs(&ifa) != 0)
++ return result;
++
++ struct ifaddrs* interface = ifa;
++ for (; interface != nullptr; interface = interface->ifa_next) {
++ if (interface->ifa_addr == nullptr ||
++ interface->ifa_addr->sa_family != AF_LINK) {
++ continue;
++ }
++ struct sockaddr_dl* sdl =
++ reinterpret_cast<struct sockaddr_dl*>(interface->ifa_addr);
++ if (!sdl || sdl->sdl_alen != 6)
++ continue;
++ char* link_address = static_cast<char*>(LLADDR(sdl));
++ result.push_back(base::StringPrintf(
++ "%02x:%02x:%02x:%02x:%02x:%02x", link_address[0] & 0xff,
++ link_address[1] & 0xff, link_address[2] & 0xff, link_address[3] & 0xff,
++ link_address[4] & 0xff, link_address[5] & 0xff));
++ }
++#else
+ base::DirReaderPosix reader("/sys/class/net");
+ if (!reader.IsValid())
+ return result;
+@@ -166,6 +202,7 @@ std::vector<std::string> GetMacAddresses() {
+ &address);
+ result.push_back(address);
+ }
++#endif
+ return result;
+ }
+
diff --git a/devel/electron17/files/patch-chrome_browser_extensions_BUILD.gn b/devel/electron17/files/patch-chrome_browser_extensions_BUILD.gn
new file mode 100644
index 000000000000..ca763767c56c
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_extensions_BUILD.gn
@@ -0,0 +1,13 @@
+--- chrome/browser/extensions/BUILD.gn.orig 2022-05-11 07:16:47 UTC
++++ chrome/browser/extensions/BUILD.gn
+@@ -1303,6 +1303,10 @@ static_library("extensions") {
+ deps += [ "//chrome/services/printing/public/mojom" ]
+ }
+
++ if (is_bsd) {
++ sources -= [ "api/image_writer_private/removable_storage_provider_linux.cc" ]
++ }
++
+ if (enable_service_discovery) {
+ sources += [
+ "api/mdns/mdns_api.cc",
diff --git a/devel/electron17/files/patch-chrome_browser_extensions_api_enterprise__reporting__private_chrome__desktop__report__request__helper.cc b/devel/electron17/files/patch-chrome_browser_extensions_api_enterprise__reporting__private_chrome__desktop__report__request__helper.cc
new file mode 100644
index 000000000000..755fc5073a9f
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_extensions_api_enterprise__reporting__private_chrome__desktop__report__request__helper.cc
@@ -0,0 +1,29 @@
+--- chrome/browser/extensions/api/enterprise_reporting_private/chrome_desktop_report_request_helper.cc.orig 2022-05-11 07:16:47 UTC
++++ chrome/browser/extensions/api/enterprise_reporting_private/chrome_desktop_report_request_helper.cc
+@@ -23,7 +23,7 @@
+ #include "base/win/registry.h"
+ #endif
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ #include "base/environment.h"
+ #include "base/nix/xdg_util.h"
+ #endif
+@@ -207,7 +207,7 @@ base::FilePath GetEndpointVerificationDir() {
+ bool got_path = false;
+ #if defined(OS_WIN)
+ got_path = base::PathService::Get(base::DIR_LOCAL_APP_DATA, &path);
+-#elif defined(OS_LINUX) || defined(OS_CHROMEOS)
++#elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ std::unique_ptr<base::Environment> env(base::Environment::Create());
+ path = base::nix::GetXDGDirectory(env.get(), base::nix::kXdgConfigHomeEnvVar,
+ base::nix::kDotConfigDir);
+@@ -218,7 +218,7 @@ base::FilePath GetEndpointVerificationDir() {
+ if (!got_path)
+ return path;
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ path = path.AppendASCII("google");
+ #else
+ path = path.AppendASCII("Google");
diff --git a/devel/electron17/files/patch-chrome_browser_extensions_api_enterprise__reporting__private_enterprise__reporting__private__api.cc b/devel/electron17/files/patch-chrome_browser_extensions_api_enterprise__reporting__private_enterprise__reporting__private__api.cc
new file mode 100644
index 000000000000..fbbbfe838613
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_extensions_api_enterprise__reporting__private_enterprise__reporting__private__api.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/extensions/api/enterprise_reporting_private/enterprise_reporting_private_api.cc.orig 2022-05-11 07:16:47 UTC
++++ chrome/browser/extensions/api/enterprise_reporting_private/enterprise_reporting_private_api.cc
+@@ -155,7 +155,7 @@ EnterpriseReportingPrivateGetDeviceIdFunction::
+
+ // getPersistentSecret
+
+-#if !defined(OS_LINUX)
++#if !defined(OS_LINUX) && !defined(OS_BSD)
+
+ EnterpriseReportingPrivateGetPersistentSecretFunction::
+ EnterpriseReportingPrivateGetPersistentSecretFunction() = default;
diff --git a/devel/electron17/files/patch-chrome_browser_extensions_api_enterprise__reporting__private_enterprise__reporting__private__api.h b/devel/electron17/files/patch-chrome_browser_extensions_api_enterprise__reporting__private_enterprise__reporting__private__api.h
new file mode 100644
index 000000000000..f4cfa1590d68
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_extensions_api_enterprise__reporting__private_enterprise__reporting__private__api.h
@@ -0,0 +1,11 @@
+--- chrome/browser/extensions/api/enterprise_reporting_private/enterprise_reporting_private_api.h.orig 2022-05-11 07:16:47 UTC
++++ chrome/browser/extensions/api/enterprise_reporting_private/enterprise_reporting_private_api.h
+@@ -45,7 +45,7 @@ class EnterpriseReportingPrivateGetDeviceIdFunction :
+ ~EnterpriseReportingPrivateGetDeviceIdFunction() override;
+ };
+
+-#if !defined(OS_LINUX)
++#if !defined(OS_LINUX) && !defined(OS_BSD)
+
+ class EnterpriseReportingPrivateGetPersistentSecretFunction
+ : public ExtensionFunction {
diff --git a/devel/electron17/files/patch-chrome_browser_extensions_api_image__writer__private_removable__storage__provider.cc b/devel/electron17/files/patch-chrome_browser_extensions_api_image__writer__private_removable__storage__provider.cc
new file mode 100644
index 000000000000..60a0005aae44
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_extensions_api_image__writer__private_removable__storage__provider.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/extensions/api/image_writer_private/removable_storage_provider.cc.orig 2021-01-07 00:36:22 UTC
++++ chrome/browser/extensions/api/image_writer_private/removable_storage_provider.cc
+@@ -22,6 +22,7 @@ static base::LazyInstance<scoped_refptr<StorageDeviceL
+
+ void RemovableStorageProvider::GetAllDevices(DeviceListReadyCallback callback) {
+ DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
++#if !defined(OS_BSD)
+ if (g_test_device_list.Get().get() != nullptr) {
+ base::ThreadTaskRunnerHandle::Get()->PostTask(
+ FROM_HERE,
+@@ -35,6 +36,9 @@ void RemovableStorageProvider::GetAllDevices(DeviceLis
+ base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN},
+ base::BindOnce(&RemovableStorageProvider::PopulateDeviceList),
+ std::move(callback));
++#else
++ NOTIMPLEMENTED();
++#endif
+ }
+
+ // static
diff --git a/devel/electron17/files/patch-chrome_browser_extensions_api_messaging_native__process__launcher__posix.cc b/devel/electron17/files/patch-chrome_browser_extensions_api_messaging_native__process__launcher__posix.cc
new file mode 100644
index 000000000000..a25f6195236a
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_extensions_api_messaging_native__process__launcher__posix.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/extensions/api/messaging/native_process_launcher_posix.cc.orig 2022-05-11 07:16:47 UTC
++++ chrome/browser/extensions/api/messaging/native_process_launcher_posix.cc
+@@ -82,7 +82,7 @@ bool NativeProcessLauncher::LaunchNativeProcess(
+
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ // Don't use no_new_privs mode, e.g. in case the host needs to use sudo.
+ options.allow_new_privs = true;
+ #endif
diff --git a/devel/electron17/files/patch-chrome_browser_extensions_api_settings__private_prefs__util.cc b/devel/electron17/files/patch-chrome_browser_extensions_api_settings__private_prefs__util.cc
new file mode 100644
index 000000000000..c8ea0be62458
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_extensions_api_settings__private_prefs__util.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/extensions/api/settings_private/prefs_util.cc.orig 2021-09-14 01:51:50 UTC
++++ chrome/browser/extensions/api/settings_private/prefs_util.cc
+@@ -182,7 +182,7 @@ const PrefsUtil::TypedPrefMap& PrefsUtil::GetAllowlist
+
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ (*s_allowlist)[::prefs::kUseCustomChromeFrame] =
+ settings_api::PrefType::PREF_TYPE_BOOLEAN;
+ #endif
+@@ -196,7 +196,7 @@ const PrefsUtil::TypedPrefMap& PrefsUtil::GetAllowlist
+ settings_api::PrefType::PREF_TYPE_NUMBER;
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ (*s_allowlist)[::prefs::kUsesSystemTheme] =
+ settings_api::PrefType::PREF_TYPE_BOOLEAN;
+ #endif
diff --git a/devel/electron17/files/patch-chrome_browser_extensions_api_webrtc__logging__private_webrtc__logging__private__api.cc b/devel/electron17/files/patch-chrome_browser_extensions_api_webrtc__logging__private_webrtc__logging__private__api.cc
new file mode 100644
index 000000000000..96f81728e90b
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_extensions_api_webrtc__logging__private_webrtc__logging__private__api.cc
@@ -0,0 +1,29 @@
+--- chrome/browser/extensions/api/webrtc_logging_private/webrtc_logging_private_api.cc.orig 2022-05-11 07:16:47 UTC
++++ chrome/browser/extensions/api/webrtc_logging_private/webrtc_logging_private_api.cc
+@@ -30,7 +30,7 @@
+ #include "extensions/browser/process_manager.h"
+ #include "extensions/common/error_utils.h"
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ #include "extensions/common/permissions/permissions_data.h"
+ #endif
+
+@@ -39,7 +39,7 @@ namespace {
+ bool CanEnableAudioDebugRecordingsFromExtension(
+ const extensions::Extension* extension) {
+ bool enabled_by_permissions = false;
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ if (extension) {
+ enabled_by_permissions =
+ extension->permissions_data()->active_permissions().HasAPIPermission(
+@@ -580,7 +580,7 @@ void WebrtcLoggingPrivateStartEventLoggingFunction::Fi
+
+ ExtensionFunction::ResponseAction
+ WebrtcLoggingPrivateGetLogsDirectoryFunction::Run() {
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // Unlike other WebrtcLoggingPrivate functions that take a RequestInfo object,
+ // this function shouldn't be called by a component extension on behalf of
+ // some web code. It returns a DirectoryEntry for use directly in the calling
diff --git a/devel/electron17/files/patch-chrome_browser_extensions_browser__context__keyed__service__factories.cc b/devel/electron17/files/patch-chrome_browser_extensions_browser__context__keyed__service__factories.cc
new file mode 100644
index 000000000000..941344bbe95e
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_extensions_browser__context__keyed__service__factories.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/extensions/browser_context_keyed_service_factories.cc.orig 2022-05-11 07:16:47 UTC
++++ chrome/browser/extensions/browser_context_keyed_service_factories.cc
+@@ -53,7 +53,7 @@
+ #include "extensions/browser/api/networking_private/networking_private_delegate_factory.h"
+ #include "ppapi/buildflags/buildflags.h"
+
+-#if defined(OS_LINUX) || defined(OS_MAC) || defined(OS_WIN)
++#if defined(OS_LINUX) || defined(OS_MAC) || defined(OS_WIN) || defined(OS_BSD)
+ #include "chrome/browser/extensions/api/system_indicator/system_indicator_manager_factory.h"
+ #endif
+
+@@ -126,7 +126,7 @@ void EnsureBrowserContextKeyedServiceFactoriesBuilt()
+ extensions::SettingsPrivateEventRouterFactory::GetInstance();
+ extensions::SettingsOverridesAPI::GetFactoryInstance();
+ extensions::SignedInDevicesManager::GetFactoryInstance();
+-#if defined(OS_LINUX) || defined(OS_MAC) || defined(OS_WIN)
++#if defined(OS_LINUX) || defined(OS_MAC) || defined(OS_WIN) || defined(OS_BSD)
+ extensions::SystemIndicatorManagerFactory::GetInstance();
+ #endif
+ extensions::TabGroupsEventRouterFactory::GetInstance();
diff --git a/devel/electron17/files/patch-chrome_browser_extensions_external__provider__impl.cc b/devel/electron17/files/patch-chrome_browser_extensions_external__provider__impl.cc
new file mode 100644
index 000000000000..8736ff079340
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_extensions_external__provider__impl.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/extensions/external_provider_impl.cc.orig 2022-05-11 07:16:47 UTC
++++ chrome/browser/extensions/external_provider_impl.cc
+@@ -815,7 +815,7 @@ void ExternalProviderImpl::CreateExternalProviders(
+ if (!profile->GetPrefs()->GetBoolean(pref_names::kBlockExternalExtensions)) {
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ provider_list->push_back(std::make_unique<ExternalProviderImpl>(
+ service,
+ base::MakeRefCounted<ExternalPrefLoader>(
+@@ -843,7 +843,7 @@ void ExternalProviderImpl::CreateExternalProviders(
+ bundled_extension_creation_flags));
+
+ // Define a per-user source of external extensions.
+-#if defined(OS_MAC) || ((defined(OS_LINUX) || defined(OS_CHROMEOS)) && \
++#if defined(OS_MAC) || ((defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)) && \
+ BUILDFLAG(CHROMIUM_BRANDING))
+ provider_list->push_back(std::make_unique<ExternalProviderImpl>(
+ service,
diff --git a/devel/electron17/files/patch-chrome_browser_file__system__access_chrome__file__system__access__permission__context.cc b/devel/electron17/files/patch-chrome_browser_file__system__access_chrome__file__system__access__permission__context.cc
new file mode 100644
index 000000000000..03fc6f5e3d5f
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_file__system__access_chrome__file__system__access__permission__context.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/file_system_access/chrome_file_system_access_permission_context.cc.orig 2022-05-11 07:16:48 UTC
++++ chrome/browser/file_system_access/chrome_file_system_access_permission_context.cc
+@@ -216,7 +216,7 @@ const struct {
+ {base::DIR_HOME, FILE_PATH_LITERAL("Library/Mobile Documents"),
+ kDontBlockChildren},
+ #endif
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // On Linux also block access to devices via /dev, as well as security
+ // sensitive data in /sys and /proc.
+ {kNoBasePathKey, FILE_PATH_LITERAL("/dev"), kBlockAllChildren},
diff --git a/devel/electron17/files/patch-chrome_browser_first__run_first__run__dialog.h b/devel/electron17/files/patch-chrome_browser_first__run_first__run__dialog.h
new file mode 100644
index 000000000000..0fbcd30d572e
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_first__run_first__run__dialog.h
@@ -0,0 +1,11 @@
+--- chrome/browser/first_run/first_run_dialog.h.orig 2021-04-14 01:08:40 UTC
++++ chrome/browser/first_run/first_run_dialog.h
+@@ -12,7 +12,7 @@
+ // Hide this function on platforms where the dialog does not exist.
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_MAC) || (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
++#if defined(OS_MAC) || (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) || defined(OS_BSD)
+
+ class Profile;
+
diff --git a/devel/electron17/files/patch-chrome_browser_first__run_first__run__internal.h b/devel/electron17/files/patch-chrome_browser_first__run_first__run__internal.h
new file mode 100644
index 000000000000..1000e35214fe
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_first__run_first__run__internal.h
@@ -0,0 +1,11 @@
+--- chrome/browser/first_run/first_run_internal.h.orig 2022-05-11 07:16:48 UTC
++++ chrome/browser/first_run/first_run_internal.h
+@@ -58,7 +58,7 @@ FirstRunState DetermineFirstRunState(bool has_sentinel
+
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_MAC) || (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
++#if defined(OS_MAC) || (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) || defined(OS_BSD)
+ // For testing, forces the first run dialog to either be shown or not. If not
+ // called, the decision to show the dialog or not will be made by Chrome based
+ // on a number of factors (such as install type, whether it's a Chrome-branded
diff --git a/devel/electron17/files/patch-chrome_browser_flag__descriptions.cc b/devel/electron17/files/patch-chrome_browser_flag__descriptions.cc
new file mode 100644
index 000000000000..ce59e4431351
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_flag__descriptions.cc
@@ -0,0 +1,47 @@
+--- chrome/browser/flag_descriptions.cc.orig 2022-05-11 07:16:48 UTC
++++ chrome/browser/flag_descriptions.cc
+@@ -5314,7 +5314,7 @@ const char kDownloadShelfWebUIDescription[] =
+ // Random platform combinations -----------------------------------------------
+
+ #if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || \
+- defined(OS_CHROMEOS) || defined(OS_FUCHSIA)
++ defined(OS_CHROMEOS) || defined(OS_FUCHSIA) || defined(OS_BSD)
+
+ const char kWebUIBrandingUpdateName[] = "WebUI Branding Update";
+ const char kWebUIBrandingUpdateDescription[] =
+@@ -5329,7 +5329,7 @@ const char kWebuiFeedbackDescription[] =
+ // defined(OS_CHROMEOS) || defined(OS_FUCHSIA)
+
+ #if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || \
+- defined(OS_FUCHSIA)
++ defined(OS_FUCHSIA) || defined(OS_BSD)
+
+ const char kCommanderName[] = "Commander";
+ const char kCommanderDescription[] =
+@@ -5348,7 +5348,7 @@ const char kDesktopDetailedLanguageSettingsDescription
+ #endif // defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) ||
+ // defined(OS_FUCHSIA)
+
+-#if defined(OS_CHROMEOS) || defined(OS_LINUX)
++#if defined(OS_CHROMEOS) || defined(OS_LINUX) || defined(OS_BSD)
+ #if BUILDFLAG(USE_TCMALLOC)
+ const char kDynamicTcmallocName[] = "Dynamic Tcmalloc Tuning";
+ const char kDynamicTcmallocDescription[] =
+@@ -5364,7 +5364,7 @@ const char kWebShareDescription[] =
+ "platforms.";
+ #endif // defined(OS_WIN) || defined(OS_CHROMEOS) || defined(OS_MAC)
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ const char kOzonePlatformHintChoiceDefault[] = "Default";
+ const char kOzonePlatformHintChoiceAuto[] = "Auto";
+ const char kOzonePlatformHintChoiceX11[] = "X11";
+@@ -5482,7 +5482,7 @@ const char kElasticOverscrollDescription[] =
+ #endif // defined(OS_WIN) || defined(OS_ANDROID)
+
+ #if defined(OS_WIN) || (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) || \
+- defined(OS_MAC) || defined(OS_FUCHSIA)
++ defined(OS_MAC) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ const char kUIDebugToolsName[] = "Debugging tools for UI";
+ const char kUIDebugToolsDescription[] =
+ "Enables additional keyboard shortcuts to help debugging.";
diff --git a/devel/electron17/files/patch-chrome_browser_flag__descriptions.h b/devel/electron17/files/patch-chrome_browser_flag__descriptions.h
new file mode 100644
index 000000000000..acf82f42d68f
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_flag__descriptions.h
@@ -0,0 +1,56 @@
+--- chrome/browser/flag_descriptions.h.orig 2022-05-11 07:16:48 UTC
++++ chrome/browser/flag_descriptions.h
+@@ -22,7 +22,7 @@
+ #include "printing/buildflags/buildflags.h"
+ #include "third_party/blink/public/common/buildflags.h"
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ #include "base/allocator/buildflags.h"
+ #endif // defined(OS_LINUX) || defined(OS_CHROMEOS)
+
+@@ -3081,7 +3081,7 @@ extern const char kDownloadShelfWebUIDescription[];
+ // Random platform combinations -----------------------------------------------
+
+ #if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || \
+- defined(OS_CHROMEOS) || defined(OS_FUCHSIA)
++ defined(OS_CHROMEOS) || defined(OS_FUCHSIA) || defined(OS_BSD)
+
+ extern const char kWebUIBrandingUpdateName[];
+ extern const char kWebUIBrandingUpdateDescription[];
+@@ -3093,7 +3093,7 @@ extern const char kWebuiFeedbackDescription[];
+ // defined(OS_CHROMEOS) || defined(OS_FUCHSIA)
+
+ #if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || \
+- defined(OS_FUCHSIA)
++ defined(OS_FUCHSIA) || defined(OS_BSD)
+
+ extern const char kCommanderName[];
+ extern const char kCommanderDescription[];
+@@ -3107,7 +3107,7 @@ extern const char kDesktopDetailedLanguageSettingsDesc
+ #endif // defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || defined
+ // (OS_FUCHSIA)
+
+-#if defined(OS_CHROMEOS) || defined(OS_LINUX)
++#if defined(OS_CHROMEOS) || defined(OS_LINUX) || defined(OS_BSD)
+ #if BUILDFLAG(USE_TCMALLOC)
+ extern const char kDynamicTcmallocName[];
+ extern const char kDynamicTcmallocDescription[];
+@@ -3119,7 +3119,7 @@ extern const char kWebShareName[];
+ extern const char kWebShareDescription[];
+ #endif // defined(OS_WIN) || defined(OS_CHROMEOS) || defined(OS_MAC)
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ extern const char kOzonePlatformHintChoiceDefault[];
+ extern const char kOzonePlatformHintChoiceAuto[];
+ extern const char kOzonePlatformHintChoiceX11[];
+@@ -3201,7 +3201,7 @@ extern const char kElasticOverscrollDescription[];
+ #endif // defined(OS_WIN) || defined(OS_ANDROID)
+
+ #if defined(OS_WIN) || (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) || \
+- defined(OS_MAC) || defined(OS_FUCHSIA)
++ defined(OS_MAC) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ extern const char kUIDebugToolsName[];
+ extern const char kUIDebugToolsDescription[];
+ #endif
diff --git a/devel/electron17/files/patch-chrome_browser_headless_headless__mode__util.cc b/devel/electron17/files/patch-chrome_browser_headless_headless__mode__util.cc
new file mode 100644
index 000000000000..ba7285d20cc2
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_headless_headless__mode__util.cc
@@ -0,0 +1,29 @@
+--- chrome/browser/headless/headless_mode_util.cc.orig 2022-05-11 07:16:48 UTC
++++ chrome/browser/headless/headless_mode_util.cc
+@@ -9,7 +9,7 @@
+ // Native headless is currently available only on Linux and Windows platforms.
+ // More platforms will be added later, so avoid function level clutter by
+ // providing stub implementations at the end of the file.
+-#if defined(OS_LINUX) || defined(OS_WIN)
++#if defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
+
+ #include <cstdlib>
+ #include <vector>
+@@ -17,7 +17,7 @@
+ #include "base/base_switches.h"
+ #include "ui/gfx/switches.h"
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "ui/ozone/public/ozone_switches.h"
+ #endif // defined(OS_LINUX)
+
+@@ -51,7 +51,7 @@ void SetUpCommandLine(const base::CommandLine* command
+ base::CommandLine::ForCurrentProcess()->AppendSwitch(
+ ::switches::kNoErrorDialogs);
+ }
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Native headless chrome on Linux relies on ozone/headless platform.
+ base::CommandLine::ForCurrentProcess()->AppendSwitchASCII(
+ ::switches::kOzonePlatform, switches::kHeadless);
diff --git a/devel/electron17/files/patch-chrome_browser_intranet__redirect__detector.h b/devel/electron17/files/patch-chrome_browser_intranet__redirect__detector.h
new file mode 100644
index 000000000000..ddae98a13859
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_intranet__redirect__detector.h
@@ -0,0 +1,11 @@
+--- chrome/browser/intranet_redirect_detector.h.orig 2022-05-11 07:16:48 UTC
++++ chrome/browser/intranet_redirect_detector.h
+@@ -27,7 +27,7 @@ class SimpleURLLoader;
+ class PrefRegistrySimple;
+
+ #if !(defined(OS_MAC) || defined(OS_WIN) || defined(OS_LINUX) || \
+- defined(OS_CHROMEOS) || defined(OS_FUCHSIA))
++ defined(OS_CHROMEOS) || defined(OS_FUCHSIA) || defined(OS_BSD))
+ #error "IntranetRedirectDetector should only be built on Desktop platforms."
+ #endif
+
diff --git a/devel/electron17/files/patch-chrome_browser_media__galleries_fileapi_mtp__device__map__service.cc b/devel/electron17/files/patch-chrome_browser_media__galleries_fileapi_mtp__device__map__service.cc
new file mode 100644
index 000000000000..75d7c2ebc6ae
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_media__galleries_fileapi_mtp__device__map__service.cc
@@ -0,0 +1,15 @@
+--- chrome/browser/media_galleries/fileapi/mtp_device_map_service.cc.orig 2022-05-11 07:00:29 UTC
++++ chrome/browser/media_galleries/fileapi/mtp_device_map_service.cc
+@@ -39,10 +39,12 @@ void MTPDeviceMapService::RegisterMTPFileSystem(
+ // Note that this initializes the delegate asynchronously, but since
+ // the delegate will only be used from the IO thread, it is guaranteed
+ // to be created before use of it expects it to be there.
++#if !defined(OS_BSD)
+ CreateMTPDeviceAsyncDelegate(
+ device_location, read_only,
+ base::BindOnce(&MTPDeviceMapService::AddAsyncDelegate,
+ base::Unretained(this), device_location, read_only));
++#endif
+ mtp_device_usage_map_[key] = 0;
+ }
+
diff --git a/devel/electron17/files/patch-chrome_browser_media__galleries_media__file__system__registry.cc b/devel/electron17/files/patch-chrome_browser_media__galleries_media__file__system__registry.cc
new file mode 100644
index 000000000000..b70c13469a21
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_media__galleries_media__file__system__registry.cc
@@ -0,0 +1,16 @@
+--- chrome/browser/media_galleries/media_file_system_registry.cc.orig 2022-05-11 07:16:48 UTC
++++ chrome/browser/media_galleries/media_file_system_registry.cc
+@@ -743,7 +743,12 @@ class MediaFileSystemRegistry::MediaFileSystemContextI
+ // Constructor in 'private' section because depends on private class definition.
+ MediaFileSystemRegistry::MediaFileSystemRegistry()
+ : file_system_context_(new MediaFileSystemContextImpl) {
+- StorageMonitor::GetInstance()->AddObserver(this);
++ /*
++ * This conditional is needed for shutdown. Destructors
++ * try to get the media file system registry.
++ */
++ if (StorageMonitor::GetInstance())
++ StorageMonitor::GetInstance()->AddObserver(this);
+ }
+
+ MediaFileSystemRegistry::~MediaFileSystemRegistry() {
diff --git a/devel/electron17/files/patch-chrome_browser_media_audio__service__util.cc b/devel/electron17/files/patch-chrome_browser_media_audio__service__util.cc
new file mode 100644
index 000000000000..e67c0754b8ef
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_media_audio__service__util.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/media/audio_service_util.cc.orig 2022-05-11 07:16:48 UTC
++++ chrome/browser/media/audio_service_util.cc
+@@ -20,7 +20,7 @@
+
+ namespace {
+
+-#if defined(OS_WIN) || defined(OS_MAC) || \
++#if defined(OS_WIN) || defined(OS_MAC) || defined(OS_BSD) || \
+ (defined(OS_LINUX) && !BUILDFLAG(IS_CHROMEOS_LACROS))
+ bool GetPolicyOrFeature(const char* policy_name, const base::Feature& feature) {
+ const policy::PolicyMap& policies =
+@@ -40,7 +40,7 @@ bool GetPolicyOrFeature(const char* policy_name, const
+ bool IsAudioServiceSandboxEnabled() {
+ // TODO(crbug.com/1052397): Remove !IS_CHROMEOS_LACROS once lacros starts being
+ // built with OS_CHROMEOS instead of OS_LINUX.
+-#if defined(OS_WIN) || defined(OS_MAC) || \
++#if defined(OS_WIN) || defined(OS_MAC) || defined(OS_BSD) || \
+ (defined(OS_LINUX) && !BUILDFLAG(IS_CHROMEOS_LACROS))
+ return GetPolicyOrFeature(policy::key::kAudioSandboxEnabled,
+ features::kAudioServiceSandbox);
diff --git a/devel/electron17/files/patch-chrome_browser_media_router_discovery_discovery__network__list__posix.cc b/devel/electron17/files/patch-chrome_browser_media_router_discovery_discovery__network__list__posix.cc
new file mode 100644
index 000000000000..90e34ad067fe
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_media_router_discovery_discovery__network__list__posix.cc
@@ -0,0 +1,35 @@
+--- chrome/browser/media/router/discovery/discovery_network_list_posix.cc.orig 2022-05-11 07:16:48 UTC
++++ chrome/browser/media/router/discovery/discovery_network_list_posix.cc
+@@ -5,11 +5,12 @@
+ #include "chrome/browser/media/router/discovery/discovery_network_list.h"
+
+ #include <ifaddrs.h>
++#include <sys/socket.h>
++#include <sys/types.h>
++#include <sys/time.h>
+ #include <net/if.h>
+ #include <net/if_arp.h>
+ #include <netinet/in.h>
+-#include <sys/socket.h>
+-#include <sys/types.h>
+
+ #include <algorithm>
+
+@@ -18,7 +19,7 @@
+ #include "chrome/browser/media/router/discovery/discovery_network_list_wifi.h"
+ #include "net/base/net_errors.h"
+
+-#if !defined(OS_MAC)
++#if !defined(OS_MAC) && !defined(OS_BSD)
+ #include <netpacket/packet.h>
+ #else
+ #include <net/if_dl.h>
+@@ -27,7 +28,7 @@
+ namespace media_router {
+ namespace {
+
+-#if !defined(OS_MAC)
++#if !defined(OS_MAC) && !defined(OS_BSD)
+ using sll = struct sockaddr_ll;
+ #define SOCKET_ARP_TYPE(s) ((s)->sll_hatype)
+ #define SOCKET_ADDRESS_LEN(s) ((s)->sll_halen)
diff --git a/devel/electron17/files/patch-chrome_browser_media_router_discovery_discovery__network__list__wifi__linux.cc b/devel/electron17/files/patch-chrome_browser_media_router_discovery_discovery__network__list__wifi__linux.cc
new file mode 100644
index 000000000000..ac82ca159820
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_media_router_discovery_discovery__network__list__wifi__linux.cc
@@ -0,0 +1,30 @@
+--- chrome/browser/media/router/discovery/discovery_network_list_wifi_linux.cc.orig 2021-01-07 00:36:23 UTC
++++ chrome/browser/media/router/discovery/discovery_network_list_wifi_linux.cc
+@@ -9,7 +9,11 @@
+ #include <sys/socket.h>
+ #include <sys/types.h>
+
++#include "build/build_config.h"
++
++#if !defined(OS_BSD)
+ #include <linux/wireless.h>
++#endif
+
+ #include "base/check.h"
+ #include "base/files/scoped_file.h"
+@@ -20,6 +24,7 @@ namespace media_router {
+ bool MaybeGetWifiSSID(const std::string& if_name, std::string* ssid_out) {
+ DCHECK(ssid_out);
+
++#if !defined(OS_BSD)
+ base::ScopedFD ioctl_socket(socket(AF_INET, SOCK_DGRAM, 0));
+ if (!ioctl_socket.is_valid()) {
+ // AF_INET is for IPv4, so it may fail for IPv6-only hosts even when there
+@@ -41,6 +46,7 @@ bool MaybeGetWifiSSID(const std::string& if_name, std:
+ ssid_out->assign(ssid);
+ return true;
+ }
++#endif
+ return false;
+ }
+
diff --git a/devel/electron17/files/patch-chrome_browser_media_webrtc_webrtc__event__log__uploader.cc b/devel/electron17/files/patch-chrome_browser_media_webrtc_webrtc__event__log__uploader.cc
new file mode 100644
index 000000000000..0f849a1ff39b
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_media_webrtc_webrtc__event__log__uploader.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/media/webrtc/webrtc_event_log_uploader.cc.orig 2022-05-11 07:16:48 UTC
++++ chrome/browser/media/webrtc/webrtc_event_log_uploader.cc
+@@ -40,7 +40,7 @@ const char kProduct[] = "Chrome";
+ const char kProduct[] = "Chrome_Mac";
+ #elif BUILDFLAG(IS_CHROMEOS_ASH)
+ const char kProduct[] = "Chrome_ChromeOS";
+-#elif defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#elif defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ const char kProduct[] = "Chrome_Linux";
+ #elif defined(OS_ANDROID)
+ const char kProduct[] = "Chrome_Android";
diff --git a/devel/electron17/files/patch-chrome_browser_media_webrtc_webrtc__log__uploader.cc b/devel/electron17/files/patch-chrome_browser_media_webrtc_webrtc__log__uploader.cc
new file mode 100644
index 000000000000..727c33b03312
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_media_webrtc_webrtc__log__uploader.cc
@@ -0,0 +1,13 @@
+--- chrome/browser/media/webrtc/webrtc_log_uploader.cc.orig 2022-05-11 07:16:48 UTC
++++ chrome/browser/media/webrtc/webrtc_log_uploader.cc
+@@ -363,6 +363,10 @@ void WebRtcLogUploader::SetupMultipart(
+ const char product[] = "Chrome_ChromeOS";
+ #elif defined(OS_FUCHSIA)
+ const char product[] = "Chrome_Fuchsia";
++#elif defined(OS_OPENBSD)
++ const char product[] = "Chrome_OpenBSD";
++#elif defined(OS_FREEBSD)
++ const char product[] = "Chrome_FreeBSD";
+ #else
+ #error Platform not supported.
+ #endif
diff --git a/devel/electron17/files/patch-chrome_browser_media_webrtc_webrtc__logging__controller.cc b/devel/electron17/files/patch-chrome_browser_media_webrtc_webrtc__logging__controller.cc
new file mode 100644
index 000000000000..81fe33d0d5af
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_media_webrtc_webrtc__logging__controller.cc
@@ -0,0 +1,33 @@
+--- chrome/browser/media/webrtc/webrtc_logging_controller.cc.orig 2021-11-19 04:25:08 UTC
++++ chrome/browser/media/webrtc/webrtc_logging_controller.cc
+@@ -24,10 +24,10 @@
+ #include "content/public/browser/browser_context.h"
+ #include "content/public/browser/render_process_host.h"
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ #include "content/public/browser/child_process_security_policy.h"
+ #include "storage/browser/file_system/isolated_context.h"
+-#endif // defined(OS_LINUX) || defined(OS_CHROMEOS)
++#endif // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+
+ using webrtc_event_logging::WebRtcEventLogManager;
+
+@@ -281,7 +281,7 @@ void WebRtcLoggingController::StartEventLogging(
+ web_app_id, callback);
+ }
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ void WebRtcLoggingController::GetLogsDirectory(
+ LogsDirectoryCallback callback,
+ LogsDirectoryErrorCallback error_callback) {
+@@ -327,7 +327,7 @@ void WebRtcLoggingController::GrantLogsDirectoryAccess
+ FROM_HERE,
+ base::BindOnce(std::move(callback), file_system.id(), registered_name));
+ }
+-#endif // defined(OS_LINUX) || defined(OS_CHROMEOS)
++#endif // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+
+ void WebRtcLoggingController::OnRtpPacket(
+ std::unique_ptr<uint8_t[]> packet_header,
diff --git a/devel/electron17/files/patch-chrome_browser_media_webrtc_webrtc__logging__controller.h b/devel/electron17/files/patch-chrome_browser_media_webrtc_webrtc__logging__controller.h
new file mode 100644
index 000000000000..fa8b93c786de
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_media_webrtc_webrtc__logging__controller.h
@@ -0,0 +1,20 @@
+--- chrome/browser/media/webrtc/webrtc_logging_controller.h.orig 2022-05-11 07:16:48 UTC
++++ chrome/browser/media/webrtc/webrtc_logging_controller.h
+@@ -132,7 +132,7 @@ class WebRtcLoggingController
+ size_t web_app_id,
+ const StartEventLoggingCallback& callback);
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // Ensures that the WebRTC Logs directory exists and then grants render
+ // process access to the 'WebRTC Logs' directory, and invokes |callback| with
+ // the ids necessary to create a DirectoryEntry object.
+@@ -191,7 +191,7 @@ class WebRtcLoggingController
+ bool success,
+ const std::string& error_message);
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // Grants the render process access to the 'WebRTC Logs' directory, and
+ // invokes |callback| with the ids necessary to create a DirectoryEntry
+ // object. If the |logs_path| couldn't be created or found, |error_callback|
diff --git a/devel/electron17/files/patch-chrome_browser_memory__details.cc b/devel/electron17/files/patch-chrome_browser_memory__details.cc
new file mode 100644
index 000000000000..5dd73fd48715
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_memory__details.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/memory_details.cc.orig 2022-05-11 07:16:48 UTC
++++ chrome/browser/memory_details.cc
+@@ -37,7 +37,7 @@
+ #include "services/resource_coordinator/public/cpp/memory_instrumentation/memory_instrumentation.h"
+ #include "ui/base/l10n/l10n_util.h"
+
+-#if defined(OS_POSIX) && !defined(OS_MAC) && !defined(OS_ANDROID)
++#if defined(OS_POSIX) && !defined(OS_MAC) && !defined(OS_ANDROID) && !defined(OS_BSD)
+ #include "content/public/browser/zygote_host/zygote_host_linux.h"
+ #endif
+
+@@ -325,7 +325,7 @@ void MemoryDetails::CollectChildInfoOnUIThread() {
+ std::ref(process)));
+ }
+
+-#if defined(OS_POSIX) && !defined(OS_MAC) && !defined(OS_ANDROID)
++#if defined(OS_POSIX) && !defined(OS_MAC) && !defined(OS_ANDROID) && !defined(OS_BSD)
+ if (content::ZygoteHost::GetInstance()->IsZygotePid(process.pid)) {
+ process.process_type = content::PROCESS_TYPE_ZYGOTE;
+ }
diff --git a/devel/electron17/files/patch-chrome_browser_memory__details__linux.cc b/devel/electron17/files/patch-chrome_browser_memory__details__linux.cc
new file mode 100644
index 000000000000..6837b7164bba
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_memory__details__linux.cc
@@ -0,0 +1,37 @@
+--- chrome/browser/memory_details_linux.cc.orig 2022-05-11 07:00:29 UTC
++++ chrome/browser/memory_details_linux.cc
+@@ -13,6 +13,7 @@
+ #include <set>
+
+ #include "base/bind.h"
++#include "base/command_line.h"
+ #include "base/files/file_util.h"
+ #include "base/process/process_iterator.h"
+ #include "base/process/process_metrics.h"
+@@ -27,6 +28,7 @@
+ #include "content/public/browser/browser_task_traits.h"
+ #include "content/public/browser/browser_thread.h"
+ #include "content/public/common/process_type.h"
++#include "sandbox/policy/switches.h"
+ #include "ui/base/l10n/l10n_util.h"
+
+ using base::ProcessEntry;
+@@ -70,9 +72,18 @@ ProcessData GetProcessDataMemoryInformation(
+
+ std::unique_ptr<base::ProcessMetrics> metrics(
+ base::ProcessMetrics::CreateProcessMetrics(pid));
++
++ base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
++ if (!command_line->HasSwitch(sandbox::policy::switches::kNoSandbox)) {
++ pmi.num_open_fds = 0;
++ pmi.open_fds_soft_limit = 0;
++ goto out;
++ }
++
+ pmi.num_open_fds = metrics->GetOpenFdCount();
+ pmi.open_fds_soft_limit = metrics->GetOpenFdSoftLimit();
+
++out:
+ process_data.processes.push_back(pmi);
+ }
+ return process_data;
diff --git a/devel/electron17/files/patch-chrome_browser_metrics_chrome__browser__main__extra__parts__metrics.cc b/devel/electron17/files/patch-chrome_browser_metrics_chrome__browser__main__extra__parts__metrics.cc
new file mode 100644
index 000000000000..36cd85a46197
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_metrics_chrome__browser__main__extra__parts__metrics.cc
@@ -0,0 +1,33 @@
+--- chrome/browser/metrics/chrome_browser_main_extra_parts_metrics.cc.orig 2022-05-11 07:16:48 UTC
++++ chrome/browser/metrics/chrome_browser_main_extra_parts_metrics.cc
+@@ -61,8 +61,10 @@
+
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
++#if !defined(OS_BSD)
+ #include <gnu/libc-version.h>
++#endif
+
+ #include "base/linux_util.h"
+ #include "base/strings/string_split.h"
+@@ -223,15 +225,18 @@ void RecordStartupMetrics() {
+ base::UmaHistogramBoolean("Windows.ApplockerRunning", IsApplockerRunning());
+ #endif // defined(OS_WIN)
+
++#if !defined(OS_BSD)
+ // TODO(crbug.com/1216328) Remove logging.
+ LOG(ERROR) << "START: ReportBluetoothAvailability(). "
+ "If you don't see the END: message, this is crbug.com/1216328.";
+ bluetooth_utility::ReportBluetoothAvailability();
+ LOG(ERROR) << "END: ReportBluetoothAvailability()";
++#endif
+
+ // Record whether Chrome is the default browser or not.
+ // Disabled on Linux due to hanging browser tests, see crbug.com/1216328.
+ #if !BUILDFLAG(IS_LINUX)
++#error out
+ LOG(ERROR) << "START: GetDefaultBrowser(). "
+ "If you don't see the END: message, this is crbug.com/1216328.";
+ shell_integration::DefaultWebClientState default_state =
diff --git a/devel/electron17/files/patch-chrome_browser_metrics_chrome__metrics__service__client.cc b/devel/electron17/files/patch-chrome_browser_metrics_chrome__metrics__service__client.cc
new file mode 100644
index 000000000000..e220b5a80f13
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_metrics_chrome__metrics__service__client.cc
@@ -0,0 +1,29 @@
+--- chrome/browser/metrics/chrome_metrics_service_client.cc.orig 2022-05-11 07:16:48 UTC
++++ chrome/browser/metrics/chrome_metrics_service_client.cc
+@@ -742,7 +742,7 @@ void ChromeMetricsServiceClient::RegisterMetricsServic
+
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_WIN) || defined(OS_MAC) || \
++#if defined(OS_WIN) || defined(OS_MAC) || defined(OS_BSD) || \
+ (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
+ metrics_service_->RegisterMetricsProvider(
+ std::make_unique<DesktopPlatformFeaturesMetricsProvider>());
+@@ -838,7 +838,7 @@ void ChromeMetricsServiceClient::RegisterMetricsServic
+ std::make_unique<PowerMetricsProvider>());
+ #endif
+
+-#if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || defined(OS_BSD)
+ metrics_service_->RegisterMetricsProvider(
+ metrics::CreateDesktopSessionMetricsProvider());
+ #endif // defined(OS_WIN) || defined(OS_MAC) || (defined(OS_LINUX)
+@@ -1014,7 +1014,7 @@ bool ChromeMetricsServiceClient::RegisterForProfileEve
+ #endif
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_WIN) || defined(OS_MAC) || \
++#if defined(OS_WIN) || defined(OS_MAC) || defined(OS_BSD) || \
+ (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
+ // This creates the DesktopProfileSessionDurationsServices if it didn't exist
+ // already.
diff --git a/devel/electron17/files/patch-chrome_browser_metrics_perf_cpu__identity.cc b/devel/electron17/files/patch-chrome_browser_metrics_perf_cpu__identity.cc
new file mode 100644
index 000000000000..623102222241
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_metrics_perf_cpu__identity.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/metrics/perf/cpu_identity.cc.orig 2021-09-14 01:51:50 UTC
++++ chrome/browser/metrics/perf/cpu_identity.cc
+@@ -106,7 +106,7 @@ CPUIdentity GetCPUIdentity() {
+ result.release =
+ #if BUILDFLAG(IS_CHROMEOS_ASH)
+ base::SysInfo::KernelVersion();
+-#elif defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#elif defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ base::SysInfo::OperatingSystemVersion();
+ #else
+ #error "Unsupported configuration"
diff --git a/devel/electron17/files/patch-chrome_browser_net_system__network__context__manager.cc b/devel/electron17/files/patch-chrome_browser_net_system__network__context__manager.cc
new file mode 100644
index 000000000000..2b0a3aa72115
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_net_system__network__context__manager.cc
@@ -0,0 +1,47 @@
+--- chrome/browser/net/system_network_context_manager.cc.orig 2022-05-11 07:16:48 UTC
++++ chrome/browser/net/system_network_context_manager.cc
+@@ -84,7 +84,7 @@
+
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ #include "chrome/common/chrome_paths_internal.h"
+ #include "chrome/grit/chromium_strings.h"
+ #include "ui/base/l10n/l10n_util.h"
+@@ -139,7 +139,7 @@ network::mojom::HttpAuthDynamicParamsPtr CreateHttpAut
+ auth_dynamic_params->basic_over_http_enabled =
+ local_state->GetBoolean(prefs::kBasicAuthOverHttpEnabled);
+
+-#if defined(OS_LINUX) || defined(OS_MAC) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_MAC) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ auth_dynamic_params->delegate_by_kdc_policy =
+ local_state->GetBoolean(prefs::kAuthNegotiateDelegateByKdcPolicy);
+ #endif // defined(OS_LINUX) || defined(OS_MAC) || defined(OS_CHROMEOS)
+@@ -370,7 +370,7 @@ SystemNetworkContextManager::SystemNetworkContextManag
+ pref_change_registrar_.Add(prefs::kBasicAuthOverHttpEnabled,
+ auth_pref_callback);
+
+-#if defined(OS_LINUX) || defined(OS_MAC) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_MAC) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ pref_change_registrar_.Add(prefs::kAuthNegotiateDelegateByKdcPolicy,
+ auth_pref_callback);
+ #endif // defined(OS_LINUX) || defined(OS_MAC) || defined(OS_CHROMEOS)
+@@ -428,7 +428,7 @@ void SystemNetworkContextManager::RegisterPrefs(PrefRe
+ registry->RegisterStringPref(prefs::kAuthServerAllowlist, std::string());
+ registry->RegisterStringPref(prefs::kAuthNegotiateDelegateAllowlist,
+ std::string());
+-#if defined(OS_LINUX) || defined(OS_MAC) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_MAC) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ registry->RegisterBooleanPref(prefs::kAuthNegotiateDelegateByKdcPolicy,
+ false);
+ #endif // defined(OS_LINUX) || defined(OS_MAC) || defined(OS_CHROMEOS)
+@@ -575,7 +575,7 @@ void SystemNetworkContextManager::OnNetworkServiceCrea
+
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ const base::CommandLine& command_line =
+ *base::CommandLine::ForCurrentProcess();
+
diff --git a/devel/electron17/files/patch-chrome_browser_new__tab__page_modules_drive_drive__service.cc b/devel/electron17/files/patch-chrome_browser_new__tab__page_modules_drive_drive__service.cc
new file mode 100644
index 000000000000..0e6c16255bae
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_new__tab__page_modules_drive_drive__service.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/new_tab_page/modules/drive/drive_service.cc.orig 2022-05-11 07:16:48 UTC
++++ chrome/browser/new_tab_page/modules/drive/drive_service.cc
+@@ -28,7 +28,7 @@
+ #include "services/network/public/cpp/resource_request.h"
+
+ namespace {
+-#if OS_LINUX
++#if defined(OS_LINUX) || defined(OS_BSD)
+ constexpr char kPlatform[] = "LINUX";
+ #elif OS_WIN
+ constexpr char kPlatform[] = "WINDOWS";
diff --git a/devel/electron17/files/patch-chrome_browser_notifications_notification__display__service__impl.cc b/devel/electron17/files/patch-chrome_browser_notifications_notification__display__service__impl.cc
new file mode 100644
index 000000000000..d5986330dfaf
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_notifications_notification__display__service__impl.cc
@@ -0,0 +1,38 @@
+--- chrome/browser/notifications/notification_display_service_impl.cc.orig 2022-05-11 07:16:48 UTC
++++ chrome/browser/notifications/notification_display_service_impl.cc
+@@ -31,7 +31,7 @@
+ #endif
+
+ #if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC) || \
+- defined(OS_WIN) || defined(OS_FUCHSIA)
++ defined(OS_WIN) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ #include "chrome/browser/send_tab_to_self/desktop_notification_handler.h"
+ #include "chrome/browser/sharing/sharing_notification_handler.h"
+ #endif
+@@ -64,7 +64,7 @@ NotificationDisplayServiceImpl* NotificationDisplaySer
+ // static
+ void NotificationDisplayServiceImpl::RegisterProfilePrefs(
+ user_prefs::PrefRegistrySyncable* registry) {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ registry->RegisterBooleanPref(prefs::kAllowNativeNotifications, true);
+ registry->RegisterBooleanPref(prefs::kAllowSystemNotifications, true);
+ #endif
+@@ -81,7 +81,7 @@ NotificationDisplayServiceImpl::NotificationDisplaySer
+ std::make_unique<PersistentNotificationHandler>());
+
+ #if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC) || \
+- defined(OS_WIN)
++ defined(OS_WIN) || defined(OS_BSD)
+ AddNotificationHandler(
+ NotificationHandler::Type::SEND_TAB_TO_SELF,
+ std::make_unique<send_tab_to_self::DesktopNotificationHandler>(
+@@ -89,7 +89,7 @@ NotificationDisplayServiceImpl::NotificationDisplaySer
+ #endif
+
+ #if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC) || \
+- defined(OS_WIN)
++ defined(OS_WIN) || defined(OS_BSD)
+ AddNotificationHandler(
+ NotificationHandler::Type::TAILORED_SECURITY,
+ std::make_unique<safe_browsing::TailoredSecurityNotificationHandler>());
diff --git a/devel/electron17/files/patch-chrome_browser_notifications_notification__platform__bridge__delegator.cc b/devel/electron17/files/patch-chrome_browser_notifications_notification__platform__bridge__delegator.cc
new file mode 100644
index 000000000000..90c2ca0ee730
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_notifications_notification__platform__bridge__delegator.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/notifications/notification_platform_bridge_delegator.cc.orig 2022-05-11 07:16:48 UTC
++++ chrome/browser/notifications/notification_platform_bridge_delegator.cc
+@@ -57,7 +57,7 @@ bool SystemNotificationsEnabled(Profile* profile) {
+ #elif defined(OS_WIN)
+ return NotificationPlatformBridgeWin::SystemNotificationEnabled();
+ #else
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ if (profile) {
+ // Prefs take precedence over flags.
+ PrefService* prefs = profile->GetPrefs();
diff --git a/devel/electron17/files/patch-chrome_browser_password__manager_password__reuse__manager__factory.cc b/devel/electron17/files/patch-chrome_browser_password__manager_password__reuse__manager__factory.cc
new file mode 100644
index 000000000000..771214ca4b5e
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_password__manager_password__reuse__manager__factory.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/password_manager/password_reuse_manager_factory.cc.orig 2022-05-11 07:16:48 UTC
++++ chrome/browser/password_manager/password_reuse_manager_factory.cc
+@@ -94,7 +94,7 @@ KeyedService* PasswordReuseManagerFactory::BuildServic
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+ #if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || \
+- BUILDFLAG(IS_CHROMEOS_LACROS)
++ BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ std::unique_ptr<password_manager::PasswordStoreSigninNotifier> notifier =
+ std::make_unique<password_manager::PasswordStoreSigninNotifierImpl>(
+ IdentityManagerFactory::GetForProfile(profile));
diff --git a/devel/electron17/files/patch-chrome_browser_performance__manager_policies_high__pmf__discard__policy.cc b/devel/electron17/files/patch-chrome_browser_performance__manager_policies_high__pmf__discard__policy.cc
new file mode 100644
index 000000000000..43f5b2382047
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_performance__manager_policies_high__pmf__discard__policy.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/performance_manager/policies/high_pmf_discard_policy.cc.orig 2021-09-14 01:51:50 UTC
++++ chrome/browser/performance_manager/policies/high_pmf_discard_policy.cc
+@@ -17,7 +17,7 @@
+ #include "content/public/browser/browser_task_traits.h"
+ #include "content/public/browser/browser_thread.h"
+
+-#if !defined(OS_LINUX)
++#if !defined(OS_LINUX) && !defined(OS_BSD)
+ #include "base/memory/memory_pressure_monitor.h"
+ #endif
+
+@@ -122,7 +122,7 @@ void HighPMFDiscardPolicy::OnProcessMemoryMetricsAvail
+
+ if (should_discard) {
+ discard_attempt_in_progress_ = true;
+-#if !defined(OS_LINUX)
++#if !defined(OS_LINUX) && !defined(OS_BSD)
+ // Record the memory pressure level before discarding a tab.
+ content::GetUIThreadTaskRunner({})->PostTask(
+ FROM_HERE, base::BindOnce([]() {
diff --git a/devel/electron17/files/patch-chrome_browser_performance__monitor_process__metrics__recorder__util.cc b/devel/electron17/files/patch-chrome_browser_performance__monitor_process__metrics__recorder__util.cc
new file mode 100644
index 000000000000..30fe8c7c5469
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_performance__monitor_process__metrics__recorder__util.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/performance_monitor/process_metrics_recorder_util.cc.orig 2022-05-11 07:16:48 UTC
++++ chrome/browser/performance_monitor/process_metrics_recorder_util.cc
+@@ -42,7 +42,7 @@ void RecordProcessHistograms(const char* histogram_suf
+ metrics.cpu_usage * kCPUUsageFactor, kCPUUsageHistogramMin,
+ kCPUUsageHistogramMax, kCPUUsageHistogramBucketCount);
+ #if defined(OS_MAC) || defined(OS_LINUX) || defined(OS_CHROMEOS) || \
+- defined(OS_AIX)
++ defined(OS_AIX) || defined(OS_BSD)
+ base::UmaHistogramCounts10000(
+ base::JoinString({"PerformanceMonitor.IdleWakeups.", histogram_suffix},
+ ""),
diff --git a/devel/electron17/files/patch-chrome_browser_performance__monitor_process__monitor.cc b/devel/electron17/files/patch-chrome_browser_performance__monitor_process__monitor.cc
new file mode 100644
index 000000000000..f375b39608a5
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_performance__monitor_process__monitor.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/performance_monitor/process_monitor.cc.orig 2022-05-11 07:16:48 UTC
++++ chrome/browser/performance_monitor/process_monitor.cc
+@@ -80,7 +80,7 @@ ProcessMonitor::Metrics& operator+=(ProcessMonitor::Me
+ lhs.cpu_usage += rhs.cpu_usage;
+
+ #if defined(OS_MAC) || defined(OS_LINUX) || defined(OS_CHROMEOS) || \
+- defined(OS_AIX)
++ defined(OS_AIX) || defined(OS_BSD)
+ lhs.idle_wakeups += rhs.idle_wakeups;
+ #endif
+
diff --git a/devel/electron17/files/patch-chrome_browser_performance__monitor_process__monitor.h b/devel/electron17/files/patch-chrome_browser_performance__monitor_process__monitor.h
new file mode 100644
index 000000000000..5d662877a750
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_performance__monitor_process__monitor.h
@@ -0,0 +1,11 @@
+--- chrome/browser/performance_monitor/process_monitor.h.orig 2022-05-11 07:16:48 UTC
++++ chrome/browser/performance_monitor/process_monitor.h
+@@ -56,7 +56,7 @@ class ProcessMonitor {
+ double cpu_usage = 0.0;
+
+ #if defined(OS_MAC) || defined(OS_LINUX) || defined(OS_CHROMEOS) || \
+- defined(OS_AIX)
++ defined(OS_AIX) || defined(OS_BSD)
+ // Returns the number of average idle cpu wakeups per second since the last
+ // time the metric was sampled.
+ int idle_wakeups = 0;
diff --git a/devel/electron17/files/patch-chrome_browser_platform__util__linux.cc b/devel/electron17/files/patch-chrome_browser_platform__util__linux.cc
new file mode 100644
index 000000000000..0ca2e07e3e4b
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_platform__util__linux.cc
@@ -0,0 +1,12 @@
+--- chrome/browser/platform_util_linux.cc.orig 2021-09-14 01:51:50 UTC
++++ chrome/browser/platform_util_linux.cc
+@@ -297,7 +297,9 @@ void RunCommand(const std::string& command,
+
+ base::LaunchOptions options;
+ options.current_directory = working_directory;
++#if !defined(OS_BSD)
+ options.allow_new_privs = true;
++#endif
+ // xdg-open can fall back on mailcap which eventually might plumb through
+ // to a command that needs a terminal. Set the environment variable telling
+ // it that we definitely don't have a terminal available and that it should
diff --git a/devel/electron17/files/patch-chrome_browser_plugins_plugins__resource__service.cc b/devel/electron17/files/patch-chrome_browser_plugins_plugins__resource__service.cc
new file mode 100644
index 000000000000..6b6e50c810de
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_plugins_plugins__resource__service.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/plugins/plugins_resource_service.cc.orig 2021-04-14 01:08:40 UTC
++++ chrome/browser/plugins/plugins_resource_service.cc
+@@ -62,7 +62,7 @@ GURL GetPluginsServerURL() {
+ filename = "plugins_win.json";
+ #elif BUILDFLAG(IS_CHROMEOS_ASH)
+ filename = "plugins_chromeos.json";
+-#elif defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#elif defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ filename = "plugins_linux.json";
+ #elif defined(OS_MAC)
+ filename = "plugins_mac.json";
diff --git a/devel/electron17/files/patch-chrome_browser_policy_browser__signin__policy__handler.cc b/devel/electron17/files/patch-chrome_browser_policy_browser__signin__policy__handler.cc
new file mode 100644
index 000000000000..259f40114c52
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_policy_browser__signin__policy__handler.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/policy/browser_signin_policy_handler.cc.orig 2021-09-14 01:51:50 UTC
++++ chrome/browser/policy/browser_signin_policy_handler.cc
+@@ -43,7 +43,7 @@ void BrowserSigninPolicyHandler::ApplyPolicySettings(c
+ const base::Value* value = policies.GetValue(policy_name());
+ switch (static_cast<BrowserSigninMode>(value->GetInt())) {
+ case BrowserSigninMode::kForced:
+-#if !defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if !defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(OS_BSD)
+ prefs->SetValue(prefs::kForceBrowserSignin, base::Value(true));
+ #endif
+ FALLTHROUGH;
diff --git a/devel/electron17/files/patch-chrome_browser_policy_chrome__browser__cloud__management__controller__desktop.cc b/devel/electron17/files/patch-chrome_browser_policy_chrome__browser__cloud__management__controller__desktop.cc
new file mode 100644
index 000000000000..3c5c3ce8bcae
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_policy_chrome__browser__cloud__management__controller__desktop.cc
@@ -0,0 +1,38 @@
+--- chrome/browser/policy/chrome_browser_cloud_management_controller_desktop.cc.orig 2022-05-11 07:16:48 UTC
++++ chrome/browser/policy/chrome_browser_cloud_management_controller_desktop.cc
+@@ -46,7 +46,7 @@
+ #include "chrome/browser/policy/browser_dm_token_storage_mac.h"
+ #endif // defined(OS_MAC)
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ #include "chrome/browser/policy/browser_dm_token_storage_linux.h"
+ #endif // defined(OS_LINUX) || defined(OS_CHROMEOS)
+
+@@ -55,7 +55,7 @@
+ #include "chrome/install_static/install_util.h"
+ #endif // defined(OS_WIN)
+
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MAC)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MAC) || defined(OS_BSD)
+ #include "chrome/browser/enterprise/connectors/device_trust/device_trust_features.h"
+ #include "chrome/browser/enterprise/connectors/device_trust/key_management/browser/device_trust_key_manager_impl.h"
+ #include "chrome/browser/enterprise/connectors/device_trust/key_management/browser/key_rotation_launcher.h"
+@@ -88,7 +88,7 @@ void ChromeBrowserCloudManagementControllerDesktop::
+
+ #if defined(OS_MAC)
+ storage_delegate = std::make_unique<BrowserDMTokenStorageMac>();
+-#elif defined(OS_LINUX) || defined(OS_CHROMEOS)
++#elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ storage_delegate = std::make_unique<BrowserDMTokenStorageLinux>();
+ #elif defined(OS_WIN)
+ storage_delegate = std::make_unique<BrowserDMTokenStorageWin>();
+@@ -243,7 +243,7 @@ ChromeBrowserCloudManagementControllerDesktop::CreateC
+
+ std::unique_ptr<enterprise_connectors::DeviceTrustKeyManager>
+ ChromeBrowserCloudManagementControllerDesktop::CreateDeviceTrustKeyManager() {
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MAC)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MAC) || defined(OS_BSD)
+ if (enterprise_connectors::IsDeviceTrustConnectorFeatureEnabled()) {
+ auto key_rotation_launcher =
+ enterprise_connectors::KeyRotationLauncher::Create(
diff --git a/devel/electron17/files/patch-chrome_browser_policy_configuration__policy__handler__list__factory.cc b/devel/electron17/files/patch-chrome_browser_policy_configuration__policy__handler__list__factory.cc
new file mode 100644
index 000000000000..c2882814385c
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_policy_configuration__policy__handler__list__factory.cc
@@ -0,0 +1,47 @@
+--- chrome/browser/policy/configuration_policy_handler_list_factory.cc.orig 2022-05-11 07:16:48 UTC
++++ chrome/browser/policy/configuration_policy_handler_list_factory.cc
+@@ -1432,7 +1432,7 @@ const PolicyToPreferenceMapEntry kSimplePolicyMap[] =
+ base::Value::Type::BOOLEAN },
+ #endif // !defined(OS_MAC) && !defined(OS_CHROMEOS)
+
+-#if defined(OS_LINUX) || defined(OS_MAC) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_MAC) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ { key::kAuthNegotiateDelegateByKdcPolicy,
+ prefs::kAuthNegotiateDelegateByKdcPolicy,
+ base::Value::Type::BOOLEAN },
+@@ -1541,7 +1541,7 @@ const PolicyToPreferenceMapEntry kSimplePolicyMap[] =
+ base::Value::Type::BOOLEAN },
+ #endif // BUILDFLAG(IS_CHROMEOS_ASH)
+
+-#if BUILDFLAG(ENABLE_EXTENSIONS) && (defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX))
++#if BUILDFLAG(ENABLE_EXTENSIONS) && (defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || defined(OS_BSD))
+ { key::kChromeAppsEnabled,
+ extensions::pref_names::kChromeAppsEnabled,
+ base::Value::Type::BOOLEAN },
+@@ -1828,7 +1828,7 @@ std::unique_ptr<ConfigurationPolicyHandlerList> BuildH
+ #endif // defined(OS_ANDROID)
+
+ #if defined(OS_LINUX) || defined(OS_MAC) || defined(OS_WIN) || \
+- defined(OS_CHROMEOS) || defined(OS_FUCHSIA)
++ defined(OS_CHROMEOS) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ handlers->AddHandler(
+ std::make_unique<
+ enterprise_connectors::EnterpriseConnectorsPolicyHandler>(
+@@ -2193,7 +2193,7 @@ std::unique_ptr<ConfigurationPolicyHandlerList> BuildH
+ SimpleSchemaValidatingPolicyHandler::MANDATORY_ALLOWED));
+
+ #if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || \
+- defined(OS_FUCHSIA)
++ defined(OS_FUCHSIA) || defined(OS_BSD)
+ handlers->AddHandler(std::make_unique<SimpleSchemaValidatingPolicyHandler>(
+ key::kWebAppSettings, prefs::kWebAppSettings, chrome_schema,
+ SCHEMA_ALLOW_UNKNOWN,
+@@ -2224,7 +2224,7 @@ std::unique_ptr<ConfigurationPolicyHandlerList> BuildH
+ policy::key::kSpellcheckLanguageBlocklist));
+ #endif // BUILDFLAG(ENABLE_SPELLCHECK)
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ handlers->AddHandler(std::make_unique<SimpleDeprecatingPolicyHandler>(
+ std::make_unique<SimplePolicyHandler>(key::kAllowNativeNotifications,
+ prefs::kAllowNativeNotifications,
diff --git a/devel/electron17/files/patch-chrome_browser_policy_device__management__service__configuration.cc b/devel/electron17/files/patch-chrome_browser_policy_device__management__service__configuration.cc
new file mode 100644
index 000000000000..d9728093db67
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_policy_device__management__service__configuration.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/policy/device_management_service_configuration.cc.orig 2022-05-11 07:16:48 UTC
++++ chrome/browser/policy/device_management_service_configuration.cc
+@@ -19,7 +19,7 @@
+ #include "chromeos/system/statistics_provider.h"
+ #endif
+
+-#if defined(OS_WIN) || defined(OS_MAC) || \
++#if defined(OS_WIN) || defined(OS_MAC) || defined(OS_BSD) || \
+ ((defined(OS_LINUX) || defined(OS_CHROMEOS)) && !defined(OS_ANDROID))
+ #include "chrome/browser/enterprise/connectors/common.h"
+ #include "chrome/browser/enterprise/connectors/connectors_service.h"
+@@ -97,7 +97,7 @@ DeviceManagementServiceConfiguration::GetEncryptedRepo
+ std::string
+ DeviceManagementServiceConfiguration::GetReportingConnectorServerUrl(
+ content::BrowserContext* context) const {
+-#if defined(OS_WIN) || defined(OS_MAC) || \
++#if defined(OS_WIN) || defined(OS_MAC) || defined(OS_BSD) || \
+ ((defined(OS_LINUX) || defined(OS_CHROMEOS)) && !defined(OS_ANDROID))
+ auto* service =
+ enterprise_connectors::ConnectorsServiceFactory::GetForBrowserContext(
diff --git a/devel/electron17/files/patch-chrome_browser_prefs_browser__prefs.cc b/devel/electron17/files/patch-chrome_browser_prefs_browser__prefs.cc
new file mode 100644
index 000000000000..a8c7ee7444fa
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_prefs_browser__prefs.cc
@@ -0,0 +1,46 @@
+--- chrome/browser/prefs/browser_prefs.cc.orig 2022-05-11 07:16:48 UTC
++++ chrome/browser/prefs/browser_prefs.cc
+@@ -415,14 +415,14 @@
+ #include "components/os_crypt/os_crypt.h"
+ #endif
+
+-#if defined(OS_WIN) || defined(OS_MAC) || \
++#if defined(OS_WIN) || defined(OS_MAC) || defined(OS_BSD) || \
+ (defined(OS_LINUX) && !BUILDFLAG(IS_CHROMEOS_LACROS))
+ #include "chrome/browser/web_applications/url_handler_prefs.h"
+ #endif
+
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_WIN) || defined(OS_MAC) || \
++#if defined(OS_WIN) || defined(OS_MAC) || defined(OS_BSD) || \
+ (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
+ #include "chrome/browser/browser_switcher/browser_switcher_prefs.h"
+ #endif
+@@ -1069,7 +1069,7 @@ void RegisterLocalState(PrefRegistrySimple* registry)
+ // TODO(crbug/1169547) Remove `BUILDFLAG(IS_CHROMEOS_LACROS)` once the
+ // migration is complete.
+ #if defined(OS_LINUX) || defined(OS_MAC) || defined(OS_WIN) || \
+- BUILDFLAG(IS_CHROMEOS_LACROS)
++ BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ enterprise_connectors::RegisterLocalPrefs(registry);
+ #endif // defined(OS_LINUX) || defined(OS_MAC) || defined(OS_WIN)
+
+@@ -1101,7 +1101,7 @@ void RegisterLocalState(PrefRegistrySimple* registry)
+ #endif // BUILDFLAG(GOOGLE_CHROME_BRANDING)
+ #endif // defined(OS_WIN)
+
+-#if defined(OS_WIN) || defined(OS_MAC) || \
++#if defined(OS_WIN) || defined(OS_MAC) || defined(OS_BSD) || \
+ (defined(OS_LINUX) && !BUILDFLAG(IS_CHROMEOS_LACROS))
+ web_app::url_handler_prefs::RegisterLocalStatePrefs(registry);
+ #endif
+@@ -1396,7 +1396,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySync
+
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_WIN) || defined(OS_MAC) || \
++#if defined(OS_WIN) || defined(OS_MAC) || defined(OS_BSD) || \
+ (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
+ browser_switcher::BrowserSwitcherPrefs::RegisterProfilePrefs(registry);
+ #endif
diff --git a/devel/electron17/files/patch-chrome_browser_prefs_pref__service__incognito__allowlist.cc b/devel/electron17/files/patch-chrome_browser_prefs_pref__service__incognito__allowlist.cc
new file mode 100644
index 000000000000..d7e49d174568
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_prefs_pref__service__incognito__allowlist.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/prefs/pref_service_incognito_allowlist.cc.orig 2021-09-14 01:51:50 UTC
++++ chrome/browser/prefs/pref_service_incognito_allowlist.cc
+@@ -139,7 +139,7 @@ const char* const kPersistentPrefNames[] = {
+
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ // Toggleing custom frames affects all open windows in the profile, hence
+ // should be written to the regular profile when changed in incognito mode.
+ prefs::kUseCustomChromeFrame,
diff --git a/devel/electron17/files/patch-chrome_browser_printing_print__job__worker.cc b/devel/electron17/files/patch-chrome_browser_printing_print__job__worker.cc
new file mode 100644
index 000000000000..49805f475e20
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_printing_print__job__worker.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/printing/print_job_worker.cc.orig 2022-05-13 07:19:54 UTC
++++ chrome/browser/printing/print_job_worker.cc
+@@ -231,7 +231,7 @@ void PrintJobWorker::UpdatePrintSettings(base::Value n
+ crash_key = std::make_unique<crash_keys::ScopedPrinterInfo>(
+ print_backend->GetPrinterDriverInfo(printer_name));
+
+-#if defined(OS_LINUX) && defined(USE_CUPS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && defined(USE_CUPS)
+ PrinterBasicInfo basic_info;
+ if (print_backend->GetPrinterBasicInfo(printer_name, &basic_info) ==
+ mojom::ResultCode::kSuccess) {
diff --git a/devel/electron17/files/patch-chrome_browser_process__singleton__posix.cc b/devel/electron17/files/patch-chrome_browser_process__singleton__posix.cc
new file mode 100644
index 000000000000..675a0c11421b
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_process__singleton__posix.cc
@@ -0,0 +1,36 @@
+--- chrome/browser/process_singleton_posix.cc.orig 2022-05-13 07:19:54 UTC
++++ chrome/browser/process_singleton_posix.cc
+@@ -100,13 +100,13 @@
+ #include "ui/base/l10n/l10n_util.h"
+
+ #if 0
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ #include "chrome/browser/ui/process_singleton_dialog_linux.h"
+ #endif
+ #endif
+
+ #if defined(TOOLKIT_VIEWS) && \
+- (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
++ (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD))
+ #include "ui/views/linux_ui/linux_ui.h"
+ #endif
+
+@@ -363,7 +363,7 @@ bool DisplayProfileInUseError(const base::FilePath& lo
+ if (g_disable_prompt)
+ return g_user_opted_unlock_in_use_profile;
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ std::u16string relaunch_button_text =
+ l10n_util::GetStringUTF16(IDS_PROFILE_IN_USE_LINUX_RELAUNCH);
+ return ShowProcessSingletonDialog(error, relaunch_button_text);
+@@ -998,7 +998,7 @@ ProcessSingleton::NotifyResult ProcessSingleton::Notif
+ return PROCESS_NONE;
+ } else if (strncmp(buf, kACKToken, base::size(kACKToken) - 1) == 0) {
+ #if defined(TOOLKIT_VIEWS) && \
+- (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
++ (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD))
+ // Likely NULL in unit tests.
+ views::LinuxUI* linux_ui = views::LinuxUI::instance();
+ if (linux_ui)
diff --git a/devel/electron17/files/patch-chrome_browser_profiles_chrome__browser__main__extra__parts__profiles.cc b/devel/electron17/files/patch-chrome_browser_profiles_chrome__browser__main__extra__parts__profiles.cc
new file mode 100644
index 000000000000..e957e5c359b1
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_profiles_chrome__browser__main__extra__parts__profiles.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc.orig 2022-05-11 07:16:48 UTC
++++ chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc
+@@ -384,7 +384,7 @@ void ChromeBrowserMainExtraPartsProfiles::
+ #endif
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_WIN) || defined(OS_MAC) || \
++#if defined(OS_WIN) || defined(OS_MAC) || defined(OS_BSD) || \
+ (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
+ metrics::DesktopProfileSessionDurationsServiceFactory::GetInstance();
+ #endif
diff --git a/devel/electron17/files/patch-chrome_browser_profiles_profile__impl.cc b/devel/electron17/files/patch-chrome_browser_profiles_profile__impl.cc
new file mode 100644
index 000000000000..f07d7f730b32
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_profiles_profile__impl.cc
@@ -0,0 +1,25 @@
+--- chrome/browser/profiles/profile_impl.cc.orig 2022-05-11 07:16:48 UTC
++++ chrome/browser/profiles/profile_impl.cc
+@@ -181,6 +181,7 @@
+ #include "services/preferences/public/mojom/preferences.mojom.h"
+ #include "services/preferences/public/mojom/tracked_preference_validation_delegate.mojom.h"
+ #include "services/service_manager/public/cpp/service.h"
++#include "sandbox/policy/switches.h"
+ #include "ui/base/l10n/l10n_util.h"
+
+ #if BUILDFLAG(IS_CHROMEOS_ASH)
+@@ -846,7 +847,13 @@ void ProfileImpl::DoFinalInit(CreateMode create_mode)
+ }
+
+ base::FilePath ProfileImpl::last_selected_directory() {
+- return GetPrefs()->GetFilePath(prefs::kSelectFileLastDirectory);
++ // If unveil(2) is used, force the file dialog directory to something we
++ // know is available.
++ base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
++ if (!command_line->HasSwitch(sandbox::policy::switches::kDisableUnveil))
++ return GetPrefs()->GetFilePath(prefs::kDownloadDefaultDirectory);
++ else
++ return GetPrefs()->GetFilePath(prefs::kSelectFileLastDirectory);
+ }
+
+ void ProfileImpl::set_last_selected_directory(const base::FilePath& path) {
diff --git a/devel/electron17/files/patch-chrome_browser_profiles_profiles__state.cc b/devel/electron17/files/patch-chrome_browser_profiles_profiles__state.cc
new file mode 100644
index 000000000000..bf506aff8114
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_profiles_profiles__state.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/profiles/profiles_state.cc.orig 2022-05-11 07:16:48 UTC
++++ chrome/browser/profiles/profiles_state.cc
+@@ -176,7 +176,7 @@ bool IsGuestModeRequested(const base::CommandLine& com
+ PrefService* local_state,
+ bool show_warning) {
+ #if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_WIN) || \
+- defined(OS_MAC)
++ defined(OS_MAC) || defined(OS_BSD)
+ DCHECK(local_state);
+
+ // Check if guest mode enforcement commandline switch or policy are provided.
diff --git a/devel/electron17/files/patch-chrome_browser_renderer__preferences__util.cc b/devel/electron17/files/patch-chrome_browser_renderer__preferences__util.cc
new file mode 100644
index 000000000000..df551fc8c564
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_renderer__preferences__util.cc
@@ -0,0 +1,29 @@
+--- chrome/browser/renderer_preferences_util.cc.orig 2022-05-11 07:16:48 UTC
++++ chrome/browser/renderer_preferences_util.cc
+@@ -41,7 +41,7 @@
+ #include "ui/base/cocoa/defaults_utils.h"
+ #endif
+
+-#if defined(USE_AURA) && (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
++#if defined(USE_AURA) && (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD))
+ #include "chrome/browser/themes/theme_service.h"
+ #include "chrome/browser/themes/theme_service_factory.h"
+ #include "ui/views/linux_ui/linux_ui.h"
+@@ -169,7 +169,7 @@ void UpdateFromSystemSettings(blink::RendererPreferenc
+ prefs->caret_blink_interval = interval;
+ #endif
+
+-#if defined(USE_AURA) && (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
++#if defined(USE_AURA) && (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD))
+ views::LinuxUI* linux_ui = views::LinuxUI::instance();
+ if (linux_ui) {
+ if (ThemeServiceFactory::GetForProfile(profile)->UsingSystemTheme()) {
+@@ -189,7 +189,7 @@ void UpdateFromSystemSettings(blink::RendererPreferenc
+ #endif
+
+ #if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID) || \
+- defined(OS_WIN)
++ defined(OS_WIN) || defined(OS_BSD)
+ content::UpdateFontRendererPreferencesFromSystemSettings(prefs);
+ #endif
+
diff --git a/devel/electron17/files/patch-chrome_browser_resources_new__tab__page_new__tab__page.js b/devel/electron17/files/patch-chrome_browser_resources_new__tab__page_new__tab__page.js
new file mode 100644
index 000000000000..e2afa6bba7ef
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_resources_new__tab__page_new__tab__page.js
@@ -0,0 +1,13 @@
+--- chrome/browser/resources/new_tab_page/new_tab_page.js.orig 2022-05-11 07:16:48 UTC
++++ chrome/browser/resources/new_tab_page/new_tab_page.js
+@@ -21,10 +21,6 @@ export {chromeCartDescriptor as chromeCartV2Descriptor
+ export {DriveProxy} from './modules/drive/drive_module_proxy.js';
+ export {driveDescriptor} from './modules/drive/module.js';
+ export {driveDescriptor as driveV2Descriptor} from './modules/drive_v2/module.js';
+-// <if expr="not is_official_build">
+-export {FooProxy} from './modules/dummy/foo_proxy.js';
+-export {dummyDescriptor} from './modules/dummy/module.js';
+-// </if>
+ export {InfoDialogElement} from './modules/info_dialog.js';
+ export {InitializeModuleCallback, Module, ModuleDescriptor} from './modules/module_descriptor.js';
+ export {ModuleHeaderElement} from './modules/module_header.js';
diff --git a/devel/electron17/files/patch-chrome_browser_resources_plugin__metadata_plugins__linux.json b/devel/electron17/files/patch-chrome_browser_resources_plugin__metadata_plugins__linux.json
new file mode 100644
index 000000000000..93b22d5be064
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_resources_plugin__metadata_plugins__linux.json
@@ -0,0 +1,31 @@
+--- chrome/browser/resources/plugin_metadata/plugins_linux.json.orig 2022-05-11 07:00:30 UTC
++++ chrome/browser/resources/plugin_metadata/plugins_linux.json
+@@ -1,28 +1,5 @@
+ {
+ "x-version": 46,
+- "adobe-flash-player": {
+- "mime_types": [
+- "application/futuresplash",
+- "application/x-shockwave-flash"
+- ],
+- "matching_mime_types": [
+- "application/futuresplash"
+- ],
+- "versions": [
+- {
+- "version": "32.0.0.445",
+- "status": "up_to_date",
+- "reference": "https://helpx.adobe.com/security/products/flash-player/apsb20-58.html"
+- }
+- ],
+- "lang": "en-US",
+- "name": "Adobe Flash Player",
+- "help_url": "https://support.google.com/chrome/?p=plugin_flash",
+- "url": "https://support.google.com/chrome/answer/6258784",
+- "displayurl": true,
+- "group_name_matcher": "*Shockwave Flash*",
+- "plugin_is_deprecated": true
+- },
+ "google-chrome-pdf": {
+ "mime_types": [
+ ],
diff --git a/devel/electron17/files/patch-chrome_browser_resources_settings_appearance__page_appearance__browser__proxy.ts b/devel/electron17/files/patch-chrome_browser_resources_settings_appearance__page_appearance__browser__proxy.ts
new file mode 100644
index 000000000000..24e4a46e0b27
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_resources_settings_appearance__page_appearance__browser__proxy.ts
@@ -0,0 +1,20 @@
+--- chrome/browser/resources/settings/appearance_page/appearance_browser_proxy.ts.orig 2022-05-11 07:16:48 UTC
++++ chrome/browser/resources/settings/appearance_page/appearance_browser_proxy.ts
+@@ -16,7 +16,7 @@ export interface AppearanceBrowserProxy {
+
+ useDefaultTheme(): void;
+
+- // <if expr="is_linux and not chromeos">
++ // <if expr="is_bsd and not chromeos">
+ useSystemTheme(): void;
+ // </if>
+
+@@ -44,7 +44,7 @@ export class AppearanceBrowserProxyImpl implements App
+ chrome.send('useDefaultTheme');
+ }
+
+- // <if expr="is_linux and not chromeos">
++ // <if expr="is_bsd and not chromeos">
+ useSystemTheme() {
+ chrome.send('useSystemTheme');
+ }
diff --git a/devel/electron17/files/patch-chrome_browser_resources_settings_appearance__page_appearance__page.html b/devel/electron17/files/patch-chrome_browser_resources_settings_appearance__page_appearance__page.html
new file mode 100644
index 000000000000..aa0737875900
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_resources_settings_appearance__page_appearance__page.html
@@ -0,0 +1,29 @@
+--- chrome/browser/resources/settings/appearance_page/appearance_page.html.orig 2021-09-14 01:51:51 UTC
++++ chrome/browser/resources/settings/appearance_page/appearance_page.html
+@@ -27,7 +27,7 @@
+ <cr-link-row class="first" hidden="[[!pageVisibility.setTheme]]"
+ label="$i18n{themes}" sub-label="[[themeSublabel_]]"
+ on-click="openThemeUrl_" external></cr-link-row>
+-<if expr="not is_linux or chromeos or lacros">
++<if expr="not is_posix or chromeos or lacros">
+ <template is="dom-if" if="[[prefs.extensions.theme.id.value]]">
+ <div class="separator"></div>
+ <cr-button id="useDefault" on-click="onUseDefaultTap_">
+@@ -35,7 +35,7 @@
+ </cr-button>
+ </template>
+ </if>
+-<if expr="is_linux and not chromeos and not lacros">
++<if expr="is_posix and not chromeos and not lacros">
+ <div class="settings-row continuation"
+ hidden="[[!showThemesSecondary_(
+ prefs.extensions.theme.id.value, useSystemTheme_)]]"
+@@ -109,7 +109,7 @@
+ pref="{{prefs.bookmark_bar.show_on_all_tabs}}"
+ label="$i18n{showBookmarksBar}">
+ </settings-toggle-button>
+-<if expr="is_linux and not chromeos and not lacros">
++<if expr="is_posix and not chromeos and not lacros">
+ <div class="hr" hidden="[[!pageVisibility.bookmarksBar]]"></div>
+ <settings-toggle-button
+ hidden="[[!showCustomChromeFrame_]]"
diff --git a/devel/electron17/files/patch-chrome_browser_resources_settings_appearance__page_appearance__page.ts b/devel/electron17/files/patch-chrome_browser_resources_settings_appearance__page_appearance__page.ts
new file mode 100644
index 000000000000..5b6b70e8c39a
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_resources_settings_appearance__page_appearance__page.ts
@@ -0,0 +1,51 @@
+--- chrome/browser/resources/settings/appearance_page/appearance_page.ts.orig 2022-05-11 07:16:48 UTC
++++ chrome/browser/resources/settings/appearance_page/appearance_page.ts
+@@ -145,7 +145,7 @@ export class SettingsAppearancePageElement extends
+ 'prefs.autogenerated.theme.policy.color.controlledBy)',
+ },
+
+- // <if expr="is_linux and not chromeos and not lacros">
++ // <if expr="is_bsd and not chromeos and not lacros">
+ /**
+ * Whether to show the "Custom Chrome Frame" setting.
+ */
+@@ -167,7 +167,7 @@ export class SettingsAppearancePageElement extends
+ 'themeChanged_(' +
+ 'prefs.extensions.theme.id.value, useSystemTheme_, isForcedTheme_)',
+
+- // <if expr="is_linux and not chromeos">
++ // <if expr="is_bsd and not chromeos">
+ // NOTE: this pref only exists on Linux.
+ 'useSystemThemePrefChanged_(prefs.extensions.theme.use_system.value)',
+ // </if>
+@@ -186,7 +186,7 @@ export class SettingsAppearancePageElement extends
+ private showReaderModeOption_: boolean;
+ private isForcedTheme_: boolean;
+
+- // <if expr="is_linux and not chromeos and not lacros">
++ // <if expr="is_bsd and not chromeos and not lacros">
+ private showCustomChromeFrame_: boolean;
+ // </if>
+
+@@ -264,7 +264,7 @@ export class SettingsAppearancePageElement extends
+ this.appearanceBrowserProxy_.useDefaultTheme();
+ }
+
+- // <if expr="is_linux and not chromeos">
++ // <if expr="is_bsd and not chromeos">
+ private useSystemThemePrefChanged_(useSystemTheme: boolean) {
+ this.useSystemTheme_ = useSystemTheme;
+ }
+@@ -325,10 +325,10 @@ export class SettingsAppearancePageElement extends
+ }
+
+ let i18nId;
+- // <if expr="is_linux and not chromeos and not lacros">
++ // <if expr="is_bsd and not chromeos and not lacros">
+ i18nId = useSystemTheme ? 'systemTheme' : 'classicTheme';
+ // </if>
+- // <if expr="not is_linux or chromeos or lacros">
++ // <if expr="not is_bsd or chromeos or lacros">
+ i18nId = 'chooseFromWebStore';
+ // </if>
+ this.themeSublabel_ = this.i18n(i18nId);
diff --git a/devel/electron17/files/patch-chrome_browser_resources_settings_autofill__page_passwords__shared__css.html b/devel/electron17/files/patch-chrome_browser_resources_settings_autofill__page_passwords__shared__css.html
new file mode 100644
index 000000000000..631657524b17
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_resources_settings_autofill__page_passwords__shared__css.html
@@ -0,0 +1,11 @@
+--- chrome/browser/resources/settings/autofill_page/passwords_shared_css.html.orig 2022-05-11 07:16:48 UTC
++++ chrome/browser/resources/settings/autofill_page/passwords_shared_css.html
+@@ -64,7 +64,7 @@
+ * necessary to prevent Chrome from using the operating system's font
+ * instead of the Material Design font.
+ * TODO(dbeam): why not font: inherit? */
+-<if expr="chromeos or lacros or is_linux">
++<if expr="chromeos or lacros or is_posix">
+ font-family: 'DejaVu Sans Mono', monospace;
+ </if>
+ <if expr="is_win">
diff --git a/devel/electron17/files/patch-chrome_browser_resources_settings_route.ts b/devel/electron17/files/patch-chrome_browser_resources_settings_route.ts
new file mode 100644
index 000000000000..5544a011f217
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_resources_settings_route.ts
@@ -0,0 +1,11 @@
+--- chrome/browser/resources/settings/route.ts.orig 2022-05-11 07:16:48 UTC
++++ chrome/browser/resources/settings/route.ts
+@@ -177,7 +177,7 @@ function createBrowserSettingsRoutes(): SettingsRoutes
+
+ r.ACCESSIBILITY = r.ADVANCED.createSection('/accessibility', 'a11y');
+
+- // <if expr="is_linux">
++ // <if expr="is_posix">
+ r.CAPTIONS = r.ACCESSIBILITY.createChild('/captions');
+ // </if>
+
diff --git a/devel/electron17/files/patch-chrome_browser_resources_signin_signin__shared__css.html b/devel/electron17/files/patch-chrome_browser_resources_signin_signin__shared__css.html
new file mode 100644
index 000000000000..f1593fbf79ac
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_resources_signin_signin__shared__css.html
@@ -0,0 +1,11 @@
+--- chrome/browser/resources/signin/signin_shared_css.html.orig 2021-07-15 19:13:33 UTC
++++ chrome/browser/resources/signin/signin_shared_css.html
+@@ -30,7 +30,7 @@
+ margin-inline-start: 8px;
+ }
+
+-<if expr="is_macosx or is_linux">
++<if expr="is_macosx or is_posix">
+ .action-container {
+ flex-flow: row-reverse;
+ justify-content: flex-start;
diff --git a/devel/electron17/files/patch-chrome_browser_safe__browsing_download__protection_file__analyzer.cc b/devel/electron17/files/patch-chrome_browser_safe__browsing_download__protection_file__analyzer.cc
new file mode 100644
index 000000000000..52c160380a00
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_safe__browsing_download__protection_file__analyzer.cc
@@ -0,0 +1,29 @@
+--- chrome/browser/safe_browsing/download_protection/file_analyzer.cc.orig 2022-05-11 07:16:48 UTC
++++ chrome/browser/safe_browsing/download_protection/file_analyzer.cc
+@@ -19,7 +19,7 @@
+ #include "components/safe_browsing/core/common/features.h"
+ #include "content/public/browser/browser_thread.h"
+
+-#if defined(OS_LINUX) || defined(OS_WIN)
++#if defined(OS_LINUX) || defined(OS_WIN) | defined(OS_BSD)
+ #include "chrome/browser/safe_browsing/download_protection/document_analysis_service.h"
+ #endif
+
+@@ -100,7 +100,7 @@ void FileAnalyzer::Start(const base::FilePath& target_
+ } else if (inspection_type == DownloadFileType::DMG) {
+ StartExtractDmgFeatures();
+ #endif
+-#if defined(OS_LINUX) || defined(OS_WIN)
++#if defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
+ } else if (base::FeatureList::IsEnabled(
+ safe_browsing::kClientSideDetectionDocumentScanning) &&
+ inspection_type == DownloadFileType::OFFICE_DOCUMENT) {
+@@ -284,7 +284,7 @@ void FileAnalyzer::OnDmgAnalysisFinished(
+ }
+ #endif // defined(OS_MAC)
+
+-#if defined(OS_LINUX) || defined(OS_WIN)
++#if defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
+ void FileAnalyzer::StartExtractDocumentFeatures() {
+ DCHECK_CURRENTLY_ON(BrowserThread::UI);
+
diff --git a/devel/electron17/files/patch-chrome_browser_safe__browsing_download__protection_file__analyzer.h b/devel/electron17/files/patch-chrome_browser_safe__browsing_download__protection_file__analyzer.h
new file mode 100644
index 000000000000..4bcb576f460b
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_safe__browsing_download__protection_file__analyzer.h
@@ -0,0 +1,29 @@
+--- chrome/browser/safe_browsing/download_protection/file_analyzer.h.orig 2022-05-11 07:16:48 UTC
++++ chrome/browser/safe_browsing/download_protection/file_analyzer.h
+@@ -16,7 +16,7 @@
+ #include "components/safe_browsing/core/common/proto/csd.pb.h"
+ #include "third_party/protobuf/src/google/protobuf/repeated_field.h"
+
+-#if defined(OS_LINUX) || defined(OS_WIN)
++#if defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
+ #include "chrome/services/file_util/public/cpp/sandboxed_document_analyzer.h"
+ #endif
+
+@@ -111,7 +111,7 @@ class FileAnalyzer {
+ const safe_browsing::ArchiveAnalyzerResults& archive_results);
+ #endif
+
+-#if defined(OS_LINUX) || defined(OS_WIN)
++#if defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
+ void StartExtractDocumentFeatures();
+ void OnDocumentAnalysisFinished(
+ const DocumentAnalyzerResults& document_results);
+@@ -131,7 +131,7 @@ class FileAnalyzer {
+ scoped_refptr<SandboxedDMGAnalyzer> dmg_analyzer_;
+ #endif
+
+-#if defined(OS_LINUX) || defined(OS_WIN)
++#if defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
+ scoped_refptr<SandboxedDocumentAnalyzer> document_analyzer_;
+ base::TimeTicks document_analysis_start_time_;
+ #endif
diff --git a/devel/electron17/files/patch-chrome_browser_safe__browsing_incident__reporting_incident__reporting__service.cc b/devel/electron17/files/patch-chrome_browser_safe__browsing_incident__reporting_incident__reporting__service.cc
new file mode 100644
index 000000000000..d1af0e45da21
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_safe__browsing_incident__reporting_incident__reporting__service.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/safe_browsing/incident_reporting/incident_reporting_service.cc.orig 2022-05-11 07:16:48 UTC
++++ chrome/browser/safe_browsing/incident_reporting/incident_reporting_service.cc
+@@ -709,7 +709,7 @@ void IncidentReportingService::OnEnvironmentDataCollec
+
+ // Process::Current().CreationTime() is missing on some platforms.
+ #if defined(OS_MAC) || defined(OS_WIN) || defined(OS_LINUX) || \
+- defined(OS_CHROMEOS)
++ defined(OS_CHROMEOS) || defined(OS_BSD)
+ base::TimeDelta uptime =
+ first_incident_time_ - base::Process::Current().CreationTime();
+ environment_data->mutable_process()->set_uptime_msec(uptime.InMilliseconds());
diff --git a/devel/electron17/files/patch-chrome_browser_send__tab__to__self_receiving__ui__handler__registry.cc b/devel/electron17/files/patch-chrome_browser_send__tab__to__self_receiving__ui__handler__registry.cc
new file mode 100644
index 000000000000..8c05f3d7b42f
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_send__tab__to__self_receiving__ui__handler__registry.cc
@@ -0,0 +1,29 @@
+--- chrome/browser/send_tab_to_self/receiving_ui_handler_registry.cc.orig 2022-05-11 07:16:48 UTC
++++ chrome/browser/send_tab_to_self/receiving_ui_handler_registry.cc
+@@ -16,7 +16,7 @@
+ #include "components/send_tab_to_self/features.h"
+
+ #if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC) || \
+- defined(OS_WIN) || defined(OS_FUCHSIA)
++ defined(OS_WIN) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ #include "chrome/browser/send_tab_to_self/desktop_notification_handler.h"
+ #include "chrome/browser/ui/send_tab_to_self/send_tab_to_self_toolbar_icon_controller.h"
+ #endif
+@@ -39,7 +39,7 @@ ReceivingUiHandlerRegistry* ReceivingUiHandlerRegistry
+ void ReceivingUiHandlerRegistry::InstantiatePlatformSpecificHandlers(
+ Profile* profile) {
+ #if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC) || \
+- defined(OS_WIN) || defined(OS_FUCHSIA)
++ defined(OS_WIN) || defined(OS_FUCHSIA) || defined(OS_BSD)
+
+ // If STTS 2.0 is enabled the handler will be created when the toolbar
+ // button registers itself as the delegate.
+@@ -59,7 +59,7 @@ SendTabToSelfToolbarIconController*
+ ReceivingUiHandlerRegistry::GetToolbarButtonControllerForProfile(
+ Profile* profile) {
+ #if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC) || \
+- defined(OS_WIN) || defined(OS_FUCHSIA)
++ defined(OS_WIN) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ for (const std::unique_ptr<ReceivingUiHandler>& handler :
+ applicable_handlers_) {
+ auto* button_controller =
diff --git a/devel/electron17/files/patch-chrome_browser_send__tab__to__self_send__tab__to__self__client__service.cc b/devel/electron17/files/patch-chrome_browser_send__tab__to__self_send__tab__to__self__client__service.cc
new file mode 100644
index 000000000000..b65d0ead30df
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_send__tab__to__self_send__tab__to__self__client__service.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/send_tab_to_self/send_tab_to_self_client_service.cc.orig 2022-05-11 07:16:48 UTC
++++ chrome/browser/send_tab_to_self/send_tab_to_self_client_service.cc
+@@ -17,7 +17,7 @@
+ #include "components/send_tab_to_self/send_tab_to_self_model.h"
+
+ #if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC) || \
+- defined(OS_WIN)
++ defined(OS_WIN) || defined(OS_BSD)
+ #include "chrome/browser/ui/send_tab_to_self/send_tab_to_self_toolbar_icon_controller.h"
+ #endif
+
+@@ -51,7 +51,7 @@ void SendTabToSelfClientService::EntriesAddedRemotely(
+ const std::vector<const SendTabToSelfEntry*>& new_entries) {
+ for (const std::unique_ptr<ReceivingUiHandler>& handler : GetHandlers()) {
+ #if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC) || \
+- defined(OS_WIN)
++ defined(OS_WIN) || defined(OS_BSD)
+ // Only respond to notifications corresponding to this service's profile
+ // for these OSes; mobile does not have a Profile.
+ // Cast note: on desktop, handlers are guaranteed to be the derived class
diff --git a/devel/electron17/files/patch-chrome_browser_sharing_sharing__device__registration.cc b/devel/electron17/files/patch-chrome_browser_sharing_sharing__device__registration.cc
new file mode 100644
index 000000000000..9b1de244de74
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_sharing_sharing__device__registration.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/sharing/sharing_device_registration.cc.orig 2022-05-11 07:16:48 UTC
++++ chrome/browser/sharing/sharing_device_registration.cc
+@@ -327,7 +327,7 @@ bool SharingDeviceRegistration::IsSmsFetcherSupported(
+
+ bool SharingDeviceRegistration::IsRemoteCopySupported() const {
+ #if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || \
+- defined(OS_CHROMEOS)
++ defined(OS_CHROMEOS) || defined(OS_BSD)
+ return true;
+ #else
+ return false;
diff --git a/devel/electron17/files/patch-chrome_browser_sharing_sharing__handler__registry__impl.cc b/devel/electron17/files/patch-chrome_browser_sharing_sharing__handler__registry__impl.cc
new file mode 100644
index 000000000000..c1b46926b7a7
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_sharing_sharing__handler__registry__impl.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/sharing/sharing_handler_registry_impl.cc.orig 2022-05-11 07:16:48 UTC
++++ chrome/browser/sharing/sharing_handler_registry_impl.cc
+@@ -24,7 +24,7 @@
+ #endif // defined(OS_ANDROID)
+
+ #if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || \
+- defined(OS_CHROMEOS)
++ defined(OS_CHROMEOS) || defined(OS_BSD)
+ #include "chrome/browser/sharing/shared_clipboard/remote_copy_message_handler.h"
+ #endif // defined(OS_WIN) || defined(OS_MAC) || (defined(OS_LINUX) ||
+ // BUILDFLAG(IS_CHROMEOS_LACROS)) defined(OS_CHROMEOS)
+@@ -77,7 +77,7 @@ SharingHandlerRegistryImpl::SharingHandlerRegistryImpl
+ }
+
+ #if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || \
+- defined(OS_CHROMEOS)
++ defined(OS_CHROMEOS) || defined(OS_BSD)
+ if (sharing_device_registration->IsRemoteCopySupported()) {
+ AddSharingHandler(
+ std::make_unique<RemoteCopyMessageHandler>(profile),
diff --git a/devel/electron17/files/patch-chrome_browser_shutdown__signal__handlers__posix.cc b/devel/electron17/files/patch-chrome_browser_shutdown__signal__handlers__posix.cc
new file mode 100644
index 000000000000..0b05cfe186c3
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_shutdown__signal__handlers__posix.cc
@@ -0,0 +1,21 @@
+--- chrome/browser/shutdown_signal_handlers_posix.cc.orig 2022-05-11 07:00:30 UTC
++++ chrome/browser/shutdown_signal_handlers_posix.cc
+@@ -187,12 +187,18 @@ void InstallShutdownSignalHandlers(
+ g_pipe_pid = getpid();
+ g_shutdown_pipe_read_fd = pipefd[0];
+ g_shutdown_pipe_write_fd = pipefd[1];
++#if defined(OS_BSD)
++ // PTHREAD_STACK_MIN causes chromium to crash under *BSD,
++ // we request the default pthread stack size by specifying 0 here.
++ const size_t kShutdownDetectorThreadStackSize = 0;
++#else
+ #if !defined(ADDRESS_SANITIZER)
+ const size_t kShutdownDetectorThreadStackSize = PTHREAD_STACK_MIN * 2;
+ #else
+ // ASan instrumentation bloats the stack frames, so we need to increase the
+ // stack size to avoid hitting the guard page.
+ const size_t kShutdownDetectorThreadStackSize = PTHREAD_STACK_MIN * 4;
++#endif
+ #endif
+ ShutdownDetector* detector = new ShutdownDetector(
+ g_shutdown_pipe_read_fd, std::move(shutdown_callback), task_runner);
diff --git a/devel/electron17/files/patch-chrome_browser_signin_signin__util.cc b/devel/electron17/files/patch-chrome_browser_signin_signin__util.cc
new file mode 100644
index 000000000000..404898af9623
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_signin_signin__util.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/signin/signin_util.cc.orig 2022-05-11 07:16:48 UTC
++++ chrome/browser/signin/signin_util.cc
+@@ -40,7 +40,7 @@
+ #include "ui/base/l10n/l10n_util.h"
+
+ #if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) || \
+- defined(OS_MAC)
++ defined(OS_MAC) || defined(OS_BSD)
+ #include "chrome/browser/ui/browser_finder.h"
+ #include "chrome/browser/ui/browser_list.h"
+ #include "chrome/browser/ui/browser_list_observer.h"
diff --git a/devel/electron17/files/patch-chrome_browser_sync_chrome__sync__client.cc b/devel/electron17/files/patch-chrome_browser_sync_chrome__sync__client.cc
new file mode 100644
index 000000000000..408b55cee7b8
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_sync_chrome__sync__client.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/sync/chrome_sync_client.cc.orig 2022-05-11 07:16:48 UTC
++++ chrome/browser/sync/chrome_sync_client.cc
+@@ -462,7 +462,7 @@ ChromeSyncClient::CreateDataTypeControllers(syncer::Sy
+
+ // Chrome prefers OS provided spell checkers where they exist. So only sync the
+ // custom dictionary on platforms that typically don't provide one.
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_WIN)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_WIN) || defined(OS_BSD)
+ // Dictionary sync is enabled by default.
+ if (!disabled_types.Has(syncer::DICTIONARY) &&
+ GetPrefService()->GetBoolean(spellcheck::prefs::kSpellCheckEnable)) {
diff --git a/devel/electron17/files/patch-chrome_browser_sync_device__info__sync__client__impl.cc b/devel/electron17/files/patch-chrome_browser_sync_device__info__sync__client__impl.cc
new file mode 100644
index 000000000000..c3f270b29077
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_sync_device__info__sync__client__impl.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/sync/device_info_sync_client_impl.cc.orig 2022-05-11 07:16:48 UTC
++++ chrome/browser/sync/device_info_sync_client_impl.cc
+@@ -38,7 +38,7 @@ std::string DeviceInfoSyncClientImpl::GetSigninScopedD
+ // in lacros-chrome once build flag switch of lacros-chrome is
+ // complete.
+ #if defined(OS_WIN) || defined(OS_MAC) || \
+- (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
++ (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD))
+ syncer::SyncPrefs prefs(profile_->GetPrefs());
+ if (prefs.IsLocalSyncEnabled()) {
+ return "local_device";
diff --git a/devel/electron17/files/patch-chrome_browser_task__manager_sampling_task__group.cc b/devel/electron17/files/patch-chrome_browser_task__manager_sampling_task__group.cc
new file mode 100644
index 000000000000..40c9de3d735a
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_task__manager_sampling_task__group.cc
@@ -0,0 +1,38 @@
+--- chrome/browser/task_manager/sampling/task_group.cc.orig 2022-05-11 07:16:48 UTC
++++ chrome/browser/task_manager/sampling/task_group.cc
+@@ -37,7 +37,7 @@ const int kBackgroundRefreshTypesMask =
+ #if defined(OS_WIN)
+ REFRESH_TYPE_START_TIME | REFRESH_TYPE_CPU_TIME |
+ #endif // defined(OS_WIN)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC) || defined(OS_BSD)
+ REFRESH_TYPE_FD_COUNT |
+ #endif // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC)
+ #if BUILDFLAG(ENABLE_NACL)
+@@ -122,7 +122,7 @@ TaskGroup::TaskGroup(
+ #if BUILDFLAG(ENABLE_NACL)
+ nacl_debug_stub_port_(nacl::kGdbDebugStubPortUnknown),
+ #endif // BUILDFLAG(ENABLE_NACL)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC) || defined(OS_BSD)
+ open_fd_count_(-1),
+ #endif // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC)
+ idle_wakeups_per_second_(-1),
+@@ -141,7 +141,7 @@ TaskGroup::TaskGroup(
+ weak_ptr_factory_.GetWeakPtr()),
+ base::BindRepeating(&TaskGroup::OnIdleWakeupsRefreshDone,
+ weak_ptr_factory_.GetWeakPtr()),
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC) || defined(OS_BSD)
+ base::BindRepeating(&TaskGroup::OnOpenFdCountRefreshDone,
+ weak_ptr_factory_.GetWeakPtr()),
+ #endif // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC)
+@@ -321,7 +321,7 @@ void TaskGroup::OnRefreshNaClDebugStubPortDone(int nac
+ }
+ #endif // BUILDFLAG(ENABLE_NACL)
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC) || defined(OS_BSD)
+ void TaskGroup::OnOpenFdCountRefreshDone(int open_fd_count) {
+ DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
+
diff --git a/devel/electron17/files/patch-chrome_browser_task__manager_sampling_task__group.h b/devel/electron17/files/patch-chrome_browser_task__manager_sampling_task__group.h
new file mode 100644
index 000000000000..ea9e1eda0ca1
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_task__manager_sampling_task__group.h
@@ -0,0 +1,38 @@
+--- chrome/browser/task_manager/sampling/task_group.h.orig 2022-05-11 07:16:48 UTC
++++ chrome/browser/task_manager/sampling/task_group.h
+@@ -42,7 +42,7 @@ constexpr int kUnsupportedVMRefreshFlags =
+ REFRESH_TYPE_WEBCACHE_STATS | REFRESH_TYPE_NETWORK_USAGE |
+ REFRESH_TYPE_NACL | REFRESH_TYPE_IDLE_WAKEUPS | REFRESH_TYPE_HANDLES |
+ REFRESH_TYPE_START_TIME | REFRESH_TYPE_CPU_TIME | REFRESH_TYPE_PRIORITY |
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC) || defined(OS_BSD)
+ REFRESH_TYPE_FD_COUNT |
+ #endif
+ REFRESH_TYPE_HARD_FAULTS;
+@@ -148,7 +148,7 @@ class TaskGroup {
+ }
+ #endif // BUILDFLAG(ENABLE_NACL)
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC) || defined(OS_BSD)
+ int open_fd_count() const { return open_fd_count_; }
+ void set_open_fd_count(int open_fd_count) { open_fd_count_ = open_fd_count; }
+ #endif // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC)
+@@ -168,7 +168,7 @@ class TaskGroup {
+ void RefreshNaClDebugStubPort(int child_process_unique_id);
+ void OnRefreshNaClDebugStubPortDone(int port);
+ #endif
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC) || defined(OS_BSD)
+ void OnOpenFdCountRefreshDone(int open_fd_count);
+ #endif // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC)
+
+@@ -240,7 +240,7 @@ class TaskGroup {
+ #if BUILDFLAG(ENABLE_NACL)
+ int nacl_debug_stub_port_;
+ #endif // BUILDFLAG(ENABLE_NACL)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC) || defined(OS_BSD)
+ // The number of file descriptors currently open by the process.
+ int open_fd_count_;
+ #endif // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC)
diff --git a/devel/electron17/files/patch-chrome_browser_task__manager_sampling_task__group__sampler.cc b/devel/electron17/files/patch-chrome_browser_task__manager_sampling_task__group__sampler.cc
new file mode 100644
index 000000000000..30e51ad6a4e1
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_task__manager_sampling_task__group__sampler.cc
@@ -0,0 +1,47 @@
+--- chrome/browser/task_manager/sampling/task_group_sampler.cc.orig 2022-05-11 07:16:48 UTC
++++ chrome/browser/task_manager/sampling/task_group_sampler.cc
+@@ -44,7 +44,7 @@ TaskGroupSampler::TaskGroupSampler(
+ const OnCpuRefreshCallback& on_cpu_refresh,
+ const OnSwappedMemRefreshCallback& on_swapped_mem_refresh,
+ const OnIdleWakeupsCallback& on_idle_wakeups,
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC) || defined(OS_BSD)
+ const OnOpenFdCountCallback& on_open_fd_count,
+ #endif // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC)
+ const OnProcessPriorityCallback& on_process_priority)
+@@ -54,7 +54,7 @@ TaskGroupSampler::TaskGroupSampler(
+ on_cpu_refresh_callback_(on_cpu_refresh),
+ on_swapped_mem_refresh_callback_(on_swapped_mem_refresh),
+ on_idle_wakeups_callback_(on_idle_wakeups),
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC) || defined(OS_BSD)
+ on_open_fd_count_callback_(on_open_fd_count),
+ #endif // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC)
+ on_process_priority_callback_(on_process_priority) {
+@@ -86,7 +86,7 @@ void TaskGroupSampler::Refresh(int64_t refresh_flags)
+ base::BindOnce(on_swapped_mem_refresh_callback_));
+ }
+
+-#if defined(OS_MAC) || defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_MAC) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ if (TaskManagerObserver::IsResourceRefreshEnabled(REFRESH_TYPE_IDLE_WAKEUPS,
+ refresh_flags)) {
+ base::PostTaskAndReplyWithResult(
+@@ -96,7 +96,7 @@ void TaskGroupSampler::Refresh(int64_t refresh_flags)
+ }
+ #endif // defined(OS_MAC) || defined(OS_LINUX) || defined(OS_CHROMEOS)
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC) || defined(OS_BSD)
+ if (TaskManagerObserver::IsResourceRefreshEnabled(REFRESH_TYPE_FD_COUNT,
+ refresh_flags)) {
+ base::PostTaskAndReplyWithResult(
+@@ -146,7 +146,7 @@ int TaskGroupSampler::RefreshIdleWakeupsPerSecond() {
+ return process_metrics_->GetIdleWakeupsPerSecond();
+ }
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC) || defined(OS_BSD)
+ int TaskGroupSampler::RefreshOpenFdCount() {
+ DCHECK(worker_pool_sequenced_checker_.CalledOnValidSequence());
+
diff --git a/devel/electron17/files/patch-chrome_browser_task__manager_sampling_task__group__sampler.h b/devel/electron17/files/patch-chrome_browser_task__manager_sampling_task__group__sampler.h
new file mode 100644
index 000000000000..54c9d6f01450
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_task__manager_sampling_task__group__sampler.h
@@ -0,0 +1,38 @@
+--- chrome/browser/task_manager/sampling/task_group_sampler.h.orig 2022-05-11 07:16:48 UTC
++++ chrome/browser/task_manager/sampling/task_group_sampler.h
+@@ -31,7 +31,7 @@ class TaskGroupSampler : public base::RefCountedThread
+ using OnCpuRefreshCallback = base::RepeatingCallback<void(double)>;
+ using OnSwappedMemRefreshCallback = base::RepeatingCallback<void(int64_t)>;
+ using OnIdleWakeupsCallback = base::RepeatingCallback<void(int)>;
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC) || defined(OS_BSD)
+ using OnOpenFdCountCallback = base::RepeatingCallback<void(int)>;
+ #endif // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC)
+ using OnProcessPriorityCallback = base::RepeatingCallback<void(bool)>;
+@@ -42,7 +42,7 @@ class TaskGroupSampler : public base::RefCountedThread
+ const OnCpuRefreshCallback& on_cpu_refresh,
+ const OnSwappedMemRefreshCallback& on_memory_refresh,
+ const OnIdleWakeupsCallback& on_idle_wakeups,
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC) || defined(OS_BSD)
+ const OnOpenFdCountCallback& on_open_fd_count,
+ #endif // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC)
+ const OnProcessPriorityCallback& on_process_priority);
+@@ -62,7 +62,7 @@ class TaskGroupSampler : public base::RefCountedThread
+ double RefreshCpuUsage();
+ int64_t RefreshSwappedMem();
+ int RefreshIdleWakeupsPerSecond();
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC) || defined(OS_BSD)
+ int RefreshOpenFdCount();
+ #endif // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC)
+ bool RefreshProcessPriority();
+@@ -86,7 +86,7 @@ class TaskGroupSampler : public base::RefCountedThread
+ const OnCpuRefreshCallback on_cpu_refresh_callback_;
+ const OnSwappedMemRefreshCallback on_swapped_mem_refresh_callback_;
+ const OnIdleWakeupsCallback on_idle_wakeups_callback_;
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC) || defined(OS_BSD)
+ const OnOpenFdCountCallback on_open_fd_count_callback_;
+ #endif // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC)
+ const OnProcessPriorityCallback on_process_priority_callback_;
diff --git a/devel/electron17/files/patch-chrome_browser_task__manager_sampling_task__manager__impl.cc b/devel/electron17/files/patch-chrome_browser_task__manager_sampling_task__manager__impl.cc
new file mode 100644
index 000000000000..b307256d1d94
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_task__manager_sampling_task__manager__impl.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/task_manager/sampling/task_manager_impl.cc.orig 2022-05-11 07:16:48 UTC
++++ chrome/browser/task_manager/sampling/task_manager_impl.cc
+@@ -217,7 +217,7 @@ void TaskManagerImpl::GetUSERHandles(TaskId task_id,
+ }
+
+ int TaskManagerImpl::GetOpenFdCount(TaskId task_id) const {
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC) || defined(OS_BSD)
+ return GetTaskGroupByTaskId(task_id)->open_fd_count();
+ #else
+ return -1;
diff --git a/devel/electron17/files/patch-chrome_browser_task__manager_task__manager__observer.h b/devel/electron17/files/patch-chrome_browser_task__manager_task__manager__observer.h
new file mode 100644
index 000000000000..8551f0d2380f
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_task__manager_task__manager__observer.h
@@ -0,0 +1,11 @@
+--- chrome/browser/task_manager/task_manager_observer.h.orig 2022-05-11 07:16:48 UTC
++++ chrome/browser/task_manager/task_manager_observer.h
+@@ -47,7 +47,7 @@ enum RefreshType {
+ // or backgrounded.
+ REFRESH_TYPE_PRIORITY = 1 << 13,
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC) || defined(OS_BSD)
+ // For observers interested in getting the number of open file descriptors of
+ // processes.
+ REFRESH_TYPE_FD_COUNT = 1 << 14,
diff --git a/devel/electron17/files/patch-chrome_browser_themes_theme__helper.cc b/devel/electron17/files/patch-chrome_browser_themes_theme__helper.cc
new file mode 100644
index 000000000000..3ac9fbcaa1e7
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_themes_theme__helper.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/themes/theme_helper.cc.orig 2022-05-11 07:16:48 UTC
++++ chrome/browser/themes/theme_helper.cc
+@@ -334,7 +334,7 @@ bool ThemeHelper::ShouldUseIncreasedContrastThemeSuppl
+ ui::NativeTheme* native_theme) const {
+ // TODO(crbug.com/1052397): Revisit once build flag switch of lacros-chrome is
+ // complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ // On Linux the GTK system theme provides the high contrast colors,
+ // so don't use the IncreasedContrastThemeSupplier.
+ return false;
diff --git a/devel/electron17/files/patch-chrome_browser_themes_theme__service__factory.cc b/devel/electron17/files/patch-chrome_browser_themes_theme__service__factory.cc
new file mode 100644
index 000000000000..270fa29f159f
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_themes_theme__service__factory.cc
@@ -0,0 +1,29 @@
+--- chrome/browser/themes/theme_service_factory.cc.orig 2021-04-14 01:08:41 UTC
++++ chrome/browser/themes/theme_service_factory.cc
+@@ -25,7 +25,7 @@
+
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ #include "chrome/browser/themes/theme_service_aura_linux.h"
+ #include "ui/views/linux_ui/linux_ui.h"
+ #endif
+@@ -82,7 +82,7 @@ KeyedService* ThemeServiceFactory::BuildServiceInstanc
+ content::BrowserContext* profile) const {
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ using ThemeService = ThemeServiceAuraLinux;
+ #endif
+
+@@ -96,7 +96,7 @@ void ThemeServiceFactory::RegisterProfilePrefs(
+ user_prefs::PrefRegistrySyncable* registry) {
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ bool default_uses_system_theme = false;
+
+ const views::LinuxUI* linux_ui = views::LinuxUI::instance();
diff --git a/devel/electron17/files/patch-chrome_browser_ui_browser__command__controller.cc b/devel/electron17/files/patch-chrome_browser_ui_browser__command__controller.cc
new file mode 100644
index 000000000000..04c100b7c377
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_ui_browser__command__controller.cc
@@ -0,0 +1,38 @@
+--- chrome/browser/ui/browser_command_controller.cc.orig 2022-05-11 07:16:49 UTC
++++ chrome/browser/ui/browser_command_controller.cc
+@@ -88,7 +88,7 @@
+
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ #include "ui/base/ime/linux/text_edit_key_bindings_delegate_auralinux.h"
+ #endif
+
+@@ -274,7 +274,7 @@ bool BrowserCommandController::IsReservedCommandOrKey(
+
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ // If this key was registered by the user as a content editing hotkey, then
+ // it is not reserved.
+ ui::TextEditKeyBindingsDelegateAuraLinux* delegate =
+@@ -510,7 +510,7 @@ bool BrowserCommandController::ExecuteCommandWithDispo
+
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ case IDC_MINIMIZE_WINDOW:
+ browser_->window()->Minimize();
+ break;
+@@ -1026,7 +1026,7 @@ void BrowserCommandController::InitCommandState() {
+ #endif
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ command_updater_.UpdateCommandEnabled(IDC_MINIMIZE_WINDOW, true);
+ command_updater_.UpdateCommandEnabled(IDC_MAXIMIZE_WINDOW, true);
+ command_updater_.UpdateCommandEnabled(IDC_RESTORE_WINDOW, true);
diff --git a/devel/electron17/files/patch-chrome_browser_ui_browser__dialogs.h b/devel/electron17/files/patch-chrome_browser_ui_browser__dialogs.h
new file mode 100644
index 000000000000..f80e4ec105ce
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_ui_browser__dialogs.h
@@ -0,0 +1,29 @@
+--- chrome/browser/ui/browser_dialogs.h.orig 2022-05-11 07:16:49 UTC
++++ chrome/browser/ui/browser_dialogs.h
+@@ -26,7 +26,7 @@
+ #include "ui/base/models/dialog_model.h"
+ #include "ui/gfx/native_widget_types.h"
+
+-#if defined(OS_WIN) || defined(OS_MAC) || \
++#if defined(OS_WIN) || defined(OS_MAC) || defined(OS_BSD) || \
+ (defined(OS_LINUX) && !BUILDFLAG(IS_CHROMEOS_LACROS))
+ #include "chrome/browser/web_applications/web_app_id.h"
+ #endif
+@@ -80,7 +80,7 @@ class WebDialogDelegate;
+ struct SelectedFileInfo;
+ } // namespace ui
+
+-#if defined(OS_WIN) || defined(OS_MAC) || \
++#if defined(OS_WIN) || defined(OS_MAC) || defined(OS_BSD) || \
+ (defined(OS_LINUX) && !BUILDFLAG(IS_CHROMEOS_LACROS))
+ namespace web_app {
+ struct UrlHandlerLaunchParams;
+@@ -207,7 +207,7 @@ void ShowWebAppFileLaunchDialog(const std::vector<base
+ WebAppLaunchAcceptanceCallback close_callback);
+ #endif // !defined(OS_ANDROID)
+
+-#if defined(OS_WIN) || defined(OS_MAC) || \
++#if defined(OS_WIN) || defined(OS_MAC) || defined(OS_BSD) || \
+ (defined(OS_LINUX) && !BUILDFLAG(IS_CHROMEOS_LACROS))
+ // Callback that runs when the Web App URL Handler Intent Picker dialog is
+ // closed. `accepted` is true when the dialog is accepted, false otherwise.
diff --git a/devel/electron17/files/patch-chrome_browser_ui_browser__view__prefs.cc b/devel/electron17/files/patch-chrome_browser_ui_browser__view__prefs.cc
new file mode 100644
index 000000000000..a080007ae7a5
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_ui_browser__view__prefs.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/ui/browser_view_prefs.cc.orig 2022-05-11 07:16:49 UTC
++++ chrome/browser/ui/browser_view_prefs.cc
+@@ -17,7 +17,7 @@ namespace {
+
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ bool GetCustomFramePrefDefault() {
+ #if defined(USE_OZONE)
+ return ui::OzonePlatform::GetInstance()
+@@ -35,7 +35,7 @@ void RegisterBrowserViewProfilePrefs(
+ user_prefs::PrefRegistrySyncable* registry) {
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ registry->RegisterBooleanPref(prefs::kUseCustomChromeFrame,
+ GetCustomFramePrefDefault());
+ #endif // (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) &&
diff --git a/devel/electron17/files/patch-chrome_browser_ui_exclusive__access_exclusive__access__bubble.cc b/devel/electron17/files/patch-chrome_browser_ui_exclusive__access_exclusive__access__bubble.cc
new file mode 100644
index 000000000000..35b57e65d20c
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_ui_exclusive__access_exclusive__access__bubble.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/exclusive_access/exclusive_access_bubble.cc.orig 2021-01-07 00:36:24 UTC
++++ chrome/browser/ui/exclusive_access/exclusive_access_bubble.cc
+@@ -16,7 +16,7 @@
+
+ // NOTE(koz): Linux doesn't use the thick shadowed border, so we add padding
+ // here.
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ const int ExclusiveAccessBubble::kPaddingPx = 8;
+ #else
+ const int ExclusiveAccessBubble::kPaddingPx = 15;
diff --git a/devel/electron17/files/patch-chrome_browser_ui_sad__tab.cc b/devel/electron17/files/patch-chrome_browser_ui_sad__tab.cc
new file mode 100644
index 000000000000..e3f469ba0fc1
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_ui_sad__tab.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/sad_tab.cc.orig 2022-05-11 07:16:49 UTC
++++ chrome/browser/ui/sad_tab.cc
+@@ -188,7 +188,7 @@ std::vector<int> SadTab::GetSubMessages() {
+ // Only show Incognito suggestion if not already in Incognito mode.
+ if (!web_contents_->GetBrowserContext()->IsOffTheRecord())
+ message_ids.insert(message_ids.begin(), IDS_SAD_TAB_RELOAD_INCOGNITO);
+-#if defined(OS_MAC) || defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_MAC) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // Note: on macOS, Linux and ChromeOS, the first bullet is either one of
+ // IDS_SAD_TAB_RELOAD_CLOSE_TABS or IDS_SAD_TAB_RELOAD_CLOSE_NOTABS
+ // followed by one of the above suggestions.
diff --git a/devel/electron17/files/patch-chrome_browser_ui_signin__view__controller.cc b/devel/electron17/files/patch-chrome_browser_ui_signin__view__controller.cc
new file mode 100644
index 000000000000..e5b0700655a8
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_ui_signin__view__controller.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/signin_view_controller.cc.orig 2022-05-11 07:16:49 UTC
++++ chrome/browser/ui/signin_view_controller.cc
+@@ -242,7 +242,7 @@ void SigninViewController::ShowModalEnterpriseConfirma
+ SkColor profile_color,
+ base::OnceCallback<void(bool)> callback) {
+ #if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || \
+- BUILDFLAG(IS_CHROMEOS_LACROS)
++ BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ CloseModalSignin();
+ // The delegate will delete itself on request of the UI code when the widget
+ // is closed.
diff --git a/devel/electron17/files/patch-chrome_browser_ui_signin__view__controller__delegate.h b/devel/electron17/files/patch-chrome_browser_ui_signin__view__controller__delegate.h
new file mode 100644
index 000000000000..b0063a30a9cc
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_ui_signin__view__controller__delegate.h
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/signin_view_controller_delegate.h.orig 2022-05-11 07:16:49 UTC
++++ chrome/browser/ui/signin_view_controller_delegate.h
+@@ -64,7 +64,7 @@ class SigninViewControllerDelegate {
+ signin_metrics::ReauthAccessPoint access_point);
+
+ #if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || \
+- BUILDFLAG(IS_CHROMEOS_LACROS)
++ BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ // Returns a platform-specific SigninViewContolllerDelegate instance that
+ // displays the enterprise confirmation modal dialog. The returned object
+ // should delete itself when the window it's managing is closed.
diff --git a/devel/electron17/files/patch-chrome_browser_ui_signin_dice__web__signin__interceptor__delegate.cc b/devel/electron17/files/patch-chrome_browser_ui_signin_dice__web__signin__interceptor__delegate.cc
new file mode 100644
index 000000000000..8891b7ebc047
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_ui_signin_dice__web__signin__interceptor__delegate.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/signin/dice_web_signin_interceptor_delegate.cc.orig 2022-05-11 07:16:49 UTC
++++ chrome/browser/ui/signin/dice_web_signin_interceptor_delegate.cc
+@@ -59,7 +59,7 @@ class ForcedEnterpriseSigninInterceptionHandle
+ void ShowEnterpriseProfileInterceptionDialog(const AccountInfo& account_info,
+ SkColor profile_color) {
+ #if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || \
+- BUILDFLAG(IS_CHROMEOS_LACROS)
++ BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ if (base::FeatureList::IsEnabled(kAccountPoliciesLoadedWithoutSync)) {
+ browser_->signin_view_controller()->ShowModalEnterpriseConfirmationDialog(
+ account_info, profile_color,
diff --git a/devel/electron17/files/patch-chrome_browser_ui_startup_bad__flags__prompt.cc b/devel/electron17/files/patch-chrome_browser_ui_startup_bad__flags__prompt.cc
new file mode 100644
index 000000000000..383ab813953c
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_ui_startup_bad__flags__prompt.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/startup/bad_flags_prompt.cc.orig 2021-10-08 06:25:41 UTC
++++ chrome/browser/ui/startup/bad_flags_prompt.cc
+@@ -95,7 +95,7 @@ static const char* kBadFlags[] = {
+
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ // Speech dispatcher is buggy, it can crash and it can make Chrome freeze.
+ // http://crbug.com/327295
+ switches::kEnableSpeechDispatcher,
diff --git a/devel/electron17/files/patch-chrome_browser_ui_startup_startup__browser__creator.cc b/devel/electron17/files/patch-chrome_browser_ui_startup_startup__browser__creator.cc
new file mode 100644
index 000000000000..991086d06ace
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_ui_startup_startup__browser__creator.cc
@@ -0,0 +1,38 @@
+--- chrome/browser/ui/startup/startup_browser_creator.cc.orig 2022-05-11 07:16:49 UTC
++++ chrome/browser/ui/startup/startup_browser_creator.cc
+@@ -124,7 +124,7 @@
+ #endif // BUILDFLAG(ENABLE_PRINT_PREVIEW)
+ #endif // defined(OS_WIN)
+
+-#if defined(OS_WIN) || defined(OS_MAC) || \
++#if defined(OS_WIN) || defined(OS_MAC) || defined(OS_BSD) || \
+ (defined(OS_LINUX) && !BUILDFLAG(IS_CHROMEOS_LACROS))
+ #include "chrome/browser/ui/startup/web_app_url_handling_startup_utils.h"
+ #endif
+@@ -403,7 +403,7 @@ bool MaybeLaunchAppShortcutWindow(const base::CommandL
+ return false;
+ }
+
+-#if defined(OS_WIN) || (defined(OS_LINUX) && !BUILDFLAG(IS_CHROMEOS_LACROS))
++#if defined(OS_WIN) || (defined(OS_LINUX) && !BUILDFLAG(IS_CHROMEOS_LACROS)) || defined(OS_BSD)
+ bool MaybeLaunchUrlHandlerWebAppFromCmd(
+ const base::CommandLine& command_line,
+ const base::FilePath& cur_dir,
+@@ -1038,7 +1038,7 @@ bool StartupBrowserCreator::ProcessCmdLineImpl(
+
+ if (command_line.HasSwitch(switches::kAppId)) {
+ std::string app_id = command_line.GetSwitchValueASCII(switches::kAppId);
+-#if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || defined(OS_BSD)
+ // If Chrome Apps are deprecated and |app_id| is a Chrome App, display the
+ // deprecation UI instead of launching the app.
+ if (apps::OpenDeprecatedApplicationPrompt(privacy_safe_profile, app_id))
+@@ -1074,7 +1074,7 @@ bool StartupBrowserCreator::ProcessCmdLineImpl(
+ web_app::startup::MaybeHandleWebAppLaunch(
+ command_line, cur_dir, privacy_safe_profile, is_first_run);
+
+-#if defined(OS_WIN) || (defined(OS_LINUX) && !BUILDFLAG(IS_CHROMEOS_LACROS))
++#if defined(OS_WIN) || (defined(OS_LINUX) && !BUILDFLAG(IS_CHROMEOS_LACROS)) || defined(OS_BSD)
+ handled_as_app = handled_as_app ||
+ // Give web apps a chance to handle a URL.
+ MaybeLaunchUrlHandlerWebAppFromCmd(
diff --git a/devel/electron17/files/patch-chrome_browser_ui_tab__helpers.cc b/devel/electron17/files/patch-chrome_browser_ui_tab__helpers.cc
new file mode 100644
index 000000000000..92509369266e
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_ui_tab__helpers.cc
@@ -0,0 +1,36 @@
+--- chrome/browser/ui/tab_helpers.cc.orig 2022-05-11 07:16:49 UTC
++++ chrome/browser/ui/tab_helpers.cc
+@@ -175,7 +175,7 @@
+ #endif
+
+ #if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || \
+- defined(OS_CHROMEOS) || defined(OS_FUCHSIA)
++ defined(OS_CHROMEOS) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ #include "chrome/browser/ui/blocked_content/framebust_block_tab_helper.h"
+ #include "chrome/browser/ui/browser_finder.h"
+ #include "chrome/browser/ui/hats/hats_helper.h"
+@@ -479,13 +479,13 @@ void TabHelpers::AttachTabHelpers(WebContents* web_con
+
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_WIN) || defined(OS_MAC) || \
++#if defined(OS_WIN) || defined(OS_MAC) || defined(OS_BSD) || \
+ (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
+ metrics::DesktopSessionDurationObserver::CreateForWebContents(web_contents);
+ #endif
+
+ #if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || \
+- defined(OS_CHROMEOS)
++ defined(OS_CHROMEOS) || defined(OS_BSD)
+ if (base::FeatureList::IsEnabled(
+ features::kHappinessTrackingSurveysForDesktopDemo) ||
+ base::FeatureList::IsEnabled(features::kTrustSafetySentimentSurvey) ||
+@@ -496,7 +496,7 @@ void TabHelpers::AttachTabHelpers(WebContents* web_con
+ #endif
+
+ #if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || \
+- defined(OS_CHROMEOS)
++ defined(OS_CHROMEOS) || defined(OS_BSD)
+ if (Browser* browser = chrome::FindBrowserWithProfile(profile)) {
+ SharedHighlightingPromo::CreateForWebContents(web_contents, browser);
+ }
diff --git a/devel/electron17/files/patch-chrome_browser_ui_task__manager_task__manager__columns.cc b/devel/electron17/files/patch-chrome_browser_ui_task__manager_task__manager__columns.cc
new file mode 100644
index 000000000000..fbd34248e415
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_ui_task__manager_task__manager__columns.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/task_manager/task_manager_columns.cc.orig 2022-05-11 07:16:49 UTC
++++ chrome/browser/ui/task_manager/task_manager_columns.cc
+@@ -94,7 +94,7 @@ const TableColumnData kColumns[] = {
+ base::size("100000") * kCharWidth, -1, true, false, false},
+ #endif
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC) || defined(OS_BSD)
+ {IDS_TASK_MANAGER_OPEN_FD_COUNT_COLUMN, ui::TableColumn::RIGHT, -1, 0,
+ base::size("999") * kCharWidth, -1, true, false, false},
+ #endif // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC)
diff --git a/devel/electron17/files/patch-chrome_browser_ui_task__manager_task__manager__table__model.cc b/devel/electron17/files/patch-chrome_browser_ui_task__manager_task__manager__table__model.cc
new file mode 100644
index 000000000000..1083fb500586
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_ui_task__manager_task__manager__table__model.cc
@@ -0,0 +1,29 @@
+--- chrome/browser/ui/task_manager/task_manager_table_model.cc.orig 2022-05-11 07:16:49 UTC
++++ chrome/browser/ui/task_manager/task_manager_table_model.cc
+@@ -451,7 +451,7 @@ std::u16string TaskManagerTableModel::GetText(int row,
+ ? stringifier_->backgrounded_string()
+ : stringifier_->foregrounded_string();
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC) || defined(OS_BSD)
+ case IDS_TASK_MANAGER_OPEN_FD_COUNT_COLUMN: {
+ const int fd_count = observed_task_manager()->GetOpenFdCount(tasks_[row]);
+ return fd_count >= 0 ? base::FormatNumber(fd_count)
+@@ -618,7 +618,7 @@ int TaskManagerTableModel::CompareValues(int row1,
+ return BooleanCompare(is_proc1_bg, is_proc2_bg);
+ }
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC) || defined(OS_BSD)
+ case IDS_TASK_MANAGER_OPEN_FD_COUNT_COLUMN: {
+ const int proc1_fd_count =
+ observed_task_manager()->GetOpenFdCount(tasks_[row1]);
+@@ -792,7 +792,7 @@ void TaskManagerTableModel::UpdateRefreshTypes(int col
+ type = REFRESH_TYPE_KEEPALIVE_COUNT;
+ break;
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC) || defined(OS_BSD)
+ case IDS_TASK_MANAGER_OPEN_FD_COUNT_COLUMN:
+ type = REFRESH_TYPE_FD_COUNT;
+ break;
diff --git a/devel/electron17/files/patch-chrome_browser_ui_views_accelerator__table.cc b/devel/electron17/files/patch-chrome_browser_ui_views_accelerator__table.cc
new file mode 100644
index 000000000000..7b624f656c6c
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_ui_views_accelerator__table.cc
@@ -0,0 +1,29 @@
+--- chrome/browser/ui/views/accelerator_table.cc.orig 2022-05-11 07:16:49 UTC
++++ chrome/browser/ui/views/accelerator_table.cc
+@@ -62,7 +62,7 @@ const AcceleratorMapping kAcceleratorMap[] = {
+ {ui::VKEY_NUMPAD9, ui::EF_PLATFORM_ACCELERATOR, IDC_SELECT_LAST_TAB},
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ {ui::VKEY_9, ui::EF_ALT_DOWN, IDC_SELECT_LAST_TAB},
+ {ui::VKEY_NUMPAD9, ui::EF_ALT_DOWN, IDC_SELECT_LAST_TAB},
+ {ui::VKEY_NEXT, ui::EF_CONTROL_DOWN | ui::EF_SHIFT_DOWN, IDC_MOVE_TAB_NEXT},
+@@ -94,7 +94,7 @@ const AcceleratorMapping kAcceleratorMap[] = {
+ {ui::VKEY_NUMPAD8, ui::EF_PLATFORM_ACCELERATOR, IDC_SELECT_TAB_7},
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ {ui::VKEY_1, ui::EF_ALT_DOWN, IDC_SELECT_TAB_0},
+ {ui::VKEY_NUMPAD1, ui::EF_ALT_DOWN, IDC_SELECT_TAB_0},
+ {ui::VKEY_2, ui::EF_ALT_DOWN, IDC_SELECT_TAB_1},
+@@ -139,7 +139,7 @@ const AcceleratorMapping kAcceleratorMap[] = {
+ IDC_SHOW_AVATAR_MENU},
+
+ // Platform-specific key maps.
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ {ui::VKEY_BROWSER_BACK, ui::EF_NONE, IDC_BACK},
+ {ui::VKEY_BROWSER_FORWARD, ui::EF_NONE, IDC_FORWARD},
+ {ui::VKEY_BROWSER_HOME, ui::EF_NONE, IDC_HOME},
diff --git a/devel/electron17/files/patch-chrome_browser_ui_views_apps_chrome__native__app__window__views__aura.cc b/devel/electron17/files/patch-chrome_browser_ui_views_apps_chrome__native__app__window__views__aura.cc
new file mode 100644
index 000000000000..e2e4458f9ff1
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_ui_views_apps_chrome__native__app__window__views__aura.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/ui/views/apps/chrome_native_app_window_views_aura.cc.orig 2022-05-11 07:16:49 UTC
++++ chrome/browser/ui/views/apps/chrome_native_app_window_views_aura.cc
+@@ -19,7 +19,7 @@
+ #include "ui/gfx/image/image_skia.h"
+ #include "ui/views/widget/widget.h"
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "chrome/browser/shell_integration_linux.h"
+ #endif
+
+@@ -56,7 +56,7 @@ void ChromeNativeAppWindowViewsAura::OnBeforeWidgetIni
+ const AppWindow::CreateParams& create_params,
+ views::Widget::InitParams* init_params,
+ views::Widget* widget) {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ std::string app_name =
+ web_app::GenerateApplicationNameFromAppId(app_window()->extension_id());
+ // Set up a custom WM_CLASS for app windows. This allows task switchers in
diff --git a/devel/electron17/files/patch-chrome_browser_ui_views_chrome__browser__main__extra__parts__views.cc b/devel/electron17/files/patch-chrome_browser_ui_views_chrome__browser__main__extra__parts__views.cc
new file mode 100644
index 000000000000..21de4cd853b2
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_ui_views_chrome__browser__main__extra__parts__views.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/ui/views/chrome_browser_main_extra_parts_views.cc.orig 2022-05-11 07:16:49 UTC
++++ chrome/browser/ui/views/chrome_browser_main_extra_parts_views.cc
+@@ -41,7 +41,7 @@
+
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ #include <sys/stat.h>
+ #include <sys/types.h>
+ #include <unistd.h>
+@@ -136,7 +136,7 @@ void ChromeBrowserMainExtraPartsViews::PreProfileInit(
+
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ // On the Linux desktop, we want to prevent the user from logging in as root,
+ // so that we don't destroy the profile. Now that we have some minimal ui
+ // initialized, check to see if we're running as root and bail if we are.
diff --git a/devel/electron17/files/patch-chrome_browser_ui_views_chrome__views__delegate.h b/devel/electron17/files/patch-chrome_browser_ui_views_chrome__views__delegate.h
new file mode 100644
index 000000000000..5420da5e802b
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_ui_views_chrome__views__delegate.h
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/views/chrome_views_delegate.h.orig 2022-05-11 07:16:49 UTC
++++ chrome/browser/ui/views/chrome_views_delegate.h
+@@ -52,7 +52,7 @@ class ChromeViewsDelegate : public views::ViewsDelegat
+ base::OnceClosure callback) override;
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#elif defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#elif defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ gfx::ImageSkia* GetDefaultWindowIcon() const override;
+ bool WindowManagerProvidesTitleBar(bool maximized) override;
+ #endif
diff --git a/devel/electron17/files/patch-chrome_browser_ui_views_download_download__item__view.cc b/devel/electron17/files/patch-chrome_browser_ui_views_download_download__item__view.cc
new file mode 100644
index 000000000000..8c93c220d134
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_ui_views_download_download__item__view.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/ui/views/download/download_item_view.cc.orig 2022-05-11 07:16:49 UTC
++++ chrome/browser/ui/views/download/download_item_view.cc
+@@ -195,7 +195,7 @@ bool UseNewWarnings() {
+ }
+
+ int GetFilenameStyle(const views::Label& label) {
+-#if !defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if !defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(OS_BSD)
+ if (UseNewWarnings())
+ return STYLE_EMPHASIZED;
+ #endif
+@@ -203,7 +203,7 @@ int GetFilenameStyle(const views::Label& label) {
+ }
+
+ int GetFilenameStyle(const views::StyledLabel& label) {
+-#if !defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if !defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(OS_BSD)
+ if (UseNewWarnings())
+ return STYLE_EMPHASIZED;
+ #endif
diff --git a/devel/electron17/files/patch-chrome_browser_ui_views_eye__dropper_eye__dropper__view.cc b/devel/electron17/files/patch-chrome_browser_ui_views_eye__dropper_eye__dropper__view.cc
new file mode 100644
index 000000000000..d5536b700902
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_ui_views_eye__dropper_eye__dropper__view.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/views/eye_dropper/eye_dropper_view.cc.orig 2022-05-11 07:16:49 UTC
++++ chrome/browser/ui/views/eye_dropper/eye_dropper_view.cc
+@@ -155,7 +155,7 @@ EyeDropperView::EyeDropperView(content::RenderFrameHos
+ // EyeDropper/WidgetDelegate.
+ set_owned_by_client();
+ SetPreferredSize(GetSize());
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Use TYPE_MENU for Linux to ensure that the eye dropper view is displayed
+ // above the color picker.
+ views::Widget::InitParams params(views::Widget::InitParams::TYPE_MENU);
diff --git a/devel/electron17/files/patch-chrome_browser_ui_views_eye__dropper_eye__dropper__view__aura.cc b/devel/electron17/files/patch-chrome_browser_ui_views_eye__dropper_eye__dropper__view__aura.cc
new file mode 100644
index 000000000000..6021a4dcd7b4
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_ui_views_eye__dropper_eye__dropper__view__aura.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/views/eye_dropper/eye_dropper_view_aura.cc.orig 2022-05-11 07:16:49 UTC
++++ chrome/browser/ui/views/eye_dropper/eye_dropper_view_aura.cc
+@@ -81,7 +81,7 @@ void EyeDropperView::MoveViewToFront() {
+ }
+
+ void EyeDropperView::CaptureInputIfNeeded() {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // The eye dropper needs to capture input since it is not activated
+ // in order to avoid dismissing the color picker.
+ GetWidget()->GetNativeWindow()->SetCapture();
diff --git a/devel/electron17/files/patch-chrome_browser_ui_views_first__run__dialog.cc b/devel/electron17/files/patch-chrome_browser_ui_views_first__run__dialog.cc
new file mode 100644
index 000000000000..7380be8ae963
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_ui_views_first__run__dialog.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/ui/views/first_run_dialog.cc.orig 2022-05-11 07:16:49 UTC
++++ chrome/browser/ui/views/first_run_dialog.cc
+@@ -38,7 +38,7 @@
+
+ namespace {
+
+-#if !defined(OS_MAC)
++#if !defined(OS_MAC) && !defined(OS_BSD)
+ void InitCrashReporterIfEnabled(bool enabled) {
+ if (!crash_reporter::IsCrashpadEnabled() && enabled)
+ breakpad::InitCrashReporter(std::string());
+@@ -122,7 +122,7 @@ bool FirstRunDialog::Accept() {
+
+ #if defined(OS_MAC)
+ ChangeMetricsReportingState(report_crashes_->GetChecked());
+-#else
++#elif !defined(OS_BSD)
+ #if BUILDFLAG(IS_CHROMEOS_ASH)
+ metrics::structured::NeutrinoDevicesLog(
+ metrics::structured::NeutrinoDevicesLocation::kFirstRunDialog);
diff --git a/devel/electron17/files/patch-chrome_browser_ui_views_frame_browser__desktop__window__tree__host__linux.cc b/devel/electron17/files/patch-chrome_browser_ui_views_frame_browser__desktop__window__tree__host__linux.cc
new file mode 100644
index 000000000000..01226f25adc1
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_ui_views_frame_browser__desktop__window__tree__host__linux.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/views/frame/browser_desktop_window_tree_host_linux.cc.orig 2022-05-11 07:16:49 UTC
++++ chrome/browser/ui/views/frame/browser_desktop_window_tree_host_linux.cc
+@@ -146,7 +146,7 @@ bool BrowserDesktopWindowTreeHostLinux::SupportsClient
+ }
+
+ void BrowserDesktopWindowTreeHostLinux::UpdateFrameHints() {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ auto* view = static_cast<BrowserFrameViewLinux*>(
+ native_frame_->browser_frame()->GetFrameView());
+ auto* layout = view->layout();
diff --git a/devel/electron17/files/patch-chrome_browser_ui_views_frame_browser__desktop__window__tree__host__linux.h b/devel/electron17/files/patch-chrome_browser_ui_views_frame_browser__desktop__window__tree__host__linux.h
new file mode 100644
index 000000000000..2e4b2856401b
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_ui_views_frame_browser__desktop__window__tree__host__linux.h
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/views/frame/browser_desktop_window_tree_host_linux.h.orig 2022-05-11 07:16:49 UTC
++++ chrome/browser/ui/views/frame/browser_desktop_window_tree_host_linux.h
+@@ -95,7 +95,7 @@ class BrowserDesktopWindowTreeHostLinux
+ // browser_desktop_window_tree_host_lacros.cc.
+ #if BUILDFLAG(IS_CHROMEOS_LACROS)
+ using DesktopBrowserFrameAuraPlatform = DesktopBrowserFrameLacros;
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ using DesktopBrowserFrameAuraPlatform = DesktopBrowserFrameAuraLinux;
+ #else
+ #error Unknown platform
diff --git a/devel/electron17/files/patch-chrome_browser_ui_views_frame_browser__frame.cc b/devel/electron17/files/patch-chrome_browser_ui_views_frame_browser__frame.cc
new file mode 100644
index 000000000000..31ba3f8455cb
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_ui_views_frame_browser__frame.cc
@@ -0,0 +1,52 @@
+--- chrome/browser/ui/views/frame/browser_frame.cc.orig 2021-11-19 04:25:10 UTC
++++ chrome/browser/ui/views/frame/browser_frame.cc
+@@ -48,11 +48,11 @@
+
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ #include "ui/display/screen.h"
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "ui/views/linux_ui/linux_ui.h"
+ #endif
+
+@@ -61,7 +61,7 @@ namespace {
+ bool IsUsingGtkTheme(Profile* profile) {
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ return ThemeServiceFactory::GetForProfile(profile)->UsingSystemTheme();
+ #else
+ return false;
+@@ -263,7 +263,7 @@ void BrowserFrame::OnNativeWidgetWorkspaceChanged() {
+ IsVisibleOnAllWorkspaces());
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ // If the window was sent to a different workspace, prioritize it if
+ // it was sent to the current workspace and deprioritize it
+ // otherwise. This is done by MoveBrowsersInWorkspaceToFront()
+@@ -386,7 +386,7 @@ void BrowserFrame::SelectNativeTheme() {
+ }
+ }
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ const views::LinuxUI* linux_ui = views::LinuxUI::instance();
+ // Ignore GTK+ for web apps with window-controls-overlay as the
+ // display_override so the web contents can blend with the overlay by using
+@@ -405,7 +405,7 @@ bool BrowserFrame::RegenerateFrameOnThemeChange(
+ bool need_regenerate = false;
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag
+ // switch of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ // GTK and user theme changes can both change frame buttons, so the frame
+ // always needs to be regenerated on Linux.
+ need_regenerate = true;
diff --git a/devel/electron17/files/patch-chrome_browser_ui_views_frame_browser__non__client__frame__view__factory__views.cc b/devel/electron17/files/patch-chrome_browser_ui_views_frame_browser__non__client__frame__view__factory__views.cc
new file mode 100644
index 000000000000..4a147f6b3391
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_ui_views_frame_browser__non__client__frame__view__factory__views.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/ui/views/frame/browser_non_client_frame_view_factory_views.cc.orig 2021-11-19 04:25:10 UTC
++++ chrome/browser/ui/views/frame/browser_non_client_frame_view_factory_views.cc
+@@ -15,7 +15,7 @@
+ #include "chrome/browser/ui/views/frame/glass_browser_frame_view.h"
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "chrome/browser/ui/views/frame/browser_frame_view_layout_linux.h"
+ #include "chrome/browser/ui/views/frame/browser_frame_view_layout_linux_native.h"
+ #include "chrome/browser/ui/views/frame/browser_frame_view_linux.h"
+@@ -33,7 +33,7 @@ namespace {
+ std::unique_ptr<OpaqueBrowserFrameView> CreateOpaqueBrowserFrameView(
+ BrowserFrame* frame,
+ BrowserView* browser_view) {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ auto* linux_ui = views::LinuxUI::instance();
+ auto* profile = browser_view->browser()->profile();
+ auto* theme_service_factory = ThemeServiceFactory::GetForProfile(profile);
diff --git a/devel/electron17/files/patch-chrome_browser_ui_views_frame_browser__view.cc b/devel/electron17/files/patch-chrome_browser_ui_views_frame_browser__view.cc
new file mode 100644
index 000000000000..f512c9645ae2
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_ui_views_frame_browser__view.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/views/frame/browser_view.cc.orig 2022-05-11 07:16:49 UTC
++++ chrome/browser/ui/views/frame/browser_view.cc
+@@ -1748,7 +1748,7 @@ void BrowserView::TabDraggingStatusChanged(bool is_dra
+ // CrOS cleanup is done.
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if !(defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
++#if !(defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD))
+ contents_web_view_->SetFastResize(is_dragging);
+ if (!is_dragging) {
+ // When tab dragging is ended, we need to make sure the web contents get
diff --git a/devel/electron17/files/patch-chrome_browser_ui_views_frame_opaque__browser__frame__view.cc b/devel/electron17/files/patch-chrome_browser_ui_views_frame_opaque__browser__frame__view.cc
new file mode 100644
index 000000000000..9836eba3b9f8
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_ui_views_frame_opaque__browser__frame__view.cc
@@ -0,0 +1,29 @@
+--- chrome/browser/ui/views/frame/opaque_browser_frame_view.cc.orig 2022-05-11 07:16:49 UTC
++++ chrome/browser/ui/views/frame/opaque_browser_frame_view.cc
+@@ -53,7 +53,7 @@
+ #include "ui/views/window/vector_icons/vector_icons.h"
+ #include "ui/views/window/window_shape.h"
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ #include "ui/views/controls/menu/menu_runner.h"
+ #endif
+
+@@ -541,7 +541,7 @@ OpaqueBrowserFrameView::FrameButtonStyle
+ OpaqueBrowserFrameView::GetFrameButtonStyle() const {
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ return FrameButtonStyle::kMdButton;
+ #else
+ return FrameButtonStyle::kImageButton;
+@@ -751,7 +751,7 @@ gfx::Rect OpaqueBrowserFrameView::GetIconBounds() cons
+ }
+
+ void OpaqueBrowserFrameView::WindowIconPressed() {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Chrome OS doesn't show the window icon, and Windows handles this on its own
+ // due to the hit test being HTSYSMENU.
+ menu_runner_ = std::make_unique<views::MenuRunner>(
diff --git a/devel/electron17/files/patch-chrome_browser_ui_views_frame_opaque__browser__frame__view.h b/devel/electron17/files/patch-chrome_browser_ui_views_frame_opaque__browser__frame__view.h
new file mode 100644
index 000000000000..046bbfafd9ba
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_ui_views_frame_opaque__browser__frame__view.h
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/views/frame/opaque_browser_frame_view.h.orig 2022-05-11 07:16:49 UTC
++++ chrome/browser/ui/views/frame/opaque_browser_frame_view.h
+@@ -224,7 +224,7 @@ class OpaqueBrowserFrameView : public BrowserNonClient
+ // Background painter for the window frame.
+ std::unique_ptr<views::FrameBackground> frame_background_;
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ std::unique_ptr<views::MenuRunner> menu_runner_;
+ #endif
+
diff --git a/devel/electron17/files/patch-chrome_browser_ui_views_frame_system__menu__model__builder.cc b/devel/electron17/files/patch-chrome_browser_ui_views_frame_system__menu__model__builder.cc
new file mode 100644
index 000000000000..c50774152937
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_ui_views_frame_system__menu__model__builder.cc
@@ -0,0 +1,29 @@
+--- chrome/browser/ui/views/frame/system_menu_model_builder.cc.orig 2022-05-11 07:16:49 UTC
++++ chrome/browser/ui/views/frame/system_menu_model_builder.cc
+@@ -77,7 +77,7 @@ void SystemMenuModelBuilder::BuildSystemMenuForBrowser
+ ui::SimpleMenuModel* model) {
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) && !BUILDFLAG(IS_CHROMEOS_LACROS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !BUILDFLAG(IS_CHROMEOS_LACROS)
+ model->AddItemWithStringId(IDC_MINIMIZE_WINDOW, IDS_MINIMIZE_WINDOW_MENU);
+ model->AddItemWithStringId(IDC_MAXIMIZE_WINDOW, IDS_MAXIMIZE_WINDOW_MENU);
+ model->AddItemWithStringId(IDC_RESTORE_WINDOW, IDS_RESTORE_WINDOW_MENU);
+@@ -93,7 +93,7 @@ void SystemMenuModelBuilder::BuildSystemMenuForBrowser
+ }
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) && !BUILDFLAG(IS_CHROMEOS_LACROS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !BUILDFLAG(IS_CHROMEOS_LACROS)
+ model->AddSeparator(ui::NORMAL_SEPARATOR);
+ bool supports_server_side_decorations = true;
+ #if defined(USE_OZONE) && \
+@@ -148,7 +148,7 @@ void SystemMenuModelBuilder::BuildSystemMenuForAppOrPo
+ }
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ model->AddSeparator(ui::NORMAL_SEPARATOR);
+ model->AddItemWithStringId(IDC_CLOSE_WINDOW, IDS_CLOSE);
+ #endif
diff --git a/devel/electron17/files/patch-chrome_browser_ui_views_frame_system__menu__model__delegate.cc b/devel/electron17/files/patch-chrome_browser_ui_views_frame_system__menu__model__delegate.cc
new file mode 100644
index 000000000000..7d373cf788eb
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_ui_views_frame_system__menu__model__delegate.cc
@@ -0,0 +1,29 @@
+--- chrome/browser/ui/views/frame/system_menu_model_delegate.cc.orig 2021-11-19 04:25:10 UTC
++++ chrome/browser/ui/views/frame/system_menu_model_delegate.cc
+@@ -23,7 +23,7 @@
+
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ #include "chrome/common/pref_names.h"
+ #include "components/prefs/pref_service.h"
+ #endif
+@@ -40,7 +40,7 @@ SystemMenuModelDelegate::~SystemMenuModelDelegate() {}
+ bool SystemMenuModelDelegate::IsCommandIdChecked(int command_id) const {
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ if (command_id == IDC_USE_SYSTEM_TITLE_BAR) {
+ PrefService* prefs = browser_->profile()->GetPrefs();
+ return !prefs->GetBoolean(prefs::kUseCustomChromeFrame);
+@@ -62,7 +62,7 @@ bool SystemMenuModelDelegate::IsCommandIdEnabled(int c
+ bool SystemMenuModelDelegate::IsCommandIdVisible(int command_id) const {
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ bool is_maximized = browser_->window()->IsMaximized();
+ switch (command_id) {
+ case IDC_MAXIMIZE_WINDOW:
diff --git a/devel/electron17/files/patch-chrome_browser_ui_views_hung__renderer__view.cc b/devel/electron17/files/patch-chrome_browser_ui_views_hung__renderer__view.cc
new file mode 100644
index 000000000000..2bc5a14ef5dd
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_ui_views_hung__renderer__view.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/views/hung_renderer_view.cc.orig 2022-05-11 07:16:49 UTC
++++ chrome/browser/ui/views/hung_renderer_view.cc
+@@ -403,7 +403,7 @@ void HungRendererDialogView::ForceCrashHungRenderer()
+ content::RenderProcessHost* rph =
+ hung_pages_table_model_->GetRenderWidgetHost()->GetProcess();
+ if (rph) {
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // A generic |CrashDumpHungChildProcess()| is not implemented for Linux.
+ // Instead we send an explicit IPC to crash on the renderer's IO thread.
+ rph->ForceCrash();
diff --git a/devel/electron17/files/patch-chrome_browser_ui_views_profiles_profile__menu__view__base.cc b/devel/electron17/files/patch-chrome_browser_ui_views_profiles_profile__menu__view__base.cc
new file mode 100644
index 000000000000..ddb7c3f252b9
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_ui_views_profiles_profile__menu__view__base.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/views/profiles/profile_menu_view_base.cc.orig 2022-05-11 07:16:49 UTC
++++ chrome/browser/ui/views/profiles/profile_menu_view_base.cc
+@@ -612,7 +612,7 @@ void ProfileMenuViewBase::SetProfileIdentityInfo(
+
+ // TODO(crbug.com/1052397): Revisit once build flag switch of lacros-chrome is
+ // complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ // crbug.com/1161166: Orca does not read the accessible window title of the
+ // bubble, so we duplicate it in the top-level menu item. To be revisited
+ // after considering other options, including fixes on the AT side.
diff --git a/devel/electron17/files/patch-chrome_browser_ui_views_profiles_signin__view__controller__delegate__views.cc b/devel/electron17/files/patch-chrome_browser_ui_views_profiles_signin__view__controller__delegate__views.cc
new file mode 100644
index 000000000000..2ce8f9d09374
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_ui_views_profiles_signin__view__controller__delegate__views.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/ui/views/profiles/signin_view_controller_delegate_views.cc.orig 2022-05-11 07:16:49 UTC
++++ chrome/browser/ui/views/profiles/signin_view_controller_delegate_views.cc
+@@ -82,7 +82,7 @@ SigninViewControllerDelegateViews::CreateReauthConfirm
+ }
+
+ #if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || \
+- BUILDFLAG(IS_CHROMEOS_LACROS)
++ BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ // static
+ std::unique_ptr<views::WebView>
+ SigninViewControllerDelegateViews::CreateEnterpriseConfirmationWebView(
+@@ -341,7 +341,7 @@ SigninViewControllerDelegate::CreateReauthConfirmation
+ }
+
+ #if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || \
+- BUILDFLAG(IS_CHROMEOS_LACROS)
++ BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ // static
+ SigninViewControllerDelegate*
+ SigninViewControllerDelegate::CreateEnterpriseConfirmationDelegate(
diff --git a/devel/electron17/files/patch-chrome_browser_ui_views_profiles_signin__view__controller__delegate__views.h b/devel/electron17/files/patch-chrome_browser_ui_views_profiles_signin__view__controller__delegate__views.h
new file mode 100644
index 000000000000..a7db261076b1
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_ui_views_profiles_signin__view__controller__delegate__views.h
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/views/profiles/signin_view_controller_delegate_views.h.orig 2022-05-11 07:16:49 UTC
++++ chrome/browser/ui/views/profiles/signin_view_controller_delegate_views.h
+@@ -64,7 +64,7 @@ class SigninViewControllerDelegateViews
+ signin_metrics::ReauthAccessPoint);
+
+ #if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || \
+- BUILDFLAG(IS_CHROMEOS_LACROS)
++ BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ static std::unique_ptr<views::WebView> CreateEnterpriseConfirmationWebView(
+ Browser* browser,
+ const AccountInfo& account_info,
diff --git a/devel/electron17/files/patch-chrome_browser_ui_views_tabs_new__tab__button.cc b/devel/electron17/files/patch-chrome_browser_ui_views_tabs_new__tab__button.cc
new file mode 100644
index 000000000000..921b347a7abd
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_ui_views_tabs_new__tab__button.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/views/tabs/new_tab_button.cc.orig 2022-05-11 07:16:49 UTC
++++ chrome/browser/ui/views/tabs/new_tab_button.cc
+@@ -59,7 +59,7 @@ NewTabButton::NewTabButton(TabStrip* tab_strip, Presse
+ SetAnimateOnStateChange(true);
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ SetTriggerableEventFlags(GetTriggerableEventFlags() |
+ ui::EF_MIDDLE_MOUSE_BUTTON);
+ #endif
diff --git a/devel/electron17/files/patch-chrome_browser_ui_views_tabs_tab.cc b/devel/electron17/files/patch-chrome_browser_ui_views_tabs_tab.cc
new file mode 100644
index 000000000000..706b726ddc8e
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_ui_views_tabs_tab.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/views/tabs/tab.cc.orig 2022-05-11 07:16:49 UTC
++++ chrome/browser/ui/views/tabs/tab.cc
+@@ -576,7 +576,7 @@ void Tab::MaybeUpdateHoverStatus(const ui::MouseEvent&
+ if (mouse_hovered_ || !GetWidget()->IsMouseEventsEnabled())
+ return;
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // Move the hit test area for hovering up so that it is not overlapped by tab
+ // hover cards when they are shown.
+ // TODO(crbug.com/978134): Once Linux/CrOS widget transparency is solved,
diff --git a/devel/electron17/files/patch-chrome_browser_ui_views_tabs_tab__drag__controller.cc b/devel/electron17/files/patch-chrome_browser_ui_views_tabs_tab__drag__controller.cc
new file mode 100644
index 000000000000..a9b641e203fd
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_ui_views_tabs_tab__drag__controller.cc
@@ -0,0 +1,29 @@
+--- chrome/browser/ui/views/tabs/tab_drag_controller.cc.orig 2022-05-11 07:16:49 UTC
++++ chrome/browser/ui/views/tabs/tab_drag_controller.cc
+@@ -447,7 +447,7 @@ void TabDragController::Init(TabDragContext* source_co
+ // synchronous on desktop Linux, so use that.
+ // - Chrome OS
+ // Releasing capture on Ash cancels gestures so avoid it.
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ can_release_capture_ = false;
+ #endif
+ start_point_in_screen_ = gfx::Point(source_view_offset, mouse_offset.y());
+@@ -895,7 +895,7 @@ TabDragController::DragBrowserToNewTabStrip(TabDragCon
+
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if !(defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
++#if !(defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD))
+ // EndMoveLoop is going to snap the window back to its original location.
+ // Hide it so users don't see this. Hiding a window in Linux aura causes
+ // it to lose capture so skip it.
+@@ -2105,7 +2105,7 @@ TabDragController::Liveness TabDragController::GetLoca
+ }
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ // Exclude windows which are pending deletion via Browser::TabStripEmpty().
+ // These windows can be returned in the Linux Aura port because the browser
+ // window which was used for dragging is not hidden once all of its tabs are
diff --git a/devel/electron17/files/patch-chrome_browser_ui_views_tabs_tab__hover__card__controller.cc b/devel/electron17/files/patch-chrome_browser_ui_views_tabs_tab__hover__card__controller.cc
new file mode 100644
index 000000000000..db840ab53e0c
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_ui_views_tabs_tab__hover__card__controller.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/views/tabs/tab_hover_card_controller.cc.orig 2022-05-11 07:16:49 UTC
++++ chrome/browser/ui/views/tabs/tab_hover_card_controller.cc
+@@ -36,7 +36,7 @@ namespace {
+ // Fetches the Omnibox drop-down widget, or returns null if the drop-down is
+ // not visible.
+ void FixWidgetStackOrder(views::Widget* widget, const Browser* browser) {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Ensure the hover card Widget assumes the highest z-order to avoid occlusion
+ // by other secondary UI Widgets (such as the omnibox Widget, see
+ // crbug.com/1226536).
diff --git a/devel/electron17/files/patch-chrome_browser_ui_webui_about__ui.cc b/devel/electron17/files/patch-chrome_browser_ui_webui_about__ui.cc
new file mode 100644
index 000000000000..c68152d12708
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_ui_webui_about__ui.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/ui/webui/about_ui.cc.orig 2022-05-11 07:16:49 UTC
++++ chrome/browser/ui/webui/about_ui.cc
+@@ -656,7 +656,7 @@ std::string ChromeURLs() {
+ return html;
+ }
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_OPENBSD)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ std::string AboutLinuxProxyConfig() {
+ std::string data;
+ AppendHeader(&data,
+@@ -712,7 +712,7 @@ void AboutUIHTMLSource::StartDataRequest(
+ response =
+ ui::ResourceBundle::GetSharedInstance().LoadDataResourceString(idr);
+ }
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_OPENBSD)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ } else if (source_name_ == chrome::kChromeUILinuxProxyConfigHost) {
+ response = AboutLinuxProxyConfig();
+ #endif
diff --git a/devel/electron17/files/patch-chrome_browser_ui_webui_chrome__web__ui__controller__factory.cc b/devel/electron17/files/patch-chrome_browser_ui_webui_chrome__web__ui__controller__factory.cc
new file mode 100644
index 000000000000..01de8ea017f8
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_ui_webui_chrome__web__ui__controller__factory.cc
@@ -0,0 +1,86 @@
+--- chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc.orig 2022-05-11 07:16:49 UTC
++++ chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc
+@@ -280,7 +280,7 @@
+ #include "chrome/browser/ui/webui/app_launcher_page_ui.h"
+ #endif
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ #include "chrome/browser/ui/webui/webui_js_error/webui_js_error_ui.h"
+ #endif
+
+@@ -304,17 +304,17 @@
+ #endif
+
+ #if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || \
+- defined(OS_CHROMEOS)
++ defined(OS_CHROMEOS) || defined(OS_BSD)
+ #include "chrome/browser/ui/webui/discards/discards_ui.h"
+ #endif
+
+ #if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) || \
+- defined(OS_ANDROID)
++ defined(OS_ANDROID) || defined(OS_BSD)
+ #include "chrome/browser/ui/webui/sandbox/sandbox_internals_ui.h"
+ #endif
+
+ #if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || \
+- BUILDFLAG(IS_CHROMEOS_ASH)
++ BUILDFLAG(IS_CHROMEOS_ASH) || defined(OS_BSD)
+ #include "chrome/browser/ui/webui/connectors_internals/connectors_internals_ui.h"
+ #endif
+
+@@ -592,7 +592,7 @@ bool IsAboutUI(const GURL& url) {
+ #if !defined(OS_ANDROID)
+ || url.host_piece() == chrome::kChromeUITermsHost
+ #endif
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_OPENBSD)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ || url.host_piece() == chrome::kChromeUILinuxProxyConfigHost
+ #endif
+ #if BUILDFLAG(IS_CHROMEOS_ASH)
+@@ -985,7 +985,7 @@ WebUIFactoryFunction GetWebUIFactoryFunction(WebUI* we
+ }
+ #endif // !defined(OFFICIAL_BUILD)
+ #endif // BUILDFLAG(IS_CHROMEOS_ASH)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ if (url.host_piece() == chrome::kChromeUIWebUIJsErrorHost)
+ return &NewWebUI<WebUIJsErrorUI>;
+ #endif
+@@ -1043,7 +1043,7 @@ WebUIFactoryFunction GetWebUIFactoryFunction(WebUI* we
+ if (url.host_piece() == chrome::kChromeUINaClHost)
+ return &NewWebUI<NaClUI>;
+ #endif
+-#if ((defined(OS_LINUX) || defined(OS_CHROMEOS)) && defined(TOOLKIT_VIEWS)) || \
++#if ((defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)) && defined(TOOLKIT_VIEWS)) || \
+ defined(USE_AURA)
+ if (url.host_piece() == chrome::kChromeUITabModalConfirmDialogHost)
+ return &NewWebUI<ConstrainedWebDialogUI>;
+@@ -1098,22 +1098,22 @@ WebUIFactoryFunction GetWebUIFactoryFunction(WebUI* we
+ }
+ #endif
+ #if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) || \
+- defined(OS_ANDROID)
++ defined(OS_ANDROID) || defined(OS_BSD)
+ if (url.host_piece() == chrome::kChromeUISandboxHost) {
+ return &NewWebUI<SandboxInternalsUI>;
+ }
+ #endif
+ #if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || \
+- BUILDFLAG(IS_CHROMEOS_ASH)
++ BUILDFLAG(IS_CHROMEOS_ASH) || defined(OS_BSD)
+ if (url.host_piece() == chrome::kChromeUIConnectorsInternalsHost)
+ return &NewWebUI<enterprise_connectors::ConnectorsInternalsUI>;
+ #endif
+ #if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || \
+- defined(OS_CHROMEOS)
++ defined(OS_CHROMEOS) || defined(OS_BSD)
+ if (url.host_piece() == chrome::kChromeUIDiscardsHost)
+ return &NewWebUI<DiscardsUI>;
+ #endif
+-#if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || defined(OS_BSD)
+ if (url.host_piece() == chrome::kChromeUIBrowserSwitchHost)
+ return &NewWebUI<BrowserSwitchUI>;
+ #endif
diff --git a/devel/electron17/files/patch-chrome_browser_ui_webui_connectors__internals_zero__trust__utils.cc b/devel/electron17/files/patch-chrome_browser_ui_webui_connectors__internals_zero__trust__utils.cc
new file mode 100644
index 000000000000..377a0c4dd871
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_ui_webui_connectors__internals_zero__trust__utils.cc
@@ -0,0 +1,29 @@
+--- chrome/browser/ui/webui/connectors_internals/zero_trust_utils.cc.orig 2022-05-11 07:16:49 UTC
++++ chrome/browser/ui/webui/connectors_internals/zero_trust_utils.cc
+@@ -9,7 +9,7 @@
+ #include "base/strings/string_util.h"
+ #include "build/build_config.h"
+
+-#if defined(OS_LINUX) || defined(OS_WIN) || defined(OS_MAC)
++#if defined(OS_LINUX) || defined(OS_WIN) || defined(OS_MAC) || defined(OS_BSD)
+ #include "chrome/browser/browser_process.h"
+ #include "chrome/browser/policy/chrome_browser_policy_connector.h"
+ #include "components/enterprise/browser/controller/chrome_browser_cloud_management_controller.h"
+@@ -66,7 +66,7 @@ void TrySetSignal(base::flat_map<std::string, std::str
+ std::vector<base::StringPiece>(values.begin(), values.end()), ", ");
+ }
+
+-#if defined(OS_LINUX) || defined(OS_WIN) || defined(OS_MAC)
++#if defined(OS_LINUX) || defined(OS_WIN) || defined(OS_MAC) || defined(OS_BSD)
+
+ connectors_internals::mojom::KeyTrustLevel ParseTrustLevel(
+ BPKUR::KeyTrustLevel trust_level) {
+@@ -171,7 +171,7 @@ base::flat_map<std::string, std::string> SignalsToMap(
+ }
+
+ connectors_internals::mojom::KeyInfoPtr GetKeyInfo() {
+-#if defined(OS_LINUX) || defined(OS_WIN) || defined(OS_MAC)
++#if defined(OS_LINUX) || defined(OS_WIN) || defined(OS_MAC) || defined(OS_BSD)
+ auto* key_manager = g_browser_process->browser_policy_connector()
+ ->chrome_browser_cloud_management_controller()
+ ->GetDeviceTrustKeyManager();
diff --git a/devel/electron17/files/patch-chrome_browser_ui_webui_ntp_app__launcher__handler.cc b/devel/electron17/files/patch-chrome_browser_ui_webui_ntp_app__launcher__handler.cc
new file mode 100644
index 000000000000..2e4efd59f3a4
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_ui_webui_ntp_app__launcher__handler.cc
@@ -0,0 +1,29 @@
+--- chrome/browser/ui/webui/ntp/app_launcher_handler.cc.orig 2022-05-11 07:16:49 UTC
++++ chrome/browser/ui/webui/ntp/app_launcher_handler.cc
+@@ -315,7 +315,7 @@ void AppLauncherHandler::CreateExtensionInfo(const Ext
+ base::CommandLine::ForCurrentProcess()->HasSwitch(switches::kKioskMode));
+
+ bool is_deprecated_app = false;
+-#if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || defined(OS_BSD)
+ is_deprecated_app = extensions::IsExtensionUnsupportedDeprecatedApp(
+ extension_service_->GetBrowserContext(), extension->id());
+ #endif
+@@ -765,7 +765,7 @@ void AppLauncherHandler::HandleLaunchApp(const base::L
+
+ Profile* profile = extension_service_->profile();
+
+-#if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || defined(OS_BSD)
+ if (extensions::IsExtensionUnsupportedDeprecatedApp(profile, extension_id)) {
+ // TODO(crbug.com/1225779): Show the deprecated apps dialog.
+ return;
+@@ -1361,7 +1361,7 @@ void AppLauncherHandler::InstallOsHooks(const web_app:
+ options.os_hooks[web_app::OsHookType::kUninstallationViaOsSettings] =
+ web_app->CanUserUninstallWebApp();
+
+-#if defined(OS_WIN) || defined(OS_MAC) || \
++#if defined(OS_WIN) || defined(OS_MAC) || defined(OS_BSD) || \
+ (defined(OS_LINUX) && !BUILDFLAG(IS_CHROMEOS_LACROS))
+ options.os_hooks[web_app::OsHookType::kUrlHandlers] = true;
+ #else
diff --git a/devel/electron17/files/patch-chrome_browser_ui_webui_settings_appearance__handler.cc b/devel/electron17/files/patch-chrome_browser_ui_webui_settings_appearance__handler.cc
new file mode 100644
index 000000000000..566ebf3f7d81
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_ui_webui_settings_appearance__handler.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/ui/webui/settings/appearance_handler.cc.orig 2022-05-11 07:16:49 UTC
++++ chrome/browser/ui/webui/settings/appearance_handler.cc
+@@ -31,7 +31,7 @@ void AppearanceHandler::RegisterMessages() {
+ base::Unretained(this)));
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) && !BUILDFLAG(IS_CHROMEOS_LACROS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !BUILDFLAG(IS_CHROMEOS_LACROS)
+ web_ui()->RegisterDeprecatedMessageCallback(
+ "useSystemTheme",
+ base::BindRepeating(&AppearanceHandler::HandleUseSystemTheme,
+@@ -45,7 +45,7 @@ void AppearanceHandler::HandleUseDefaultTheme(const ba
+
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) && !BUILDFLAG(IS_CHROMEOS_LACROS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !BUILDFLAG(IS_CHROMEOS_LACROS)
+ void AppearanceHandler::HandleUseSystemTheme(const base::ListValue* args) {
+ if (profile_->IsChild())
+ NOTREACHED();
diff --git a/devel/electron17/files/patch-chrome_browser_ui_webui_settings_appearance__handler.h b/devel/electron17/files/patch-chrome_browser_ui_webui_settings_appearance__handler.h
new file mode 100644
index 000000000000..d93c1216e62e
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_ui_webui_settings_appearance__handler.h
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/webui/settings/appearance_handler.h.orig 2021-11-19 04:25:10 UTC
++++ chrome/browser/ui/webui/settings/appearance_handler.h
+@@ -44,7 +44,7 @@ class AppearanceHandler : public SettingsPageUIHandler
+
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ // Changes the UI theme of the browser to the system (GTK+) theme.
+ void HandleUseSystemTheme(const base::ListValue* args);
+ #endif
diff --git a/devel/electron17/files/patch-chrome_browser_ui_webui_settings_settings__localized__strings__provider.cc b/devel/electron17/files/patch-chrome_browser_ui_webui_settings_settings__localized__strings__provider.cc
new file mode 100644
index 000000000000..854e0ed639dd
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_ui_webui_settings_settings__localized__strings__provider.cc
@@ -0,0 +1,47 @@
+--- chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc.orig 2022-05-11 07:16:49 UTC
++++ chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc
+@@ -116,7 +116,7 @@
+ #include "chrome/browser/ui/webui/settings/chromeos/constants/routes.mojom.h"
+ #endif
+
+-#if defined(OS_LINUX) && !BUILDFLAG(IS_CHROMEOS_LACROS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !BUILDFLAG(IS_CHROMEOS_LACROS)
+ #include "ui/display/screen.h"
+ #endif
+
+@@ -136,7 +136,7 @@
+ #include "chrome/browser/ui/webui/certificate_manager_localized_strings_provider.h"
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "ui/ozone/public/ozone_platform.h"
+ #endif
+
+@@ -365,7 +365,7 @@ void AddAppearanceStrings(content::WebUIDataSource* ht
+ {"huge", IDS_SETTINGS_HUGE_FONT_SIZE},
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) && !BUILDFLAG(IS_CHROMEOS_LACROS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !BUILDFLAG(IS_CHROMEOS_LACROS)
+ {"systemTheme", IDS_SETTINGS_SYSTEM_THEME},
+ {"useSystemTheme", IDS_SETTINGS_USE_SYSTEM_THEME},
+ {"classicTheme", IDS_SETTINGS_CLASSIC_THEME},
+@@ -373,7 +373,7 @@ void AddAppearanceStrings(content::WebUIDataSource* ht
+ #else
+ {"resetToDefaultTheme", IDS_SETTINGS_RESET_TO_DEFAULT_THEME},
+ #endif
+-#if defined(OS_LINUX) && !BUILDFLAG(IS_CHROMEOS_LACROS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !BUILDFLAG(IS_CHROMEOS_LACROS)
+ {"showWindowDecorations", IDS_SHOW_WINDOW_DECORATIONS},
+ #endif
+ #if defined(OS_MAC)
+@@ -394,7 +394,7 @@ void AddAppearanceStrings(content::WebUIDataSource* ht
+
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) && !BUILDFLAG(IS_CHROMEOS_LACROS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !BUILDFLAG(IS_CHROMEOS_LACROS)
+ bool show_custom_chrome_frame = ui::OzonePlatform::GetInstance()
+ ->GetPlatformRuntimeProperties()
+ .supports_server_side_window_decorations;
diff --git a/devel/electron17/files/patch-chrome_browser_ui_webui_settings_settings__ui.cc b/devel/electron17/files/patch-chrome_browser_ui_webui_settings_settings__ui.cc
new file mode 100644
index 000000000000..8818326a8ccd
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_ui_webui_settings_settings__ui.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/ui/webui/settings/settings_ui.cc.orig 2022-05-11 07:16:49 UTC
++++ chrome/browser/ui/webui/settings/settings_ui.cc
+@@ -140,7 +140,7 @@
+ #include "chrome/browser/ui/webui/settings/native_certificates_handler.h"
+ #endif // defined(USE_NSS_CERTS)
+
+-#if defined(OS_WIN) || defined(OS_MAC) || \
++#if defined(OS_WIN) || defined(OS_MAC) || defined(OS_BSD) || \
+ (defined(OS_LINUX) && !BUILDFLAG(IS_CHROMEOS_LACROS))
+ #include "chrome/browser/ui/webui/settings/url_handlers_handler.h"
+ #include "chrome/browser/web_applications/web_app_provider.h"
+@@ -243,7 +243,7 @@ SettingsUI::SettingsUI(content::WebUI* web_ui)
+ AddSettingsPageUIHandler(std::make_unique<ChromeCleanupHandler>(profile));
+ #endif // defined(OS_WIN)
+
+-#if defined(OS_WIN) || defined(OS_MAC) || \
++#if defined(OS_WIN) || defined(OS_MAC) || defined(OS_BSD) || \
+ (defined(OS_LINUX) && !BUILDFLAG(IS_CHROMEOS_LACROS))
+ if (web_app::WebAppProvider::GetForWebApps(profile) != nullptr) {
+ AddSettingsPageUIHandler(std::make_unique<UrlHandlersHandler>(
diff --git a/devel/electron17/files/patch-chrome_browser_ui_window__sizer_window__sizer.cc b/devel/electron17/files/patch-chrome_browser_ui_window__sizer_window__sizer.cc
new file mode 100644
index 000000000000..d2c918bb341c
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_ui_window__sizer_window__sizer.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/window_sizer/window_sizer.cc.orig 2022-05-11 07:16:49 UTC
++++ chrome/browser/ui/window_sizer/window_sizer.cc
+@@ -166,7 +166,7 @@ void WindowSizer::GetBrowserWindowBoundsAndShowState(
+ browser, window_bounds, show_state);
+ }
+
+-#if !defined(OS_LINUX)
++#if !defined(OS_LINUX) || defined(OS_BSD)
+ // Linux has its own implementation, see WindowSizerLinux.
+ // static
+ void WindowSizer::GetBrowserWindowBoundsAndShowState(
diff --git a/devel/electron17/files/patch-chrome_browser_web__applications_extension__status__utils.h b/devel/electron17/files/patch-chrome_browser_web__applications_extension__status__utils.h
new file mode 100644
index 000000000000..db121bf05fa7
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_web__applications_extension__status__utils.h
@@ -0,0 +1,11 @@
+--- chrome/browser/web_applications/extension_status_utils.h.orig 2022-05-11 07:16:49 UTC
++++ chrome/browser/web_applications/extension_status_utils.h
+@@ -42,7 +42,7 @@ bool IsExtensionDefaultInstalled(content::BrowserConte
+ bool IsExternalExtensionUninstalled(content::BrowserContext* context,
+ const std::string& extension_id);
+
+-#if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || defined(OS_BSD)
+ // Returns whether |extension_id| is a Chrome App and should be blocked by the
+ // Chrome Apps Deprecation. Policy installed Chrome Apps are still allowed, and
+ // all apps are allowed if the deprecation feature flag is not enabled.
diff --git a/devel/electron17/files/patch-chrome_browser_web__applications_extensions_extension__status__utils.cc b/devel/electron17/files/patch-chrome_browser_web__applications_extensions_extension__status__utils.cc
new file mode 100644
index 000000000000..85678914a0f7
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_web__applications_extensions_extension__status__utils.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/web_applications/extensions/extension_status_utils.cc.orig 2022-05-11 07:16:49 UTC
++++ chrome/browser/web_applications/extensions/extension_status_utils.cc
+@@ -87,7 +87,7 @@ bool IsExternalExtensionUninstalled(content::BrowserCo
+ return prefs && prefs->IsExternalExtensionUninstalled(extension_id);
+ }
+
+-#if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || defined(OS_BSD)
+ bool IsExtensionUnsupportedDeprecatedApp(content::BrowserContext* context,
+ const std::string& extension_id) {
+ if (!base::FeatureList::IsEnabled(features::kChromeAppsDeprecation))
diff --git a/devel/electron17/files/patch-chrome_browser_web__applications_externally__managed__app__install__task.cc b/devel/electron17/files/patch-chrome_browser_web__applications_externally__managed__app__install__task.cc
new file mode 100644
index 000000000000..a2bb0298138d
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_web__applications_externally__managed__app__install__task.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/web_applications/externally_managed_app_install_task.cc.orig 2022-05-11 07:16:49 UTC
++++ chrome/browser/web_applications/externally_managed_app_install_task.cc
+@@ -310,7 +310,7 @@ void ExternallyManagedAppInstallTask::OnWebAppInstalle
+ const WebApp* web_app = registrar_->GetAppById(app_id);
+ options.os_hooks[OsHookType::kUninstallationViaOsSettings] =
+ web_app->CanUserUninstallWebApp();
+-#if defined(OS_WIN) || defined(OS_MAC) || \
++#if defined(OS_WIN) || defined(OS_MAC) || defined(OS_BSD) || \
+ (defined(OS_LINUX) && !BUILDFLAG(IS_CHROMEOS_LACROS))
+ options.os_hooks[OsHookType::kUrlHandlers] = true;
+ #else
diff --git a/devel/electron17/files/patch-chrome_browser_web__applications_web__app__file__handler__registration.h b/devel/electron17/files/patch-chrome_browser_web__applications_web__app__file__handler__registration.h
new file mode 100644
index 000000000000..7a1c39bbf28a
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_web__applications_web__app__file__handler__registration.h
@@ -0,0 +1,11 @@
+--- chrome/browser/web_applications/web_app_file_handler_registration.h.orig 2022-05-11 07:16:49 UTC
++++ chrome/browser/web_applications/web_app_file_handler_registration.h
+@@ -44,7 +44,7 @@ void UnregisterFileHandlersWithOs(const AppId& app_id,
+ Profile* profile,
+ ResultCallback callback);
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Exposed for testing purposes. Register the set of
+ // MIME-type-to-file-extensions mappings corresponding to |file_handlers|. File
+ // I/O and a a callout to the Linux shell are performed asynchronously.
diff --git a/devel/electron17/files/patch-chrome_browser_web__applications_web__app__install__task.cc b/devel/electron17/files/patch-chrome_browser_web__applications_web__app__install__task.cc
new file mode 100644
index 000000000000..9f20189561de
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_web__applications_web__app__install__task.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/web_applications/web_app_install_task.cc.orig 2022-05-11 07:16:49 UTC
++++ chrome/browser/web_applications/web_app_install_task.cc
+@@ -919,7 +919,7 @@ void WebAppInstallTask::OnInstallFinalizedCreateShortc
+ web_app->CanUserUninstallWebApp();
+ }
+
+-#if defined(OS_WIN) || defined(OS_MAC) || \
++#if defined(OS_WIN) || defined(OS_MAC) || defined(OS_BSD) || \
+ (defined(OS_LINUX) && !BUILDFLAG(IS_CHROMEOS_LACROS))
+ options.os_hooks[OsHookType::kUrlHandlers] = true;
+ #else
diff --git a/devel/electron17/files/patch-chrome_browser_web__applications_web__app__provider.cc b/devel/electron17/files/patch-chrome_browser_web__applications_web__app__provider.cc
new file mode 100644
index 000000000000..6329d5463112
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_web__applications_web__app__provider.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/web_applications/web_app_provider.cc.orig 2022-05-11 07:16:49 UTC
++++ chrome/browser/web_applications/web_app_provider.cc
+@@ -276,7 +276,7 @@ void WebAppProvider::CreateSubsystems(Profile* profile
+ protocol_handler_manager.get());
+
+ std::unique_ptr<UrlHandlerManager> url_handler_manager;
+-#if defined(OS_WIN) || defined(OS_MAC) || \
++#if defined(OS_WIN) || defined(OS_MAC) || defined(OS_BSD) || \
+ (defined(OS_LINUX) && !BUILDFLAG(IS_CHROMEOS_LACROS))
+ url_handler_manager = std::make_unique<UrlHandlerManagerImpl>(profile);
+ #endif
diff --git a/devel/electron17/files/patch-chrome_browser_web__applications_web__app__shortcut.cc b/devel/electron17/files/patch-chrome_browser_web__applications_web__app__shortcut.cc
new file mode 100644
index 000000000000..56daa73baae4
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_web__applications_web__app__shortcut.cc
@@ -0,0 +1,38 @@
+--- chrome/browser/web_applications/web_app_shortcut.cc.orig 2022-05-11 07:16:49 UTC
++++ chrome/browser/web_applications/web_app_shortcut.cc
+@@ -44,7 +44,7 @@ namespace {
+
+ #if defined(OS_MAC)
+ const int kDesiredIconSizesForShortcut[] = {16, 32, 128, 256, 512};
+-#elif defined(OS_LINUX) || defined(OS_CHROMEOS)
++#elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // Linux supports icons of any size. FreeDesktop Icon Theme Specification states
+ // that "Minimally you should install a 48x48 icon in the hicolor theme."
+ const int kDesiredIconSizesForShortcut[] = {16, 32, 48, 128, 256, 512};
+@@ -134,7 +134,7 @@ ScopedShortcutOverrideForTesting::~ScopedShortcutOverr
+ }
+ }
+ }
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ directories = {&desktop};
+ #endif
+ for (base::ScopedTempDir* dir : directories) {
+@@ -178,7 +178,7 @@ std::unique_ptr<ScopedShortcutOverrideForTesting> Over
+ scoped_override->chrome_apps_folder.CreateUniqueTempDirUnderPath(
+ base_path);
+ DCHECK(success);
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ bool success =
+ scoped_override->desktop.CreateUniqueTempDirUnderPath(base_path);
+ DCHECK(success);
+@@ -196,7 +196,7 @@ std::unique_ptr<ScopedShortcutOverrideForTesting> Over
+ #elif defined(OS_MAC)
+ bool success = scoped_override->chrome_apps_folder.CreateUniqueTempDir();
+ DCHECK(success);
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ bool success = scoped_override->desktop.CreateUniqueTempDir();
+ DCHECK(success);
+ #endif
diff --git a/devel/electron17/files/patch-chrome_browser_web__applications_web__app__shortcut.h b/devel/electron17/files/patch-chrome_browser_web__applications_web__app__shortcut.h
new file mode 100644
index 000000000000..d89accf170eb
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_web__applications_web__app__shortcut.h
@@ -0,0 +1,29 @@
+--- chrome/browser/web_applications/web_app_shortcut.h.orig 2022-05-11 07:16:49 UTC
++++ chrome/browser/web_applications/web_app_shortcut.h
+@@ -19,7 +19,7 @@
+ #include "ui/gfx/image/image_family.h"
+ #include "url/gurl.h"
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "chrome/browser/web_applications/web_app_shortcut_linux.h"
+ #endif // defined(OS_LINUX)
+
+@@ -47,7 +47,7 @@ struct ScopedShortcutOverrideForTesting {
+ base::ScopedTempDir startup;
+ #elif defined(OS_MAC)
+ base::ScopedTempDir chrome_apps_folder;
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ base::ScopedTempDir desktop;
+ #endif
+ };
+@@ -89,7 +89,7 @@ struct ShortcutInfo {
+ std::set<std::string> file_handler_extensions;
+ std::set<std::string> file_handler_mime_types;
+ std::set<std::string> protocol_handlers;
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ std::set<DesktopActionInfo> actions;
+ #endif // defined(OS_LINUX)
+
diff --git a/devel/electron17/files/patch-chrome_browser_web__applications_web__app__shortcut__manager.cc b/devel/electron17/files/patch-chrome_browser_web__applications_web__app__shortcut__manager.cc
new file mode 100644
index 000000000000..9ec4a76f3684
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_browser_web__applications_web__app__shortcut__manager.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/web_applications/web_app_shortcut_manager.cc.orig 2022-05-11 07:16:49 UTC
++++ chrome/browser/web_applications/web_app_shortcut_manager.cc
+@@ -35,7 +35,7 @@ namespace web_app {
+
+ namespace {
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Aligns with other platform implementations that only support 10 items.
+ constexpr int kMaxApplicationDockMenuItems = 10;
+ #endif // defined(OS_LINUX)
+@@ -382,7 +382,7 @@ std::unique_ptr<ShortcutInfo> WebAppShortcutManager::B
+ }
+ }
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ const std::vector<WebAppShortcutsMenuItemInfo>& shortcuts_menu_item_infos =
+ app->shortcuts_menu_item_infos();
+ int num_entries = std::min(static_cast<int>(shortcuts_menu_item_infos.size()),
diff --git a/devel/electron17/files/patch-chrome_common_channel__info.h b/devel/electron17/files/patch-chrome_common_channel__info.h
new file mode 100644
index 000000000000..16941f4d1164
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_common_channel__info.h
@@ -0,0 +1,11 @@
+--- chrome/common/channel_info.h.orig 2021-11-19 04:25:11 UTC
++++ chrome/common/channel_info.h
+@@ -107,7 +107,7 @@ std::string GetChannelSuffixForDataDir();
+
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ // Returns the channel-specific filename of the desktop shortcut used to launch
+ // the browser.
+ std::string GetDesktopName(base::Environment* env);
diff --git a/devel/electron17/files/patch-chrome_common_channel__info__posix.cc b/devel/electron17/files/patch-chrome_common_channel__info__posix.cc
new file mode 100644
index 000000000000..d02ac23f4117
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_common_channel__info__posix.cc
@@ -0,0 +1,11 @@
+--- chrome/common/channel_info_posix.cc.orig 2022-05-11 07:16:49 UTC
++++ chrome/common/channel_info_posix.cc
+@@ -93,7 +93,7 @@ std::string GetChannelSuffixForDataDir() {
+
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ std::string GetDesktopName(base::Environment* env) {
+ #if BUILDFLAG(GOOGLE_CHROME_BRANDING)
+ // Google Chrome packaged as a snap is a special case: the application name
diff --git a/devel/electron17/files/patch-chrome_common_chrome__features.cc b/devel/electron17/files/patch-chrome_common_chrome__features.cc
new file mode 100644
index 000000000000..722a81a753a4
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_common_chrome__features.cc
@@ -0,0 +1,83 @@
+--- chrome/common/chrome_features.cc.orig 2022-05-11 07:16:49 UTC
++++ chrome/common/chrome_features.cc
+@@ -110,7 +110,7 @@ const base::Feature kAsyncDns {
+ };
+
+ #if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || \
+- defined(OS_CHROMEOS) || defined(OS_FUCHSIA)
++ defined(OS_CHROMEOS) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ // Enables or disables the Autofill survey triggered by opening a prompt to
+ // save address info.
+ const base::Feature kAutofillAddressSurvey{"AutofillAddressSurvey",
+@@ -125,7 +125,7 @@ const base::Feature kAutofillPasswordSurvey{"AutofillP
+ base::FEATURE_DISABLED_BY_DEFAULT};
+ #endif
+
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // Enables the Restart background mode optimization. When all Chrome UI is
+ // closed and it goes in the background, allows to restart the browser to
+ // discard memory.
+@@ -142,7 +142,7 @@ const base::Feature kBorealis{"Borealis", base::FEATUR
+ const base::Feature kChangePictureVideoMode{"ChangePictureVideoMode",
+ base::FEATURE_ENABLED_BY_DEFAULT};
+
+-#if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || defined(OS_BSD)
+ // Controls whether Chrome Apps are supported. See https://crbug.com/1221251.
+ // If the feature is disabled, Chrome Apps continue to work. If enabled, Chrome
+ // Apps will not launch and will be marked in the UI as deprecated.
+@@ -255,7 +255,7 @@ const base::Feature kPreinstalledWebAppInstallation{
+ #endif
+
+ #if BUILDFLAG(IS_CHROMEOS_ASH) || defined(OS_MAC) || defined(OS_LINUX) || \
+- defined(OS_FUCHSIA)
++ defined(OS_FUCHSIA) || defined(OS_BSD)
+ // Enables Desktop PWAs shortcuts menu to be visible and executable in ChromeOS,
+ // MacOS and Linux.
+ const base::Feature kDesktopPWAsAppIconShortcutsMenuUI{
+@@ -303,7 +303,7 @@ const base::Feature kDesktopPWAsNotificationIconAndTit
+ // Enables or disables Desktop PWAs to be auto-started on OS login.
+ const base::Feature kDesktopPWAsRunOnOsLogin {
+ "DesktopPWAsRunOnOsLogin",
+-#if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || defined(OS_BSD)
+ base::FEATURE_ENABLED_BY_DEFAULT
+ #else
+ base::FEATURE_DISABLED_BY_DEFAULT
+@@ -337,7 +337,7 @@ const base::FeatureParam<int> kDisableHttpDiskCacheMem
+ const base::Feature kDnsOverHttps {
+ "DnsOverHttps",
+ #if defined(OS_WIN) || defined(OS_CHROMEOS) || defined(OS_MAC) || \
+- defined(OS_ANDROID) || defined(OS_LINUX)
++ defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_BSD)
+ base::FEATURE_ENABLED_BY_DEFAULT
+ #else
+ base::FEATURE_DISABLED_BY_DEFAULT
+@@ -359,7 +359,7 @@ const base::FeatureParam<bool> kDnsOverHttpsFallbackPa
+ const base::FeatureParam<bool> kDnsOverHttpsShowUiParam {
+ &kDnsOverHttps, "ShowUi",
+ #if defined(OS_WIN) || defined(OS_CHROMEOS) || defined(OS_MAC) || \
+- defined(OS_ANDROID) || defined(OS_LINUX)
++ defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_BSD)
+ true
+ #else
+ false
+@@ -633,7 +633,7 @@ const base::Feature kIncognitoNtpRevamp{"IncognitoNtpR
+ base::FEATURE_DISABLED_BY_DEFAULT};
+
+ #if defined(OS_MAC) || defined(OS_WIN) || defined(OS_LINUX) || \
+- defined(OS_CHROMEOS) || defined(OS_FUCHSIA)
++ defined(OS_CHROMEOS) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ // When enabled, removes any theme or background customization done by the user
+ // on the Incognito UI.
+ const base::Feature kIncognitoBrandConsistencyForDesktop{
+@@ -675,7 +675,7 @@ const base::Feature kKernelnextVMs{"KernelnextVMs",
+ base::FEATURE_DISABLED_BY_DEFAULT};
+ #endif
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ COMPONENT_EXPORT(CHROME_FEATURES)
+ const base::Feature kLinuxLowMemoryMonitor{"LinuxLowMemoryMonitor",
+ base::FEATURE_DISABLED_BY_DEFAULT};
diff --git a/devel/electron17/files/patch-chrome_common_chrome__features.h b/devel/electron17/files/patch-chrome_common_chrome__features.h
new file mode 100644
index 000000000000..25f0406cd423
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_common_chrome__features.h
@@ -0,0 +1,56 @@
+--- chrome/common/chrome_features.h.orig 2022-05-11 07:16:49 UTC
++++ chrome/common/chrome_features.h
+@@ -92,7 +92,7 @@ extern const base::Feature kArcPiGhostWindow;
+ COMPONENT_EXPORT(CHROME_FEATURES) extern const base::Feature kAsyncDns;
+
+ #if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || \
+- defined(OS_CHROMEOS) || defined(OS_FUCHSIA)
++ defined(OS_CHROMEOS) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ COMPONENT_EXPORT(CHROME_FEATURES)
+ extern const base::Feature kAutofillAddressSurvey;
+ COMPONENT_EXPORT(CHROME_FEATURES)
+@@ -101,7 +101,7 @@ COMPONENT_EXPORT(CHROME_FEATURES)
+ extern const base::Feature kAutofillPasswordSurvey;
+ #endif
+
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ COMPONENT_EXPORT(CHROME_FEATURES)
+ extern const base::Feature kBackgroundModeAllowRestart;
+ #endif // defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS)
+@@ -118,7 +118,7 @@ extern const base::Feature kBrowserAppInstanceTracking
+ COMPONENT_EXPORT(CHROME_FEATURES)
+ extern const base::Feature kChangePictureVideoMode;
+
+-#if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || defined(OS_BSD)
+ COMPONENT_EXPORT(CHROME_FEATURES)
+ extern const base::Feature kChromeAppsDeprecation;
+ #endif
+@@ -183,7 +183,7 @@ extern const base::Feature kPreinstalledWebAppInstalla
+ #endif
+
+ #if BUILDFLAG(IS_CHROMEOS_ASH) || defined(OS_MAC) || defined(OS_LINUX) || \
+- defined(OS_FUCHSIA)
++ defined(OS_FUCHSIA) || defined(OS_BSD)
+ COMPONENT_EXPORT(CHROME_FEATURES)
+ extern const base::Feature kDesktopPWAsAppIconShortcutsMenuUI;
+ #endif
+@@ -418,7 +418,7 @@ COMPONENT_EXPORT(CHROME_FEATURES)
+ extern const base::Feature kIncognitoNtpRevamp;
+
+ #if defined(OS_MAC) || defined(OS_WIN) || defined(OS_LINUX) || \
+- defined(OS_CHROMEOS) || defined(OS_FUCHSIA)
++ defined(OS_CHROMEOS) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ COMPONENT_EXPORT(CHROME_FEATURES)
+ extern const base::Feature kIncognitoBrandConsistencyForDesktop;
+
+@@ -445,7 +445,7 @@ COMPONENT_EXPORT(CHROME_FEATURES)
+ extern const base::Feature kKernelnextVMs;
+ #endif
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ COMPONENT_EXPORT(CHROME_FEATURES)
+ extern const base::Feature kLinuxLowMemoryMonitor;
+ COMPONENT_EXPORT(CHROME_FEATURES)
diff --git a/devel/electron17/files/patch-chrome_common_chrome__paths.cc b/devel/electron17/files/patch-chrome_common_chrome__paths.cc
new file mode 100644
index 000000000000..da3ce1e6947a
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_common_chrome__paths.cc
@@ -0,0 +1,80 @@
+--- chrome/common/chrome_paths.cc.orig 2022-05-11 07:16:49 UTC
++++ chrome/common/chrome_paths.cc
+@@ -44,14 +44,14 @@
+
+ namespace {
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // The path to the external extension <id>.json files.
+ // /usr/share seems like a good choice, see: http://www.pathname.com/fhs/
+ const base::FilePath::CharType kFilepathSinglePrefExtensions[] =
+ #if BUILDFLAG(GOOGLE_CHROME_BRANDING)
+- FILE_PATH_LITERAL("/usr/share/google-chrome/extensions");
++ FILE_PATH_LITERAL("/usr/local/share/chromium/extensions");
+ #else
+- FILE_PATH_LITERAL("/usr/share/chromium/extensions");
++ FILE_PATH_LITERAL("/usr/local/share/chromium/extensions");
+ #endif // BUILDFLAG(GOOGLE_CHROME_BRANDING)
+
+ #endif // defined(OS_LINUX) || defined(OS_CHROMEOS)
+@@ -178,7 +178,7 @@ bool PathProvider(int key, base::FilePath* result) {
+ return false;
+ break;
+ case chrome::DIR_DEFAULT_DOWNLOADS_SAFE:
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ if (!GetUserDownloadsDirectorySafe(&cur))
+ return false;
+ break;
+@@ -411,10 +411,12 @@ bool PathProvider(int key, base::FilePath* result) {
+ if (!base::PathExists(cur)) // We don't want to create this
+ return false;
+ break;
+-#if defined(OS_POSIX) && !defined(OS_MAC) && !defined(OS_OPENBSD)
++#if defined(OS_POSIX) && !defined(OS_MAC)
+ case chrome::DIR_POLICY_FILES: {
+ #if BUILDFLAG(GOOGLE_CHROME_BRANDING)
+ cur = base::FilePath(FILE_PATH_LITERAL("/etc/opt/chrome/policies"));
++#elif defined(OS_FREEBSD)
++ cur = base::FilePath(FILE_PATH_LITERAL("/usr/local/etc/chromium/policies"));
+ #else
+ cur = base::FilePath(FILE_PATH_LITERAL("/etc/chromium/policies"));
+ #endif
+@@ -424,7 +426,7 @@ bool PathProvider(int key, base::FilePath* result) {
+ // TODO(crbug.com/1052397): Revisit once build flag switch of lacros-chrome is
+ // complete.
+ #if BUILDFLAG(IS_CHROMEOS_ASH) || \
+- ((defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) && \
++ ((defined(OS_LINUX) || defined(OS_BSD) || BUILDFLAG(IS_CHROMEOS_LACROS)) && \
+ BUILDFLAG(CHROMIUM_BRANDING)) || \
+ defined(OS_MAC)
+ case chrome::DIR_USER_EXTERNAL_EXTENSIONS: {
+@@ -434,7 +436,7 @@ bool PathProvider(int key, base::FilePath* result) {
+ break;
+ }
+ #endif
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ case chrome::DIR_STANDALONE_EXTERNAL_EXTENSIONS: {
+ cur = base::FilePath(kFilepathSinglePrefExtensions);
+ break;
+@@ -479,7 +481,7 @@ bool PathProvider(int key, base::FilePath* result) {
+ break;
+ #endif
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC) || defined(OS_BSD)
+ case chrome::DIR_NATIVE_MESSAGING:
+ #if defined(OS_MAC)
+ #if BUILDFLAG(GOOGLE_CHROME_BRANDING)
+@@ -493,6 +495,9 @@ bool PathProvider(int key, base::FilePath* result) {
+ #if BUILDFLAG(GOOGLE_CHROME_BRANDING)
+ cur = base::FilePath(FILE_PATH_LITERAL(
+ "/etc/opt/chrome/native-messaging-hosts"));
++#elif defined(OS_FREEBSD)
++ cur = base::FilePath(FILE_PATH_LITERAL(
++ "/usr/local/etc/chromium/native-messaging-hosts"));
+ #else
+ cur = base::FilePath(FILE_PATH_LITERAL(
+ "/etc/chromium/native-messaging-hosts"));
diff --git a/devel/electron17/files/patch-chrome_common_chrome__paths.h b/devel/electron17/files/patch-chrome_common_chrome__paths.h
new file mode 100644
index 000000000000..7cb024be3cec
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_common_chrome__paths.h
@@ -0,0 +1,29 @@
+--- chrome/common/chrome_paths.h.orig 2022-05-11 07:16:49 UTC
++++ chrome/common/chrome_paths.h
+@@ -54,7 +54,7 @@ enum {
+ // TODO(crbug.com/1052397): Revisit once build flag switch of lacros-chrome is
+ // complete.
+ #if BUILDFLAG(IS_CHROMEOS_ASH) || \
+- ((defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) && \
++ ((defined(OS_LINUX) || defined(OS_BSD) || BUILDFLAG(IS_CHROMEOS_LACROS)) && \
+ BUILDFLAG(CHROMIUM_BRANDING)) || \
+ defined(OS_MAC)
+ DIR_USER_EXTERNAL_EXTENSIONS, // Directory for per-user external extensions
+@@ -64,7 +64,7 @@ enum {
+ // create it.
+ #endif
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ DIR_STANDALONE_EXTERNAL_EXTENSIONS, // Directory for 'per-extension'
+ // definition manifest files that
+ // describe extensions which are to be
+@@ -105,7 +105,7 @@ enum {
+ DIR_CHROMEOS_CUSTOM_WALLPAPERS, // Directory where custom wallpapers
+ // reside.
+ #endif
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC) || defined(OS_BSD)
+ DIR_NATIVE_MESSAGING, // System directory where native messaging host
+ // manifest files are stored.
+ DIR_USER_NATIVE_MESSAGING, // Directory with Native Messaging Hosts
diff --git a/devel/electron17/files/patch-chrome_common_chrome__paths__internal.h b/devel/electron17/files/patch-chrome_common_chrome__paths__internal.h
new file mode 100644
index 000000000000..3f879de7a7ac
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_common_chrome__paths__internal.h
@@ -0,0 +1,11 @@
+--- chrome/common/chrome_paths_internal.h.orig 2021-01-07 00:36:25 UTC
++++ chrome/common/chrome_paths_internal.h
+@@ -45,7 +45,7 @@ void GetUserCacheDirectory(const base::FilePath& profi
+ // Get the path to the user's documents directory.
+ bool GetUserDocumentsDirectory(base::FilePath* result);
+
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // Gets the path to a safe default download directory for a user.
+ bool GetUserDownloadsDirectorySafe(base::FilePath* result);
+ #endif
diff --git a/devel/electron17/files/patch-chrome_common_chrome__switches.cc b/devel/electron17/files/patch-chrome_common_chrome__switches.cc
new file mode 100644
index 000000000000..f0e09ab88aa3
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_common_chrome__switches.cc
@@ -0,0 +1,11 @@
+--- chrome/common/chrome_switches.cc.orig 2022-05-11 07:16:49 UTC
++++ chrome/common/chrome_switches.cc
+@@ -801,7 +801,7 @@ const char kAllowNaClSocketAPI[] = "allow-n
+ #endif
+
+ #if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC) || \
+- defined(OS_WIN) || defined(OS_FUCHSIA)
++ defined(OS_WIN) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ const char kEnableNewAppMenuIcon[] = "enable-new-app-menu-icon";
+
+ // Causes the browser to launch directly in guest mode.
diff --git a/devel/electron17/files/patch-chrome_common_chrome__switches.h b/devel/electron17/files/patch-chrome_common_chrome__switches.h
new file mode 100644
index 000000000000..2ed07a71d701
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_common_chrome__switches.h
@@ -0,0 +1,11 @@
+--- chrome/common/chrome_switches.h.orig 2022-05-11 07:16:49 UTC
++++ chrome/common/chrome_switches.h
+@@ -249,7 +249,7 @@ extern const char kAllowNaClSocketAPI[];
+ #endif
+
+ #if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC) || \
+- defined(OS_WIN) || defined(OS_FUCHSIA)
++ defined(OS_WIN) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ extern const char kEnableNewAppMenuIcon[];
+ extern const char kGuest[];
+ #endif
diff --git a/devel/electron17/files/patch-chrome_common_extensions_command.cc b/devel/electron17/files/patch-chrome_common_extensions_command.cc
new file mode 100644
index 000000000000..291dddeb7c2d
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_common_extensions_command.cc
@@ -0,0 +1,11 @@
+--- chrome/common/extensions/command.cc.orig 2021-10-08 06:25:42 UTC
++++ chrome/common/extensions/command.cc
+@@ -294,7 +294,7 @@ std::string Command::CommandPlatform() {
+ return values::kKeybindingPlatformMac;
+ #elif BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_CHROMEOS_LACROS)
+ return values::kKeybindingPlatformChromeOs;
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ return values::kKeybindingPlatformLinux;
+ #else
+ return "";
diff --git a/devel/electron17/files/patch-chrome_common_media_cdm__host__file__path.cc b/devel/electron17/files/patch-chrome_common_media_cdm__host__file__path.cc
new file mode 100644
index 000000000000..672523bff8e1
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_common_media_cdm__host__file__path.cc
@@ -0,0 +1,11 @@
+--- chrome/common/media/cdm_host_file_path.cc.orig 2022-05-11 07:16:49 UTC
++++ chrome/common/media/cdm_host_file_path.cc
+@@ -95,7 +95,7 @@ void AddCdmHostFilePaths(
+ cdm_host_file_paths->emplace_back(chrome_framework_path,
+ chrome_framework_sig_path);
+
+-#elif defined(OS_LINUX) || defined(OS_CHROMEOS)
++#elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+
+ base::FilePath chrome_exe_dir;
+ if (!base::PathService::Get(base::DIR_EXE, &chrome_exe_dir))
diff --git a/devel/electron17/files/patch-chrome_common_pref__names.cc b/devel/electron17/files/patch-chrome_common_pref__names.cc
new file mode 100644
index 000000000000..40d471be24e5
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_common_pref__names.cc
@@ -0,0 +1,56 @@
+--- chrome/common/pref_names.cc.orig 2022-05-11 07:16:49 UTC
++++ chrome/common/pref_names.cc
+@@ -1176,7 +1176,7 @@ const char kUseAshProxy[] = "lacros.proxy.use_ash_prox
+
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ // Linux specific preference on whether we should match the system theme.
+ const char kUsesSystemTheme[] = "extensions.theme.use_system";
+ #endif
+@@ -1279,7 +1279,7 @@ const char kShowUpdatePromotionInfoBar[] =
+
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ // Boolean that is false if we should show window manager decorations. If
+ // true, we draw a custom chrome frame (thicker title bar and blue border).
+ const char kUseCustomChromeFrame[] = "browser.custom_chrome_frame";
+@@ -1753,7 +1753,7 @@ const char kDownloadDefaultDirectory[] = "download.def
+ const char kDownloadDirUpgraded[] = "download.directory_upgrade";
+
+ #if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) || \
+- defined(OS_MAC)
++ defined(OS_MAC) || defined(OS_BSD)
+ const char kOpenPdfDownloadInSystemReader[] =
+ "download.open_pdf_in_system_reader";
+ #endif
+@@ -2040,7 +2040,7 @@ const char kWebAppsPreferences[] = "web_apps.web_app_i
+ // its isolation requirements.
+ const char kWebAppsIsolationState[] = "web_apps.isolation_state";
+
+-#if defined(OS_WIN) || defined(OS_MAC) || \
++#if defined(OS_WIN) || defined(OS_MAC) || defined(OS_BSD) || \
+ (defined(OS_LINUX) && !BUILDFLAG(IS_CHROMEOS_LACROS))
+ // Dictionary that maps origins to web apps that can act as URL handlers.
+ const char kWebAppsUrlHandlerInfo[] = "web_apps.url_handler_info";
+@@ -2168,7 +2168,7 @@ const char kAmbientAuthenticationInPrivateModesEnabled
+ // requests.
+ const char kBasicAuthOverHttpEnabled[] = "auth.basic_over_http_enabled";
+
+-#if defined(OS_LINUX) || defined(OS_MAC) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_MAC) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // Boolean that specifies whether OK-AS-DELEGATE flag from KDC is respected
+ // along with kAuthNegotiateDelegateAllowlist.
+ const char kAuthNegotiateDelegateByKdcPolicy[] =
+@@ -3124,7 +3124,7 @@ const char kBlockAutoplayEnabled[] = "media.block_auto
+ const char kSandboxExternalProtocolBlocked[] =
+ "profile.sandbox_external_protocol_blocked";
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Boolean that indicates if native notifications are allowed to be used in
+ // place of Chrome notifications. Will be replaced by kAllowSystemNotifications.
+ const char kAllowNativeNotifications[] = "native_notifications.allowed";
diff --git a/devel/electron17/files/patch-chrome_common_pref__names.h b/devel/electron17/files/patch-chrome_common_pref__names.h
new file mode 100644
index 000000000000..0391f5a80f66
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_common_pref__names.h
@@ -0,0 +1,56 @@
+--- chrome/common/pref_names.h.orig 2022-05-11 07:16:49 UTC
++++ chrome/common/pref_names.h
+@@ -371,7 +371,7 @@ extern const char kUseAshProxy[];
+ #endif // BUILDFLAG(IS_CHROMEOS_LACROS)
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ extern const char kUsesSystemTheme[];
+ #endif
+ extern const char kCurrentThemePackFilename[];
+@@ -400,7 +400,7 @@ extern const char kShowUpdatePromotionInfoBar[];
+ #endif
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ extern const char kUseCustomChromeFrame[];
+ #endif
+ #if BUILDFLAG(ENABLE_PLUGINS)
+@@ -583,7 +583,7 @@ extern const char kDownloadExtensionsToOpenByPolicy[];
+ extern const char kDownloadAllowedURLsForOpenByPolicy[];
+ extern const char kDownloadDirUpgraded[];
+ #if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) || \
+- defined(OS_MAC)
++ defined(OS_MAC) || defined(OS_BSD)
+ extern const char kOpenPdfDownloadInSystemReader[];
+ #endif
+ #if defined(OS_ANDROID)
+@@ -689,7 +689,7 @@ extern const char kWebAppsUninstalledDefaultChromeApps
+ extern const char kWebAppsPreferences[];
+ extern const char kWebAppsIsolationState[];
+
+-#if defined(OS_WIN) || defined(OS_MAC) || \
++#if defined(OS_WIN) || defined(OS_MAC) || defined(OS_BSD) || \
+ (defined(OS_LINUX) && !BUILDFLAG(IS_CHROMEOS_LACROS))
+ extern const char kWebAppsUrlHandlerInfo[];
+ #endif
+@@ -830,7 +830,7 @@ extern const char kGloballyScopeHTTPAuthCacheEnabled[]
+ extern const char kAmbientAuthenticationInPrivateModesEnabled[];
+ extern const char kBasicAuthOverHttpEnabled[];
+
+-#if defined(OS_LINUX) || defined(OS_MAC) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_MAC) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ extern const char kAuthNegotiateDelegateByKdcPolicy[];
+ #endif // defined(OS_LINUX) || defined(OS_MAC) || defined(OS_CHROMEOS)
+
+@@ -1074,7 +1074,7 @@ extern const char kBlockAutoplayEnabled[];
+ #endif
+ extern const char kSandboxExternalProtocolBlocked[];
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ extern const char kAllowNativeNotifications[];
+ extern const char kAllowSystemNotifications[];
+ #endif
diff --git a/devel/electron17/files/patch-chrome_common_webui__url__constants.cc b/devel/electron17/files/patch-chrome_common_webui__url__constants.cc
new file mode 100644
index 000000000000..8b01ba864966
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_common_webui__url__constants.cc
@@ -0,0 +1,81 @@
+--- chrome/common/webui_url_constants.cc.orig 2022-05-11 07:16:49 UTC
++++ chrome/common/webui_url_constants.cc
+@@ -424,18 +424,18 @@ const char kOsUIFlagsURL[] = "os://flags";
+ const char kOsUIVersionURL[] = "os://version";
+ #endif
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ const char kChromeUIWebUIJsErrorHost[] = "webuijserror";
+ const char kChromeUIWebUIJsErrorURL[] = "chrome://webuijserror/";
+ #endif
+
+ #if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || \
+- defined(OS_CHROMEOS)
++ defined(OS_CHROMEOS) || defined(OS_BSD)
+ const char kChromeUIConnectorsInternalsHost[] = "connectors-internals";
+ #endif
+
+ #if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || \
+- defined(OS_CHROMEOS)
++ defined(OS_CHROMEOS) || defined(OS_BSD)
+ const char kChromeUIDiscardsHost[] = "discards";
+ const char kChromeUIDiscardsURL[] = "chrome://discards/";
+ #endif
+@@ -450,14 +450,14 @@ const char kChromeUILinuxProxyConfigHost[] = "linux-pr
+ #endif
+
+ #if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) || \
+- defined(OS_ANDROID)
++ defined(OS_ANDROID) || defined(OS_BSD)
+ const char kChromeUISandboxHost[] = "sandbox";
+ #endif
+
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+ #if defined(OS_WIN) || defined(OS_MAC) || defined(OS_FUCHSIA) || \
+- (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
++ (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) || defined(OS_BSD)
+ const char kChromeUIBrowserSwitchHost[] = "browser-switch";
+ const char kChromeUIBrowserSwitchURL[] = "chrome://browser-switch/";
+ const char kChromeUIEnterpriseProfileWelcomeHost[] =
+@@ -472,7 +472,7 @@ const char kChromeUIProfilePickerUrl[] = "chrome://pro
+ const char kChromeUIProfilePickerStartupQuery[] = "startup";
+ #endif
+
+-#if ((defined(OS_LINUX) || defined(OS_CHROMEOS)) && defined(TOOLKIT_VIEWS)) || \
++#if ((defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)) && defined(TOOLKIT_VIEWS)) || \
+ defined(USE_AURA)
+ const char kChromeUITabModalConfirmDialogHost[] = "tab-modal-confirm-dialog";
+ #endif
+@@ -661,18 +661,18 @@ const char* const kChromeHostURLs[] = {
+ kChromeUIAssistantOptInHost,
+ #endif
+ #if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || \
+- defined(OS_CHROMEOS)
++ defined(OS_CHROMEOS) || defined(OS_BSD)
+ kChromeUIConnectorsInternalsHost,
+ #endif
+ #if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || \
+- defined(OS_CHROMEOS)
++ defined(OS_CHROMEOS) || defined(OS_BSD)
+ kChromeUIDiscardsHost,
+ #endif
+ #if defined(OS_POSIX) && !defined(OS_MAC) && !defined(OS_ANDROID)
+ kChromeUILinuxProxyConfigHost,
+ #endif
+ #if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) || \
+- defined(OS_ANDROID)
++ defined(OS_ANDROID) || defined(OS_BSD)
+ kChromeUISandboxHost,
+ #endif
+ #if defined(OS_WIN)
+@@ -729,7 +729,7 @@ const char* const kChromeDebugURLs[] = {
+ blink::kChromeUIGpuJavaCrashURL,
+ kChromeUIJavaCrashURL,
+ #endif
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ kChromeUIWebUIJsErrorURL,
+ #endif
+ kChromeUIQuitURL,
diff --git a/devel/electron17/files/patch-chrome_common_webui__url__constants.h b/devel/electron17/files/patch-chrome_common_webui__url__constants.h
new file mode 100644
index 000000000000..4fa4ba31bf83
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_common_webui__url__constants.h
@@ -0,0 +1,50 @@
+--- chrome/common/webui_url_constants.h.orig 2022-05-11 07:16:49 UTC
++++ chrome/common/webui_url_constants.h
+@@ -368,18 +368,18 @@ extern const char kOsUIFlagsURL[];
+ extern const char kOsUIVersionURL[];
+ #endif
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ extern const char kChromeUIWebUIJsErrorHost[];
+ extern const char kChromeUIWebUIJsErrorURL[];
+ #endif
+
+ #if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || \
+- defined(OS_CHROMEOS)
++ defined(OS_CHROMEOS) || defined(OS_BSD)
+ extern const char kChromeUIConnectorsInternalsHost[];
+ #endif
+
+ #if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || \
+- defined(OS_CHROMEOS) || defined(OS_FUCHSIA)
++ defined(OS_CHROMEOS) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ extern const char kChromeUIDiscardsHost[];
+ extern const char kChromeUIDiscardsURL[];
+ #endif
+@@ -394,14 +394,14 @@ extern const char kChromeUILinuxProxyConfigHost[];
+ #endif
+
+ #if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) || \
+- defined(OS_ANDROID)
++ defined(OS_ANDROID) || defined(OS_BSD)
+ extern const char kChromeUISandboxHost[];
+ #endif
+
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+ #if defined(OS_WIN) || defined(OS_MAC) || defined(OS_FUCHSIA) || \
+- (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
++ (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) || defined(OS_BSD)
+ extern const char kChromeUIBrowserSwitchHost[];
+ extern const char kChromeUIBrowserSwitchURL[];
+ extern const char kChromeUIEnterpriseProfileWelcomeHost[];
+@@ -413,7 +413,7 @@ extern const char kChromeUIProfilePickerUrl[];
+ extern const char kChromeUIProfilePickerStartupQuery[];
+ #endif
+
+-#if ((defined(OS_LINUX) || defined(OS_CHROMEOS)) && defined(TOOLKIT_VIEWS)) || \
++#if ((defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)) && defined(TOOLKIT_VIEWS)) || \
+ defined(USE_AURA)
+ extern const char kChromeUITabModalConfirmDialogHost[];
+ #endif
diff --git a/devel/electron17/files/patch-chrome_renderer_chrome__render__frame__observer.cc b/devel/electron17/files/patch-chrome_renderer_chrome__render__frame__observer.cc
new file mode 100644
index 000000000000..6f6f99211e33
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_renderer_chrome__render__frame__observer.cc
@@ -0,0 +1,11 @@
+--- chrome/renderer/chrome_render_frame_observer.cc.orig 2022-05-11 07:16:49 UTC
++++ chrome/renderer/chrome_render_frame_observer.cc
+@@ -281,7 +281,7 @@ void ChromeRenderFrameObserver::OnDestruct() {
+
+ void ChromeRenderFrameObserver::DraggableRegionsChanged() {
+ #if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || \
+- defined(OS_CHROMEOS)
++ defined(OS_CHROMEOS) || defined(OS_BSD)
+ // Only the main frame is allowed to control draggable regions, to avoid other
+ // frames manipulate the regions in the browser process.
+ if (!render_frame()->IsMainFrame())
diff --git a/devel/electron17/files/patch-chrome_renderer_pepper_pepper__flash__font__file__host.cc b/devel/electron17/files/patch-chrome_renderer_pepper_pepper__flash__font__file__host.cc
new file mode 100644
index 000000000000..4b99eb331ea7
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_renderer_pepper_pepper__flash__font__file__host.cc
@@ -0,0 +1,29 @@
+--- chrome/renderer/pepper/pepper_flash_font_file_host.cc.orig 2021-09-14 01:51:52 UTC
++++ chrome/renderer/pepper/pepper_flash_font_file_host.cc
+@@ -16,7 +16,7 @@
+ #include "ppapi/proxy/ppapi_messages.h"
+ #include "ppapi/proxy/serialized_structs.h"
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_OPENBSD)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ #include "components/services/font/public/cpp/font_loader.h"
+ #include "pdf/font_table_linux.h"
+ #elif defined(OS_WIN)
+@@ -30,7 +30,7 @@ PepperFlashFontFileHost::PepperFlashFontFileHost(
+ const ppapi::proxy::SerializedFontDescription& description,
+ PP_PrivateFontCharset charset)
+ : ResourceHost(host->GetPpapiHost(), instance, resource) {
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // The global SkFontConfigInterface is configured and initialized with a
+ // SkFontconfigInterface compatible font_service::FontLoader in
+ // RendererBlinkPlatformImpl (called from RenderThreadImpl::Init) at startup
+@@ -75,7 +75,7 @@ bool PepperFlashFontFileHost::GetFontData(uint32_t tab
+ void* buffer,
+ size_t* length) {
+ bool result = false;
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ if (font_file_.IsValid()) {
+ result =
+ pdf::GetFontTable(font_file_.GetPlatformFile(), table, /*offset=*/0,
diff --git a/devel/electron17/files/patch-chrome_renderer_pepper_pepper__flash__font__file__host.h b/devel/electron17/files/patch-chrome_renderer_pepper_pepper__flash__font__file__host.h
new file mode 100644
index 000000000000..deed935c8908
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_renderer_pepper_pepper__flash__font__file__host.h
@@ -0,0 +1,20 @@
+--- chrome/renderer/pepper/pepper_flash_font_file_host.h.orig 2022-05-11 07:16:49 UTC
++++ chrome/renderer/pepper/pepper_flash_font_file_host.h
+@@ -12,7 +12,7 @@
+ #include "ppapi/c/private/pp_private_font_charset.h"
+ #include "ppapi/host/resource_host.h"
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_OPENBSD)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ #include "base/files/file.h"
+ #elif defined(OS_WIN)
+ #include "third_party/skia/include/core/SkRefCnt.h"
+@@ -52,7 +52,7 @@ class PepperFlashFontFileHost : public ppapi::host::Re
+ uint32_t table);
+ bool GetFontData(uint32_t table, void* buffer, size_t* length);
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ base::File font_file_;
+ #elif defined(OS_WIN)
+ sk_sp<SkTypeface> typeface_;
diff --git a/devel/electron17/files/patch-chrome_service_cloud__print_print__system.cc b/devel/electron17/files/patch-chrome_service_cloud__print_print__system.cc
new file mode 100644
index 000000000000..affbb174d641
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_service_cloud__print_print__system.cc
@@ -0,0 +1,11 @@
+--- chrome/service/cloud_print/print_system.cc.orig 2021-01-07 00:36:26 UTC
++++ chrome/service/cloud_print/print_system.cc
+@@ -36,7 +36,7 @@ std::string PrintSystem::GenerateProxyId() {
+ return base::GenerateGUID();
+ }
+
+-#if (defined(OS_LINUX) || defined(OS_CHROMEOS)) && !defined(USE_CUPS)
++#if (defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)) && !defined(USE_CUPS)
+ scoped_refptr<PrintSystem> PrintSystem::CreateInstance(
+ const base::DictionaryValue*) {
+ return nullptr;
diff --git a/devel/electron17/files/patch-chrome_services_file__util_public_mojom_safe__document__analyzer__mojom__traits.h b/devel/electron17/files/patch-chrome_services_file__util_public_mojom_safe__document__analyzer__mojom__traits.h
new file mode 100644
index 000000000000..dc690b8e48cb
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_services_file__util_public_mojom_safe__document__analyzer__mojom__traits.h
@@ -0,0 +1,11 @@
+--- chrome/services/file_util/public/mojom/safe_document_analyzer_mojom_traits.h.orig 2022-05-11 07:16:49 UTC
++++ chrome/services/file_util/public/mojom/safe_document_analyzer_mojom_traits.h
+@@ -14,7 +14,7 @@
+ #include "mojo/public/cpp/bindings/enum_traits.h"
+ #include "mojo/public/cpp/bindings/struct_traits.h"
+
+-#if !BUILDFLAG(FULL_SAFE_BROWSING) || (!defined(OS_LINUX) && !defined(OS_WIN))
++#if !BUILDFLAG(FULL_SAFE_BROWSING) || (!defined(OS_LINUX) && !defined(OS_WIN) && !defined(OS_BSD))
+ #error BUILDFLAG(FULL_SAFE_BROWSING) should be set and either OS_LINUX or OS_WIN defined.
+ #endif
+
diff --git a/devel/electron17/files/patch-chrome_services_printing_print__backend__service__impl.cc b/devel/electron17/files/patch-chrome_services_printing_print__backend__service__impl.cc
new file mode 100644
index 000000000000..65171ba6c0e6
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_services_printing_print__backend__service__impl.cc
@@ -0,0 +1,11 @@
+--- chrome/services/printing/print_backend_service_impl.cc.orig 2022-05-11 07:16:49 UTC
++++ chrome/services/printing/print_backend_service_impl.cc
+@@ -404,7 +404,7 @@ void PrintBackendServiceImpl::UpdatePrintSettings(
+ crash_keys_ = std::make_unique<crash_keys::ScopedPrinterInfo>(
+ print_backend_->GetPrinterDriverInfo(printer_name));
+
+-#if defined(OS_LINUX) && defined(USE_CUPS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && defined(USE_CUPS)
+ // Try to fill in advanced settings based upon basic info options.
+ PrinterBasicInfo basic_info;
+ if (print_backend_->GetPrinterBasicInfo(printer_name, &basic_info) ==
diff --git a/devel/electron17/files/patch-chrome_services_speech_audio__source__fetcher__impl.cc b/devel/electron17/files/patch-chrome_services_speech_audio__source__fetcher__impl.cc
new file mode 100644
index 000000000000..ca0f02330e86
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_services_speech_audio__source__fetcher__impl.cc
@@ -0,0 +1,11 @@
+--- chrome/services/speech/audio_source_fetcher_impl.cc.orig 2021-10-08 06:25:42 UTC
++++ chrome/services/speech/audio_source_fetcher_impl.cc
+@@ -68,7 +68,7 @@ void AudioSourceFetcherImpl::Start(
+
+ // TODO(crbug.com/1185978): Check implementation / sandbox policy on Mac and
+ // Windows.
+-#if defined(OS_CHROMEOS) || defined(OS_LINUX)
++#if defined(OS_CHROMEOS) || defined(OS_LINUX) || defined(OS_BSD)
+ is_started_ = true;
+ // Initialize the AudioCapturerSource with |this| as the CaptureCallback,
+ // get the parameters for the device ID, then start audio capture.
diff --git a/devel/electron17/files/patch-chrome_test_BUILD.gn b/devel/electron17/files/patch-chrome_test_BUILD.gn
new file mode 100644
index 000000000000..478789d856ee
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_test_BUILD.gn
@@ -0,0 +1,11 @@
+--- chrome/test/BUILD.gn.orig 2022-05-13 07:19:54 UTC
++++ chrome/test/BUILD.gn
+@@ -8827,7 +8827,7 @@ test("chrome_app_unittests") {
+ "//components/safe_browsing:buildflags",
+ "//pdf:pdf_ppapi",
+ ]
+- if (!is_fuchsia) {
++ if (!is_fuchsia && !is_bsd) {
+ deps += [ "//third_party/breakpad:client" ]
+ }
+ if (enable_gwp_asan) {
diff --git a/devel/electron17/files/patch-chrome_test_chromedriver_chrome__launcher.cc b/devel/electron17/files/patch-chrome_test_chromedriver_chrome__launcher.cc
new file mode 100644
index 000000000000..86f680ac4517
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_test_chromedriver_chrome__launcher.cc
@@ -0,0 +1,10 @@
+--- chrome/test/chromedriver/chrome_launcher.cc.orig 2022-05-11 07:16:49 UTC
++++ chrome/test/chromedriver/chrome_launcher.cc
+@@ -65,6 +65,7 @@
+ #include <fcntl.h>
+ #include <sys/stat.h>
+ #include <sys/types.h>
++#include <sys/wait.h>
+ #include <unistd.h>
+ #elif defined(OS_WIN)
+ #include "chrome/test/chromedriver/keycode_text_conversion.h"
diff --git a/devel/electron17/files/patch-chrome_test_chromedriver_chrome_chrome__finder.cc b/devel/electron17/files/patch-chrome_test_chromedriver_chrome_chrome__finder.cc
new file mode 100644
index 000000000000..b7691f4a82f2
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_test_chromedriver_chrome_chrome__finder.cc
@@ -0,0 +1,20 @@
+--- chrome/test/chromedriver/chrome/chrome_finder.cc.orig 2022-05-11 07:16:49 UTC
++++ chrome/test/chromedriver/chrome/chrome_finder.cc
+@@ -54,7 +54,7 @@ void GetApplicationDirs(std::vector<base::FilePath>* l
+ installation_locations[i].Append(L"Chromium\\Application"));
+ }
+ }
+-#elif defined(OS_LINUX) || defined(OS_CHROMEOS)
++#elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ void GetApplicationDirs(std::vector<base::FilePath>* locations) {
+ // TODO: Respect users' PATH variables.
+ // Until then, we use an approximation of the most common defaults.
+@@ -139,7 +139,7 @@ bool FindChrome(base::FilePath* browser_exe) {
+ base::FilePath browser_exes_array[] = {
+ #if defined(OS_WIN) || defined(OS_MAC)
+ base::FilePath(chrome::kBrowserProcessExecutablePath),
+-#elif defined(OS_LINUX) || defined(OS_CHROMEOS)
++#elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ base::FilePath("google-chrome"),
+ base::FilePath(chrome::kBrowserProcessExecutablePath),
+ base::FilePath("chromium"),
diff --git a/devel/electron17/files/patch-chrome_updater_app_app__install.cc b/devel/electron17/files/patch-chrome_updater_app_app__install.cc
new file mode 100644
index 000000000000..cc8ff3bac965
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_updater_app_app__install.cc
@@ -0,0 +1,11 @@
+--- chrome/updater/app/app_install.cc.orig 2022-05-11 07:16:49 UTC
++++ chrome/updater/app/app_install.cc
+@@ -155,7 +155,7 @@ void AppInstall::WakeCandidate() {
+ update_service_internal, base::WrapRefCounted(this)));
+ }
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // TODO(crbug.com/1276114) - implement.
+ void AppInstall::WakeCandidateDone() {
+ NOTIMPLEMENTED();
diff --git a/devel/electron17/files/patch-chrome_updater_app_app__uninstall.cc b/devel/electron17/files/patch-chrome_updater_app_app__uninstall.cc
new file mode 100644
index 000000000000..c3977d919112
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_updater_app_app__uninstall.cc
@@ -0,0 +1,11 @@
+--- chrome/updater/app/app_uninstall.cc.orig 2022-05-11 07:16:49 UTC
++++ chrome/updater/app/app_uninstall.cc
+@@ -31,7 +31,7 @@
+ #include "chrome/updater/win/setup/uninstall.h"
+ #elif defined(OS_MAC)
+ #include "chrome/updater/mac/setup/setup.h"
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ #include "chrome/updater/linux/setup/setup.h"
+ #endif
+
diff --git a/devel/electron17/files/patch-chrome_updater_configurator.cc b/devel/electron17/files/patch-chrome_updater_configurator.cc
new file mode 100644
index 000000000000..1f823bc485e0
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_updater_configurator.cc
@@ -0,0 +1,11 @@
+--- chrome/updater/configurator.cc.orig 2022-05-11 07:16:49 UTC
++++ chrome/updater/configurator.cc
+@@ -30,7 +30,7 @@
+ #include "chrome/updater/win/net/network.h"
+ #elif defined(OS_MAC)
+ #include "chrome/updater/mac/net/network.h"
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ #include "chrome/updater/linux/net/network.h"
+ #endif
+
diff --git a/devel/electron17/files/patch-chrome_updater_device__management_cloud__policy__util.cc b/devel/electron17/files/patch-chrome_updater_device__management_cloud__policy__util.cc
new file mode 100644
index 000000000000..5e51bd150f3f
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_updater_device__management_cloud__policy__util.cc
@@ -0,0 +1,47 @@
+--- chrome/updater/device_management/cloud_policy_util.cc.orig 2022-05-11 07:16:49 UTC
++++ chrome/updater/device_management/cloud_policy_util.cc
+@@ -22,7 +22,7 @@
+ #include <wincred.h>
+ #endif
+
+-#if defined(OS_LINUX) || defined(OS_MAC)
++#if defined(OS_LINUX) || defined(OS_MAC) || defined(OS_BSD)
+ #include <pwd.h>
+ #include <sys/types.h>
+ #include <unistd.h>
+@@ -36,7 +36,7 @@
+
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include <limits.h> // For HOST_NAME_MAX
+ #endif
+
+@@ -63,7 +63,7 @@
+
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "base/system/sys_info.h"
+ #endif
+
+@@ -111,7 +111,7 @@ std::string GetPolicyVerificationKey() {
+ std::string GetMachineName() {
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ char hostname[HOST_NAME_MAX];
+ if (gethostname(hostname, HOST_NAME_MAX) == 0) // Success.
+ return hostname;
+@@ -161,7 +161,7 @@ std::string GetMachineName() {
+ }
+
+ std::string GetOSVersion() {
+-#if defined(OS_LINUX) || defined(OS_MAC)
++#if defined(OS_LINUX) || defined(OS_MAC) || defined(OS_BSD)
+ return base::SysInfo::OperatingSystemVersion();
+ #elif defined(OS_WIN)
+ base::win::OSInfo::VersionNumber version_number =
diff --git a/devel/electron17/files/patch-chrome_updater_device__management_dm__client.cc b/devel/electron17/files/patch-chrome_updater_device__management_dm__client.cc
new file mode 100644
index 000000000000..518b4935fbd3
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_updater_device__management_dm__client.cc
@@ -0,0 +1,11 @@
+--- chrome/updater/device_management/dm_client.cc.orig 2022-05-11 07:16:49 UTC
++++ chrome/updater/device_management/dm_client.cc
+@@ -36,7 +36,7 @@
+ #include "chrome/updater/win/net/network.h"
+ #elif defined(OS_MAC)
+ #include "chrome/updater/mac/net/network.h"
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ #include "chrome/updater/linux/net/network.h"
+ #endif
+
diff --git a/devel/electron17/files/patch-chrome_updater_device__management_dm__storage.cc b/devel/electron17/files/patch-chrome_updater_device__management_dm__storage.cc
new file mode 100644
index 000000000000..0db74cab52a2
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_updater_device__management_dm__storage.cc
@@ -0,0 +1,11 @@
+--- chrome/updater/device_management/dm_storage.cc.orig 2022-05-11 07:16:49 UTC
++++ chrome/updater/device_management/dm_storage.cc
+@@ -69,7 +69,7 @@ bool DeleteObsoletePolicies(const base::FilePath& cach
+
+ } // namespace
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // crbug.com/1276162 - implement.
+ DMStorage::DMStorage(const base::FilePath& policy_cache_root)
+ : policy_cache_root_(policy_cache_root) {
diff --git a/devel/electron17/files/patch-chrome_updater_installer.cc b/devel/electron17/files/patch-chrome_updater_installer.cc
new file mode 100644
index 000000000000..b0e0467fdcf6
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_updater_installer.cc
@@ -0,0 +1,11 @@
+--- chrome/updater/installer.cc.orig 2022-05-11 07:16:49 UTC
++++ chrome/updater/installer.cc
+@@ -267,7 +267,7 @@ absl::optional<base::FilePath> Installer::GetCurrentIn
+ return path->AppendASCII(pv_.GetString());
+ }
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ Installer::Result Installer::RunApplicationInstaller(
+ const base::FilePath& /*app_installer*/,
+ const std::string& /*arguments*/,
diff --git a/devel/electron17/files/patch-chrome_updater_lib__util.cc b/devel/electron17/files/patch-chrome_updater_lib__util.cc
new file mode 100644
index 000000000000..ef463c858606
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_updater_lib__util.cc
@@ -0,0 +1,11 @@
+--- chrome/updater/lib_util.cc.orig 2022-05-11 07:16:49 UTC
++++ chrome/updater/lib_util.cc
+@@ -11,7 +11,7 @@
+
+ namespace updater {
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+
+ std::string UnescapeURLComponent(base::StringPiece escaped_text) {
+ return base::UnescapeURLComponent(
diff --git a/devel/electron17/files/patch-chrome_updater_updater.cc b/devel/electron17/files/patch-chrome_updater_updater.cc
new file mode 100644
index 000000000000..77e619040faa
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_updater_updater.cc
@@ -0,0 +1,11 @@
+--- chrome/updater/updater.cc.orig 2022-05-11 07:16:49 UTC
++++ chrome/updater/updater.cc
+@@ -38,7 +38,7 @@
+ #include "chrome/updater/win/win_util.h"
+ #elif defined(OS_MAC)
+ #include "chrome/updater/app/server/mac/server.h"
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ #include "chrome/updater/app/server/linux/server.h"
+ #endif
+
diff --git a/devel/electron17/files/patch-chrome_updater_util.cc b/devel/electron17/files/patch-chrome_updater_util.cc
new file mode 100644
index 000000000000..f758bc17e94f
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_updater_util.cc
@@ -0,0 +1,11 @@
+--- chrome/updater/util.cc.orig 2022-05-11 07:16:49 UTC
++++ chrome/updater/util.cc
+@@ -213,7 +213,7 @@ GURL AppendQueryParameter(const GURL& url,
+ return url.ReplaceComponents(replacements);
+ }
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+
+ // TODO(crbug.com/1276188) - implement the functions below.
+ absl::optional<base::FilePath> GetUpdaterFolderPath(UpdaterScope scope) {
diff --git a/devel/electron17/files/patch-chrome_utility_services.cc b/devel/electron17/files/patch-chrome_utility_services.cc
new file mode 100644
index 000000000000..ff62d9cba986
--- /dev/null
+++ b/devel/electron17/files/patch-chrome_utility_services.cc
@@ -0,0 +1,29 @@
+--- chrome/utility/services.cc.orig 2022-05-11 07:16:49 UTC
++++ chrome/utility/services.cc
+@@ -65,7 +65,7 @@
+ #include "chrome/services/file_util/file_util_service.h" // nogncheck
+ #endif
+
+-#if BUILDFLAG(FULL_SAFE_BROWSING) && (defined(OS_LINUX) || defined(OS_WIN))
++#if BUILDFLAG(FULL_SAFE_BROWSING) && (defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD))
+ #include "chrome/services/file_util/document_analysis_service.h" // nogncheck
+ #endif
+
+@@ -219,7 +219,7 @@ auto RunCupsIppParser(
+ }
+ #endif
+
+-#if BUILDFLAG(FULL_SAFE_BROWSING) && (defined(OS_LINUX) || defined(OS_WIN))
++#if BUILDFLAG(FULL_SAFE_BROWSING) && (defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD))
+ auto RunDocumentAnalysis(
+ mojo::PendingReceiver<chrome::mojom::DocumentAnalysisService> receiver) {
+ return std::make_unique<DocumentAnalysisService>(std::move(receiver));
+@@ -383,7 +383,7 @@ void RegisterMainThreadServices(mojo::ServiceFactory&
+ services.Add(RunFileUtil);
+ #endif
+
+-#if BUILDFLAG(FULL_SAFE_BROWSING) && (defined(OS_LINUX) || defined(OS_WIN))
++#if BUILDFLAG(FULL_SAFE_BROWSING) && (defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD))
+ services.Add(RunDocumentAnalysis);
+ #endif
+
diff --git a/devel/electron17/files/patch-chromecast_browser_cast__browser__main__parts.cc b/devel/electron17/files/patch-chromecast_browser_cast__browser__main__parts.cc
new file mode 100644
index 000000000000..38d1ad260ab0
--- /dev/null
+++ b/devel/electron17/files/patch-chromecast_browser_cast__browser__main__parts.cc
@@ -0,0 +1,65 @@
+--- chromecast/browser/cast_browser_main_parts.cc.orig 2022-05-11 07:16:49 UTC
++++ chromecast/browser/cast_browser_main_parts.cc
+@@ -90,7 +90,7 @@
+ #include "ui/base/ui_base_switches.h"
+ #include "ui/gl/gl_switches.h"
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ #include <fontconfig/fontconfig.h>
+ #include <signal.h>
+ #include <sys/prctl.h>
+@@ -145,7 +145,7 @@
+ #include "extensions/browser/extension_prefs.h" // nogncheck
+ #endif
+
+-#if (defined(OS_LINUX) || defined(OS_CHROMEOS)) && defined(USE_OZONE)
++#if (defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)) && defined(USE_OZONE)
+ #include "chromecast/browser/exo/wayland_server_controller.h"
+ #endif
+
+@@ -281,7 +281,7 @@ class CastViewsDelegate : public views::ViewsDelegate
+
+ #endif // defined(USE_AURA)
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+
+ base::FilePath GetApplicationFontsDir() {
+ std::unique_ptr<base::Environment> env(base::Environment::Create());
+@@ -327,7 +327,7 @@ const DefaultCommandLineSwitch kDefaultSwitches[] = {
+ {cc::switches::kDisableThreadedAnimation, ""},
+ #endif // defined(OS_ANDROID)
+ #endif // BUILDFLAG(IS_CAST_AUDIO_ONLY)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ #if defined(ARCH_CPU_X86_FAMILY)
+ // This is needed for now to enable the x11 Ozone platform to work with
+ // current Linux/NVidia OpenGL drivers.
+@@ -520,7 +520,7 @@ void CastBrowserMainParts::ToolkitInitialized() {
+ views_delegate_ = std::make_unique<CastViewsDelegate>();
+ #endif // defined(USE_AURA)
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ base::FilePath dir_font = GetApplicationFontsDir();
+ const FcChar8 *dir_font_char8 = reinterpret_cast<const FcChar8*>(dir_font.value().data());
+ if (!FcConfigAppFontAddDir(gfx::GetGlobalFontConfig(), dir_font_char8)) {
+@@ -748,7 +748,7 @@ int CastBrowserMainParts::PreMainMessageLoopRun() {
+ cast_browser_process_->browser_context());
+ #endif
+
+-#if (defined(OS_LINUX) || defined(OS_CHROMEOS)) && defined(USE_OZONE)
++#if (defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)) && defined(USE_OZONE)
+ wayland_server_controller_ =
+ std::make_unique<WaylandServerController>(window_manager_.get());
+ #endif
+@@ -817,7 +817,7 @@ void CastBrowserMainParts::PostMainMessageLoopRun() {
+
+ cast_browser_process_->cast_service()->Stop();
+
+-#if (defined(OS_LINUX) || defined(OS_CHROMEOS)) && defined(USE_OZONE)
++#if (defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)) && defined(USE_OZONE)
+ wayland_server_controller_.reset();
+ #endif
+ #if BUILDFLAG(ENABLE_CHROMECAST_EXTENSIONS)
diff --git a/devel/electron17/files/patch-chromecast_browser_cast__content__browser__client.cc b/devel/electron17/files/patch-chromecast_browser_cast__content__browser__client.cc
new file mode 100644
index 000000000000..79d37dd68873
--- /dev/null
+++ b/devel/electron17/files/patch-chromecast_browser_cast__content__browser__client.cc
@@ -0,0 +1,29 @@
+--- chromecast/browser/cast_content_browser_client.cc.orig 2022-05-11 07:16:49 UTC
++++ chromecast/browser/cast_content_browser_client.cc
+@@ -132,7 +132,7 @@
+ #include "extensions/common/constants.h" // nogncheck
+ #endif
+
+-#if (defined(OS_LINUX) || defined(OS_CHROMEOS)) && defined(USE_OZONE)
++#if (defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)) && defined(USE_OZONE)
+ #include "chromecast/browser/webview/webview_controller.h"
+ #endif // (defined(OS_LINUX) || defined(OS_CHROMEOS)) && defined(USE_OZONE)
+
+@@ -475,7 +475,7 @@ void CastContentBrowserClient::AppendExtraCommandLineS
+ switches::kAudioOutputChannels));
+ }
+ } else if (process_type == switches::kGpuProcess) {
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // Necessary for accelerated 2d canvas. By default on Linux, Chromium
+ // assumes GLES2 contexts can be lost to a power-save mode, which breaks GPU
+ // canvas apps.
+@@ -867,7 +867,7 @@ CastContentBrowserClient::CreateThrottlesForNavigation
+ handle, general_audience_browsing_service_.get()));
+ }
+
+-#if (defined(OS_LINUX) || defined(OS_CHROMEOS)) && defined(USE_OZONE)
++#if (defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)) && defined(USE_OZONE)
+ auto webview_throttle = WebviewController::MaybeGetNavigationThrottle(handle);
+ if (webview_throttle) {
+ throttles.push_back(std::move(webview_throttle));
diff --git a/devel/electron17/files/patch-chromecast_browser_cast__content__browser__client__receiver__bindings.cc b/devel/electron17/files/patch-chromecast_browser_cast__content__browser__client__receiver__bindings.cc
new file mode 100644
index 000000000000..d7a118c97393
--- /dev/null
+++ b/devel/electron17/files/patch-chromecast_browser_cast__content__browser__client__receiver__bindings.cc
@@ -0,0 +1,20 @@
+--- chromecast/browser/cast_content_browser_client_receiver_bindings.cc.orig 2022-05-11 07:16:49 UTC
++++ chromecast/browser/cast_content_browser_client_receiver_bindings.cc
+@@ -35,7 +35,7 @@
+ #include "media/mojo/services/media_service.h" // nogncheck
+ #endif // BUILDFLAG(ENABLE_CAST_RENDERER)
+
+-#if (defined(OS_LINUX) || defined(OS_CHROMEOS)) && defined(USE_OZONE)
++#if (defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)) && defined(USE_OZONE)
+ #include "chromecast/browser/webview/js_channel_service.h"
+ #include "chromecast/common/mojom/js_channel.mojom.h"
+ #endif
+@@ -222,7 +222,7 @@ void CastContentBrowserClient::RunServiceInstance(
+ void CastContentBrowserClient::BindHostReceiverForRenderer(
+ content::RenderProcessHost* render_process_host,
+ mojo::GenericPendingReceiver receiver) {
+-#if (defined(OS_LINUX) || defined(OS_CHROMEOS)) && defined(USE_OZONE)
++#if (defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)) && defined(USE_OZONE)
+ if (auto r = receiver.As<::chromecast::mojom::JsChannelBindingProvider>()) {
+ JsChannelService::Create(render_process_host, std::move(r),
+ base::ThreadTaskRunnerHandle::Get());
diff --git a/devel/electron17/files/patch-chromecast_media_base_default__monotonic__clock.cc b/devel/electron17/files/patch-chromecast_media_base_default__monotonic__clock.cc
new file mode 100644
index 000000000000..493207f797e3
--- /dev/null
+++ b/devel/electron17/files/patch-chromecast_media_base_default__monotonic__clock.cc
@@ -0,0 +1,20 @@
+--- chromecast/media/base/default_monotonic_clock.cc.orig 2022-05-11 07:16:49 UTC
++++ chromecast/media/base/default_monotonic_clock.cc
+@@ -11,7 +11,7 @@
+ #include "base/time/time.h"
+ #include "build/build_config.h"
+
+-#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ #include "chromecast/media/base/buildflags.h"
+ #endif // defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS)
+
+@@ -27,7 +27,7 @@ std::unique_ptr<MonotonicClock> MonotonicClock::Create
+ return std::make_unique<DefaultMonotonicClock>();
+ }
+
+-#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ int64_t MonotonicClockNow() {
+ timespec now = {0, 0};
+ #if BUILDFLAG(MEDIA_CLOCK_MONOTONIC_RAW)
diff --git a/devel/electron17/files/patch-chromecast_renderer_cast__content__renderer__client.cc b/devel/electron17/files/patch-chromecast_renderer_cast__content__renderer__client.cc
new file mode 100644
index 000000000000..006ee5f96532
--- /dev/null
+++ b/devel/electron17/files/patch-chromecast_renderer_cast__content__renderer__client.cc
@@ -0,0 +1,11 @@
+--- chromecast/renderer/cast_content_renderer_client.cc.orig 2022-05-11 07:16:49 UTC
++++ chromecast/renderer/cast_content_renderer_client.cc
+@@ -192,7 +192,7 @@ void CastContentRendererClient::RenderFrameCreated(
+ dispatcher->OnRenderFrameCreated(render_frame);
+ #endif
+
+-#if (defined(OS_LINUX) || defined(OS_CHROMEOS)) && defined(USE_OZONE)
++#if (defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)) && defined(USE_OZONE)
+ // JsChannelBindings destroys itself when the RenderFrame is destroyed.
+ JsChannelBindings::Create(render_frame);
+ #endif
diff --git a/devel/electron17/files/patch-components_autofill_core_browser_autofill__external__delegate.cc b/devel/electron17/files/patch-components_autofill_core_browser_autofill__external__delegate.cc
new file mode 100644
index 000000000000..91e81fe0af15
--- /dev/null
+++ b/devel/electron17/files/patch-components_autofill_core_browser_autofill__external__delegate.cc
@@ -0,0 +1,11 @@
+--- components/autofill/core/browser/autofill_external_delegate.cc.orig 2022-05-11 07:16:50 UTC
++++ components/autofill/core/browser/autofill_external_delegate.cc
+@@ -130,7 +130,7 @@ void AutofillExternalDelegate::OnSuggestionsReturned(
+ // Append the "Hide Suggestions" menu item for only Autofill Address and
+ // Autocomplete popups.
+ #if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_APPLE) || \
+- defined(OS_CHROMEOS)
++ defined(OS_CHROMEOS) || defined(OS_BSD)
+ if (base::FeatureList::IsEnabled(
+ features::kAutofillEnableHideSuggestionsUI)) {
+ // If the user has selected a suggestion, it indicates the suggestions are
diff --git a/devel/electron17/files/patch-components_autofill_core_browser_personal__data__manager.cc b/devel/electron17/files/patch-components_autofill_core_browser_personal__data__manager.cc
new file mode 100644
index 000000000000..168ecf4a4b3f
--- /dev/null
+++ b/devel/electron17/files/patch-components_autofill_core_browser_personal__data__manager.cc
@@ -0,0 +1,11 @@
+--- components/autofill/core/browser/personal_data_manager.cc.orig 2022-05-11 07:16:50 UTC
++++ components/autofill/core/browser/personal_data_manager.cc
+@@ -2097,7 +2097,7 @@ bool PersonalDataManager::ShouldShowCardsFromAccountOp
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+ #if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_WIN) || \
+- defined(OS_APPLE) || defined(OS_FUCHSIA)
++ defined(OS_APPLE) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ // This option should only be shown for users that have not enabled the Sync
+ // Feature and that have server credit cards available.
+ if (!sync_service_ || sync_service_->IsSyncFeatureEnabled() ||
diff --git a/devel/electron17/files/patch-components_autofill_core_common_autofill__payments__features.cc b/devel/electron17/files/patch-components_autofill_core_common_autofill__payments__features.cc
new file mode 100644
index 000000000000..6d02f7ffae37
--- /dev/null
+++ b/devel/electron17/files/patch-components_autofill_core_common_autofill__payments__features.cc
@@ -0,0 +1,11 @@
+--- components/autofill/core/common/autofill_payments_features.cc.orig 2022-05-11 07:16:50 UTC
++++ components/autofill/core/common/autofill_payments_features.cc
+@@ -172,7 +172,7 @@ const base::Feature kAutofillUpstreamAllowAllEmailDoma
+ bool ShouldShowImprovedUserConsentForCreditCardSave() {
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_WIN) || defined(OS_APPLE) || \
++#if defined(OS_WIN) || defined(OS_APPLE) || defined(OS_BSD) || \
+ (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
+ // The new user consent UI is fully launched on MacOS, Windows and Linux.
+ return true;
diff --git a/devel/electron17/files/patch-components_autofill_core_common_autofill__util.cc b/devel/electron17/files/patch-components_autofill_core_common_autofill__util.cc
new file mode 100644
index 000000000000..d4646ae1e47c
--- /dev/null
+++ b/devel/electron17/files/patch-components_autofill_core_common_autofill__util.cc
@@ -0,0 +1,11 @@
+--- components/autofill/core/common/autofill_util.cc.orig 2022-05-11 07:16:50 UTC
++++ components/autofill/core/common/autofill_util.cc
+@@ -154,7 +154,7 @@ bool SanitizedFieldIsEmpty(const std::u16string& value
+
+ bool ShouldAutoselectFirstSuggestionOnArrowDown() {
+ #if defined(OS_WIN) || defined(OS_APPLE) || defined(OS_LINUX) || \
+- defined(OS_CHROMEOS)
++ defined(OS_CHROMEOS) || defined(OS_BSD)
+ return true;
+ #else
+ return false;
diff --git a/devel/electron17/files/patch-components_cast__channel_cast__message__util.cc b/devel/electron17/files/patch-components_cast__channel_cast__message__util.cc
new file mode 100644
index 000000000000..007583b3b798
--- /dev/null
+++ b/devel/electron17/files/patch-components_cast__channel_cast__message__util.cc
@@ -0,0 +1,11 @@
+--- components/cast_channel/cast_message_util.cc.orig 2021-07-15 19:13:37 UTC
++++ components/cast_channel/cast_message_util.cc
+@@ -168,7 +168,7 @@ int GetVirtualConnectPlatformValue() {
+ return 4;
+ #elif BUILDFLAG(IS_CHROMEOS_ASH)
+ return 5;
+-#elif defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#elif defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ return 6;
+ #else
+ return 0;
diff --git a/devel/electron17/files/patch-components_content__settings_core_browser_website__settings__registry.cc b/devel/electron17/files/patch-components_content__settings_core_browser_website__settings__registry.cc
new file mode 100644
index 000000000000..8fd80c716043
--- /dev/null
+++ b/devel/electron17/files/patch-components_content__settings_core_browser_website__settings__registry.cc
@@ -0,0 +1,11 @@
+--- components/content_settings/core/browser/website_settings_registry.cc.orig 2021-09-14 01:51:54 UTC
++++ components/content_settings/core/browser/website_settings_registry.cc
+@@ -67,7 +67,7 @@ const WebsiteSettingsInfo* WebsiteSettingsRegistry::Re
+ #if defined(OS_WIN)
+ if (!(platform & PLATFORM_WINDOWS))
+ return nullptr;
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ if (!(platform & PLATFORM_LINUX))
+ return nullptr;
+ #elif defined(OS_MAC)
diff --git a/devel/electron17/files/patch-components_cookie__config_cookie__store__util.cc b/devel/electron17/files/patch-components_cookie__config_cookie__store__util.cc
new file mode 100644
index 000000000000..05a1dc7e5bb0
--- /dev/null
+++ b/devel/electron17/files/patch-components_cookie__config_cookie__store__util.cc
@@ -0,0 +1,11 @@
+--- components/cookie_config/cookie_store_util.cc.orig 2022-05-11 07:16:50 UTC
++++ components/cookie_config/cookie_store_util.cc
+@@ -12,7 +12,7 @@
+ namespace cookie_config {
+
+ #if defined(OS_WIN) || defined(OS_APPLE) || defined(OS_LINUX) || \
+- defined(OS_CHROMEOS)
++ defined(OS_CHROMEOS) || defined(OS_BSD)
+ namespace {
+
+ // Use the operating system's mechanisms to encrypt cookies before writing
diff --git a/devel/electron17/files/patch-components_crash_content_browser_BUILD.gn b/devel/electron17/files/patch-components_crash_content_browser_BUILD.gn
new file mode 100644
index 000000000000..48c7d29ad45e
--- /dev/null
+++ b/devel/electron17/files/patch-components_crash_content_browser_BUILD.gn
@@ -0,0 +1,29 @@
+--- components/crash/content/browser/BUILD.gn.orig 2022-05-11 07:00:33 UTC
++++ components/crash/content/browser/BUILD.gn
+@@ -21,7 +21,7 @@ source_set("browser") {
+ "//content/public/common",
+ ]
+
+- if (is_linux || is_chromeos || is_android) {
++ if ((is_linux && !is_bsd) || is_chromeos || is_android) {
+ # Want this file on both Linux and Android.
+ sources += [
+ "crash_handler_host_linux.cc",
+@@ -37,7 +37,7 @@ source_set("browser") {
+
+ # This is not in the GYP build but this target includes breakpad client
+ # headers, so add the dependency here.
+- if ((is_posix && !is_ios) || is_fuchsia) {
++ if ((is_posix && !is_ios && !is_bsd) || is_fuchsia) {
+ configs += [ "//third_party/breakpad:client_config" ]
+ public_configs = [ "//third_party/breakpad:client_config" ]
+ }
+@@ -59,7 +59,7 @@ source_set("browser") {
+ "//components/crash/android:jni_headers",
+ "//mojo/public/cpp/bindings",
+ ]
+- } else {
++ } else if (!is_bsd) {
+ deps += [ "//third_party/breakpad:client" ]
+ }
+ }
diff --git a/devel/electron17/files/patch-components_crash_core_app_BUILD.gn b/devel/electron17/files/patch-components_crash_core_app_BUILD.gn
new file mode 100644
index 000000000000..8c51f7cc25f9
--- /dev/null
+++ b/devel/electron17/files/patch-components_crash_core_app_BUILD.gn
@@ -0,0 +1,52 @@
+--- components/crash/core/app/BUILD.gn.orig 2022-05-11 07:16:50 UTC
++++ components/crash/core/app/BUILD.gn
+@@ -52,7 +52,7 @@ static_library("app") {
+ "crashpad.h",
+ ]
+
+- if (is_linux || is_chromeos) {
++ if ((is_linux || is_chromeos) && !is_bsd) {
+ sources += [
+ "breakpad_linux.cc",
+ "breakpad_linux.h",
+@@ -61,6 +61,10 @@ static_library("app") {
+ ]
+ }
+
++ if (is_bsd) {
++ sources -= [ "crashpad.cc" ]
++ }
++
+ defines = [ "CRASH_IMPLEMENTATION" ]
+
+ public_deps = [ ":lib" ]
+@@ -88,7 +92,7 @@ static_library("app") {
+ libs = [ "log" ]
+ }
+
+- if (is_android || is_linux || is_chromeos) {
++ if ((is_android || is_linux || is_chromeos) && !is_bsd) {
+ deps += [
+ "//base:base_static",
+ "//components/crash/core/common",
+@@ -96,7 +100,7 @@ static_library("app") {
+ ]
+ }
+
+- if (is_linux || is_chromeos) {
++ if ((is_linux || is_chromeos) && !is_bsd) {
+ deps += [ "//third_party/breakpad:client" ]
+ }
+
+@@ -215,11 +219,6 @@ if (is_mac || is_android || is_linux || is_chromeos) {
+ # define custom UserStreamDataSources.
+ executable("chrome_crashpad_handler") {
+ sources = [ "chrome_crashpad_handler.cc" ]
+-
+- deps = [
+- ":crashpad_handler_main",
+- "//third_party/crashpad/crashpad/handler",
+- ]
+
+ if (is_mac && (is_component_build || is_asan)) {
+ ldflags = [
diff --git a/devel/electron17/files/patch-components_crash_core_app_chrome__crashpad__handler.cc b/devel/electron17/files/patch-components_crash_core_app_chrome__crashpad__handler.cc
new file mode 100644
index 000000000000..e0d7358c1839
--- /dev/null
+++ b/devel/electron17/files/patch-components_crash_core_app_chrome__crashpad__handler.cc
@@ -0,0 +1,12 @@
+--- components/crash/core/app/chrome_crashpad_handler.cc.orig 2022-05-11 07:00:33 UTC
++++ components/crash/core/app/chrome_crashpad_handler.cc
+@@ -6,5 +6,9 @@
+ extern "C" int CrashpadHandlerMain(int argc, char* argv[]);
+
+ int main(int argc, char* argv[]) {
++#if defined(__OpenBSD__) || defined(__FreeBSD__)
++ return -1;
++#else
+ return CrashpadHandlerMain(argc, argv);
++#endif
+ }
diff --git a/devel/electron17/files/patch-components_crash_core_browser_crash__upload__list__crashpad.cc b/devel/electron17/files/patch-components_crash_core_browser_crash__upload__list__crashpad.cc
new file mode 100644
index 000000000000..a80b332624c6
--- /dev/null
+++ b/devel/electron17/files/patch-components_crash_core_browser_crash__upload__list__crashpad.cc
@@ -0,0 +1,16 @@
+--- components/crash/core/browser/crash_upload_list_crashpad.cc.orig 2022-05-11 07:00:33 UTC
++++ components/crash/core/browser/crash_upload_list_crashpad.cc
+@@ -51,9 +51,13 @@ std::vector<UploadList::UploadInfo> CrashUploadListCra
+
+ void CrashUploadListCrashpad::ClearUploadList(const base::Time& begin,
+ const base::Time& end) {
++#if !defined(OS_BSD)
+ crash_reporter::ClearReportsBetween(begin, end);
++#endif
+ }
+
+ void CrashUploadListCrashpad::RequestSingleUpload(const std::string& local_id) {
++#if !defined(OS_BSD)
+ crash_reporter::RequestSingleCrashUpload(local_id);
++#endif
+ }
diff --git a/devel/electron17/files/patch-components_crash_core_common_BUILD.gn b/devel/electron17/files/patch-components_crash_core_common_BUILD.gn
new file mode 100644
index 000000000000..ca8b837b1af3
--- /dev/null
+++ b/devel/electron17/files/patch-components_crash_core_common_BUILD.gn
@@ -0,0 +1,20 @@
+--- components/crash/core/common/BUILD.gn.orig 2022-05-11 07:16:50 UTC
++++ components/crash/core/common/BUILD.gn
+@@ -8,7 +8,7 @@ import("//components/gwp_asan/buildflags/buildflags.gn
+
+ declare_args() {
+ # If set to true, this will stub out and disable the entire crash key system.
+- use_crash_key_stubs = is_fuchsia
++ use_crash_key_stubs = is_fuchsia || is_bsd
+ }
+
+ group("common") {
+@@ -190,7 +190,7 @@ source_set("unit_tests") {
+ sources += [ "crash_key_breakpad_ios_unittest.cc" ]
+ deps += [ "//third_party/breakpad:client" ]
+ include_dirs = [ "//third_party/breakpad/breakpad/src/" ]
+- } else if (!is_mac && !is_win && !is_fuchsia && !is_android) {
++ } else if (!is_mac && !is_win && !is_fuchsia && !is_android && !is_bsd) {
+ include_dirs = [ "//third_party/breakpad/breakpad/src/" ]
+ sources += [ "crash_key_breakpad_unittest.cc" ]
+ }
diff --git a/devel/electron17/files/patch-components_discardable__memory_service_discardable__shared__memory__manager.cc b/devel/electron17/files/patch-components_discardable__memory_service_discardable__shared__memory__manager.cc
new file mode 100644
index 000000000000..a1d140c6545e
--- /dev/null
+++ b/devel/electron17/files/patch-components_discardable__memory_service_discardable__shared__memory__manager.cc
@@ -0,0 +1,11 @@
+--- components/discardable_memory/service/discardable_shared_memory_manager.cc.orig 2022-05-11 07:16:50 UTC
++++ components/discardable_memory/service/discardable_shared_memory_manager.cc
+@@ -171,7 +171,7 @@ int64_t GetDefaultMemoryLimit() {
+ // Limits the number of FDs used to 32, assuming a 4MB allocation size.
+ int64_t max_default_memory_limit = 128 * kMegabyte;
+ #else
+- int64_t max_default_memory_limit = 512 * kMegabyte;
++ int64_t max_default_memory_limit = 128 * kMegabyte;
+ #endif
+
+ // Use 1/8th of discardable memory on low-end devices.
diff --git a/devel/electron17/files/patch-components_feature__engagement_public_event__constants.cc b/devel/electron17/files/patch-components_feature__engagement_public_event__constants.cc
new file mode 100644
index 000000000000..f0ea5527ce95
--- /dev/null
+++ b/devel/electron17/files/patch-components_feature__engagement_public_event__constants.cc
@@ -0,0 +1,11 @@
+--- components/feature_engagement/public/event_constants.cc.orig 2022-05-11 07:16:50 UTC
++++ components/feature_engagement/public/event_constants.cc
+@@ -11,7 +11,7 @@ namespace feature_engagement {
+ namespace events {
+
+ #if defined(OS_WIN) || defined(OS_APPLE) || defined(OS_LINUX) || \
+- defined(OS_CHROMEOS) || defined(OS_FUCHSIA)
++ defined(OS_CHROMEOS) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ const char kNewTabOpened[] = "new_tab_opened";
+ const char kSixthTabOpened[] = "sixth_tab_opened";
+ const char kTabGroupCreated[] = "tab_group_created";
diff --git a/devel/electron17/files/patch-components_feature__engagement_public_event__constants.h b/devel/electron17/files/patch-components_feature__engagement_public_event__constants.h
new file mode 100644
index 000000000000..b7d708b04cb2
--- /dev/null
+++ b/devel/electron17/files/patch-components_feature__engagement_public_event__constants.h
@@ -0,0 +1,11 @@
+--- components/feature_engagement/public/event_constants.h.orig 2022-05-11 07:16:50 UTC
++++ components/feature_engagement/public/event_constants.h
+@@ -13,7 +13,7 @@ namespace events {
+
+ // Desktop
+ #if defined(OS_WIN) || defined(OS_APPLE) || defined(OS_LINUX) || \
+- defined(OS_CHROMEOS) || defined(OS_FUCHSIA)
++ defined(OS_CHROMEOS) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ // The user has explicitly opened a new tab via an entry point from inside of
+ // Chrome.
+ extern const char kNewTabOpened[];
diff --git a/devel/electron17/files/patch-components_feature__engagement_public_feature__configurations.cc b/devel/electron17/files/patch-components_feature__engagement_public_feature__configurations.cc
new file mode 100644
index 000000000000..c6787dacbe2b
--- /dev/null
+++ b/devel/electron17/files/patch-components_feature__engagement_public_feature__configurations.cc
@@ -0,0 +1,11 @@
+--- components/feature_engagement/public/feature_configurations.cc.orig 2022-05-11 07:16:50 UTC
++++ components/feature_engagement/public/feature_configurations.cc
+@@ -13,7 +13,7 @@ namespace feature_engagement {
+ absl::optional<FeatureConfig> GetClientSideFeatureConfig(
+ const base::Feature* feature) {
+ #if defined(OS_WIN) || defined(OS_APPLE) || defined(OS_LINUX) || \
+- defined(OS_CHROMEOS)
++ defined(OS_CHROMEOS) || defined(OS_BSD)
+ if (kIPHPasswordsAccountStorageFeature.name == feature->name) {
+ absl::optional<FeatureConfig> config = FeatureConfig();
+ config->valid = true;
diff --git a/devel/electron17/files/patch-components_feature__engagement_public_feature__constants.cc b/devel/electron17/files/patch-components_feature__engagement_public_feature__constants.cc
new file mode 100644
index 000000000000..7e30d654655b
--- /dev/null
+++ b/devel/electron17/files/patch-components_feature__engagement_public_feature__constants.cc
@@ -0,0 +1,20 @@
+--- components/feature_engagement/public/feature_constants.cc.orig 2022-05-11 07:16:50 UTC
++++ components/feature_engagement/public/feature_constants.cc
+@@ -20,7 +20,7 @@ const base::Feature kIPHDummyFeature{"IPH_Dummy",
+ base::FEATURE_DISABLED_BY_DEFAULT};
+
+ #if defined(OS_WIN) || defined(OS_APPLE) || defined(OS_LINUX) || \
+- defined(OS_CHROMEOS) || defined(OS_FUCHSIA)
++ defined(OS_CHROMEOS) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ const base::Feature kIPHDesktopSharedHighlightingFeature{
+ "IPH_DesktopSharedHighlighting", base::FEATURE_DISABLED_BY_DEFAULT};
+ const base::Feature kIPHDesktopTabGroupsNewGroupFeature{
+@@ -257,7 +257,7 @@ const base::Feature kIPHDiscoverFeedHeaderFeature{
+ "IPH_DiscoverFeedHeaderMenu", base::FEATURE_DISABLED_BY_DEFAULT};
+ #endif // defined(OS_IOS)
+
+-#if defined(OS_WIN) || defined(OS_APPLE) || defined(OS_LINUX) || \
++#if defined(OS_WIN) || defined(OS_APPLE) || defined(OS_LINUX) || defined(OS_BSD) || \
+ defined(OS_CHROMEOS) || defined(OS_ANDROID) || defined(OS_FUCHSIA)
+ const base::Feature kIPHUpdatedConnectionSecurityIndicatorsFeature{
+ "IPH_UpdatedConnectionSecurityIndicators",
diff --git a/devel/electron17/files/patch-components_feature__engagement_public_feature__constants.h b/devel/electron17/files/patch-components_feature__engagement_public_feature__constants.h
new file mode 100644
index 000000000000..0986da832b1d
--- /dev/null
+++ b/devel/electron17/files/patch-components_feature__engagement_public_feature__constants.h
@@ -0,0 +1,20 @@
+--- components/feature_engagement/public/feature_constants.h.orig 2022-05-11 07:16:50 UTC
++++ components/feature_engagement/public/feature_constants.h
+@@ -30,7 +30,7 @@ extern const base::Feature kUseClientConfigIPH;
+ extern const base::Feature kIPHDummyFeature;
+
+ #if defined(OS_WIN) || defined(OS_APPLE) || defined(OS_LINUX) || \
+- defined(OS_CHROMEOS) || defined(OS_FUCHSIA)
++ defined(OS_CHROMEOS) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ extern const base::Feature kIPHDesktopSharedHighlightingFeature;
+ extern const base::Feature kIPHDesktopTabGroupsNewGroupFeature;
+ extern const base::Feature kIPHFocusHelpBubbleScreenReaderPromoFeature;
+@@ -160,7 +160,7 @@ extern const base::Feature kIPHBadgedTranslateManualTr
+ extern const base::Feature kIPHDiscoverFeedHeaderFeature;
+ #endif // defined(OS_IOS)
+
+-#if defined(OS_WIN) || defined(OS_APPLE) || defined(OS_LINUX) || \
++#if defined(OS_WIN) || defined(OS_APPLE) || defined(OS_LINUX) || defined(OS_BSD) || \
+ defined(OS_CHROMEOS) || defined(OS_ANDROID) || defined(OS_FUCHSIA)
+ extern const base::Feature kIPHUpdatedConnectionSecurityIndicatorsFeature;
+ #endif
diff --git a/devel/electron17/files/patch-components_feature__engagement_public_feature__list.cc b/devel/electron17/files/patch-components_feature__engagement_public_feature__list.cc
new file mode 100644
index 000000000000..876748b64ed7
--- /dev/null
+++ b/devel/electron17/files/patch-components_feature__engagement_public_feature__list.cc
@@ -0,0 +1,11 @@
+--- components/feature_engagement/public/feature_list.cc.orig 2022-05-11 07:16:50 UTC
++++ components/feature_engagement/public/feature_list.cc
+@@ -111,7 +111,7 @@ const base::Feature* const kAllFeatures[] = {
+ &kIPHDiscoverFeedHeaderFeature,
+ #endif // defined(OS_IOS)
+ #if defined(OS_WIN) || defined(OS_APPLE) || defined(OS_LINUX) || \
+- defined(OS_CHROMEOS) || defined(OS_FUCHSIA)
++ defined(OS_CHROMEOS) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ &kIPHDesktopTabGroupsNewGroupFeature,
+ &kIPHFocusHelpBubbleScreenReaderPromoFeature,
+ &kIPHGMCCastStartStopFeature,
diff --git a/devel/electron17/files/patch-components_feature__engagement_public_feature__list.h b/devel/electron17/files/patch-components_feature__engagement_public_feature__list.h
new file mode 100644
index 000000000000..9158b5013b6a
--- /dev/null
+++ b/devel/electron17/files/patch-components_feature__engagement_public_feature__list.h
@@ -0,0 +1,20 @@
+--- components/feature_engagement/public/feature_list.h.orig 2022-05-11 07:16:50 UTC
++++ components/feature_engagement/public/feature_list.h
+@@ -211,7 +211,7 @@ DEFINE_VARIATION_PARAM(kIPHDiscoverFeedHeaderFeature,
+ #endif // defined(OS_IOS)
+
+ #if defined(OS_WIN) || defined(OS_APPLE) || defined(OS_LINUX) || \
+- defined(OS_CHROMEOS) || defined(OS_FUCHSIA)
++ defined(OS_CHROMEOS) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ DEFINE_VARIATION_PARAM(kIPHDesktopTabGroupsNewGroupFeature,
+ "IPH_DesktopTabGroupsNewGroup");
+ DEFINE_VARIATION_PARAM(kIPHFocusModeFeature, "IPH_FocusMode");
+@@ -336,7 +336,7 @@ constexpr flags_ui::FeatureEntry::FeatureVariation
+ VARIATION_ENTRY(kIPHBadgedTranslateManualTriggerFeature),
+ VARIATION_ENTRY(kIPHDiscoverFeedHeaderFeature),
+ #elif defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || \
+- defined(OS_CHROMEOS) || defined(OS_FUCHSIA)
++ defined(OS_CHROMEOS) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ VARIATION_ENTRY(kIPHDesktopTabGroupsNewGroupFeature),
+ VARIATION_ENTRY(kIPHFocusModeFeature),
+ VARIATION_ENTRY(kIPHGlobalMediaControls),
diff --git a/devel/electron17/files/patch-components_feed_core_proto_v2_wire_version.proto b/devel/electron17/files/patch-components_feed_core_proto_v2_wire_version.proto
new file mode 100644
index 000000000000..de47d3b2fa90
--- /dev/null
+++ b/devel/electron17/files/patch-components_feed_core_proto_v2_wire_version.proto
@@ -0,0 +1,13 @@
+--- components/feed/core/proto/v2/wire/version.proto.orig 2021-07-15 19:13:37 UTC
++++ components/feed/core/proto/v2/wire/version.proto
+@@ -25,8 +25,8 @@ message Version {
+ BETA = 3;
+ RELEASE = 4;
+ }
+- optional int32 major = 1;
+- optional int32 minor = 2;
++ optional int32 gmajor = 1;
++ optional int32 gminor = 2;
+ optional int32 build = 3;
+ optional int32 revision = 4;
+ optional Architecture architecture = 5;
diff --git a/devel/electron17/files/patch-components_feed_core_v2_proto__util.cc b/devel/electron17/files/patch-components_feed_core_v2_proto__util.cc
new file mode 100644
index 000000000000..830590494435
--- /dev/null
+++ b/devel/electron17/files/patch-components_feed_core_v2_proto__util.cc
@@ -0,0 +1,24 @@
+--- components/feed/core/v2/proto_util.cc.orig 2022-05-11 07:16:50 UTC
++++ components/feed/core/v2/proto_util.cc
+@@ -88,8 +88,8 @@ feedwire::Version GetPlatformVersionMessage() {
+
+ int32_t major, minor, revision;
+ base::SysInfo::OperatingSystemVersionNumbers(&major, &minor, &revision);
+- result.set_major(major);
+- result.set_minor(minor);
++ result.set_gmajor(major);
++ result.set_gminor(minor);
+ result.set_revision(revision);
+ #if defined(OS_ANDROID)
+ result.set_api_version(base::android::BuildInfo::GetInstance()->sdk_int());
+@@ -104,8 +104,8 @@ feedwire::Version GetAppVersionMessage(const ChromeInf
+ // Chrome's version is in the format: MAJOR,MINOR,BUILD,PATCH.
+ const std::vector<uint32_t>& numbers = chrome_info.version.components();
+ if (numbers.size() > 3) {
+- result.set_major(static_cast<int32_t>(numbers[0]));
+- result.set_minor(static_cast<int32_t>(numbers[1]));
++ result.set_gmajor(static_cast<int32_t>(numbers[0]));
++ result.set_gminor(static_cast<int32_t>(numbers[1]));
+ result.set_build(static_cast<int32_t>(numbers[2]));
+ result.set_revision(static_cast<int32_t>(numbers[3]));
+ }
diff --git a/devel/electron17/files/patch-components_flags__ui_flags__state.cc b/devel/electron17/files/patch-components_flags__ui_flags__state.cc
new file mode 100644
index 000000000000..ffe3f8000efb
--- /dev/null
+++ b/devel/electron17/files/patch-components_flags__ui_flags__state.cc
@@ -0,0 +1,11 @@
+--- components/flags_ui/flags_state.cc.orig 2022-05-11 07:16:50 UTC
++++ components/flags_ui/flags_state.cc
+@@ -654,7 +654,7 @@ unsigned short FlagsState::GetCurrentPlatform() {
+ #elif BUILDFLAG(IS_CHROMEOS_ASH)
+ return kOsCrOS;
+ #elif (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) || \
+- defined(OS_OPENBSD)
++ defined(OS_BSD)
+ return kOsLinux;
+ #elif defined(OS_ANDROID)
+ return kOsAndroid;
diff --git a/devel/electron17/files/patch-components_gwp__asan_BUILD.gn b/devel/electron17/files/patch-components_gwp__asan_BUILD.gn
new file mode 100644
index 000000000000..55bb57dce9cd
--- /dev/null
+++ b/devel/electron17/files/patch-components_gwp__asan_BUILD.gn
@@ -0,0 +1,11 @@
+--- components/gwp_asan/BUILD.gn.orig 2022-05-11 07:00:33 UTC
++++ components/gwp_asan/BUILD.gn
+@@ -14,7 +14,7 @@ test("gwp_asan_unittests") {
+ "//components/gwp_asan/common:unit_tests",
+ "//testing/gtest",
+ ]
+- if (is_win || is_mac || is_linux || is_chromeos || is_android) {
++ if ((is_win || is_mac || is_linux || is_chromeos || is_android) && !is_bsd) {
+ deps += [
+ "//components/gwp_asan/client:unit_tests",
+ "//components/gwp_asan/crash_handler:unit_tests",
diff --git a/devel/electron17/files/patch-components_gwp__asan_crash__handler_crash__analyzer.cc b/devel/electron17/files/patch-components_gwp__asan_crash__handler_crash__analyzer.cc
new file mode 100644
index 000000000000..ee6b7c39e5c2
--- /dev/null
+++ b/devel/electron17/files/patch-components_gwp__asan_crash__handler_crash__analyzer.cc
@@ -0,0 +1,20 @@
+--- components/gwp_asan/crash_handler/crash_analyzer.cc.orig 2022-05-11 07:16:50 UTC
++++ components/gwp_asan/crash_handler/crash_analyzer.cc
+@@ -26,7 +26,7 @@
+ #include "third_party/crashpad/crashpad/snapshot/process_snapshot.h"
+ #include "third_party/crashpad/crashpad/util/process/process_memory.h"
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID) || defined(OS_BSD)
+ #include <signal.h>
+ #elif defined(OS_APPLE)
+ #include <mach/exception_types.h>
+@@ -81,7 +81,7 @@ bool CrashAnalyzer::GetExceptionInfo(
+
+ crashpad::VMAddress CrashAnalyzer::GetAccessAddress(
+ const crashpad::ExceptionSnapshot& exception) {
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID) || defined(OS_BSD)
+ if (exception.Exception() == SIGSEGV || exception.Exception() == SIGBUS)
+ return exception.ExceptionAddress();
+ #elif defined(OS_APPLE)
diff --git a/devel/electron17/files/patch-components_invalidation_impl_invalidation__switches.cc b/devel/electron17/files/patch-components_invalidation_impl_invalidation__switches.cc
new file mode 100644
index 000000000000..2d43c1e4b871
--- /dev/null
+++ b/devel/electron17/files/patch-components_invalidation_impl_invalidation__switches.cc
@@ -0,0 +1,11 @@
+--- components/invalidation/impl/invalidation_switches.cc.orig 2022-05-11 07:16:50 UTC
++++ components/invalidation/impl/invalidation_switches.cc
+@@ -21,7 +21,7 @@ const int kDefaultInstanceIDTokenTTLSeconds = 14 * 24
+ const base::Feature kSyncInstanceIDTokenTTL {
+ "SyncInstanceIDTokenTTL",
+ #if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || \
+- defined(OS_CHROMEOS) || defined(OS_IOS)
++ defined(OS_CHROMEOS) || defined(OS_IOS) || defined(OS_BSD)
+ base::FEATURE_ENABLED_BY_DEFAULT
+ #else
+ base::FEATURE_DISABLED_BY_DEFAULT
diff --git a/devel/electron17/files/patch-components_metrics_drive__metrics__provider__linux.cc b/devel/electron17/files/patch-components_metrics_drive__metrics__provider__linux.cc
new file mode 100644
index 000000000000..eee3b3e7d5db
--- /dev/null
+++ b/devel/electron17/files/patch-components_metrics_drive__metrics__provider__linux.cc
@@ -0,0 +1,16 @@
+--- components/metrics/drive_metrics_provider_linux.cc.orig 2021-01-07 00:36:30 UTC
++++ components/metrics/drive_metrics_provider_linux.cc
+@@ -4,7 +4,13 @@
+
+ #include "components/metrics/drive_metrics_provider.h"
+
++#if defined(OS_BSD)
++#include <sys/types.h>
++#define MAJOR(dev) major(dev)
++#define MINOR(dev) minor(dev)
++#else
+ #include <linux/kdev_t.h> // For MAJOR()/MINOR().
++#endif
+ #include <sys/stat.h>
+ #include <string>
+
diff --git a/devel/electron17/files/patch-components_neterror_resources_neterror.js b/devel/electron17/files/patch-components_neterror_resources_neterror.js
new file mode 100644
index 000000000000..02d19b4be4c5
--- /dev/null
+++ b/devel/electron17/files/patch-components_neterror_resources_neterror.js
@@ -0,0 +1,11 @@
+--- components/neterror/resources/neterror.js.orig 2021-11-19 04:25:13 UTC
++++ components/neterror/resources/neterror.js
+@@ -129,7 +129,7 @@ function detailsButtonClick() {
+ }
+
+ let primaryControlOnLeft = true;
+-// <if expr="is_macosx or is_ios or is_linux or is_android">
++// <if expr="is_macosx or is_ios or is_linux or is_android or is_bsd">
+ primaryControlOnLeft = false;
+ // </if>
+
diff --git a/devel/electron17/files/patch-components_network__session__configurator_browser_network__session__configurator.cc b/devel/electron17/files/patch-components_network__session__configurator_browser_network__session__configurator.cc
new file mode 100644
index 000000000000..afc99fa977be
--- /dev/null
+++ b/devel/electron17/files/patch-components_network__session__configurator_browser_network__session__configurator.cc
@@ -0,0 +1,11 @@
+--- components/network_session_configurator/browser/network_session_configurator.cc.orig 2022-05-11 07:16:50 UTC
++++ components/network_session_configurator/browser/network_session_configurator.cc
+@@ -782,7 +782,7 @@ net::URLRequestContextBuilder::HttpCacheParams::Type C
+ }
+ #endif // #if !defined(OS_ANDROID)
+
+-#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ return net::URLRequestContextBuilder::HttpCacheParams::DISK_SIMPLE;
+ #else
+ return net::URLRequestContextBuilder::HttpCacheParams::DISK_BLOCKFILE;
diff --git a/devel/electron17/files/patch-components_new__or__sad__tab__strings.grdp b/devel/electron17/files/patch-components_new__or__sad__tab__strings.grdp
new file mode 100644
index 000000000000..7cce3363bc5f
--- /dev/null
+++ b/devel/electron17/files/patch-components_new__or__sad__tab__strings.grdp
@@ -0,0 +1,47 @@
+--- components/new_or_sad_tab_strings.grdp.orig 2022-05-11 07:16:50 UTC
++++ components/new_or_sad_tab_strings.grdp
+@@ -51,7 +51,7 @@
+ Open page in a new Incognito window (⇧⌘N)
+ </message>
+ </if>
+- <if expr="is_win or is_linux or is_fuchsia or chromeos">
++ <if expr="is_win or is_posix or is_fuchsia or chromeos">
+ <message name="IDS_SAD_TAB_RELOAD_INCOGNITO" desc="One of the bullet points displayed on the web page if a reload failed to fix the issue, advising the user to open the web page in Chrome's Incognito mode.">
+ Open page in a new Incognito window (Ctrl-Shift-N)
+ </message>
+@@ -66,7 +66,7 @@
+ Close other tabs or apps
+ </message>
+ </if>
+- <if expr="is_linux and not chromeos">
++ <if expr="is_posix and not chromeos">
+ <message name="IDS_SAD_TAB_RELOAD_CLOSE_TABS" desc="One of the bullet points displayed on the web page if a reload failed to fix the issue, advising the user to close other Chrome tabs or programs running on their computer.">
+ Close other tabs or programs
+ </message>
+@@ -76,7 +76,7 @@
+ Close other apps
+ </message>
+ </if>
+- <if expr="is_linux and not chromeos">
++ <if expr="is_posix and not chromeos">
+ <message name="IDS_SAD_TAB_RELOAD_CLOSE_NOTABS" desc="One of the bullet points displayed on the web page if a reload failed to fix the issue, advising the user to close other programs running on their computer (Linux).">
+ Close other programs
+ </message>
+@@ -91,7 +91,7 @@
+ Restart Chromium
+ </message>
+ </if>
+- <if expr="is_win or is_linux or is_macosx or is_fuchsia or chromeos">
++ <if expr="is_win or is_posix or is_macosx or is_fuchsia or chromeos">
+ <message name="IDS_SAD_TAB_RELOAD_RESTART_DEVICE" desc="One of the bullet points displayed on the web page if a reload failed to fix the issue, advising the user to restart their computer.">
+ Restart your computer
+ </message>
+@@ -106,7 +106,7 @@
+ Learn more
+ </message>
+ </if>
+- <if expr="is_win or is_linux or is_macosx or is_fuchsia or chromeos">
++ <if expr="is_win or is_posix or is_macosx or is_fuchsia or chromeos">
+ <message name="IDS_SAD_TAB_ERROR_CODE" desc="The message displayed on the crashed web page indicating the type of the crash.">
+ Error code: <ph name="ERROR_CODE">$1<ex>STATUS_ACCESS_VIOLATION</ex></ph>
+ </message>
diff --git a/devel/electron17/files/patch-components_os__crypt_keyring__util__linux.cc b/devel/electron17/files/patch-components_os__crypt_keyring__util__linux.cc
new file mode 100644
index 000000000000..2ce91a18b6dc
--- /dev/null
+++ b/devel/electron17/files/patch-components_os__crypt_keyring__util__linux.cc
@@ -0,0 +1,17 @@
+--- components/os_crypt/keyring_util_linux.cc.orig 2022-05-11 07:16:50 UTC
++++ components/os_crypt/keyring_util_linux.cc
+@@ -69,12 +69,12 @@ bool GnomeKeyringLoader::LoadGnomeKeyring() {
+ if (keyring_loaded)
+ return true;
+
+- void* handle = dlopen("libgnome-keyring.so.0", RTLD_NOW | RTLD_GLOBAL);
++ void* handle = dlopen("libgnome-keyring.so", RTLD_NOW | RTLD_GLOBAL);
+ if (!handle) {
+ // We wanted to use GNOME Keyring, but we couldn't load it. Warn, because
+ // either the user asked for this, or we autodetected it incorrectly. (Or
+ // the system has broken libraries, which is also good to warn about.)
+- LOG(WARNING) << "Could not load libgnome-keyring.so.0: " << dlerror();
++ LOG(WARNING) << "Could not load libgnome-keyring.so: " << dlerror();
+ return false;
+ }
+
diff --git a/devel/electron17/files/patch-components_os__crypt_libsecret__util__linux.cc b/devel/electron17/files/patch-components_os__crypt_libsecret__util__linux.cc
new file mode 100644
index 000000000000..fb6a3788b0b8
--- /dev/null
+++ b/devel/electron17/files/patch-components_os__crypt_libsecret__util__linux.cc
@@ -0,0 +1,18 @@
+--- components/os_crypt/libsecret_util_linux.cc.orig 2022-05-11 07:16:50 UTC
++++ components/os_crypt/libsecret_util_linux.cc
+@@ -101,13 +101,13 @@ bool LibsecretLoader::LoadLibsecret() {
+ if (libsecret_loaded_)
+ return true;
+
+- static void* handle = dlopen("libsecret-1.so.0", RTLD_NOW | RTLD_GLOBAL);
++ static void* handle = dlopen("libsecret-1.so", RTLD_NOW | RTLD_GLOBAL);
+ if (!handle) {
+ // We wanted to use libsecret, but we couldn't load it. Warn, because
+ // either the user asked for this, or we autodetected it incorrectly. (Or
+ // the system has broken libraries, which is also good to warn about.)
+ // TODO(crbug.com/607435): Channel this message to the user-facing log
+- VLOG(1) << "Could not load libsecret-1.so.0: " << dlerror();
++ VLOG(1) << "Could not load libsecret-1.so: " << dlerror();
+ return false;
+ }
+
diff --git a/devel/electron17/files/patch-components_os__crypt_os__crypt.h b/devel/electron17/files/patch-components_os__crypt_os__crypt.h
new file mode 100644
index 000000000000..1ddfad03eaba
--- /dev/null
+++ b/devel/electron17/files/patch-components_os__crypt_os__crypt.h
@@ -0,0 +1,38 @@
+--- components/os_crypt/os_crypt.h.orig 2022-05-11 07:16:50 UTC
++++ components/os_crypt/os_crypt.h
+@@ -16,7 +16,7 @@
+
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ class KeyStorageLinux;
+ #endif // defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
+
+@@ -41,7 +41,7 @@ class OSCrypt {
+
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ // Set the configuration of OSCrypt.
+ static COMPONENT_EXPORT(OS_CRYPT) void SetConfig(
+ std::unique_ptr<os_crypt::Config> config);
+@@ -49,7 +49,7 @@ class OSCrypt {
+
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_APPLE) || defined(OS_WIN) || \
++#if defined(OS_APPLE) || defined(OS_WIN) || defined(OS_BSD) || \
+ (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
+ // On Linux returns true iff the real secret key (not hardcoded one) is
+ // available. On MacOS returns true if Keychain is available (for mock
+@@ -141,7 +141,7 @@ class OSCrypt {
+
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ // For unit testing purposes, inject methods to be used.
+ // |get_key_storage_mock| provides the desired |KeyStorage| implementation.
+ // If the provider returns |nullptr|, a hardcoded password will be used.
diff --git a/devel/electron17/files/patch-components_paint__preview_browser_paint__preview__client.cc b/devel/electron17/files/patch-components_paint__preview_browser_paint__preview__client.cc
new file mode 100644
index 000000000000..0574f56e5815
--- /dev/null
+++ b/devel/electron17/files/patch-components_paint__preview_browser_paint__preview__client.cc
@@ -0,0 +1,13 @@
+--- components/paint_preview/browser/paint_preview_client.cc.orig 2022-05-11 07:16:50 UTC
++++ components/paint_preview/browser/paint_preview_client.cc
+@@ -313,8 +313,8 @@ void PaintPreviewClient::CapturePaintPreview(
+ metadata->set_url(url.spec());
+ metadata->set_version(kPaintPreviewVersion);
+ auto* chromeVersion = metadata->mutable_chrome_version();
+- chromeVersion->set_major(CHROME_VERSION_MAJOR);
+- chromeVersion->set_minor(CHROME_VERSION_MINOR);
++ chromeVersion->set_gmajor(CHROME_VERSION_MAJOR);
++ chromeVersion->set_gminor(CHROME_VERSION_MINOR);
+ chromeVersion->set_build(CHROME_VERSION_BUILD);
+ chromeVersion->set_patch(CHROME_VERSION_PATCH);
+ document_data.callback = std::move(callback);
diff --git a/devel/electron17/files/patch-components_paint__preview_common_proto_paint__preview.proto b/devel/electron17/files/patch-components_paint__preview_common_proto_paint__preview.proto
new file mode 100644
index 000000000000..c8edae9d2c18
--- /dev/null
+++ b/devel/electron17/files/patch-components_paint__preview_common_proto_paint__preview.proto
@@ -0,0 +1,13 @@
+--- components/paint_preview/common/proto/paint_preview.proto.orig 2021-11-19 04:25:14 UTC
++++ components/paint_preview/common/proto/paint_preview.proto
+@@ -82,8 +82,8 @@ message PaintPreviewFrameProto {
+ // Stores Chrome version.
+ // NEXT_TAG = 5
+ message ChromeVersionProto {
+- optional uint64 major = 1;
+- optional uint64 minor = 2;
++ optional uint64 gmajor = 1;
++ optional uint64 gminor = 2;
+ optional uint64 build = 3;
+ optional uint64 patch = 4;
+ }
diff --git a/devel/electron17/files/patch-components_performance__manager_features.cc b/devel/electron17/files/patch-components_performance__manager_features.cc
new file mode 100644
index 000000000000..e538bfb5270f
--- /dev/null
+++ b/devel/electron17/files/patch-components_performance__manager_features.cc
@@ -0,0 +1,11 @@
+--- components/performance_manager/features.cc.orig 2021-11-19 04:25:14 UTC
++++ components/performance_manager/features.cc
+@@ -22,7 +22,7 @@ const base::Feature kUrgentDiscardingFromPerformanceMa
+ "UrgentDiscardingFromPerformanceManager",
+ // Ash Chrome uses memory pressure evaluator instead of performance manager to
+ // discard tabs.
+-#if BUILDFLAG(IS_CHROMEOS_ASH) || defined(OS_LINUX)
++#if BUILDFLAG(IS_CHROMEOS_ASH) || defined(OS_LINUX) || defined(OS_BSD)
+ base::FEATURE_DISABLED_BY_DEFAULT
+ #else
+ base::FEATURE_ENABLED_BY_DEFAULT
diff --git a/devel/electron17/files/patch-components_permissions_prediction__service_prediction__service__common.cc b/devel/electron17/files/patch-components_permissions_prediction__service_prediction__service__common.cc
new file mode 100644
index 000000000000..c2dc57703ff0
--- /dev/null
+++ b/devel/electron17/files/patch-components_permissions_prediction__service_prediction__service__common.cc
@@ -0,0 +1,11 @@
+--- components/permissions/prediction_service/prediction_service_common.cc.orig 2022-05-11 07:16:50 UTC
++++ components/permissions/prediction_service/prediction_service_common.cc
+@@ -13,7 +13,7 @@
+ namespace permissions {
+ ClientFeatures_Platform GetCurrentPlatformProto() {
+ #if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) || \
+- defined(OS_MAC)
++ defined(OS_MAC) || defined(OS_BSD)
+ return permissions::ClientFeatures_Platform_PLATFORM_DESKTOP;
+ #elif defined(OS_ANDROID) || defined(OS_FUCHSIA)
+ return permissions::ClientFeatures_Platform_PLATFORM_MOBILE;
diff --git a/devel/electron17/files/patch-components_policy_core_common_cloud_cloud__policy__client.cc b/devel/electron17/files/patch-components_policy_core_common_cloud_cloud__policy__client.cc
new file mode 100644
index 000000000000..b8fc38b5c357
--- /dev/null
+++ b/devel/electron17/files/patch-components_policy_core_common_cloud_cloud__policy__client.cc
@@ -0,0 +1,11 @@
+--- components/policy/core/common/cloud/cloud_policy_client.cc.orig 2022-05-11 07:16:50 UTC
++++ components/policy/core/common/cloud/cloud_policy_client.cc
+@@ -418,7 +418,7 @@ void CloudPolicyClient::FetchPolicy() {
+ fetch_request->set_invalidation_payload(invalidation_payload_);
+ }
+ }
+-#if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || defined(OS_BSD)
+ // Only set browser device identifier for CBCM Chrome cloud policy on
+ // desktop.
+ if (base::FeatureList::IsEnabled(
diff --git a/devel/electron17/files/patch-components_policy_core_common_cloud_cloud__policy__util.cc b/devel/electron17/files/patch-components_policy_core_common_cloud_cloud__policy__util.cc
new file mode 100644
index 000000000000..7684ff39c4a4
--- /dev/null
+++ b/devel/electron17/files/patch-components_policy_core_common_cloud_cloud__policy__util.cc
@@ -0,0 +1,63 @@
+--- components/policy/core/common/cloud/cloud_policy_util.cc.orig 2022-05-11 07:16:50 UTC
++++ components/policy/core/common/cloud/cloud_policy_util.cc
+@@ -18,7 +18,7 @@
+ #include <wincred.h>
+ #endif
+
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_APPLE)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_APPLE) || defined(OS_BSD)
+ #include <pwd.h>
+ #include <sys/types.h>
+ #include <unistd.h>
+@@ -33,10 +33,14 @@
+ #import <SystemConfiguration/SCDynamicStoreCopySpecific.h>
+ #endif
+
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ #include <limits.h> // For HOST_NAME_MAX
+ #endif
+
++#if defined(OS_FREEBSD)
++#define HOST_NAME_MAX MAXHOSTNAMELEN
++#endif
++
+ #include <utility>
+
+ #include "base/check.h"
+@@ -67,7 +71,7 @@
+ #include "base/system/sys_info.h"
+ #endif
+
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ #include "base/system/sys_info.h"
+ #endif
+
+@@ -80,7 +84,7 @@ namespace policy {
+ namespace em = enterprise_management;
+
+ std::string GetMachineName() {
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ char hostname[HOST_NAME_MAX];
+ if (gethostname(hostname, HOST_NAME_MAX) == 0) // Success.
+ return hostname;
+@@ -138,7 +142,7 @@ std::string GetMachineName() {
+
+ std::string GetOSVersion() {
+ #if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_APPLE) || \
+- defined(OS_ANDROID) || defined(OS_FUCHSIA)
++ defined(OS_ANDROID) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ return base::SysInfo::OperatingSystemVersion();
+ #elif defined(OS_WIN)
+ base::win::OSInfo::VersionNumber version_number =
+@@ -161,7 +165,7 @@ std::string GetOSArchitecture() {
+ }
+
+ std::string GetOSUsername() {
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_APPLE)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_APPLE) || defined(OS_BSD)
+ struct passwd* creds = getpwuid(getuid());
+ if (!creds || !creds->pw_name)
+ return std::string();
diff --git a/devel/electron17/files/patch-components_policy_resources_policy__templates.json b/devel/electron17/files/patch-components_policy_resources_policy__templates.json
new file mode 100644
index 000000000000..d997748a7754
--- /dev/null
+++ b/devel/electron17/files/patch-components_policy_resources_policy__templates.json
@@ -0,0 +1,191 @@
+--- components/policy/resources/policy_templates.json.orig 2022-05-11 07:16:50 UTC
++++ components/policy/resources/policy_templates.json
+@@ -1398,7 +1398,7 @@
+ 'owners': ['file://components/policy/resources/OWNERS', 'pastarmovj@chromium.org'],
+ 'type': 'main',
+ 'schema': { 'type': 'boolean' },
+- 'supported_on': ['chrome.win7:11-', 'chrome.mac:11-', 'chrome.linux:11-'],
++ 'supported_on': ['chrome.win7:11-', 'chrome.mac:11-', 'chrome.linux:11-', 'chrome.openbsd:11-', 'chrome.freebsd:11-'],
+ 'features': {
+ 'dynamic_refresh': True,
+ 'per_profile': False,
+@@ -2500,7 +2500,7 @@
+ 'owners': ['file://remoting/OWNERS', 'jamiewalch@chromium.org'],
+ 'type': 'main',
+ 'schema': { 'type': 'boolean' },
+- 'supported_on': ['chrome.linux:25-', 'chrome.mac:25-'],
++ 'supported_on': ['chrome.linux:25-', 'chrome.mac:25-', 'chrome.openbsd:25-', 'chrome.freebsd:25-'],
+ 'features': {
+ 'dynamic_refresh': True,
+ 'per_profile': False,
+@@ -4231,7 +4231,7 @@
+ 'owners': ['file://components/policy/resources/OWNERS', 'pastarmovj@chromium.org'],
+ 'type': 'main',
+ 'schema': { 'type': 'boolean' },
+- 'supported_on': ['chrome.win:57-', 'chrome.mac:88-', 'chrome.linux:88-'],
++ 'supported_on': ['chrome.win:57-', 'chrome.mac:88-', 'chrome.linux:88-', 'chrome.openbsd:88-', 'chrome.freebsd:88-'],
+ 'features': {
+ 'dynamic_refresh': False,
+ 'per_profile': False,
+@@ -4260,7 +4260,7 @@
+ 'owners': ['file://components/policy/resources/OWNERS', 'pastarmovj@chromium.org'],
+ 'type': 'string',
+ 'schema': { 'type': 'string' },
+- 'supported_on': ['chrome.win:57-', 'chrome.mac:88-', 'chrome.linux:88-'],
++ 'supported_on': ['chrome.win:57-', 'chrome.mac:88-', 'chrome.linux:88-', 'chrome.openbsd:88-', 'chrome.freebsd:88-'],
+ 'features': {
+ 'dynamic_refresh': False,
+ 'per_profile': False,
+@@ -5174,7 +5174,7 @@
+ 'owners': ['file://components/policy/resources/OWNERS', 'rsorokin@chromium.org'],
+ 'type': 'main',
+ 'schema': { 'type': 'boolean' },
+- 'supported_on': ['chrome.linux:74-','chrome.mac:74-','chrome_os:74-'],
++ 'supported_on': ['chrome.linux:74-','chrome.mac:74-','chrome_os:74-','chrome.openbsd:74-','chrome.freebsd:74-'],
+ 'features': {
+ 'dynamic_refresh': True,
+ 'per_profile': False,
+@@ -5235,7 +5235,7 @@
+ 'owners': ['file://components/policy/resources/OWNERS', 'rsorokin@chromium.org'],
+ 'type': 'string',
+ 'schema': { 'type': 'string' },
+- 'supported_on': ['chrome.linux:9-'],
++ 'supported_on': ['chrome.linux:9-','chrome.openbsd:9-','chrome.freebsd:9-'],
+ 'features': {
+ 'dynamic_refresh': False,
+ 'per_profile': False,
+@@ -5301,7 +5301,7 @@
+ 'owners': ['file://components/policy/resources/OWNERS', 'rsorokin@chromium.org'],
+ 'type': 'main',
+ 'schema': { 'type': 'boolean' },
+- 'supported_on': ['chrome.linux:63-','chrome.mac:63-','chrome_os:63-','android:63-','webview_android:63-'],
++ 'supported_on': ['chrome.linux:63-','chrome.mac:63-','chrome_os:63-','android:63-','webview_android:63-','chrome.openbsd:63-','chrome.freebsd:63-'],
+ 'features': {
+ 'dynamic_refresh': True,
+ 'per_profile': False,
+@@ -10084,7 +10084,7 @@
+ 'owners': ['file://net/cert/OWNERS', 'rsleevi@chromium.org'],
+ 'type': 'main',
+ 'schema': { 'type': 'boolean' },
+- 'supported_on': ['chrome_os:30-', 'chrome.linux:30-', 'chrome.win:30-'],
++ 'supported_on': ['chrome_os:30-', 'chrome.linux:30-', 'chrome.win:30-', 'chrome.openbsd:30-', 'chrome.freebsd:30-'],
+ 'features': {
+ 'dynamic_refresh': True,
+ 'per_profile': False,
+@@ -10178,7 +10178,7 @@
+ 'owners': ['file://components/policy/resources/OWNERS', 'pmarko@chromium.org'],
+ 'type': 'main',
+ 'schema': { 'type': 'boolean' },
+- 'supported_on': ['chrome_os:77-83', 'chrome.linux:79-83', 'chrome.mac:83-'],
++ 'supported_on': ['chrome_os:77-83', 'chrome.linux:79-83', 'chrome.mac:83-', 'chrome.openbsd:79-83', 'chrome.freebsd:79-83'],
+ 'features': {
+ 'dynamic_refresh': False,
+ 'per_profile': False,
+@@ -12116,7 +12116,7 @@
+ 'owners': ['file://components/policy/resources/OWNERS', 'pmarko@chromium.org'],
+ 'type': 'main',
+ 'schema': { 'type': 'boolean' },
+- 'supported_on': ['chrome.win:19-', 'chrome.linux:19-'],
++ 'supported_on': ['chrome.win:19-', 'chrome.linux:19-', 'chrome.openbsd:19-', 'chrome.freebsd:19-'],
+ 'features': {
+ 'can_be_recommended': True,
+ 'dynamic_refresh': True,
+@@ -12963,7 +12963,7 @@
+ 'owners': ['file://components/policy/resources/OWNERS', 'bartfab@chromium.org'],
+ 'type': 'main',
+ 'schema': { 'type': 'boolean' },
+- 'supported_on': ['chrome.win:31-', 'chrome.linux:31-', 'chrome_os:31-'],
++ 'supported_on': ['chrome.win:31-', 'chrome.linux:31-', 'chrome_os:31-', 'chrome.openbsd:31-', 'chrome.freebsd:31-'],
+ 'features': {
+ 'dynamic_refresh': True,
+ 'per_profile': True,
+@@ -19753,7 +19753,7 @@
+ 'items': { 'type': 'string' }
+ },
+ # Spell checking is provided by macOS, so can't be controlled on Mac.
+- 'supported_on': ['chrome.win:65-', 'chrome.linux:65-', 'chrome_os:65-'],
++ 'supported_on': ['chrome.win:65-', 'chrome.linux:65-', 'chrome_os:65-', 'chrome.openbsd:65-', 'chrome.freebsd:65-'],
+ 'features': {
+ 'can_be_recommended': False,
+ 'dynamic_refresh': True,
+@@ -19784,7 +19784,7 @@
+ 'items': { 'type': 'string' }
+ },
+ # Spell checking is provided by macOS, so can't be controlled on Mac.
+- 'supported_on': ['chrome.win:75-', 'chrome.linux:75-', 'chrome_os:75-'],
++ 'supported_on': ['chrome.win:75-', 'chrome.linux:75-', 'chrome_os:75-', 'chrome.openbsd:75-', 'chrome.freebsd:75-'],
+ 'deprecated': True,
+ 'features': {
+ 'can_be_recommended': False,
+@@ -19818,7 +19818,7 @@
+ 'items': { 'type': 'string' }
+ },
+ # Spell checking is provided by macOS, so can't be controlled on Mac.
+- 'supported_on': ['chrome.win:86-', 'chrome.linux:86-', 'chrome_os:86-'],
++ 'supported_on': ['chrome.win:86-', 'chrome.linux:86-', 'chrome_os:86-', 'chrome.openbsd:86-', 'chrome.freebsd:86-'],
+ 'features': {
+ 'can_be_recommended': False,
+ 'dynamic_refresh': True,
+@@ -20556,7 +20556,7 @@
+ 'owners': ['fbeaufort@chromium.org', 'beccahughes@chromium.org'],
+ 'type': 'main',
+ 'schema': { 'type': 'boolean' },
+- 'supported_on': ['chrome.win:66-', 'chrome.linux:66-', 'chrome.mac:66-', 'chrome_os:66-'],
++ 'supported_on': ['chrome.win:66-', 'chrome.linux:66-', 'chrome.mac:66-', 'chrome_os:66-', 'chrome.openbsd:66-', 'chrome.freebsd:66-'],
+ 'features': {
+ 'dynamic_refresh': True,
+ 'per_profile': True,
+@@ -24742,7 +24742,7 @@
+ 'owners': ['file://services/audio/OWNERS', 'dalecurtis@chromium.org'],
+ 'type': 'main',
+ 'schema': { 'type': 'boolean' },
+- 'supported_on': ['chrome.win:79-', 'chrome.linux:79-', 'chrome.mac:79-'],
++ 'supported_on': ['chrome.win:79-', 'chrome.linux:79-', 'chrome.mac:79-', 'chrome.openbsd:79-', 'chrome.freebsd:79-'],
+ 'features': {
+ 'dynamic_refresh': False,
+ 'per_profile': False,
+@@ -26084,7 +26084,7 @@ If this policy is left unset, privacy screen is disabl
+ 'owners': ['file://chrome/browser/notifications/OWNERS', 'knollr@chromium.org'],
+ 'type': 'main',
+ 'schema': { 'type': 'boolean' },
+- 'supported_on': ['chrome.linux:83-'],
++ 'supported_on': ['chrome.linux:83-','chrome.openbsd:83-','chrome.freebsd:83-'],
+ 'features': {
+ 'dynamic_refresh': True,
+ 'per_profile': True,
+@@ -26108,7 +26108,7 @@ If set to False, <ph name="PRODUCT_NAME">$1<ex>Google
+ 'owners': ['file://chrome/browser/notifications/OWNERS'],
+ 'type': 'main',
+ 'schema': { 'type': 'boolean' },
+- 'supported_on': ['chrome.linux:90-'],
++ 'supported_on': ['chrome.linux:90-','chrome.openbsd:90-','chrome.freebsd:90-'],
+ 'features': {
+ 'dynamic_refresh': True,
+ 'per_profile': True,
+@@ -27175,7 +27175,7 @@ If you disable this policy, web page scrolling to spec
+ 'owners': ['asumaneev@google.com'],
+ 'type': 'main',
+ 'schema': { 'type': 'boolean' },
+- 'supported_on': ['chrome.linux:91-92', 'chrome_os:91-'],
++ 'supported_on': ['chrome.linux:91-92', 'chrome_os:91-', 'chrome.openbsd:91-', 'chrome.freebsd:91-'],
+ 'features': {
+ 'dynamic_refresh': True,
+ 'per_profile': False,
+@@ -28410,7 +28410,7 @@ When this policy is set, <ph name="PRODUCT_OS_NAME">$2
+ },
+ ],
+ 'default': True,
+- 'supported_on': ['chrome.win:93-', 'chrome.linux:93-', 'chrome.mac:93-'],
++ 'supported_on': ['chrome.win:93-', 'chrome.linux:93-', 'chrome.mac:93-', 'chrome.openbsd:93-', 'chrome.freebsd:93-'],
+ 'features': {
+ 'dynamic_refresh': True,
+ 'per_profile': True,
+@@ -28543,7 +28543,7 @@ When this policy is set, <ph name="PRODUCT_OS_NAME">$2
+ 'owners': ['mattm@chromium.org'],
+ 'type': 'main',
+ 'schema': { 'type': 'boolean' },
+- 'future_on': ['chrome.win', 'chrome.mac', 'chrome.linux'],
++ 'future_on': ['chrome.win', 'chrome.mac', 'chrome.linux', 'chrome.openbsd', 'chrome.freebsd'],
+ 'features': {
+ 'dynamic_refresh': True,
+ 'per_profile': True,
diff --git a/devel/electron17/files/patch-components_policy_tools_generate__policy__source.py b/devel/electron17/files/patch-components_policy_tools_generate__policy__source.py
new file mode 100644
index 000000000000..6daf752ecdf4
--- /dev/null
+++ b/devel/electron17/files/patch-components_policy_tools_generate__policy__source.py
@@ -0,0 +1,14 @@
+--- components/policy/tools/generate_policy_source.py.orig 2022-05-11 07:16:50 UTC
++++ components/policy/tools/generate_policy_source.py
+@@ -47,8 +47,10 @@ PLATFORM_STRINGS = {
+ 'ios': ['ios'],
+ 'chrome.win': ['win'],
+ 'chrome.linux': ['linux'],
++ 'chrome.openbsd': ['openbsd'],
++ 'chrome.freebsd': ['freebsd'],
+ 'chrome.mac': ['mac'],
+- 'chrome.*': ['win', 'mac', 'linux', 'fuchsia'],
++ 'chrome.*': ['win', 'mac', 'linux', 'fuchsia', 'openbsd', 'freebsd'],
+ 'chrome.win7': ['win'],
+ }
+
diff --git a/devel/electron17/files/patch-components_safe__browsing_content_resources_gen__file__type__proto.py b/devel/electron17/files/patch-components_safe__browsing_content_resources_gen__file__type__proto.py
new file mode 100644
index 000000000000..3aa8cc57225a
--- /dev/null
+++ b/devel/electron17/files/patch-components_safe__browsing_content_resources_gen__file__type__proto.py
@@ -0,0 +1,19 @@
+--- components/safe_browsing/content/resources/gen_file_type_proto.py.orig 2022-05-11 07:00:34 UTC
++++ components/safe_browsing/content/resources/gen_file_type_proto.py
+@@ -35,6 +35,7 @@ def PlatformTypes():
+ download_file_types_pb2.DownloadFileType.PLATFORM_CHROME_OS,
+ "fuchsia": download_file_types_pb2.DownloadFileType.PLATFORM_FUCHSIA,
+ "linux": download_file_types_pb2.DownloadFileType.PLATFORM_LINUX,
++ "openbsd": download_file_types_pb2.DownloadFileType.PLATFORM_LINUX,
+ "mac": download_file_types_pb2.DownloadFileType.PLATFORM_MAC,
+ "win": download_file_types_pb2.DownloadFileType.PLATFORM_WINDOWS,
+ }
+@@ -179,7 +180,7 @@ class DownloadFileTypeProtoGenerator(BinaryProtoGenera
+ '-t',
+ '--type',
+ help='The platform type. One of android, chromeos, ' +
+- 'linux, mac, win')
++ 'linux, mac, win, openbsd')
+
+ def AddExtraCommandLineArgsForVirtualEnvRun(self, opts, command):
+ if opts.type is not None:
diff --git a/devel/electron17/files/patch-components_safe__browsing_core_browser_db_v4__protocol__manager__util.cc b/devel/electron17/files/patch-components_safe__browsing_core_browser_db_v4__protocol__manager__util.cc
new file mode 100644
index 000000000000..1ab23e7c610e
--- /dev/null
+++ b/devel/electron17/files/patch-components_safe__browsing_core_browser_db_v4__protocol__manager__util.cc
@@ -0,0 +1,11 @@
+--- components/safe_browsing/core/browser/db/v4_protocol_manager_util.cc.orig 2022-05-11 07:16:50 UTC
++++ components/safe_browsing/core/browser/db/v4_protocol_manager_util.cc
+@@ -115,7 +115,7 @@ std::ostream& operator<<(std::ostream& os, const ListI
+ PlatformType GetCurrentPlatformType() {
+ #if defined(OS_WIN)
+ return WINDOWS_PLATFORM;
+-#elif defined(OS_LINUX) || defined(OS_CHROMEOS)
++#elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ return LINUX_PLATFORM;
+ #elif defined(OS_IOS)
+ return IOS_PLATFORM;
diff --git a/devel/electron17/files/patch-components_safe__browsing_core_browser_realtime_url__lookup__service__base.cc b/devel/electron17/files/patch-components_safe__browsing_core_browser_realtime_url__lookup__service__base.cc
new file mode 100644
index 000000000000..2b437d598ac8
--- /dev/null
+++ b/devel/electron17/files/patch-components_safe__browsing_core_browser_realtime_url__lookup__service__base.cc
@@ -0,0 +1,11 @@
+--- components/safe_browsing/core/browser/realtime/url_lookup_service_base.cc.orig 2022-05-11 07:16:50 UTC
++++ components/safe_browsing/core/browser/realtime/url_lookup_service_base.cc
+@@ -107,7 +107,7 @@ RTLookupRequest::OSType GetRTLookupRequestOSType() {
+ return RTLookupRequest::OS_TYPE_FUCHSIA;
+ #elif defined(OS_IOS)
+ return RTLookupRequest::OS_TYPE_IOS;
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ return RTLookupRequest::OS_TYPE_LINUX;
+ #elif defined(OS_MAC)
+ return RTLookupRequest::OS_TYPE_MAC;
diff --git a/devel/electron17/files/patch-components_security__interstitials_content_utils.cc b/devel/electron17/files/patch-components_security__interstitials_content_utils.cc
new file mode 100644
index 000000000000..a1230dc7e0c8
--- /dev/null
+++ b/devel/electron17/files/patch-components_security__interstitials_content_utils.cc
@@ -0,0 +1,11 @@
+--- components/security_interstitials/content/utils.cc.orig 2021-10-08 06:25:47 UTC
++++ components/security_interstitials/content/utils.cc
+@@ -34,7 +34,7 @@ void LaunchDateAndTimeSettings() {
+ #if defined(OS_ANDROID)
+ JNIEnv* env = base::android::AttachCurrentThread();
+ Java_DateAndTimeSettingsHelper_openDateAndTimeSettings(env);
+-#elif defined(OS_LINUX) || defined(OS_CHROMEOS)
++#elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ struct ClockCommand {
+ const char* const pathname;
+ const char* const argument;
diff --git a/devel/electron17/files/patch-components_services_paint__preview__compositor_paint__preview__compositor__collection__impl.cc b/devel/electron17/files/patch-components_services_paint__preview__compositor_paint__preview__compositor__collection__impl.cc
new file mode 100644
index 000000000000..4bb61a2c01ee
--- /dev/null
+++ b/devel/electron17/files/patch-components_services_paint__preview__compositor_paint__preview__compositor__collection__impl.cc
@@ -0,0 +1,29 @@
+--- components/services/paint_preview_compositor/paint_preview_compositor_collection_impl.cc.orig 2022-05-11 07:16:50 UTC
++++ components/services/paint_preview_compositor/paint_preview_compositor_collection_impl.cc
+@@ -19,7 +19,7 @@
+
+ #if defined(OS_WIN)
+ #include "content/public/child/dwrite_font_proxy_init_win.h"
+-#elif defined(OS_LINUX) || defined(OS_CHROMEOS)
++#elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ #include "components/services/font/public/cpp/font_loader.h"
+ #endif
+
+@@ -64,7 +64,7 @@ PaintPreviewCompositorCollectionImpl::PaintPreviewComp
+ // Initialize font access for Skia.
+ #if defined(OS_WIN)
+ content::InitializeDWriteFontProxy();
+-#elif defined(OS_LINUX) || defined(OS_CHROMEOS)
++#elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ mojo::PendingRemote<font_service::mojom::FontService> font_service;
+ content::UtilityThread::Get()->BindHostReceiver(
+ font_service.InitWithNewPipeAndPassReceiver());
+@@ -87,7 +87,7 @@ PaintPreviewCompositorCollectionImpl::PaintPreviewComp
+ base::BindOnce([] { SkFontMgr::RefDefault(); }));
+
+ // Sanity check that fonts are working.
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // No WebSandbox is provided on Linux so the local fonts aren't accessible.
+ // This is fine since since the subsetted fonts are provided in the SkPicture.
+ // However, we still need to check that the SkFontMgr starts as it is used by
diff --git a/devel/electron17/files/patch-components_services_paint__preview__compositor_paint__preview__compositor__collection__impl.h b/devel/electron17/files/patch-components_services_paint__preview__compositor_paint__preview__compositor__collection__impl.h
new file mode 100644
index 000000000000..9c247283b996
--- /dev/null
+++ b/devel/electron17/files/patch-components_services_paint__preview__compositor_paint__preview__compositor__collection__impl.h
@@ -0,0 +1,20 @@
+--- components/services/paint_preview_compositor/paint_preview_compositor_collection_impl.h.orig 2021-09-14 01:51:55 UTC
++++ components/services/paint_preview_compositor/paint_preview_compositor_collection_impl.h
+@@ -21,7 +21,7 @@
+ #include "mojo/public/cpp/bindings/pending_receiver.h"
+ #include "mojo/public/cpp/bindings/receiver.h"
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ #include "components/services/font/public/cpp/font_loader.h"
+ #include "third_party/skia/include/core/SkRefCnt.h"
+ #endif
+@@ -73,7 +73,7 @@ class PaintPreviewCompositorCollectionImpl
+ std::unique_ptr<PaintPreviewCompositorImpl>>
+ compositors_;
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ sk_sp<font_service::FontLoader> font_loader_;
+ #endif
+
diff --git a/devel/electron17/files/patch-components_startup__metric__utils_browser_startup__metric__utils.cc b/devel/electron17/files/patch-components_startup__metric__utils_browser_startup__metric__utils.cc
new file mode 100644
index 000000000000..f43ba312f94b
--- /dev/null
+++ b/devel/electron17/files/patch-components_startup__metric__utils_browser_startup__metric__utils.cc
@@ -0,0 +1,20 @@
+--- components/startup_metric_utils/browser/startup_metric_utils.cc.orig 2022-05-11 07:16:50 UTC
++++ components/startup_metric_utils/browser/startup_metric_utils.cc
+@@ -347,7 +347,7 @@ base::TimeTicks StartupTimeToTimeTicks(base::Time time
+
+ // Enabling this logic on OS X causes a significant performance regression.
+ // https://crbug.com/601270
+-#if !defined(OS_APPLE)
++#if !defined(OS_APPLE) && !defined(OS_BSD)
+ static bool statics_initialized = false;
+
+ base::ThreadPriority previous_priority = base::ThreadPriority::NORMAL;
+@@ -361,7 +361,7 @@ base::TimeTicks StartupTimeToTimeTicks(base::Time time
+ static const base::Time time_base = base::Time::Now();
+ static const base::TimeTicks trace_ticks_base = base::TimeTicks::Now();
+
+-#if !defined(OS_APPLE)
++#if !defined(OS_APPLE) && !defined(OS_BSD)
+ if (!statics_initialized) {
+ base::PlatformThread::SetCurrentThreadPriority(previous_priority);
+ }
diff --git a/devel/electron17/files/patch-components_storage__monitor_removable__device__constants.cc b/devel/electron17/files/patch-components_storage__monitor_removable__device__constants.cc
new file mode 100644
index 000000000000..31bce950df1b
--- /dev/null
+++ b/devel/electron17/files/patch-components_storage__monitor_removable__device__constants.cc
@@ -0,0 +1,11 @@
+--- components/storage_monitor/removable_device_constants.cc.orig 2021-01-07 00:36:31 UTC
++++ components/storage_monitor/removable_device_constants.cc
+@@ -10,7 +10,7 @@ namespace storage_monitor {
+ const char kFSUniqueIdPrefix[] = "UUID:";
+ const char kVendorModelSerialPrefix[] = "VendorModelSerial:";
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ const char kVendorModelVolumeStoragePrefix[] = "VendorModelVolumeStorage:";
+ #endif
+
diff --git a/devel/electron17/files/patch-components_storage__monitor_removable__device__constants.h b/devel/electron17/files/patch-components_storage__monitor_removable__device__constants.h
new file mode 100644
index 000000000000..1f8e5bdfd1dd
--- /dev/null
+++ b/devel/electron17/files/patch-components_storage__monitor_removable__device__constants.h
@@ -0,0 +1,11 @@
+--- components/storage_monitor/removable_device_constants.h.orig 2021-09-14 01:51:55 UTC
++++ components/storage_monitor/removable_device_constants.h
+@@ -14,7 +14,7 @@ namespace storage_monitor {
+ extern const char kFSUniqueIdPrefix[];
+ extern const char kVendorModelSerialPrefix[];
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ extern const char kVendorModelVolumeStoragePrefix[];
+ #endif
+
diff --git a/devel/electron17/files/patch-components_sync__device__info_local__device__info__util.cc b/devel/electron17/files/patch-components_sync__device__info_local__device__info__util.cc
new file mode 100644
index 000000000000..cae60095893b
--- /dev/null
+++ b/devel/electron17/files/patch-components_sync__device__info_local__device__info__util.cc
@@ -0,0 +1,11 @@
+--- components/sync_device_info/local_device_info_util.cc.orig 2021-07-15 19:13:38 UTC
++++ components/sync_device_info/local_device_info_util.cc
+@@ -75,7 +75,7 @@ std::string GetPersonalizableDeviceNameInternal();
+ sync_pb::SyncEnums::DeviceType GetLocalDeviceType() {
+ #if BUILDFLAG(IS_CHROMEOS_ASH)
+ return sync_pb::SyncEnums_DeviceType_TYPE_CROS;
+-#elif defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#elif defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ return sync_pb::SyncEnums_DeviceType_TYPE_LINUX;
+ #elif defined(OS_ANDROID) || defined(OS_IOS)
+ return ui::GetDeviceFormFactor() == ui::DEVICE_FORM_FACTOR_TABLET
diff --git a/devel/electron17/files/patch-components_sync__device__info_local__device__info__util__linux.cc b/devel/electron17/files/patch-components_sync__device__info_local__device__info__util__linux.cc
new file mode 100644
index 000000000000..4defcff3e9ff
--- /dev/null
+++ b/devel/electron17/files/patch-components_sync__device__info_local__device__info__util__linux.cc
@@ -0,0 +1,14 @@
+--- components/sync_device_info/local_device_info_util_linux.cc.orig 2022-05-11 07:16:51 UTC
++++ components/sync_device_info/local_device_info_util_linux.cc
+@@ -14,6 +14,11 @@
+ #include "ash/constants/devicetype.h"
+ #endif
+
++#if defined(__FreeBSD__)
++#include <sys/param.h>
++#define HOST_NAME_MAX MAXHOSTNAMELEN
++#endif
++
+ namespace syncer {
+
+ #if BUILDFLAG(IS_CHROMEOS_ASH)
diff --git a/devel/electron17/files/patch-components_translate_core_browser_translate__prefs.cc b/devel/electron17/files/patch-components_translate_core_browser_translate__prefs.cc
new file mode 100644
index 000000000000..e2c8d3c5b708
--- /dev/null
+++ b/devel/electron17/files/patch-components_translate_core_browser_translate__prefs.cc
@@ -0,0 +1,11 @@
+--- components/translate/core/browser/translate_prefs.cc.orig 2022-05-11 07:16:51 UTC
++++ components/translate/core/browser/translate_prefs.cc
+@@ -905,7 +905,7 @@ bool TranslatePrefs::CanTranslateLanguage(
+ bool TranslatePrefs::IsDetailedLanguageSettingsEnabled() {
+ #if defined(OS_ANDROID)
+ return base::FeatureList::IsEnabled(language::kDetailedLanguageSettings);
+-#elif defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX)
++#elif defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || defined(OS_BSD)
+ return base::FeatureList::IsEnabled(
+ language::kDesktopDetailedLanguageSettings);
+ #else
diff --git a/devel/electron17/files/patch-components_translate_core_common_translate__util.cc b/devel/electron17/files/patch-components_translate_core_common_translate__util.cc
new file mode 100644
index 000000000000..f4703c8c972f
--- /dev/null
+++ b/devel/electron17/files/patch-components_translate_core_common_translate__util.cc
@@ -0,0 +1,11 @@
+--- components/translate/core/common/translate_util.cc.orig 2022-05-11 07:16:51 UTC
++++ components/translate/core/common/translate_util.cc
+@@ -29,7 +29,7 @@ const base::Feature kTranslateSubFrames{"TranslateSubF
+ const base::Feature kTFLiteLanguageDetectionEnabled{
+ "TFLiteLanguageDetectionEnabled",
+ #if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_WIN) || \
+- defined(OS_MAC)
++ defined(OS_MAC) || defined(OS_BSD)
+ base::FEATURE_ENABLED_BY_DEFAULT
+ #else // !defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(OS_WIN) &&
+ // !defined(OS_MAC)
diff --git a/devel/electron17/files/patch-components_update__client_update__query__params.cc b/devel/electron17/files/patch-components_update__client_update__query__params.cc
new file mode 100644
index 000000000000..d5c8427cfcc8
--- /dev/null
+++ b/devel/electron17/files/patch-components_update__client_update__query__params.cc
@@ -0,0 +1,11 @@
+--- components/update_client/update_query_params.cc.orig 2021-04-14 01:08:47 UTC
++++ components/update_client/update_query_params.cc
+@@ -40,6 +40,8 @@ const char kOs[] =
+ "fuchsia";
+ #elif defined(OS_OPENBSD)
+ "openbsd";
++#elif defined(OS_FREEBSD)
++ "freebsd";
+ #else
+ #error "unknown os"
+ #endif
diff --git a/devel/electron17/files/patch-components_url__formatter_spoof__checks_idn__spoof__checker.cc b/devel/electron17/files/patch-components_url__formatter_spoof__checks_idn__spoof__checker.cc
new file mode 100644
index 000000000000..6da1c2351413
--- /dev/null
+++ b/devel/electron17/files/patch-components_url__formatter_spoof__checks_idn__spoof__checker.cc
@@ -0,0 +1,11 @@
+--- components/url_formatter/spoof_checks/idn_spoof_checker.cc.orig 2022-05-11 07:16:51 UTC
++++ components/url_formatter/spoof_checks/idn_spoof_checker.cc
+@@ -285,7 +285,7 @@ IDNSpoofChecker::IDNSpoofChecker() {
+ // The ideal fix would be to change the omnibox font used for Thai. In
+ // that case, the Linux-only list should be revisited and potentially
+ // removed.
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ "[ทนบพรหเแ๐ดลปฟม]",
+ #else
+ "[บพเแ๐]",
diff --git a/devel/electron17/files/patch-components_viz_common_features.cc b/devel/electron17/files/patch-components_viz_common_features.cc
new file mode 100644
index 000000000000..7bddae192d3e
--- /dev/null
+++ b/devel/electron17/files/patch-components_viz_common_features.cc
@@ -0,0 +1,11 @@
+--- components/viz/common/features.cc.orig 2022-05-11 07:16:51 UTC
++++ components/viz/common/features.cc
+@@ -58,7 +58,7 @@ const base::Feature kSimpleFrameRateThrottling{
+ const base::Feature kUseSkiaRenderer {
+ "UseSkiaRenderer",
+ #if defined(OS_WIN) || defined(OS_ANDROID) || BUILDFLAG(IS_CHROMEOS_LACROS) || \
+- defined(OS_LINUX) || defined(OS_FUCHSIA) || defined(OS_MAC)
++ defined(OS_LINUX) || defined(OS_FUCHSIA) || defined(OS_MAC) || defined(OS_BSD)
+ base::FEATURE_ENABLED_BY_DEFAULT
+ #else
+ base::FEATURE_DISABLED_BY_DEFAULT
diff --git a/devel/electron17/files/patch-components_viz_common_gpu_dawn__context__provider.cc b/devel/electron17/files/patch-components_viz_common_gpu_dawn__context__provider.cc
new file mode 100644
index 000000000000..8b568c4c2294
--- /dev/null
+++ b/devel/electron17/files/patch-components_viz_common_gpu_dawn__context__provider.cc
@@ -0,0 +1,11 @@
+--- components/viz/common/gpu/dawn_context_provider.cc.orig 2021-01-07 00:36:32 UTC
++++ components/viz/common/gpu/dawn_context_provider.cc
+@@ -20,7 +20,7 @@ namespace {
+ dawn_native::BackendType GetDefaultBackendType() {
+ #if defined(OS_WIN)
+ return dawn_native::BackendType::D3D12;
+-#elif defined(OS_LINUX) || defined(OS_CHROMEOS)
++#elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ return dawn_native::BackendType::Vulkan;
+ #else
+ NOTREACHED();
diff --git a/devel/electron17/files/patch-components_viz_host_host__display__client.cc b/devel/electron17/files/patch-components_viz_host_host__display__client.cc
new file mode 100644
index 000000000000..6cdc93da52d6
--- /dev/null
+++ b/devel/electron17/files/patch-components_viz_host_host__display__client.cc
@@ -0,0 +1,11 @@
+--- components/viz/host/host_display_client.cc.orig 2021-04-22 07:51:51 UTC
++++ components/viz/host/host_display_client.cc
+@@ -64,7 +64,7 @@ void HostDisplayClient::CreateLayeredWindowUpdater(
+
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ void HostDisplayClient::DidCompleteSwapWithNewSize(const gfx::Size& size) {
+ NOTIMPLEMENTED();
+ }
diff --git a/devel/electron17/files/patch-components_viz_host_host__display__client.h b/devel/electron17/files/patch-components_viz_host_host__display__client.h
new file mode 100644
index 000000000000..b53a7e383adc
--- /dev/null
+++ b/devel/electron17/files/patch-components_viz_host_host__display__client.h
@@ -0,0 +1,11 @@
+--- components/viz/host/host_display_client.h.orig 2022-05-13 07:19:54 UTC
++++ components/viz/host/host_display_client.h
+@@ -47,7 +47,7 @@ class VIZ_HOST_EXPORT HostDisplayClient : public mojom
+
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ void DidCompleteSwapWithNewSize(const gfx::Size& size) override;
+ #endif
+
diff --git a/devel/electron17/files/patch-components_viz_host_renderer__settings__creation.cc b/devel/electron17/files/patch-components_viz_host_renderer__settings__creation.cc
new file mode 100644
index 000000000000..6b0a3c09f435
--- /dev/null
+++ b/devel/electron17/files/patch-components_viz_host_renderer__settings__creation.cc
@@ -0,0 +1,11 @@
+--- components/viz/host/renderer_settings_creation.cc.orig 2021-12-18 06:49:11 UTC
++++ components/viz/host/renderer_settings_creation.cc
+@@ -59,7 +59,7 @@ RendererSettings CreateRendererSettings() {
+ renderer_settings.partial_swap_enabled =
+ !command_line->HasSwitch(switches::kUIDisablePartialSwap);
+
+-#if defined(OS_APPLE) || defined(OS_LINUX)
++#if defined(OS_APPLE) || defined(OS_LINUX) || defined(OS_BSD)
+ // Simple frame rate throttling only works on macOS and Linux
+ renderer_settings.apply_simple_frame_rate_throttling =
+ features::IsSimpleFrameRateThrottlingEnabled();
diff --git a/devel/electron17/files/patch-components_viz_service_display__embedder_skia__output__surface__impl.cc b/devel/electron17/files/patch-components_viz_service_display__embedder_skia__output__surface__impl.cc
new file mode 100644
index 000000000000..9a5ec020e17b
--- /dev/null
+++ b/devel/electron17/files/patch-components_viz_service_display__embedder_skia__output__surface__impl.cc
@@ -0,0 +1,11 @@
+--- components/viz/service/display_embedder/skia_output_surface_impl.cc.orig 2022-05-11 07:16:51 UTC
++++ components/viz/service/display_embedder/skia_output_surface_impl.cc
+@@ -1160,7 +1160,7 @@ GrBackendFormat SkiaOutputSurfaceImpl::GetGrBackendFor
+ ->GetDeviceQueue()
+ ->GetVulkanPhysicalDevice(),
+ VK_IMAGE_TILING_OPTIMAL, ycbcr_info);
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Textures that were allocated _on linux_ with ycbcr info came from
+ // VaapiVideoDecoder, which exports using DRM format modifiers.
+ return GrBackendFormat::MakeVk(gr_ycbcr_info,
diff --git a/devel/electron17/files/patch-components_viz_service_display__embedder_software__output__surface.cc b/devel/electron17/files/patch-components_viz_service_display__embedder_software__output__surface.cc
new file mode 100644
index 000000000000..26569baa8c32
--- /dev/null
+++ b/devel/electron17/files/patch-components_viz_service_display__embedder_software__output__surface.cc
@@ -0,0 +1,20 @@
+--- components/viz/service/display_embedder/software_output_surface.cc.orig 2022-05-11 07:16:51 UTC
++++ components/viz/service/display_embedder/software_output_surface.cc
+@@ -118,7 +118,7 @@ void SoftwareOutputSurface::SwapBuffersCallback(base::
+ now.SnappedToNextTick(refresh_timebase_, refresh_interval_) - now;
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ if (needs_swap_size_notifications_)
+ client_->DidSwapWithSize(pixel_size);
+ #endif
+@@ -149,7 +149,7 @@ gfx::OverlayTransform SoftwareOutputSurface::GetDispla
+
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ void SoftwareOutputSurface::SetNeedsSwapSizeNotifications(
+ bool needs_swap_size_notifications) {
+ needs_swap_size_notifications_ = needs_swap_size_notifications;
diff --git a/devel/electron17/files/patch-components_viz_service_display__embedder_software__output__surface.h b/devel/electron17/files/patch-components_viz_service_display__embedder_software__output__surface.h
new file mode 100644
index 000000000000..8781dd641a4e
--- /dev/null
+++ b/devel/electron17/files/patch-components_viz_service_display__embedder_software__output__surface.h
@@ -0,0 +1,20 @@
+--- components/viz/service/display_embedder/software_output_surface.h.orig 2022-05-11 07:16:51 UTC
++++ components/viz/service/display_embedder/software_output_surface.h
+@@ -56,7 +56,7 @@ class VIZ_SERVICE_EXPORT SoftwareOutputSurface : publi
+ gfx::OverlayTransform GetDisplayTransform() override;
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ void SetNeedsSwapSizeNotifications(
+ bool needs_swap_size_notifications) override;
+ #endif
+@@ -78,7 +78,7 @@ class VIZ_SERVICE_EXPORT SoftwareOutputSurface : publi
+
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ bool needs_swap_size_notifications_ = false;
+ #endif
+
diff --git a/devel/electron17/files/patch-components_viz_service_frame__sinks_root__compositor__frame__sink__impl.cc b/devel/electron17/files/patch-components_viz_service_frame__sinks_root__compositor__frame__sink__impl.cc
new file mode 100644
index 000000000000..ddbf7c47dc31
--- /dev/null
+++ b/devel/electron17/files/patch-components_viz_service_frame__sinks_root__compositor__frame__sink__impl.cc
@@ -0,0 +1,20 @@
+--- components/viz/service/frame_sinks/root_compositor_frame_sink_impl.cc.orig 2022-05-13 07:19:54 UTC
++++ components/viz/service/frame_sinks/root_compositor_frame_sink_impl.cc
+@@ -63,7 +63,7 @@ RootCompositorFrameSinkImpl::Create(
+
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ // For X11, we need notify client about swap completion after resizing, so the
+ // client can use it for synchronize with X11 WM.
+ output_surface->SetNeedsSwapSizeNotifications(true);
+@@ -529,7 +529,7 @@ void RootCompositorFrameSinkImpl::DisplayDidCompleteSw
+ display_client_->DidCompleteSwapWithSize(pixel_size);
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#elif defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#elif defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ if (display_client_ && pixel_size != last_swap_pixel_size_) {
+ last_swap_pixel_size_ = pixel_size;
+ display_client_->DidCompleteSwapWithNewSize(last_swap_pixel_size_);
diff --git a/devel/electron17/files/patch-components_viz_service_frame__sinks_root__compositor__frame__sink__impl.h b/devel/electron17/files/patch-components_viz_service_frame__sinks_root__compositor__frame__sink__impl.h
new file mode 100644
index 000000000000..ca7c31accb65
--- /dev/null
+++ b/devel/electron17/files/patch-components_viz_service_frame__sinks_root__compositor__frame__sink__impl.h
@@ -0,0 +1,11 @@
+--- components/viz/service/frame_sinks/root_compositor_frame_sink_impl.h.orig 2022-05-13 07:19:54 UTC
++++ components/viz/service/frame_sinks/root_compositor_frame_sink_impl.h
+@@ -189,7 +189,7 @@ class VIZ_SERVICE_EXPORT RootCompositorFrameSinkImpl
+
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ gfx::Size last_swap_pixel_size_;
+ #endif
+
diff --git a/devel/electron17/files/patch-components_viz_test_fake__display__client.cc b/devel/electron17/files/patch-components_viz_test_fake__display__client.cc
new file mode 100644
index 000000000000..4ed5d6599b69
--- /dev/null
+++ b/devel/electron17/files/patch-components_viz_test_fake__display__client.cc
@@ -0,0 +1,11 @@
+--- components/viz/test/fake_display_client.cc.orig 2022-05-11 07:16:51 UTC
++++ components/viz/test/fake_display_client.cc
+@@ -23,7 +23,7 @@ void FakeDisplayClient::CreateLayeredWindowUpdater(
+ mojo::PendingReceiver<mojom::LayeredWindowUpdater> receiver) {}
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ void FakeDisplayClient::DidCompleteSwapWithNewSize(const gfx::Size& size) {}
+ #endif
+
diff --git a/devel/electron17/files/patch-components_viz_test_mock__display__client.h b/devel/electron17/files/patch-components_viz_test_mock__display__client.h
new file mode 100644
index 000000000000..c292de69e86d
--- /dev/null
+++ b/devel/electron17/files/patch-components_viz_test_mock__display__client.h
@@ -0,0 +1,11 @@
+--- components/viz/test/mock_display_client.h.orig 2021-11-19 04:25:15 UTC
++++ components/viz/test/mock_display_client.h
+@@ -44,7 +44,7 @@ class MockDisplayClient : public mojom::DisplayClient
+ #endif
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ MOCK_METHOD1(DidCompleteSwapWithNewSize, void(const gfx::Size&));
+ #endif
+
diff --git a/devel/electron17/files/patch-content_app_content__main.cc b/devel/electron17/files/patch-content_app_content__main.cc
new file mode 100644
index 000000000000..e4fc16873e1e
--- /dev/null
+++ b/devel/electron17/files/patch-content_app_content__main.cc
@@ -0,0 +1,11 @@
+--- content/app/content_main.cc.orig 2022-05-13 07:19:54 UTC
++++ content/app/content_main.cc
+@@ -251,7 +251,7 @@ RunContentProcess(ContentMainParams params,
+ #endif
+ base::EnableTerminationOnOutOfMemory();
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // The various desktop environments set this environment variable that
+ // allows the dbus client library to connect directly to the bus. When this
+ // variable is not set (test environments like xvfb-run), the dbus client
diff --git a/devel/electron17/files/patch-content_app_content__main__runner__impl.cc b/devel/electron17/files/patch-content_app_content__main__runner__impl.cc
new file mode 100644
index 000000000000..86fdd7c35b48
--- /dev/null
+++ b/devel/electron17/files/patch-content_app_content__main__runner__impl.cc
@@ -0,0 +1,128 @@
+--- content/app/content_main_runner_impl.cc.orig 2022-05-13 07:19:54 UTC
++++ content/app/content_main_runner_impl.cc
+@@ -131,13 +131,13 @@
+ #include "base/posix/global_descriptors.h"
+ #include "content/public/common/content_descriptors.h"
+
+-#if !defined(OS_MAC)
++#if !defined(OS_MAC) && !defined(OS_BSD)
+ #include "content/public/common/zygote/zygote_fork_delegate_linux.h"
+ #endif
+
+ #endif // OS_POSIX || OS_FUCHSIA
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ #include "base/native_library.h"
+ #include "base/rand_util.h"
+ #include "content/public/common/zygote/sandbox_support_linux.h"
+@@ -171,6 +171,12 @@
+ #include "media/base/media_switches.h"
+ #endif
+
++#if defined(OS_BSD)
++#include "base/system/sys_info.h"
++#include "content/public/common/sandbox_init.h"
++#include "sandbox/policy/linux/sandbox_linux.h"
++#endif
++
+ #if defined(OS_ANDROID)
+ #include "base/system/sys_info.h"
+ #include "components/power_scheduler/power_scheduler.h"
+@@ -341,7 +347,7 @@ void InitializeZygoteSandboxForBrowserProcess(
+ }
+ #endif // BUILDFLAG(USE_ZYGOTE_HANDLE)
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+
+ #if BUILDFLAG(ENABLE_PLUGINS)
+ // Loads the (native) libraries but does not initialize them (i.e., does not
+@@ -377,11 +383,14 @@ void PreloadLibraryCdms() {
+ }
+ #endif // BUILDFLAG(ENABLE_LIBRARY_CDMS)
+
+-#if BUILDFLAG(USE_ZYGOTE_HANDLE)
++#if BUILDFLAG(USE_ZYGOTE_HANDLE) || defined(OS_BSD)
+ void PreSandboxInit() {
++ // arc4random
++#if !defined(OS_BSD)
+ // Pre-acquire resources needed by BoringSSL. See
+ // https://boringssl.googlesource.com/boringssl/+/HEAD/SANDBOXING.md
+ CRYPTO_pre_sandbox_init();
++#endif
+
+ #if BUILDFLAG(ENABLE_PLUGINS)
+ // Ensure access to the Pepper plugins before the sandbox is turned on.
+@@ -393,6 +402,11 @@ void PreSandboxInit() {
+ #endif
+ InitializeWebRtcModule();
+
++#if defined(OS_BSD)
++ // "cache" the amount of physical memory before pledge(2)
++ base::SysInfo::AmountOfPhysicalMemoryMB();
++#endif
++
+ // Set the android SkFontMgr for blink. We need to ensure this is done
+ // before the sandbox is initialized to allow the font manager to access
+ // font configuration files on disk.
+@@ -562,7 +576,7 @@ int NO_STACK_PROTECTOR RunZygote(ContentMainDelegate*
+ delegate->ZygoteStarting(&zygote_fork_delegates);
+ media::InitializeMediaLibrary();
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ PreSandboxInit();
+ #endif
+
+@@ -738,10 +752,10 @@ int ContentMainRunnerImpl::Initialize(ContentMainParam
+ kFieldTrialDescriptor + base::GlobalDescriptors::kBaseDescriptor);
+ #endif // !OS_ANDROID
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_OPENBSD)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS)
+ g_fds->Set(kCrashDumpSignal,
+ kCrashDumpSignal + base::GlobalDescriptors::kBaseDescriptor);
+-#endif // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_OPENBSD)
++#endif // defined(OS_LINUX) || defined(OS_CHROMEOS)
+
+ #endif // !OS_WIN
+
+@@ -930,6 +944,16 @@ int ContentMainRunnerImpl::Initialize(ContentMainParam
+ }
+ #endif
+
++#if defined(OS_BSD)
++ if (process_type.empty()) {
++ sandbox::policy::SandboxLinux::Options sandbox_options;
++ sandbox::policy::SandboxLinux::GetInstance()->InitializeSandbox(
++ sandbox::policy::SandboxTypeFromCommandLine(
++ *base::CommandLine::ForCurrentProcess()),
++ sandbox::policy::SandboxLinux::PreSandboxHook(), sandbox_options);
++ }
++#endif
++
+ delegate_->SandboxInitialized(process_type);
+
+ #if BUILDFLAG(USE_ZYGOTE_HANDLE)
+@@ -985,7 +1009,7 @@ int NO_STACK_PROTECTOR ContentMainRunnerImpl::Run() {
+ mojo::core::InitFeatures();
+ }
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // If dynamic Mojo Core is being used, ensure that it's loaded very early in
+ // the child/zygote process, before any sandbox is initialized. The library
+ // is not fully initialized with IPC support until a ChildProcess is later
+@@ -1018,6 +1042,11 @@ int NO_STACK_PROTECTOR ContentMainRunnerImpl::Run() {
+ content_main_params_.reset();
+
+ RegisterMainThreadFactories();
++
++#if defined(OS_BSD)
++ if (!process_type.empty())
++ PreSandboxInit();
++#endif
+
+ if (process_type.empty())
+ return RunBrowser(std::move(main_params), start_minimal_browser);
diff --git a/devel/electron17/files/patch-content_browser_BUILD.gn b/devel/electron17/files/patch-content_browser_BUILD.gn
new file mode 100644
index 000000000000..d4aa35fd61a5
--- /dev/null
+++ b/devel/electron17/files/patch-content_browser_BUILD.gn
@@ -0,0 +1,16 @@
+--- content/browser/BUILD.gn.orig 2022-05-11 07:16:51 UTC
++++ content/browser/BUILD.gn
+@@ -2317,6 +2317,13 @@ source_set("browser") {
+ ]
+ }
+
++ if (is_bsd) {
++ sources -= [
++ "sandbox_ipc_linux.cc",
++ "sandbox_ipc_linux.h",
++ ]
++ }
++
+ if (is_chromeos) {
+ sources += [
+ "handwriting/handwriting_recognition_service_impl_cros.cc",
diff --git a/devel/electron17/files/patch-content_browser_browser__child__process__host__impl.cc b/devel/electron17/files/patch-content_browser_browser__child__process__host__impl.cc
new file mode 100644
index 000000000000..2a3a2f2582d3
--- /dev/null
+++ b/devel/electron17/files/patch-content_browser_browser__child__process__host__impl.cc
@@ -0,0 +1,10 @@
+--- content/browser/browser_child_process_host_impl.cc.orig 2022-05-11 07:16:51 UTC
++++ content/browser/browser_child_process_host_impl.cc
+@@ -305,6 +305,7 @@ void BrowserChildProcessHostImpl::LaunchWithoutExtraCo
+ switches::kDisableBestEffortTasks,
+ switches::kDisableLogging,
+ switches::kEnableLogging,
++ switches::kDisableUnveil,
+ switches::kIPCConnectionTimeout,
+ switches::kLogBestEffortTasks,
+ switches::kLogFile,
diff --git a/devel/electron17/files/patch-content_browser_browser__main__loop.cc b/devel/electron17/files/patch-content_browser_browser__main__loop.cc
new file mode 100644
index 000000000000..71b6f542930e
--- /dev/null
+++ b/devel/electron17/files/patch-content_browser_browser__main__loop.cc
@@ -0,0 +1,46 @@
+--- content/browser/browser_main_loop.cc.orig 2022-05-11 07:16:51 UTC
++++ content/browser/browser_main_loop.cc
+@@ -238,6 +238,12 @@
+ #include "mojo/public/cpp/bindings/lib/test_random_mojo_delays.h"
+ #endif
+
++#if defined(OS_BSD)
++#include "content/browser/sandbox_host_linux.h"
++#include "content/public/common/zygote/sandbox_support_linux.h"
++#include "sandbox/policy/sandbox.h"
++#endif
++
+ // One of the linux specific headers defines this as a macro.
+ #ifdef DestroyAll
+ #undef DestroyAll
+@@ -545,6 +551,12 @@ int BrowserMainLoop::EarlyInitialization() {
+ // by now since a thread to start the ServiceManager has been created
+ // before the browser main loop starts.
+ DCHECK(SandboxHostLinux::GetInstance()->IsInitialized());
++#elif defined(OS_BSD)
++ base::FileHandleMappingVector additional_remapped_fds;
++ base::LaunchOptions options;
++ SandboxHostLinux::GetInstance()->Init();
++ const int sfd = SandboxHostLinux::GetInstance()->GetChildSocket();
++ options.fds_to_remap.push_back(std::make_pair(sfd, GetSandboxFD()));
+ #endif
+
+ // GLib's spawning of new processes is buggy, so it's important that at this
+@@ -572,7 +584,7 @@ int BrowserMainLoop::EarlyInitialization() {
+
+ // Up the priority of the UI thread unless it was already high (since Mac
+ // and recent versions of Android (O+) do this automatically).
+-#if !defined(OS_MAC)
++#if !defined(OS_MAC) && !defined(OS_BSD)
+ if (base::FeatureList::IsEnabled(
+ features::kBrowserUseDisplayThreadPriority) &&
+ base::PlatformThread::GetCurrentThreadPriority() <
+@@ -583,7 +595,7 @@ int BrowserMainLoop::EarlyInitialization() {
+ #endif // !defined(OS_MAC)
+
+ #if defined(OS_MAC) || defined(OS_LINUX) || defined(OS_CHROMEOS) || \
+- defined(OS_ANDROID)
++ defined(OS_ANDROID) || defined(OS_BSD)
+ // We use quite a few file descriptors for our IPC as well as disk the disk
+ // cache,and the default limit on the Mac is low (256), so bump it up.
+
diff --git a/devel/electron17/files/patch-content_browser_child__process__launcher__helper__linux.cc b/devel/electron17/files/patch-content_browser_child__process__launcher__helper__linux.cc
new file mode 100644
index 000000000000..e1394e0843e2
--- /dev/null
+++ b/devel/electron17/files/patch-content_browser_child__process__launcher__helper__linux.cc
@@ -0,0 +1,92 @@
+--- content/browser/child_process_launcher_helper_linux.cc.orig 2022-05-13 07:19:54 UTC
++++ content/browser/child_process_launcher_helper_linux.cc
+@@ -19,7 +19,9 @@
+ #include "content/public/common/result_codes.h"
+ #include "content/public/common/sandboxed_process_launcher_delegate.h"
+ #include "content/public/common/zygote/sandbox_support_linux.h"
++#if !defined(OS_BSD)
+ #include "content/public/common/zygote/zygote_handle.h"
++#endif
+ #include "sandbox/policy/linux/sandbox_linux.h"
+
+ namespace content {
+@@ -50,6 +52,7 @@ bool ChildProcessLauncherHelper::BeforeLaunchOnLaunche
+ options->fds_to_remap = files_to_register.GetMappingWithIDAdjustment(
+ base::GlobalDescriptors::kBaseDescriptor);
+
++#if !defined(OS_BSD)
+ if (GetProcessType() == switches::kRendererProcess) {
+ const int sandbox_fd = SandboxHostLinux::GetInstance()->GetChildSocket();
+ options->fds_to_remap.push_back(std::make_pair(sandbox_fd, GetSandboxFD()));
+@@ -66,6 +69,7 @@ bool ChildProcessLauncherHelper::BeforeLaunchOnLaunche
+ options->allow_new_privs = true;
+ }
+ }
++#endif
+
+ options->environment = delegate_->GetEnvironment();
+
+@@ -80,6 +84,7 @@ ChildProcessLauncherHelper::LaunchProcessOnLauncherThr
+ int* launch_result) {
+ *is_synchronous_launch = true;
+
++#if !defined(OS_BSD)
+ ZygoteHandle zygote_handle =
+ base::CommandLine::ForCurrentProcess()->HasSwitch(switches::kNoZygote)
+ ? nullptr
+@@ -93,7 +98,6 @@ ChildProcessLauncherHelper::LaunchProcessOnLauncherThr
+ GetProcessType());
+ *launch_result = LAUNCH_RESULT_SUCCESS;
+
+-#if !defined(OS_OPENBSD)
+ if (handle) {
+ // It could be a renderer process or an utility process.
+ int oom_score = content::kMiscOomScore;
+@@ -102,13 +106,13 @@ ChildProcessLauncherHelper::LaunchProcessOnLauncherThr
+ oom_score = content::kLowestRendererOomScore;
+ ZygoteHostImpl::GetInstance()->AdjustRendererOOMScore(handle, oom_score);
+ }
+-#endif
+
+ Process process;
+ process.process = base::Process(handle);
+ process.zygote = zygote_handle;
+ return process;
+ }
++#endif
+
+ Process process;
+ process.process = base::LaunchProcess(*command_line(), options);
+@@ -126,10 +130,14 @@ ChildProcessTerminationInfo ChildProcessLauncherHelper
+ const ChildProcessLauncherHelper::Process& process,
+ bool known_dead) {
+ ChildProcessTerminationInfo info;
++#if !defined(OS_BSD)
+ if (process.zygote) {
+ info.status = process.zygote->GetTerminationStatus(
+ process.process.Handle(), known_dead, &info.exit_code);
+ } else if (known_dead) {
++#else
++ if (known_dead) {
++#endif
+ info.status = base::GetKnownDeadTerminationStatus(process.process.Handle(),
+ &info.exit_code);
+ } else {
+@@ -153,13 +161,17 @@ void ChildProcessLauncherHelper::ForceNormalProcessTer
+ DCHECK(CurrentlyOnProcessLauncherTaskRunner());
+ process.process.Terminate(RESULT_CODE_NORMAL_EXIT, false);
+ // On POSIX, we must additionally reap the child.
++#if !defined(OS_BSD)
+ if (process.zygote) {
+ // If the renderer was created via a zygote, we have to proxy the reaping
+ // through the zygote process.
+ process.zygote->EnsureProcessTerminated(process.process.Handle());
+ } else {
++#endif
+ base::EnsureProcessTerminated(std::move(process.process));
++#if !defined(OS_BSD)
+ }
++#endif
+ }
+
+ void ChildProcessLauncherHelper::SetProcessPriorityOnLauncherThread(
diff --git a/devel/electron17/files/patch-content_browser_compositor_viz__process__transport__factory.cc b/devel/electron17/files/patch-content_browser_compositor_viz__process__transport__factory.cc
new file mode 100644
index 000000000000..aa1e038de6b7
--- /dev/null
+++ b/devel/electron17/files/patch-content_browser_compositor_viz__process__transport__factory.cc
@@ -0,0 +1,11 @@
+--- content/browser/compositor/viz_process_transport_factory.cc.orig 2022-05-13 07:19:54 UTC
++++ content/browser/compositor/viz_process_transport_factory.cc
+@@ -113,7 +113,7 @@ class HostDisplayClient : public viz::HostDisplayClien
+ // viz::HostDisplayClient:
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ void DidCompleteSwapWithNewSize(const gfx::Size& size) override {
+ compositor_->OnCompleteSwapWithNewSize(size);
+ }
diff --git a/devel/electron17/files/patch-content_browser_compute__pressure_cpu__probe.cc b/devel/electron17/files/patch-content_browser_compute__pressure_cpu__probe.cc
new file mode 100644
index 000000000000..127ebe11f4be
--- /dev/null
+++ b/devel/electron17/files/patch-content_browser_compute__pressure_cpu__probe.cc
@@ -0,0 +1,10 @@
+--- content/browser/compute_pressure/cpu_probe.cc.orig 2022-05-11 07:16:51 UTC
++++ content/browser/compute_pressure/cpu_probe.cc
+@@ -52,6 +52,7 @@ std::unique_ptr<CpuProbe> CpuProbe::Create() {
+ #elif defined(OS_LINUX) || defined(OS_CHROMEOS)
+ return CpuProbeLinux::Create();
+ #else
++ NOTIMPLEMENTED();
+ return std::make_unique<NullCpuProbe>();
+ #endif // defined(OS_ANDROID)
+ }
diff --git a/devel/electron17/files/patch-content_browser_devtools_protocol_system__info__handler.cc b/devel/electron17/files/patch-content_browser_devtools_protocol_system__info__handler.cc
new file mode 100644
index 000000000000..6661747c13d1
--- /dev/null
+++ b/devel/electron17/files/patch-content_browser_devtools_protocol_system__info__handler.cc
@@ -0,0 +1,11 @@
+--- content/browser/devtools/protocol/system_info_handler.cc.orig 2022-05-11 07:16:51 UTC
++++ content/browser/devtools/protocol/system_info_handler.cc
+@@ -50,7 +50,7 @@ std::unique_ptr<SystemInfo::Size> GfxSizeToSystemInfoS
+ // Windows builds need more time -- see Issue 873112 and 1004472.
+ // Mac builds need more time - see Issue angleproject:6182.
+ #if ((defined(OS_LINUX) || defined(OS_CHROMEOS)) && !defined(NDEBUG)) || \
+- defined(OS_WIN) || defined(OS_MAC) || defined(USE_OZONE)
++ defined(OS_WIN) || defined(OS_MAC) || defined(USE_OZONE) || defined(OS_BSD)
+ static constexpr int kGPUInfoWatchdogTimeoutMultiplierOS = 3;
+ #else
+ static constexpr int kGPUInfoWatchdogTimeoutMultiplierOS = 1;
diff --git a/devel/electron17/files/patch-content_browser_download_download__manager__impl.cc b/devel/electron17/files/patch-content_browser_download_download__manager__impl.cc
new file mode 100644
index 000000000000..1ab26397d2c1
--- /dev/null
+++ b/devel/electron17/files/patch-content_browser_download_download__manager__impl.cc
@@ -0,0 +1,29 @@
+--- content/browser/download/download_manager_impl.cc.orig 2022-05-11 07:16:51 UTC
++++ content/browser/download/download_manager_impl.cc
+@@ -89,7 +89,7 @@
+ #include "third_party/blink/public/common/storage_key/storage_key.h"
+ #include "url/origin.h"
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ #include "base/nix/xdg_util.h"
+ #endif
+
+@@ -236,7 +236,7 @@ class DownloadItemFactoryImpl : public download::Downl
+ }
+ };
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ base::FilePath GetTemporaryDownloadDirectory() {
+ std::unique_ptr<base::Environment> env(base::Environment::Create());
+ return base::nix::GetXDGDirectory(env.get(), "XDG_DATA_HOME", ".local/share");
+@@ -592,7 +592,7 @@ bool DownloadManagerImpl::InterceptDownload(
+
+ base::FilePath DownloadManagerImpl::GetDefaultDownloadDirectory() {
+ base::FilePath default_download_directory;
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // TODO(thomasanderson,crbug.com/784010): Remove this when all Linux
+ // distros with versions of GTK lower than 3.14.7 are no longer
+ // supported. This should happen when support for Ubuntu Trusty and
diff --git a/devel/electron17/files/patch-content_browser_font__access_font__enumeration__cache.h b/devel/electron17/files/patch-content_browser_font__access_font__enumeration__cache.h
new file mode 100644
index 000000000000..739fa129f6cb
--- /dev/null
+++ b/devel/electron17/files/patch-content_browser_font__access_font__enumeration__cache.h
@@ -0,0 +1,11 @@
+--- content/browser/font_access/font_enumeration_cache.h.orig 2022-05-11 07:16:51 UTC
++++ content/browser/font_access/font_enumeration_cache.h
+@@ -24,7 +24,7 @@
+ #include "third_party/blink/public/mojom/font_access/font_access.mojom.h"
+
+ #if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) || \
+- defined(OS_MAC) || defined(OS_FUCHSIA)
++ defined(OS_MAC) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ #define PLATFORM_HAS_LOCAL_FONT_ENUMERATION_IMPL 1
+ #endif
+
diff --git a/devel/electron17/files/patch-content_browser_gpu_compositor__util.cc b/devel/electron17/files/patch-content_browser_gpu_compositor__util.cc
new file mode 100644
index 000000000000..594f1cceac0e
--- /dev/null
+++ b/devel/electron17/files/patch-content_browser_gpu_compositor__util.cc
@@ -0,0 +1,20 @@
+--- content/browser/gpu/compositor_util.cc.orig 2022-05-11 07:16:51 UTC
++++ content/browser/gpu/compositor_util.cc
+@@ -145,7 +145,7 @@ const GpuFeatureData GetGpuFeatureData(
+ {"video_decode",
+ SafeGetFeatureStatus(gpu_feature_info,
+ gpu::GPU_FEATURE_TYPE_ACCELERATED_VIDEO_DECODE),
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ !base::FeatureList::IsEnabled(media::kVaapiVideoDecodeLinux),
+ #else
+ command_line.HasSwitch(switches::kDisableAcceleratedVideoDecode),
+@@ -157,7 +157,7 @@ const GpuFeatureData GetGpuFeatureData(
+ {"video_encode",
+ SafeGetFeatureStatus(gpu_feature_info,
+ gpu::GPU_FEATURE_TYPE_ACCELERATED_VIDEO_ENCODE),
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ !base::FeatureList::IsEnabled(media::kVaapiVideoEncodeLinux),
+ #else
+ command_line.HasSwitch(switches::kDisableAcceleratedVideoEncode),
diff --git a/devel/electron17/files/patch-content_browser_gpu_gpu__data__manager__impl__private.cc b/devel/electron17/files/patch-content_browser_gpu_gpu__data__manager__impl__private.cc
new file mode 100644
index 000000000000..a39f06daf2c2
--- /dev/null
+++ b/devel/electron17/files/patch-content_browser_gpu_gpu__data__manager__impl__private.cc
@@ -0,0 +1,11 @@
+--- content/browser/gpu/gpu_data_manager_impl_private.cc.orig 2022-05-13 07:19:54 UTC
++++ content/browser/gpu/gpu_data_manager_impl_private.cc
+@@ -1347,7 +1347,7 @@ void GpuDataManagerImplPrivate::AppendGpuCommandLine(
+ break;
+ case gpu::GpuMode::SWIFTSHADER: {
+ bool legacy_software_gl = true;
+-#if defined(OS_LINUX) || defined(OS_WIN)
++#if defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
+ // This setting makes WebGL run on SwANGLE instead of SwiftShader GL.
+ legacy_software_gl = false;
+ #endif
diff --git a/devel/electron17/files/patch-content_browser_gpu_gpu__process__host.cc b/devel/electron17/files/patch-content_browser_gpu_gpu__process__host.cc
new file mode 100644
index 000000000000..4694e0e6a007
--- /dev/null
+++ b/devel/electron17/files/patch-content_browser_gpu_gpu__process__host.cc
@@ -0,0 +1,28 @@
+--- content/browser/gpu/gpu_process_host.cc.orig 2022-05-13 07:19:54 UTC
++++ content/browser/gpu/gpu_process_host.cc
+@@ -101,7 +101,7 @@
+ #include "ui/ozone/public/ozone_switches.h"
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "ui/gfx/switches.h"
+ #endif
+
+@@ -255,6 +255,7 @@ static const char* const kSwitchNames[] = {
+ switches::kEnableBackgroundThreadPool,
+ switches::kEnableGpuRasterization,
+ switches::kEnableLogging,
++ switches::kDisableUnveil,
+ switches::kEnableDeJelly,
+ switches::kDeJellyScreenWidth,
+ switches::kDocumentTransitionSlowdownFactor,
+@@ -296,7 +297,7 @@ static const char* const kSwitchNames[] = {
+ switches::kOzoneDumpFile,
+ switches::kDisableBufferBWCompression,
+ #endif
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ switches::kX11Display,
+ switches::kNoXshm,
+ #endif
diff --git a/devel/electron17/files/patch-content_browser_media_media__keys__listener__manager__impl.cc b/devel/electron17/files/patch-content_browser_media_media__keys__listener__manager__impl.cc
new file mode 100644
index 000000000000..48268bb874bf
--- /dev/null
+++ b/devel/electron17/files/patch-content_browser_media_media__keys__listener__manager__impl.cc
@@ -0,0 +1,11 @@
+--- content/browser/media/media_keys_listener_manager_impl.cc.orig 2022-05-13 07:19:54 UTC
++++ content/browser/media/media_keys_listener_manager_impl.cc
+@@ -231,7 +231,7 @@ void MediaKeysListenerManagerImpl::StartListeningForMe
+ // TODO(crbug.com/1052397): Revisit once build flag switch of lacros-chrome is
+ // complete.
+ #if (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) || defined(OS_WIN) || \
+- defined(OS_MAC)
++ defined(OS_MAC) || defined(OS_BSD)
+ system_media_controls_ = system_media_controls::SystemMediaControls::Create(
+ media::AudioManager::GetGlobalAppName());
+ #endif
diff --git a/devel/electron17/files/patch-content_browser_memory_swap__metrics__driver__impl__linux.cc b/devel/electron17/files/patch-content_browser_memory_swap__metrics__driver__impl__linux.cc
new file mode 100644
index 000000000000..773475f42610
--- /dev/null
+++ b/devel/electron17/files/patch-content_browser_memory_swap__metrics__driver__impl__linux.cc
@@ -0,0 +1,16 @@
+--- content/browser/memory/swap_metrics_driver_impl_linux.cc.orig 2022-05-11 07:00:38 UTC
++++ content/browser/memory/swap_metrics_driver_impl_linux.cc
+@@ -44,9 +44,13 @@ SwapMetricsDriverImplLinux::~SwapMetricsDriverImplLinu
+ SwapMetricsDriver::SwapMetricsUpdateResult
+ SwapMetricsDriverImplLinux::UpdateMetricsInternal(base::TimeDelta interval) {
+ base::VmStatInfo vmstat;
++#if !defined(OS_BSD)
+ if (!base::GetVmStatInfo(&vmstat)) {
+ return SwapMetricsDriver::SwapMetricsUpdateResult::kSwapMetricsUpdateFailed;
+ }
++#else
++ return SwapMetricsDriver::SwapMetricsUpdateResult::kSwapMetricsUpdateFailed;
++#endif
+
+ uint64_t in_counts = vmstat.pswpin - last_pswpin_;
+ uint64_t out_counts = vmstat.pswpout - last_pswpout_;
diff --git a/devel/electron17/files/patch-content_browser_ppapi__plugin__process__host__receiver__bindings.cc b/devel/electron17/files/patch-content_browser_ppapi__plugin__process__host__receiver__bindings.cc
new file mode 100644
index 000000000000..3fe265047162
--- /dev/null
+++ b/devel/electron17/files/patch-content_browser_ppapi__plugin__process__host__receiver__bindings.cc
@@ -0,0 +1,20 @@
+--- content/browser/ppapi_plugin_process_host_receiver_bindings.cc.orig 2021-01-07 00:36:33 UTC
++++ content/browser/ppapi_plugin_process_host_receiver_bindings.cc
+@@ -8,7 +8,7 @@
+
+ #include "build/build_config.h"
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ #include "components/services/font/public/mojom/font_service.mojom.h" // nogncheck
+ #include "content/browser/font_service.h" // nogncheck
+ #endif
+@@ -17,7 +17,7 @@ namespace content {
+
+ void PpapiPluginProcessHost::BindHostReceiver(
+ mojo::GenericPendingReceiver receiver) {
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ if (auto font_receiver = receiver.As<font_service::mojom::FontService>())
+ ConnectToFontService(std::move(font_receiver));
+ #endif
diff --git a/devel/electron17/files/patch-content_browser_renderer__host_delegated__frame__host.cc b/devel/electron17/files/patch-content_browser_renderer__host_delegated__frame__host.cc
new file mode 100644
index 000000000000..e5291b52e87f
--- /dev/null
+++ b/devel/electron17/files/patch-content_browser_renderer__host_delegated__frame__host.cc
@@ -0,0 +1,11 @@
+--- content/browser/renderer_host/delegated_frame_host.cc.orig 2022-05-11 07:16:51 UTC
++++ content/browser/renderer_host/delegated_frame_host.cc
+@@ -288,7 +288,7 @@ void DelegatedFrameHost::EmbedSurface(
+
+ if (!primary_surface_id ||
+ primary_surface_id->local_surface_id() != local_surface_id_) {
+-#if defined(OS_WIN) || defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_WIN) || defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ // On Windows and Linux, we would like to produce new content as soon as
+ // possible or the OS will create an additional black gutter. Until we can
+ // block resize on surface synchronization on these platforms, we will not
diff --git a/devel/electron17/files/patch-content_browser_renderer__host_input_input__device__change__observer.cc b/devel/electron17/files/patch-content_browser_renderer__host_input_input__device__change__observer.cc
new file mode 100644
index 000000000000..7dac42490194
--- /dev/null
+++ b/devel/electron17/files/patch-content_browser_renderer__host_input_input__device__change__observer.cc
@@ -0,0 +1,29 @@
+--- content/browser/renderer_host/input/input_device_change_observer.cc.orig 2021-01-07 00:36:33 UTC
++++ content/browser/renderer_host/input/input_device_change_observer.cc
+@@ -9,7 +9,7 @@
+
+ #if defined(OS_WIN)
+ #include "ui/events/devices/input_device_observer_win.h"
+-#elif defined(OS_LINUX) || defined(OS_CHROMEOS)
++#elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ #include "ui/events/devices/device_data_manager.h"
+ #elif defined(OS_ANDROID)
+ #include "ui/events/devices/input_device_observer_android.h"
+@@ -21,7 +21,7 @@ InputDeviceChangeObserver::InputDeviceChangeObserver(R
+ render_view_host_impl_ = rvhi;
+ #if defined(OS_WIN)
+ ui::InputDeviceObserverWin::GetInstance()->AddObserver(this);
+-#elif defined(OS_LINUX) || defined(OS_CHROMEOS)
++#elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ ui::DeviceDataManager::GetInstance()->AddObserver(this);
+ #elif defined(OS_ANDROID)
+ ui::InputDeviceObserverAndroid::GetInstance()->AddObserver(this);
+@@ -31,7 +31,7 @@ InputDeviceChangeObserver::InputDeviceChangeObserver(R
+ InputDeviceChangeObserver::~InputDeviceChangeObserver() {
+ #if defined(OS_WIN)
+ ui::InputDeviceObserverWin::GetInstance()->RemoveObserver(this);
+-#elif defined(OS_LINUX) || defined(OS_CHROMEOS)
++#elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ ui::DeviceDataManager::GetInstance()->RemoveObserver(this);
+ #elif defined(OS_ANDROID)
+ ui::InputDeviceObserverAndroid::GetInstance()->RemoveObserver(this);
diff --git a/devel/electron17/files/patch-content_browser_renderer__host_pepper_pepper__file__io__host.cc b/devel/electron17/files/patch-content_browser_renderer__host_pepper_pepper__file__io__host.cc
new file mode 100644
index 000000000000..693c4fa8cf01
--- /dev/null
+++ b/devel/electron17/files/patch-content_browser_renderer__host_pepper_pepper__file__io__host.cc
@@ -0,0 +1,20 @@
+--- content/browser/renderer_host/pepper/pepper_file_io_host.cc.orig 2021-11-19 04:25:16 UTC
++++ content/browser/renderer_host/pepper/pepper_file_io_host.cc
+@@ -456,7 +456,7 @@ void PepperFileIOHost::OnLocalFileOpened(
+ ppapi::host::ReplyMessageContext reply_context,
+ const base::FilePath& path,
+ base::File::Error error_code) {
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // Quarantining a file before its contents are available is only supported on
+ // Windows and Linux.
+ if (!FileOpenForWrite(open_flags_) || error_code != base::File::FILE_OK) {
+@@ -490,7 +490,7 @@ void PepperFileIOHost::OnLocalFileOpened(
+ #endif
+ }
+
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ void PepperFileIOHost::OnLocalFileQuarantined(
+ ppapi::host::ReplyMessageContext reply_context,
+ const base::FilePath& path,
diff --git a/devel/electron17/files/patch-content_browser_renderer__host_render__message__filter.cc b/devel/electron17/files/patch-content_browser_renderer__host_render__message__filter.cc
new file mode 100644
index 000000000000..8ab1be5d2529
--- /dev/null
+++ b/devel/electron17/files/patch-content_browser_renderer__host_render__message__filter.cc
@@ -0,0 +1,29 @@
+--- content/browser/renderer_host/render_message_filter.cc.orig 2021-09-14 01:51:56 UTC
++++ content/browser/renderer_host/render_message_filter.cc
+@@ -67,7 +67,7 @@
+ #if defined(OS_MAC)
+ #include "ui/accelerated_widget_mac/window_resize_helper_mac.h"
+ #endif
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ #include "base/linux_util.h"
+ #include "base/threading/platform_thread.h"
+ #endif
+@@ -129,7 +129,7 @@ void RenderMessageFilter::GenerateFrameRoutingID(
+ std::move(callback).Run(routing_id, frame_token, devtools_frame_token);
+ }
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ void RenderMessageFilter::SetThreadPriorityOnFileThread(
+ base::PlatformThreadId ns_tid,
+ base::ThreadPriority priority) {
+@@ -150,7 +150,7 @@ void RenderMessageFilter::SetThreadPriorityOnFileThrea
+ }
+ #endif
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ void RenderMessageFilter::SetThreadPriority(int32_t ns_tid,
+ base::ThreadPriority priority) {
+ constexpr base::TaskTraits kTraits = {
diff --git a/devel/electron17/files/patch-content_browser_renderer__host_render__message__filter.h b/devel/electron17/files/patch-content_browser_renderer__host_render__message__filter.h
new file mode 100644
index 000000000000..bc4d442828b4
--- /dev/null
+++ b/devel/electron17/files/patch-content_browser_renderer__host_render__message__filter.h
@@ -0,0 +1,19 @@
+--- content/browser/renderer_host/render_message_filter.h.orig 2022-05-11 07:16:51 UTC
++++ content/browser/renderer_host/render_message_filter.h
+@@ -78,14 +78,14 @@ class RenderMessageFilter
+ void GenerateRoutingID(GenerateRoutingIDCallback routing_id) override;
+ void GenerateFrameRoutingID(GenerateFrameRoutingIDCallback callback) override;
+ void HasGpuProcess(HasGpuProcessCallback callback) override;
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ void SetThreadPriority(int32_t ns_tid,
+ base::ThreadPriority priority) override;
+ #endif
+
+ void OnResolveProxy(const GURL& url, IPC::Message* reply_msg);
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ void SetThreadPriorityOnFileThread(base::PlatformThreadId ns_tid,
+ base::ThreadPriority priority);
+ #endif
diff --git a/devel/electron17/files/patch-content_browser_renderer__host_render__process__host__impl.cc b/devel/electron17/files/patch-content_browser_renderer__host_render__process__host__impl.cc
new file mode 100644
index 000000000000..2ed7895648f1
--- /dev/null
+++ b/devel/electron17/files/patch-content_browser_renderer__host_render__process__host__impl.cc
@@ -0,0 +1,37 @@
+--- content/browser/renderer_host/render_process_host_impl.cc.orig 2022-05-13 07:19:54 UTC
++++ content/browser/renderer_host/render_process_host_impl.cc
+@@ -198,7 +198,7 @@
+ #include "third_party/blink/public/mojom/android_font_lookup/android_font_lookup.mojom.h"
+ #endif
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ #include <sys/resource.h>
+
+ #include "components/services/font/public/mojom/font_service.mojom.h" // nogncheck
+@@ -1218,7 +1218,7 @@ static constexpr size_t kUnknownPlatformProcessLimit =
+ // to indicate failure and std::numeric_limits<size_t>::max() to indicate
+ // unlimited.
+ size_t GetPlatformProcessLimit() {
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ struct rlimit limit;
+ if (getrlimit(RLIMIT_NPROC, &limit) != 0)
+ return kUnknownPlatformProcessLimit;
+@@ -1305,7 +1305,7 @@ class RenderProcessHostImpl::IOThreadHostImpl : public
+ return;
+ }
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ if (auto font_receiver = receiver.As<font_service::mojom::FontService>()) {
+ ConnectToFontService(std::move(font_receiver));
+ return;
+@@ -3314,6 +3314,7 @@ void RenderProcessHostImpl::PropagateBrowserCommandLin
+ switches::kDisableSpeechAPI,
+ switches::kDisableThreadedCompositing,
+ switches::kDisableTouchDragDrop,
++ switches::kDisableUnveil,
+ switches::kDisableV8IdleTasks,
+ switches::kDisableVideoCaptureUseGpuMemoryBuffer,
+ switches::kDisableWebGLImageChromium,
diff --git a/devel/electron17/files/patch-content_browser_renderer__host_render__process__host__impl.h b/devel/electron17/files/patch-content_browser_renderer__host_render__process__host__impl.h
new file mode 100644
index 000000000000..22b800fbbd81
--- /dev/null
+++ b/devel/electron17/files/patch-content_browser_renderer__host_render__process__host__impl.h
@@ -0,0 +1,11 @@
+--- content/browser/renderer_host/render_process_host_impl.h.orig 2022-05-11 07:16:51 UTC
++++ content/browser/renderer_host/render_process_host_impl.h
+@@ -461,7 +461,7 @@ class CONTENT_EXPORT RenderProcessHostImpl
+ // Sets this RenderProcessHost to be guest only. For Testing only.
+ void SetForGuestsOnlyForTesting();
+
+-#if defined(OS_POSIX) && !defined(OS_ANDROID) && !defined(OS_MAC)
++#if defined(OS_POSIX) && !defined(OS_ANDROID) && !defined(OS_MAC) && !defined(OS_BSD)
+ // Launch the zygote early in the browser startup.
+ static void EarlyZygoteLaunch();
+ #endif // defined(OS_POSIX) && !defined(OS_ANDROID) && !defined(OS_MAC)
diff --git a/devel/electron17/files/patch-content_browser_renderer__host_render__view__host__impl.cc b/devel/electron17/files/patch-content_browser_renderer__host_render__view__host__impl.cc
new file mode 100644
index 000000000000..175ea3adc78c
--- /dev/null
+++ b/devel/electron17/files/patch-content_browser_renderer__host_render__view__host__impl.cc
@@ -0,0 +1,11 @@
+--- content/browser/renderer_host/render_view_host_impl.cc.orig 2021-12-18 06:49:11 UTC
++++ content/browser/renderer_host/render_view_host_impl.cc
+@@ -259,7 +259,7 @@ void RenderViewHostImpl::GetPlatformSpecificPrefs(
+ display::win::ScreenWin::GetSystemMetricsInDIP(SM_CYVSCROLL);
+ prefs->arrow_bitmap_width_horizontal_scroll_bar_in_dips =
+ display::win::ScreenWin::GetSystemMetricsInDIP(SM_CXHSCROLL);
+-#elif defined(OS_LINUX) || defined(OS_CHROMEOS)
++#elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ prefs->system_font_family_name = gfx::Font().GetFontName();
+ #elif defined(OS_FUCHSIA)
+ // Make Blink's "focus ring" invisible. The focus ring is a hairline border
diff --git a/devel/electron17/files/patch-content_browser_renderer__host_render__widget__host__view__aura.cc b/devel/electron17/files/patch-content_browser_renderer__host_render__widget__host__view__aura.cc
new file mode 100644
index 000000000000..2ef864b8cbb1
--- /dev/null
+++ b/devel/electron17/files/patch-content_browser_renderer__host_render__widget__host__view__aura.cc
@@ -0,0 +1,47 @@
+--- content/browser/renderer_host/render_widget_host_view_aura.cc.orig 2022-05-13 07:19:54 UTC
++++ content/browser/renderer_host/render_widget_host_view_aura.cc
+@@ -114,7 +114,7 @@
+ #include "ui/gfx/gdi_util.h"
+ #endif
+
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ #include "content/browser/accessibility/browser_accessibility_auralinux.h"
+ #include "ui/base/ime/linux/text_edit_command_auralinux.h"
+ #include "ui/base/ime/linux/text_edit_key_bindings_delegate_auralinux.h"
+@@ -479,7 +479,7 @@ gfx::NativeViewAccessible RenderWidgetHostViewAura::Ge
+ if (manager)
+ return ToBrowserAccessibilityWin(manager->GetRoot())->GetCOM();
+
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ BrowserAccessibilityManager* manager =
+ host()->GetOrCreateRootBrowserAccessibilityManager();
+ if (manager && manager->GetRoot())
+@@ -1579,7 +1579,7 @@ bool RenderWidgetHostViewAura::ShouldDoLearning() {
+ return GetTextInputManager() && GetTextInputManager()->should_do_learning();
+ }
+
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ bool RenderWidgetHostViewAura::SetCompositionFromExistingText(
+ const gfx::Range& range,
+ const std::vector<ui::ImeTextSpan>& ui_ime_text_spans) {
+@@ -2396,7 +2396,7 @@ bool RenderWidgetHostViewAura::NeedsInputGrab() {
+ }
+
+ bool RenderWidgetHostViewAura::NeedsMouseCapture() {
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ return NeedsInputGrab();
+ #else
+ return false;
+@@ -2573,7 +2573,7 @@ void RenderWidgetHostViewAura::ForwardKeyboardEventWit
+ if (!target_host)
+ return;
+
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ ui::TextEditKeyBindingsDelegateAuraLinux* keybinding_delegate =
+ ui::GetTextEditKeyBindingsDelegate();
+ std::vector<ui::TextEditCommandAuraLinux> commands;
diff --git a/devel/electron17/files/patch-content_browser_renderer__host_render__widget__host__view__aura.h b/devel/electron17/files/patch-content_browser_renderer__host_render__widget__host__view__aura.h
new file mode 100644
index 000000000000..a2d1fe6404bf
--- /dev/null
+++ b/devel/electron17/files/patch-content_browser_renderer__host_render__widget__host__view__aura.h
@@ -0,0 +1,11 @@
+--- content/browser/renderer_host/render_widget_host_view_aura.h.orig 2022-05-11 07:16:51 UTC
++++ content/browser/renderer_host/render_widget_host_view_aura.h
+@@ -235,7 +235,7 @@ class CONTENT_EXPORT RenderWidgetHostViewAura
+ ukm::SourceId GetClientSourceForMetrics() const override;
+ bool ShouldDoLearning() override;
+
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ bool SetCompositionFromExistingText(
+ const gfx::Range& range,
+ const std::vector<ui::ImeTextSpan>& ui_ime_text_spans) override;
diff --git a/devel/electron17/files/patch-content_browser_renderer__host_render__widget__host__view__event__handler.cc b/devel/electron17/files/patch-content_browser_renderer__host_render__widget__host__view__event__handler.cc
new file mode 100644
index 000000000000..bd1cf9d5003f
--- /dev/null
+++ b/devel/electron17/files/patch-content_browser_renderer__host_render__widget__host__view__event__handler.cc
@@ -0,0 +1,11 @@
+--- content/browser/renderer_host/render_widget_host_view_event_handler.cc.orig 2021-11-19 04:25:16 UTC
++++ content/browser/renderer_host/render_widget_host_view_event_handler.cc
+@@ -600,7 +600,7 @@ bool RenderWidgetHostViewEventHandler::CanRendererHand
+ if (event->type() == ui::ET_MOUSE_EXITED) {
+ if (mouse_locked || selection_popup)
+ return false;
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // Don't forward the mouse leave message which is received when the context
+ // menu is displayed by the page. This confuses the page and causes state
+ // changes.
diff --git a/devel/electron17/files/patch-content_browser_sandbox__host__linux.cc b/devel/electron17/files/patch-content_browser_sandbox__host__linux.cc
new file mode 100644
index 000000000000..c732d21c57e5
--- /dev/null
+++ b/devel/electron17/files/patch-content_browser_sandbox__host__linux.cc
@@ -0,0 +1,18 @@
+--- content/browser/sandbox_host_linux.cc.orig 2022-05-11 07:00:38 UTC
++++ content/browser/sandbox_host_linux.cc
+@@ -45,6 +45,7 @@ void SandboxHostLinux::Init() {
+ // Instead, it replies on a temporary socket provided by the caller.
+ PCHECK(0 == shutdown(browser_socket, SHUT_WR)) << "shutdown";
+
++#if !defined(OS_BSD)
+ int pipefds[2];
+ CHECK(0 == pipe(pipefds));
+ const int child_lifeline_fd = pipefds[0];
+@@ -55,6 +56,7 @@ void SandboxHostLinux::Init() {
+ ipc_thread_ = std::make_unique<base::DelegateSimpleThread>(
+ ipc_handler_.get(), "sandbox_ipc_thread");
+ ipc_thread_->Start();
++#endif
+ }
+
+ } // namespace content
diff --git a/devel/electron17/files/patch-content_browser_scheduler_responsiveness_jank__monitor__impl.cc b/devel/electron17/files/patch-content_browser_scheduler_responsiveness_jank__monitor__impl.cc
new file mode 100644
index 000000000000..e849d31dfea4
--- /dev/null
+++ b/devel/electron17/files/patch-content_browser_scheduler_responsiveness_jank__monitor__impl.cc
@@ -0,0 +1,11 @@
+--- content/browser/scheduler/responsiveness/jank_monitor_impl.cc.orig 2021-11-19 04:25:16 UTC
++++ content/browser/scheduler/responsiveness/jank_monitor_impl.cc
+@@ -333,7 +333,7 @@ void JankMonitorImpl::ThreadExecutionState::DidRunTask
+ // in context menus, among others). Simply ignore the mismatches for now.
+ // See https://crbug.com/929813 for the details of why the mismatch
+ // happens.
+-#if (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) && defined(USE_OZONE)
++#if (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)) && defined(USE_OZONE)
+ task_execution_metadata_.clear();
+ #endif
+ return;
diff --git a/devel/electron17/files/patch-content_browser_scheduler_responsiveness_native__event__observer.cc b/devel/electron17/files/patch-content_browser_scheduler_responsiveness_native__event__observer.cc
new file mode 100644
index 000000000000..0ab8ca7d576a
--- /dev/null
+++ b/devel/electron17/files/patch-content_browser_scheduler_responsiveness_native__event__observer.cc
@@ -0,0 +1,20 @@
+--- content/browser/scheduler/responsiveness/native_event_observer.cc.orig 2022-05-11 07:16:51 UTC
++++ content/browser/scheduler/responsiveness/native_event_observer.cc
+@@ -15,7 +15,7 @@
+
+ #include "ui/events/platform/platform_event_source.h"
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ #include "ui/aura/env.h"
+ #include "ui/events/event.h"
+ #endif
+@@ -39,7 +39,7 @@ NativeEventObserver::~NativeEventObserver() {
+ DeregisterObserver();
+ }
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ void NativeEventObserver::RegisterObserver() {
+ aura::Env::GetInstance()->AddWindowEventDispatcherObserver(this);
+ }
diff --git a/devel/electron17/files/patch-content_browser_scheduler_responsiveness_native__event__observer.h b/devel/electron17/files/patch-content_browser_scheduler_responsiveness_native__event__observer.h
new file mode 100644
index 000000000000..351ba9073183
--- /dev/null
+++ b/devel/electron17/files/patch-content_browser_scheduler_responsiveness_native__event__observer.h
@@ -0,0 +1,47 @@
+--- content/browser/scheduler/responsiveness/native_event_observer.h.orig 2022-05-11 07:16:51 UTC
++++ content/browser/scheduler/responsiveness/native_event_observer.h
+@@ -15,7 +15,7 @@
+ #include "content/public/browser/native_event_processor_observer_mac.h"
+ #endif
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ #include "ui/aura/window_event_dispatcher_observer.h"
+ #endif
+
+@@ -40,7 +40,7 @@ namespace responsiveness {
+ class CONTENT_EXPORT NativeEventObserver
+ #if defined(OS_MAC)
+ : public NativeEventProcessorObserver
+-#elif defined(OS_LINUX) || defined(OS_CHROMEOS)
++#elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ : public aura::WindowEventDispatcherObserver
+ #elif defined(OS_WIN)
+ : public base::MessagePumpForUI::Observer
+@@ -57,7 +57,7 @@ class CONTENT_EXPORT NativeEventObserver
+ NativeEventObserver(WillRunEventCallback will_run_event_callback,
+ DidRunEventCallback did_run_event_callback);
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+
+ NativeEventObserver(const NativeEventObserver&) = delete;
+ NativeEventObserver& operator=(const NativeEventObserver&) = delete;
+@@ -73,7 +73,7 @@ class CONTENT_EXPORT NativeEventObserver
+ // Exposed for tests.
+ void WillRunNativeEvent(const void* opaque_identifier) override;
+ void DidRunNativeEvent(const void* opaque_identifier) override;
+-#elif defined(OS_LINUX) || defined(OS_CHROMEOS)
++#elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // aura::WindowEventDispatcherObserver overrides:
+ void OnWindowEventDispatcherStartedProcessing(
+ aura::WindowEventDispatcher* dispatcher,
+@@ -90,7 +90,7 @@ class CONTENT_EXPORT NativeEventObserver
+ void RegisterObserver();
+ void DeregisterObserver();
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ struct EventInfo {
+ const void* unique_id;
+ };
diff --git a/devel/electron17/files/patch-content_browser_utility__process__host__receiver__bindings.cc b/devel/electron17/files/patch-content_browser_utility__process__host__receiver__bindings.cc
new file mode 100644
index 000000000000..68754c3de02e
--- /dev/null
+++ b/devel/electron17/files/patch-content_browser_utility__process__host__receiver__bindings.cc
@@ -0,0 +1,20 @@
+--- content/browser/utility_process_host_receiver_bindings.cc.orig 2021-01-07 00:36:33 UTC
++++ content/browser/utility_process_host_receiver_bindings.cc
+@@ -10,7 +10,7 @@
+ #include "content/public/browser/content_browser_client.h"
+ #include "content/public/common/content_client.h"
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ #include "components/services/font/public/mojom/font_service.mojom.h" // nogncheck
+ #include "content/browser/font_service.h" // nogncheck
+ #endif
+@@ -19,7 +19,7 @@ namespace content {
+
+ void UtilityProcessHost::BindHostReceiver(
+ mojo::GenericPendingReceiver receiver) {
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ if (auto font_receiver = receiver.As<font_service::mojom::FontService>()) {
+ ConnectToFontService(std::move(font_receiver));
+ return;
diff --git a/devel/electron17/files/patch-content_browser_utility__sandbox__delegate.cc b/devel/electron17/files/patch-content_browser_utility__sandbox__delegate.cc
new file mode 100644
index 000000000000..9b3a395a4d59
--- /dev/null
+++ b/devel/electron17/files/patch-content_browser_utility__sandbox__delegate.cc
@@ -0,0 +1,11 @@
+--- content/browser/utility_sandbox_delegate.cc.orig 2022-05-11 07:16:51 UTC
++++ content/browser/utility_sandbox_delegate.cc
+@@ -61,7 +61,7 @@ UtilitySandboxedProcessLauncherDelegate::
+ #if BUILDFLAG(ENABLE_PLUGINS)
+ sandbox_type_ == sandbox::mojom::Sandbox::kPpapi ||
+ #endif
+-#if defined(OS_FUCHSIA)
++#if defined(OS_FUCHSIA) || defined(OS_BSD)
+ sandbox_type_ == sandbox::mojom::Sandbox::kVideoCapture ||
+ #endif
+ #if BUILDFLAG(IS_CHROMEOS_ASH)
diff --git a/devel/electron17/files/patch-content_browser_v8__snapshot__files.cc b/devel/electron17/files/patch-content_browser_v8__snapshot__files.cc
new file mode 100644
index 000000000000..82665cc0e13b
--- /dev/null
+++ b/devel/electron17/files/patch-content_browser_v8__snapshot__files.cc
@@ -0,0 +1,11 @@
+--- content/browser/v8_snapshot_files.cc.orig 2022-05-11 07:16:51 UTC
++++ content/browser/v8_snapshot_files.cc
+@@ -15,7 +15,7 @@ namespace content {
+
+ std::map<std::string, base::FilePath> GetV8SnapshotFilesToPreload(
+ base::CommandLine& process_command_line) {
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ #if defined(USE_V8_CONTEXT_SNAPSHOT)
+ return {{kV8ContextSnapshotDataDescriptor,
+ base::FilePath(FILE_PATH_LITERAL(V8_CONTEXT_SNAPSHOT_FILENAME))}};
diff --git a/devel/electron17/files/patch-content_browser_web__contents_web__contents__view__aura.cc b/devel/electron17/files/patch-content_browser_web__contents_web__contents__view__aura.cc
new file mode 100644
index 000000000000..f18af8619511
--- /dev/null
+++ b/devel/electron17/files/patch-content_browser_web__contents_web__contents__view__aura.cc
@@ -0,0 +1,29 @@
+--- content/browser/web_contents/web_contents_view_aura.cc.orig 2022-05-13 07:19:54 UTC
++++ content/browser/web_contents/web_contents_view_aura.cc
+@@ -159,7 +159,7 @@ class WebDragSourceAura : public content::WebContentsO
+ raw_ptr<aura::Window> window_;
+ };
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_WIN)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_WIN) || defined(OS_BSD)
+ // Fill out the OSExchangeData with a file contents, synthesizing a name if
+ // necessary.
+ void PrepareDragForFileContents(const DropData& drop_data,
+@@ -242,7 +242,7 @@ void PrepareDragData(const DropData& drop_data,
+ if (!drop_data.download_metadata.empty())
+ PrepareDragForDownload(drop_data, provider, web_contents);
+ #endif
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_WIN)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_WIN) || defined(OS_BSD)
+ // We set the file contents before the URL because the URL also sets file
+ // contents (to a .URL shortcut). We want to prefer file content data over
+ // a shortcut so we add it first.
+@@ -1301,7 +1301,7 @@ void WebContentsViewAura::OnMouseEvent(ui::MouseEvent*
+ // Linux window managers like to handle raise-on-click themselves. If we
+ // raise-on-click manually, this may override user settings that prevent
+ // focus-stealing.
+-#if !defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if !defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(OS_BSD)
+ // It is possible for the web-contents to be destroyed while it is being
+ // activated. Use a weak-ptr to track whether that happened or not.
+ // More in https://crbug.com/1040725
diff --git a/devel/electron17/files/patch-content_browser_webui_web__ui__main__frame__observer.cc b/devel/electron17/files/patch-content_browser_webui_web__ui__main__frame__observer.cc
new file mode 100644
index 000000000000..246233eb4904
--- /dev/null
+++ b/devel/electron17/files/patch-content_browser_webui_web__ui__main__frame__observer.cc
@@ -0,0 +1,38 @@
+--- content/browser/webui/web_ui_main_frame_observer.cc.orig 2022-05-11 07:16:51 UTC
++++ content/browser/webui/web_ui_main_frame_observer.cc
+@@ -11,7 +11,7 @@
+ #include "content/browser/webui/web_ui_impl.h"
+ #include "content/public/browser/navigation_handle.h"
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ #include "base/callback_helpers.h"
+ #include "base/feature_list.h"
+ #include "base/logging.h"
+@@ -30,7 +30,7 @@ namespace content {
+
+ namespace {
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // Remove the pieces of the URL we don't want to send back with the error
+ // reports. In particular, do not send query or fragments as those can have
+ // privacy-sensitive information in them.
+@@ -66,7 +66,7 @@ void WebUIMainFrameObserver::DidFinishNavigation(
+ web_ui_->DisallowJavascriptOnAllHandlers();
+ }
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ void WebUIMainFrameObserver::OnDidAddMessageToConsole(
+ RenderFrameHost* source_frame,
+ blink::mojom::ConsoleMessageLevel log_level,
+@@ -183,7 +183,7 @@ void WebUIMainFrameObserver::ReadyToCommitNavigation(
+
+ // TODO(crbug.com/1129544) This is currently disabled due to Windows DLL
+ // thunking issues. Fix & re-enable.
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ MaybeEnableWebUIJavaScriptErrorReporting(navigation_handle);
+ #endif // defined(OS_LINUX) || defined(OS_CHROMEOS)
+ }
diff --git a/devel/electron17/files/patch-content_browser_webui_web__ui__main__frame__observer.h b/devel/electron17/files/patch-content_browser_webui_web__ui__main__frame__observer.h
new file mode 100644
index 000000000000..44bd20e96d25
--- /dev/null
+++ b/devel/electron17/files/patch-content_browser_webui_web__ui__main__frame__observer.h
@@ -0,0 +1,20 @@
+--- content/browser/webui/web_ui_main_frame_observer.h.orig 2022-05-11 07:16:51 UTC
++++ content/browser/webui/web_ui_main_frame_observer.h
+@@ -45,7 +45,7 @@ class CONTENT_EXPORT WebUIMainFrameObserver : public W
+
+ // TODO(crbug.com/1129544) This is currently disabled due to Windows DLL
+ // thunking issues. Fix & re-enable.
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // On official Google builds, capture and report JavaScript error messages on
+ // WebUI surfaces back to Google. This allows us to fix JavaScript errors and
+ // exceptions.
+@@ -61,7 +61,7 @@ class CONTENT_EXPORT WebUIMainFrameObserver : public W
+ void ReadyToCommitNavigation(NavigationHandle* navigation_handle) override;
+
+ private:
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ void MaybeEnableWebUIJavaScriptErrorReporting(
+ NavigationHandle* navigation_handle);
+
diff --git a/devel/electron17/files/patch-content_browser_zygote__host_zygote__host__impl__linux.cc b/devel/electron17/files/patch-content_browser_zygote__host_zygote__host__impl__linux.cc
new file mode 100644
index 000000000000..78138422fafc
--- /dev/null
+++ b/devel/electron17/files/patch-content_browser_zygote__host_zygote__host__impl__linux.cc
@@ -0,0 +1,70 @@
+--- content/browser/zygote_host/zygote_host_impl_linux.cc.orig 2022-05-11 07:16:51 UTC
++++ content/browser/zygote_host/zygote_host_impl_linux.cc
+@@ -28,6 +28,7 @@ namespace content {
+
+ namespace {
+
++#if !defined(OS_BSD)
+ // Receive a fixed message on fd and return the sender's PID.
+ // Returns true if the message received matches the expected message.
+ bool ReceiveFixedMessage(int fd,
+@@ -49,6 +50,7 @@ bool ReceiveFixedMessage(int fd,
+ return false;
+ return true;
+ }
++#endif
+
+ } // namespace
+
+@@ -58,9 +60,13 @@ ZygoteHost* ZygoteHost::GetInstance() {
+ }
+
+ ZygoteHostImpl::ZygoteHostImpl()
++#if !defined(OS_BSD)
+ : use_namespace_sandbox_(false),
+ use_suid_sandbox_(false),
+ use_suid_sandbox_for_adj_oom_score_(false),
++#else
++ :
++#endif
+ sandbox_binary_(),
+ zygote_pids_lock_(),
+ zygote_pids_() {}
+@@ -73,6 +79,7 @@ ZygoteHostImpl* ZygoteHostImpl::GetInstance() {
+ }
+
+ void ZygoteHostImpl::Init(const base::CommandLine& command_line) {
++#if !defined(OS_BSD)
+ if (command_line.HasSwitch(sandbox::policy::switches::kNoSandbox)) {
+ return;
+ }
+@@ -123,6 +130,7 @@ void ZygoteHostImpl::Init(const base::CommandLine& com
+ "you can try using --"
+ << sandbox::policy::switches::kNoSandbox << ".";
+ }
++#endif
+ }
+
+ void ZygoteHostImpl::AddZygotePid(pid_t pid) {
+@@ -147,6 +155,7 @@ pid_t ZygoteHostImpl::LaunchZygote(
+ base::CommandLine* cmd_line,
+ base::ScopedFD* control_fd,
+ base::FileHandleMappingVector additional_remapped_fds) {
++#if !defined(OS_BSD)
+ int fds[2];
+ CHECK_EQ(0, socketpair(AF_UNIX, SOCK_SEQPACKET, 0, fds));
+ CHECK(base::UnixDomainSocket::EnableReceiveProcessId(fds[0]));
+@@ -214,9 +223,12 @@ pid_t ZygoteHostImpl::LaunchZygote(
+
+ AddZygotePid(pid);
+ return pid;
++#else
++ return 0;
++#endif
+ }
+
+-#if !defined(OS_OPENBSD)
++#if !defined(OS_BSD)
+ void ZygoteHostImpl::AdjustRendererOOMScore(base::ProcessHandle pid,
+ int score) {
+ // 1) You can't change the oom_score_adj of a non-dumpable process
diff --git a/devel/electron17/files/patch-content_browser_zygote__host_zygote__host__impl__linux.h b/devel/electron17/files/patch-content_browser_zygote__host_zygote__host__impl__linux.h
new file mode 100644
index 000000000000..b906e008a309
--- /dev/null
+++ b/devel/electron17/files/patch-content_browser_zygote__host_zygote__host__impl__linux.h
@@ -0,0 +1,25 @@
+--- content/browser/zygote_host/zygote_host_impl_linux.h.orig 2021-09-14 01:51:56 UTC
++++ content/browser/zygote_host/zygote_host_impl_linux.h
+@@ -42,8 +42,10 @@ class CONTENT_EXPORT ZygoteHostImpl : public ZygoteHos
+ base::ScopedFD* control_fd,
+ base::FileHandleMappingVector additional_remapped_fds);
+
++#if !defined(OS_BSD)
+ void AdjustRendererOOMScore(base::ProcessHandle process_handle,
+ int score) override;
++#endif
+ bool HasZygote() { return !zygote_pids_.empty(); }
+
+ private:
+@@ -57,9 +59,11 @@ class CONTENT_EXPORT ZygoteHostImpl : public ZygoteHos
+
+ int renderer_sandbox_status_;
+
++#if !defined(OS_BSD)
+ bool use_namespace_sandbox_;
+ bool use_suid_sandbox_;
+ bool use_suid_sandbox_for_adj_oom_score_;
++#endif
+ std::string sandbox_binary_;
+
+ // This lock protects the |zygote_pids_| set.
diff --git a/devel/electron17/files/patch-content_child_child__process.cc b/devel/electron17/files/patch-content_child_child__process.cc
new file mode 100644
index 000000000000..4653a2066d49
--- /dev/null
+++ b/devel/electron17/files/patch-content_child_child__process.cc
@@ -0,0 +1,11 @@
+--- content/child/child_process.cc.orig 2021-04-14 01:08:48 UTC
++++ content/child/child_process.cc
+@@ -52,7 +52,7 @@ ChildProcess::ChildProcess(base::ThreadPriority io_thr
+ DCHECK(!g_lazy_child_process_tls.Pointer()->Get());
+ g_lazy_child_process_tls.Pointer()->Set(this);
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ const base::CommandLine& command_line =
+ *base::CommandLine::ForCurrentProcess();
+ const bool is_embedded_in_browser_process =
diff --git a/devel/electron17/files/patch-content_common_BUILD.gn b/devel/electron17/files/patch-content_common_BUILD.gn
new file mode 100644
index 000000000000..2ca8f18af043
--- /dev/null
+++ b/devel/electron17/files/patch-content_common_BUILD.gn
@@ -0,0 +1,12 @@
+--- content/common/BUILD.gn.orig 2022-05-11 07:16:51 UTC
++++ content/common/BUILD.gn
+@@ -407,6 +407,9 @@ if (is_linux || is_chromeos) {
+ public = [ "set_process_title_linux.h" ]
+ sources = [ "set_process_title_linux.cc" ]
+ deps = [ "//base" ]
++ if (is_bsd) {
++ sources -= [ "set_process_title_linux.cc" ]
++ }
+ }
+ }
+
diff --git a/devel/electron17/files/patch-content_common_mojo__core__library__support.cc b/devel/electron17/files/patch-content_common_mojo__core__library__support.cc
new file mode 100644
index 000000000000..09f8348805fc
--- /dev/null
+++ b/devel/electron17/files/patch-content_common_mojo__core__library__support.cc
@@ -0,0 +1,11 @@
+--- content/common/mojo_core_library_support.cc.orig 2021-09-14 01:51:56 UTC
++++ content/common/mojo_core_library_support.cc
+@@ -15,7 +15,7 @@ bool IsMojoCoreSharedLibraryEnabled() {
+ }
+
+ absl::optional<base::FilePath> GetMojoCoreSharedLibraryPath() {
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ const base::CommandLine& command_line =
+ *base::CommandLine::ForCurrentProcess();
+ if (!command_line.HasSwitch(switches::kMojoCoreLibraryPath))
diff --git a/devel/electron17/files/patch-content_common_sandbox__init__linux.cc b/devel/electron17/files/patch-content_common_sandbox__init__linux.cc
new file mode 100644
index 000000000000..f3318aed4456
--- /dev/null
+++ b/devel/electron17/files/patch-content_common_sandbox__init__linux.cc
@@ -0,0 +1,19 @@
+--- content/common/sandbox_init_linux.cc.orig 2022-05-11 07:16:51 UTC
++++ content/common/sandbox_init_linux.cc
+@@ -16,11 +16,15 @@ namespace content {
+
+ bool InitializeSandbox(std::unique_ptr<sandbox::bpf_dsl::Policy> policy,
+ base::ScopedFD proc_fd) {
++#if !defined(OS_BSD)
+ return sandbox::policy::SandboxSeccompBPF::StartSandboxWithExternalPolicy(
+ std::move(policy), std::move(proc_fd));
++#else
++ return false;
++#endif
+ }
+
+-#if !defined(OS_NACL_NONSFI)
++#if !defined(OS_NACL_NONSFI) && !defined(OS_BSD)
+ std::unique_ptr<sandbox::bpf_dsl::Policy> GetBPFSandboxBaselinePolicy() {
+ return sandbox::policy::SandboxSeccompBPF::GetBaselinePolicy();
+ }
diff --git a/devel/electron17/files/patch-content_common_user__agent.cc b/devel/electron17/files/patch-content_common_user__agent.cc
new file mode 100644
index 000000000000..e2728d939d9f
--- /dev/null
+++ b/devel/electron17/files/patch-content_common_user__agent.cc
@@ -0,0 +1,19 @@
+--- content/common/user_agent.cc.orig 2022-05-11 07:16:51 UTC
++++ content/common/user_agent.cc
+@@ -252,6 +252,16 @@ std::string BuildOSCpuInfoFromOSVersionAndCpuType(cons
+ );
+ #endif
+
++#if defined(OS_BSD)
++#if defined(__x86_64__)
++ base::StringAppendF(&os_cpu, "; Linux x86_64");
++#elif defined(__aarch64__)
++ base::StringAppendF(&os_cpu, "; Linux aarch64");
++#else
++ base::StringAppendF(&os_cpu, "; Linux i686");
++#endif
++#endif
++
+ return os_cpu;
+ }
+
diff --git a/devel/electron17/files/patch-content_gpu_gpu__main.cc b/devel/electron17/files/patch-content_gpu_gpu__main.cc
new file mode 100644
index 000000000000..7775d2204835
--- /dev/null
+++ b/devel/electron17/files/patch-content_gpu_gpu__main.cc
@@ -0,0 +1,73 @@
+--- content/gpu/gpu_main.cc.orig 2022-05-13 07:19:54 UTC
++++ content/gpu/gpu_main.cc
+@@ -83,7 +83,7 @@
+ #include "sandbox/win/src/sandbox.h"
+ #endif
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ #include "content/gpu/gpu_sandbox_hook_linux.h"
+ #include "content/public/common/sandbox_init.h"
+ #include "sandbox/policy/linux/sandbox_linux.h"
+@@ -106,7 +106,7 @@ namespace content {
+
+ namespace {
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ bool StartSandboxLinux(gpu::GpuWatchdogThread*,
+ const gpu::GPUInfo*,
+ const gpu::GpuPreferences&);
+@@ -168,7 +168,7 @@ class ContentSandboxHelper : public gpu::GpuSandboxHel
+ bool EnsureSandboxInitialized(gpu::GpuWatchdogThread* watchdog_thread,
+ const gpu::GPUInfo* gpu_info,
+ const gpu::GpuPreferences& gpu_prefs) override {
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ return StartSandboxLinux(watchdog_thread, gpu_info, gpu_prefs);
+ #elif defined(OS_WIN)
+ return StartSandboxWindows(sandbox_info_);
+@@ -268,7 +268,7 @@ int GpuMain(MainFunctionParams parameters) {
+ std::make_unique<base::SingleThreadTaskExecutor>(
+ gpu_preferences.message_pump_type);
+ }
+-#elif defined(OS_LINUX) || defined(OS_CHROMEOS)
++#elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ #error "Unsupported Linux platform."
+ #elif defined(OS_MAC)
+ // Cross-process CoreAnimation requires a CFRunLoop to function at all, and
+@@ -410,17 +410,19 @@ int GpuMain(MainFunctionParams parameters) {
+
+ namespace {
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ bool StartSandboxLinux(gpu::GpuWatchdogThread* watchdog_thread,
+ const gpu::GPUInfo* gpu_info,
+ const gpu::GpuPreferences& gpu_prefs) {
+ TRACE_EVENT0("gpu,startup", "Initialize sandbox");
+
++#if !defined(OS_BSD)
+ if (watchdog_thread) {
+ // SandboxLinux needs to be able to ensure that the thread
+ // has really been stopped.
+ sandbox::policy::SandboxLinux::GetInstance()->StopThread(watchdog_thread);
+ }
++#endif
+
+ // SandboxLinux::InitializeSandbox() must always be called
+ // with only one thread.
+@@ -441,11 +443,13 @@ bool StartSandboxLinux(gpu::GpuWatchdogThread* watchdo
+ *base::CommandLine::ForCurrentProcess()),
+ base::BindOnce(GpuProcessPreSandboxHook), sandbox_options);
+
++#if !defined(OS_BSD)
+ if (watchdog_thread) {
+ base::Thread::Options thread_options;
+ thread_options.timer_slack = base::TIMER_SLACK_MAXIMUM;
+ watchdog_thread->StartWithOptions(std::move(thread_options));
+ }
++#endif
+
+ return res;
+ }
diff --git a/devel/electron17/files/patch-content_gpu_gpu__sandbox__hook__linux.cc b/devel/electron17/files/patch-content_gpu_gpu__sandbox__hook__linux.cc
new file mode 100644
index 000000000000..3718dfac6592
--- /dev/null
+++ b/devel/electron17/files/patch-content_gpu_gpu__sandbox__hook__linux.cc
@@ -0,0 +1,70 @@
+--- content/gpu/gpu_sandbox_hook_linux.cc.orig 2022-05-11 07:16:51 UTC
++++ content/gpu/gpu_sandbox_hook_linux.cc
+@@ -101,6 +101,7 @@ static const char kLibV4lEncPluginPath[] =
+
+ constexpr int dlopen_flag = RTLD_NOW | RTLD_GLOBAL | RTLD_NODELETE;
+
++#if !defined(OS_BSD)
+ void AddV4L2GpuPermissions(
+ std::vector<BrokerFilePermission>* permissions,
+ const sandbox::policy::SandboxSeccompBPF::Options& options) {
+@@ -395,8 +396,10 @@ std::vector<BrokerFilePermission> FilePermissionsForGp
+ AddStandardGpuPermissions(&permissions);
+ return permissions;
+ }
++#endif
+
+ void LoadArmGpuLibraries() {
++#if !defined(OS_BSD)
+ // Preload the Mali library.
+ if (UseChromecastSandboxAllowlist()) {
+ for (const char* path : kAllowedChromecastPaths) {
+@@ -438,6 +441,7 @@ void LoadArmGpuLibraries() {
+ dlopen(driver_paths[i], dlopen_flag);
+ }
+ }
++#endif
+ }
+
+ bool LoadAmdGpuLibraries() {
+@@ -501,12 +505,14 @@ void LoadV4L2Libraries(
+ }
+
+ void LoadChromecastV4L2Libraries() {
++#if !defined(OS_BSD)
+ for (const char* path : kAllowedChromecastPaths) {
+ const std::string library_path(std::string(path) +
+ std::string("libvpcodec.so"));
+ if (dlopen(library_path.c_str(), dlopen_flag))
+ break;
+ }
++#endif
+ }
+
+ bool LoadLibrariesForGpu(
+@@ -533,6 +539,7 @@ bool LoadLibrariesForGpu(
+ return true;
+ }
+
++#if !defined(OS_BSD)
+ sandbox::syscall_broker::BrokerCommandSet CommandSetForGPU(
+ const sandbox::policy::SandboxLinux::Options& options) {
+ sandbox::syscall_broker::BrokerCommandSet command_set;
+@@ -555,13 +562,17 @@ bool BrokerProcessPreSandboxHook(
+ SetProcessTitleFromCommandLine(nullptr);
+ return true;
+ }
++#endif
+
+ } // namespace
+
+ bool GpuProcessPreSandboxHook(sandbox::policy::SandboxLinux::Options options) {
++ NOTIMPLEMENTED();
++#if !defined(OS_BSD)
+ sandbox::policy::SandboxLinux::GetInstance()->StartBrokerProcess(
+ CommandSetForGPU(options), FilePermissionsForGpu(options),
+ base::BindOnce(BrokerProcessPreSandboxHook), options);
++#endif
+
+ if (!LoadLibrariesForGpu(options))
+ return false;
diff --git a/devel/electron17/files/patch-content_ppapi__plugin_ppapi__blink__platform__impl.cc b/devel/electron17/files/patch-content_ppapi__plugin_ppapi__blink__platform__impl.cc
new file mode 100644
index 000000000000..e0a546c76a25
--- /dev/null
+++ b/devel/electron17/files/patch-content_ppapi__plugin_ppapi__blink__platform__impl.cc
@@ -0,0 +1,29 @@
+--- content/ppapi_plugin/ppapi_blink_platform_impl.cc.orig 2021-09-14 01:51:56 UTC
++++ content/ppapi_plugin/ppapi_blink_platform_impl.cc
+@@ -20,7 +20,7 @@
+
+ #if defined(OS_MAC)
+ #include "content/child/child_process_sandbox_support_impl_mac.h"
+-#elif defined(OS_LINUX) || defined(OS_CHROMEOS)
++#elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ #include "content/child/child_process_sandbox_support_impl_linux.h"
+ #include "mojo/public/cpp/bindings/pending_remote.h"
+ #endif
+@@ -35,7 +35,7 @@ typedef struct CGFont* CGFontRef;
+ namespace content {
+
+ PpapiBlinkPlatformImpl::PpapiBlinkPlatformImpl() {
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ mojo::PendingRemote<font_service::mojom::FontService> font_service;
+ ChildThread::Get()->BindHostReceiver(
+ font_service.InitWithNewPipeAndPassReceiver());
+@@ -53,7 +53,7 @@ PpapiBlinkPlatformImpl::~PpapiBlinkPlatformImpl() {
+ void PpapiBlinkPlatformImpl::Shutdown() {}
+
+ blink::WebSandboxSupport* PpapiBlinkPlatformImpl::GetSandboxSupport() {
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC) || defined(OS_BSD)
+ return sandbox_support_.get();
+ #else
+ return nullptr;
diff --git a/devel/electron17/files/patch-content_ppapi__plugin_ppapi__blink__platform__impl.h b/devel/electron17/files/patch-content_ppapi__plugin_ppapi__blink__platform__impl.h
new file mode 100644
index 000000000000..f3c92f7f3119
--- /dev/null
+++ b/devel/electron17/files/patch-content_ppapi__plugin_ppapi__blink__platform__impl.h
@@ -0,0 +1,25 @@
+--- content/ppapi_plugin/ppapi_blink_platform_impl.h.orig 2022-05-11 07:16:51 UTC
++++ content/ppapi_plugin/ppapi_blink_platform_impl.h
+@@ -12,7 +12,7 @@
+ #include "build/build_config.h"
+ #include "content/child/blink_platform_impl.h"
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ #include "components/services/font/public/cpp/font_loader.h"
+ #include "third_party/skia/include/core/SkRefCnt.h"
+ #endif
+@@ -39,11 +39,11 @@ class PpapiBlinkPlatformImpl : public BlinkPlatformImp
+ blink::WebThemeEngine* ThemeEngine() override;
+
+ private:
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC) || defined(OS_BSD)
+ std::unique_ptr<blink::WebSandboxSupport> sandbox_support_;
+ #endif
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ sk_sp<font_service::FontLoader> font_loader_;
+ #endif
+ };
diff --git a/devel/electron17/files/patch-content_ppapi__plugin_ppapi__plugin__main.cc b/devel/electron17/files/patch-content_ppapi__plugin_ppapi__plugin__main.cc
new file mode 100644
index 000000000000..764bee91f10c
--- /dev/null
+++ b/devel/electron17/files/patch-content_ppapi__plugin_ppapi__plugin__main.cc
@@ -0,0 +1,24 @@
+--- content/ppapi_plugin/ppapi_plugin_main.cc.orig 2022-05-11 07:16:51 UTC
++++ content/ppapi_plugin/ppapi_plugin_main.cc
+@@ -54,6 +54,12 @@
+ #include "gin/v8_initializer.h"
+ #endif
+
++#if defined(OS_OPENBSD)
++#include "content/public/common/sandbox_init.h"
++#include "sandbox/policy/openbsd/sandbox_openbsd.h"
++#include "sandbox/policy/sandbox_type.h"
++#endif
++
+ #if defined(OS_POSIX) && !defined(OS_ANDROID)
+ #include <stdlib.h>
+ #endif
+@@ -135,7 +141,7 @@ int PpapiPluginMain(MainFunctionParams parameters) {
+ gin::V8Initializer::LoadV8Snapshot();
+ #endif
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_OPENBSD)
+ sandbox::policy::SandboxLinux::GetInstance()->InitializeSandbox(
+ sandbox::policy::SandboxTypeFromCommandLine(command_line),
+ sandbox::policy::SandboxLinux::PreSandboxHook(),
diff --git a/devel/electron17/files/patch-content_public_browser_font__access__context.h b/devel/electron17/files/patch-content_public_browser_font__access__context.h
new file mode 100644
index 000000000000..852d5be3b61d
--- /dev/null
+++ b/devel/electron17/files/patch-content_public_browser_font__access__context.h
@@ -0,0 +1,11 @@
+--- content/public/browser/font_access_context.h.orig 2022-05-11 07:16:51 UTC
++++ content/public/browser/font_access_context.h
+@@ -11,7 +11,7 @@
+ #include "third_party/blink/public/mojom/font_access/font_access.mojom.h"
+
+ #if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) || \
+- defined(OS_MAC) || defined(OS_FUCHSIA)
++ defined(OS_MAC) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ #define PLATFORM_HAS_LOCAL_FONT_ENUMERATION_IMPL 1
+ #endif
+
diff --git a/devel/electron17/files/patch-content_public_browser_zygote__host_zygote__host__linux.h b/devel/electron17/files/patch-content_public_browser_zygote__host_zygote__host__linux.h
new file mode 100644
index 000000000000..229951e7797c
--- /dev/null
+++ b/devel/electron17/files/patch-content_public_browser_zygote__host_zygote__host__linux.h
@@ -0,0 +1,16 @@
+--- content/public/browser/zygote_host/zygote_host_linux.h.orig 2021-01-07 00:36:33 UTC
++++ content/public/browser/zygote_host/zygote_host_linux.h
+@@ -30,11 +30,13 @@ class ZygoteHost {
+ // after the first render has been forked.
+ virtual int GetRendererSandboxStatus() = 0;
+
++#if !defined(OS_BSD)
+ // Adjust the OOM score of the given renderer's PID. The allowed
+ // range for the score is [0, 1000], where higher values are more
+ // likely to be killed by the OOM killer.
+ virtual void AdjustRendererOOMScore(base::ProcessHandle process_handle,
+ int score) = 0;
++#endif
+ };
+
+ } // namespace content
diff --git a/devel/electron17/files/patch-content_public_common_common__param__traits__macros.h b/devel/electron17/files/patch-content_public_common_common__param__traits__macros.h
new file mode 100644
index 000000000000..2e4e0d17f3b5
--- /dev/null
+++ b/devel/electron17/files/patch-content_public_common_common__param__traits__macros.h
@@ -0,0 +1,11 @@
+--- content/public/common/common_param_traits_macros.h.orig 2022-05-11 07:16:51 UTC
++++ content/public/common/common_param_traits_macros.h
+@@ -127,7 +127,7 @@ IPC_STRUCT_TRAITS_BEGIN(blink::RendererPreferences)
+ IPC_STRUCT_TRAITS_MEMBER(accept_languages)
+ IPC_STRUCT_TRAITS_MEMBER(plugin_fullscreen_allowed)
+ IPC_STRUCT_TRAITS_MEMBER(caret_browsing_enabled)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ IPC_STRUCT_TRAITS_MEMBER(system_font_family_name)
+ #endif
+ #if defined(OS_WIN)
diff --git a/devel/electron17/files/patch-content_public_common_content__features.cc b/devel/electron17/files/patch-content_public_common_content__features.cc
new file mode 100644
index 000000000000..0c00e84c9361
--- /dev/null
+++ b/devel/electron17/files/patch-content_public_common_content__features.cc
@@ -0,0 +1,68 @@
+--- content/public/common/content_features.cc.orig 2022-05-11 07:16:51 UTC
++++ content/public/common/content_features.cc
+@@ -50,7 +50,7 @@ const base::Feature kAudioServiceOutOfProcess {
+ "AudioServiceOutOfProcess",
+ // TODO(crbug.com/1052397): Remove !IS_CHROMEOS_LACROS once lacros starts being
+ // built with OS_CHROMEOS instead of OS_LINUX.
+-#if defined(OS_WIN) || defined(OS_MAC) || \
++#if defined(OS_WIN) || defined(OS_MAC) || defined(OS_BSD) || \
+ (defined(OS_LINUX) && !BUILDFLAG(IS_CHROMEOS_LACROS))
+ base::FEATURE_ENABLED_BY_DEFAULT
+ #else
+@@ -62,7 +62,7 @@ const base::Feature kAudioServiceOutOfProcess {
+ // kAudioServiceOutOfProcess feature is enabled.
+ const base::Feature kAudioServiceSandbox {
+ "AudioServiceSandbox",
+-#if defined(OS_WIN) || defined(OS_MAC) || defined(OS_FUCHSIA)
++#if defined(OS_WIN) || defined(OS_MAC) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ base::FEATURE_ENABLED_BY_DEFAULT
+ #else
+ base::FEATURE_DISABLED_BY_DEFAULT
+@@ -973,7 +973,7 @@ const base::Feature kWebAssemblyBaseline{"WebAssemblyB
+ const base::Feature kWebAssemblyCodeProtection{
+ "WebAssemblyCodeProtection", base::FEATURE_DISABLED_BY_DEFAULT};
+
+-#if (defined(OS_LINUX) || defined(OS_CHROMEOS)) && defined(ARCH_CPU_X86_64)
++#if (defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)) && defined(ARCH_CPU_X86_64)
+ // Use memory protection keys in userspace (PKU) (if available) to protect code
+ // JITed for WebAssembly. Fall back to traditional memory protection if
+ // WebAssemblyCodeProtection is also enabled.
+@@ -1003,7 +1003,7 @@ const base::Feature kWebAssemblyTiering{"WebAssemblyTi
+ const base::Feature kWebAssemblyTrapHandler {
+ "WebAssemblyTrapHandler",
+ #if ((defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_WIN) || \
+- defined(OS_MAC)) && \
++ defined(OS_MAC) || defined(OS_BSD)) && \
+ defined(ARCH_CPU_X86_64)) || \
+ (defined(OS_MAC) && defined(ARCH_CPU_ARM64))
+ base::FEATURE_ENABLED_BY_DEFAULT
+@@ -1025,7 +1025,7 @@ const base::Feature kWebAuthCable {
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+ // If updating this, also update kWebAuthCableServerLink.
+-#if BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_LINUX)
++#if BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_LINUX) || defined(OS_BSD)
+ base::FEATURE_DISABLED_BY_DEFAULT
+ #else
+ base::FEATURE_ENABLED_BY_DEFAULT
+@@ -1093,7 +1093,11 @@ const base::Feature kWebUIReportOnlyTrustedTypes{
+
+ // Controls whether the WebUSB API is enabled:
+ // https://wicg.github.io/webusb
++#if defined(OS_BSD)
++const base::Feature kWebUsb{"WebUSB", base::FEATURE_DISABLED_BY_DEFAULT};
++#else
+ const base::Feature kWebUsb{"WebUSB", base::FEATURE_ENABLED_BY_DEFAULT};
++#endif
+
+ // Controls whether the WebXR Device API is enabled.
+ const base::Feature kWebXr{"WebXR", base::FEATURE_ENABLED_BY_DEFAULT};
+@@ -1193,7 +1197,7 @@ const base::Feature kRetryGetVideoCaptureDeviceInfos{
+
+ #endif // defined(OS_MAC)
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // If the JavaScript on a WebUI page has an error (such as an unhandled
+ // exception), report that error back the crash reporting infrastructure, same
+ // as we do for program crashes.
diff --git a/devel/electron17/files/patch-content_public_common_content__features.h b/devel/electron17/files/patch-content_public_common_content__features.h
new file mode 100644
index 000000000000..d5f777d6e3a8
--- /dev/null
+++ b/devel/electron17/files/patch-content_public_common_content__features.h
@@ -0,0 +1,20 @@
+--- content/public/common/content_features.h.orig 2022-05-11 07:16:51 UTC
++++ content/public/common/content_features.h
+@@ -248,7 +248,7 @@ CONTENT_EXPORT extern const base::Feature
+ CONTENT_EXPORT extern const base::Feature kWebAppWindowControlsOverlay;
+ CONTENT_EXPORT extern const base::Feature kWebAssemblyBaseline;
+ CONTENT_EXPORT extern const base::Feature kWebAssemblyCodeProtection;
+-#if (defined(OS_LINUX) || defined(OS_CHROMEOS)) && defined(ARCH_CPU_X86_64)
++#if (defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)) && defined(ARCH_CPU_X86_64)
+ CONTENT_EXPORT extern const base::Feature kWebAssemblyCodeProtectionPku;
+ #endif // (defined(OS_LINUX) || defined(OS_CHROMEOS)) &&
+ // defined(ARCH_CPU_X86_64)
+@@ -306,7 +306,7 @@ CONTENT_EXPORT extern const base::Feature kMacSyscallS
+ CONTENT_EXPORT extern const base::Feature kRetryGetVideoCaptureDeviceInfos;
+ #endif // defined(OS_MAC)
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ CONTENT_EXPORT extern const base::Feature kSendWebUIJavaScriptErrorReports;
+ CONTENT_EXPORT extern const char
+ kSendWebUIJavaScriptErrorReportsSendToProductionVariation[];
diff --git a/devel/electron17/files/patch-content_public_common_content__switches.cc b/devel/electron17/files/patch-content_public_common_content__switches.cc
new file mode 100644
index 000000000000..746d0f56a5b6
--- /dev/null
+++ b/devel/electron17/files/patch-content_public_common_content__switches.cc
@@ -0,0 +1,20 @@
+--- content/public/common/content_switches.cc.orig 2022-05-11 07:16:51 UTC
++++ content/public/common/content_switches.cc
+@@ -386,6 +386,8 @@ const char kEnableGpuMemoryBufferVideoFrames[] =
+ // builds.
+ const char kEnableLogging[] = "enable-logging";
+
++const char kDisableUnveil[] = "disable-unveil";
++
+ // Enables the type, downlinkMax attributes of the NetInfo API. Also, enables
+ // triggering of change attribute of the NetInfo API when there is a change in
+ // the connection type.
+@@ -1006,7 +1008,7 @@ const char kEnableAutomation[] = "enable-automation";
+
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ // Allows sending text-to-speech requests to speech-dispatcher, a common
+ // Linux speech service. Because it's buggy, the user must explicitly
+ // enable it so that visiting a random webpage can't cause instability.
diff --git a/devel/electron17/files/patch-content_public_common_content__switches.h b/devel/electron17/files/patch-content_public_common_content__switches.h
new file mode 100644
index 000000000000..4d1509a3059c
--- /dev/null
+++ b/devel/electron17/files/patch-content_public_common_content__switches.h
@@ -0,0 +1,19 @@
+--- content/public/common/content_switches.h.orig 2022-05-11 07:16:51 UTC
++++ content/public/common/content_switches.h
+@@ -114,6 +114,7 @@ CONTENT_EXPORT extern const char kEnableBlinkTestFeatu
+ CONTENT_EXPORT extern const char kEnableGpuMemoryBufferVideoFrames[];
+ CONTENT_EXPORT extern const char kEnableLCDText[];
+ CONTENT_EXPORT extern const char kEnableLogging[];
++CONTENT_EXPORT extern const char kDisableUnveil[];
+ CONTENT_EXPORT extern const char kEnableNetworkInformationDownlinkMax[];
+ CONTENT_EXPORT extern const char kEnableCanvas2DLayers[];
+ CONTENT_EXPORT extern const char kEnableCanvasContextLostInBackground[];
+@@ -276,7 +277,7 @@ CONTENT_EXPORT extern const char kRendererWaitForJavaD
+
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ CONTENT_EXPORT extern const char kEnableSpeechDispatcher[];
+ #endif
+
diff --git a/devel/electron17/files/patch-content_public_common_use__zoom__for__dsf__policy.cc b/devel/electron17/files/patch-content_public_common_use__zoom__for__dsf__policy.cc
new file mode 100644
index 000000000000..d5fa95abd3f8
--- /dev/null
+++ b/devel/electron17/files/patch-content_public_common_use__zoom__for__dsf__policy.cc
@@ -0,0 +1,11 @@
+--- content/public/common/use_zoom_for_dsf_policy.cc.orig 2022-05-11 07:16:51 UTC
++++ content/public/common/use_zoom_for_dsf_policy.cc
+@@ -26,7 +26,7 @@ const base::Feature kUseZoomForDsfEnabledByDefault{
+
+ bool IsUseZoomForDSFEnabledByDefault() {
+ #if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_FUCHSIA) || \
+- defined(OS_MAC)
++ defined(OS_MAC) || defined(OS_BSD)
+ return true;
+ #elif defined(OS_WIN) || defined(OS_ANDROID)
+ return base::FeatureList::IsEnabled(kUseZoomForDsfEnabledByDefault);
diff --git a/devel/electron17/files/patch-content_public_common_zygote_features.gni b/devel/electron17/files/patch-content_public_common_zygote_features.gni
new file mode 100644
index 000000000000..161c46f349a1
--- /dev/null
+++ b/devel/electron17/files/patch-content_public_common_zygote_features.gni
@@ -0,0 +1,8 @@
+--- content/public/common/zygote/features.gni.orig 2021-01-07 00:36:33 UTC
++++ content/public/common/zygote/features.gni
+@@ -2,4 +2,4 @@
+ # Use of this source code is governed by a BSD-style license that can be
+ # found in the LICENSE file.
+
+-use_zygote_handle = is_posix && !is_android && !is_mac
++use_zygote_handle = is_posix && !is_android && !is_mac && !is_bsd
diff --git a/devel/electron17/files/patch-content_renderer_render__process__impl.cc b/devel/electron17/files/patch-content_renderer_render__process__impl.cc
new file mode 100644
index 000000000000..544151cd000e
--- /dev/null
+++ b/devel/electron17/files/patch-content_renderer_render__process__impl.cc
@@ -0,0 +1,29 @@
+--- content/renderer/render_process_impl.cc.orig 2022-05-11 07:16:51 UTC
++++ content/renderer/render_process_impl.cc
+@@ -47,7 +47,7 @@
+ #if defined(OS_WIN)
+ #include "base/win/win_util.h"
+ #endif
+-#if (defined(OS_LINUX) || defined(OS_CHROMEOS)) && defined(ARCH_CPU_X86_64)
++#if (defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)) && defined(ARCH_CPU_X86_64)
+ #include "v8/include/v8-wasm-trap-handler-posix.h"
+ #endif
+
+@@ -146,7 +146,7 @@ RenderProcessImpl::RenderProcessImpl()
+ SetV8FlagIfNotFeature(features::kWebAssemblyCodeProtection,
+ "--no-wasm-write-protect-code-memory");
+
+-#if (defined(OS_LINUX) || defined(OS_CHROMEOS)) && defined(ARCH_CPU_X86_64)
++#if (defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)) && defined(ARCH_CPU_X86_64)
+ SetV8FlagIfFeature(features::kWebAssemblyCodeProtectionPku,
+ "--wasm-memory-protection-keys");
+ SetV8FlagIfNotFeature(features::kWebAssemblyCodeProtectionPku,
+@@ -240,7 +240,7 @@ RenderProcessImpl::RenderProcessImpl()
+ SetV8FlagIfFeature(features::kWebAssemblyDynamicTiering,
+ "--wasm-dynamic-tiering");
+
+-#if (defined(OS_LINUX) || defined(OS_CHROMEOS)) && defined(ARCH_CPU_X86_64)
++#if (defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)) && defined(ARCH_CPU_X86_64)
+ if (base::FeatureList::IsEnabled(features::kWebAssemblyTrapHandler)) {
+ if (command_line->HasSwitch(switches::kEnableCrashpad) ||
+ command_line->HasSwitch(switches::kEnableCrashReporter) ||
diff --git a/devel/electron17/files/patch-content_renderer_render__thread__impl.cc b/devel/electron17/files/patch-content_renderer_render__thread__impl.cc
new file mode 100644
index 000000000000..d85b1f993f57
--- /dev/null
+++ b/devel/electron17/files/patch-content_renderer_render__thread__impl.cc
@@ -0,0 +1,47 @@
+--- content/renderer/render_thread_impl.cc.orig 2022-05-13 07:19:54 UTC
++++ content/renderer/render_thread_impl.cc
+@@ -188,7 +188,7 @@
+
+ #if defined(OS_MAC)
+ #include <malloc/malloc.h>
+-#else
++#elif !defined(OS_OPENBSD)
+ #include <malloc.h>
+ #endif
+
+@@ -701,7 +701,7 @@ void RenderThreadImpl::Init() {
+ DCHECK(parsed_num_raster_threads) << string_value;
+ DCHECK_GT(num_raster_threads, 0);
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ categorized_worker_pool_->SetBackgroundingCallback(
+ main_thread_scheduler_->DefaultTaskRunner(),
+ base::BindOnce(
+@@ -724,7 +724,7 @@ void RenderThreadImpl::Init() {
+ base::DiscardableMemoryAllocator::SetInstance(
+ discardable_memory_allocator_.get());
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ if (base::FeatureList::IsEnabled(
+ blink::features::kBlinkCompositorUseDisplayThreadPriority)) {
+ render_message_filter()->SetThreadPriority(
+@@ -1057,7 +1057,7 @@ media::GpuVideoAcceleratorFactories* RenderThreadImpl:
+
+ const bool enable_video_decode_accelerator =
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ base::FeatureList::IsEnabled(media::kVaapiVideoDecodeLinux) &&
+ #else
+ !cmd_line->HasSwitch(switches::kDisableAcceleratedVideoDecode) &&
+@@ -1068,7 +1068,7 @@ media::GpuVideoAcceleratorFactories* RenderThreadImpl:
+
+ const bool enable_video_encode_accelerator =
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ base::FeatureList::IsEnabled(media::kVaapiVideoEncodeLinux) &&
+ #else
+ !cmd_line->HasSwitch(switches::kDisableAcceleratedVideoEncode) &&
diff --git a/devel/electron17/files/patch-content_renderer_renderer__blink__platform__impl.cc b/devel/electron17/files/patch-content_renderer_renderer__blink__platform__impl.cc
new file mode 100644
index 000000000000..51aa33c4eee4
--- /dev/null
+++ b/devel/electron17/files/patch-content_renderer_renderer__blink__platform__impl.cc
@@ -0,0 +1,48 @@
+--- content/renderer/renderer_blink_platform_impl.cc.orig 2022-05-13 07:19:54 UTC
++++ content/renderer/renderer_blink_platform_impl.cc
+@@ -108,7 +108,7 @@
+
+ #if defined(OS_MAC)
+ #include "content/child/child_process_sandbox_support_impl_mac.h"
+-#elif defined(OS_LINUX) || defined(OS_CHROMEOS)
++#elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ #include "content/child/child_process_sandbox_support_impl_linux.h"
+ #endif
+
+@@ -177,7 +177,7 @@ RendererBlinkPlatformImpl::RendererBlinkPlatformImpl(
+ main_thread_scheduler_(main_thread_scheduler) {
+ // RenderThread may not exist in some tests.
+ if (RenderThreadImpl::current()) {
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ mojo::PendingRemote<font_service::mojom::FontService> font_service;
+ RenderThreadImpl::current()->BindHostReceiver(
+ font_service.InitWithNewPipeAndPassReceiver());
+@@ -187,7 +187,7 @@ RendererBlinkPlatformImpl::RendererBlinkPlatformImpl(
+ #endif
+ }
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC) || defined(OS_BSD)
+ if (sandboxEnabled()) {
+ #if defined(OS_MAC)
+ sandbox_support_ = std::make_unique<WebSandboxSupportMac>();
+@@ -261,7 +261,8 @@ RendererBlinkPlatformImpl::WrapSharedURLLoaderFactory(
+ /*terminate_sync_load_event=*/nullptr);
+ }
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++// pledge
++#if (defined(OS_LINUX) || defined(OS_CHROMEOS)) && !defined(OS_BSD)
+ void RendererBlinkPlatformImpl::SetDisplayThreadPriority(
+ base::PlatformThreadId thread_id) {
+ if (RenderThreadImpl* render_thread = RenderThreadImpl::current()) {
+@@ -276,7 +277,7 @@ blink::BlameContext* RendererBlinkPlatformImpl::GetTop
+ }
+
+ blink::WebSandboxSupport* RendererBlinkPlatformImpl::GetSandboxSupport() {
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC) || defined(OS_BSD)
+ return sandbox_support_.get();
+ #else
+ // These platforms do not require sandbox support.
diff --git a/devel/electron17/files/patch-content_renderer_renderer__blink__platform__impl.h b/devel/electron17/files/patch-content_renderer_renderer__blink__platform__impl.h
new file mode 100644
index 000000000000..97e36057fbff
--- /dev/null
+++ b/devel/electron17/files/patch-content_renderer_renderer__blink__platform__impl.h
@@ -0,0 +1,29 @@
+--- content/renderer/renderer_blink_platform_impl.h.orig 2022-05-13 07:19:54 UTC
++++ content/renderer/renderer_blink_platform_impl.h
+@@ -29,7 +29,7 @@
+ #include "third_party/blink/public/mojom/cache_storage/cache_storage.mojom.h"
+ #include "third_party/blink/public/mojom/loader/code_cache.mojom.h"
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ #include "components/services/font/public/cpp/font_loader.h" // nogncheck
+ #include "third_party/skia/include/core/SkRefCnt.h" // nogncheck
+ #endif
+@@ -277,7 +277,7 @@ class CONTENT_EXPORT RendererBlinkPlatformImpl : publi
+ void Collect3DContextInformation(blink::Platform::GraphicsInfo* gl_info,
+ const gpu::GPUInfo& gpu_info) const;
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC) || defined(OS_BSD)
+ std::unique_ptr<blink::WebSandboxSupport> sandbox_support_;
+ #endif
+
+@@ -301,7 +301,7 @@ class CONTENT_EXPORT RendererBlinkPlatformImpl : publi
+ mojo::SharedRemote<blink::mojom::CodeCacheHost> code_cache_host_
+ GUARDED_BY(code_cache_host_lock_);
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ sk_sp<font_service::FontLoader> font_loader_;
+ #endif
+
diff --git a/devel/electron17/files/patch-content_renderer_renderer__main__platform__delegate__linux.cc b/devel/electron17/files/patch-content_renderer_renderer__main__platform__delegate__linux.cc
new file mode 100644
index 000000000000..450bbe5e9f19
--- /dev/null
+++ b/devel/electron17/files/patch-content_renderer_renderer__main__platform__delegate__linux.cc
@@ -0,0 +1,18 @@
+--- content/renderer/renderer_main_platform_delegate_linux.cc.orig 2022-05-11 07:16:51 UTC
++++ content/renderer/renderer_main_platform_delegate_linux.cc
+@@ -45,6 +45,7 @@ bool RendererMainPlatformDelegate::EnableSandbox() {
+ // any renderer has been started.
+ // Here, we test that the status of SeccompBpf in the renderer is consistent
+ // with what SandboxLinux::GetStatus() said we would do.
++#if !defined(OS_BSD)
+ auto* linux_sandbox = sandbox::policy::SandboxLinux::GetInstance();
+ if (linux_sandbox->GetStatus() & sandbox::policy::SandboxLinux::kSeccompBPF) {
+ CHECK(linux_sandbox->seccomp_bpf_started());
+@@ -66,6 +67,7 @@ bool RendererMainPlatformDelegate::EnableSandbox() {
+ CHECK_EQ(errno, EPERM);
+ }
+ #endif // __x86_64__
++#endif
+
+ return true;
+ }
diff --git a/devel/electron17/files/patch-content_shell_BUILD.gn b/devel/electron17/files/patch-content_shell_BUILD.gn
new file mode 100644
index 000000000000..066624b8efd0
--- /dev/null
+++ b/devel/electron17/files/patch-content_shell_BUILD.gn
@@ -0,0 +1,11 @@
+--- content/shell/BUILD.gn.orig 2022-05-11 07:16:51 UTC
++++ content/shell/BUILD.gn
+@@ -869,7 +869,7 @@ group("content_shell_crash_test") {
+ if (is_win) {
+ data_deps += [ "//build/win:copy_cdb_to_output" ]
+ }
+- if (is_posix) {
++ if (is_posix && !is_bsd) {
+ data_deps += [
+ "//third_party/breakpad:dump_syms",
+ "//third_party/breakpad:minidump_stackwalk",
diff --git a/devel/electron17/files/patch-content_shell_app_shell__main__delegate.cc b/devel/electron17/files/patch-content_shell_app_shell__main__delegate.cc
new file mode 100644
index 000000000000..b03fc6bce7f6
--- /dev/null
+++ b/devel/electron17/files/patch-content_shell_app_shell__main__delegate.cc
@@ -0,0 +1,11 @@
+--- content/shell/app/shell_main_delegate.cc.orig 2022-05-11 07:16:51 UTC
++++ content/shell/app/shell_main_delegate.cc
+@@ -211,7 +211,7 @@ void ShellMainDelegate::PreSandboxStartup() {
+ // Reporting for sub-processes will be initialized in ZygoteForked.
+ if (process_type != switches::kZygoteProcess) {
+ crash_reporter::InitializeCrashpad(process_type.empty(), process_type);
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ crash_reporter::SetFirstChanceExceptionHandler(
+ v8::TryHandleWebAssemblyTrapPosix);
+ #endif
diff --git a/devel/electron17/files/patch-content_shell_browser_shell__browser__main__parts.cc b/devel/electron17/files/patch-content_shell_browser_shell__browser__main__parts.cc
new file mode 100644
index 000000000000..36a7ea68b1ad
--- /dev/null
+++ b/devel/electron17/files/patch-content_shell_browser_shell__browser__main__parts.cc
@@ -0,0 +1,20 @@
+--- content/shell/browser/shell_browser_main_parts.cc.orig 2022-05-11 07:16:51 UTC
++++ content/shell/browser/shell_browser_main_parts.cc
+@@ -49,7 +49,7 @@
+ #include "net/base/network_change_notifier.h"
+ #endif
+
+-#if defined(USE_AURA) && (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
++#if defined(USE_AURA) && (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD))
+ #include "ui/base/ime/init/input_method_initializer.h"
+ #endif
+
+@@ -129,7 +129,7 @@ void ShellBrowserMainParts::PostCreateMainMessageLoop(
+ }
+
+ int ShellBrowserMainParts::PreEarlyInitialization() {
+-#if defined(USE_AURA) && (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
++#if defined(USE_AURA) && (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD))
+ ui::InitializeInputMethodForTesting();
+ #endif
+ #if defined(OS_ANDROID)
diff --git a/devel/electron17/files/patch-content_shell_browser_shell__paths.cc b/devel/electron17/files/patch-content_shell_browser_shell__paths.cc
new file mode 100644
index 000000000000..3ae6a1189014
--- /dev/null
+++ b/devel/electron17/files/patch-content_shell_browser_shell__paths.cc
@@ -0,0 +1,20 @@
+--- content/shell/browser/shell_paths.cc.orig 2022-05-11 07:16:51 UTC
++++ content/shell/browser/shell_paths.cc
+@@ -13,7 +13,7 @@
+
+ #if defined(OS_FUCHSIA)
+ #include "base/fuchsia/file_utils.h"
+-#elif defined(OS_LINUX) || defined(OS_CHROMEOS)
++#elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ #include "base/nix/xdg_util.h"
+ #endif
+
+@@ -25,7 +25,7 @@ bool GetDefaultUserDataDirectory(base::FilePath* resul
+ #if defined(OS_WIN)
+ CHECK(base::PathService::Get(base::DIR_LOCAL_APP_DATA, result));
+ *result = result->Append(std::wstring(L"content_shell"));
+-#elif defined(OS_LINUX) || defined(OS_CHROMEOS)
++#elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ std::unique_ptr<base::Environment> env(base::Environment::Create());
+ base::FilePath config_dir(base::nix::GetXDGDirectory(
+ env.get(), base::nix::kXdgConfigHomeEnvVar, base::nix::kDotConfigDir));
diff --git a/devel/electron17/files/patch-content_shell_utility_shell__content__utility__client.cc b/devel/electron17/files/patch-content_shell_utility_shell__content__utility__client.cc
new file mode 100644
index 000000000000..6965d326d27e
--- /dev/null
+++ b/devel/electron17/files/patch-content_shell_utility_shell__content__utility__client.cc
@@ -0,0 +1,20 @@
+--- content/shell/utility/shell_content_utility_client.cc.orig 2022-05-11 07:16:51 UTC
++++ content/shell/utility/shell_content_utility_client.cc
+@@ -33,7 +33,7 @@
+ #include "sandbox/policy/sandbox.h"
+ #include "services/test/echo/echo_service.h"
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ #include "content/test/sandbox_status_service.h"
+ #endif
+
+@@ -143,7 +143,7 @@ void ShellContentUtilityClient::ExposeInterfacesToBrow
+ binders->Add<mojom::PowerMonitorTest>(
+ base::BindRepeating(&PowerMonitorTestImpl::MakeSelfOwnedReceiver),
+ base::ThreadTaskRunnerHandle::Get());
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ if (register_sandbox_status_helper_) {
+ binders->Add<content::mojom::SandboxStatusService>(
+ base::BindRepeating(
diff --git a/devel/electron17/files/patch-content_test_BUILD.gn b/devel/electron17/files/patch-content_test_BUILD.gn
new file mode 100644
index 000000000000..c0188b957e51
--- /dev/null
+++ b/devel/electron17/files/patch-content_test_BUILD.gn
@@ -0,0 +1,20 @@
+--- content/test/BUILD.gn.orig 2022-05-11 07:16:51 UTC
++++ content/test/BUILD.gn
+@@ -1878,7 +1878,7 @@ static_library("run_all_unittests") {
+ ":test_support",
+ "//base/test:test_support",
+ ]
+- if (is_linux || is_chromeos) {
++ if ((is_linux || is_chromeos) && !is_bsd) {
+ deps += [ "//content/common:set_process_title_linux" ]
+ }
+ }
+@@ -2806,7 +2806,7 @@ test("content_unittests") {
+ deps += [ "//third_party/boringssl" ]
+ }
+
+- if (is_linux || is_chromeos) {
++ if ((is_linux || is_chromeos) && !is_bsd) {
+ sources += [ "../common/set_process_title_linux_unittest.cc" ]
+ deps += [ "//content/common:set_process_title_linux" ]
+ }
diff --git a/devel/electron17/files/patch-content_utility_services.cc b/devel/electron17/files/patch-content_utility_services.cc
new file mode 100644
index 000000000000..4a406132ee4e
--- /dev/null
+++ b/devel/electron17/files/patch-content_utility_services.cc
@@ -0,0 +1,20 @@
+--- content/utility/services.cc.orig 2022-05-11 07:16:51 UTC
++++ content/utility/services.cc
+@@ -68,7 +68,7 @@
+ extern sandbox::TargetServices* g_utility_target_services;
+ #endif // defined(OS_WIN)
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ #include "sandbox/linux/services/libc_interceptor.h"
+ #include "sandbox/policy/mojom/sandbox.mojom.h"
+ #include "sandbox/policy/sandbox_type.h"
+@@ -206,7 +206,7 @@ auto RunAudio(mojo::PendingReceiver<audio::mojom::Audi
+ << "task_policy_set TASK_QOS_POLICY";
+ #endif
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ auto* command_line = base::CommandLine::ForCurrentProcess();
+ if (sandbox::policy::SandboxTypeFromCommandLine(*command_line) ==
+ sandbox::mojom::Sandbox::kNoSandbox) {
diff --git a/devel/electron17/files/patch-content_utility_speech_speech__recognition__sandbox__hook__linux.cc b/devel/electron17/files/patch-content_utility_speech_speech__recognition__sandbox__hook__linux.cc
new file mode 100644
index 000000000000..586f1d1df1cf
--- /dev/null
+++ b/devel/electron17/files/patch-content_utility_speech_speech__recognition__sandbox__hook__linux.cc
@@ -0,0 +1,37 @@
+--- content/utility/speech/speech_recognition_sandbox_hook_linux.cc.orig 2022-05-11 07:00:39 UTC
++++ content/utility/speech/speech_recognition_sandbox_hook_linux.cc
+@@ -12,11 +12,14 @@
+ #include "sandbox/linux/syscall_broker/broker_command.h"
+ #include "sandbox/linux/syscall_broker/broker_file_permission.h"
+
++#if !defined(OS_BSD)
+ using sandbox::syscall_broker::BrokerFilePermission;
+ using sandbox::syscall_broker::MakeBrokerCommandSet;
++#endif
+
+ namespace speech {
+
++#if !defined(OS_BSD)
+ namespace {
+
+ // Gets the file permissions required by the Speech On-Device API (SODA).
+@@ -50,9 +53,11 @@ std::vector<BrokerFilePermission> GetSodaFilePermissio
+ }
+
+ } // namespace
++#endif
+
+ bool SpeechRecognitionPreSandboxHook(
+ sandbox::policy::SandboxLinux::Options options) {
++#if !defined(OS_BSD)
+ #if BUILDFLAG(ENABLE_SODA)
+ base::FilePath test_binary_path = GetSodaTestBinaryPath();
+ DVLOG(0) << "SODA test binary path: " << test_binary_path.value().c_str();
+@@ -77,6 +82,7 @@ bool SpeechRecognitionPreSandboxHook(
+ sandbox::policy::SandboxLinux::PreSandboxHook(),
+ options);
+ instance->EngageNamespaceSandboxIfPossible();
++#endif
+
+ return true;
+ }
diff --git a/devel/electron17/files/patch-content_utility_speech_speech__recognition__sandbox__hook__linux.h b/devel/electron17/files/patch-content_utility_speech_speech__recognition__sandbox__hook__linux.h
new file mode 100644
index 000000000000..39eb88eb990a
--- /dev/null
+++ b/devel/electron17/files/patch-content_utility_speech_speech__recognition__sandbox__hook__linux.h
@@ -0,0 +1,14 @@
+--- content/utility/speech/speech_recognition_sandbox_hook_linux.h.orig 2022-05-11 07:00:39 UTC
++++ content/utility/speech/speech_recognition_sandbox_hook_linux.h
+@@ -5,7 +5,11 @@
+ #ifndef CONTENT_UTILITY_SPEECH_SPEECH_RECOGNITION_SANDBOX_HOOK_LINUX_H_
+ #define CONTENT_UTILITY_SPEECH_SPEECH_RECOGNITION_SANDBOX_HOOK_LINUX_H_
+
++#if defined(OS_BSD)
++#include "sandbox/policy/openbsd/sandbox_openbsd.h"
++#else
+ #include "sandbox/policy/linux/sandbox_linux.h"
++#endif
+
+ namespace speech {
+
diff --git a/devel/electron17/files/patch-content_utility_utility__blink__platform__with__sandbox__support__impl.cc b/devel/electron17/files/patch-content_utility_utility__blink__platform__with__sandbox__support__impl.cc
new file mode 100644
index 000000000000..828fdfe71152
--- /dev/null
+++ b/devel/electron17/files/patch-content_utility_utility__blink__platform__with__sandbox__support__impl.cc
@@ -0,0 +1,29 @@
+--- content/utility/utility_blink_platform_with_sandbox_support_impl.cc.orig 2021-01-07 00:36:34 UTC
++++ content/utility/utility_blink_platform_with_sandbox_support_impl.cc
+@@ -9,7 +9,7 @@
+
+ #if defined(OS_MAC)
+ #include "content/child/child_process_sandbox_support_impl_mac.h"
+-#elif defined(OS_LINUX) || defined(OS_CHROMEOS)
++#elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ #include "content/child/child_process_sandbox_support_impl_linux.h"
+ #endif
+
+@@ -17,7 +17,7 @@ namespace content {
+
+ UtilityBlinkPlatformWithSandboxSupportImpl::
+ UtilityBlinkPlatformWithSandboxSupportImpl() {
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ mojo::PendingRemote<font_service::mojom::FontService> font_service;
+ UtilityThread::Get()->BindHostReceiver(
+ font_service.InitWithNewPipeAndPassReceiver());
+@@ -34,7 +34,7 @@ UtilityBlinkPlatformWithSandboxSupportImpl::
+
+ blink::WebSandboxSupport*
+ UtilityBlinkPlatformWithSandboxSupportImpl::GetSandboxSupport() {
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC) || defined(OS_BSD)
+ return sandbox_support_.get();
+ #else
+ return nullptr;
diff --git a/devel/electron17/files/patch-content_utility_utility__blink__platform__with__sandbox__support__impl.h b/devel/electron17/files/patch-content_utility_utility__blink__platform__with__sandbox__support__impl.h
new file mode 100644
index 000000000000..6d048151e44f
--- /dev/null
+++ b/devel/electron17/files/patch-content_utility_utility__blink__platform__with__sandbox__support__impl.h
@@ -0,0 +1,24 @@
+--- content/utility/utility_blink_platform_with_sandbox_support_impl.h.orig 2022-05-11 07:16:51 UTC
++++ content/utility/utility_blink_platform_with_sandbox_support_impl.h
+@@ -10,7 +10,7 @@
+ #include "build/build_config.h"
+ #include "third_party/blink/public/platform/platform.h"
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ #include "components/services/font/public/cpp/font_loader.h" // nogncheck
+ #include "third_party/skia/include/core/SkRefCnt.h" // nogncheck
+ #endif
+@@ -38,10 +38,10 @@ class UtilityBlinkPlatformWithSandboxSupportImpl : pub
+ blink::WebSandboxSupport* GetSandboxSupport() override;
+
+ private:
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC) || defined(OS_BSD)
+ std::unique_ptr<blink::WebSandboxSupport> sandbox_support_;
+ #endif
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ sk_sp<font_service::FontLoader> font_loader_;
+ #endif
+ };
diff --git a/devel/electron17/files/patch-content_utility_utility__main.cc b/devel/electron17/files/patch-content_utility_utility__main.cc
new file mode 100644
index 000000000000..7f6bff2cb261
--- /dev/null
+++ b/devel/electron17/files/patch-content_utility_utility__main.cc
@@ -0,0 +1,55 @@
+--- content/utility/utility_main.cc.orig 2022-05-11 07:16:51 UTC
++++ content/utility/utility_main.cc
+@@ -31,16 +31,22 @@
+ #include "third_party/icu/source/common/unicode/unistr.h"
+ #include "third_party/icu/source/i18n/unicode/timezone.h"
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ #include "content/utility/speech/speech_recognition_sandbox_hook_linux.h"
+ #if BUILDFLAG(ENABLE_PRINTING)
+ #include "printing/sandbox/print_backend_sandbox_hook_linux.h"
+ #endif
++#if !defined(OS_BSD)
+ #include "sandbox/policy/linux/sandbox_linux.h"
++#endif
+ #include "services/audio/audio_sandbox_hook_linux.h"
+ #include "services/network/network_sandbox_hook_linux.h"
+ #endif
+
++#if defined(OS_BSD)
++#include "sandbox/policy/openbsd/sandbox_openbsd.h"
++#endif
++
+ #if BUILDFLAG(IS_CHROMEOS_ASH)
+ #include "ash/services/ime/ime_sandbox_hook.h"
+ #include "chromeos/assistant/buildflags.h"
+@@ -121,7 +127,7 @@ int UtilityMain(MainFunctionParams parameters) {
+ }
+ }
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // Initializes the sandbox before any threads are created.
+ // TODO(jorgelo): move this after GTK initialization when we enable a strict
+ // Seccomp-BPF policy.
+@@ -165,6 +171,7 @@ int UtilityMain(MainFunctionParams parameters) {
+ default:
+ break;
+ }
++#if !defined(OS_BSD)
+ if (parameters.zygote_child || !pre_sandbox_hook.is_null()) {
+ sandbox::policy::SandboxLinux::Options sandbox_options;
+ #if BUILDFLAG(IS_CHROMEOS_ASH)
+@@ -180,6 +187,11 @@ int UtilityMain(MainFunctionParams parameters) {
+ sandbox::policy::Sandbox::Initialize(
+ sandbox_type, std::move(pre_sandbox_hook), sandbox_options);
+ }
++#else
++ sandbox::policy::Sandbox::Initialize(
++ sandbox_type, std::move(pre_sandbox_hook),
++ sandbox::policy::SandboxLinux::Options());
++#endif
+ #elif defined(OS_WIN)
+ g_utility_target_services = parameters.sandbox_info->target_services;
+ #endif
diff --git a/devel/electron17/files/patch-content_zygote_BUILD.gn b/devel/electron17/files/patch-content_zygote_BUILD.gn
new file mode 100644
index 000000000000..6a0640f7306f
--- /dev/null
+++ b/devel/electron17/files/patch-content_zygote_BUILD.gn
@@ -0,0 +1,11 @@
+--- content/zygote/BUILD.gn.orig 2022-05-11 07:00:39 UTC
++++ content/zygote/BUILD.gn
+@@ -5,7 +5,7 @@
+ import("//build/config/nacl/config.gni")
+ import("//content/public/common/zygote/features.gni")
+
+-if (is_linux || is_chromeos) {
++if ((is_linux || is_chromeos) && !is_bsd) {
+ source_set("zygote") {
+ sources = [
+ "zygote_linux.cc",
diff --git a/devel/electron17/files/patch-content_zygote_zygote__linux.cc b/devel/electron17/files/patch-content_zygote_zygote__linux.cc
new file mode 100644
index 000000000000..54ba600d13c2
--- /dev/null
+++ b/devel/electron17/files/patch-content_zygote_zygote__linux.cc
@@ -0,0 +1,15 @@
+--- content/zygote/zygote_linux.cc.orig 2022-05-11 07:16:51 UTC
++++ content/zygote/zygote_linux.cc
+@@ -1,6 +1,7 @@
+ // Copyright (c) 2012 The Chromium Authors. All rights reserved.
+ // Use of this source code is governed by a BSD-style license that can be
+ // found in the LICENSE file.
++#if 0
+
+ #include "content/zygote/zygote_linux.h"
+
+@@ -650,3 +651,4 @@ bool Zygote::HandleGetSandboxStatus(int fd, base::Pick
+ }
+
+ } // namespace content
++#endif
diff --git a/devel/electron17/files/patch-content_zygote_zygote__main__linux.cc b/devel/electron17/files/patch-content_zygote_zygote__main__linux.cc
new file mode 100644
index 000000000000..224d6f22b7c0
--- /dev/null
+++ b/devel/electron17/files/patch-content_zygote_zygote__main__linux.cc
@@ -0,0 +1,64 @@
+--- content/zygote/zygote_main_linux.cc.orig 2022-05-11 07:16:51 UTC
++++ content/zygote/zygote_main_linux.cc
+@@ -11,7 +11,9 @@
+ #include <stddef.h>
+ #include <stdint.h>
+ #include <string.h>
++#if !defined(OS_BSD)
+ #include <sys/prctl.h>
++#endif
+ #include <sys/socket.h>
+ #include <sys/types.h>
+ #include <unistd.h>
+@@ -40,7 +42,9 @@
+ #include "sandbox/linux/services/thread_helpers.h"
+ #include "sandbox/linux/suid/client/setuid_sandbox_client.h"
+ #include "sandbox/policy/linux/sandbox_debug_handling_linux.h"
++#if !defined(OS_BSD)
+ #include "sandbox/policy/linux/sandbox_linux.h"
++#endif
+ #include "sandbox/policy/sandbox.h"
+ #include "sandbox/policy/switches.h"
+ #include "third_party/icu/source/i18n/unicode/timezone.h"
+@@ -49,6 +53,7 @@ namespace content {
+
+ namespace {
+
++#if !defined(OS_BSD)
+ void CloseFds(const std::vector<int>& fds) {
+ for (const auto& it : fds) {
+ PCHECK(0 == IGNORE_EINTR(close(it)));
+@@ -66,9 +71,11 @@ base::OnceClosure ClosureFromTwoClosures(base::OnceClo
+ },
+ std::move(one), std::move(two));
+ }
++#endif
+
+ } // namespace
+
++#if !defined(OS_BSD)
+ // This function triggers the static and lazy construction of objects that need
+ // to be created before imposing the sandbox.
+ static void ZygotePreSandboxInit() {
+@@ -173,9 +180,11 @@ static void EnterLayerOneSandbox(sandbox::policy::Sand
+ CHECK(!using_layer1_sandbox);
+ }
+ }
++#endif
+
+ bool ZygoteMain(
+ std::vector<std::unique_ptr<ZygoteForkDelegate>> fork_delegates) {
++#if !defined(OS_BSD)
+ sandbox::SetAmZygoteOrRenderer(true, GetSandboxFD());
+
+ auto* linux_sandbox = sandbox::policy::SandboxLinux::GetInstance();
+@@ -240,6 +249,9 @@ bool ZygoteMain(
+
+ // This function call can return multiple times, once per fork().
+ return zygote.ProcessRequests();
++#else
++ return false;
++#endif
+ }
+
+ } // namespace content
diff --git a/devel/electron17/files/patch-device_bluetooth_cast__bluetooth.gni b/devel/electron17/files/patch-device_bluetooth_cast__bluetooth.gni
new file mode 100644
index 000000000000..cbf84842caba
--- /dev/null
+++ b/devel/electron17/files/patch-device_bluetooth_cast__bluetooth.gni
@@ -0,0 +1,9 @@
+--- device/bluetooth/cast_bluetooth.gni.orig 2021-11-19 04:25:17 UTC
++++ device/bluetooth/cast_bluetooth.gni
+@@ -2,5 +2,5 @@ import("//build/config/features.gni")
+
+ declare_args() {
+ force_cast_bluetooth = false
+- use_bluez = use_dbus
++ use_bluez = use_dbus && !is_bsd
+ }
diff --git a/devel/electron17/files/patch-device_fido_features.cc b/devel/electron17/files/patch-device_fido_features.cc
new file mode 100644
index 000000000000..b27cbcdce6f1
--- /dev/null
+++ b/devel/electron17/files/patch-device_fido_features.cc
@@ -0,0 +1,20 @@
+--- device/fido/features.cc.orig 2022-05-11 07:16:51 UTC
++++ device/fido/features.cc
+@@ -26,7 +26,7 @@ extern const base::Feature kWebAuthCableServerLink {
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+ // If updating this, also update kWebAuthCable.
+-#if BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_LINUX)
++#if BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_LINUX) || defined(OS_BSD)
+ base::FEATURE_DISABLED_BY_DEFAULT
+ #else
+ base::FEATURE_ENABLED_BY_DEFAULT
+@@ -38,7 +38,7 @@ extern const base::Feature kWebAuthCableSecondFactor {
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+ // If updating this, also update kWebAuthCableServerLink.
+-#if BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_LINUX)
++#if BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_LINUX) || defined(OS_BSD)
+ base::FEATURE_DISABLED_BY_DEFAULT
+ #else
+ base::FEATURE_ENABLED_BY_DEFAULT
diff --git a/devel/electron17/files/patch-device_gamepad_gamepad__provider.cc b/devel/electron17/files/patch-device_gamepad_gamepad__provider.cc
new file mode 100644
index 000000000000..11abbbc3083c
--- /dev/null
+++ b/devel/electron17/files/patch-device_gamepad_gamepad__provider.cc
@@ -0,0 +1,11 @@
+--- device/gamepad/gamepad_provider.cc.orig 2021-11-19 04:25:17 UTC
++++ device/gamepad/gamepad_provider.cc
+@@ -216,7 +216,7 @@ void GamepadProvider::Initialize(std::unique_ptr<Gamep
+
+ if (!polling_thread_)
+ polling_thread_ = std::make_unique<base::Thread>("Gamepad polling thread");
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // On Linux, the data fetcher needs to watch file descriptors, so the message
+ // loop needs to be a libevent loop.
+ const base::MessagePumpType kMessageLoopType = base::MessagePumpType::IO;
diff --git a/devel/electron17/files/patch-device_gamepad_hid__writer__linux.cc b/devel/electron17/files/patch-device_gamepad_hid__writer__linux.cc
new file mode 100644
index 000000000000..930936405734
--- /dev/null
+++ b/devel/electron17/files/patch-device_gamepad_hid__writer__linux.cc
@@ -0,0 +1,11 @@
+--- device/gamepad/hid_writer_linux.cc.orig 2022-05-11 07:16:51 UTC
++++ device/gamepad/hid_writer_linux.cc
+@@ -2,6 +2,8 @@
+ // Use of this source code is governed by a BSD-style license that can be
+ // found in the LICENSE file.
+
++#include <unistd.h>
++
+ #include "device/gamepad/hid_writer_linux.h"
+
+ #include "base/posix/eintr_wrapper.h"
diff --git a/devel/electron17/files/patch-electron_BUILD.gn b/devel/electron17/files/patch-electron_BUILD.gn
new file mode 100644
index 000000000000..e50105a1e303
--- /dev/null
+++ b/devel/electron17/files/patch-electron_BUILD.gn
@@ -0,0 +1,71 @@
+--- electron/BUILD.gn.orig 2022-05-11 15:32:29 UTC
++++ electron/BUILD.gn
+@@ -435,7 +435,7 @@ source_set("electron_lib") {
+ defines += [ "GDK_DISABLE_DEPRECATION_WARNINGS" ]
+ }
+
+- if (!is_mas_build) {
++ if (!is_mas_build && !is_bsd) {
+ deps += [
+ "//components/crash/core/app",
+ "//components/crash/core/browser",
+@@ -477,6 +477,10 @@ source_set("electron_lib") {
+ ]
+ }
+
++ if (is_bsd) {
++ deps -= [ "//components/crash/content/browser" ]
++ }
++
+ if (is_mac) {
+ deps += [
+ "//components/remote_cocoa/app_shim",
+@@ -531,6 +535,12 @@ source_set("electron_lib") {
+ cflags_objcc = [ "-fobjc-weak" ]
+ }
+ }
++ if (is_bsd) {
++ sources -= [
++ "shell/common/crash_keys.cc",
++ "shell/common/crash_keys.h",
++ ]
++ }
+ if (is_linux) {
+ libs = [ "xshmfence" ]
+ deps += [
+@@ -1170,7 +1180,7 @@ if (is_mac) {
+ ":electron_app_manifest",
+ ":electron_lib",
+ ":packed_resources",
+- "//components/crash/core/app",
++ # "//components/crash/core/app",
+ "//content:sandbox_helper_win",
+ "//electron/buildflags",
+ "//ui/strings",
+@@ -1196,7 +1206,7 @@ if (is_mac) {
+ public_deps = [ "//tools/v8_context_snapshot:v8_context_snapshot" ]
+ }
+
+- if (is_linux) {
++ if (is_linux && !is_bsd) {
+ data_deps += [ "//components/crash/core/app:chrome_crashpad_handler" ]
+ }
+
+@@ -1264,7 +1274,7 @@ if (is_mac) {
+ configs += [ "//build/config/gcc:rpath_for_built_shared_libraries" ]
+ }
+
+- if (is_linux) {
++ if (is_linux && !is_bsd) {
+ deps += [ "//sandbox/linux:chrome_sandbox" ]
+ }
+ }
+@@ -1400,7 +1410,7 @@ dist_zip("electron_dist_zip") {
+ ":electron_version",
+ ":licenses",
+ ]
+- if (is_linux) {
++ if (is_linux && !is_bsd) {
+ data_deps += [ "//sandbox/linux:chrome_sandbox" ]
+ }
+ deps = data_deps
diff --git a/devel/electron17/files/patch-electron_default__app_default__app.ts b/devel/electron17/files/patch-electron_default__app_default__app.ts
new file mode 100644
index 000000000000..9111eb63ce5c
--- /dev/null
+++ b/devel/electron17/files/patch-electron_default__app_default__app.ts
@@ -0,0 +1,11 @@
+--- electron/default_app/default_app.ts.orig 2021-11-08 18:41:28 UTC
++++ electron/default_app/default_app.ts
+@@ -58,7 +58,7 @@ async function createWindow (backgroundColor?: string)
+ show: false
+ };
+
+- if (process.platform === 'linux') {
++ if (process.platform === 'linux' || process.platform === 'freebsd') {
+ options.icon = path.join(__dirname, 'icon.png');
+ }
+
diff --git a/devel/electron17/files/patch-electron_filenames.gni b/devel/electron17/files/patch-electron_filenames.gni
new file mode 100644
index 000000000000..6411064b64f4
--- /dev/null
+++ b/devel/electron17/files/patch-electron_filenames.gni
@@ -0,0 +1,13 @@
+--- electron/filenames.gni.orig 2022-05-11 15:32:29 UTC
++++ electron/filenames.gni
+@@ -238,8 +238,8 @@ filenames = {
+ "shell/app/command_line_args.h",
+ "shell/app/electron_content_client.cc",
+ "shell/app/electron_content_client.h",
+- "shell/app/electron_crash_reporter_client.cc",
+- "shell/app/electron_crash_reporter_client.h",
++ # "shell/app/electron_crash_reporter_client.cc",
++ # "shell/app/electron_crash_reporter_client.h",
+ "shell/app/electron_main_delegate.cc",
+ "shell/app/electron_main_delegate.h",
+ "shell/app/uv_task_runner.cc",
diff --git a/devel/electron17/files/patch-electron_lib_browser_api_app.ts b/devel/electron17/files/patch-electron_lib_browser_api_app.ts
new file mode 100644
index 000000000000..e3b4f07063db
--- /dev/null
+++ b/devel/electron17/files/patch-electron_lib_browser_api_app.ts
@@ -0,0 +1,11 @@
+--- electron/lib/browser/api/app.ts.orig 2021-11-15 23:45:07 UTC
++++ electron/lib/browser/api/app.ts
+@@ -67,7 +67,7 @@ if (process.platform === 'darwin') {
+ app.dock!.getMenu = () => dockMenu;
+ }
+
+-if (process.platform === 'linux') {
++if (process.platform === 'linux' || process.platform === 'freebsd') {
+ const patternVmRSS = /^VmRSS:\s*(\d+) kB$/m;
+ const patternVmHWM = /^VmHWM:\s*(\d+) kB$/m;
+
diff --git a/devel/electron17/files/patch-electron_lib_browser_api_dialog.ts b/devel/electron17/files/patch-electron_lib_browser_api_dialog.ts
new file mode 100644
index 000000000000..ce8169ee51bf
--- /dev/null
+++ b/devel/electron17/files/patch-electron_lib_browser_api_dialog.ts
@@ -0,0 +1,11 @@
+--- electron/lib/browser/api/dialog.ts.orig 2021-11-15 23:45:07 UTC
++++ electron/lib/browser/api/dialog.ts
+@@ -40,7 +40,7 @@ const normalizeAccessKey = (text: string) => {
+ // existing single underscores with a second underscore, replace double
+ // ampersands with a single ampersand, and replace a single ampersand with
+ // a single underscore
+- if (process.platform === 'linux') {
++ if (process.platform === 'linux' || process.platform === 'freebsd') {
+ return text.replace(/_/g, '__').replace(/&(.?)/g, (match, after) => {
+ if (after === '&') return after;
+ return `_${after}`;
diff --git a/devel/electron17/files/patch-electron_lib_browser_api_menu-item-roles.ts b/devel/electron17/files/patch-electron_lib_browser_api_menu-item-roles.ts
new file mode 100644
index 000000000000..3d2986644290
--- /dev/null
+++ b/devel/electron17/files/patch-electron_lib_browser_api_menu-item-roles.ts
@@ -0,0 +1,11 @@
+--- electron/lib/browser/api/menu-item-roles.ts.orig 2021-01-25 12:14:34 UTC
++++ electron/lib/browser/api/menu-item-roles.ts
+@@ -2,7 +2,7 @@ import { app, BrowserWindow, WebContents, MenuItemCons
+
+ const isMac = process.platform === 'darwin';
+ const isWindows = process.platform === 'win32';
+-const isLinux = process.platform === 'linux';
++const isLinux = (process.platform === 'linux' || process.platform === 'freebsd');
+
+ type RoleId = 'about' | 'close' | 'copy' | 'cut' | 'delete' | 'forcereload' | 'front' | 'help' | 'hide' | 'hideothers' | 'minimize' |
+ 'paste' | 'pasteandmatchstyle' | 'quit' | 'redo' | 'reload' | 'resetzoom' | 'selectall' | 'services' | 'recentdocuments' | 'clearrecentdocuments' | 'startspeaking' | 'stopspeaking' |
diff --git a/devel/electron17/files/patch-electron_lib_browser_api_power-monitor.ts b/devel/electron17/files/patch-electron_lib_browser_api_power-monitor.ts
new file mode 100644
index 000000000000..fc4b14ab7b32
--- /dev/null
+++ b/devel/electron17/files/patch-electron_lib_browser_api_power-monitor.ts
@@ -0,0 +1,11 @@
+--- electron/lib/browser/api/power-monitor.ts.orig 2021-04-20 23:32:33 UTC
++++ electron/lib/browser/api/power-monitor.ts
+@@ -18,7 +18,7 @@ class PowerMonitor extends EventEmitter {
+ const pm = createPowerMonitor();
+ pm.emit = this.emit.bind(this);
+
+- if (process.platform === 'linux') {
++ if (process.platform === 'linux' || process.platform === 'freebsd') {
+ // On Linux, we inhibit shutdown in order to give the app a chance to
+ // decide whether or not it wants to prevent the shutdown. We don't
+ // inhibit the shutdown event unless there's a listener for it. This
diff --git a/devel/electron17/files/patch-electron_lib_browser_init.ts b/devel/electron17/files/patch-electron_lib_browser_init.ts
new file mode 100644
index 000000000000..140c930554e9
--- /dev/null
+++ b/devel/electron17/files/patch-electron_lib_browser_init.ts
@@ -0,0 +1,11 @@
+--- electron/lib/browser/init.ts.orig 2021-11-15 23:45:07 UTC
++++ electron/lib/browser/init.ts
+@@ -150,7 +150,7 @@ const mainStartupScript = packageJson.main || 'index.j
+ const KNOWN_XDG_DESKTOP_VALUES = ['Pantheon', 'Unity:Unity7', 'pop:GNOME'];
+
+ function currentPlatformSupportsAppIndicator () {
+- if (process.platform !== 'linux') return false;
++ if (process.platform !== 'linux' && process.platform !== 'freebsd') return false;
+ const currentDesktop = process.env.XDG_CURRENT_DESKTOP;
+
+ if (!currentDesktop) return false;
diff --git a/devel/electron17/files/patch-electron_lib_browser_rpc-server.ts b/devel/electron17/files/patch-electron_lib_browser_rpc-server.ts
new file mode 100644
index 000000000000..2e2fca45dfa6
--- /dev/null
+++ b/devel/electron17/files/patch-electron_lib_browser_rpc-server.ts
@@ -0,0 +1,11 @@
+--- electron/lib/browser/rpc-server.ts.orig 2022-05-11 15:32:29 UTC
++++ electron/lib/browser/rpc-server.ts
+@@ -26,7 +26,7 @@ const allowedClipboardMethods = (() => {
+ switch (process.platform) {
+ case 'darwin':
+ return new Set(['readFindText', 'writeFindText']);
+- case 'linux':
++ case 'linux': case 'freebsd':
+ return new Set(Object.keys(clipboard));
+ default:
+ return new Set();
diff --git a/devel/electron17/files/patch-electron_lib_common_api_clipboard.ts b/devel/electron17/files/patch-electron_lib_common_api_clipboard.ts
new file mode 100644
index 000000000000..6fa93e1fb4b1
--- /dev/null
+++ b/devel/electron17/files/patch-electron_lib_common_api_clipboard.ts
@@ -0,0 +1,11 @@
+--- electron/lib/common/api/clipboard.ts.orig 2021-12-03 01:46:05 UTC
++++ electron/lib/common/api/clipboard.ts
+@@ -11,7 +11,7 @@ if (process.type === 'renderer') {
+ return (...args: any[]) => ipcRendererUtils.invokeSync(IPC_MESSAGES.BROWSER_CLIPBOARD_SYNC, method, ...args);
+ };
+
+- if (process.platform === 'linux') {
++ if (process.platform === 'linux' || process.platform === 'freebsd') {
+ // On Linux we could not access clipboard in renderer process.
+ for (const method of Object.keys(clipboard) as (keyof Electron.Clipboard)[]) {
+ clipboard[method] = makeRemoteMethod(method);
diff --git a/devel/electron17/files/patch-electron_script_lib_config.py b/devel/electron17/files/patch-electron_script_lib_config.py
new file mode 100644
index 000000000000..a9d7ef33f534
--- /dev/null
+++ b/devel/electron17/files/patch-electron_script_lib_config.py
@@ -0,0 +1,12 @@
+--- electron/script/lib/config.py.orig 2021-11-08 18:41:28 UTC
++++ electron/script/lib/config.py
+@@ -8,6 +8,9 @@ PLATFORM = {
+ 'cygwin': 'win32',
+ 'msys': 'win32',
+ 'darwin': 'darwin',
++ 'freebsd12': 'freebsd',
++ 'freebsd13': 'freebsd',
++ 'freebsd14': 'freebsd',
+ 'linux': 'linux',
+ 'linux2': 'linux',
+ 'win32': 'win32',
diff --git a/devel/electron17/files/patch-electron_script_lib_utils.js b/devel/electron17/files/patch-electron_script_lib_utils.js
new file mode 100644
index 000000000000..d5deafff375c
--- /dev/null
+++ b/devel/electron17/files/patch-electron_script_lib_utils.js
@@ -0,0 +1,11 @@
+--- electron/script/lib/utils.js.orig 2021-10-11 17:12:26 UTC
++++ electron/script/lib/utils.js
+@@ -21,7 +21,7 @@ function getElectronExec () {
+ return `out/${OUT_DIR}/Electron.app/Contents/MacOS/Electron`;
+ case 'win32':
+ return `out/${OUT_DIR}/electron.exe`;
+- case 'linux':
++ case 'linux': case 'freebsd':
+ return `out/${OUT_DIR}/electron`;
+ default:
+ throw new Error('Unknown platform');
diff --git a/devel/electron17/files/patch-electron_script_spec-runner.js b/devel/electron17/files/patch-electron_script_spec-runner.js
new file mode 100644
index 000000000000..12821b3f867d
--- /dev/null
+++ b/devel/electron17/files/patch-electron_script_spec-runner.js
@@ -0,0 +1,11 @@
+--- electron/script/spec-runner.js.orig 2021-11-08 18:41:28 UTC
++++ electron/script/spec-runner.js
+@@ -126,7 +126,7 @@ async function runElectronTests () {
+ async function runTestUsingElectron (specDir, testName) {
+ let exe = path.resolve(BASE, utils.getElectronExec());
+ const runnerArgs = [`electron/${specDir}`, ...unknownArgs.slice(2)];
+- if (process.platform === 'linux') {
++ if (process.platform === 'linux' || process.platform === 'freebsd') {
+ runnerArgs.unshift(path.resolve(__dirname, 'dbus_mock.py'), exe);
+ exe = 'python3';
+ }
diff --git a/devel/electron17/files/patch-electron_shell_app_electron__main__delegate.cc b/devel/electron17/files/patch-electron_shell_app_electron__main__delegate.cc
new file mode 100644
index 000000000000..da71c89c6f72
--- /dev/null
+++ b/devel/electron17/files/patch-electron_shell_app_electron__main__delegate.cc
@@ -0,0 +1,58 @@
+--- electron/shell/app/electron_main_delegate.cc.orig 2022-05-11 15:32:29 UTC
++++ electron/shell/app/electron_main_delegate.cc
+@@ -52,14 +52,17 @@
+ #include "chrome/child/v8_crashpad_support_win.h"
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "base/nix/xdg_util.h"
++#endif
++
++#if defined(OS_LINUX)
+ #include "components/crash/core/app/breakpad_linux.h"
+ #include "v8/include/v8-wasm-trap-handler-posix.h"
+ #include "v8/include/v8.h"
+ #endif
+
+-#if !defined(MAS_BUILD)
++#if !defined(MAS_BUILD) || !defined(OS_BSD)
+ #include "components/crash/core/app/crash_switches.h" // nogncheck
+ #include "components/crash/core/app/crashpad.h" // nogncheck
+ #include "components/crash/core/common/crash_key.h"
+@@ -153,7 +156,7 @@ bool ElectronPathProvider(int key, base::FilePath* res
+ create_dir = true;
+ break;
+ }
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ case DIR_APP_DATA: {
+ auto env = base::Environment::Create();
+ cur = base::nix::GetXDGDirectory(
+@@ -285,7 +288,7 @@ bool ElectronMainDelegate::BasicStartupComplete(int* e
+ base::win::PinUser32();
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Check for --no-sandbox parameter when running as root.
+ if (getuid() == 0 && IsSandboxEnabled(command_line))
+ LOG(FATAL) << "Running as root without --"
+@@ -340,7 +343,7 @@ void ElectronMainDelegate::PreSandboxStartup() {
+ process_type == ::switches::kZygoteProcess);
+ #endif
+
+-#if !defined(MAS_BUILD)
++#if !defined(MAS_BUILD) && !defined(OS_BSD)
+ crash_reporter::InitializeCrashKeys();
+ #endif
+
+@@ -379,7 +382,7 @@ void ElectronMainDelegate::PreSandboxStartup() {
+ }
+ #endif
+
+-#if !defined(MAS_BUILD)
++#if !defined(MAS_BUILD) && !defined(OS_BSD)
+ crash_keys::SetCrashKeysFromCommandLine(*command_line);
+ crash_keys::SetPlatformCrashKey();
+ #endif
diff --git a/devel/electron17/files/patch-electron_shell_app_node__main.cc b/devel/electron17/files/patch-electron_shell_app_node__main.cc
new file mode 100644
index 000000000000..0fbedf9c3e51
--- /dev/null
+++ b/devel/electron17/files/patch-electron_shell_app_node__main.cc
@@ -0,0 +1,56 @@
+--- electron/shell/app/node_main.cc.orig 2021-12-03 01:46:05 UTC
++++ electron/shell/app/node_main.cc
+@@ -38,7 +38,7 @@
+ #include "chrome/child/v8_crashpad_support_win.h"
+ #endif
+
+-#if !defined(MAS_BUILD)
++#if !defined(MAS_BUILD) && !defined(OS_BSD)
+ #include "components/crash/core/app/crashpad.h" // nogncheck
+ #include "shell/app/electron_crash_reporter_client.h"
+ #include "shell/browser/api/electron_api_crash_reporter.h"
+@@ -91,7 +91,7 @@ int SetNodeCliFlags() {
+ node::kDisallowedInEnvironment);
+ }
+
+-#if defined(MAS_BUILD)
++#if defined(MAS_BUILD) || defined(OS_BSD)
+ void SetCrashKeyStub(const std::string& key, const std::string& value) {}
+ void ClearCrashKeyStub(const std::string& key) {}
+ #endif
+@@ -131,7 +131,7 @@ void CrashReporterStart(gin_helper::Dictionary options
+
+ v8::Local<v8::Value> GetParameters(v8::Isolate* isolate) {
+ std::map<std::string, std::string> keys;
+-#if !defined(MAS_BUILD)
++#if !defined(MAS_BUILD) && !defined(OS_BSD)
+ electron::crash_keys::GetCrashKeys(&keys);
+ #endif
+ return gin::ConvertToV8(isolate, keys);
+@@ -144,7 +144,7 @@ int NodeMain(int argc, char* argv[]) {
+ v8_crashpad_support::SetUp();
+ #endif
+
+-#if !defined(MAS_BUILD)
++#if !defined(MAS_BUILD) && !defined(OS_BSD)
+ ElectronCrashReporterClient::Create();
+ #endif
+
+@@ -152,7 +152,7 @@ int NodeMain(int argc, char* argv[]) {
+ crash_reporter::InitializeCrashpad(false, "node");
+ #endif
+
+-#if !defined(MAS_BUILD)
++#if !defined(MAS_BUILD) && !defined(OS_BSD)
+ crash_keys::SetCrashKeysFromCommandLine(
+ *base::CommandLine::ForCurrentProcess());
+ crash_keys::SetPlatformCrashKey();
+@@ -230,7 +230,7 @@ int NodeMain(int argc, char* argv[]) {
+ #endif
+
+ reporter.SetMethod("getParameters", &GetParameters);
+-#if defined(MAS_BUILD)
++#if defined(MAS_BUILD) || defined(OS_BSD)
+ reporter.SetMethod("addExtraParameter", &SetCrashKeyStub);
+ reporter.SetMethod("removeExtraParameter", &ClearCrashKeyStub);
+ #else
diff --git a/devel/electron17/files/patch-electron_shell_browser_api_electron__api__app.cc b/devel/electron17/files/patch-electron_shell_browser_api_electron__api__app.cc
new file mode 100644
index 000000000000..4524321efbdf
--- /dev/null
+++ b/devel/electron17/files/patch-electron_shell_browser_api_electron__api__app.cc
@@ -0,0 +1,47 @@
+--- electron/shell/browser/api/electron_api_app.cc.orig 2022-05-04 15:34:10 UTC
++++ electron/shell/browser/api/electron_api_app.cc
+@@ -702,7 +702,7 @@ void App::OnWillFinishLaunching() {
+ }
+
+ void App::OnFinishLaunching(const base::DictionaryValue& launch_info) {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Set the application name for audio streams shown in external
+ // applications. Only affects pulseaudio currently.
+ media::AudioManager::SetGlobalAppName(Browser::Get()->GetName());
+@@ -1027,7 +1027,7 @@ void App::SetPath(gin_helper::ErrorThrower thrower,
+ }
+
+ void App::SetDesktopName(const std::string& desktop_name) {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ auto env = base::Environment::Create();
+ env->SetVar("CHROME_DESKTOP", desktop_name);
+ #endif
+@@ -1400,7 +1400,7 @@ std::vector<gin_helper::Dictionary> App::GetAppMetrics
+ pid_dict.Set("name", process_metric.second->name);
+ }
+
+-#if !defined(OS_LINUX)
++#if !defined(OS_LINUX) && !defined(OS_BSD)
+ auto memory_info = process_metric.second->GetMemoryInfo();
+
+ gin_helper::Dictionary memory_dict = gin::Dictionary::CreateEmpty(isolate);
+@@ -1727,7 +1727,7 @@ gin::ObjectTemplateBuilder App::GetObjectTemplateBuild
+ .SetMethod(
+ "removeAsDefaultProtocolClient",
+ base::BindRepeating(&Browser::RemoveAsDefaultProtocolClient, browser))
+-#if !defined(OS_LINUX)
++#if !defined(OS_LINUX) && !defined(OS_BSD)
+ .SetMethod(
+ "getApplicationInfoForProtocol",
+ base::BindRepeating(&Browser::GetApplicationInfoForProtocol, browser))
+@@ -1784,7 +1784,7 @@ gin::ObjectTemplateBuilder App::GetObjectTemplateBuild
+ .SetMethod("getJumpListSettings", &App::GetJumpListSettings)
+ .SetMethod("setJumpList", &App::SetJumpList)
+ #endif
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ .SetMethod("isUnityRunning",
+ base::BindRepeating(&Browser::IsUnityRunning, browser))
+ #endif
diff --git a/devel/electron17/files/patch-electron_shell_browser_api_electron__api__base__window.cc b/devel/electron17/files/patch-electron_shell_browser_api_electron__api__base__window.cc
new file mode 100644
index 000000000000..5caf2576addd
--- /dev/null
+++ b/devel/electron17/files/patch-electron_shell_browser_api_electron__api__base__window.cc
@@ -0,0 +1,11 @@
+--- electron/shell/browser/api/electron_api_base_window.cc.orig 2021-11-15 23:45:07 UTC
++++ electron/shell/browser/api/electron_api_base_window.cc
+@@ -1059,7 +1059,7 @@ void BaseWindow::SetIconImpl(v8::Isolate* isolate,
+ static_cast<NativeWindowViews*>(window_.get())
+ ->SetIcon(native_image->GetHICON(GetSystemMetrics(SM_CXSMICON)),
+ native_image->GetHICON(GetSystemMetrics(SM_CXICON)));
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ static_cast<NativeWindowViews*>(window_.get())
+ ->SetIcon(native_image->image().AsImageSkia());
+ #endif
diff --git a/devel/electron17/files/patch-electron_shell_browser_api_electron__api__crash__reporter.cc b/devel/electron17/files/patch-electron_shell_browser_api_electron__api__crash__reporter.cc
new file mode 100644
index 000000000000..791b0fc23195
--- /dev/null
+++ b/devel/electron17/files/patch-electron_shell_browser_api_electron__api__crash__reporter.cc
@@ -0,0 +1,72 @@
+--- electron/shell/browser/api/electron_api_crash_reporter.cc.orig 2021-11-15 23:45:07 UTC
++++ electron/shell/browser/api/electron_api_crash_reporter.cc
+@@ -29,7 +29,7 @@
+ #include "shell/common/gin_helper/dictionary.h"
+ #include "shell/common/node_includes.h"
+
+-#if !defined(MAS_BUILD)
++#if !defined(MAS_BUILD) && !defined(OS_BSD)
+ #include "components/crash/core/app/crashpad.h" // nogncheck
+ #include "components/crash/core/browser/crash_upload_list_crashpad.h" // nogncheck
+ #include "components/crash/core/common/crash_key.h"
+@@ -69,7 +69,7 @@ namespace api {
+
+ namespace crash_reporter {
+
+-#if defined(MAS_BUILD)
++#if defined(MAS_BUILD) || defined(OS_BSD)
+ namespace {
+
+ void NoOp() {}
+@@ -135,7 +135,7 @@ void Start(const std::string& submit_url,
+ const std::map<std::string, std::string>& global_extra,
+ const std::map<std::string, std::string>& extra,
+ bool is_node_process) {
+-#if !defined(MAS_BUILD)
++#if !defined(MAS_BUILD) && !defined(OS_BSD)
+ if (g_crash_reporter_initialized)
+ return;
+ g_crash_reporter_initialized = true;
+@@ -202,7 +202,7 @@ void Start(const std::string& submit_url,
+
+ namespace {
+
+-#if defined(MAS_BUILD)
++#if defined(MAS_BUILD) || defined(OS_BSD)
+ void GetUploadedReports(
+ v8::Isolate* isolate,
+ base::OnceCallback<void(v8::Local<v8::Value>)> callback) {
+@@ -259,13 +259,13 @@ v8::Local<v8::Value> GetUploadedReports(v8::Isolate* i
+ #endif
+
+ void SetUploadToServer(bool upload) {
+-#if !defined(MAS_BUILD)
++#if !defined(MAS_BUILD) && !defined(OS_BSD)
+ ElectronCrashReporterClient::Get()->SetCollectStatsConsent(upload);
+ #endif
+ }
+
+ bool GetUploadToServer() {
+-#if defined(MAS_BUILD)
++#if defined(MAS_BUILD) || defined(OS_BSD)
+ return false;
+ #else
+ return ElectronCrashReporterClient::Get()->GetCollectStatsConsent();
+@@ -274,7 +274,7 @@ bool GetUploadToServer() {
+
+ v8::Local<v8::Value> GetParameters(v8::Isolate* isolate) {
+ std::map<std::string, std::string> keys;
+-#if !defined(MAS_BUILD)
++#if !defined(MAS_BUILD) && !defined(OS_BSD)
+ electron::crash_keys::GetCrashKeys(&keys);
+ #endif
+ return gin::ConvertToV8(isolate, keys);
+@@ -286,7 +286,7 @@ void Initialize(v8::Local<v8::Object> exports,
+ void* priv) {
+ gin_helper::Dictionary dict(context->GetIsolate(), exports);
+ dict.SetMethod("start", &electron::api::crash_reporter::Start);
+-#if defined(MAS_BUILD)
++#if defined(MAS_BUILD) || defined(OS_BSD)
+ dict.SetMethod("addExtraParameter", &electron::api::crash_reporter::NoOp);
+ dict.SetMethod("removeExtraParameter", &electron::api::crash_reporter::NoOp);
+ #else
diff --git a/devel/electron17/files/patch-electron_shell_browser_api_electron__api__power__monitor.cc b/devel/electron17/files/patch-electron_shell_browser_api_electron__api__power__monitor.cc
new file mode 100644
index 000000000000..b53b4fa189e4
--- /dev/null
+++ b/devel/electron17/files/patch-electron_shell_browser_api_electron__api__power__monitor.cc
@@ -0,0 +1,23 @@
+--- electron/shell/browser/api/electron_api_power_monitor.cc.orig 2022-02-20 09:51:58 UTC
++++ electron/shell/browser/api/electron_api_power_monitor.cc
+@@ -79,6 +79,11 @@ void PowerMonitor::OnResume() {
+ Emit("resume");
+ }
+
++#if defined(OS_BSD)
++void PowerMonitor::SetListeningForShutdown(bool is_listening) {
++}
++#endif
++
+ #if defined(OS_LINUX)
+ void PowerMonitor::SetListeningForShutdown(bool is_listening) {
+ if (is_listening) {
+@@ -105,7 +110,7 @@ gin::ObjectTemplateBuilder PowerMonitor::GetObjectTemp
+ auto builder =
+ gin_helper::EventEmitterMixin<PowerMonitor>::GetObjectTemplateBuilder(
+ isolate);
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ builder.SetMethod("setListeningForShutdown",
+ &PowerMonitor::SetListeningForShutdown);
+ #endif
diff --git a/devel/electron17/files/patch-electron_shell_browser_api_electron__api__power__monitor.h b/devel/electron17/files/patch-electron_shell_browser_api_electron__api__power__monitor.h
new file mode 100644
index 000000000000..594a895e26df
--- /dev/null
+++ b/devel/electron17/files/patch-electron_shell_browser_api_electron__api__power__monitor.h
@@ -0,0 +1,11 @@
+--- electron/shell/browser/api/electron_api_power_monitor.h.orig 2022-05-11 15:32:29 UTC
++++ electron/shell/browser/api/electron_api_power_monitor.h
+@@ -41,7 +41,7 @@ class PowerMonitor : public gin::Wrappable<PowerMonito
+ explicit PowerMonitor(v8::Isolate* isolate);
+ ~PowerMonitor() override;
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ void SetListeningForShutdown(bool);
+ #endif
+
diff --git a/devel/electron17/files/patch-electron_shell_browser_api_electron__api__web__contents.cc b/devel/electron17/files/patch-electron_shell_browser_api_electron__api__web__contents.cc
new file mode 100644
index 000000000000..cad8c443a102
--- /dev/null
+++ b/devel/electron17/files/patch-electron_shell_browser_api_electron__api__web__contents.cc
@@ -0,0 +1,61 @@
+--- electron/shell/browser/api/electron_api_web_contents.cc.orig 2022-05-11 15:32:29 UTC
++++ electron/shell/browser/api/electron_api_web_contents.cc
+@@ -150,11 +150,11 @@
+ #include "ui/base/cocoa/defaults_utils.h"
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "ui/views/linux_ui/linux_ui.h"
+ #endif
+
+-#if defined(OS_LINUX) || defined(OS_WIN)
++#if defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
+ #include "ui/gfx/font_render_params.h"
+ #endif
+
+@@ -394,7 +394,7 @@ absl::optional<base::TimeDelta> GetCursorBlinkInterval
+ base::TimeDelta interval;
+ if (ui::TextInsertionCaretBlinkPeriod(&interval))
+ return interval;
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ if (auto* linux_ui = views::LinuxUI::instance())
+ return linux_ui->GetCursorBlinkInterval();
+ #elif defined(OS_WIN)
+@@ -830,7 +830,7 @@ void WebContents::InitWithSessionAndOptions(
+ accept_languages.pop_back();
+ prefs->accept_languages = accept_languages;
+
+-#if defined(OS_LINUX) || defined(OS_WIN)
++#if defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
+ // Update font settings.
+ static const gfx::FontRenderParams params(
+ gfx::GetFontRenderParams(gfx::FontRenderParamsQuery(), nullptr));
+@@ -2317,7 +2317,7 @@ void WebContents::ForcefullyCrashRenderer() {
+
+ content::RenderProcessHost* rph = rwh->GetProcess();
+ if (rph) {
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // A generic |CrashDumpHungChildProcess()| is not implemented for Linux.
+ // Instead we send an explicit IPC to crash on the renderer's IO thread.
+ rph->ForceCrash();
+@@ -2893,7 +2893,7 @@ void WebContents::CopyImageAt(int x, int y) {
+ void WebContents::Focus() {
+ // Focusing on WebContents does not automatically focus the window on macOS
+ // and Linux, do it manually to match the behavior on Windows.
+-#if defined(OS_MAC) || defined(OS_LINUX)
++#if defined(OS_MAC) || defined(OS_LINUX) || defined(OS_BSD)
+ if (owner_window())
+ owner_window()->Focus(true);
+ #endif
+@@ -3728,7 +3728,7 @@ ui::ImageModel WebContents::GetDevToolsWindowIcon() {
+ }
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ void WebContents::GetDevToolsWindowWMClass(std::string* name,
+ std::string* class_name) {
+ *class_name = Browser::Get()->GetName();
diff --git a/devel/electron17/files/patch-electron_shell_browser_api_electron__api__web__contents.h b/devel/electron17/files/patch-electron_shell_browser_api_electron__api__web__contents.h
new file mode 100644
index 000000000000..0b5ebdd10226
--- /dev/null
+++ b/devel/electron17/files/patch-electron_shell_browser_api_electron__api__web__contents.h
@@ -0,0 +1,11 @@
+--- electron/shell/browser/api/electron_api_web_contents.h.orig 2022-05-11 15:32:29 UTC
++++ electron/shell/browser/api/electron_api_web_contents.h
+@@ -714,7 +714,7 @@ class WebContents : public ExclusiveAccessContext,
+ #if defined(TOOLKIT_VIEWS) && !defined(OS_MAC)
+ ui::ImageModel GetDevToolsWindowIcon() override;
+ #endif
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ void GetDevToolsWindowWMClass(std::string* name,
+ std::string* class_name) override;
+ #endif
diff --git a/devel/electron17/files/patch-electron_shell_browser_api_process__metric.h b/devel/electron17/files/patch-electron_shell_browser_api_process__metric.h
new file mode 100644
index 000000000000..eeecfdce675d
--- /dev/null
+++ b/devel/electron17/files/patch-electron_shell_browser_api_process__metric.h
@@ -0,0 +1,20 @@
+--- electron/shell/browser/api/process_metric.h.orig 2021-04-20 23:32:33 UTC
++++ electron/shell/browser/api/process_metric.h
+@@ -14,7 +14,7 @@
+
+ namespace electron {
+
+-#if !defined(OS_LINUX)
++#if !defined(OS_LINUX) && !defined(OS_BSD)
+ struct ProcessMemoryInfo {
+ size_t working_set_size = 0;
+ size_t peak_working_set_size = 0;
+@@ -48,7 +48,7 @@ struct ProcessMetric {
+ const std::string& name = std::string());
+ ~ProcessMetric();
+
+-#if !defined(OS_LINUX)
++#if !defined(OS_LINUX) && !defined(OS_BSD)
+ ProcessMemoryInfo GetMemoryInfo() const;
+ #endif
+
diff --git a/devel/electron17/files/patch-electron_shell_browser_browser.cc b/devel/electron17/files/patch-electron_shell_browser_browser.cc
new file mode 100644
index 000000000000..c0ec443b3087
--- /dev/null
+++ b/devel/electron17/files/patch-electron_shell_browser_browser.cc
@@ -0,0 +1,11 @@
+--- electron/shell/browser/browser.cc.orig 2021-11-08 18:41:28 UTC
++++ electron/shell/browser/browser.cc
+@@ -65,7 +65,7 @@ Browser* Browser::Get() {
+ return ElectronBrowserMainParts::Get()->browser();
+ }
+
+-#if defined(OS_WIN) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)
+ void Browser::Focus(gin::Arguments* args) {
+ // Focus on the first visible window.
+ for (auto* const window : WindowList::GetWindows()) {
diff --git a/devel/electron17/files/patch-electron_shell_browser_browser.h b/devel/electron17/files/patch-electron_shell_browser_browser.h
new file mode 100644
index 000000000000..53dc20efc498
--- /dev/null
+++ b/devel/electron17/files/patch-electron_shell_browser_browser.h
@@ -0,0 +1,33 @@
+--- electron/shell/browser/browser.h.orig 2022-05-11 15:32:29 UTC
++++ electron/shell/browser/browser.h
+@@ -101,7 +101,7 @@ class Browser : public WindowListObserver {
+
+ std::u16string GetApplicationNameForProtocol(const GURL& url);
+
+-#if !defined(OS_LINUX)
++#if !defined(OS_LINUX) && !defined(OS_BSD)
+ // get the name, icon and path for an application
+ v8::Local<v8::Promise> GetApplicationInfoForProtocol(v8::Isolate* isolate,
+ const GURL& url);
+@@ -260,10 +260,10 @@ class Browser : public WindowListObserver {
+ PCWSTR GetAppUserModelID();
+ #endif // defined(OS_WIN)
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Whether Unity launcher is running.
+ bool IsUnityRunning();
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+
+ // Tell the application to open a file.
+ bool OpenFile(const std::string& file_path);
+@@ -360,7 +360,7 @@ class Browser : public WindowListObserver {
+ base::Time last_dock_show_;
+ #endif
+
+-#if defined(OS_LINUX) || defined(OS_WIN)
++#if defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
+ base::Value about_panel_options_;
+ #elif defined(OS_MAC)
+ base::DictionaryValue about_panel_options_;
diff --git a/devel/electron17/files/patch-electron_shell_browser_browser__linux.cc b/devel/electron17/files/patch-electron_shell_browser_browser__linux.cc
new file mode 100644
index 000000000000..d1e277507c2f
--- /dev/null
+++ b/devel/electron17/files/patch-electron_shell_browser_browser__linux.cc
@@ -0,0 +1,11 @@
+--- electron/shell/browser/browser_linux.cc.orig 2021-04-22 08:22:30 UTC
++++ electron/shell/browser/browser_linux.cc
+@@ -15,7 +15,7 @@
+ #include "shell/browser/window_list.h"
+ #include "shell/common/application_info.h"
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "shell/browser/linux/unity_service.h"
+ #include "ui/gtk/gtk_util.h"
+ #endif
diff --git a/devel/electron17/files/patch-electron_shell_browser_electron__browser__client.cc b/devel/electron17/files/patch-electron_shell_browser_electron__browser__client.cc
new file mode 100644
index 000000000000..c1e0e5a34d7c
--- /dev/null
+++ b/devel/electron17/files/patch-electron_shell_browser_electron__browser__client.cc
@@ -0,0 +1,11 @@
+--- electron/shell/browser/electron_browser_client.cc.orig 2022-05-11 15:32:29 UTC
++++ electron/shell/browser/electron_browser_client.cc
+@@ -179,7 +179,7 @@
+ #include "content/public/common/child_process_host.h"
+ #endif
+
+-#if defined(OS_LINUX) && !defined(MAS_BUILD)
++#if defined(OS_LINUX) && !defined(MAS_BUILD) && !defined(OS_BSD)
+ #include "base/debug/leak_annotations.h"
+ #include "components/crash/content/browser/crash_handler_host_linux.h"
+ #include "components/crash/core/app/breakpad_linux.h" // nogncheck
diff --git a/devel/electron17/files/patch-electron_shell_browser_electron__browser__main__parts.cc b/devel/electron17/files/patch-electron_shell_browser_electron__browser__main__parts.cc
new file mode 100644
index 000000000000..9a48e375dc03
--- /dev/null
+++ b/devel/electron17/files/patch-electron_shell_browser_electron__browser__main__parts.cc
@@ -0,0 +1,83 @@
+--- electron/shell/browser/electron_browser_main_parts.cc.orig 2022-05-11 15:32:29 UTC
++++ electron/shell/browser/electron_browser_main_parts.cc
+@@ -61,7 +61,7 @@
+ #include "ui/wm/core/wm_state.h"
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "base/environment.h"
+ #include "base/threading/thread_task_runner_handle.h"
+ #include "device/bluetooth/bluetooth_adapter_factory.h"
+@@ -140,7 +140,7 @@ std::u16string MediaStringProvider(media::MessageId id
+ }
+ }
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // GTK does not provide a way to check if current theme is dark, so we compare
+ // the text and background luminosity to get a result.
+ // This trick comes from FireFox.
+@@ -158,7 +158,7 @@ void UpdateDarkThemeSetting() {
+
+ } // namespace
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ class DarkThemeObserver : public ui::NativeThemeObserver {
+ public:
+ DarkThemeObserver() = default;
+@@ -211,7 +211,7 @@ int ElectronBrowserMainParts::PreEarlyInitialization()
+ #if defined(OS_POSIX)
+ HandleSIGCHLD();
+ #endif
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ ui::OzonePlatform::PreEarlyInitialization();
+ #endif
+
+@@ -272,7 +272,7 @@ int ElectronBrowserMainParts::PreCreateThreads() {
+ #if defined(USE_AURA)
+ screen_ = views::CreateDesktopScreen();
+ display::Screen::SetScreenInstance(screen_.get());
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ views::LinuxUI::instance()->UpdateDeviceScaleFactor();
+ #endif
+ #endif
+@@ -289,7 +289,7 @@ int ElectronBrowserMainParts::PreCreateThreads() {
+ // happen before the ResourceBundle is loaded
+ if (locale.empty())
+ l10n_util::OverrideLocaleWithCocoaLocale();
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ // l10n_util::GetApplicationLocaleInternal uses g_get_language_names(),
+ // which keys off of getenv("LC_ALL").
+ // We must set this env first to make ui::ResourceBundle accept the custom
+@@ -312,7 +312,7 @@ int ElectronBrowserMainParts::PreCreateThreads() {
+ ElectronBrowserClient::SetApplicationLocale(app_locale);
+ fake_browser_process_->SetApplicationLocale(app_locale);
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Reset to the original LC_ALL since we should not be changing it.
+ if (!locale.empty()) {
+ if (lc_all)
+@@ -359,7 +359,7 @@ void ElectronBrowserMainParts::PostDestroyThreads() {
+ }
+
+ void ElectronBrowserMainParts::ToolkitInitialized() {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ auto linux_ui = BuildGtkUi();
+ linux_ui->Initialize();
+ DCHECK(ui::LinuxInputMethodContextFactory::instance());
+@@ -505,7 +505,7 @@ void ElectronBrowserMainParts::PostMainMessageLoopRun(
+ fake_browser_process_->PostMainMessageLoopRun();
+ content::DevToolsAgentHost::StopRemoteDebuggingPipeHandler();
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ ui::OzonePlatform::GetInstance()->PostMainMessageLoopRun();
+ #endif
+ }
diff --git a/devel/electron17/files/patch-electron_shell_browser_electron__browser__main__parts.h b/devel/electron17/files/patch-electron_shell_browser_electron__browser__main__parts.h
new file mode 100644
index 000000000000..981ae03a7276
--- /dev/null
+++ b/devel/electron17/files/patch-electron_shell_browser_electron__browser__main__parts.h
@@ -0,0 +1,20 @@
+--- electron/shell/browser/electron_browser_main_parts.h.orig 2022-05-11 15:32:29 UTC
++++ electron/shell/browser/electron_browser_main_parts.h
+@@ -61,7 +61,7 @@ class ViewsDelegate;
+ class ViewsDelegateMac;
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ class DarkThemeObserver;
+ #endif
+
+@@ -139,7 +139,7 @@ class ElectronBrowserMainParts : public content::Brows
+ std::unique_ptr<display::Screen> screen_;
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Used to notify the native theme of changes to dark mode.
+ std::unique_ptr<DarkThemeObserver> dark_theme_observer_;
+ #endif
diff --git a/devel/electron17/files/patch-electron_shell_browser_electron__browser__main__parts__posix.cc b/devel/electron17/files/patch-electron_shell_browser_electron__browser__main__parts__posix.cc
new file mode 100644
index 000000000000..da5765c6d24f
--- /dev/null
+++ b/devel/electron17/files/patch-electron_shell_browser_electron__browser__main__parts__posix.cc
@@ -0,0 +1,19 @@
+--- electron/shell/browser/electron_browser_main_parts_posix.cc.orig 2022-05-11 15:32:29 UTC
++++ electron/shell/browser/electron_browser_main_parts_posix.cc
+@@ -198,12 +198,16 @@ void ElectronBrowserMainParts::InstallShutdownSignalHa
+ g_pipe_pid = getpid();
+ g_shutdown_pipe_read_fd = pipefd[0];
+ g_shutdown_pipe_write_fd = pipefd[1];
++#if defined(OS_BSD)
++ const size_t kShutdownDetectorThreadStackSize = 0;
++#else
+ #if !defined(ADDRESS_SANITIZER)
+ const size_t kShutdownDetectorThreadStackSize = PTHREAD_STACK_MIN * 2;
+ #else
+ // ASan instrumentation bloats the stack frames, so we need to increase the
+ // stack size to avoid hitting the guard page.
+ const size_t kShutdownDetectorThreadStackSize = PTHREAD_STACK_MIN * 4;
++#endif
+ #endif
+ ShutdownDetector* detector = new ShutdownDetector(
+ g_shutdown_pipe_read_fd, std::move(shutdown_callback), task_runner);
diff --git a/devel/electron17/files/patch-electron_shell_browser_native__window.cc b/devel/electron17/files/patch-electron_shell_browser_native__window.cc
new file mode 100644
index 000000000000..d4ff948dc2d2
--- /dev/null
+++ b/devel/electron17/files/patch-electron_shell_browser_native__window.cc
@@ -0,0 +1,11 @@
+--- electron/shell/browser/native_window.cc.orig 2022-05-11 15:32:29 UTC
++++ electron/shell/browser/native_window.cc
+@@ -184,7 +184,7 @@ void NativeWindow::InitFromOptions(const gin_helper::D
+ } else {
+ SetSizeConstraints(size_constraints);
+ }
+-#if defined(OS_WIN) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)
+ bool resizable;
+ if (options.Get(options::kResizable, &resizable)) {
+ SetResizable(resizable);
diff --git a/devel/electron17/files/patch-electron_shell_browser_native__window__views.cc b/devel/electron17/files/patch-electron_shell_browser_native__window__views.cc
new file mode 100644
index 000000000000..9d92749b6b2a
--- /dev/null
+++ b/devel/electron17/files/patch-electron_shell_browser_native__window__views.cc
@@ -0,0 +1,128 @@
+--- electron/shell/browser/native_window_views.cc.orig 2022-05-11 15:32:29 UTC
++++ electron/shell/browser/native_window_views.cc
+@@ -43,7 +43,7 @@
+ #include "ui/wm/core/shadow_types.h"
+ #include "ui/wm/core/window_util.h"
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "base/strings/string_util.h"
+ #include "shell/browser/browser.h"
+ #include "shell/browser/linux/unity_service.h"
+@@ -264,7 +264,7 @@ NativeWindowViews::NativeWindowViews(const gin_helper:
+ params.parent = parent->GetNativeWindow();
+
+ params.native_widget = new ElectronDesktopNativeWidgetAura(this);
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ std::string name = Browser::Get()->GetName();
+ // Set WM_WINDOW_ROLE.
+ params.wm_role_name = "browser-window";
+@@ -287,7 +287,7 @@ NativeWindowViews::NativeWindowViews(const gin_helper:
+ std::string window_type;
+ options.Get(options::kType, &window_type);
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Set _GTK_THEME_VARIANT to dark if we have "dark-theme" option set.
+ bool use_dark_theme = false;
+ if (options.Get(options::kDarkTheme, &use_dark_theme) && use_dark_theme) {
+@@ -393,7 +393,7 @@ NativeWindowViews::NativeWindowViews(const gin_helper:
+ if (window)
+ window->AddPreTargetHandler(this);
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // On linux after the widget is initialized we might have to force set the
+ // bounds if the bounds are smaller than the current display
+ SetBounds(gfx::Rect(GetPosition(), bounds.size()), false);
+@@ -536,7 +536,7 @@ bool NativeWindowViews::IsVisible() {
+ bool NativeWindowViews::IsEnabled() {
+ #if defined(OS_WIN)
+ return ::IsWindowEnabled(GetAcceleratedWidget());
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ #if defined(USE_OZONE_PLATFORM_X11)
+ if (IsX11())
+ return !event_disabler_.get();
+@@ -594,7 +594,7 @@ void NativeWindowViews::SetEnabledInternal(bool enable
+ #endif
+ }
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ void NativeWindowViews::Maximize() {
+ if (IsVisible()) {
+ widget()->Maximize();
+@@ -722,7 +722,7 @@ void NativeWindowViews::SetBounds(const gfx::Rect& bou
+ }
+ #endif
+
+-#if defined(OS_WIN) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)
+ // On Linux and Windows the minimum and maximum size should be updated with
+ // window size when window is not resizable.
+ if (!resizable_) {
+@@ -939,7 +939,7 @@ bool NativeWindowViews::IsClosable() {
+ return false;
+ }
+ return !(info.fState & MFS_DISABLED);
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ return true;
+ #endif
+ }
+@@ -1331,7 +1331,7 @@ void NativeWindowViews::SetProgressBar(double progress
+ NativeWindow::ProgressState state) {
+ #if defined(OS_WIN)
+ taskbar_host_.SetProgressBar(GetAcceleratedWidget(), progress, state);
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ if (unity::IsRunning()) {
+ unity::SetProgressFraction(progress);
+ }
+@@ -1393,7 +1393,7 @@ content::DesktopMediaID NativeWindowViews::GetDesktopM
+ #if defined(OS_WIN)
+ window_handle =
+ reinterpret_cast<content::DesktopMediaID::Id>(accelerated_widget);
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ window_handle = static_cast<uint32_t>(accelerated_widget);
+ #endif
+ aura::WindowTreeHost* const host =
+@@ -1496,7 +1496,7 @@ void NativeWindowViews::SetIcon(HICON window_icon, HIC
+ SendMessage(hwnd, WM_SETICON, ICON_BIG,
+ reinterpret_cast<LPARAM>(app_icon_.get()));
+ }
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ void NativeWindowViews::SetIcon(const gfx::ImageSkia& icon) {
+ auto* tree_host = views::DesktopWindowTreeHostLinux::GetHostForWidget(
+ GetAcceleratedWidget());
+@@ -1566,7 +1566,7 @@ bool NativeWindowViews::CanMaximize() const {
+ bool NativeWindowViews::CanMinimize() const {
+ #if defined(OS_WIN)
+ return minimizable_;
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ return true;
+ #endif
+ }
+@@ -1640,7 +1640,7 @@ void NativeWindowViews::HandleKeyboardEvent(
+ if (widget_destroyed_)
+ return;
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ if (event.windows_key_code == ui::VKEY_BROWSER_BACK)
+ NotifyWindowExecuteAppCommand(kBrowserBackward);
+ else if (event.windows_key_code == ui::VKEY_BROWSER_FORWARD)
+@@ -1659,7 +1659,7 @@ void NativeWindowViews::OnMouseEvent(ui::MouseEvent* e
+ // Alt+Click should not toggle menu bar.
+ root_view_->ResetAltState();
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ if (event->changed_button_flags() == ui::EF_BACK_MOUSE_BUTTON)
+ NotifyWindowExecuteAppCommand(kBrowserBackward);
+ else if (event->changed_button_flags() == ui::EF_FORWARD_MOUSE_BUTTON)
diff --git a/devel/electron17/files/patch-electron_shell_browser_native__window__views.h b/devel/electron17/files/patch-electron_shell_browser_native__window__views.h
new file mode 100644
index 000000000000..c4b95f921697
--- /dev/null
+++ b/devel/electron17/files/patch-electron_shell_browser_native__window__views.h
@@ -0,0 +1,11 @@
+--- electron/shell/browser/native_window_views.h.orig 2022-05-11 15:32:29 UTC
++++ electron/shell/browser/native_window_views.h
+@@ -172,7 +172,7 @@ class NativeWindowViews : public NativeWindow,
+ LPARAM l_param,
+ LRESULT* result);
+ void SetIcon(HICON small_icon, HICON app_icon);
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ void SetIcon(const gfx::ImageSkia& icon);
+ #endif
+
diff --git a/devel/electron17/files/patch-electron_shell_browser_net_system__network__context__manager.cc b/devel/electron17/files/patch-electron_shell_browser_net_system__network__context__manager.cc
new file mode 100644
index 000000000000..118a3094a976
--- /dev/null
+++ b/devel/electron17/files/patch-electron_shell_browser_net_system__network__context__manager.cc
@@ -0,0 +1,38 @@
+--- electron/shell/browser/net/system_network_context_manager.cc.orig 2022-05-11 15:32:29 UTC
++++ electron/shell/browser/net/system_network_context_manager.cc
+@@ -45,7 +45,7 @@
+ #include "components/os_crypt/keychain_password_mac.h"
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "components/os_crypt/key_storage_config_linux.h"
+ #endif
+
+@@ -314,7 +314,7 @@ void SystemNetworkContextManager::OnNetworkServiceCrea
+ KeychainPassword::GetServiceName() = app_name + " Safe Storage";
+ KeychainPassword::GetAccountName() = app_name;
+ #endif
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // c.f.
+ // https://source.chromium.org/chromium/chromium/src/+/master:chrome/browser/net/system_network_context_manager.cc;l=515;drc=9d82515060b9b75fa941986f5db7390299669ef1;bpv=1;bpt=1
+ const base::CommandLine& command_line =
+@@ -336,7 +336,7 @@ void SystemNetworkContextManager::OnNetworkServiceCrea
+ // process, send it the required key.
+ if (content::IsOutOfProcessNetworkService() &&
+ electron::fuses::IsCookieEncryptionEnabled()) {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ network::mojom::CryptConfigPtr network_crypt_config =
+ network::mojom::CryptConfig::New();
+ network_crypt_config->application_name = config->application_name;
+@@ -352,7 +352,7 @@ void SystemNetworkContextManager::OnNetworkServiceCrea
+ #endif
+ }
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ OSCrypt::SetConfig(std::move(config));
+ #endif
+
diff --git a/devel/electron17/files/patch-electron_shell_browser_osr_osr__host__display__client.cc b/devel/electron17/files/patch-electron_shell_browser_osr_osr__host__display__client.cc
new file mode 100644
index 000000000000..fd443c993a57
--- /dev/null
+++ b/devel/electron17/files/patch-electron_shell_browser_osr_osr__host__display__client.cc
@@ -0,0 +1,11 @@
+--- electron/shell/browser/osr/osr_host_display_client.cc.orig 2021-04-20 23:32:33 UTC
++++ electron/shell/browser/osr/osr_host_display_client.cc
+@@ -97,7 +97,7 @@ void OffScreenHostDisplayClient::CreateLayeredWindowUp
+ layered_window_updater_->SetActive(active_);
+ }
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ void OffScreenHostDisplayClient::DidCompleteSwapWithNewSize(
+ const gfx::Size& size) {}
+ #endif
diff --git a/devel/electron17/files/patch-electron_shell_browser_osr_osr__host__display__client.h b/devel/electron17/files/patch-electron_shell_browser_osr_osr__host__display__client.h
new file mode 100644
index 000000000000..2d3bc85ba505
--- /dev/null
+++ b/devel/electron17/files/patch-electron_shell_browser_osr_osr__host__display__client.h
@@ -0,0 +1,11 @@
+--- electron/shell/browser/osr/osr_host_display_client.h.orig 2022-05-11 15:32:29 UTC
++++ electron/shell/browser/osr/osr_host_display_client.h
+@@ -72,7 +72,7 @@ class OffScreenHostDisplayClient : public viz::HostDis
+ mojo::PendingReceiver<viz::mojom::LayeredWindowUpdater> receiver)
+ override;
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ void DidCompleteSwapWithNewSize(const gfx::Size& size) override;
+ #endif
+
diff --git a/devel/electron17/files/patch-electron_shell_browser_relauncher__linux.cc b/devel/electron17/files/patch-electron_shell_browser_relauncher__linux.cc
new file mode 100644
index 000000000000..ce2055b2f2d8
--- /dev/null
+++ b/devel/electron17/files/patch-electron_shell_browser_relauncher__linux.cc
@@ -0,0 +1,32 @@
+--- electron/shell/browser/relauncher_linux.cc.orig 2021-01-22 23:55:24 UTC
++++ electron/shell/browser/relauncher_linux.cc
+@@ -6,8 +6,10 @@
+
+ #include <fcntl.h>
+ #include <signal.h>
++#if !defined(__FreeBSD__)
+ #include <sys/prctl.h>
+ #include <sys/signalfd.h>
++#endif
+
+ #include "base/files/file_util.h"
+ #include "base/files/scoped_file.h"
+@@ -26,6 +28,10 @@ void RelauncherSynchronizeWithParent() {
+ base::ScopedFD relauncher_sync_fd(kRelauncherSyncFD);
+ static const auto signum = SIGUSR2;
+
++#if defined(__FreeBSD__)
++ PLOG(ERROR) << "signalfd & prctl";
++ fprintf(stderr, "Not Implemented signalfd & prctl in atom/browser/relauncher_linux.cc");
++#else
+ // send signum to current process when parent process ends.
+ if (HANDLE_EINTR(prctl(PR_SET_PDEATHSIG, signum)) != 0) {
+ PLOG(ERROR) << "prctl";
+@@ -50,6 +56,7 @@ void RelauncherSynchronizeWithParent() {
+
+ // Wait for the parent to exit
+ parentWaiter.Wait();
++#endif
+ }
+
+ int LaunchProgram(const StringVector& relauncher_args,
diff --git a/devel/electron17/files/patch-electron_shell_browser_ui_inspectable__web__contents__view__delegate.h b/devel/electron17/files/patch-electron_shell_browser_ui_inspectable__web__contents__view__delegate.h
new file mode 100644
index 000000000000..f1cab29bd950
--- /dev/null
+++ b/devel/electron17/files/patch-electron_shell_browser_ui_inspectable__web__contents__view__delegate.h
@@ -0,0 +1,11 @@
+--- electron/shell/browser/ui/inspectable_web_contents_view_delegate.h.orig 2021-11-08 18:41:28 UTC
++++ electron/shell/browser/ui/inspectable_web_contents_view_delegate.h
+@@ -24,7 +24,7 @@ class InspectableWebContentsViewDelegate {
+ // Returns the icon of devtools window.
+ virtual ui::ImageModel GetDevToolsWindowIcon();
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Called when creating devtools window.
+ virtual void GetDevToolsWindowWMClass(std::string* name,
+ std::string* class_name) {}
diff --git a/devel/electron17/files/patch-electron_shell_browser_ui_views_electron__views__delegate.cc b/devel/electron17/files/patch-electron_shell_browser_ui_views_electron__views__delegate.cc
new file mode 100644
index 000000000000..8da7e8f6410d
--- /dev/null
+++ b/devel/electron17/files/patch-electron_shell_browser_ui_views_electron__views__delegate.cc
@@ -0,0 +1,38 @@
+--- electron/shell/browser/ui/views/electron_views_delegate.cc.orig 2021-11-15 23:45:07 UTC
++++ electron/shell/browser/ui/views/electron_views_delegate.cc
+@@ -9,7 +9,7 @@
+ #include "ui/views/widget/desktop_aura/desktop_native_widget_aura.h"
+ #include "ui/views/widget/native_widget_aura.h"
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "base/environment.h"
+ #include "base/nix/xdg_util.h"
+ #include "ui/views/linux_ui/linux_ui.h"
+@@ -17,7 +17,7 @@
+
+ namespace {
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ bool IsDesktopEnvironmentUnity() {
+ auto env = base::Environment::Create();
+ base::nix::DesktopEnvironment desktop_env =
+@@ -53,7 +53,7 @@ void ViewsDelegate::NotifyMenuItemFocused(const std::u
+ int item_count,
+ bool has_submenu) {}
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ gfx::ImageSkia* ViewsDelegate::GetDefaultWindowIcon() const {
+ return nullptr;
+ }
+@@ -85,7 +85,7 @@ void ViewsDelegate::OnBeforeWidgetInit(
+ }
+
+ bool ViewsDelegate::WindowManagerProvidesTitleBar(bool maximized) {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // On Ubuntu Unity, the system always provides a title bar for maximized
+ // windows.
+ if (!maximized)
diff --git a/devel/electron17/files/patch-electron_shell_browser_ui_views_electron__views__delegate.h b/devel/electron17/files/patch-electron_shell_browser_ui_views_electron__views__delegate.h
new file mode 100644
index 000000000000..291a7cf803e3
--- /dev/null
+++ b/devel/electron17/files/patch-electron_shell_browser_ui_views_electron__views__delegate.h
@@ -0,0 +1,11 @@
+--- electron/shell/browser/ui/views/electron_views_delegate.h.orig 2022-05-11 15:32:29 UTC
++++ electron/shell/browser/ui/views/electron_views_delegate.h
+@@ -45,7 +45,7 @@ class ViewsDelegate : public views::ViewsDelegate {
+ bool IsWindowInMetro(gfx::NativeWindow window) const override;
+ int GetAppbarAutohideEdges(HMONITOR monitor,
+ base::OnceClosure callback) override;
+-#elif defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#elif (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ gfx::ImageSkia* GetDefaultWindowIcon() const override;
+ #endif
+ std::unique_ptr<views::NonClientFrameView> CreateDefaultNonClientFrameView(
diff --git a/devel/electron17/files/patch-electron_shell_browser_ui_views_inspectable__web__contents__view__views.cc b/devel/electron17/files/patch-electron_shell_browser_ui_views_inspectable__web__contents__view__views.cc
new file mode 100644
index 000000000000..b3d2243e65e5
--- /dev/null
+++ b/devel/electron17/files/patch-electron_shell_browser_ui_views_inspectable__web__contents__view__views.cc
@@ -0,0 +1,11 @@
+--- electron/shell/browser/ui/views/inspectable_web_contents_view_views.cc.orig 2022-05-11 15:32:29 UTC
++++ electron/shell/browser/ui/views/inspectable_web_contents_view_views.cc
+@@ -184,7 +184,7 @@ void InspectableWebContentsViewViews::SetIsDocked(bool
+ params.delegate = devtools_window_delegate_;
+ params.bounds = inspectable_web_contents()->GetDevToolsBounds();
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ params.wm_role_name = "devtools";
+ if (GetDelegate())
+ GetDelegate()->GetDevToolsWindowWMClass(&params.wm_class_name,
diff --git a/devel/electron17/files/patch-electron_shell_browser_ui_views_menu__bar.cc b/devel/electron17/files/patch-electron_shell_browser_ui_views_menu__bar.cc
new file mode 100644
index 000000000000..2cc3c78a4af7
--- /dev/null
+++ b/devel/electron17/files/patch-electron_shell_browser_ui_views_menu__bar.cc
@@ -0,0 +1,29 @@
+--- electron/shell/browser/ui/views/menu_bar.cc.orig 2021-12-03 01:46:05 UTC
++++ electron/shell/browser/ui/views/menu_bar.cc
+@@ -12,7 +12,7 @@
+ #include "ui/views/background.h"
+ #include "ui/views/layout/box_layout.h"
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "ui/gtk/gtk_util.h"
+ #endif
+
+@@ -209,7 +209,7 @@ void MenuBar::ButtonPressed(int id, const ui::Event& e
+
+ void MenuBar::RefreshColorCache(const ui::NativeTheme* theme) {
+ if (theme) {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ background_color_ = gtk::GetBgColor("GtkMenuBar#menubar");
+ enabled_color_ =
+ gtk::GetFgColor("GtkMenuBar#menubar GtkMenuItem#menuitem GtkLabel");
+@@ -241,7 +241,7 @@ void MenuBar::UpdateViewColors() {
+ // set child colors
+ if (menu_model_ == nullptr)
+ return;
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ const auto& textColor =
+ window_->IsFocused() ? enabled_color_ : disabled_color_;
+ for (auto* child : GetChildrenInZOrder()) {
diff --git a/devel/electron17/files/patch-electron_shell_browser_ui_views_menu__bar.h b/devel/electron17/files/patch-electron_shell_browser_ui_views_menu__bar.h
new file mode 100644
index 000000000000..a4485e87b681
--- /dev/null
+++ b/devel/electron17/files/patch-electron_shell_browser_ui_views_menu__bar.h
@@ -0,0 +1,11 @@
+--- electron/shell/browser/ui/views/menu_bar.h.orig 2022-05-11 15:32:29 UTC
++++ electron/shell/browser/ui/views/menu_bar.h
+@@ -79,7 +79,7 @@ class MenuBar : public views::AccessiblePaneView,
+ View* FindAccelChild(char16_t key);
+
+ SkColor background_color_;
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ SkColor enabled_color_;
+ SkColor disabled_color_;
+ #endif
diff --git a/devel/electron17/files/patch-electron_shell_browser_ui_views_submenu__button.cc b/devel/electron17/files/patch-electron_shell_browser_ui_views_submenu__button.cc
new file mode 100644
index 000000000000..11f7ab80fcdf
--- /dev/null
+++ b/devel/electron17/files/patch-electron_shell_browser_ui_views_submenu__button.cc
@@ -0,0 +1,11 @@
+--- electron/shell/browser/ui/views/submenu_button.cc.orig 2021-11-15 23:45:07 UTC
++++ electron/shell/browser/ui/views/submenu_button.cc
+@@ -22,7 +22,7 @@ SubmenuButton::SubmenuButton(PressedCallback callback,
+ const SkColor& background_color)
+ : views::MenuButton(callback, gfx::RemoveAccelerator(title)),
+ background_color_(background_color) {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Dont' use native style border.
+ SetBorder(CreateDefaultBorder());
+ #endif
diff --git a/devel/electron17/files/patch-electron_shell_common_api_electron__api__clipboard.cc b/devel/electron17/files/patch-electron_shell_common_api_electron__api__clipboard.cc
new file mode 100644
index 000000000000..431d98d49034
--- /dev/null
+++ b/devel/electron17/files/patch-electron_shell_common_api_electron__api__clipboard.cc
@@ -0,0 +1,20 @@
+--- electron/shell/common/api/electron_api_clipboard.cc.orig 2021-12-03 01:46:05 UTC
++++ electron/shell/common/api/electron_api_clipboard.cc
+@@ -56,7 +56,7 @@ std::string Clipboard::Read(const std::string& format_
+ ui::ClipboardFormatType::CustomPlatformType(format_string));
+ bool rawFormatAvailable = clipboard->IsFormatAvailable(
+ rawFormat, ui::ClipboardBuffer::kCopyPaste, /* data_dst = */ nullptr);
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ if (!rawFormatAvailable) {
+ rawFormatAvailable = clipboard->IsFormatAvailable(
+ rawFormat, ui::ClipboardBuffer::kSelection, /* data_dst = */ nullptr);
+@@ -72,7 +72,7 @@ std::string Clipboard::Read(const std::string& format_
+ custom_format_names =
+ clipboard->ExtractCustomPlatformNames(ui::ClipboardBuffer::kCopyPaste,
+ /* data_dst = */ nullptr);
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ if (custom_format_names.find(format_string) == custom_format_names.end()) {
+ custom_format_names =
+ clipboard->ExtractCustomPlatformNames(ui::ClipboardBuffer::kSelection,
diff --git a/devel/electron17/files/patch-electron_shell_common_api_electron__api__native__image.cc b/devel/electron17/files/patch-electron_shell_common_api_electron__api__native__image.cc
new file mode 100644
index 000000000000..eb9822d3d74a
--- /dev/null
+++ b/devel/electron17/files/patch-electron_shell_common_api_electron__api__native__image.cc
@@ -0,0 +1,11 @@
+--- electron/shell/common/api/electron_api_native_image.cc.orig 2022-05-04 15:34:10 UTC
++++ electron/shell/common/api/electron_api_native_image.cc
+@@ -642,7 +642,7 @@ void Initialize(v8::Local<v8::Object> exports,
+ native_image.SetMethod("createFromDataURL", &NativeImage::CreateFromDataURL);
+ native_image.SetMethod("createFromNamedImage",
+ &NativeImage::CreateFromNamedImage);
+-#if !defined(OS_LINUX)
++#if !defined(OS_LINUX) && !defined(OS_BSD)
+ native_image.SetMethod("createThumbnailFromPath",
+ &NativeImage::CreateThumbnailFromPath);
+ #endif
diff --git a/devel/electron17/files/patch-electron_shell_common_api_electron__api__native__image.h b/devel/electron17/files/patch-electron_shell_common_api_electron__api__native__image.h
new file mode 100644
index 000000000000..d41615958506
--- /dev/null
+++ b/devel/electron17/files/patch-electron_shell_common_api_electron__api__native__image.h
@@ -0,0 +1,11 @@
+--- electron/shell/common/api/electron_api_native_image.h.orig 2022-05-11 15:32:29 UTC
++++ electron/shell/common/api/electron_api_native_image.h
+@@ -78,7 +78,7 @@ class NativeImage : public gin::Wrappable<NativeImage>
+ const GURL& url);
+ static gin::Handle<NativeImage> CreateFromNamedImage(gin::Arguments* args,
+ std::string name);
+-#if !defined(OS_LINUX)
++#if !defined(OS_LINUX) && !defined(OS_BSD)
+ static v8::Local<v8::Promise> CreateThumbnailFromPath(
+ v8::Isolate* isolate,
+ const base::FilePath& path,
diff --git a/devel/electron17/files/patch-electron_shell_common_api_electron__bindings.cc b/devel/electron17/files/patch-electron_shell_common_api_electron__bindings.cc
new file mode 100644
index 000000000000..9d0d8efff2e0
--- /dev/null
+++ b/devel/electron17/files/patch-electron_shell_common_api_electron__bindings.cc
@@ -0,0 +1,11 @@
+--- electron/shell/common/api/electron_bindings.cc.orig 2021-10-11 17:12:26 UTC
++++ electron/shell/common/api/electron_bindings.cc
+@@ -267,7 +267,7 @@ void ElectronBindings::DidReceiveMemoryDump(
+ if (target_pid == dump.pid()) {
+ gin_helper::Dictionary dict = gin::Dictionary::CreateEmpty(isolate);
+ const auto& osdump = dump.os_dump();
+-#if defined(OS_LINUX) || defined(OS_WIN)
++#if defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
+ dict.Set("residentSet", osdump.resident_set_kb);
+ #endif
+ dict.Set("private", osdump.private_footprint_kb);
diff --git a/devel/electron17/files/patch-electron_shell_common_electron__command__line.cc b/devel/electron17/files/patch-electron_shell_common_electron__command__line.cc
new file mode 100644
index 000000000000..ababda28c125
--- /dev/null
+++ b/devel/electron17/files/patch-electron_shell_common_electron__command__line.cc
@@ -0,0 +1,11 @@
+--- electron/shell/common/electron_command_line.cc.orig 2021-01-22 23:55:24 UTC
++++ electron/shell/common/electron_command_line.cc
+@@ -26,7 +26,7 @@ void ElectronCommandLine::Init(int argc, base::Command
+ argv_.assign(argv, argv + argc);
+ }
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // static
+ void ElectronCommandLine::InitializeFromCommandLine() {
+ argv_ = base::CommandLine::ForCurrentProcess()->argv();
diff --git a/devel/electron17/files/patch-electron_shell_common_electron__command__line.h b/devel/electron17/files/patch-electron_shell_common_electron__command__line.h
new file mode 100644
index 000000000000..20ddc8f15bcc
--- /dev/null
+++ b/devel/electron17/files/patch-electron_shell_common_electron__command__line.h
@@ -0,0 +1,11 @@
+--- electron/shell/common/electron_command_line.h.orig 2022-05-11 15:32:29 UTC
++++ electron/shell/common/electron_command_line.h
+@@ -22,7 +22,7 @@ class ElectronCommandLine {
+
+ static void Init(int argc, base::CommandLine::CharType** argv);
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // On Linux the command line has to be read from base::CommandLine since
+ // it is using zygote.
+ static void InitializeFromCommandLine();
diff --git a/devel/electron17/files/patch-electron_shell_common_electron__paths.h b/devel/electron17/files/patch-electron_shell_common_electron__paths.h
new file mode 100644
index 000000000000..aba3013d28ff
--- /dev/null
+++ b/devel/electron17/files/patch-electron_shell_common_electron__paths.h
@@ -0,0 +1,11 @@
+--- electron/shell/common/electron_paths.h.orig 2022-05-11 15:32:29 UTC
++++ electron/shell/common/electron_paths.h
+@@ -29,7 +29,7 @@ enum {
+ DIR_RECENT, // Directory where recent files live
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ DIR_APP_DATA, // Application Data directory under the user profile.
+ #endif
+
diff --git a/devel/electron17/files/patch-electron_shell_common_node__bindings.cc b/devel/electron17/files/patch-electron_shell_common_node__bindings.cc
new file mode 100644
index 000000000000..b6b0ea631c53
--- /dev/null
+++ b/devel/electron17/files/patch-electron_shell_common_node__bindings.cc
@@ -0,0 +1,29 @@
+--- electron/shell/common/node_bindings.cc.orig 2021-11-15 23:45:07 UTC
++++ electron/shell/common/node_bindings.cc
+@@ -38,7 +38,7 @@
+ #include "shell/common/node_includes.h"
+ #include "third_party/blink/renderer/bindings/core/v8/v8_initializer.h" // nogncheck
+
+-#if !defined(MAS_BUILD)
++#if !defined(MAS_BUILD) && !defined(OS_BSD)
+ #include "shell/common/crash_keys.h"
+ #endif
+
+@@ -142,7 +142,7 @@ bool g_is_initialized = false;
+ void V8FatalErrorCallback(const char* location, const char* message) {
+ LOG(ERROR) << "Fatal error in V8: " << location << " " << message;
+
+-#if !defined(MAS_BUILD)
++#if !defined(MAS_BUILD) && !defined(OS_BSD)
+ electron::crash_keys::SetCrashKey("electron.v8-fatal.message", message);
+ electron::crash_keys::SetCrashKey("electron.v8-fatal.location", location);
+ #endif
+@@ -367,7 +367,7 @@ void NodeBindings::Initialize() {
+ // Open node's error reporting system for browser process.
+ node::g_upstream_node_mode = false;
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Get real command line in renderer process forked by zygote.
+ if (browser_env_ != BrowserEnvironment::kBrowser)
+ ElectronCommandLine::InitializeFromCommandLine();
diff --git a/devel/electron17/files/patch-electron_shell_common_node__bindings__linux.cc b/devel/electron17/files/patch-electron_shell_common_node__bindings__linux.cc
new file mode 100644
index 000000000000..d509165f304d
--- /dev/null
+++ b/devel/electron17/files/patch-electron_shell_common_node__bindings__linux.cc
@@ -0,0 +1,69 @@
+--- electron/shell/common/node_bindings_linux.cc.orig 2022-05-04 15:34:10 UTC
++++ electron/shell/common/node_bindings_linux.cc
+@@ -4,17 +4,31 @@
+
+ #include "shell/common/node_bindings_linux.h"
+
++#if !defined(OS_BSD)
+ #include <sys/epoll.h>
++#else
++#include <errno.h>
++#include <sys/select.h>
++#include <sys/sysctl.h>
++#include <sys/time.h>
++#include <sys/types.h>
++#endif
+
+ namespace electron {
+
+ NodeBindingsLinux::NodeBindingsLinux(BrowserEnvironment browser_env)
++#if !defined(OS_BSD)
+ : NodeBindings(browser_env), epoll_(epoll_create(1)) {
++#else
++ : NodeBindings(browser_env) {
++#endif
++#if !defined(OS_BSD)
+ int backend_fd = uv_backend_fd(uv_loop_);
+ struct epoll_event ev = {0};
+ ev.events = EPOLLIN;
+ ev.data.fd = backend_fd;
+ epoll_ctl(epoll_, EPOLL_CTL_ADD, backend_fd, &ev);
++#endif
+ }
+
+ NodeBindingsLinux::~NodeBindingsLinux() = default;
+@@ -55,6 +69,7 @@ void NodeBindingsLinux::OnWatcherQueueChanged(uv_loop_
+ }
+
+ void NodeBindingsLinux::PollEvents() {
++#if !defined(OS_BSD)
+ int timeout = uv_backend_timeout(uv_loop_);
+
+ // Wait for new libuv events.
+@@ -63,6 +78,26 @@ void NodeBindingsLinux::PollEvents() {
+ struct epoll_event ev;
+ r = epoll_wait(epoll_, &ev, 1, timeout);
+ } while (r == -1 && errno == EINTR);
++#else
++ struct timeval tv;
++ int timeout = uv_backend_timeout(uv_loop_);
++ if (timeout != -1) {
++ tv.tv_sec = timeout / 1000;
++ tv.tv_usec = (timeout % 1000) * 1000;
++ }
++
++ fd_set readset;
++ int fd = uv_backend_fd(uv_loop_);
++ FD_ZERO(&readset);
++ FD_SET(fd, &readset);
++
++ // Wait for new libuv events.
++ int r;
++ do {
++ r = select(fd + 1, &readset, nullptr, nullptr,
++ timeout == -1 ? nullptr : &tv);
++ } while (r == -1 && errno == EINTR);
++#endif
+ }
+
+ // static
diff --git a/devel/electron17/files/patch-electron_shell_common_platform__util.h b/devel/electron17/files/patch-electron_shell_common_platform__util.h
new file mode 100644
index 000000000000..21b802feb535
--- /dev/null
+++ b/devel/electron17/files/patch-electron_shell_common_platform__util.h
@@ -0,0 +1,11 @@
+--- electron/shell/common/platform_util.h.orig 2021-10-27 21:25:28 UTC
++++ electron/shell/common/platform_util.h
+@@ -52,7 +52,7 @@ bool GetLoginItemEnabled();
+ bool SetLoginItemEnabled(bool enabled);
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Returns a success flag.
+ // Unlike libgtkui, does *not* use "chromium-browser.desktop" as a fallback.
+ bool GetDesktopName(std::string* setme);
diff --git a/devel/electron17/files/patch-electron_shell_renderer_api_electron__api__crash__reporter__renderer.cc b/devel/electron17/files/patch-electron_shell_renderer_api_electron__api__crash__reporter__renderer.cc
new file mode 100644
index 000000000000..c48f33089c9c
--- /dev/null
+++ b/devel/electron17/files/patch-electron_shell_renderer_api_electron__api__crash__reporter__renderer.cc
@@ -0,0 +1,36 @@
+--- electron/shell/renderer/api/electron_api_crash_reporter_renderer.cc.orig 2021-01-26 05:34:17 UTC
++++ electron/shell/renderer/api/electron_api_crash_reporter_renderer.cc
+@@ -6,7 +6,7 @@
+ #include "shell/common/gin_helper/dictionary.h"
+ #include "shell/common/node_includes.h"
+
+-#if !defined(MAS_BUILD)
++#if !defined(MAS_BUILD) && !defined(OS_BSD)
+ #include "shell/common/crash_keys.h"
+ #endif
+
+@@ -14,13 +14,13 @@ namespace {
+
+ v8::Local<v8::Value> GetParameters(v8::Isolate* isolate) {
+ std::map<std::string, std::string> keys;
+-#if !defined(MAS_BUILD)
++#if !defined(MAS_BUILD) && !defined(OS_BSD)
+ electron::crash_keys::GetCrashKeys(&keys);
+ #endif
+ return gin::ConvertToV8(isolate, keys);
+ }
+
+-#if defined(MAS_BUILD)
++#if defined(MAS_BUILD) || defined(OS_BSD)
+ void SetCrashKeyStub(const std::string& key, const std::string& value) {}
+ void ClearCrashKeyStub(const std::string& key) {}
+ #endif
+@@ -30,7 +30,7 @@ void Initialize(v8::Local<v8::Object> exports,
+ v8::Local<v8::Context> context,
+ void* priv) {
+ gin_helper::Dictionary dict(context->GetIsolate(), exports);
+-#if defined(MAS_BUILD)
++#if defined(MAS_BUILD) || defined(OS_BSD)
+ dict.SetMethod("addExtraParameter", &SetCrashKeyStub);
+ dict.SetMethod("removeExtraParameter", &ClearCrashKeyStub);
+ #else
diff --git a/devel/electron17/files/patch-electron_spec-main_api-app-spec.ts b/devel/electron17/files/patch-electron_spec-main_api-app-spec.ts
new file mode 100644
index 000000000000..60b5e73f7eab
--- /dev/null
+++ b/devel/electron17/files/patch-electron_spec-main_api-app-spec.ts
@@ -0,0 +1,119 @@
+--- electron/spec-main/api-app-spec.ts.orig 2022-05-11 15:32:29 UTC
++++ electron/spec-main/api-app-spec.ts
+@@ -174,7 +174,7 @@ describe('app module', () => {
+ });
+
+ it('exits gracefully', async function () {
+- if (!['darwin', 'linux'].includes(process.platform)) {
++ if (!['darwin', 'linux', 'freebsd'].includes(process.platform)) {
+ this.skip();
+ return;
+ }
+@@ -436,7 +436,7 @@ describe('app module', () => {
+ // let w = null
+
+ // before(function () {
+- // if (process.platform !== 'linux') {
++ // if (process.platform !== 'linux' && process.platform !== 'freebsd') {
+ // this.skip()
+ // }
+ // })
+@@ -559,7 +559,7 @@ describe('app module', () => {
+ describe('app.badgeCount', () => {
+ const platformIsNotSupported =
+ (process.platform === 'win32') ||
+- (process.platform === 'linux' && !app.isUnityRunning());
++ ((process.platform === 'linux' || process.platform === 'freebsd') && !app.isUnityRunning());
+
+ const expectedBadgeCount = 42;
+
+@@ -603,7 +603,7 @@ describe('app module', () => {
+ });
+ });
+
+- ifdescribe(process.platform !== 'linux' && !process.mas)('app.get/setLoginItemSettings API', function () {
++ ifdescribe((process.platform !== 'linux' && process.platform !== 'freebsd') && !process.mas)('app.get/setLoginItemSettings API', function () {
+ const updateExe = path.resolve(path.dirname(process.execPath), '..', 'Update.exe');
+ const processStartArgs = [
+ '--processStart', `"${path.basename(process.execPath)}"`,
+@@ -920,7 +920,7 @@ describe('app module', () => {
+ });
+ });
+
+- ifdescribe(process.platform !== 'linux')('accessibilitySupportEnabled property', () => {
++ ifdescribe(process.platform !== 'linux' && process.platform !== 'freebsd')('accessibilitySupportEnabled property', () => {
+ it('with properties', () => {
+ it('can set accessibility support enabled', () => {
+ expect(app.accessibilitySupportEnabled).to.eql(false);
+@@ -1038,7 +1038,7 @@ describe('app module', () => {
+ let w: BrowserWindow;
+
+ before(function () {
+- if (process.platform === 'linux') {
++ if (process.platform === 'linux' || process.platform === 'freebsd') {
+ this.skip();
+ }
+ session.fromPartition('empty-certificate').setCertificateVerifyProc((req, cb) => { cb(0); });
+@@ -1179,7 +1179,7 @@ describe('app module', () => {
+ // We can't expect particular app names here, but these protocols should
+ // at least have _something_ registered. Except on our Linux CI
+ // environment apparently.
+- if (process.platform === 'linux') {
++ if (process.platform === 'linux' || process.platform === 'freebsd') {
+ this.skip();
+ }
+
+@@ -1197,7 +1197,7 @@ describe('app module', () => {
+ });
+ });
+
+- ifdescribe(process.platform !== 'linux')('getApplicationInfoForProtocol()', () => {
++ ifdescribe(process.platform !== 'linux' && process.platform !== 'freebsd')('getApplicationInfoForProtocol()', () => {
+ it('returns promise rejection for a bogus protocol', async function () {
+ await expect(
+ app.getApplicationInfoForProtocol('bogus-protocol://')
+@@ -1247,7 +1247,7 @@ describe('app module', () => {
+ });
+
+ // FIXME Get these specs running on Linux CI
+- ifdescribe(process.platform !== 'linux')('getFileIcon() API', () => {
++ ifdescribe(process.platform !== 'linux' && process.platform !== 'freebsd')('getFileIcon() API', () => {
+ const iconPath = path.join(__dirname, 'fixtures/assets/icon.ico');
+ const sizes = {
+ small: 16,
+@@ -1328,7 +1328,7 @@ describe('app module', () => {
+ expect(entry.memory).to.have.property('privateBytes').that.is.greaterThan(0);
+ }
+
+- if (process.platform !== 'linux') {
++ if (process.platform !== 'linux' && process.platform !== 'freebsd') {
+ expect(entry.sandboxed).to.be.a('boolean');
+ }
+
+@@ -1354,7 +1354,7 @@ describe('app module', () => {
+ });
+
+ // FIXME https://github.com/electron/electron/issues/24224
+- ifdescribe(process.platform !== 'linux')('getGPUInfo() API', () => {
++ ifdescribe(process.platform !== 'linux' && process.platform !== 'freebsd')('getGPUInfo() API', () => {
+ const appPath = path.join(fixturesPath, 'api', 'gpu-info.js');
+
+ const getGPUInfo = async (type: string) => {
+@@ -1403,7 +1403,7 @@ describe('app module', () => {
+
+ it('succeeds with complete GPUInfo', async () => {
+ const completeInfo = await getGPUInfo('complete');
+- if (process.platform === 'linux') {
++ if (process.platform === 'linux' || process.platform === 'freebsd') {
+ // For linux and macOS complete info is same as basic info
+ await verifyBasicGPUInfo(completeInfo);
+ const basicInfo = await getGPUInfo('basic');
+@@ -1433,7 +1433,7 @@ describe('app module', () => {
+ const socketPath = process.platform === 'win32' ? '\\\\.\\pipe\\electron-mixed-sandbox' : '/tmp/electron-mixed-sandbox';
+
+ beforeEach(function (done) {
+- if (process.platform === 'linux' && (process.arch === 'arm64' || process.arch === 'arm')) {
++ if ((process.platform === 'linux' || process.platform === 'freebsd') && (process.arch === 'arm64' || process.arch === 'arm')) {
+ // Our ARM tests are run on VSTS rather than CircleCI, and the Docker
+ // setup on VSTS disallows syscalls that Chrome requires for setting up
+ // sandboxing.
diff --git a/devel/electron17/files/patch-electron_spec-main_api-browser-window-spec.ts b/devel/electron17/files/patch-electron_spec-main_api-browser-window-spec.ts
new file mode 100644
index 000000000000..8bf37caa4e07
--- /dev/null
+++ b/devel/electron17/files/patch-electron_spec-main_api-browser-window-spec.ts
@@ -0,0 +1,128 @@
+--- electron/spec-main/api-browser-window-spec.ts.orig 2022-05-11 15:32:29 UTC
++++ electron/spec-main/api-browser-window-spec.ts
+@@ -58,7 +58,7 @@ describe('BrowserWindow module', () => {
+ }).not.to.throw();
+ });
+
+- ifit(process.platform === 'linux')('does not crash when setting large window icons', async () => {
++ ifit(process.platform === 'linux' || process.platform === 'freebsd')('does not crash when setting large window icons', async () => {
+ const appPath = path.join(__dirname, 'spec-main', 'fixtures', 'apps', 'xwindow-icon');
+ const appProcess = childProcess.spawn(process.execPath, [appPath]);
+ await new Promise((resolve) => { appProcess.once('exit', resolve); });
+@@ -736,7 +736,7 @@ describe('BrowserWindow module', () => {
+ });
+
+ // TODO(dsanders11): Enable for Linux once CI plays nice with these kinds of tests
+- ifit(process.platform !== 'linux')('should not restore maximized windows', async () => {
++ ifit(process.platform !== 'linux' && process.platform !== 'freebsd')('should not restore maximized windows', async () => {
+ const maximize = emittedOnce(w, 'maximize');
+ const shown = emittedOnce(w, 'show');
+ w.maximize();
+@@ -773,7 +773,7 @@ describe('BrowserWindow module', () => {
+ expect(w.isFocused()).to.equal(true);
+ });
+
+- ifit(process.platform !== 'linux')('acquires focus status from the other windows', async () => {
++ ifit(process.platform !== 'linux' && process.platform !== 'freebsd')('acquires focus status from the other windows', async () => {
+ const w1 = new BrowserWindow({ show: false });
+ const w2 = new BrowserWindow({ show: false });
+ const w3 = new BrowserWindow({ show: false });
+@@ -840,7 +840,7 @@ describe('BrowserWindow module', () => {
+ expect(w.isFocused()).to.equal(false);
+ });
+
+- ifit(process.platform !== 'linux')('transfers focus status to the next window', async () => {
++ ifit(process.platform !== 'linux' && process.platform !== 'freebsd')('transfers focus status to the next window', async () => {
+ const w1 = new BrowserWindow({ show: false });
+ const w2 = new BrowserWindow({ show: false });
+ const w3 = new BrowserWindow({ show: false });
+@@ -1218,7 +1218,7 @@ describe('BrowserWindow module', () => {
+ });
+ });
+
+- ifdescribe(process.platform !== 'linux')('Maximized state', () => {
++ ifdescribe(process.platform !== 'linux' && process.platform !== 'freebsd')('Maximized state', () => {
+ it('checks normal bounds when maximized', async () => {
+ const bounds = w.getBounds();
+ const maximize = emittedOnce(w, 'maximize');
+@@ -1297,7 +1297,7 @@ describe('BrowserWindow module', () => {
+ });
+ });
+
+- ifdescribe(process.platform !== 'linux')('Minimized state', () => {
++ ifdescribe(process.platform !== 'linux' && process.platform !== 'freebsd')('Minimized state', () => {
+ it('checks normal bounds when minimized', async () => {
+ const bounds = w.getBounds();
+ const minimize = emittedOnce(w, 'minimize');
+@@ -2009,7 +2009,7 @@ describe('BrowserWindow module', () => {
+ describe('BrowserWindow.setOpacity(opacity)', () => {
+ afterEach(closeAllWindows);
+
+- ifdescribe(process.platform !== 'linux')(('Windows and Mac'), () => {
++ ifdescribe(process.platform !== 'linux' && process.platform !== 'freebsd')(('Windows and Mac'), () => {
+ it('make window with initial opacity', () => {
+ const w = new BrowserWindow({ show: false, opacity: 0.5 });
+ expect(w.getOpacity()).to.equal(0.5);
+@@ -2035,7 +2035,7 @@ describe('BrowserWindow module', () => {
+ });
+ });
+
+- ifdescribe(process.platform === 'linux')(('Linux'), () => {
++ ifdescribe(process.platform === 'linux' || process.platform === 'freebsd')(('Linux'), () => {
+ it('sets 1 regardless of parameter', () => {
+ const w = new BrowserWindow({ show: false });
+ w.setOpacity(0);
+@@ -2841,7 +2841,7 @@ describe('BrowserWindow module', () => {
+ expect(test.versions).to.deep.equal(process.versions);
+ expect(test.contextId).to.be.a('string');
+
+- if (process.platform === 'linux' && test.osSandbox) {
++ if ((process.platform === 'linux' || process.platform === 'freebsd') && test.osSandbox) {
+ expect(test.creationTime).to.be.null('creation time');
+ expect(test.systemMemoryInfo).to.be.null('system memory info');
+ } else {
+@@ -3440,7 +3440,7 @@ describe('BrowserWindow module', () => {
+ });
+ });
+
+- ifdescribe(process.platform !== 'linux')('max/minimize events', () => {
++ ifdescribe(process.platform !== 'linux' && process.platform !== 'freebsd')('max/minimize events', () => {
+ afterEach(closeAllWindows);
+ it('emits an event when window is maximized', async () => {
+ const w = new BrowserWindow({ show: false });
+@@ -3694,7 +3694,7 @@ describe('BrowserWindow module', () => {
+ });
+
+ // TODO(dsanders11): Enable once maximize event works on Linux again on CI
+- ifdescribe(process.platform !== 'linux')('BrowserWindow.maximize()', () => {
++ ifdescribe(process.platform !== 'linux' && process.platform !== 'freebsd')('BrowserWindow.maximize()', () => {
+ afterEach(closeAllWindows);
+ it('should show the window if it is not currently shown', async () => {
+ const w = new BrowserWindow({ show: false });
+@@ -3731,7 +3731,7 @@ describe('BrowserWindow module', () => {
+
+ // TODO(dsanders11): Enable once minimize event works on Linux again.
+ // See https://github.com/electron/electron/issues/28699
+- ifit(process.platform !== 'linux')('should not restore a minimized window', async () => {
++ ifit(process.platform !== 'linux' && process.platform !== 'freebsd')('should not restore a minimized window', async () => {
+ const w = new BrowserWindow();
+ const minimize = emittedOnce(w, 'minimize');
+ w.minimize();
+@@ -4086,7 +4086,7 @@ describe('BrowserWindow module', () => {
+ });
+
+ // On Linux there is no "resizable" property of a window.
+- ifit(process.platform !== 'linux')('does affect maximizability when disabled and enabled', () => {
++ ifit(process.platform !== 'linux' && process.platform !== 'freebsd')('does affect maximizability when disabled and enabled', () => {
+ const w = new BrowserWindow({ show: false });
+ expect(w.resizable).to.be.true('resizable');
+
+@@ -4178,7 +4178,7 @@ describe('BrowserWindow module', () => {
+ });
+ });
+
+- ifdescribe(process.platform !== 'linux')('window states (excluding Linux)', () => {
++ ifdescribe(process.platform !== 'linux' && process.platform !== 'freebsd')('window states (excluding Linux)', () => {
+ // Not implemented on Linux.
+ afterEach(closeAllWindows);
+
diff --git a/devel/electron17/files/patch-electron_spec-main_api-crash-reporter-spec.ts b/devel/electron17/files/patch-electron_spec-main_api-crash-reporter-spec.ts
new file mode 100644
index 000000000000..d80213e01287
--- /dev/null
+++ b/devel/electron17/files/patch-electron_spec-main_api-crash-reporter-spec.ts
@@ -0,0 +1,56 @@
+--- electron/spec-main/api-crash-reporter-spec.ts.orig 2021-12-03 01:46:05 UTC
++++ electron/spec-main/api-crash-reporter-spec.ts
+@@ -12,7 +12,7 @@ import * as fs from 'fs';
+ import * as uuid from 'uuid';
+
+ const isWindowsOnArm = process.platform === 'win32' && process.arch === 'arm64';
+-const isLinuxOnArm = process.platform === 'linux' && process.arch.includes('arm');
++const isLinuxOnArm = ((process.platform === 'linux' || process.platform === 'freebsd') && process.arch.includes('arm'));
+
+ type CrashInfo = {
+ prod: string
+@@ -45,7 +45,7 @@ function checkCrash (expectedProcessType: string, fiel
+
+ // TODO(nornagon): minidumps are sometimes (not always) turning up empty on
+ // 32-bit Linux. Figure out why.
+- if (!(process.platform === 'linux' && process.arch === 'ia32')) {
++ if (!((process.platform === 'linux' || process.platform === 'freebsd') && process.arch === 'ia32')) {
+ expect(fields.upload_file_minidump.length).to.be.greaterThan(0);
+ }
+ }
+@@ -279,7 +279,7 @@ ifdescribe(!isLinuxOnArm && !process.mas && !process.e
+ setTimeout(() => process.crash());
+ }, port);
+ const crash = await waitForCrash();
+- expect(stitchLongCrashParam(crash, 'longParam')).to.have.lengthOf(160 * 127 + (process.platform === 'linux' ? 159 : 0), 'crash should have truncated longParam');
++ expect(stitchLongCrashParam(crash, 'longParam')).to.have.lengthOf(160 * 127 + ((process.platform === 'linux' || process.platform === 'freebsd') ? 159 : 0), 'crash should have truncated longParam');
+ });
+
+ it('should omit extra keys with names longer than the maximum', async () => {
+@@ -508,7 +508,7 @@ ifdescribe(!isLinuxOnArm && !process.mas && !process.e
+ }
+ }
+
+- const processList = process.platform === 'linux' ? ['main', 'renderer', 'sandboxed-renderer']
++ const processList = (process.platform === 'linux' || process.platform === 'freebsd') ? ['main', 'renderer', 'sandboxed-renderer']
+ : ['main', 'renderer', 'sandboxed-renderer', 'node'];
+ for (const crashingProcess of processList) {
+ describe(`when ${crashingProcess} crashes`, () => {
+@@ -520,7 +520,7 @@ ifdescribe(!isLinuxOnArm && !process.mas && !process.e
+ return app.getPath('crashDumps');
+ });
+ let reportsDir = crashesDir;
+- if (process.platform === 'darwin' || process.platform === 'linux') {
++ if (process.platform === 'darwin' || process.platform === 'linux' || process.platform === 'freebsd') {
+ reportsDir = path.join(crashesDir, 'completed');
+ } else if (process.platform === 'win32') {
+ reportsDir = path.join(crashesDir, 'reports');
+@@ -544,7 +544,7 @@ ifdescribe(!isLinuxOnArm && !process.mas && !process.e
+ expect(remoteCrashesDir).to.equal(crashesDir);
+
+ let reportsDir = crashesDir;
+- if (process.platform === 'darwin' || process.platform === 'linux') {
++ if (process.platform === 'darwin' || process.platform === 'linux' || process.platform === 'freebsd') {
+ reportsDir = path.join(crashesDir, 'completed');
+ } else if (process.platform === 'win32') {
+ reportsDir = path.join(crashesDir, 'reports');
diff --git a/devel/electron17/files/patch-electron_spec-main_api-desktop-capturer-spec.ts b/devel/electron17/files/patch-electron_spec-main_api-desktop-capturer-spec.ts
new file mode 100644
index 000000000000..68d67e96e8c8
--- /dev/null
+++ b/devel/electron17/files/patch-electron_spec-main_api-desktop-capturer-spec.ts
@@ -0,0 +1,74 @@
+--- electron/spec-main/api-desktop-capturer-spec.ts.orig 2022-05-11 15:32:29 UTC
++++ electron/spec-main/api-desktop-capturer-spec.ts
+@@ -23,7 +23,7 @@ ifdescribe(!process.arch.includes('arm') && process.pl
+ after(closeAllWindows);
+
+ // TODO(nornagon): figure out why this test is failing on Linux and re-enable it.
+- ifit(process.platform !== 'linux')('should return a non-empty array of sources', async () => {
++ ifit(process.platform !== 'linux' && process.platform !== 'freebsd')('should return a non-empty array of sources', async () => {
+ const sources = await desktopCapturer.getSources({ types: ['window', 'screen'] });
+ expect(sources).to.be.an('array').that.is.not.empty();
+ });
+@@ -34,7 +34,7 @@ ifdescribe(!process.arch.includes('arm') && process.pl
+ });
+
+ // TODO(nornagon): figure out why this test is failing on Linux and re-enable it.
+- ifit(process.platform !== 'linux')('does not throw an error when called more than once (regression)', async () => {
++ ifit(process.platform !== 'linux' && process.platform !== 'freebsd')('does not throw an error when called more than once (regression)', async () => {
+ const sources1 = await desktopCapturer.getSources({ types: ['window', 'screen'] });
+ expect(sources1).to.be.an('array').that.is.not.empty();
+
+@@ -42,7 +42,7 @@ ifdescribe(!process.arch.includes('arm') && process.pl
+ expect(sources2).to.be.an('array').that.is.not.empty();
+ });
+
+- ifit(process.platform !== 'linux')('responds to subsequent calls of different options', async () => {
++ ifit(process.platform !== 'linux' && process.platform !== 'freebsd')('responds to subsequent calls of different options', async () => {
+ const promise1 = desktopCapturer.getSources({ types: ['window'] });
+ await expect(promise1).to.eventually.be.fulfilled();
+
+@@ -51,7 +51,7 @@ ifdescribe(!process.arch.includes('arm') && process.pl
+ });
+
+ // Linux doesn't return any window sources.
+- ifit(process.platform !== 'linux')('returns an empty display_id for window sources on Windows and Mac', async () => {
++ ifit(process.platform !== 'linux' && process.platform !== 'freebsd')('returns an empty display_id for window sources on Windows and Mac', async () => {
+ const w = new BrowserWindow({ width: 200, height: 200 });
+ await w.loadURL('about:blank');
+
+@@ -63,7 +63,7 @@ ifdescribe(!process.arch.includes('arm') && process.pl
+ }
+ });
+
+- ifit(process.platform !== 'linux')('returns display_ids matching the Screen API on Windows and Mac', async () => {
++ ifit(process.platform !== 'linux' && process.platform !== 'freebsd')('returns display_ids matching the Screen API on Windows and Mac', async () => {
+ const displays = screen.getAllDisplays();
+ const sources = await desktopCapturer.getSources({ types: ['screen'] });
+ expect(sources).to.be.an('array').of.length(displays.length);
+@@ -108,7 +108,7 @@ ifdescribe(!process.arch.includes('arm') && process.pl
+ // TODO(julien.isorce): investigate why |sources| is empty on the linux
+ // bots while it is not on my workstation, as expected, with and without
+ // the --ci parameter.
+- if (process.platform === 'linux' && sources.length === 0) {
++ if ((process.platform === 'linux' || process.platform === 'freebsd') && sources.length === 0) {
+ it.skip('desktopCapturer.getSources returned an empty source list');
+ return;
+ }
+@@ -144,7 +144,7 @@ ifdescribe(!process.arch.includes('arm') && process.pl
+ // TODO(julien.isorce): investigate why |sources| is empty on the linux
+ // bots while it is not on my workstation, as expected, with and without
+ // the --ci parameter.
+- if (process.platform === 'linux' && sources.length === 0) {
++ if ((process.platform === 'linux' || process.platform === 'freebsd') && sources.length === 0) {
+ it.skip('desktopCapturer.getSources returned an empty source list');
+ return;
+ }
+@@ -188,7 +188,7 @@ ifdescribe(!process.arch.includes('arm') && process.pl
+ // TODO(julien.isorce): investigate why |sources| is empty on the linux
+ // bots while it is not on my workstation, as expected, with and without
+ // the --ci parameter.
+- if (process.platform === 'linux' && sources.length === 0) {
++ if ((process.platform === 'linux' || process.platform === 'freebsd') && sources.length === 0) {
+ wList.forEach((w) => {
+ if (w !== mainWindow) {
+ w.destroy();
diff --git a/devel/electron17/files/patch-electron_spec-main_api-net-log-spec.ts b/devel/electron17/files/patch-electron_spec-main_api-net-log-spec.ts
new file mode 100644
index 000000000000..d93c7cf23545
--- /dev/null
+++ b/devel/electron17/files/patch-electron_spec-main_api-net-log-spec.ts
@@ -0,0 +1,29 @@
+--- electron/spec-main/api-net-log-spec.ts.orig 2021-01-22 23:55:24 UTC
++++ electron/spec-main/api-net-log-spec.ts
+@@ -121,7 +121,7 @@ describe('netLog module', () => {
+ expect(JSON.parse(dump).events.some((x: any) => x.params && x.params.bytes && Buffer.from(x.params.bytes, 'base64').includes(unique))).to.be.true('uuid present in dump');
+ });
+
+- ifit(process.platform !== 'linux')('should begin and end logging automatically when --log-net-log is passed', async () => {
++ ifit(process.platform !== 'linux' && process.platform !== 'freebsd')('should begin and end logging automatically when --log-net-log is passed', async () => {
+ const appProcess = ChildProcess.spawn(process.execPath,
+ [appPath], {
+ env: {
+@@ -134,7 +134,7 @@ describe('netLog module', () => {
+ expect(fs.existsSync(dumpFile)).to.be.true('dump file exists');
+ });
+
+- ifit(process.platform !== 'linux')('should begin and end logging automtically when --log-net-log is passed, and behave correctly when .startLogging() and .stopLogging() is called', async () => {
++ ifit(process.platform !== 'linux' && process.platform !== 'freebsd')('should begin and end logging automtically when --log-net-log is passed, and behave correctly when .startLogging() and .stopLogging() is called', async () => {
+ const appProcess = ChildProcess.spawn(process.execPath,
+ [appPath], {
+ env: {
+@@ -150,7 +150,7 @@ describe('netLog module', () => {
+ expect(fs.existsSync(dumpFileDynamic)).to.be.true('dynamic dump file exists');
+ });
+
+- ifit(process.platform !== 'linux')('should end logging automatically when only .startLogging() is called', async () => {
++ ifit(process.platform !== 'linux' && process.platform !== 'freebsd')('should end logging automatically when only .startLogging() is called', async () => {
+ const appProcess = ChildProcess.spawn(process.execPath,
+ [appPath], {
+ env: {
diff --git a/devel/electron17/files/patch-electron_spec-main_api-notification-dbus-spec.ts b/devel/electron17/files/patch-electron_spec-main_api-notification-dbus-spec.ts
new file mode 100644
index 000000000000..107fa8e856a9
--- /dev/null
+++ b/devel/electron17/files/patch-electron_spec-main_api-notification-dbus-spec.ts
@@ -0,0 +1,11 @@
+--- electron/spec-main/api-notification-dbus-spec.ts.orig 2021-01-22 23:55:24 UTC
++++ electron/spec-main/api-notification-dbus-spec.ts
+@@ -12,7 +12,7 @@ import { app } from 'electron/main';
+ import { ifdescribe } from './spec-helpers';
+ import { promisify } from 'util';
+
+-const skip = process.platform !== 'linux' ||
++const skip = (process.platform !== 'linux' && process.platform !== 'freebsd') ||
+ process.arch === 'ia32' ||
+ process.arch.indexOf('arm') === 0 ||
+ !process.env.DBUS_SESSION_BUS_ADDRESS;
diff --git a/devel/electron17/files/patch-electron_spec-main_api-power-monitor-spec.ts b/devel/electron17/files/patch-electron_spec-main_api-power-monitor-spec.ts
new file mode 100644
index 000000000000..b6a464bc5f2f
--- /dev/null
+++ b/devel/electron17/files/patch-electron_spec-main_api-power-monitor-spec.ts
@@ -0,0 +1,11 @@
+--- electron/spec-main/api-power-monitor-spec.ts.orig 2021-01-22 23:55:24 UTC
++++ electron/spec-main/api-power-monitor-spec.ts
+@@ -15,7 +15,7 @@ describe('powerMonitor', () => {
+ let logindMock: any, dbusMockPowerMonitor: any, getCalls: any, emitSignal: any, reset: any;
+
+ // TODO(deepak1556): Enable on arm64 after upgrade, it crashes at the moment.
+- ifdescribe(process.platform === 'linux' && process.arch !== 'arm64' && process.env.DBUS_SYSTEM_BUS_ADDRESS != null)('when powerMonitor module is loaded with dbus mock', () => {
++ ifdescribe((process.platform === 'linux' || process.platform === 'freebsd') && process.arch !== 'arm64' && process.env.DBUS_SYSTEM_BUS_ADDRESS != null)('when powerMonitor module is loaded with dbus mock', () => {
+ before(async () => {
+ const systemBus = dbus.systemBus();
+ const loginService = systemBus.getService('org.freedesktop.login1');
diff --git a/devel/electron17/files/patch-electron_spec-main_api-safe-storage-spec.ts b/devel/electron17/files/patch-electron_spec-main_api-safe-storage-spec.ts
new file mode 100644
index 000000000000..3b352d2eed48
--- /dev/null
+++ b/devel/electron17/files/patch-electron_spec-main_api-safe-storage-spec.ts
@@ -0,0 +1,11 @@
+--- electron/spec-main/api-safe-storage-spec.ts.orig 2021-11-15 23:45:07 UTC
++++ electron/spec-main/api-safe-storage-spec.ts
+@@ -14,7 +14,7 @@ import * as fs from 'fs';
+ * when run on CI and linux.
+ */
+
+-ifdescribe(process.platform !== 'linux')('safeStorage module', () => {
++ifdescribe(process.platform !== 'linux' && process.platform !== 'freebsd')('safeStorage module', () => {
+ after(async () => {
+ const pathToEncryptedString = path.resolve(__dirname, 'fixtures', 'api', 'safe-storage', 'encrypted.txt');
+ if (fs.existsSync(pathToEncryptedString)) {
diff --git a/devel/electron17/files/patch-electron_spec-main_api-screen-spec.ts b/devel/electron17/files/patch-electron_spec-main_api-screen-spec.ts
new file mode 100644
index 000000000000..4bdd3ef89563
--- /dev/null
+++ b/devel/electron17/files/patch-electron_spec-main_api-screen-spec.ts
@@ -0,0 +1,38 @@
+--- electron/spec-main/api-screen-spec.ts.orig 2021-04-20 23:32:33 UTC
++++ electron/spec-main/api-screen-spec.ts
+@@ -29,7 +29,7 @@ describe('screen module', () => {
+ });
+
+ it('has the correct non-object properties', function () {
+- if (process.platform === 'linux') this.skip();
++ if (process.platform === 'linux' || process.platform === 'freebsd') this.skip();
+ const display = screen.getPrimaryDisplay();
+
+ expect(display).to.have.property('scaleFactor').that.is.a('number');
+@@ -46,7 +46,7 @@ describe('screen module', () => {
+ });
+
+ it('has a size object property', function () {
+- if (process.platform === 'linux') this.skip();
++ if (process.platform === 'linux' || process.platform === 'freebsd') this.skip();
+ const display = screen.getPrimaryDisplay();
+
+ expect(display).to.have.property('size').that.is.an('object');
+@@ -56,7 +56,7 @@ describe('screen module', () => {
+ });
+
+ it('has a workAreaSize object property', function () {
+- if (process.platform === 'linux') this.skip();
++ if (process.platform === 'linux' || process.platform === 'freebsd') this.skip();
+ const display = screen.getPrimaryDisplay();
+
+ expect(display).to.have.property('workAreaSize').that.is.an('object');
+@@ -66,7 +66,7 @@ describe('screen module', () => {
+ });
+
+ it('has a bounds object property', function () {
+- if (process.platform === 'linux') this.skip();
++ if (process.platform === 'linux' || process.platform === 'freebsd') this.skip();
+ const display = screen.getPrimaryDisplay();
+
+ expect(display).to.have.property('bounds').that.is.an('object');
diff --git a/devel/electron17/files/patch-electron_spec-main_api-shell-spec.ts b/devel/electron17/files/patch-electron_spec-main_api-shell-spec.ts
new file mode 100644
index 000000000000..0b4939eb0dac
--- /dev/null
+++ b/devel/electron17/files/patch-electron_spec-main_api-shell-spec.ts
@@ -0,0 +1,23 @@
+--- electron/spec-main/api-shell-spec.ts.orig 2021-10-27 21:25:28 UTC
++++ electron/spec-main/api-shell-spec.ts
+@@ -23,7 +23,7 @@ describe('shell module', () => {
+
+ afterEach(async () => {
+ // reset env vars to prevent side effects
+- if (process.platform === 'linux') {
++ if (process.platform === 'linux' || process.platform === 'freebsd') {
+ process.env.DE = envVars.de;
+ process.env.BROWSER = envVars.browser;
+ process.env.DISPLAY = envVars.display;
+@@ -36,6 +36,11 @@ describe('shell module', () => {
+ let requestReceived: Promise<any>;
+ if (process.platform === 'linux') {
+ process.env.BROWSER = '/bin/true';
++ process.env.DE = 'generic';
++ process.env.DISPLAY = '';
++ requestReceived = Promise.resolve();
++ } else if (process.platform === 'freebsd') {
++ process.env.BROWSER = '/usr/bin/true';
+ process.env.DE = 'generic';
+ process.env.DISPLAY = '';
+ requestReceived = Promise.resolve();
diff --git a/devel/electron17/files/patch-electron_spec-main_api-subframe-spec.ts b/devel/electron17/files/patch-electron_spec-main_api-subframe-spec.ts
new file mode 100644
index 000000000000..aa620c9db292
--- /dev/null
+++ b/devel/electron17/files/patch-electron_spec-main_api-subframe-spec.ts
@@ -0,0 +1,11 @@
+--- electron/spec-main/api-subframe-spec.ts.orig 2021-04-20 23:32:33 UTC
++++ electron/spec-main/api-subframe-spec.ts
+@@ -213,7 +213,7 @@ describe('renderer nodeIntegrationInSubFrames', () =>
+ });
+
+ // app.getAppMetrics() does not return sandbox information on Linux.
+-ifdescribe(process.platform !== 'linux')('cross-site frame sandboxing', () => {
++ifdescribe(process.platform !== 'linux' && process.platform !== 'freebsd')('cross-site frame sandboxing', () => {
+ let server: http.Server;
+ let crossSiteUrl: string;
+ let serverUrl: string;
diff --git a/devel/electron17/files/patch-electron_spec-main_api-tray-spec.ts b/devel/electron17/files/patch-electron_spec-main_api-tray-spec.ts
new file mode 100644
index 000000000000..43ac252e443d
--- /dev/null
+++ b/devel/electron17/files/patch-electron_spec-main_api-tray-spec.ts
@@ -0,0 +1,11 @@
+--- electron/spec-main/api-tray-spec.ts.orig 2021-01-22 23:55:24 UTC
++++ electron/spec-main/api-tray-spec.ts
+@@ -125,7 +125,7 @@ describe('tray module', () => {
+ describe('tray.getBounds()', () => {
+ afterEach(() => { tray.destroy(); });
+
+- ifit(process.platform !== 'linux')('returns a bounds object', function () {
++ ifit(process.platform !== 'linux' && process.platform !== 'freebsd')('returns a bounds object', function () {
+ const bounds = tray.getBounds();
+ expect(bounds).to.be.an('object').and.to.have.all.keys('x', 'y', 'width', 'height');
+ });
diff --git a/devel/electron17/files/patch-electron_spec-main_api-web-contents-spec.ts b/devel/electron17/files/patch-electron_spec-main_api-web-contents-spec.ts
new file mode 100644
index 000000000000..910f54106aae
--- /dev/null
+++ b/devel/electron17/files/patch-electron_spec-main_api-web-contents-spec.ts
@@ -0,0 +1,11 @@
+--- electron/spec-main/api-web-contents-spec.ts.orig 2021-11-08 18:41:28 UTC
++++ electron/spec-main/api-web-contents-spec.ts
+@@ -179,7 +179,7 @@ describe('webContents module', () => {
+ }).to.throw('webContents.print(): Invalid optional callback provided.');
+ });
+
+- ifit(process.platform !== 'linux')('throws when an invalid deviceName is passed', () => {
++ ifit(process.platform !== 'linux' && process.platform !== 'freebsd')('throws when an invalid deviceName is passed', () => {
+ expect(() => {
+ w.webContents.print({ deviceName: 'i-am-a-nonexistent-printer' }, () => {});
+ }).to.throw('webContents.print(): Invalid deviceName provided.');
diff --git a/devel/electron17/files/patch-electron_spec-main_chromium-spec.ts b/devel/electron17/files/patch-electron_spec-main_chromium-spec.ts
new file mode 100644
index 000000000000..30eb1ac31ca9
--- /dev/null
+++ b/devel/electron17/files/patch-electron_spec-main_chromium-spec.ts
@@ -0,0 +1,44 @@
+--- electron/spec-main/chromium-spec.ts.orig 2022-05-11 15:32:29 UTC
++++ electron/spec-main/chromium-spec.ts
+@@ -404,13 +404,13 @@ describe('command line switches', () => {
+ it('should not set an invalid locale', async () => testLocale('asdfkl', currentLocale));
+
+ const lcAll = String(process.env.LC_ALL);
+- ifit(process.platform === 'linux')('current process has a valid LC_ALL env', async () => {
++ ifit(process.platform === 'linux' || process.platform === 'freebsd')('current process has a valid LC_ALL env', async () => {
+ // The LC_ALL env should not be set to DOM locale string.
+ expect(lcAll).to.not.equal(app.getLocale());
+ });
+- ifit(process.platform === 'linux')('should not change LC_ALL', async () => testLocale('fr', lcAll, true));
+- ifit(process.platform === 'linux')('should not change LC_ALL when setting invalid locale', async () => testLocale('asdfkl', lcAll, true));
+- ifit(process.platform === 'linux')('should not change LC_ALL when --lang is not set', async () => testLocale('', lcAll, true));
++ ifit(process.platform === 'linux' || process.platform === 'freebsd')('should not change LC_ALL', async () => testLocale('fr', lcAll, true));
++ ifit(process.platform === 'linux' || process.platform === 'freebsd')('should not change LC_ALL when setting invalid locale', async () => testLocale('asdfkl', lcAll, true));
++ ifit(process.platform === 'linux' || process.platform === 'freebsd')('should not change LC_ALL when --lang is not set', async () => testLocale('', lcAll, true));
+ });
+
+ describe('--remote-debugging-pipe switch', () => {
+@@ -1581,12 +1581,12 @@ describe('font fallback', () => {
+ expect(fonts[0].familyName).to.equal('Arial');
+ } else if (process.platform === 'darwin') {
+ expect(fonts[0].familyName).to.equal('Helvetica');
+- } else if (process.platform === 'linux') {
++ } else if (process.platform === 'linux' || process.platform === 'freebsd') {
+ expect(fonts[0].familyName).to.equal('DejaVu Sans');
+ } // I think this depends on the distro? We don't specify a default.
+ });
+
+- ifit(process.platform !== 'linux')('should fall back to Japanese font for sans-serif Japanese script', async function () {
++ ifit(process.platform !== 'linux' && process.platform !== 'freebsd')('should fall back to Japanese font for sans-serif Japanese script', async function () {
+ const html = `
+ <html lang="ja-JP">
+ <head>
+@@ -1783,7 +1783,7 @@ describe('navigator.clipboard', () => {
+ });
+ });
+
+-ifdescribe((process.platform !== 'linux' || app.isUnityRunning()))('navigator.setAppBadge/clearAppBadge', () => {
++ifdescribe(((process.platform !== 'linux' && process.platform !== 'freebsd') || app.isUnityRunning()))('navigator.setAppBadge/clearAppBadge', () => {
+ let w: BrowserWindow;
+
+ const expectedBadgeCount = 42;
diff --git a/devel/electron17/files/patch-electron_spec-main_fixtures_apps_crash_node-crash.js b/devel/electron17/files/patch-electron_spec-main_fixtures_apps_crash_node-crash.js
new file mode 100644
index 000000000000..2bd671d8ef04
--- /dev/null
+++ b/devel/electron17/files/patch-electron_spec-main_fixtures_apps_crash_node-crash.js
@@ -0,0 +1,8 @@
+--- electron/spec-main/fixtures/apps/crash/node-crash.js.orig 2021-01-22 23:55:24 UTC
++++ electron/spec-main/fixtures/apps/crash/node-crash.js
+@@ -1,4 +1,4 @@
+-if (process.platform === 'linux') {
++if (process.platform === 'linux' || process.platform === 'freebsd') {
+ process.crashReporter.start({
+ submitURL: process.argv[2],
+ productName: 'Zombies',
diff --git a/devel/electron17/files/patch-electron_spec-main_fixtures_native-addon_uv-dlopen_index.js b/devel/electron17/files/patch-electron_spec-main_fixtures_native-addon_uv-dlopen_index.js
new file mode 100644
index 000000000000..0944ccde78a1
--- /dev/null
+++ b/devel/electron17/files/patch-electron_spec-main_fixtures_native-addon_uv-dlopen_index.js
@@ -0,0 +1,11 @@
+--- electron/spec-main/fixtures/native-addon/uv-dlopen/index.js.orig 2021-01-25 12:27:55 UTC
++++ electron/spec-main/fixtures/native-addon/uv-dlopen/index.js
+@@ -2,7 +2,7 @@ const testLoadLibrary = require('./build/Release/test_
+
+ const lib = (() => {
+ switch (process.platform) {
+- case 'linux':
++ case 'linux': case 'freebsd':
+ return `${__dirname}/build/Release/foo.so`;
+ case 'darwin':
+ return `${__dirname}/build/Release/foo.dylib`;
diff --git a/devel/electron17/files/patch-electron_spec-main_version-bump-spec.ts b/devel/electron17/files/patch-electron_spec-main_version-bump-spec.ts
new file mode 100644
index 000000000000..1581c8ed08d6
--- /dev/null
+++ b/devel/electron17/files/patch-electron_spec-main_version-bump-spec.ts
@@ -0,0 +1,11 @@
+--- electron/spec-main/version-bump-spec.ts.orig 2021-11-15 23:45:07 UTC
++++ electron/spec-main/version-bump-spec.ts
+@@ -186,7 +186,7 @@ describe('version-bumper', () => {
+
+ // On macOS Circle CI we don't have a real git environment due to running
+ // gclient sync on a linux machine. These tests therefore don't run as expected.
+- ifdescribe(!(process.platform === 'linux' && process.arch.indexOf('arm') === 0) && process.platform !== 'darwin')('nextVersion', () => {
++ ifdescribe(!((process.platform === 'linux' || process.platform === 'freebsd') && process.arch.indexOf('arm') === 0) && process.platform !== 'darwin')('nextVersion', () => {
+ describe('bump versions', () => {
+ const nightlyPattern = /[0-9.]*(-nightly.(\d{4})(\d{2})(\d{2}))$/g;
+ const betaPattern = /[0-9.]*(-beta[0-9.]*)/g;
diff --git a/devel/electron17/files/patch-electron_spec-main_visibility-state-spec.ts b/devel/electron17/files/patch-electron_spec-main_visibility-state-spec.ts
new file mode 100644
index 000000000000..59a7a8c76dca
--- /dev/null
+++ b/devel/electron17/files/patch-electron_spec-main_visibility-state-spec.ts
@@ -0,0 +1,11 @@
+--- electron/spec-main/visibility-state-spec.ts.orig 2021-01-22 23:55:24 UTC
++++ electron/spec-main/visibility-state-spec.ts
+@@ -9,7 +9,7 @@ import { ifdescribe, delay } from './spec-helpers';
+
+ // visibilityState specs pass on linux with a real window manager but on CI
+ // the environment does not let these specs pass
+-ifdescribe(process.platform !== 'linux')('document.visibilityState', () => {
++ifdescribe(process.platform !== 'linux' && process.platform !== 'freebsd')('document.visibilityState', () => {
+ let w: BrowserWindow;
+
+ afterEach(() => {
diff --git a/devel/electron17/files/patch-electron_spec-main_webview-spec.ts b/devel/electron17/files/patch-electron_spec-main_webview-spec.ts
new file mode 100644
index 000000000000..10a46ea47d82
--- /dev/null
+++ b/devel/electron17/files/patch-electron_spec-main_webview-spec.ts
@@ -0,0 +1,11 @@
+--- electron/spec-main/webview-spec.ts.orig 2022-05-11 15:32:29 UTC
++++ electron/spec-main/webview-spec.ts
+@@ -453,7 +453,7 @@ describe('<webview> tag', function () {
+
+ // FIXME(zcbenz): Fullscreen events do not work on Linux.
+ // This test is flaky on arm64 macOS.
+- ifit(process.platform !== 'linux' && process.arch !== 'arm64')('exiting fullscreen should unfullscreen window', async () => {
++ ifit((process.platform !== 'linux' && process.platform !== 'freebsd') && process.arch !== 'arm64')('exiting fullscreen should unfullscreen window', async () => {
+ const [w, webview] = await loadWebViewWindow();
+ const enterFullScreen = emittedOnce(w, 'enter-full-screen');
+ await webview.executeJavaScript('document.getElementById("div").requestFullscreen()', true);
diff --git a/devel/electron17/files/patch-electron_spec_api-clipboard-spec.js b/devel/electron17/files/patch-electron_spec_api-clipboard-spec.js
new file mode 100644
index 000000000000..a2cef9df9914
--- /dev/null
+++ b/devel/electron17/files/patch-electron_spec_api-clipboard-spec.js
@@ -0,0 +1,29 @@
+--- electron/spec/api-clipboard-spec.js.orig 2021-12-03 01:46:05 UTC
++++ electron/spec/api-clipboard-spec.js
+@@ -44,7 +44,7 @@ ifdescribe(process.platform !== 'win32' || process.arc
+ });
+ });
+
+- ifdescribe(process.platform !== 'linux')('clipboard.readBookmark', () => {
++ ifdescribe(process.platform !== 'linux' && process.platform !== 'freebsd')('clipboard.readBookmark', () => {
+ it('returns title and url', () => {
+ clipboard.writeBookmark('a title', 'https://electronjs.org');
+
+@@ -63,7 +63,7 @@ ifdescribe(process.platform !== 'win32' || process.arc
+ });
+
+ describe('clipboard.read()', () => {
+- ifit(process.platform !== 'linux')('does not crash when reading various custom clipboard types', () => {
++ ifit(process.platform !== 'linux' && process.platform !== 'freebsd')('does not crash when reading various custom clipboard types', () => {
+ const type = process.platform === 'darwin' ? 'NSFilenamesPboardType' : 'FileNameW';
+
+ expect(() => {
+@@ -100,7 +100,7 @@ ifdescribe(process.platform !== 'win32' || process.arc
+ const readImage = clipboard.readImage();
+ expect(readImage.toDataURL()).to.equal(i.toDataURL());
+
+- if (process.platform !== 'linux') {
++ if (process.platform !== 'linux' && process.platform !== 'freebsd') {
+ if (process.platform !== 'win32') {
+ expect(clipboard.readBookmark()).to.deep.equal(bookmark);
+ } else {
diff --git a/devel/electron17/files/patch-electron_spec_api-native-image-spec.js b/devel/electron17/files/patch-electron_spec_api-native-image-spec.js
new file mode 100644
index 000000000000..b08996db2535
--- /dev/null
+++ b/devel/electron17/files/patch-electron_spec_api-native-image-spec.js
@@ -0,0 +1,11 @@
+--- electron/spec/api-native-image-spec.js.orig 2021-01-22 23:55:24 UTC
++++ electron/spec/api-native-image-spec.js
+@@ -491,7 +491,7 @@ describe('nativeImage module', () => {
+ });
+ });
+
+- ifdescribe(process.platform !== 'linux')('createThumbnailFromPath(path, size)', () => {
++ ifdescribe(process.platform !== 'linux' && process.platform !== 'freebsd')('createThumbnailFromPath(path, size)', () => {
+ it('throws when invalid size is passed', async () => {
+ const badSize = { width: -1, height: -1 };
+
diff --git a/devel/electron17/files/patch-electron_spec_api-process-spec.js b/devel/electron17/files/patch-electron_spec_api-process-spec.js
new file mode 100644
index 000000000000..8ff525c110d6
--- /dev/null
+++ b/devel/electron17/files/patch-electron_spec_api-process-spec.js
@@ -0,0 +1,11 @@
+--- electron/spec/api-process-spec.js.orig 2021-01-22 23:55:24 UTC
++++ electron/spec/api-process-spec.js
+@@ -50,7 +50,7 @@ describe('process module', () => {
+ it('resolves promise successfully with valid data', async () => {
+ const memoryInfo = await process.getProcessMemoryInfo();
+ expect(memoryInfo).to.be.an('object');
+- if (process.platform === 'linux' || process.platform === 'windows') {
++ if (process.platform === 'linux' || process.platform === 'windows' || process.platform === 'freebsd') {
+ expect(memoryInfo.residentSet).to.be.a('number').greaterThan(0);
+ }
+ expect(memoryInfo.private).to.be.a('number').greaterThan(0);
diff --git a/devel/electron17/files/patch-electron_spec_chromium-spec.js b/devel/electron17/files/patch-electron_spec_chromium-spec.js
new file mode 100644
index 000000000000..aa3eae3d6739
--- /dev/null
+++ b/devel/electron17/files/patch-electron_spec_chromium-spec.js
@@ -0,0 +1,11 @@
+--- electron/spec/chromium-spec.js.orig 2022-02-14 19:53:12 UTC
++++ electron/spec/chromium-spec.js
+@@ -225,7 +225,7 @@ describe('chromium feature', () => {
+ });
+
+ it('can be get as context in canvas', () => {
+- if (process.platform === 'linux') {
++ if (process.platform === 'linux' || process.platform === 'freebsd') {
+ // FIXME(alexeykuzmin): Skip the test.
+ // this.skip()
+ return;
diff --git a/devel/electron17/files/patch-electron_spec_node-spec.js b/devel/electron17/files/patch-electron_spec_node-spec.js
new file mode 100644
index 000000000000..60ffbd2d63a9
--- /dev/null
+++ b/devel/electron17/files/patch-electron_spec_node-spec.js
@@ -0,0 +1,11 @@
+--- electron/spec/node-spec.js.orig 2021-01-22 23:55:24 UTC
++++ electron/spec/node-spec.js
+@@ -130,7 +130,7 @@ describe('node feature', () => {
+ });
+
+ describe('child_process.exec', () => {
+- (process.platform === 'linux' ? it : it.skip)('allows executing a setuid binary from non-sandboxed renderer', () => {
++ (process.platform === 'linux' || process.platform === 'freebsd' ? it : it.skip)('allows executing a setuid binary from non-sandboxed renderer', () => {
+ // Chrome uses prctl(2) to set the NO_NEW_PRIVILEGES flag on Linux (see
+ // https://github.com/torvalds/linux/blob/40fde647cc/Documentation/userspace-api/no_new_privs.rst).
+ // We disable this for unsandboxed processes, which the renderer tests
diff --git a/devel/electron17/files/patch-extensions_browser_api_messaging_message__service.cc b/devel/electron17/files/patch-extensions_browser_api_messaging_message__service.cc
new file mode 100644
index 000000000000..c9180d9ec508
--- /dev/null
+++ b/devel/electron17/files/patch-extensions_browser_api_messaging_message__service.cc
@@ -0,0 +1,20 @@
+--- extensions/browser/api/messaging/message_service.cc.orig 2022-05-11 07:16:52 UTC
++++ extensions/browser/api/messaging/message_service.cc
+@@ -74,7 +74,7 @@ namespace {
+ const char kReceivingEndDoesntExistError[] =
+ "Could not establish connection. Receiving end does not exist.";
+ #if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || \
+- defined(OS_CHROMEOS)
++ defined(OS_CHROMEOS) || defined(OS_BSD)
+ const char kMissingPermissionError[] =
+ "Access to native messaging requires nativeMessaging permission.";
+ const char kProhibitedByPoliciesError[] =
+@@ -439,7 +439,7 @@ void MessageService::OpenChannelToNativeApp(
+ return;
+
+ #if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || \
+- defined(OS_CHROMEOS)
++ defined(OS_CHROMEOS) || defined(OS_BSD)
+ bool has_permission = extension->permissions_data()->HasAPIPermission(
+ mojom::APIPermissionID::kNativeMessaging);
+ if (!has_permission) {
diff --git a/devel/electron17/files/patch-extensions_browser_api_networking__private_networking__private__delegate__factory.cc b/devel/electron17/files/patch-extensions_browser_api_networking__private_networking__private__delegate__factory.cc
new file mode 100644
index 000000000000..084f1ee54541
--- /dev/null
+++ b/devel/electron17/files/patch-extensions_browser_api_networking__private_networking__private__delegate__factory.cc
@@ -0,0 +1,20 @@
+--- extensions/browser/api/networking_private/networking_private_delegate_factory.cc.orig 2021-04-14 01:08:49 UTC
++++ extensions/browser/api/networking_private/networking_private_delegate_factory.cc
+@@ -12,7 +12,7 @@
+
+ #if BUILDFLAG(IS_CHROMEOS_ASH)
+ #include "extensions/browser/api/networking_private/networking_private_chromeos.h"
+-#elif defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#elif defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ #include "extensions/browser/api/networking_private/networking_private_linux.h"
+ #elif defined(OS_WIN) || defined(OS_MAC)
+ #include "components/wifi/wifi_service.h"
+@@ -62,7 +62,7 @@ KeyedService* NetworkingPrivateDelegateFactory::BuildS
+ NetworkingPrivateDelegate* delegate;
+ #if BUILDFLAG(IS_CHROMEOS_ASH)
+ delegate = new NetworkingPrivateChromeOS(browser_context);
+-#elif defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#elif defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ delegate = new NetworkingPrivateLinux();
+ #elif defined(OS_WIN) || defined(OS_MAC)
+ std::unique_ptr<wifi::WiFiService> wifi_service(wifi::WiFiService::Create());
diff --git a/devel/electron17/files/patch-extensions_browser_browser__context__keyed__service__factories.cc b/devel/electron17/files/patch-extensions_browser_browser__context__keyed__service__factories.cc
new file mode 100644
index 000000000000..111434eb0182
--- /dev/null
+++ b/devel/electron17/files/patch-extensions_browser_browser__context__keyed__service__factories.cc
@@ -0,0 +1,11 @@
+--- extensions/browser/browser_context_keyed_service_factories.cc.orig 2022-05-11 07:16:52 UTC
++++ extensions/browser/browser_context_keyed_service_factories.cc
+@@ -89,7 +89,7 @@ void EnsureBrowserContextKeyedServiceFactoriesBuilt()
+ IdleManagerFactory::GetInstance();
+ ManagementAPI::GetFactoryInstance();
+ #if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_WIN) || \
+- defined(OS_MAC)
++ defined(OS_MAC) || defined(OS_BSD)
+ NetworkingPrivateEventRouterFactory::GetInstance();
+ #endif
+ PowerAPI::GetFactoryInstance();
diff --git a/devel/electron17/files/patch-extensions_browser_extension__prefs.cc b/devel/electron17/files/patch-extensions_browser_extension__prefs.cc
new file mode 100644
index 000000000000..ac88bf79e2b2
--- /dev/null
+++ b/devel/electron17/files/patch-extensions_browser_extension__prefs.cc
@@ -0,0 +1,11 @@
+--- extensions/browser/extension_prefs.cc.orig 2022-05-11 07:16:52 UTC
++++ extensions/browser/extension_prefs.cc
+@@ -2252,7 +2252,7 @@ void ExtensionPrefs::RegisterProfilePrefs(
+ registry->RegisterStringPref(pref_names::kLastChromeVersion, std::string());
+ registry->RegisterDictionaryPref(kInstallSignature);
+ registry->RegisterListPref(kExternalUninstalls);
+-#if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || defined(OS_BSD)
+ registry->RegisterBooleanPref(pref_names::kChromeAppsEnabled, false);
+ #endif
+ registry->RegisterBooleanPref(pref_names::kU2fSecurityKeyApiEnabled, false);
diff --git a/devel/electron17/files/patch-extensions_browser_pref__names.cc b/devel/electron17/files/patch-extensions_browser_pref__names.cc
new file mode 100644
index 000000000000..7d149fdab7fa
--- /dev/null
+++ b/devel/electron17/files/patch-extensions_browser_pref__names.cc
@@ -0,0 +1,11 @@
+--- extensions/browser/pref_names.cc.orig 2021-11-19 04:25:17 UTC
++++ extensions/browser/pref_names.cc
+@@ -47,7 +47,7 @@ const char kStorageGarbageCollect[] = "extensions.stor
+ const char kToolbar[] = "extensions.toolbar";
+ const char kDeletedComponentExtensions[] =
+ "extensions.deleted_component_extensions";
+-#if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || defined(OS_BSD)
+ extern const char kChromeAppsEnabled[] = "extensions.chrome_apps_enabled";
+ #endif
+ const char kU2fSecurityKeyApiEnabled[] =
diff --git a/devel/electron17/files/patch-extensions_browser_pref__names.h b/devel/electron17/files/patch-extensions_browser_pref__names.h
new file mode 100644
index 000000000000..d06144d1094e
--- /dev/null
+++ b/devel/electron17/files/patch-extensions_browser_pref__names.h
@@ -0,0 +1,11 @@
+--- extensions/browser/pref_names.h.orig 2021-11-19 04:25:17 UTC
++++ extensions/browser/pref_names.h
+@@ -101,7 +101,7 @@ extern const char kToolbar[];
+ // uninstalled/removed and should not be reloaded.
+ extern const char kDeletedComponentExtensions[];
+
+-#if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || defined(OS_BSD)
+ // A preference for whether Chrome Apps should be allowed. The default depends
+ // on the ChromeAppsDeprecation feature flag, and this pref can extend support
+ // for Chrome Apps by enterprise policy.
diff --git a/devel/electron17/files/patch-extensions_common_api___permission__features.json b/devel/electron17/files/patch-extensions_common_api___permission__features.json
new file mode 100644
index 000000000000..c6f7bfac41b1
--- /dev/null
+++ b/devel/electron17/files/patch-extensions_common_api___permission__features.json
@@ -0,0 +1,29 @@
+--- extensions/common/api/_permission_features.json.orig 2022-05-11 07:16:52 UTC
++++ extensions/common/api/_permission_features.json
+@@ -134,7 +134,7 @@
+ {
+ "channel": "stable",
+ "extension_types": ["platform_app"],
+- "platforms": ["chromeos", "win", "mac", "linux"],
++ "platforms": ["chromeos", "win", "mac", "linux", "openbsd"],
+ "allowlist": [
+ "1C93BD3CF875F4A73C0B2A163BB8FBDA8B8B3D80", // http://crbug.com/387169
+ "A3BC37E2148AC4E99BE4B16AF9D42DD1E592BBBE", // http://crbug.com/387169
+@@ -445,7 +445,7 @@
+ }, {
+ "channel": "stable",
+ "extension_types": ["extension", "legacy_packaged_app", "platform_app"],
+- "platforms": ["chromeos", "mac", "win", "linux", "fuchsia"],
++ "platforms": ["chromeos", "mac", "win", "linux", "fuchsia", "openbsd"],
+ "allowlist": [
+ "0DE0F05680A4A056BCEC864ED8DDA84296F82B40", // http://crbug.com/434651
+ "1C93BD3CF875F4A73C0B2A163BB8FBDA8B8B3D80", // http://crbug.com/293683
+@@ -481,7 +481,7 @@
+ "networkingPrivate": {
+ "channel": "stable",
+ "extension_types": ["extension", "legacy_packaged_app", "platform_app"],
+- "platforms": ["chromeos", "mac", "win", "linux", "fuchsia"],
++ "platforms": ["chromeos", "mac", "win", "linux", "fuchsia", "openbsd"],
+ "allowlist": [
+ // DO NOT ADD ANY MORE ENTRIES HERE.
+ // networkingPrivate is being migrated to networking.onc.
diff --git a/devel/electron17/files/patch-extensions_common_features_feature.cc b/devel/electron17/files/patch-extensions_common_features_feature.cc
new file mode 100644
index 000000000000..9be31176bb03
--- /dev/null
+++ b/devel/electron17/files/patch-extensions_common_features_feature.cc
@@ -0,0 +1,11 @@
+--- extensions/common/features/feature.cc.orig 2022-05-11 07:16:52 UTC
++++ extensions/common/features/feature.cc
+@@ -34,6 +34,8 @@ Feature::Platform Feature::GetCurrentPlatform() {
+ return WIN_PLATFORM;
+ #elif defined(OS_FUCHSIA)
+ return FUCHSIA_PLATFORM;
++#elif defined(OS_BSD)
++ return LINUX_PLATFORM;
+ #else
+ return UNSPECIFIED_PLATFORM;
+ #endif
diff --git a/devel/electron17/files/patch-extensions_renderer_bindings_api__binding__util.cc b/devel/electron17/files/patch-extensions_renderer_bindings_api__binding__util.cc
new file mode 100644
index 000000000000..883f400de30f
--- /dev/null
+++ b/devel/electron17/files/patch-extensions_renderer_bindings_api__binding__util.cc
@@ -0,0 +1,11 @@
+--- extensions/renderer/bindings/api_binding_util.cc.orig 2022-05-11 07:16:52 UTC
++++ extensions/renderer/bindings/api_binding_util.cc
+@@ -132,7 +132,7 @@ std::string GetPlatformString() {
+ return "lacros";
+ #elif BUILDFLAG(IS_CHROMEOS_ASH) && !BUILDFLAG(IS_CHROMEOS_LACROS)
+ return "chromeos";
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ return "linux";
+ #elif defined(OS_MAC)
+ return "mac";
diff --git a/devel/electron17/files/patch-extensions_shell_app_shell__main__delegate.cc b/devel/electron17/files/patch-extensions_shell_app_shell__main__delegate.cc
new file mode 100644
index 000000000000..b20ddae3a8c0
--- /dev/null
+++ b/devel/electron17/files/patch-extensions_shell_app_shell__main__delegate.cc
@@ -0,0 +1,20 @@
+--- extensions/shell/app/shell_main_delegate.cc.orig 2021-09-14 01:51:57 UTC
++++ extensions/shell/app/shell_main_delegate.cc
+@@ -42,7 +42,7 @@
+
+ #if defined(OS_WIN)
+ #include "base/base_paths_win.h"
+-#elif defined(OS_LINUX) || defined(OS_CHROMEOS)
++#elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ #include "base/nix/xdg_util.h"
+ #elif defined(OS_MAC)
+ #include "base/base_paths_mac.h"
+@@ -78,7 +78,7 @@ base::FilePath GetDataPath() {
+ return cmd_line->GetSwitchValuePath(switches::kContentShellDataPath);
+
+ base::FilePath data_dir;
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ std::unique_ptr<base::Environment> env(base::Environment::Create());
+ data_dir = base::nix::GetXDGDirectory(
+ env.get(), base::nix::kXdgConfigHomeEnvVar, base::nix::kDotConfigDir);
diff --git a/devel/electron17/files/patch-extensions_shell_browser_api_runtime_shell__runtime__api__delegate.cc b/devel/electron17/files/patch-extensions_shell_browser_api_runtime_shell__runtime__api__delegate.cc
new file mode 100644
index 000000000000..a1b94a663b5f
--- /dev/null
+++ b/devel/electron17/files/patch-extensions_shell_browser_api_runtime_shell__runtime__api__delegate.cc
@@ -0,0 +1,11 @@
+--- extensions/shell/browser/api/runtime/shell_runtime_api_delegate.cc.orig 2021-04-14 01:08:49 UTC
++++ extensions/shell/browser/api/runtime/shell_runtime_api_delegate.cc
+@@ -45,7 +45,7 @@ void ShellRuntimeAPIDelegate::OpenURL(const GURL& unin
+ bool ShellRuntimeAPIDelegate::GetPlatformInfo(PlatformInfo* info) {
+ #if BUILDFLAG(IS_CHROMEOS_ASH)
+ info->os = api::runtime::PLATFORM_OS_CROS;
+-#elif defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#elif defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ info->os = api::runtime::PLATFORM_OS_LINUX;
+ #endif
+ return true;
diff --git a/devel/electron17/files/patch-extensions_shell_browser_shell__browser__main__parts.cc b/devel/electron17/files/patch-extensions_shell_browser_shell__browser__main__parts.cc
new file mode 100644
index 000000000000..2b8fc28a61de
--- /dev/null
+++ b/devel/electron17/files/patch-extensions_shell_browser_shell__browser__main__parts.cc
@@ -0,0 +1,11 @@
+--- extensions/shell/browser/shell_browser_main_parts.cc.orig 2022-05-11 07:16:52 UTC
++++ extensions/shell/browser/shell_browser_main_parts.cc
+@@ -152,7 +152,7 @@ void ShellBrowserMainParts::PostCreateMainMessageLoop(
+ switches::kAppShellAllowRoaming)) {
+ network_controller_->SetCellularAllowRoaming(true);
+ }
+-#elif defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#elif defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ // app_shell doesn't need GTK, so the fake input method context can work.
+ // See crbug.com/381852 and revision fb69f142.
+ // TODO(michaelpg): Verify this works for target environments.
diff --git a/devel/electron17/files/patch-extensions_shell_browser_shell__extensions__api__client.cc b/devel/electron17/files/patch-extensions_shell_browser_shell__extensions__api__client.cc
new file mode 100644
index 000000000000..fc0672aa98e6
--- /dev/null
+++ b/devel/electron17/files/patch-extensions_shell_browser_shell__extensions__api__client.cc
@@ -0,0 +1,11 @@
+--- extensions/shell/browser/shell_extensions_api_client.cc.orig 2022-05-11 07:16:52 UTC
++++ extensions/shell/browser/shell_extensions_api_client.cc
+@@ -57,7 +57,7 @@ ShellExtensionsAPIClient::CreateDisplayInfoProvider()
+
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ FileSystemDelegate* ShellExtensionsAPIClient::GetFileSystemDelegate() {
+ if (!file_system_delegate_)
+ file_system_delegate_ = std::make_unique<ShellFileSystemDelegate>();
diff --git a/devel/electron17/files/patch-extensions_shell_browser_shell__extensions__api__client.h b/devel/electron17/files/patch-extensions_shell_browser_shell__extensions__api__client.h
new file mode 100644
index 000000000000..a2364fbe5f66
--- /dev/null
+++ b/devel/electron17/files/patch-extensions_shell_browser_shell__extensions__api__client.h
@@ -0,0 +1,20 @@
+--- extensions/shell/browser/shell_extensions_api_client.h.orig 2021-04-14 01:08:49 UTC
++++ extensions/shell/browser/shell_extensions_api_client.h
+@@ -36,7 +36,7 @@ class ShellExtensionsAPIClient : public ExtensionsAPIC
+ const override;
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ FileSystemDelegate* GetFileSystemDelegate() override;
+ #endif
+ MessagingDelegate* GetMessagingDelegate() override;
+@@ -45,7 +45,7 @@ class ShellExtensionsAPIClient : public ExtensionsAPIC
+ private:
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ std::unique_ptr<FileSystemDelegate> file_system_delegate_;
+ #endif
+ std::unique_ptr<MessagingDelegate> messaging_delegate_;
diff --git a/devel/electron17/files/patch-extensions_shell_common_switches.cc b/devel/electron17/files/patch-extensions_shell_common_switches.cc
new file mode 100644
index 000000000000..e99fde97ebc3
--- /dev/null
+++ b/devel/electron17/files/patch-extensions_shell_common_switches.cc
@@ -0,0 +1,11 @@
+--- extensions/shell/common/switches.cc.orig 2022-05-11 07:16:52 UTC
++++ extensions/shell/common/switches.cc
+@@ -22,7 +22,7 @@ const char kAppShellPreferredNetwork[] = "app-shell-pr
+
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ // The directory breakpad should store minidumps in.
+ const char kCrashDumpsDir[] = "crash-dumps-dir";
+
diff --git a/devel/electron17/files/patch-extensions_shell_common_switches.h b/devel/electron17/files/patch-extensions_shell_common_switches.h
new file mode 100644
index 000000000000..9dd4571cde80
--- /dev/null
+++ b/devel/electron17/files/patch-extensions_shell_common_switches.h
@@ -0,0 +1,11 @@
+--- extensions/shell/common/switches.h.orig 2022-05-11 07:16:52 UTC
++++ extensions/shell/common/switches.h
+@@ -20,7 +20,7 @@ extern const char kAppShellPreferredNetwork[];
+ #endif
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ extern const char kCrashDumpsDir[];
+ extern const char kEnableReporting[];
+ #endif
diff --git a/devel/electron17/files/patch-google__apis_gcm_engine_heartbeat__manager.cc b/devel/electron17/files/patch-google__apis_gcm_engine_heartbeat__manager.cc
new file mode 100644
index 000000000000..1d723478e412
--- /dev/null
+++ b/devel/electron17/files/patch-google__apis_gcm_engine_heartbeat__manager.cc
@@ -0,0 +1,29 @@
+--- google_apis/gcm/engine/heartbeat_manager.cc.orig 2022-05-11 07:16:52 UTC
++++ google_apis/gcm/engine/heartbeat_manager.cc
+@@ -32,7 +32,7 @@ const int kMinClientHeartbeatIntervalMs = 1000 * 30;
+ // Minimum time spent sleeping before we force a new heartbeat.
+ const int kMinSuspendTimeMs = 1000 * 10; // 10 seconds.
+
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ // The period at which to check if the heartbeat time has passed. Used to
+ // protect against platforms where the timer is delayed by the system being
+ // suspended. Only needed on linux because the other OSes provide a standard
+@@ -192,7 +192,7 @@ void HeartbeatManager::RestartTimer() {
+ base::BindRepeating(&HeartbeatManager::OnHeartbeatTriggered,
+ weak_ptr_factory_.GetWeakPtr()));
+
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ // Windows, Mac, Android, iOS, and Chrome OS all provide a way to be notified
+ // when the system is suspending or resuming. The only one that does not is
+ // Linux so we need to poll to check for missed heartbeats.
+@@ -217,7 +217,7 @@ void HeartbeatManager::CheckForMissedHeartbeat() {
+ return;
+ }
+
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ // Otherwise check again later.
+ io_task_runner_->PostDelayedTask(
+ FROM_HERE,
diff --git a/devel/electron17/files/patch-gpu_command__buffer_common_gpu__memory__buffer__support.cc b/devel/electron17/files/patch-gpu_command__buffer_common_gpu__memory__buffer__support.cc
new file mode 100644
index 000000000000..97aa228054a6
--- /dev/null
+++ b/devel/electron17/files/patch-gpu_command__buffer_common_gpu__memory__buffer__support.cc
@@ -0,0 +1,20 @@
+--- gpu/command_buffer/common/gpu_memory_buffer_support.cc.orig 2022-05-11 07:16:52 UTC
++++ gpu/command_buffer/common/gpu_memory_buffer_support.cc
+@@ -134,7 +134,7 @@ uint32_t GetPlatformSpecificTextureTarget() {
+ #if defined(OS_MAC)
+ return macos_specific_texture_target;
+ #elif defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS) || \
+- defined(OS_WIN)
++ defined(OS_WIN) || defined(OS_BSD)
+ return GL_TEXTURE_EXTERNAL_OES;
+ #elif defined(OS_FUCHSIA)
+ return GL_TEXTURE_2D;
+@@ -166,7 +166,7 @@ GPU_EXPORT bool NativeBufferNeedsPlatformSpecificTextu
+ gfx::BufferFormat format,
+ gfx::BufferPlane plane) {
+ #if defined(USE_OZONE) || defined(OS_LINUX) || defined(OS_CHROMEOS) || \
+- defined(OS_WIN)
++ defined(OS_WIN) || defined(OS_BSD)
+ // Always use GL_TEXTURE_2D as the target for RGB textures.
+ // https://crbug.com/916728
+ if (format == gfx::BufferFormat::R_8 || format == gfx::BufferFormat::RG_88 ||
diff --git a/devel/electron17/files/patch-gpu_command__buffer_service_external__semaphore.cc b/devel/electron17/files/patch-gpu_command__buffer_service_external__semaphore.cc
new file mode 100644
index 000000000000..63fb0d60db62
--- /dev/null
+++ b/devel/electron17/files/patch-gpu_command__buffer_service_external__semaphore.cc
@@ -0,0 +1,11 @@
+--- gpu/command_buffer/service/external_semaphore.cc.orig 2021-09-14 01:51:57 UTC
++++ gpu/command_buffer/service/external_semaphore.cc
+@@ -27,7 +27,7 @@ GLuint ImportSemaphoreHandleToGLSemaphore(SemaphoreHan
+ if (!handle.is_valid())
+ return 0;
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID) || defined(OS_BSD)
+ if (handle.vk_handle_type() !=
+ VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT) {
+ DLOG(ERROR) << "Importing semaphore handle of unexpected type:"
diff --git a/devel/electron17/files/patch-gpu_command__buffer_service_external__vk__image__backing.cc b/devel/electron17/files/patch-gpu_command__buffer_service_external__vk__image__backing.cc
new file mode 100644
index 000000000000..693d74202246
--- /dev/null
+++ b/devel/electron17/files/patch-gpu_command__buffer_service_external__vk__image__backing.cc
@@ -0,0 +1,29 @@
+--- gpu/command_buffer/service/external_vk_image_backing.cc.orig 2022-05-11 07:16:52 UTC
++++ gpu/command_buffer/service/external_vk_image_backing.cc
+@@ -31,7 +31,7 @@
+ #include "ui/gl/gl_version_info.h"
+ #include "ui/gl/scoped_binders.h"
+
+-#if (defined(OS_LINUX) || defined(OS_CHROMEOS)) && BUILDFLAG(USE_DAWN)
++#if (defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)) && BUILDFLAG(USE_DAWN)
+ #include "gpu/command_buffer/service/external_vk_image_dawn_representation.h"
+ #endif
+
+@@ -564,7 +564,7 @@ ExternalVkImageBacking::ProduceDawn(SharedImageManager
+ MemoryTypeTracker* tracker,
+ WGPUDevice wgpuDevice,
+ WGPUBackendType backend_type) {
+-#if (defined(OS_LINUX) || defined(OS_CHROMEOS)) && BUILDFLAG(USE_DAWN)
++#if (defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)) && BUILDFLAG(USE_DAWN)
+ auto wgpu_format = viz::ToWGPUFormat(format());
+
+ if (wgpu_format == WGPUTextureFormat_Undefined) {
+@@ -596,7 +596,7 @@ GLuint ExternalVkImageBacking::ProduceGLTextureInterna
+ gl::GLApi* api = gl::g_current_gl_context;
+ absl::optional<ScopedDedicatedMemoryObject> memory_object;
+ if (!use_separate_gl_texture()) {
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID) || defined(OS_BSD)
+ auto memory_fd = image_->GetMemoryFd();
+ if (!memory_fd.is_valid())
+ return 0;
diff --git a/devel/electron17/files/patch-gpu_command__buffer_service_shared__image__factory.cc b/devel/electron17/files/patch-gpu_command__buffer_service_shared__image__factory.cc
new file mode 100644
index 000000000000..5168ba4666be
--- /dev/null
+++ b/devel/electron17/files/patch-gpu_command__buffer_service_shared__image__factory.cc
@@ -0,0 +1,34 @@
+--- gpu/command_buffer/service/shared_image_factory.cc.orig 2022-05-11 07:16:52 UTC
++++ gpu/command_buffer/service/shared_image_factory.cc
+@@ -34,11 +34,11 @@
+ #include "ui/gl/gl_switches.h"
+ #include "ui/gl/trace_util.h"
+
+-#if defined(OS_LINUX) && defined(USE_OZONE) && BUILDFLAG(ENABLE_VULKAN)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && defined(USE_OZONE) && BUILDFLAG(ENABLE_VULKAN)
+ #include "ui/ozone/public/ozone_platform.h"
+ #endif
+
+-#if (defined(OS_LINUX) || defined(OS_FUCHSIA) || defined(OS_WIN)) && \
++#if (defined(OS_LINUX) || defined(OS_FUCHSIA) || defined(OS_WIN) || defined(OS_BSD)) && \
+ BUILDFLAG(ENABLE_VULKAN)
+ #include "gpu/command_buffer/service/external_vk_image_factory.h"
+ #include "gpu/command_buffer/service/shared_image_backing_factory_angle_vulkan.h"
+@@ -75,7 +75,7 @@
+
+ namespace gpu {
+
+-#if defined(OS_LINUX) && !BUILDFLAG(IS_CHROMEOS_ASH) && \
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !BUILDFLAG(IS_CHROMEOS_ASH) && \
+ !BUILDFLAG(IS_CHROMEOS_LACROS) && !BUILDFLAG(IS_CHROMECAST) && \
+ BUILDFLAG(ENABLE_VULKAN)
+
+@@ -173,7 +173,7 @@ SharedImageFactory::SharedImageFactory(
+ // |gr_context_type|.
+ if (gr_context_type_ == GrContextType::kVulkan) {
+ #if BUILDFLAG(ENABLE_VULKAN)
+-#if defined(OS_LINUX) && !BUILDFLAG(IS_CHROMEOS_ASH) && \
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !BUILDFLAG(IS_CHROMEOS_ASH) && \
+ !BUILDFLAG(IS_CHROMEOS_LACROS) && !BUILDFLAG(IS_CHROMECAST)
+ // Desktop Linux, not ChromeOS.
+ if (base::FeatureList::IsEnabled(features::kVulkanFromANGLE)) {
diff --git a/devel/electron17/files/patch-gpu_command__buffer_service_webgpu__decoder__impl.cc b/devel/electron17/files/patch-gpu_command__buffer_service_webgpu__decoder__impl.cc
new file mode 100644
index 000000000000..7e297b75ec32
--- /dev/null
+++ b/devel/electron17/files/patch-gpu_command__buffer_service_webgpu__decoder__impl.cc
@@ -0,0 +1,11 @@
+--- gpu/command_buffer/service/webgpu_decoder_impl.cc.orig 2022-05-13 07:19:54 UTC
++++ gpu/command_buffer/service/webgpu_decoder_impl.cc
+@@ -1024,7 +1024,7 @@ error::Error WebGPUDecoderImpl::HandleRequestAdapter(
+ }
+
+ if (gr_context_type_ != GrContextType::kVulkan) {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ SendAdapterProperties(request_adapter_serial, -1, nullptr,
+ "WebGPU on Linux requires command-line flag "
+ "--enable-features=Vulkan,UseSkiaRenderer");
diff --git a/devel/electron17/files/patch-gpu_config_gpu__control__list.cc b/devel/electron17/files/patch-gpu_config_gpu__control__list.cc
new file mode 100644
index 000000000000..7d306e2ad504
--- /dev/null
+++ b/devel/electron17/files/patch-gpu_config_gpu__control__list.cc
@@ -0,0 +1,20 @@
+--- gpu/config/gpu_control_list.cc.orig 2022-05-11 07:16:52 UTC
++++ gpu/config/gpu_control_list.cc
+@@ -276,7 +276,7 @@ bool GpuControlList::More::GLVersionInfoMismatch(
+ GpuControlList::GLType GpuControlList::More::GetDefaultGLType() {
+ #if defined(OS_CHROMEOS)
+ return kGLTypeGL;
+-#elif defined(OS_LINUX) || defined(OS_OPENBSD)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ return kGLTypeGL;
+ #elif defined(OS_MAC)
+ return kGLTypeGL;
+@@ -781,7 +781,7 @@ GpuControlList::OsType GpuControlList::GetOsType() {
+ return kOsAndroid;
+ #elif defined(OS_FUCHSIA)
+ return kOsFuchsia;
+-#elif defined(OS_LINUX) || defined(OS_OPENBSD)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ return kOsLinux;
+ #elif defined(OS_MAC)
+ return kOsMacosx;
diff --git a/devel/electron17/files/patch-gpu_config_gpu__test__config.cc b/devel/electron17/files/patch-gpu_config_gpu__test__config.cc
new file mode 100644
index 000000000000..8e2b4972a8d1
--- /dev/null
+++ b/devel/electron17/files/patch-gpu_config_gpu__test__config.cc
@@ -0,0 +1,11 @@
+--- gpu/config/gpu_test_config.cc.orig 2022-05-11 07:16:52 UTC
++++ gpu/config/gpu_test_config.cc
+@@ -29,7 +29,7 @@ GPUTestConfig::OS GetCurrentOS() {
+ #if BUILDFLAG(IS_CHROMEOS_ASH)
+ return GPUTestConfig::kOsChromeOS;
+ #elif (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) || \
+- defined(OS_OPENBSD)
++ defined(OS_BSD)
+ return GPUTestConfig::kOsLinux;
+ #elif defined(OS_WIN)
+ int32_t major_version = 0;
diff --git a/devel/electron17/files/patch-gpu_config_gpu__util.cc b/devel/electron17/files/patch-gpu_config_gpu__util.cc
new file mode 100644
index 000000000000..fbc982135200
--- /dev/null
+++ b/devel/electron17/files/patch-gpu_config_gpu__util.cc
@@ -0,0 +1,11 @@
+--- gpu/config/gpu_util.cc.orig 2022-05-11 07:16:52 UTC
++++ gpu/config/gpu_util.cc
+@@ -795,7 +795,7 @@ bool EnableSwiftShaderIfNeeded(base::CommandLine* comm
+ gpu_feature_info.status_values[GPU_FEATURE_TYPE_ACCELERATED_GL] !=
+ kGpuFeatureStatusEnabled) {
+ bool legacy_software_gl = true;
+-#if defined(OS_LINUX) || defined(OS_WIN)
++#if defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
+ // This setting makes WebGL run on SwANGLE instead of SwiftShader GL.
+ legacy_software_gl = false;
+ #endif
diff --git a/devel/electron17/files/patch-gpu_ipc_common_gpu__memory__buffer__support.cc b/devel/electron17/files/patch-gpu_ipc_common_gpu__memory__buffer__support.cc
new file mode 100644
index 000000000000..477ccc23f236
--- /dev/null
+++ b/devel/electron17/files/patch-gpu_ipc_common_gpu__memory__buffer__support.cc
@@ -0,0 +1,20 @@
+--- gpu/ipc/common/gpu_memory_buffer_support.cc.orig 2022-05-11 07:16:52 UTC
++++ gpu/ipc/common/gpu_memory_buffer_support.cc
+@@ -21,7 +21,7 @@
+ #include "ui/ozone/public/ozone_platform.h"
+ #endif
+
+-#if defined(USE_OZONE) || defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(USE_OZONE) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ #include "gpu/ipc/common/gpu_memory_buffer_impl_native_pixmap.h"
+ #endif
+
+@@ -50,7 +50,7 @@ GpuMemoryBufferSupport::GetNativeGpuMemoryBufferType()
+ return gfx::IO_SURFACE_BUFFER;
+ #elif defined(OS_ANDROID)
+ return gfx::ANDROID_HARDWARE_BUFFER;
+-#elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(USE_OZONE)
++#elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(USE_OZONE) || defined(OS_BSD)
+ return gfx::NATIVE_PIXMAP;
+ #elif defined(OS_WIN)
+ return gfx::DXGI_SHARED_HANDLE;
diff --git a/devel/electron17/files/patch-gpu_ipc_common_gpu__memory__buffer__support.h b/devel/electron17/files/patch-gpu_ipc_common_gpu__memory__buffer__support.h
new file mode 100644
index 000000000000..33898ce079f7
--- /dev/null
+++ b/devel/electron17/files/patch-gpu_ipc_common_gpu__memory__buffer__support.h
@@ -0,0 +1,11 @@
+--- gpu/ipc/common/gpu_memory_buffer_support.h.orig 2022-05-11 07:16:52 UTC
++++ gpu/ipc/common/gpu_memory_buffer_support.h
+@@ -17,7 +17,7 @@
+ #include "ui/gfx/geometry/size.h"
+ #include "ui/gfx/gpu_memory_buffer.h"
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(USE_OZONE)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(USE_OZONE) || defined(OS_BSD)
+ namespace gfx {
+ class ClientNativePixmapFactory;
+ }
diff --git a/devel/electron17/files/patch-gpu_ipc_service_gpu__init.cc b/devel/electron17/files/patch-gpu_ipc_service_gpu__init.cc
new file mode 100644
index 000000000000..241a685703a0
--- /dev/null
+++ b/devel/electron17/files/patch-gpu_ipc_service_gpu__init.cc
@@ -0,0 +1,83 @@
+--- gpu/ipc/service/gpu_init.cc.orig 2022-05-11 07:16:52 UTC
++++ gpu/ipc/service/gpu_init.cc
+@@ -122,7 +122,7 @@ void InitializePlatformOverlaySettings(GPUInfo* gpu_in
+ }
+
+ #if BUILDFLAG(IS_CHROMEOS_LACROS) || \
+- (defined(OS_LINUX) && !BUILDFLAG(IS_CHROMECAST))
++ (defined(OS_LINUX) && !BUILDFLAG(IS_CHROMECAST)) && !defined(OS_BSD)
+ bool CanAccessNvidiaDeviceFile() {
+ bool res = true;
+ base::ScopedBlockingCall scoped_blocking_call(FROM_HERE,
+@@ -220,7 +220,7 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandL
+ device_perf_info_ = device_perf_info;
+ }
+
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) && !defined(OS_BSD)
+ if (gpu_info_.gpu.vendor_id == 0x10de && // NVIDIA
+ gpu_info_.gpu.driver_vendor == "NVIDIA" && !CanAccessNvidiaDeviceFile())
+ return false;
+@@ -284,7 +284,7 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandL
+ delayed_watchdog_enable = true;
+ #endif
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // PreSandbox is mainly for resource handling and not related to the GPU
+ // driver, it doesn't need the GPU watchdog. The loadLibrary may take long
+ // time that killing and restarting the GPU process will not help.
+@@ -324,7 +324,7 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandL
+ }
+
+ bool attempted_startsandbox = false;
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // On Chrome OS ARM Mali, GPU driver userspace creates threads when
+ // initializing a GL context, so start the sandbox early.
+ // TODO(zmo): Need to collect OS version before this.
+@@ -373,7 +373,7 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandL
+ }
+ if (gl_initialized && gl_use_swiftshader_ &&
+ !gl::IsSoftwareGLImplementation(gl::GetGLImplementationParts())) {
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ VLOG(1) << "Quit GPU process launch to fallback to SwiftShader cleanly "
+ << "on Linux";
+ return false;
+@@ -407,7 +407,7 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandL
+ }
+ }
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // The ContentSandboxHelper is currently the only one implementation of
+ // GpuSandboxHelper and it has no dependency. Except on Linux where
+ // VaapiWrapper checks the GL implementation to determine which display
+@@ -474,7 +474,7 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandL
+ command_line, gpu_feature_info_,
+ gpu_preferences_.disable_software_rasterizer, false);
+ if (gl_use_swiftshader_) {
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ VLOG(1) << "Quit GPU process launch to fallback to SwiftShader cleanly "
+ << "on Linux";
+ return false;
+@@ -575,7 +575,7 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandL
+
+ InitializePlatformOverlaySettings(&gpu_info_, gpu_feature_info_);
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // Driver may create a compatibility profile context when collect graphics
+ // information on Linux platform. Try to collect graphics information
+ // based on core profile context after disabling platform extensions.
+@@ -813,7 +813,7 @@ void GpuInit::InitializeInProcess(base::CommandLine* c
+
+ InitializePlatformOverlaySettings(&gpu_info_, gpu_feature_info_);
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // Driver may create a compatibility profile context when collect graphics
+ // information on Linux platform. Try to collect graphics information
+ // based on core profile context after disabling platform extensions.
diff --git a/devel/electron17/files/patch-gpu_ipc_service_gpu__memory__buffer__factory.cc b/devel/electron17/files/patch-gpu_ipc_service_gpu__memory__buffer__factory.cc
new file mode 100644
index 000000000000..04b6bcff5723
--- /dev/null
+++ b/devel/electron17/files/patch-gpu_ipc_service_gpu__memory__buffer__factory.cc
@@ -0,0 +1,20 @@
+--- gpu/ipc/service/gpu_memory_buffer_factory.cc.orig 2021-01-07 00:36:35 UTC
++++ gpu/ipc/service/gpu_memory_buffer_factory.cc
+@@ -12,7 +12,7 @@
+ #include "gpu/ipc/service/gpu_memory_buffer_factory_io_surface.h"
+ #endif
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_FUCHSIA)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ #include "gpu/ipc/service/gpu_memory_buffer_factory_native_pixmap.h"
+ #endif
+
+@@ -34,7 +34,7 @@ GpuMemoryBufferFactory::CreateNativeType(
+ return std::make_unique<GpuMemoryBufferFactoryIOSurface>();
+ #elif defined(OS_ANDROID)
+ return std::make_unique<GpuMemoryBufferFactoryAndroidHardwareBuffer>();
+-#elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_FUCHSIA)
++#elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ return std::make_unique<GpuMemoryBufferFactoryNativePixmap>(
+ vulkan_context_provider);
+ #elif defined(OS_WIN)
diff --git a/devel/electron17/files/patch-gpu_ipc_service_x__util.h b/devel/electron17/files/patch-gpu_ipc_service_x__util.h
new file mode 100644
index 000000000000..e41f84751a5f
--- /dev/null
+++ b/devel/electron17/files/patch-gpu_ipc_service_x__util.h
@@ -0,0 +1,16 @@
+--- gpu/ipc/service/x_util.h.orig 2022-05-11 07:16:52 UTC
++++ gpu/ipc/service/x_util.h
+@@ -11,11 +11,11 @@
+ #include "build/build_config.h"
+ #include "gpu/ipc/service/gpu_config.h"
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "ui/ozone/buildflags.h"
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #if BUILDFLAG(OZONE_PLATFORM_X11)
+
+ namespace gpu {
diff --git a/devel/electron17/files/patch-gpu_vulkan_generate__bindings.py b/devel/electron17/files/patch-gpu_vulkan_generate__bindings.py
new file mode 100644
index 000000000000..81c7d1672f24
--- /dev/null
+++ b/devel/electron17/files/patch-gpu_vulkan_generate__bindings.py
@@ -0,0 +1,29 @@
+--- gpu/vulkan/generate_bindings.py.orig 2021-09-14 01:51:58 UTC
++++ gpu/vulkan/generate_bindings.py
+@@ -184,7 +184,7 @@ VULKAN_DEVICE_FUNCTIONS = [
+ ]
+ },
+ {
+- 'ifdef': 'defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)',
++ 'ifdef': 'defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID) || defined(OS_BSD)',
+ 'extension': 'VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME',
+ 'functions': [
+ 'vkGetSemaphoreFdKHR',
+@@ -200,7 +200,7 @@ VULKAN_DEVICE_FUNCTIONS = [
+ ]
+ },
+ {
+- 'ifdef': 'defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)',
++ 'ifdef': 'defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID) || defined(OS_BSD)',
+ 'extension': 'VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME',
+ 'functions': [
+ 'vkGetMemoryFdKHR',
+@@ -251,7 +251,7 @@ VULKAN_DEVICE_FUNCTIONS = [
+ ]
+ },
+ {
+- 'ifdef': 'defined(OS_LINUX) || defined(OS_CHROMEOS)',
++ 'ifdef': 'defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)',
+ 'extension': 'VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_EXTENSION_NAME',
+ 'functions': [
+ 'vkGetImageDrmFormatModifierPropertiesEXT',
diff --git a/devel/electron17/files/patch-gpu_vulkan_vulkan__device__queue.cc b/devel/electron17/files/patch-gpu_vulkan_vulkan__device__queue.cc
new file mode 100644
index 000000000000..0e47c5e4c31f
--- /dev/null
+++ b/devel/electron17/files/patch-gpu_vulkan_vulkan__device__queue.cc
@@ -0,0 +1,20 @@
+--- gpu/vulkan/vulkan_device_queue.cc.orig 2022-05-11 07:16:52 UTC
++++ gpu/vulkan/vulkan_device_queue.cc
+@@ -85,7 +85,7 @@ bool VulkanDeviceQueue::Initialize(
+
+ // In dual-CPU cases, we cannot detect the active GPU correctly on Linux,
+ // so don't select GPU device based on the |gpu_info|.
+-#if !defined(OS_LINUX)
++#if !defined(OS_LINUX) && !defined(OS_BSD)
+ // If gpu_info is provided, the device should match it.
+ if (gpu_info && (device_properties.vendorID != gpu_info->gpu.vendor_id ||
+ device_properties.deviceID != gpu_info->gpu.device_id)) {
+@@ -230,7 +230,7 @@ bool VulkanDeviceQueue::Initialize(
+ enabled_device_features_2_ = {VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2};
+
+ // Android, Fuchsia, and Linux(VaapiVideoDecoder) need YCbCr sampler support.
+-#if defined(OS_ANDROID) || defined(OS_FUCHSIA) || defined(OS_LINUX)
++#if defined(OS_ANDROID) || defined(OS_FUCHSIA) || defined(OS_LINUX) || defined(OS_BSD)
+ if (!physical_device_info.feature_sampler_ycbcr_conversion) {
+ LOG(ERROR) << "samplerYcbcrConversion is not supported.";
+ return false;
diff --git a/devel/electron17/files/patch-gpu_vulkan_vulkan__device__queue.h b/devel/electron17/files/patch-gpu_vulkan_vulkan__device__queue.h
new file mode 100644
index 000000000000..27e269eac27b
--- /dev/null
+++ b/devel/electron17/files/patch-gpu_vulkan_vulkan__device__queue.h
@@ -0,0 +1,11 @@
+--- gpu/vulkan/vulkan_device_queue.h.orig 2022-05-11 07:16:52 UTC
++++ gpu/vulkan/vulkan_device_queue.h
+@@ -153,7 +153,7 @@ class COMPONENT_EXPORT(VULKAN) VulkanDeviceQueue {
+
+ bool allow_protected_memory_ = false;
+
+-#if defined(OS_ANDROID) || defined(OS_FUCHSIA) || defined(OS_LINUX)
++#if defined(OS_ANDROID) || defined(OS_FUCHSIA) || defined(OS_LINUX) || defined(OS_BSD)
+ VkPhysicalDeviceSamplerYcbcrConversionFeatures
+ sampler_ycbcr_conversion_features_{
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES};
diff --git a/devel/electron17/files/patch-gpu_vulkan_vulkan__function__pointers.cc b/devel/electron17/files/patch-gpu_vulkan_vulkan__function__pointers.cc
new file mode 100644
index 000000000000..17b7aeb27acd
--- /dev/null
+++ b/devel/electron17/files/patch-gpu_vulkan_vulkan__function__pointers.cc
@@ -0,0 +1,29 @@
+--- gpu/vulkan/vulkan_function_pointers.cc.orig 2022-05-11 07:16:52 UTC
++++ gpu/vulkan/vulkan_function_pointers.cc
+@@ -912,7 +912,7 @@ bool VulkanFunctionPointers::BindDeviceFunctionPointer
+ }
+ #endif // defined(OS_ANDROID)
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID) || defined(OS_BSD)
+ if (gfx::HasExtension(enabled_extensions,
+ VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME)) {
+ vkGetSemaphoreFdKHR = reinterpret_cast<PFN_vkGetSemaphoreFdKHR>(
+@@ -956,7 +956,7 @@ bool VulkanFunctionPointers::BindDeviceFunctionPointer
+ }
+ #endif // defined(OS_WIN)
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID) || defined(OS_BSD)
+ if (gfx::HasExtension(enabled_extensions,
+ VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME)) {
+ vkGetMemoryFdKHR = reinterpret_cast<PFN_vkGetMemoryFdKHR>(
+@@ -1126,7 +1126,7 @@ bool VulkanFunctionPointers::BindDeviceFunctionPointer
+ }
+ }
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ if (gfx::HasExtension(enabled_extensions,
+ VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_EXTENSION_NAME)) {
+ vkGetImageDrmFormatModifierPropertiesEXT =
diff --git a/devel/electron17/files/patch-gpu_vulkan_vulkan__function__pointers.h b/devel/electron17/files/patch-gpu_vulkan_vulkan__function__pointers.h
new file mode 100644
index 000000000000..a1c5a6ee2f9e
--- /dev/null
+++ b/devel/electron17/files/patch-gpu_vulkan_vulkan__function__pointers.h
@@ -0,0 +1,63 @@
+--- gpu/vulkan/vulkan_function_pointers.h.orig 2022-05-11 07:16:52 UTC
++++ gpu/vulkan/vulkan_function_pointers.h
+@@ -243,7 +243,7 @@ struct COMPONENT_EXPORT(VULKAN) VulkanFunctionPointers
+ vkGetAndroidHardwareBufferPropertiesANDROID;
+ #endif // defined(OS_ANDROID)
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID) || defined(OS_BSD)
+ VulkanFunction<PFN_vkGetSemaphoreFdKHR> vkGetSemaphoreFdKHR;
+ VulkanFunction<PFN_vkImportSemaphoreFdKHR> vkImportSemaphoreFdKHR;
+ #endif // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
+@@ -254,7 +254,7 @@ struct COMPONENT_EXPORT(VULKAN) VulkanFunctionPointers
+ vkImportSemaphoreWin32HandleKHR;
+ #endif // defined(OS_WIN)
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID) || defined(OS_BSD)
+ VulkanFunction<PFN_vkGetMemoryFdKHR> vkGetMemoryFdKHR;
+ VulkanFunction<PFN_vkGetMemoryFdPropertiesKHR> vkGetMemoryFdPropertiesKHR;
+ #endif // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
+@@ -294,7 +294,7 @@ struct COMPONENT_EXPORT(VULKAN) VulkanFunctionPointers
+ VulkanFunction<PFN_vkGetSwapchainImagesKHR> vkGetSwapchainImagesKHR;
+ VulkanFunction<PFN_vkQueuePresentKHR> vkQueuePresentKHR;
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ VulkanFunction<PFN_vkGetImageDrmFormatModifierPropertiesEXT>
+ vkGetImageDrmFormatModifierPropertiesEXT;
+ #endif // defined(OS_LINUX) || defined(OS_CHROMEOS)
+@@ -1009,7 +1009,7 @@ ALWAYS_INLINE VkResult vkGetAndroidHardwareBufferPrope
+ }
+ #endif // defined(OS_ANDROID)
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID) || defined(OS_BSD)
+ ALWAYS_INLINE VkResult
+ vkGetSemaphoreFdKHR(VkDevice device,
+ const VkSemaphoreGetFdInfoKHR* pGetFdInfo,
+@@ -1042,7 +1042,7 @@ vkImportSemaphoreWin32HandleKHR(VkDevice device,
+ }
+ #endif // defined(OS_WIN)
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID) || defined(OS_BSD)
+ ALWAYS_INLINE VkResult vkGetMemoryFdKHR(VkDevice device,
+ const VkMemoryGetFdInfoKHR* pGetFdInfo,
+ int* pFd) {
+@@ -1152,7 +1152,7 @@ ALWAYS_INLINE VkResult vkQueuePresentKHR(VkQueue queue
+ pPresentInfo);
+ }
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ ALWAYS_INLINE VkResult vkGetImageDrmFormatModifierPropertiesEXT(
+ VkDevice device,
+ VkImage image,
+@@ -1162,4 +1162,4 @@ ALWAYS_INLINE VkResult vkGetImageDrmFormatModifierProp
+ }
+ #endif // defined(OS_LINUX) || defined(OS_CHROMEOS)
+
+-#endif // GPU_VULKAN_VULKAN_FUNCTION_POINTERS_H_
+\ No newline at end of file
++#endif // GPU_VULKAN_VULKAN_FUNCTION_POINTERS_H_
diff --git a/devel/electron17/files/patch-gpu_vulkan_vulkan__image.cc b/devel/electron17/files/patch-gpu_vulkan_vulkan__image.cc
new file mode 100644
index 000000000000..dc9d28160786
--- /dev/null
+++ b/devel/electron17/files/patch-gpu_vulkan_vulkan__image.cc
@@ -0,0 +1,11 @@
+--- gpu/vulkan/vulkan_image.cc.orig 2022-05-11 07:16:52 UTC
++++ gpu/vulkan/vulkan_image.cc
+@@ -325,7 +325,7 @@ bool VulkanImage::InitializeWithExternalMemory(
+
+ // TODO(crbug.com/1052397): Revisit once build flag switch of lacros-chrome is
+ // complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ VkPhysicalDeviceImageDrmFormatModifierInfoEXT modifier_info = {
+ .sType =
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT,
diff --git a/devel/electron17/files/patch-gpu_vulkan_vulkan__image.h b/devel/electron17/files/patch-gpu_vulkan_vulkan__image.h
new file mode 100644
index 000000000000..65ab0f50fc49
--- /dev/null
+++ b/devel/electron17/files/patch-gpu_vulkan_vulkan__image.h
@@ -0,0 +1,20 @@
+--- gpu/vulkan/vulkan_image.h.orig 2022-05-11 07:16:52 UTC
++++ gpu/vulkan/vulkan_image.h
+@@ -86,7 +86,7 @@ class COMPONENT_EXPORT(VULKAN) VulkanImage {
+ VkImageUsageFlags usage,
+ VkImageCreateFlags flags);
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ static std::unique_ptr<VulkanImage> CreateWithExternalMemoryAndModifiers(
+ VulkanDeviceQueue* device_queue,
+ const gfx::Size& size,
+@@ -169,7 +169,7 @@ class COMPONENT_EXPORT(VULKAN) VulkanImage {
+ VkImageTiling image_tiling,
+ uint32_t queue_family_index);
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ bool InitializeWithExternalMemoryAndModifiers(VulkanDeviceQueue* device_queue,
+ const gfx::Size& size,
+ VkFormat format,
diff --git a/devel/electron17/files/patch-gpu_vulkan_x_vulkan__implementation__x11.cc b/devel/electron17/files/patch-gpu_vulkan_x_vulkan__implementation__x11.cc
new file mode 100644
index 000000000000..f51e6360858e
--- /dev/null
+++ b/devel/electron17/files/patch-gpu_vulkan_x_vulkan__implementation__x11.cc
@@ -0,0 +1,14 @@
+--- gpu/vulkan/x/vulkan_implementation_x11.cc.orig 2022-05-11 07:16:52 UTC
++++ gpu/vulkan/x/vulkan_implementation_x11.cc
+@@ -72,7 +72,11 @@ bool VulkanImplementationX11::InitializeVulkanInstance
+
+ path = path.Append("libvk_swiftshader.so");
+ } else {
++#if defined(OS_BSD)
++ path = base::FilePath("libvulkan.so");
++#else
+ path = base::FilePath("libvulkan.so.1");
++#endif
+ }
+
+ VulkanFunctionPointers* vulkan_function_pointers =
diff --git a/devel/electron17/files/patch-headless_lib_browser_headless__browser__main__parts.h b/devel/electron17/files/patch-headless_lib_browser_headless__browser__main__parts.h
new file mode 100644
index 000000000000..f62b54960ab9
--- /dev/null
+++ b/devel/electron17/files/patch-headless_lib_browser_headless__browser__main__parts.h
@@ -0,0 +1,11 @@
+--- headless/lib/browser/headless_browser_main_parts.h.orig 2021-11-19 04:25:17 UTC
++++ headless/lib/browser/headless_browser_main_parts.h
+@@ -50,7 +50,7 @@ class HEADLESS_EXPORT HeadlessBrowserMainParts
+ #if defined(OS_MAC)
+ void PreCreateMainMessageLoop() override;
+ #endif
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ void PostCreateMainMessageLoop() override;
+ #endif
+ void QuitMainMessageLoop();
diff --git a/devel/electron17/files/patch-headless_lib_browser_headless__browser__main__parts__linux.cc b/devel/electron17/files/patch-headless_lib_browser_headless__browser__main__parts__linux.cc
new file mode 100644
index 000000000000..99758faeb1f4
--- /dev/null
+++ b/devel/electron17/files/patch-headless_lib_browser_headless__browser__main__parts__linux.cc
@@ -0,0 +1,11 @@
+--- headless/lib/browser/headless_browser_main_parts_linux.cc.orig 2021-09-14 01:51:58 UTC
++++ headless/lib/browser/headless_browser_main_parts_linux.cc
+@@ -11,7 +11,7 @@
+ namespace headless {
+
+ void HeadlessBrowserMainParts::PostCreateMainMessageLoop() {
+-#if defined(USE_DBUS) && !BUILDFLAG(IS_CHROMEOS_ASH)
++#if defined(USE_DBUS) && !BUILDFLAG(IS_CHROMEOS_ASH) && !defined(OS_BSD)
+ bluez::BluezDBusManager::Initialize(/*system_bus=*/nullptr);
+ #endif
+ }
diff --git a/devel/electron17/files/patch-headless_lib_browser_headless__content__browser__client.cc b/devel/electron17/files/patch-headless_lib_browser_headless__content__browser__client.cc
new file mode 100644
index 000000000000..1ab357d807e5
--- /dev/null
+++ b/devel/electron17/files/patch-headless_lib_browser_headless__content__browser__client.cc
@@ -0,0 +1,11 @@
+--- headless/lib/browser/headless_content_browser_client.cc.orig 2022-05-11 07:16:52 UTC
++++ headless/lib/browser/headless_content_browser_client.cc
+@@ -230,7 +230,7 @@ HeadlessContentBrowserClient::GetGeneratedCodeCacheSet
+ return content::GeneratedCodeCacheSettings(true, 0, context->GetPath());
+ }
+
+-#if defined(OS_POSIX) && !defined(OS_MAC)
++#if defined(OS_POSIX) && !defined(OS_MAC) && !defined(OS_BSD)
+ void HeadlessContentBrowserClient::GetAdditionalMappedFilesForChildProcess(
+ const base::CommandLine& command_line,
+ int child_process_id,
diff --git a/devel/electron17/files/patch-headless_lib_browser_headless__content__browser__client.h b/devel/electron17/files/patch-headless_lib_browser_headless__content__browser__client.h
new file mode 100644
index 000000000000..c30c39dc673f
--- /dev/null
+++ b/devel/electron17/files/patch-headless_lib_browser_headless__content__browser__client.h
@@ -0,0 +1,11 @@
+--- headless/lib/browser/headless_content_browser_client.h.orig 2022-05-11 07:16:52 UTC
++++ headless/lib/browser/headless_content_browser_client.h
+@@ -48,7 +48,7 @@ class HeadlessContentBrowserClient : public content::C
+ override;
+ content::GeneratedCodeCacheSettings GetGeneratedCodeCacheSettings(
+ content::BrowserContext* context) override;
+-#if defined(OS_POSIX) && !defined(OS_MAC)
++#if defined(OS_POSIX) && !defined(OS_MAC) && !defined(OS_BSD)
+ void GetAdditionalMappedFilesForChildProcess(
+ const base::CommandLine& command_line,
+ int child_process_id,
diff --git a/devel/electron17/files/patch-headless_lib_browser_headless__request__context__manager.cc b/devel/electron17/files/patch-headless_lib_browser_headless__request__context__manager.cc
new file mode 100644
index 000000000000..27fa53468d2b
--- /dev/null
+++ b/devel/electron17/files/patch-headless_lib_browser_headless__request__context__manager.cc
@@ -0,0 +1,20 @@
+--- headless/lib/browser/headless_request_context_manager.cc.orig 2022-05-11 07:16:52 UTC
++++ headless/lib/browser/headless_request_context_manager.cc
+@@ -35,7 +35,7 @@ namespace {
+
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ constexpr char kProductName[] = "HeadlessChrome";
+ #endif
+
+@@ -73,7 +73,7 @@ void SetCryptConfigOnce(const base::FilePath& user_dat
+
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ ::network::mojom::CryptConfigPtr config =
+ ::network::mojom::CryptConfig::New();
+ config->store = base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII(
diff --git a/devel/electron17/files/patch-headless_lib_browser_headless__web__contents__impl.cc b/devel/electron17/files/patch-headless_lib_browser_headless__web__contents__impl.cc
new file mode 100644
index 000000000000..318dba03b20c
--- /dev/null
+++ b/devel/electron17/files/patch-headless_lib_browser_headless__web__contents__impl.cc
@@ -0,0 +1,11 @@
+--- headless/lib/browser/headless_web_contents_impl.cc.orig 2022-05-13 07:19:54 UTC
++++ headless/lib/browser/headless_web_contents_impl.cc
+@@ -57,7 +57,7 @@ namespace headless {
+ namespace {
+
+ void UpdatePrefsFromSystemSettings(blink::RendererPreferences* prefs) {
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_WIN)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_WIN) || defined(OS_BSD)
+ content::UpdateFontRendererPreferencesFromSystemSettings(prefs);
+ #endif
+
diff --git a/devel/electron17/files/patch-headless_lib_headless__macros.h b/devel/electron17/files/patch-headless_lib_headless__macros.h
new file mode 100644
index 000000000000..f8c7f2bdad3e
--- /dev/null
+++ b/devel/electron17/files/patch-headless_lib_headless__macros.h
@@ -0,0 +1,11 @@
+--- headless/lib/headless_macros.h.orig 2022-05-11 07:16:52 UTC
++++ headless/lib/headless_macros.h
+@@ -7,7 +7,7 @@
+
+ #include "build/build_config.h"
+
+-#if defined(OS_POSIX) && !defined(OS_MAC)
++#if defined(OS_POSIX) && !defined(OS_MAC) && !defined(OS_BSD)
+ #define HEADLESS_USE_BREAKPAD
+ #endif // defined(OS_POSIX) && !defined(OS_MAC)
+
diff --git a/devel/electron17/files/patch-headless_public_headless__browser.cc b/devel/electron17/files/patch-headless_public_headless__browser.cc
new file mode 100644
index 000000000000..e48d44830f76
--- /dev/null
+++ b/devel/electron17/files/patch-headless_public_headless__browser.cc
@@ -0,0 +1,11 @@
+--- headless/public/headless_browser.cc.orig 2021-11-19 04:25:17 UTC
++++ headless/public/headless_browser.cc
+@@ -42,7 +42,7 @@ Options::Options(int argc, const char** argv)
+ user_agent(content::BuildUserAgentFromProduct(product_name_and_version)),
+ window_size(kDefaultWindowSize),
+ font_render_hinting(kDefaultFontRenderHinting) {
+-#if defined(OS_LINUX) || defined(OS_WIN)
++#if defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
+ gl_implementation = gl::kGLImplementationANGLEName;
+ angle_implementation = gl::kANGLEImplementationSwiftShaderForWebGLName;
+ #endif
diff --git a/devel/electron17/files/patch-ipc_ipc__channel.h b/devel/electron17/files/patch-ipc_ipc__channel.h
new file mode 100644
index 000000000000..ac2f0645c5d5
--- /dev/null
+++ b/devel/electron17/files/patch-ipc_ipc__channel.h
@@ -0,0 +1,11 @@
+--- ipc/ipc_channel.h.orig 2021-09-14 01:51:58 UTC
++++ ipc/ipc_channel.h
+@@ -236,7 +236,7 @@ class COMPONENT_EXPORT(IPC) Channel : public Sender {
+ static std::string GenerateUniqueRandomChannelID();
+ #endif
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // Sandboxed processes live in a PID namespace, so when sending the IPC hello
+ // message from client to server we need to send the PID from the global
+ // PID namespace.
diff --git a/devel/electron17/files/patch-ipc_ipc__channel__common.cc b/devel/electron17/files/patch-ipc_ipc__channel__common.cc
new file mode 100644
index 000000000000..025874d92ad4
--- /dev/null
+++ b/devel/electron17/files/patch-ipc_ipc__channel__common.cc
@@ -0,0 +1,11 @@
+--- ipc/ipc_channel_common.cc.orig 2022-05-11 07:16:53 UTC
++++ ipc/ipc_channel_common.cc
+@@ -10,7 +10,7 @@
+
+ namespace IPC {
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+
+ namespace {
+ int g_global_pid = 0;
diff --git a/devel/electron17/files/patch-ipc_ipc__channel__mojo.cc b/devel/electron17/files/patch-ipc_ipc__channel__mojo.cc
new file mode 100644
index 000000000000..db3320024b52
--- /dev/null
+++ b/devel/electron17/files/patch-ipc_ipc__channel__mojo.cc
@@ -0,0 +1,11 @@
+--- ipc/ipc_channel_mojo.cc.orig 2022-05-11 07:16:53 UTC
++++ ipc/ipc_channel_mojo.cc
+@@ -112,7 +112,7 @@ class ThreadSafeChannelProxy : public mojo::ThreadSafe
+ };
+
+ base::ProcessId GetSelfPID() {
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ if (int global_pid = Channel::GetGlobalPid())
+ return global_pid;
+ #endif // defined(OS_LINUX) || defined(OS_CHROMEOS)
diff --git a/devel/electron17/files/patch-ipc_ipc__message__utils.cc b/devel/electron17/files/patch-ipc_ipc__message__utils.cc
new file mode 100644
index 000000000000..6eba7fed6598
--- /dev/null
+++ b/devel/electron17/files/patch-ipc_ipc__message__utils.cc
@@ -0,0 +1,11 @@
+--- ipc/ipc_message_utils.cc.orig 2021-09-14 01:51:58 UTC
++++ ipc/ipc_message_utils.cc
+@@ -351,7 +351,7 @@ void ParamTraits<unsigned int>::Log(const param_type&
+ l->append(base::NumberToString(p));
+ }
+
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) || \
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD) || \
+ defined(OS_FUCHSIA) || (defined(OS_ANDROID) && defined(ARCH_CPU_64_BITS))
+ void ParamTraits<long>::Log(const param_type& p, std::string* l) {
+ l->append(base::NumberToString(p));
diff --git a/devel/electron17/files/patch-ipc_ipc__message__utils.h b/devel/electron17/files/patch-ipc_ipc__message__utils.h
new file mode 100644
index 000000000000..0b2b40f850e5
--- /dev/null
+++ b/devel/electron17/files/patch-ipc_ipc__message__utils.h
@@ -0,0 +1,11 @@
+--- ipc/ipc_message_utils.h.orig 2021-09-14 01:51:58 UTC
++++ ipc/ipc_message_utils.h
+@@ -206,7 +206,7 @@ struct ParamTraits<unsigned int> {
+ // 3) Android 64 bit and Fuchsia also have int64_t typedef'd to long.
+ // Since we want to support Android 32<>64 bit IPC, as long as we don't have
+ // these traits for 32 bit ARM then that'll catch any errors.
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) || \
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD) || \
+ defined(OS_FUCHSIA) || (defined(OS_ANDROID) && defined(ARCH_CPU_64_BITS))
+ template <>
+ struct ParamTraits<long> {
diff --git a/devel/electron17/files/patch-media_BUILD.gn b/devel/electron17/files/patch-media_BUILD.gn
new file mode 100644
index 000000000000..ed4ca9acc715
--- /dev/null
+++ b/devel/electron17/files/patch-media_BUILD.gn
@@ -0,0 +1,12 @@
+--- media/BUILD.gn.orig 2022-05-11 07:16:53 UTC
++++ media/BUILD.gn
+@@ -75,6 +75,9 @@ config("media_config") {
+ defines += [ "DLOPEN_PULSEAUDIO" ]
+ }
+ }
++ if (use_sndio) {
++ defines += [ "USE_SNDIO" ]
++ }
+ if (use_cras) {
+ defines += [ "USE_CRAS" ]
+ }
diff --git a/devel/electron17/files/patch-media_audio_BUILD.gn b/devel/electron17/files/patch-media_audio_BUILD.gn
new file mode 100644
index 000000000000..b3607c003347
--- /dev/null
+++ b/devel/electron17/files/patch-media_audio_BUILD.gn
@@ -0,0 +1,24 @@
+--- media/audio/BUILD.gn.orig 2022-05-13 07:19:54 UTC
++++ media/audio/BUILD.gn
+@@ -243,9 +243,20 @@ source_set("audio") {
+ ]
+ }
+
+- if (is_linux || is_chromeos) {
++ if ((is_linux || is_chromeos) && !use_sndio) {
+ sources += [ "linux/audio_manager_linux.cc" ]
+ }
++
++ if (use_sndio) {
++ libs += [ "sndio" ]
++ sources += [
++ "sndio/audio_manager_sndio.cc",
++ "sndio/sndio_input.cc",
++ "sndio/sndio_input.h",
++ "sndio/sndio_output.cc",
++ "sndio/sndio_output.h"
++ ]
++ }
+
+ if (use_alsa) {
+ libs += [ "asound" ]
diff --git a/devel/electron17/files/patch-media_audio_audio__features.cc b/devel/electron17/files/patch-media_audio_audio__features.cc
new file mode 100644
index 000000000000..2917a850156f
--- /dev/null
+++ b/devel/electron17/files/patch-media_audio_audio__features.cc
@@ -0,0 +1,11 @@
+--- media/audio/audio_features.cc.orig 2022-05-11 07:16:53 UTC
++++ media/audio/audio_features.cc
+@@ -13,7 +13,7 @@ namespace features {
+ const base::Feature kAudioServiceOutOfProcessKillAtHang{
+ "AudioServiceOutOfProcessKillAtHang",
+ #if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || \
+- defined(OS_CHROMEOS)
++ defined(OS_CHROMEOS) || defined(OS_BSD)
+ base::FEATURE_ENABLED_BY_DEFAULT
+ #else
+ base::FEATURE_DISABLED_BY_DEFAULT
diff --git a/devel/electron17/files/patch-media_audio_audio__input__device.cc b/devel/electron17/files/patch-media_audio_audio__input__device.cc
new file mode 100644
index 000000000000..d422b4d83c87
--- /dev/null
+++ b/devel/electron17/files/patch-media_audio_audio__input__device.cc
@@ -0,0 +1,11 @@
+--- media/audio/audio_input_device.cc.orig 2022-05-11 07:16:53 UTC
++++ media/audio/audio_input_device.cc
+@@ -259,7 +259,7 @@ void AudioInputDevice::OnStreamCreated(
+ // here. See comments in AliveChecker and PowerObserverHelper for details and
+ // todos.
+ if (detect_dead_stream_ == DeadStreamDetection::kEnabled) {
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ const bool stop_at_first_alive_notification = true;
+ const bool pause_check_during_suspend = false;
+ #else
diff --git a/devel/electron17/files/patch-media_audio_sndio_audio__manager__sndio.cc b/devel/electron17/files/patch-media_audio_sndio_audio__manager__sndio.cc
new file mode 100644
index 000000000000..69ecbd070528
--- /dev/null
+++ b/devel/electron17/files/patch-media_audio_sndio_audio__manager__sndio.cc
@@ -0,0 +1,180 @@
+--- media/audio/sndio/audio_manager_sndio.cc.orig 2022-05-13 07:20:05 UTC
++++ media/audio/sndio/audio_manager_sndio.cc
+@@ -0,0 +1,177 @@
++// Copyright (c) 2012 The Chromium Authors. All rights reserved.
++// Use of this source code is governed by a BSD-style license that can be
++// found in the LICENSE file.
++
++#include "base/metrics/histogram_macros.h"
++#include "base/memory/ptr_util.h"
++
++#include "media/audio/sndio/audio_manager_sndio.h"
++
++#include "media/audio/audio_device_description.h"
++#include "media/audio/audio_output_dispatcher.h"
++#if defined(USE_SNDIO)
++#include "media/audio/sndio/sndio_input.h"
++#include "media/audio/sndio/sndio_output.h"
++#else
++#include "media/audio/fake_audio_manager.h"
++#endif
++#include "media/base/limits.h"
++#include "media/base/media_switches.h"
++
++namespace media {
++
++enum SndioAudioIO {
++ kPulse,
++ kSndio,
++ kAudioIOMax = kSndio
++};
++
++#if defined(USE_SNDIO)
++// Maximum number of output streams that can be open simultaneously.
++static const int kMaxOutputStreams = 4;
++
++// Default sample rate for input and output streams.
++static const int kDefaultSampleRate = 48000;
++
++void AddDefaultDevice(AudioDeviceNames* device_names) {
++ DCHECK(device_names->empty());
++ device_names->push_front(AudioDeviceName::CreateDefault());
++}
++
++bool AudioManagerSndio::HasAudioOutputDevices() {
++ return true;
++}
++
++bool AudioManagerSndio::HasAudioInputDevices() {
++ return true;
++}
++
++void AudioManagerSndio::GetAudioInputDeviceNames(
++ AudioDeviceNames* device_names) {
++ DCHECK(device_names->empty());
++ AddDefaultDevice(device_names);
++}
++
++void AudioManagerSndio::GetAudioOutputDeviceNames(
++ AudioDeviceNames* device_names) {
++ AddDefaultDevice(device_names);
++}
++
++#if defined(USE_SNDIO)
++const char* AudioManagerSndio::GetName() {
++ return "SNDIO";
++}
++#endif
++
++AudioParameters AudioManagerSndio::GetInputStreamParameters(
++ const std::string& device_id) {
++ static const int kDefaultInputBufferSize = 1024;
++
++ int user_buffer_size = GetUserBufferSize();
++ int buffer_size = user_buffer_size ?
++ user_buffer_size : kDefaultInputBufferSize;
++
++ return AudioParameters(
++ AudioParameters::AUDIO_PCM_LOW_LATENCY, CHANNEL_LAYOUT_STEREO,
++ kDefaultSampleRate, buffer_size);
++}
++
++AudioManagerSndio::AudioManagerSndio(std::unique_ptr<AudioThread> audio_thread,
++ AudioLogFactory* audio_log_factory)
++ : AudioManagerBase(std::move(audio_thread),
++ audio_log_factory) {
++ DLOG(WARNING) << "AudioManagerSndio";
++ SetMaxOutputStreamsAllowed(kMaxOutputStreams);
++}
++
++AudioManagerSndio::~AudioManagerSndio() {
++ Shutdown();
++}
++
++AudioOutputStream* AudioManagerSndio::MakeLinearOutputStream(
++ const AudioParameters& params,
++ const LogCallback& log_callback) {
++ DCHECK_EQ(AudioParameters::AUDIO_PCM_LINEAR, params.format());
++ return MakeOutputStream(params);
++}
++
++AudioOutputStream* AudioManagerSndio::MakeLowLatencyOutputStream(
++ const AudioParameters& params,
++ const std::string& device_id,
++ const LogCallback& log_callback) {
++ DLOG_IF(ERROR, !device_id.empty()) << "Not implemented!";
++ DCHECK_EQ(AudioParameters::AUDIO_PCM_LOW_LATENCY, params.format());
++ return MakeOutputStream(params);
++}
++
++AudioInputStream* AudioManagerSndio::MakeLinearInputStream(
++ const AudioParameters& params,
++ const std::string& device_id,
++ const LogCallback& log_callback) {
++ DCHECK_EQ(AudioParameters::AUDIO_PCM_LINEAR, params.format());
++ return MakeInputStream(params);
++}
++
++AudioInputStream* AudioManagerSndio::MakeLowLatencyInputStream(
++ const AudioParameters& params,
++ const std::string& device_id,
++ const LogCallback& log_callback) {
++ DCHECK_EQ(AudioParameters::AUDIO_PCM_LOW_LATENCY, params.format());
++ return MakeInputStream(params);
++}
++
++AudioParameters AudioManagerSndio::GetPreferredOutputStreamParameters(
++ const std::string& output_device_id,
++ const AudioParameters& input_params) {
++ // TODO(tommi): Support |output_device_id|.
++ DLOG_IF(ERROR, !output_device_id.empty()) << "Not implemented!";
++ static const int kDefaultOutputBufferSize = 2048;
++
++ ChannelLayout channel_layout = CHANNEL_LAYOUT_STEREO;
++ int sample_rate = kDefaultSampleRate;
++ int buffer_size = kDefaultOutputBufferSize;
++ if (input_params.IsValid()) {
++ sample_rate = input_params.sample_rate();
++ channel_layout = input_params.channel_layout();
++ buffer_size = std::min(buffer_size, input_params.frames_per_buffer());
++ }
++
++ int user_buffer_size = GetUserBufferSize();
++ if (user_buffer_size)
++ buffer_size = user_buffer_size;
++
++ return AudioParameters(
++ AudioParameters::AUDIO_PCM_LOW_LATENCY, channel_layout,
++ sample_rate, buffer_size);
++}
++
++AudioInputStream* AudioManagerSndio::MakeInputStream(
++ const AudioParameters& params) {
++ DLOG(WARNING) << "MakeInputStream";
++ return new SndioAudioInputStream(this,
++ AudioDeviceDescription::kDefaultDeviceId, params);
++}
++
++AudioOutputStream* AudioManagerSndio::MakeOutputStream(
++ const AudioParameters& params) {
++ DLOG(WARNING) << "MakeOutputStream";
++ return new SndioAudioOutputStream(params, this);
++}
++#endif
++
++std::unique_ptr<media::AudioManager> CreateAudioManager(
++ std::unique_ptr<AudioThread> audio_thread,
++ AudioLogFactory* audio_log_factory) {
++ DLOG(WARNING) << "CreateAudioManager";
++#if defined(USE_SNDIO)
++ UMA_HISTOGRAM_ENUMERATION("Media.SndioAudioIO", kSndio, kAudioIOMax + 1);
++ return std::make_unique<AudioManagerSndio>(std::move(audio_thread),
++ audio_log_factory);
++#else
++ return std::make_unique<FakeAudioManager>(std::move(audio_thread),
++ audio_log_factory);
++#endif
++
++}
++
++} // namespace media
diff --git a/devel/electron17/files/patch-media_audio_sndio_audio__manager__sndio.h b/devel/electron17/files/patch-media_audio_sndio_audio__manager__sndio.h
new file mode 100644
index 000000000000..a2d46f707856
--- /dev/null
+++ b/devel/electron17/files/patch-media_audio_sndio_audio__manager__sndio.h
@@ -0,0 +1,69 @@
+--- media/audio/sndio/audio_manager_sndio.h.orig 2022-05-13 07:20:05 UTC
++++ media/audio/sndio/audio_manager_sndio.h
+@@ -0,0 +1,66 @@
++// Copyright (c) 2012 The Chromium Authors. All rights reserved.
++// Use of this source code is governed by a BSD-style license that can be
++// found in the LICENSE file.
++
++#ifndef MEDIA_AUDIO_SNDIO_AUDIO_MANAGER_SNDIO_H_
++#define MEDIA_AUDIO_SNDIO_AUDIO_MANAGER_SNDIO_H_
++
++#include <set>
++
++#include "base/compiler_specific.h"
++#include "base/memory/ref_counted.h"
++#include "base/threading/thread.h"
++#include "media/audio/audio_manager_base.h"
++
++namespace media {
++
++class MEDIA_EXPORT AudioManagerSndio : public AudioManagerBase {
++ public:
++ AudioManagerSndio(std::unique_ptr<AudioThread> audio_thread,
++ AudioLogFactory* audio_log_factory);
++
++ AudioManagerSndio(const AudioManagerSndio&) = delete;
++ AudioManagerSndio& operator=(const AudioManagerSndio&) = delete;
++
++ ~AudioManagerSndio() override;
++
++ // Implementation of AudioManager.
++ bool HasAudioOutputDevices() override;
++ bool HasAudioInputDevices() override;
++ void GetAudioInputDeviceNames(AudioDeviceNames* device_names) override;
++ void GetAudioOutputDeviceNames(AudioDeviceNames* device_names) override;
++ AudioParameters GetInputStreamParameters(
++ const std::string& device_id) override;
++ const char* GetName() override;
++
++ // Implementation of AudioManagerBase.
++ AudioOutputStream* MakeLinearOutputStream(
++ const AudioParameters& params,
++ const LogCallback& log_callback) override;
++ AudioOutputStream* MakeLowLatencyOutputStream(
++ const AudioParameters& params,
++ const std::string& device_id,
++ const LogCallback& log_callback) override;
++ AudioInputStream* MakeLinearInputStream(
++ const AudioParameters& params,
++ const std::string& device_id,
++ const LogCallback& log_callback) override;
++ AudioInputStream* MakeLowLatencyInputStream(
++ const AudioParameters& params,
++ const std::string& device_id,
++ const LogCallback& log_callback) override;
++
++ protected:
++ AudioParameters GetPreferredOutputStreamParameters(
++ const std::string& output_device_id,
++ const AudioParameters& input_params) override;
++
++ private:
++ // Called by MakeLinearOutputStream and MakeLowLatencyOutputStream.
++ AudioOutputStream* MakeOutputStream(const AudioParameters& params);
++ AudioInputStream* MakeInputStream(const AudioParameters& params);
++};
++
++} // namespace media
++
++#endif // MEDIA_AUDIO_SNDIO_AUDIO_MANAGER_SNDIO_H_
diff --git a/devel/electron17/files/patch-media_audio_sndio_sndio__input.cc b/devel/electron17/files/patch-media_audio_sndio_sndio__input.cc
new file mode 100644
index 000000000000..bcfdd8b778ef
--- /dev/null
+++ b/devel/electron17/files/patch-media_audio_sndio_sndio__input.cc
@@ -0,0 +1,203 @@
+--- media/audio/sndio/sndio_input.cc.orig 2022-05-13 07:20:05 UTC
++++ media/audio/sndio/sndio_input.cc
+@@ -0,0 +1,200 @@
++// Copyright 2013 The Chromium Authors. All rights reserved.
++// Use of this source code is governed by a BSD-style license that can be
++// found in the LICENSE file.
++
++#include "base/bind.h"
++#include "base/logging.h"
++#include "media/base/audio_timestamp_helper.h"
++#include "media/audio/sndio/audio_manager_sndio.h"
++#include "media/audio/audio_manager.h"
++#include "media/audio/sndio/sndio_input.h"
++
++namespace media {
++
++static const SampleFormat kSampleFormat = kSampleFormatS16;
++
++void SndioAudioInputStream::OnMoveCallback(void *arg, int delta)
++{
++ SndioAudioInputStream* self = static_cast<SndioAudioInputStream*>(arg);
++
++ self->hw_delay += delta;
++}
++
++void *SndioAudioInputStream::ThreadEntry(void *arg) {
++ SndioAudioInputStream* self = static_cast<SndioAudioInputStream*>(arg);
++
++ self->ThreadLoop();
++ return NULL;
++}
++
++SndioAudioInputStream::SndioAudioInputStream(AudioManagerBase* manager,
++ const std::string& device_name,
++ const AudioParameters& params)
++ : manager(manager),
++ params(params),
++ audio_bus(AudioBus::Create(params)),
++ state(kClosed) {
++}
++
++SndioAudioInputStream::~SndioAudioInputStream() {
++ if (state != kClosed)
++ Close();
++}
++
++AudioInputStream::OpenOutcome SndioAudioInputStream::Open() {
++ struct sio_par par;
++ int sig;
++
++ if (state != kClosed)
++ return OpenOutcome::kFailed;
++
++ if (params.format() != AudioParameters::AUDIO_PCM_LINEAR &&
++ params.format() != AudioParameters::AUDIO_PCM_LOW_LATENCY) {
++ LOG(WARNING) << "Unsupported audio format.";
++ return OpenOutcome::kFailed;
++ }
++
++ sio_initpar(&par);
++ par.rate = params.sample_rate();
++ par.rchan = params.channels();
++ par.bits = SampleFormatToBitsPerChannel(kSampleFormat);
++ par.bps = par.bits / 8;
++ par.sig = sig = par.bits != 8 ? 1 : 0;
++ par.le = SIO_LE_NATIVE;
++ par.appbufsz = params.frames_per_buffer();
++
++ hdl = sio_open(SIO_DEVANY, SIO_REC, 0);
++
++ if (hdl == NULL) {
++ LOG(ERROR) << "Couldn't open audio device.";
++ return OpenOutcome::kFailed;
++ }
++
++ if (!sio_setpar(hdl, &par) || !sio_getpar(hdl, &par)) {
++ LOG(ERROR) << "Couldn't set audio parameters.";
++ goto bad_close;
++ }
++
++ if (par.rate != (unsigned int)params.sample_rate() ||
++ par.rchan != (unsigned int)params.channels() ||
++ par.bits != (unsigned int)SampleFormatToBitsPerChannel(kSampleFormat) ||
++ par.sig != (unsigned int)sig ||
++ (par.bps > 1 && par.le != SIO_LE_NATIVE) ||
++ (par.bits != par.bps * 8)) {
++ LOG(ERROR) << "Unsupported audio parameters.";
++ goto bad_close;
++ }
++ state = kStopped;
++ buffer = new char[audio_bus->frames() * params.GetBytesPerFrame(kSampleFormat)];
++ sio_onmove(hdl, &OnMoveCallback, this);
++ return OpenOutcome::kSuccess;
++bad_close:
++ sio_close(hdl);
++ return OpenOutcome::kFailed;
++}
++
++void SndioAudioInputStream::Start(AudioInputCallback* cb) {
++
++ StartAgc();
++
++ state = kRunning;
++ hw_delay = 0;
++ callback = cb;
++ sio_start(hdl);
++ if (pthread_create(&thread, NULL, &ThreadEntry, this) != 0) {
++ LOG(ERROR) << "Failed to create real-time thread for recording.";
++ sio_stop(hdl);
++ state = kStopped;
++ }
++}
++
++void SndioAudioInputStream::Stop() {
++
++ if (state == kStopped)
++ return;
++
++ state = kStopWait;
++ pthread_join(thread, NULL);
++ sio_stop(hdl);
++ state = kStopped;
++
++ StopAgc();
++}
++
++void SndioAudioInputStream::Close() {
++
++ if (state == kClosed)
++ return;
++
++ if (state == kRunning)
++ Stop();
++
++ state = kClosed;
++ delete [] buffer;
++ sio_close(hdl);
++
++ manager->ReleaseInputStream(this);
++}
++
++double SndioAudioInputStream::GetMaxVolume() {
++ // Not supported
++ return 0.0;
++}
++
++void SndioAudioInputStream::SetVolume(double volume) {
++ // Not supported. Do nothing.
++}
++
++double SndioAudioInputStream::GetVolume() {
++ // Not supported.
++ return 0.0;
++}
++
++bool SndioAudioInputStream::IsMuted() {
++ // Not supported.
++ return false;
++}
++
++void SndioAudioInputStream::SetOutputDeviceForAec(
++ const std::string& output_device_id) {
++ // Not supported.
++}
++
++void SndioAudioInputStream::ThreadLoop(void) {
++ size_t todo, n;
++ char *data;
++ unsigned int nframes;
++ double normalized_volume = 0.0;
++
++ nframes = audio_bus->frames();
++
++ while (state == kRunning && !sio_eof(hdl)) {
++
++ GetAgcVolume(&normalized_volume);
++
++ // read one block
++ todo = nframes * params.GetBytesPerFrame(kSampleFormat);
++ data = buffer;
++ while (todo > 0) {
++ n = sio_read(hdl, data, todo);
++ if (n == 0)
++ return; // unrecoverable I/O error
++ todo -= n;
++ data += n;
++ }
++ hw_delay -= nframes;
++
++ // convert frames count to TimeDelta
++ const base::TimeDelta delay = AudioTimestampHelper::FramesToTime(hw_delay,
++ params.sample_rate());
++
++ // push into bus
++ audio_bus->FromInterleaved<SignedInt16SampleTypeTraits>(reinterpret_cast<int16_t*>(buffer), nframes);
++
++
++ // invoke callback
++ callback->OnData(audio_bus.get(), base::TimeTicks::Now() - delay, 1.);
++ }
++}
++
++} // namespace media
diff --git a/devel/electron17/files/patch-media_audio_sndio_sndio__input.h b/devel/electron17/files/patch-media_audio_sndio_sndio__input.h
new file mode 100644
index 000000000000..6c7390b0bfff
--- /dev/null
+++ b/devel/electron17/files/patch-media_audio_sndio_sndio__input.h
@@ -0,0 +1,94 @@
+--- media/audio/sndio/sndio_input.h.orig 2022-05-13 07:20:05 UTC
++++ media/audio/sndio/sndio_input.h
+@@ -0,0 +1,91 @@
++// Copyright 2013 The Chromium Authors. All rights reserved.
++// Use of this source code is governed by a BSD-style license that can be
++// found in the LICENSE file.
++
++#ifndef MEDIA_AUDIO_SNDIO_SNDIO_INPUT_H_
++#define MEDIA_AUDIO_SNDIO_SNDIO_INPUT_H_
++
++#include <stdint.h>
++#include <string>
++#include <sndio.h>
++
++#include "base/compiler_specific.h"
++#include "base/memory/weak_ptr.h"
++#include "base/time/time.h"
++#include "media/audio/agc_audio_stream.h"
++#include "media/audio/audio_io.h"
++#include "media/audio/audio_device_description.h"
++#include "media/base/audio_parameters.h"
++
++namespace media {
++
++class AudioManagerBase;
++
++// Implementation of AudioOutputStream using sndio(7)
++class SndioAudioInputStream : public AgcAudioStream<AudioInputStream> {
++ public:
++ // Pass this to the constructor if you want to attempt auto-selection
++ // of the audio recording device.
++ static const char kAutoSelectDevice[];
++
++ // Create a PCM Output stream for the SNDIO device identified by
++ // |device_name|. If unsure of what to use for |device_name|, use
++ // |kAutoSelectDevice|.
++ SndioAudioInputStream(AudioManagerBase* audio_manager,
++ const std::string& device_name,
++ const AudioParameters& params);
++
++ SndioAudioInputStream(const SndioAudioInputStream&) = delete;
++ SndioAudioInputStream& operator=(const SndioAudioInputStream&) = delete;
++
++ ~SndioAudioInputStream() override;
++
++ // Implementation of AudioInputStream.
++ OpenOutcome Open() override;
++ void Start(AudioInputCallback* callback) override;
++ void Stop() override;
++ void Close() override;
++ double GetMaxVolume() override;
++ void SetVolume(double volume) override;
++ double GetVolume() override;
++ bool IsMuted() override;
++ void SetOutputDeviceForAec(const std::string& output_device_id) override;
++
++ private:
++
++ enum StreamState {
++ kClosed, // Not opened yet
++ kStopped, // Device opened, but not started yet
++ kRunning, // Started, device playing
++ kStopWait // Stopping, waiting for the real-time thread to exit
++ };
++
++ // C-style call-backs
++ static void OnMoveCallback(void *arg, int delta);
++ static void* ThreadEntry(void *arg);
++
++ // Continuously moves data from the device to the consumer
++ void ThreadLoop();
++ // Our creator, the audio manager needs to be notified when we close.
++ AudioManagerBase* manager;
++ // Parameters of the source
++ AudioParameters params;
++ // We store data here for consumer
++ std::unique_ptr<AudioBus> audio_bus;
++ // Call-back that consumes recorded data
++ AudioInputCallback* callback; // Valid during a recording session.
++ // Handle of the audio device
++ struct sio_hdl* hdl;
++ // Current state of the stream
++ enum StreamState state;
++ // High priority thread running ThreadLoop()
++ pthread_t thread;
++ // Number of frames buffered in the hardware
++ int hw_delay;
++ // Temporary buffer where data is stored sndio-compatible format
++ char* buffer;
++};
++
++} // namespace media
++
++#endif // MEDIA_AUDIO_SNDIO_SNDIO_INPUT_H_
diff --git a/devel/electron17/files/patch-media_audio_sndio_sndio__output.cc b/devel/electron17/files/patch-media_audio_sndio_sndio__output.cc
new file mode 100644
index 000000000000..bc4e1ccfa908
--- /dev/null
+++ b/devel/electron17/files/patch-media_audio_sndio_sndio__output.cc
@@ -0,0 +1,186 @@
+--- media/audio/sndio/sndio_output.cc.orig 2022-05-13 07:20:05 UTC
++++ media/audio/sndio/sndio_output.cc
+@@ -0,0 +1,183 @@
++// Copyright (c) 2012 The Chromium Authors. All rights reserved.
++// Use of this source code is governed by a BSD-style license that can be
++// found in the LICENSE file.
++
++#include "base/logging.h"
++#include "base/time/time.h"
++#include "base/time/default_tick_clock.h"
++#include "media/audio/audio_manager_base.h"
++#include "media/base/audio_timestamp_helper.h"
++#include "media/audio/sndio/sndio_output.h"
++
++namespace media {
++
++static const SampleFormat kSampleFormat = kSampleFormatS16;
++
++void SndioAudioOutputStream::OnMoveCallback(void *arg, int delta) {
++ SndioAudioOutputStream* self = static_cast<SndioAudioOutputStream*>(arg);
++
++ self->hw_delay -= delta;
++}
++
++void SndioAudioOutputStream::OnVolCallback(void *arg, unsigned int vol) {
++ SndioAudioOutputStream* self = static_cast<SndioAudioOutputStream*>(arg);
++
++ self->vol = vol;
++}
++
++void *SndioAudioOutputStream::ThreadEntry(void *arg) {
++ SndioAudioOutputStream* self = static_cast<SndioAudioOutputStream*>(arg);
++
++ self->ThreadLoop();
++ return NULL;
++}
++
++SndioAudioOutputStream::SndioAudioOutputStream(const AudioParameters& params,
++ AudioManagerBase* manager)
++ : manager(manager),
++ params(params),
++ audio_bus(AudioBus::Create(params)),
++ state(kClosed),
++ mutex(PTHREAD_MUTEX_INITIALIZER) {
++}
++
++SndioAudioOutputStream::~SndioAudioOutputStream() {
++ if (state != kClosed)
++ Close();
++}
++
++bool SndioAudioOutputStream::Open() {
++ struct sio_par par;
++ int sig;
++
++ if (params.format() != AudioParameters::AUDIO_PCM_LINEAR &&
++ params.format() != AudioParameters::AUDIO_PCM_LOW_LATENCY) {
++ LOG(WARNING) << "Unsupported audio format.";
++ return false;
++ }
++ sio_initpar(&par);
++ par.rate = params.sample_rate();
++ par.pchan = params.channels();
++ par.bits = SampleFormatToBitsPerChannel(kSampleFormat);
++ par.bps = par.bits / 8;
++ par.sig = sig = par.bits != 8 ? 1 : 0;
++ par.le = SIO_LE_NATIVE;
++ par.appbufsz = params.frames_per_buffer();
++
++ hdl = sio_open(SIO_DEVANY, SIO_PLAY, 0);
++ if (hdl == NULL) {
++ LOG(ERROR) << "Couldn't open audio device.";
++ return false;
++ }
++ if (!sio_setpar(hdl, &par) || !sio_getpar(hdl, &par)) {
++ LOG(ERROR) << "Couldn't set audio parameters.";
++ goto bad_close;
++ }
++ if (par.rate != (unsigned int)params.sample_rate() ||
++ par.pchan != (unsigned int)params.channels() ||
++ par.bits != (unsigned int)SampleFormatToBitsPerChannel(kSampleFormat) ||
++ par.sig != (unsigned int)sig ||
++ (par.bps > 1 && par.le != SIO_LE_NATIVE) ||
++ (par.bits != par.bps * 8)) {
++ LOG(ERROR) << "Unsupported audio parameters.";
++ goto bad_close;
++ }
++ state = kStopped;
++ volpending = 0;
++ vol = 0;
++ buffer = new char[audio_bus->frames() * params.GetBytesPerFrame(kSampleFormat)];
++ sio_onmove(hdl, &OnMoveCallback, this);
++ sio_onvol(hdl, &OnVolCallback, this);
++ return true;
++ bad_close:
++ sio_close(hdl);
++ return false;
++}
++
++void SndioAudioOutputStream::Close() {
++ if (state == kClosed)
++ return;
++ if (state == kRunning)
++ Stop();
++ state = kClosed;
++ delete [] buffer;
++ sio_close(hdl);
++ manager->ReleaseOutputStream(this); // Calls the destructor
++}
++
++void SndioAudioOutputStream::Start(AudioSourceCallback* callback) {
++ state = kRunning;
++ hw_delay = 0;
++ source = callback;
++ sio_start(hdl);
++ if (pthread_create(&thread, NULL, &ThreadEntry, this) != 0) {
++ LOG(ERROR) << "Failed to create real-time thread.";
++ sio_stop(hdl);
++ state = kStopped;
++ }
++}
++
++void SndioAudioOutputStream::Stop() {
++ if (state == kStopped)
++ return;
++ state = kStopWait;
++ pthread_join(thread, NULL);
++ sio_stop(hdl);
++ state = kStopped;
++}
++
++void SndioAudioOutputStream::SetVolume(double v) {
++ pthread_mutex_lock(&mutex);
++ vol = v * SIO_MAXVOL;
++ volpending = 1;
++ pthread_mutex_unlock(&mutex);
++}
++
++void SndioAudioOutputStream::GetVolume(double* v) {
++ pthread_mutex_lock(&mutex);
++ *v = vol * (1. / SIO_MAXVOL);
++ pthread_mutex_unlock(&mutex);
++}
++
++// This stream is always used with sub second buffer sizes, where it's
++// sufficient to simply always flush upon Start().
++void SndioAudioOutputStream::Flush() {}
++
++void SndioAudioOutputStream::ThreadLoop(void) {
++ int avail, count, result;
++
++ while (state == kRunning) {
++ // Update volume if needed
++ pthread_mutex_lock(&mutex);
++ if (volpending) {
++ volpending = 0;
++ sio_setvol(hdl, vol);
++ }
++ pthread_mutex_unlock(&mutex);
++
++ // Get data to play
++ const base::TimeDelta delay = AudioTimestampHelper::FramesToTime(hw_delay,
++ params.sample_rate());
++ count = source->OnMoreData(delay, base::TimeTicks::Now(), 0, audio_bus.get());
++ audio_bus->ToInterleaved<SignedInt16SampleTypeTraits>(count, reinterpret_cast<int16_t*>(buffer));
++ if (count == 0) {
++ // We have to submit something to the device
++ count = audio_bus->frames();
++ memset(buffer, 0, count * params.GetBytesPerFrame(kSampleFormat));
++ LOG(WARNING) << "No data to play, running empty cycle.";
++ }
++
++ // Submit data to the device
++ avail = count * params.GetBytesPerFrame(kSampleFormat);
++ result = sio_write(hdl, buffer, avail);
++ if (result == 0) {
++ LOG(WARNING) << "Audio device disconnected.";
++ break;
++ }
++
++ // Update hardware pointer
++ hw_delay += count;
++ }
++}
++
++} // namespace media
diff --git a/devel/electron17/files/patch-media_audio_sndio_sndio__output.h b/devel/electron17/files/patch-media_audio_sndio_sndio__output.h
new file mode 100644
index 000000000000..221900b21bf0
--- /dev/null
+++ b/devel/electron17/files/patch-media_audio_sndio_sndio__output.h
@@ -0,0 +1,91 @@
+--- media/audio/sndio/sndio_output.h.orig 2022-05-13 07:20:05 UTC
++++ media/audio/sndio/sndio_output.h
+@@ -0,0 +1,88 @@
++// Copyright (c) 2012 The Chromium Authors. All rights reserved.
++// Use of this source code is governed by a BSD-style license that can be
++// found in the LICENSE file.
++
++#ifndef MEDIA_AUDIO_SNDIO_SNDIO_OUTPUT_H_
++#define MEDIA_AUDIO_SNDIO_SNDIO_OUTPUT_H_
++
++#include <pthread.h>
++#include <sndio.h>
++
++#include "base/time/tick_clock.h"
++#include "base/time/time.h"
++#include "media/audio/audio_io.h"
++
++namespace media {
++
++class AudioManagerBase;
++
++// Implementation of AudioOutputStream using sndio(7)
++class SndioAudioOutputStream : public AudioOutputStream {
++ public:
++ // The manager is creating this object
++ SndioAudioOutputStream(const AudioParameters& params,
++ AudioManagerBase* manager);
++
++ SndioAudioOutputStream(const SndioAudioOutputStream&) = delete;
++ SndioAudioOutputStream& operator=(const SndioAudioOutputStream&) = delete;
++
++ virtual ~SndioAudioOutputStream();
++
++ // Implementation of AudioOutputStream.
++ bool Open() override;
++ void Close() override;
++ void Start(AudioSourceCallback* callback) override;
++ void Stop() override;
++ void SetVolume(double volume) override;
++ void GetVolume(double* volume) override;
++ void Flush() override;
++
++ friend void sndio_onmove(void *arg, int delta);
++ friend void sndio_onvol(void *arg, unsigned int vol);
++ friend void *sndio_threadstart(void *arg);
++
++ private:
++ enum StreamState {
++ kClosed, // Not opened yet
++ kStopped, // Device opened, but not started yet
++ kRunning, // Started, device playing
++ kStopWait // Stopping, waiting for the real-time thread to exit
++ };
++
++ // C-style call-backs
++ static void OnMoveCallback(void *arg, int delta);
++ static void OnVolCallback(void *arg, unsigned int vol);
++ static void* ThreadEntry(void *arg);
++
++ // Continuously moves data from the producer to the device
++ void ThreadLoop(void);
++
++ // Our creator, the audio manager needs to be notified when we close.
++ AudioManagerBase* manager;
++ // Parameters of the source
++ AudioParameters params;
++ // Source stores data here
++ std::unique_ptr<AudioBus> audio_bus;
++ // Call-back that produces data to play
++ AudioSourceCallback* source;
++ // Handle of the audio device
++ struct sio_hdl* hdl;
++ // Current state of the stream
++ enum StreamState state;
++ // High priority thread running ThreadLoop()
++ pthread_t thread;
++ // Protects vol, volpending and hw_delay
++ pthread_mutex_t mutex;
++ // Current volume in the 0..SIO_MAXVOL range
++ int vol;
++ // Set to 1 if volumes must be refreshed in the realtime thread
++ int volpending;
++ // Number of frames buffered in the hardware
++ int hw_delay;
++ // Temporary buffer where data is stored sndio-compatible format
++ char* buffer;
++};
++
++} // namespace media
++
++#endif // MEDIA_AUDIO_SNDIO_SNDIO_OUTPUT_H_
diff --git a/devel/electron17/files/patch-media_base_audio__latency.cc b/devel/electron17/files/patch-media_base_audio__latency.cc
new file mode 100644
index 000000000000..8305e1bd272b
--- /dev/null
+++ b/devel/electron17/files/patch-media_base_audio__latency.cc
@@ -0,0 +1,11 @@
+--- media/base/audio_latency.cc.orig 2022-05-11 07:16:53 UTC
++++ media/base/audio_latency.cc
+@@ -135,7 +135,7 @@ int AudioLatency::GetRtcBufferSize(int sample_rate, in
+ }
+
+ #if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC) || \
+- defined(OS_FUCHSIA)
++ defined(OS_FUCHSIA) || defined(OS_BSD)
+ // On Linux, MacOS and Fuchsia, the low level IO implementations on the
+ // browser side supports all buffer size the clients want. We use the native
+ // peer connection buffer size (10ms) to achieve best possible performance.
diff --git a/devel/electron17/files/patch-media_base_media__switches.cc b/devel/electron17/files/patch-media_base_media__switches.cc
new file mode 100644
index 000000000000..c9288d02ff78
--- /dev/null
+++ b/devel/electron17/files/patch-media_base_media__switches.cc
@@ -0,0 +1,47 @@
+--- media/base/media_switches.cc.orig 2022-05-11 07:16:53 UTC
++++ media/base/media_switches.cc
+@@ -9,7 +9,7 @@
+ #include "build/chromeos_buildflags.h"
+ #include "components/system_media_controls/linux/buildflags/buildflags.h"
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "base/cpu.h"
+ #endif
+
+@@ -397,7 +397,7 @@ const base::Feature kGav1VideoDecoder{"Gav1VideoDecode
+ const base::Feature kGlobalMediaControls {
+ "GlobalMediaControls",
+ #if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || \
+- BUILDFLAG(IS_CHROMEOS_LACROS)
++ BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ base::FEATURE_ENABLED_BY_DEFAULT
+ #else
+ base::FEATURE_DISABLED_BY_DEFAULT
+@@ -429,7 +429,7 @@ constexpr base::FeatureParam<kCrosGlobalMediaControlsP
+ const base::Feature kGlobalMediaControlsPictureInPicture {
+ "GlobalMediaControlsPictureInPicture",
+ #if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || \
+- defined(OS_CHROMEOS) || BUILDFLAG(IS_CHROMEOS_LACROS)
++ defined(OS_CHROMEOS) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ base::FEATURE_ENABLED_BY_DEFAULT
+ #else
+ base::FEATURE_DISABLED_BY_DEFAULT
+@@ -470,7 +470,7 @@ const base::Feature kUseR16Texture{"use-r16-texture",
+ const base::Feature kUnifiedAutoplay{"UnifiedAutoplay",
+ base::FEATURE_ENABLED_BY_DEFAULT};
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Enable vaapi video decoding on linux. This is already enabled by default on
+ // chromeos, but needs an experiment on linux.
+ const base::Feature kVaapiVideoDecodeLinux{"VaapiVideoDecoder",
+@@ -926,7 +926,7 @@ bool IsLiveCaptionFeatureEnabled() {
+ return false;
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ if (base::FeatureList::IsEnabled(media::kUseSodaForLiveCaption)) {
+ // Check if the CPU has the required instruction set to run the Speech
+ // On-Device API (SODA) library.
diff --git a/devel/electron17/files/patch-media_base_media__switches.h b/devel/electron17/files/patch-media_base_media__switches.h
new file mode 100644
index 000000000000..d37b7ead83c0
--- /dev/null
+++ b/devel/electron17/files/patch-media_base_media__switches.h
@@ -0,0 +1,20 @@
+--- media/base/media_switches.h.orig 2022-05-11 07:16:53 UTC
++++ media/base/media_switches.h
+@@ -38,7 +38,7 @@ MEDIA_EXPORT extern const char kDisableBackgroundMedia
+ MEDIA_EXPORT extern const char kReportVp9AsAnUnsupportedMimeType[];
+
+ #if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_FREEBSD) || \
+- defined(OS_SOLARIS)
++ defined(OS_SOLARIS) || defined(OS_BSD)
+ MEDIA_EXPORT extern const char kAlsaInputDevice[];
+ MEDIA_EXPORT extern const char kAlsaOutputDevice[];
+ #endif
+@@ -187,7 +187,7 @@ MEDIA_EXPORT extern const base::Feature kUseFakeDevice
+ MEDIA_EXPORT extern const base::Feature kUseMediaHistoryStore;
+ MEDIA_EXPORT extern const base::Feature kUseR16Texture;
+ MEDIA_EXPORT extern const base::Feature kUseSodaForLiveCaption;
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ MEDIA_EXPORT extern const base::Feature kVaapiVideoDecodeLinux;
+ MEDIA_EXPORT extern const base::Feature kVaapiVideoEncodeLinux;
+ #endif // defined(OS_LINUX)
diff --git a/devel/electron17/files/patch-media_base_scopedfd__helper.h b/devel/electron17/files/patch-media_base_scopedfd__helper.h
new file mode 100644
index 000000000000..bb53debade65
--- /dev/null
+++ b/devel/electron17/files/patch-media_base_scopedfd__helper.h
@@ -0,0 +1,11 @@
+--- media/base/scopedfd_helper.h.orig 2022-05-11 07:16:53 UTC
++++ media/base/scopedfd_helper.h
+@@ -15,7 +15,7 @@ namespace media {
+ // since the only current user is V4L2 we are limiting the scope to OS_LINUX so
+ // the binary size does not inflate on non-using systems. Feel free to adapt
+ // this and BUILD.gn as our needs evolve.
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+
+ // Return a new vector containing duplicates of |fds|, or PCHECKs in case of an
+ // error.
diff --git a/devel/electron17/files/patch-media_base_vector__math.cc b/devel/electron17/files/patch-media_base_vector__math.cc
new file mode 100644
index 000000000000..495d201fac2d
--- /dev/null
+++ b/devel/electron17/files/patch-media_base_vector__math.cc
@@ -0,0 +1,11 @@
+--- media/base/vector_math.cc.orig 2021-04-14 01:08:51 UTC
++++ media/base/vector_math.cc
+@@ -18,7 +18,7 @@
+ // better, which is anywhere clang is used.
+ // TODO(pcc): Linux currently uses ThinLTO which has broken auto-vectorization
+ // in clang, so use our intrinsic version for now. http://crbug.com/738085
+-#if !defined(__clang__) || defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if !defined(__clang__) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ #define FMAC_FUNC FMAC_SSE
+ #define FMUL_FUNC FMUL_SSE
+ #else
diff --git a/devel/electron17/files/patch-media_base_video__frame.cc b/devel/electron17/files/patch-media_base_video__frame.cc
new file mode 100644
index 000000000000..7d913ef8aec7
--- /dev/null
+++ b/devel/electron17/files/patch-media_base_video__frame.cc
@@ -0,0 +1,74 @@
+--- media/base/video_frame.cc.orig 2022-05-11 07:16:53 UTC
++++ media/base/video_frame.cc
+@@ -73,7 +73,7 @@ std::string VideoFrame::StorageTypeToString(
+ return "OWNED_MEMORY";
+ case VideoFrame::STORAGE_SHMEM:
+ return "SHMEM";
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ case VideoFrame::STORAGE_DMABUFS:
+ return "DMABUFS";
+ #endif
+@@ -90,7 +90,7 @@ std::string VideoFrame::StorageTypeToString(
+ // static
+ bool VideoFrame::IsStorageTypeMappable(VideoFrame::StorageType storage_type) {
+ return
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // This is not strictly needed but makes explicit that, at VideoFrame
+ // level, DmaBufs are not mappable from userspace.
+ storage_type != VideoFrame::STORAGE_DMABUFS &&
+@@ -278,7 +278,7 @@ static absl::optional<VideoFrameLayout> GetDefaultLayo
+ return VideoFrameLayout::CreateWithPlanes(format, coded_size, planes);
+ }
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // This class allows us to embed a vector<ScopedFD> into a scoped_refptr, and
+ // thus to have several VideoFrames share the same set of DMABUF FDs.
+ class VideoFrame::DmabufHolder
+@@ -617,7 +617,7 @@ scoped_refptr<VideoFrame> VideoFrame::WrapExternalGpuM
+ for (size_t i = 0; i < num_planes; ++i)
+ planes[i].stride = gpu_memory_buffer->stride(i);
+ uint64_t modifier = gfx::NativePixmapHandle::kNoModifier;
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ if (gpu_memory_buffer->GetType() == gfx::NATIVE_PIXMAP) {
+ const auto gmb_handle = gpu_memory_buffer->CloneHandle();
+ if (gmb_handle.is_null() ||
+@@ -663,7 +663,7 @@ scoped_refptr<VideoFrame> VideoFrame::WrapExternalGpuM
+ return frame;
+ }
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // static
+ scoped_refptr<VideoFrame> VideoFrame::WrapExternalDmabufs(
+ const VideoFrameLayout& layout,
+@@ -887,7 +887,7 @@ scoped_refptr<VideoFrame> VideoFrame::WrapVideoFrame(
+ }
+ }
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ DCHECK(frame->dmabuf_fds_);
+ // If there are any |dmabuf_fds_| plugged in, we should refer them too.
+ wrapping_frame->dmabuf_fds_ = frame->dmabuf_fds_;
+@@ -1253,7 +1253,7 @@ const gpu::MailboxHolder& VideoFrame::mailbox_holder(
+ : mailbox_holders_[texture_index];
+ }
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ const std::vector<base::ScopedFD>& VideoFrame::DmabufFds() const {
+ DCHECK_EQ(storage_type_, STORAGE_DMABUFS);
+
+@@ -1365,7 +1365,7 @@ VideoFrame::VideoFrame(const VideoFrameLayout& layout,
+ storage_type_(storage_type),
+ visible_rect_(Intersection(visible_rect, gfx::Rect(layout.coded_size()))),
+ natural_size_(natural_size),
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ dmabuf_fds_(base::MakeRefCounted<DmabufHolder>()),
+ #endif
+ timestamp_(timestamp),
diff --git a/devel/electron17/files/patch-media_base_video__frame.h b/devel/electron17/files/patch-media_base_video__frame.h
new file mode 100644
index 000000000000..6e459a56c6bb
--- /dev/null
+++ b/devel/electron17/files/patch-media_base_video__frame.h
@@ -0,0 +1,47 @@
+--- media/base/video_frame.h.orig 2022-05-11 07:16:53 UTC
++++ media/base/video_frame.h
+@@ -40,7 +40,7 @@
+ #include "base/mac/scoped_cftyperef.h"
+ #endif // defined(OS_MAC)
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ #include "base/files/scoped_file.h"
+ #endif // defined(OS_LINUX) || defined(OS_CHROMEOS)
+
+@@ -82,7 +82,7 @@ class MEDIA_EXPORT VideoFrame : public base::RefCounte
+ STORAGE_UNOWNED_MEMORY = 2, // External, non owned data pointers.
+ STORAGE_OWNED_MEMORY = 3, // VideoFrame has allocated its own data buffer.
+ STORAGE_SHMEM = 4, // Backed by unsafe (writable) shared memory.
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // TODO(mcasas): Consider turning this type into STORAGE_NATIVE
+ // based on the idea of using this same enum value for both DMA
+ // buffers on Linux and CVPixelBuffers on Mac (which currently use
+@@ -276,7 +276,7 @@ class MEDIA_EXPORT VideoFrame : public base::RefCounte
+ ReleaseMailboxAndGpuMemoryBufferCB mailbox_holder_and_gmb_release_cb,
+ base::TimeDelta timestamp);
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // Wraps provided dmabufs
+ // (https://www.kernel.org/doc/html/latest/driver-api/dma-buf.html) with a
+ // VideoFrame. The frame will take ownership of |dmabuf_fds|, and will
+@@ -535,7 +535,7 @@ class MEDIA_EXPORT VideoFrame : public base::RefCounte
+ // mailbox, the caller must wait for the included sync point.
+ const gpu::MailboxHolder& mailbox_holder(size_t texture_index) const;
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // Returns a vector containing the backing DmaBufs for this frame. The number
+ // of returned DmaBufs will be equal or less than the number of planes of
+ // the frame. If there are less, this means that the last FD contains the
+@@ -742,7 +742,7 @@ class MEDIA_EXPORT VideoFrame : public base::RefCounte
+ // GPU memory buffer, if this frame is STORAGE_GPU_MEMORY_BUFFER.
+ std::unique_ptr<gfx::GpuMemoryBuffer> gpu_memory_buffer_;
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ class DmabufHolder;
+
+ // Dmabufs for the frame, used when storage is STORAGE_DMABUFS. Size is either
diff --git a/devel/electron17/files/patch-media_capture_video_create__video__capture__device__factory.cc b/devel/electron17/files/patch-media_capture_video_create__video__capture__device__factory.cc
new file mode 100644
index 000000000000..bf64d5f43ae6
--- /dev/null
+++ b/devel/electron17/files/patch-media_capture_video_create__video__capture__device__factory.cc
@@ -0,0 +1,20 @@
+--- media/capture/video/create_video_capture_device_factory.cc.orig 2022-05-11 07:16:53 UTC
++++ media/capture/video/create_video_capture_device_factory.cc
+@@ -12,7 +12,7 @@
+ #include "media/capture/video/fake_video_capture_device_factory.h"
+ #include "media/capture/video/file_video_capture_device_factory.h"
+
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ #include "media/capture/video/linux/video_capture_device_factory_linux.h"
+ #elif BUILDFLAG(IS_CHROMEOS_ASH)
+ #include "media/capture/video/chromeos/public/cros_features.h"
+@@ -55,7 +55,7 @@ CreateFakeVideoCaptureDeviceFactory() {
+ std::unique_ptr<VideoCaptureDeviceFactory>
+ CreatePlatformSpecificVideoCaptureDeviceFactory(
+ scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner) {
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ return std::make_unique<VideoCaptureDeviceFactoryLinux>(ui_task_runner);
+ #elif BUILDFLAG(IS_CHROMEOS_ASH)
+ if (base::SysInfo::IsRunningOnChromeOS())
diff --git a/devel/electron17/files/patch-media_capture_video_fake__video__capture__device__factory.cc b/devel/electron17/files/patch-media_capture_video_fake__video__capture__device__factory.cc
new file mode 100644
index 000000000000..d318e7f80159
--- /dev/null
+++ b/devel/electron17/files/patch-media_capture_video_fake__video__capture__device__factory.cc
@@ -0,0 +1,11 @@
+--- media/capture/video/fake_video_capture_device_factory.cc.orig 2022-05-11 07:16:53 UTC
++++ media/capture/video/fake_video_capture_device_factory.cc
+@@ -213,7 +213,7 @@ void FakeVideoCaptureDeviceFactory::GetDevicesInfo(
+ int entry_index = 0;
+ for (const auto& entry : devices_config_) {
+ VideoCaptureApi api =
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ VideoCaptureApi::LINUX_V4L2_SINGLE_PLANE;
+ #elif defined(OS_MAC)
+ VideoCaptureApi::MACOSX_AVFOUNDATION;
diff --git a/devel/electron17/files/patch-media_capture_video_file__video__capture__device__factory.cc b/devel/electron17/files/patch-media_capture_video_file__video__capture__device__factory.cc
new file mode 100644
index 000000000000..f8224de93e18
--- /dev/null
+++ b/devel/electron17/files/patch-media_capture_video_file__video__capture__device__factory.cc
@@ -0,0 +1,11 @@
+--- media/capture/video/file_video_capture_device_factory.cc.orig 2021-09-14 01:51:58 UTC
++++ media/capture/video/file_video_capture_device_factory.cc
+@@ -52,7 +52,7 @@ void FileVideoCaptureDeviceFactory::GetDevicesInfo(
+ VideoCaptureApi::WIN_DIRECT_SHOW;
+ #elif defined(OS_MAC)
+ VideoCaptureApi::MACOSX_AVFOUNDATION;
+-#elif defined(OS_LINUX) || defined(OS_CHROMEOS)
++#elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ VideoCaptureApi::LINUX_V4L2_SINGLE_PLANE;
+ #else
+ VideoCaptureApi::UNKNOWN;
diff --git a/devel/electron17/files/patch-media_capture_video_linux_fake__v4l2__impl.h b/devel/electron17/files/patch-media_capture_video_linux_fake__v4l2__impl.h
new file mode 100644
index 000000000000..f8f7b400b47c
--- /dev/null
+++ b/devel/electron17/files/patch-media_capture_video_linux_fake__v4l2__impl.h
@@ -0,0 +1,11 @@
+--- media/capture/video/linux/fake_v4l2_impl.h.orig 2022-05-11 07:00:44 UTC
++++ media/capture/video/linux/fake_v4l2_impl.h
+@@ -36,7 +36,7 @@ class CAPTURE_EXPORT FakeV4L2Impl : public V4L2Capture
+ // Implementation of V4L2CaptureDevice interface:
+ int open(const char* device_name, int flags) override;
+ int close(int fd) override;
+- int ioctl(int fd, int request, void* argp) override;
++ int ioctl(int fd, unsigned long request, void* argp) override;
+ void* mmap(void* start,
+ size_t length,
+ int prot,
diff --git a/devel/electron17/files/patch-media_capture_video_linux_v4l2__capture__delegate.cc b/devel/electron17/files/patch-media_capture_video_linux_v4l2__capture__delegate.cc
new file mode 100644
index 000000000000..fd74b2a59113
--- /dev/null
+++ b/devel/electron17/files/patch-media_capture_video_linux_v4l2__capture__delegate.cc
@@ -0,0 +1,44 @@
+--- media/capture/video/linux/v4l2_capture_delegate.cc.orig 2022-05-11 07:16:53 UTC
++++ media/capture/video/linux/v4l2_capture_delegate.cc
+@@ -4,8 +4,10 @@
+
+ #include "media/capture/video/linux/v4l2_capture_delegate.h"
+
++#if !defined(OS_BSD)
+ #include <linux/version.h>
+ #include <linux/videodev2.h>
++#endif
+ #include <poll.h>
+ #include <sys/fcntl.h>
+ #include <sys/ioctl.h>
+@@ -25,10 +27,10 @@
+
+ using media::mojom::MeteringMode;
+
+-#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 6, 0)
++// #if LINUX_VERSION_CODE < KERNEL_VERSION(4, 6, 0)
+ // 16 bit depth, Realsense F200.
+ #define V4L2_PIX_FMT_Z16 v4l2_fourcc('Z', '1', '6', ' ')
+-#endif
++// #endif
+
+ // TODO(aleksandar.stojiljkovic): Wrap this with kernel version check once the
+ // format is introduced to kernel.
+@@ -660,7 +662,7 @@ base::WeakPtr<V4L2CaptureDelegate> V4L2CaptureDelegate
+
+ V4L2CaptureDelegate::~V4L2CaptureDelegate() = default;
+
+-bool V4L2CaptureDelegate::RunIoctl(int request, void* argp) {
++bool V4L2CaptureDelegate::RunIoctl(unsigned int request, void* argp) {
+ int num_retries = 0;
+ for (; DoIoctl(request, argp) < 0 && num_retries < kMaxIOCtrlRetries;
+ ++num_retries) {
+@@ -670,7 +672,7 @@ bool V4L2CaptureDelegate::RunIoctl(int request, void*
+ return num_retries != kMaxIOCtrlRetries;
+ }
+
+-int V4L2CaptureDelegate::DoIoctl(int request, void* argp) {
++int V4L2CaptureDelegate::DoIoctl(unsigned int request, void* argp) {
+ return HANDLE_EINTR(v4l2_->ioctl(device_fd_.get(), request, argp));
+ }
+
diff --git a/devel/electron17/files/patch-media_capture_video_linux_v4l2__capture__delegate.h b/devel/electron17/files/patch-media_capture_video_linux_v4l2__capture__delegate.h
new file mode 100644
index 000000000000..8d362c6ac3c4
--- /dev/null
+++ b/devel/electron17/files/patch-media_capture_video_linux_v4l2__capture__delegate.h
@@ -0,0 +1,15 @@
+--- media/capture/video/linux/v4l2_capture_delegate.h.orig 2022-05-11 07:16:53 UTC
++++ media/capture/video/linux/v4l2_capture_delegate.h
+@@ -84,10 +84,10 @@ class CAPTURE_EXPORT V4L2CaptureDelegate final {
+ // device file descriptor or (re)starting streaming, can fail but works after
+ // retrying (https://crbug.com/670262). Returns false if the |request| ioctl
+ // fails too many times.
+- bool RunIoctl(int request, void* argp);
++ bool RunIoctl(unsigned int request, void* argp);
+
+ // Simple wrapper to do HANDLE_EINTR(v4l2_->ioctl(device_fd_.get(), ...)).
+- int DoIoctl(int request, void* argp);
++ int DoIoctl(unsigned int request, void* argp);
+
+ // Creates a mojom::RangePtr with the (min, max, current, step) values of the
+ // control associated with |control_id|. Returns an empty Range otherwise.
diff --git a/devel/electron17/files/patch-media_capture_video_linux_v4l2__capture__device.h b/devel/electron17/files/patch-media_capture_video_linux_v4l2__capture__device.h
new file mode 100644
index 000000000000..c632a7a528f8
--- /dev/null
+++ b/devel/electron17/files/patch-media_capture_video_linux_v4l2__capture__device.h
@@ -0,0 +1,11 @@
+--- media/capture/video/linux/v4l2_capture_device.h.orig 2022-05-11 07:00:44 UTC
++++ media/capture/video/linux/v4l2_capture_device.h
+@@ -21,7 +21,7 @@ class CAPTURE_EXPORT V4L2CaptureDevice
+ public:
+ virtual int open(const char* device_name, int flags) = 0;
+ virtual int close(int fd) = 0;
+- virtual int ioctl(int fd, int request, void* argp) = 0;
++ virtual int ioctl(int fd, unsigned long request, void* argp) = 0;
+ virtual void* mmap(void* start,
+ size_t length,
+ int prot,
diff --git a/devel/electron17/files/patch-media_capture_video_linux_v4l2__capture__device__impl.cc b/devel/electron17/files/patch-media_capture_video_linux_v4l2__capture__device__impl.cc
new file mode 100644
index 000000000000..29853fae7652
--- /dev/null
+++ b/devel/electron17/files/patch-media_capture_video_linux_v4l2__capture__device__impl.cc
@@ -0,0 +1,11 @@
+--- media/capture/video/linux/v4l2_capture_device_impl.cc.orig 2022-05-11 07:00:44 UTC
++++ media/capture/video/linux/v4l2_capture_device_impl.cc
+@@ -22,7 +22,7 @@ int V4L2CaptureDeviceImpl::close(int fd) {
+ return ::close(fd);
+ }
+
+-int V4L2CaptureDeviceImpl::ioctl(int fd, int request, void* argp) {
++int V4L2CaptureDeviceImpl::ioctl(int fd, unsigned long request, void* argp) {
+ return ::ioctl(fd, request, argp);
+ }
+
diff --git a/devel/electron17/files/patch-media_capture_video_linux_v4l2__capture__device__impl.h b/devel/electron17/files/patch-media_capture_video_linux_v4l2__capture__device__impl.h
new file mode 100644
index 000000000000..06306fcfab05
--- /dev/null
+++ b/devel/electron17/files/patch-media_capture_video_linux_v4l2__capture__device__impl.h
@@ -0,0 +1,11 @@
+--- media/capture/video/linux/v4l2_capture_device_impl.h.orig 2022-05-11 07:00:44 UTC
++++ media/capture/video/linux/v4l2_capture_device_impl.h
+@@ -19,7 +19,7 @@ class CAPTURE_EXPORT V4L2CaptureDeviceImpl : public V4
+ public:
+ int open(const char* device_name, int flags) override;
+ int close(int fd) override;
+- int ioctl(int fd, int request, void* argp) override;
++ int ioctl(int fd, unsigned long request, void* argp) override;
+ void* mmap(void* start,
+ size_t length,
+ int prot,
diff --git a/devel/electron17/files/patch-media_capture_video_linux_video__capture__device__factory__linux.cc b/devel/electron17/files/patch-media_capture_video_linux_video__capture__device__factory__linux.cc
new file mode 100644
index 000000000000..2757148c59c4
--- /dev/null
+++ b/devel/electron17/files/patch-media_capture_video_linux_video__capture__device__factory__linux.cc
@@ -0,0 +1,45 @@
+--- media/capture/video/linux/video_capture_device_factory_linux.cc.orig 2022-05-11 07:16:53 UTC
++++ media/capture/video/linux/video_capture_device_factory_linux.cc
+@@ -72,6 +72,9 @@ class DevVideoFilePathsDeviceProvider
+ : public VideoCaptureDeviceFactoryLinux::DeviceProvider {
+ public:
+ void GetDeviceIds(std::vector<std::string>* target_container) override {
++#if defined(OS_OPENBSD)
++ target_container->emplace_back("/dev/video");
++#else
+ const base::FilePath path("/dev/");
+ base::FileEnumerator enumerator(path, false, base::FileEnumerator::FILES,
+ "video*");
+@@ -79,9 +82,13 @@ class DevVideoFilePathsDeviceProvider
+ const base::FileEnumerator::FileInfo info = enumerator.GetInfo();
+ target_container->emplace_back(path.value() + info.GetName().value());
+ }
++#endif
+ }
+
+ std::string GetDeviceModelId(const std::string& device_id) override {
++#if defined(OS_OPENBSD)
++ return std::string();
++#endif
+ const std::string file_name = ExtractFileNameFromDeviceId(device_id);
+ std::string usb_id;
+ const std::string vid_path =
+@@ -99,6 +106,9 @@ class DevVideoFilePathsDeviceProvider
+ }
+
+ std::string GetDeviceDisplayName(const std::string& device_id) override {
++#if defined(OS_OPENBSD)
++ return std::string();
++#endif
+ const std::string file_name = ExtractFileNameFromDeviceId(device_id);
+ const std::string interface_path =
+ base::StringPrintf(kInterfacePathTemplate, file_name.c_str());
+@@ -213,7 +223,7 @@ void VideoCaptureDeviceFactoryLinux::GetDevicesInfo(
+ std::move(callback).Run(std::move(devices_info));
+ }
+
+-int VideoCaptureDeviceFactoryLinux::DoIoctl(int fd, int request, void* argp) {
++int VideoCaptureDeviceFactoryLinux::DoIoctl(int fd, unsigned int request, void* argp) {
+ return HANDLE_EINTR(v4l2_->ioctl(fd, request, argp));
+ }
+
diff --git a/devel/electron17/files/patch-media_capture_video_linux_video__capture__device__factory__linux.h b/devel/electron17/files/patch-media_capture_video_linux_video__capture__device__factory__linux.h
new file mode 100644
index 000000000000..f0b5e48b41ec
--- /dev/null
+++ b/devel/electron17/files/patch-media_capture_video_linux_video__capture__device__factory__linux.h
@@ -0,0 +1,11 @@
+--- media/capture/video/linux/video_capture_device_factory_linux.h.orig 2022-05-11 07:00:44 UTC
++++ media/capture/video/linux/video_capture_device_factory_linux.h
+@@ -52,7 +52,7 @@ class CAPTURE_EXPORT VideoCaptureDeviceFactoryLinux
+
+ private:
+ // Simple wrapper to do HANDLE_EINTR(v4l2_->ioctl(fd, ...)).
+- int DoIoctl(int fd, int request, void* argp);
++ int DoIoctl(int fd, unsigned int request, void* argp);
+
+ VideoCaptureControlSupport GetControlSupport(int fd);
+ bool GetControlSupport(int fd, int control_id);
diff --git a/devel/electron17/files/patch-media_capture_video_video__capture__buffer__pool__impl.cc b/devel/electron17/files/patch-media_capture_video_video__capture__buffer__pool__impl.cc
new file mode 100644
index 000000000000..718fd24f6dad
--- /dev/null
+++ b/devel/electron17/files/patch-media_capture_video_video__capture__buffer__pool__impl.cc
@@ -0,0 +1,11 @@
+--- media/capture/video/video_capture_buffer_pool_impl.cc.orig 2021-09-14 01:51:58 UTC
++++ media/capture/video/video_capture_buffer_pool_impl.cc
+@@ -74,7 +74,7 @@ VideoCaptureBufferPoolImpl::CreateSharedMemoryViaRawFi
+ int buffer_id) {
+ // This requires platforms where base::SharedMemoryHandle is backed by a
+ // file descriptor.
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ base::AutoLock lock(lock_);
+
+ VideoCaptureBufferTracker* tracker = GetTracker(buffer_id);
diff --git a/devel/electron17/files/patch-media_capture_video_video__capture__device__client.cc b/devel/electron17/files/patch-media_capture_video_video__capture__device__client.cc
new file mode 100644
index 000000000000..7fa1fffb00ae
--- /dev/null
+++ b/devel/electron17/files/patch-media_capture_video_video__capture__device__client.cc
@@ -0,0 +1,11 @@
+--- media/capture/video/video_capture_device_client.cc.orig 2021-09-14 01:51:58 UTC
++++ media/capture/video/video_capture_device_client.cc
+@@ -320,7 +320,7 @@ void VideoCaptureDeviceClient::OnIncomingCapturedData(
+ // see http://linuxtv.org/downloads/v4l-dvb-apis/packed-rgb.html.
+ // Windows RGB24 defines blue at lowest byte,
+ // see https://msdn.microsoft.com/en-us/library/windows/desktop/dd407253
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ fourcc_format = libyuv::FOURCC_RAW;
+ #elif defined(OS_WIN)
+ fourcc_format = libyuv::FOURCC_24BG;
diff --git a/devel/electron17/files/patch-media_gpu_buffer__validation.cc b/devel/electron17/files/patch-media_gpu_buffer__validation.cc
new file mode 100644
index 000000000000..04925280c7f5
--- /dev/null
+++ b/devel/electron17/files/patch-media_gpu_buffer__validation.cc
@@ -0,0 +1,29 @@
+--- media/gpu/buffer_validation.cc.orig 2022-05-11 07:16:53 UTC
++++ media/gpu/buffer_validation.cc
+@@ -12,7 +12,7 @@
+ #include "ui/gfx/geometry/size.h"
+ #include "ui/gfx/gpu_memory_buffer.h"
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ #include <sys/types.h>
+ #include <unistd.h>
+ #endif // defined(OS_LINUX) || defined(OS_CHROMEOS)
+@@ -20,7 +20,7 @@
+ namespace media {
+
+ bool GetFileSize(const int fd, size_t* size) {
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ if (fd < 0) {
+ VLOGF(1) << "Invalid file descriptor";
+ return false;
+@@ -56,7 +56,7 @@ bool VerifyGpuMemoryBufferHandle(media::VideoPixelForm
+ VLOGF(1) << "Unexpected GpuMemoryBufferType: " << gmb_handle.type;
+ return false;
+ }
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ const size_t num_planes = media::VideoFrame::NumPlanes(pixel_format);
+ if (num_planes != gmb_handle.native_pixmap_handle.planes.size() ||
+ num_planes == 0) {
diff --git a/devel/electron17/files/patch-media_gpu_chromeos_video__decoder__pipeline.cc b/devel/electron17/files/patch-media_gpu_chromeos_video__decoder__pipeline.cc
new file mode 100644
index 000000000000..7ad7fabbbc46
--- /dev/null
+++ b/devel/electron17/files/patch-media_gpu_chromeos_video__decoder__pipeline.cc
@@ -0,0 +1,20 @@
+--- media/gpu/chromeos/video_decoder_pipeline.cc.orig 2022-05-11 07:16:53 UTC
++++ media/gpu/chromeos/video_decoder_pipeline.cc
+@@ -644,7 +644,7 @@ VideoDecoderPipeline::PickDecoderOutputFormat(
+ }
+ }
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Linux should always use a custom allocator (to allocate buffers using
+ // libva) and a PlatformVideoFramePool.
+ CHECK(allocator.has_value());
+@@ -665,7 +665,7 @@ VideoDecoderPipeline::PickDecoderOutputFormat(
+ #error "Unsupported platform"
+ #endif
+
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ // viable_candidate should always be set unless using L1 protected content,
+ // which isn't an option on linux or lacros.
+ CHECK(viable_candidate);
diff --git a/devel/electron17/files/patch-media_gpu_gpu__video__encode__accelerator__factory.cc b/devel/electron17/files/patch-media_gpu_gpu__video__encode__accelerator__factory.cc
new file mode 100644
index 000000000000..3e04463c8b42
--- /dev/null
+++ b/devel/electron17/files/patch-media_gpu_gpu__video__encode__accelerator__factory.cc
@@ -0,0 +1,11 @@
+--- media/gpu/gpu_video_encode_accelerator_factory.cc.orig 2022-05-11 07:16:53 UTC
++++ media/gpu/gpu_video_encode_accelerator_factory.cc
+@@ -92,7 +92,7 @@ std::vector<VEAFactoryFunction> GetVEAFactoryFunctions
+ return vea_factory_functions;
+
+ #if BUILDFLAG(USE_VAAPI)
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ if (base::FeatureList::IsEnabled(kVaapiVideoEncodeLinux))
+ vea_factory_functions.push_back(base::BindRepeating(&CreateVaapiVEA));
+ #else
diff --git a/devel/electron17/files/patch-media_gpu_vaapi_vaapi__video__decoder.cc b/devel/electron17/files/patch-media_gpu_vaapi_vaapi__video__decoder.cc
new file mode 100644
index 000000000000..c4af7033f3f8
--- /dev/null
+++ b/devel/electron17/files/patch-media_gpu_vaapi_vaapi__video__decoder.cc
@@ -0,0 +1,11 @@
+--- media/gpu/vaapi/vaapi_video_decoder.cc.orig 2022-05-11 07:16:53 UTC
++++ media/gpu/vaapi/vaapi_video_decoder.cc
+@@ -771,7 +771,7 @@ void VaapiVideoDecoder::ApplyResolutionChangeWithScree
+ const gfx::Size decoder_natural_size =
+ aspect_ratio_.GetNaturalSize(decoder_visible_rect);
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ absl::optional<DmabufVideoFramePool::CreateFrameCB> allocator =
+ base::BindRepeating(&AllocateCustomFrameProxy, weak_this_);
+ std::vector<ImageProcessor::PixelLayoutCandidate> candidates = {
diff --git a/devel/electron17/files/patch-media_gpu_vaapi_vaapi__wrapper.cc b/devel/electron17/files/patch-media_gpu_vaapi_vaapi__wrapper.cc
new file mode 100644
index 000000000000..3119615de079
--- /dev/null
+++ b/devel/electron17/files/patch-media_gpu_vaapi_vaapi__wrapper.cc
@@ -0,0 +1,11 @@
+--- media/gpu/vaapi/vaapi_wrapper.cc.orig 2022-05-11 07:16:53 UTC
++++ media/gpu/vaapi/vaapi_wrapper.cc
+@@ -553,7 +553,7 @@ VADisplayState::VADisplayState()
+ bool VADisplayState::Initialize() {
+ base::AutoLock auto_lock(va_lock_);
+
+-#if defined(USE_OZONE) && defined(OS_LINUX)
++#if defined(USE_OZONE) && (defined(OS_LINUX) || defined(OS_BSD))
+ // TODO(crbug.com/1116701): add vaapi support for other Ozone platforms on
+ // Linux. See comment in OzonePlatform::PlatformProperties::supports_vaapi
+ // for more details. This will also require revisiting everything that's
diff --git a/devel/electron17/files/patch-media_media__options.gni b/devel/electron17/files/patch-media_media__options.gni
new file mode 100644
index 000000000000..7109d8283d8b
--- /dev/null
+++ b/devel/electron17/files/patch-media_media__options.gni
@@ -0,0 +1,27 @@
+--- media/media_options.gni.orig 2022-05-11 07:16:53 UTC
++++ media/media_options.gni
+@@ -124,9 +124,12 @@ declare_args() {
+ # Enables runtime selection of ALSA library for audio.
+ use_alsa = false
+
++ # Enable runtime selection of sndio(7)
++ use_sndio = false
++
+ # Alsa should be used on non-Android, non-Mac POSIX systems.
+ # Alsa should be used on desktop Chromecast and audio-only Chromecast builds.
+- if (is_posix && !is_android && !is_mac &&
++ if (is_posix && !is_android && !is_mac && !is_bsd &&
+ (!is_chromecast || is_cast_desktop_build || is_cast_audio_only)) {
+ use_alsa = true
+
+@@ -141,6 +144,10 @@ declare_args() {
+ if (!use_cras && !is_chromecast && !is_asan && !is_tsan) {
+ use_pulseaudio = true
+ }
++ }
++ if (is_openbsd) {
++ use_sndio = true
++ use_pulseaudio = false
+ }
+ }
+
diff --git a/devel/electron17/files/patch-media_mojo_mojom_video__frame__mojom__traits.cc b/devel/electron17/files/patch-media_mojo_mojom_video__frame__mojom__traits.cc
new file mode 100644
index 000000000000..72b8ac734435
--- /dev/null
+++ b/devel/electron17/files/patch-media_mojo_mojom_video__frame__mojom__traits.cc
@@ -0,0 +1,11 @@
+--- media/mojo/mojom/video_frame_mojom_traits.cc.orig 2022-05-11 07:16:53 UTC
++++ media/mojo/mojom/video_frame_mojom_traits.cc
+@@ -21,7 +21,7 @@
+ #include "ui/gfx/mojom/color_space_mojom_traits.h"
+ #include "ui/gfx/mojom/hdr_metadata_mojom_traits.h"
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ #include "base/posix/eintr_wrapper.h"
+ #endif // defined(OS_LINUX) || defined(OS_CHROMEOS)
+
diff --git a/devel/electron17/files/patch-media_video_fake__gpu__memory__buffer.cc b/devel/electron17/files/patch-media_video_fake__gpu__memory__buffer.cc
new file mode 100644
index 000000000000..a8b8414eb7dc
--- /dev/null
+++ b/devel/electron17/files/patch-media_video_fake__gpu__memory__buffer.cc
@@ -0,0 +1,38 @@
+--- media/video/fake_gpu_memory_buffer.cc.orig 2022-05-11 07:16:53 UTC
++++ media/video/fake_gpu_memory_buffer.cc
+@@ -10,7 +10,7 @@
+ #include "media/base/format_utils.h"
+ #include "media/base/video_frame.h"
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ #include <fcntl.h>
+ #include <sys/stat.h>
+ #include <sys/types.h>
+@@ -48,7 +48,7 @@ class FakeGpuMemoryBufferImpl : public gpu::GpuMemoryB
+
+ } // namespace
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ base::ScopedFD GetDummyFD() {
+ base::ScopedFD fd(open("/dev/zero", O_RDWR));
+ DCHECK(fd.is_valid());
+@@ -78,7 +78,7 @@ FakeGpuMemoryBuffer::FakeGpuMemoryBuffer(const gfx::Si
+ static base::AtomicSequenceNumber buffer_id_generator;
+ handle_.id = gfx::GpuMemoryBufferId(buffer_id_generator.GetNext());
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ for (size_t i = 0; i < VideoFrame::NumPlanes(video_pixel_format_); i++) {
+ const gfx::Size plane_size_in_bytes =
+ VideoFrame::PlaneSize(video_pixel_format_, i, size_);
+@@ -135,7 +135,7 @@ gfx::GpuMemoryBufferHandle FakeGpuMemoryBuffer::CloneH
+ gfx::GpuMemoryBufferHandle handle;
+ handle.type = gfx::NATIVE_PIXMAP;
+ handle.id = handle_.id;
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ handle.native_pixmap_handle =
+ gfx::CloneHandleForIPC(handle_.native_pixmap_handle);
+ #endif
diff --git a/devel/electron17/files/patch-media_video_gpu__memory__buffer__video__frame__pool.cc b/devel/electron17/files/patch-media_video_gpu__memory__buffer__video__frame__pool.cc
new file mode 100644
index 000000000000..1c2ab85163b4
--- /dev/null
+++ b/devel/electron17/files/patch-media_video_gpu__memory__buffer__video__frame__pool.cc
@@ -0,0 +1,11 @@
+--- media/video/gpu_memory_buffer_video_frame_pool.cc.orig 2022-05-11 07:16:53 UTC
++++ media/video/gpu_memory_buffer_video_frame_pool.cc
+@@ -720,7 +720,7 @@ void GpuMemoryBufferVideoFramePool::PoolImpl::CreateHa
+ }
+
+ bool is_software_backed_video_frame = !video_frame->HasTextures();
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ is_software_backed_video_frame &= !video_frame->HasDmaBufs();
+ #endif
+
diff --git a/devel/electron17/files/patch-media_video_video__encode__accelerator__adapter.cc b/devel/electron17/files/patch-media_video_video__encode__accelerator__adapter.cc
new file mode 100644
index 000000000000..09014a0878ff
--- /dev/null
+++ b/devel/electron17/files/patch-media_video_video__encode__accelerator__adapter.cc
@@ -0,0 +1,20 @@
+--- media/video/video_encode_accelerator_adapter.cc.orig 2021-11-19 04:25:19 UTC
++++ media/video/video_encode_accelerator_adapter.cc
+@@ -88,7 +88,7 @@ VideoEncodeAccelerator::Config SetUpVeaConfig(
+ if (is_rgb)
+ config.input_format = PIXEL_FORMAT_I420;
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ if (storage_type == VideoFrame::STORAGE_DMABUFS ||
+ storage_type == VideoFrame::STORAGE_GPU_MEMORY_BUFFER) {
+ if (is_rgb)
+@@ -228,7 +228,7 @@ void VideoEncodeAcceleratorAdapter::InitializeInternal
+ auto vea_config =
+ SetUpVeaConfig(profile_, options_, format, first_frame->storage_type());
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // Linux/ChromeOS require a special configuration to use dmabuf storage.
+ // We need to keep sending frames the same way the first frame was sent.
+ // Other platforms will happily mix GpuMemoryBuffer storage with regular
diff --git a/devel/electron17/files/patch-media_webrtc_audio__processor.cc b/devel/electron17/files/patch-media_webrtc_audio__processor.cc
new file mode 100644
index 000000000000..02cbe66775fc
--- /dev/null
+++ b/devel/electron17/files/patch-media_webrtc_audio__processor.cc
@@ -0,0 +1,11 @@
+--- media/webrtc/audio_processor.cc.orig 2022-05-11 07:16:53 UTC
++++ media/webrtc/audio_processor.cc
+@@ -542,7 +542,7 @@ absl::optional<double> AudioProcessor::ProcessData(
+ // controller.
+ #if defined(OS_WIN) || defined(OS_MAC)
+ DCHECK_LE(volume, 1.0);
+-#elif defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_OPENBSD)
++#elif defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ // We have a special situation on Linux where the microphone volume can be
+ // "higher than maximum". The input volume slider in the sound preference
+ // allows the user to set a scaling that is higher than 100%. It means that
diff --git a/devel/electron17/files/patch-media_webrtc_webrtc__features.cc b/devel/electron17/files/patch-media_webrtc_webrtc__features.cc
new file mode 100644
index 000000000000..19091876850a
--- /dev/null
+++ b/devel/electron17/files/patch-media_webrtc_webrtc__features.cc
@@ -0,0 +1,11 @@
+--- media/webrtc/webrtc_features.cc.orig 2021-11-19 04:25:19 UTC
++++ media/webrtc/webrtc_features.cc
+@@ -9,7 +9,7 @@
+
+ namespace features {
+ namespace {
+-#if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || defined(OS_BSD)
+ constexpr base::FeatureState kWebRtcHybridAgcState =
+ base::FEATURE_ENABLED_BY_DEFAULT;
+ #else
diff --git a/devel/electron17/files/patch-mojo_core_BUILD.gn b/devel/electron17/files/patch-mojo_core_BUILD.gn
new file mode 100644
index 000000000000..e2bfa7c10f4e
--- /dev/null
+++ b/devel/electron17/files/patch-mojo_core_BUILD.gn
@@ -0,0 +1,11 @@
+--- mojo/core/BUILD.gn.orig 2021-11-19 04:25:19 UTC
++++ mojo/core/BUILD.gn
+@@ -127,7 +127,7 @@ template("core_impl_source_set") {
+ ]
+ }
+
+- if ((is_linux || is_chromeos || is_android) && !is_nacl) {
++ if ((is_linux || is_chromeos || is_android) && !is_nacl && !is_bsd) {
+ sources += [
+ "channel_linux.cc",
+ "channel_linux.h",
diff --git a/devel/electron17/files/patch-mojo_core_channel.cc b/devel/electron17/files/patch-mojo_core_channel.cc
new file mode 100644
index 000000000000..ba423f4f9f10
--- /dev/null
+++ b/devel/electron17/files/patch-mojo_core_channel.cc
@@ -0,0 +1,14 @@
+--- mojo/core/channel.cc.orig 2022-05-11 07:16:53 UTC
++++ mojo/core/channel.cc
+@@ -62,7 +62,11 @@ const size_t kMaxUnusedReadBufferCapacity = 4096;
+ // Fuchsia: The zx_channel_write() API supports up to 64 handles.
+ const size_t kMaxAttachedHandles = 64;
+
++#if defined(__i386__) && defined(OS_FREEBSD)
++const size_t kChannelMessageAlignment = 4;
++#else
+ static_assert(alignof(std::max_align_t) >= kChannelMessageAlignment, "");
++#endif
+ Channel::AlignedBuffer MakeAlignedBuffer(size_t size) {
+ // Generic allocators (such as malloc) return a pointer that is suitably
+ // aligned for storing any type of object with a fundamental alignment
diff --git a/devel/electron17/files/patch-mojo_core_embedder_features.h b/devel/electron17/files/patch-mojo_core_embedder_features.h
new file mode 100644
index 000000000000..b32405e95a92
--- /dev/null
+++ b/devel/electron17/files/patch-mojo_core_embedder_features.h
@@ -0,0 +1,11 @@
+--- mojo/core/embedder/features.h.orig 2022-05-11 07:16:53 UTC
++++ mojo/core/embedder/features.h
+@@ -14,7 +14,7 @@ namespace mojo {
+ namespace core {
+
+ #if defined(OS_POSIX) && !defined(OS_NACL) && !defined(OS_MAC)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID) || defined(OS_BSD)
+ COMPONENT_EXPORT(MOJO_CORE_EMBEDDER_FEATURES)
+ extern const base::Feature kMojoLinuxChannelSharedMem;
+
diff --git a/devel/electron17/files/patch-mojo_public_c_system_thunks.cc b/devel/electron17/files/patch-mojo_public_c_system_thunks.cc
new file mode 100644
index 000000000000..b041fbf5f60d
--- /dev/null
+++ b/devel/electron17/files/patch-mojo_public_c_system_thunks.cc
@@ -0,0 +1,38 @@
+--- mojo/public/c/system/thunks.cc.orig 2022-05-11 07:16:53 UTC
++++ mojo/public/c/system/thunks.cc
+@@ -19,7 +19,7 @@
+ #include "mojo/public/c/system/core.h"
+ #include "mojo/public/c/system/macros.h"
+
+-#if defined(OS_CHROMEOS) || defined(OS_LINUX) || defined(OS_WIN)
++#if defined(OS_CHROMEOS) || defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
+ #include "base/environment.h"
+ #include "base/files/file_path.h"
+ #include "base/scoped_native_library.h"
+@@ -67,7 +67,7 @@ class CoreLibraryInitializer {
+ ~CoreLibraryInitializer() = default;
+
+ MojoResult LoadLibrary(base::FilePath library_path) {
+-#if defined(OS_CHROMEOS) || defined(OS_LINUX) || defined(OS_WIN)
++#if defined(OS_CHROMEOS) || defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
+ if (library_ && library_->is_valid())
+ return MOJO_RESULT_OK;
+
+@@ -81,7 +81,7 @@ class CoreLibraryInitializer {
+
+ if (library_path.empty()) {
+ // Default to looking for the library in the current working directory.
+-#if defined(OS_CHROMEOS) || defined(OS_LINUX)
++#if defined(OS_CHROMEOS) || defined(OS_LINUX) || defined(OS_BSD)
+ const base::FilePath::CharType kDefaultLibraryPathValue[] =
+ FILE_PATH_LITERAL("./libmojo_core.so");
+ #elif defined(OS_WIN)
+@@ -131,7 +131,7 @@ class CoreLibraryInitializer {
+ }
+
+ private:
+-#if defined(OS_CHROMEOS) || defined(OS_LINUX) || defined(OS_WIN)
++#if defined(OS_CHROMEOS) || defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
+ absl::optional<base::ScopedNativeLibrary> library_;
+ #endif
+ };
diff --git a/devel/electron17/files/patch-mojo_public_js_mojo__bindings__resources.grd b/devel/electron17/files/patch-mojo_public_js_mojo__bindings__resources.grd
new file mode 100644
index 000000000000..04f67ce7734d
--- /dev/null
+++ b/devel/electron17/files/patch-mojo_public_js_mojo__bindings__resources.grd
@@ -0,0 +1,11 @@
+--- mojo/public/js/mojo_bindings_resources.grd.orig 2021-09-14 01:51:59 UTC
++++ mojo/public/js/mojo_bindings_resources.grd
+@@ -105,7 +105,7 @@
+ use_base_dir="false"
+ resource_path="mojo/mojo/public/mojom/base/unguessable_token.mojom-webui.js"
+ type="BINDATA" />
+- <if expr="is_win or is_macosx or is_linux or is_android">
++ <if expr="is_win or is_macosx or is_posix or is_android">
+ <include name="IDR_MOJO_PROCESS_ID_MOJOM_WEBUI_JS"
+ file="${root_gen_dir}/mojom-webui/mojo/public/mojom/base/process_id.mojom-webui.js"
+ use_base_dir="false"
diff --git a/devel/electron17/files/patch-mojo_public_tools_bindings_mojom.gni b/devel/electron17/files/patch-mojo_public_tools_bindings_mojom.gni
new file mode 100644
index 000000000000..11c6822ddaaa
--- /dev/null
+++ b/devel/electron17/files/patch-mojo_public_tools_bindings_mojom.gni
@@ -0,0 +1,19 @@
+--- mojo/public/tools/bindings/mojom.gni.orig 2022-05-11 07:16:53 UTC
++++ mojo/public/tools/bindings/mojom.gni
+@@ -688,6 +688,16 @@ template("mojom") {
+ enabled_features += [ "is_win" ]
+ }
+
++ if (is_openbsd) {
++ enabled_features += [ "is_openbsd" ]
++ enabled_features += [ "is_bsd" ]
++ }
++
++ if (is_freebsd) {
++ enabled_features += [ "is_freebsd" ]
++ enabled_features += [ "is_bsd" ]
++ }
++
+ action(parser_target_name) {
+ script = mojom_parser_script
+ inputs = mojom_parser_sources + [ build_metadata_filename ]
diff --git a/devel/electron17/files/patch-net_BUILD.gn b/devel/electron17/files/patch-net_BUILD.gn
new file mode 100644
index 000000000000..8283ddef33f3
--- /dev/null
+++ b/devel/electron17/files/patch-net_BUILD.gn
@@ -0,0 +1,54 @@
+--- net/BUILD.gn.orig 2022-05-11 07:16:53 UTC
++++ net/BUILD.gn
+@@ -100,7 +100,7 @@ net_configs = [
+ "//build/config/compiler:wexit_time_destructors",
+ ]
+
+-if (is_linux || is_chromeos) {
++if ((is_linux || is_chromeos) && !is_bsd) {
+ net_configs += [ "//build/config/linux:libresolv" ]
+ }
+
+@@ -1213,6 +1213,15 @@ component("net") {
+ ]
+ }
+
++ if (is_bsd) {
++ sources -= [
++ "base/address_tracker_linux.cc",
++ "base/address_tracker_linux.h",
++ "base/network_change_notifier_linux.cc",
++ "base/network_interfaces_linux.cc",
++ ]
++ }
++
+ if (is_mac) {
+ sources += [
+ "base/network_notification_thread_mac.cc",
+@@ -1345,7 +1354,7 @@ component("net") {
+ }
+ }
+
+- if (is_android || is_chromeos_ash) {
++ if (is_android || is_chromeos_ash || is_bsd) {
+ sources += [
+ "base/network_change_notifier_posix.cc",
+ "base/network_change_notifier_posix.h",
+@@ -1378,7 +1387,7 @@ component("net") {
+ }
+
+ # Use getifaddrs() on POSIX platforms, except Linux.
+- if (is_posix && !is_linux && !is_chromeos) {
++ if ((is_posix && !is_linux && !is_chromeos) || is_bsd) {
+ sources += [
+ "base/network_interfaces_getifaddrs.cc",
+ "base/network_interfaces_getifaddrs.h",
+@@ -4713,7 +4722,7 @@ test("net_unittests") {
+ }
+
+ # Use getifaddrs() on POSIX platforms, except Linux and Android.
+- if (is_posix && !is_linux && !is_chromeos && !is_android) {
++ if (is_posix && !is_linux && !is_chromeos && !is_android && !is_bsd) {
+ sources += [ "base/network_interfaces_getifaddrs_unittest.cc" ]
+ }
+
diff --git a/devel/electron17/files/patch-net_base_address__tracker__linux.cc b/devel/electron17/files/patch-net_base_address__tracker__linux.cc
new file mode 100644
index 000000000000..c3cf2259db95
--- /dev/null
+++ b/devel/electron17/files/patch-net_base_address__tracker__linux.cc
@@ -0,0 +1,410 @@
+--- net/base/address_tracker_linux.cc.orig 2022-05-11 07:16:53 UTC
++++ net/base/address_tracker_linux.cc
+@@ -28,125 +28,10 @@
+ namespace net {
+ namespace internal {
+
+-namespace {
+-
+-// Some kernel functions such as wireless_send_event and rtnetlink_ifinfo_prep
+-// may send spurious messages over rtnetlink. RTM_NEWLINK messages where
+-// ifi_change == 0 and rta_type == IFLA_WIRELESS should be ignored.
+-bool IgnoreWirelessChange(const struct ifinfomsg* msg, int length) {
+- for (const struct rtattr* attr = IFLA_RTA(msg); RTA_OK(attr, length);
+- attr = RTA_NEXT(attr, length)) {
+- if (attr->rta_type == IFLA_WIRELESS && msg->ifi_change == 0)
+- return true;
+- }
+- return false;
+-}
+-
+-// Retrieves address from NETLINK address message.
+-// Sets |really_deprecated| for IPv6 addresses with preferred lifetimes of 0.
+-// Precondition: |header| must already be validated with NLMSG_OK.
+-bool GetAddress(const struct nlmsghdr* header,
+- int header_length,
+- IPAddress* out,
+- bool* really_deprecated) {
+- if (really_deprecated)
+- *really_deprecated = false;
+-
+- // Extract the message and update |header_length| to be the number of
+- // remaining bytes.
+- const struct ifaddrmsg* msg =
+- reinterpret_cast<const struct ifaddrmsg*>(NLMSG_DATA(header));
+- header_length -= NLMSG_HDRLEN;
+-
+- size_t address_length = 0;
+- switch (msg->ifa_family) {
+- case AF_INET:
+- address_length = IPAddress::kIPv4AddressSize;
+- break;
+- case AF_INET6:
+- address_length = IPAddress::kIPv6AddressSize;
+- break;
+- default:
+- // Unknown family.
+- return false;
+- }
+- // Use IFA_ADDRESS unless IFA_LOCAL is present. This behavior here is based on
+- // getaddrinfo in glibc (check_pf.c). Judging from kernel implementation of
+- // NETLINK, IPv4 addresses have only the IFA_ADDRESS attribute, while IPv6
+- // have the IFA_LOCAL attribute.
+- uint8_t* address = NULL;
+- uint8_t* local = NULL;
+- int length = IFA_PAYLOAD(header);
+- if (length > header_length) {
+- LOG(ERROR) << "ifaddrmsg length exceeds bounds";
+- return false;
+- }
+- for (const struct rtattr* attr =
+- reinterpret_cast<const struct rtattr*>(IFA_RTA(msg));
+- RTA_OK(attr, length); attr = RTA_NEXT(attr, length)) {
+- switch (attr->rta_type) {
+- case IFA_ADDRESS:
+- if (RTA_PAYLOAD(attr) < address_length) {
+- LOG(ERROR) << "attr does not have enough bytes to read an address";
+- return false;
+- }
+- address = reinterpret_cast<uint8_t*>(RTA_DATA(attr));
+- break;
+- case IFA_LOCAL:
+- if (RTA_PAYLOAD(attr) < address_length) {
+- LOG(ERROR) << "attr does not have enough bytes to read an address";
+- return false;
+- }
+- local = reinterpret_cast<uint8_t*>(RTA_DATA(attr));
+- break;
+- case IFA_CACHEINFO: {
+- if (RTA_PAYLOAD(attr) < sizeof(struct ifa_cacheinfo)) {
+- LOG(ERROR)
+- << "attr does not have enough bytes to read an ifa_cacheinfo";
+- return false;
+- }
+- const struct ifa_cacheinfo* cache_info =
+- reinterpret_cast<const struct ifa_cacheinfo*>(RTA_DATA(attr));
+- if (really_deprecated)
+- *really_deprecated = (cache_info->ifa_prefered == 0);
+- } break;
+- default:
+- break;
+- }
+- }
+- if (local)
+- address = local;
+- if (!address)
+- return false;
+- *out = IPAddress(address, address_length);
+- return true;
+-}
+-
+-// SafelyCastNetlinkMsgData<T> performs a bounds check before casting |header|'s
+-// data to a |T*|. When the bounds check fails, returns nullptr.
+-template <typename T>
+-T* SafelyCastNetlinkMsgData(const struct nlmsghdr* header, int length) {
+- DCHECK(NLMSG_OK(header, static_cast<__u32>(length)));
+- if (length <= 0 || static_cast<size_t>(length) < NLMSG_HDRLEN + sizeof(T))
+- return nullptr;
+- return reinterpret_cast<const T*>(NLMSG_DATA(header));
+-}
+-
+-} // namespace
+-
+ // static
+ char* AddressTrackerLinux::GetInterfaceName(int interface_index, char* buf) {
+- memset(buf, 0, IFNAMSIZ);
+- base::ScopedFD ioctl_socket = GetSocketForIoctl();
+- if (!ioctl_socket.is_valid())
+- return buf;
+-
+- struct ifreq ifr = {};
+- ifr.ifr_ifindex = interface_index;
+-
+- if (ioctl(ioctl_socket.get(), SIOCGIFNAME, &ifr) == 0)
+- strncpy(buf, ifr.ifr_name, IFNAMSIZ - 1);
+- return buf;
++ NOTIMPLEMENTED();
++ return NULL;
+ }
+
+ AddressTrackerLinux::AddressTrackerLinux()
+@@ -183,98 +68,8 @@ AddressTrackerLinux::AddressTrackerLinux(
+ AddressTrackerLinux::~AddressTrackerLinux() = default;
+
+ void AddressTrackerLinux::Init() {
+-#if defined(OS_ANDROID)
+- // RTM_GETLINK stopped working in Android 11 (see
+- // https://developer.android.com/preview/privacy/mac-address),
+- // so AddressTrackerLinux should not be used in later versions
+- // of Android. Chromium code doesn't need it past Android P.
+- DCHECK_LT(base::android::BuildInfo::GetInstance()->sdk_int(),
+- base::android::SDK_VERSION_P);
+-#endif
+- netlink_fd_.reset(socket(AF_NETLINK, SOCK_RAW, NETLINK_ROUTE));
+- if (!netlink_fd_.is_valid()) {
+- PLOG(ERROR) << "Could not create NETLINK socket";
+- AbortAndForceOnline();
+- return;
+- }
+-
+- int rv;
+-
+- if (tracking_) {
+- // Request notifications.
+- struct sockaddr_nl addr = {};
+- addr.nl_family = AF_NETLINK;
+- addr.nl_pid = 0; // Let the kernel select a unique value.
+- // TODO(szym): Track RTMGRP_LINK as well for ifi_type,
+- // http://crbug.com/113993
+- addr.nl_groups =
+- RTMGRP_IPV4_IFADDR | RTMGRP_IPV6_IFADDR | RTMGRP_NOTIFY | RTMGRP_LINK;
+- rv = bind(netlink_fd_.get(), reinterpret_cast<struct sockaddr*>(&addr),
+- sizeof(addr));
+- if (rv < 0) {
+- PLOG(ERROR) << "Could not bind NETLINK socket";
+- AbortAndForceOnline();
+- return;
+- }
+- }
+-
+- // Request dump of addresses.
+- struct sockaddr_nl peer = {};
+- peer.nl_family = AF_NETLINK;
+-
+- struct {
+- struct nlmsghdr header;
+- struct rtgenmsg msg;
+- } request = {};
+-
+- request.header.nlmsg_len = NLMSG_LENGTH(sizeof(request.msg));
+- request.header.nlmsg_type = RTM_GETADDR;
+- request.header.nlmsg_flags = NLM_F_REQUEST | NLM_F_DUMP;
+- request.header.nlmsg_pid = 0; // This field is opaque to netlink.
+- request.msg.rtgen_family = AF_UNSPEC;
+-
+- rv = HANDLE_EINTR(
+- sendto(netlink_fd_.get(), &request, request.header.nlmsg_len, 0,
+- reinterpret_cast<struct sockaddr*>(&peer), sizeof(peer)));
+- if (rv < 0) {
+- PLOG(ERROR) << "Could not send NETLINK request";
+- AbortAndForceOnline();
+- return;
+- }
+-
+- // Consume pending message to populate the AddressMap, but don't notify.
+- // Sending another request without first reading responses results in EBUSY.
+- bool address_changed;
+- bool link_changed;
+- bool tunnel_changed;
+- ReadMessages(&address_changed, &link_changed, &tunnel_changed);
+-
+- // Request dump of link state
+- request.header.nlmsg_type = RTM_GETLINK;
+-
+- rv = HANDLE_EINTR(
+- sendto(netlink_fd_.get(), &request, request.header.nlmsg_len, 0,
+- reinterpret_cast<struct sockaddr*>(&peer), sizeof(peer)));
+- if (rv < 0) {
+- PLOG(ERROR) << "Could not send NETLINK request";
+- AbortAndForceOnline();
+- return;
+- }
+-
+- // Consume pending message to populate links_online_, but don't notify.
+- ReadMessages(&address_changed, &link_changed, &tunnel_changed);
+- {
+- AddressTrackerAutoLock lock(*this, connection_type_lock_);
+- connection_type_initialized_ = true;
+- connection_type_initialized_cv_.Broadcast();
+- }
+-
+- if (tracking_) {
+- watcher_ = base::FileDescriptorWatcher::WatchReadable(
+- netlink_fd_.get(),
+- base::BindRepeating(&AddressTrackerLinux::OnFileCanReadWithoutBlocking,
+- base::Unretained(this)));
+- }
++ NOTIMPLEMENTED();
++ AbortAndForceOnline();
+ }
+
+ bool AddressTrackerLinux::DidTrackingInitSucceedForTesting() const {
+@@ -291,25 +86,6 @@ void AddressTrackerLinux::AbortAndForceOnline() {
+ connection_type_initialized_cv_.Broadcast();
+ }
+
+-AddressTrackerLinux::AddressMap AddressTrackerLinux::GetAddressMap() const {
+- AddressTrackerAutoLock lock(*this, address_map_lock_);
+- return address_map_;
+-}
+-
+-std::unordered_set<int> AddressTrackerLinux::GetOnlineLinks() const {
+- AddressTrackerAutoLock lock(*this, online_links_lock_);
+- return online_links_;
+-}
+-
+-bool AddressTrackerLinux::IsInterfaceIgnored(int interface_index) const {
+- if (ignored_interfaces_.empty())
+- return false;
+-
+- char buf[IFNAMSIZ] = {0};
+- const char* interface_name = get_interface_name_(interface_index, buf);
+- return ignored_interfaces_.find(interface_name) != ignored_interfaces_.end();
+-}
+-
+ NetworkChangeNotifier::ConnectionType
+ AddressTrackerLinux::GetCurrentConnectionType() {
+ // http://crbug.com/125097
+@@ -367,118 +143,7 @@ void AddressTrackerLinux::HandleMessage(const char* bu
+ bool* address_changed,
+ bool* link_changed,
+ bool* tunnel_changed) {
+- DCHECK(buffer);
+- // Note that NLMSG_NEXT decrements |length| to reflect the number of bytes
+- // remaining in |buffer|.
+- for (const struct nlmsghdr* header =
+- reinterpret_cast<const struct nlmsghdr*>(buffer);
+- length >= 0 && NLMSG_OK(header, static_cast<__u32>(length));
+- header = NLMSG_NEXT(header, length)) {
+- // The |header| pointer should never precede |buffer|.
+- DCHECK_LE(buffer, reinterpret_cast<const char*>(header));
+- switch (header->nlmsg_type) {
+- case NLMSG_DONE:
+- return;
+- case NLMSG_ERROR: {
+- const struct nlmsgerr* msg =
+- SafelyCastNetlinkMsgData<const struct nlmsgerr>(header, length);
+- if (msg == nullptr)
+- return;
+- LOG(ERROR) << "Unexpected netlink error " << msg->error << ".";
+- } return;
+- case RTM_NEWADDR: {
+- IPAddress address;
+- bool really_deprecated;
+- const struct ifaddrmsg* msg =
+- SafelyCastNetlinkMsgData<const struct ifaddrmsg>(header, length);
+- if (msg == nullptr)
+- return;
+- if (IsInterfaceIgnored(msg->ifa_index))
+- break;
+- if (GetAddress(header, length, &address, &really_deprecated)) {
+- struct ifaddrmsg msg_copy = *msg;
+- AddressTrackerAutoLock lock(*this, address_map_lock_);
+- // Routers may frequently (every few seconds) output the IPv6 ULA
+- // prefix which can cause the linux kernel to frequently output two
+- // back-to-back messages, one without the deprecated flag and one with
+- // the deprecated flag but both with preferred lifetimes of 0. Avoid
+- // interpretting this as an actual change by canonicalizing the two
+- // messages by setting the deprecated flag based on the preferred
+- // lifetime also. http://crbug.com/268042
+- if (really_deprecated)
+- msg_copy.ifa_flags |= IFA_F_DEPRECATED;
+- // Only indicate change if the address is new or ifaddrmsg info has
+- // changed.
+- auto it = address_map_.find(address);
+- if (it == address_map_.end()) {
+- address_map_.insert(it, std::make_pair(address, msg_copy));
+- *address_changed = true;
+- } else if (memcmp(&it->second, &msg_copy, sizeof(msg_copy))) {
+- it->second = msg_copy;
+- *address_changed = true;
+- }
+- }
+- } break;
+- case RTM_DELADDR: {
+- IPAddress address;
+- const struct ifaddrmsg* msg =
+- SafelyCastNetlinkMsgData<const struct ifaddrmsg>(header, length);
+- if (msg == nullptr)
+- return;
+- if (IsInterfaceIgnored(msg->ifa_index))
+- break;
+- if (GetAddress(header, length, &address, nullptr)) {
+- AddressTrackerAutoLock lock(*this, address_map_lock_);
+- if (address_map_.erase(address))
+- *address_changed = true;
+- }
+- } break;
+- case RTM_NEWLINK: {
+- const struct ifinfomsg* msg =
+- SafelyCastNetlinkMsgData<const struct ifinfomsg>(header, length);
+- if (msg == nullptr)
+- return;
+- if (IsInterfaceIgnored(msg->ifi_index))
+- break;
+- if (IgnoreWirelessChange(msg, IFLA_PAYLOAD(header))) {
+- VLOG(2) << "Ignoring RTM_NEWLINK message";
+- break;
+- }
+- if (!(msg->ifi_flags & IFF_LOOPBACK) && (msg->ifi_flags & IFF_UP) &&
+- (msg->ifi_flags & IFF_LOWER_UP) && (msg->ifi_flags & IFF_RUNNING)) {
+- AddressTrackerAutoLock lock(*this, online_links_lock_);
+- if (online_links_.insert(msg->ifi_index).second) {
+- *link_changed = true;
+- if (IsTunnelInterface(msg->ifi_index))
+- *tunnel_changed = true;
+- }
+- } else {
+- AddressTrackerAutoLock lock(*this, online_links_lock_);
+- if (online_links_.erase(msg->ifi_index)) {
+- *link_changed = true;
+- if (IsTunnelInterface(msg->ifi_index))
+- *tunnel_changed = true;
+- }
+- }
+- } break;
+- case RTM_DELLINK: {
+- const struct ifinfomsg* msg =
+- SafelyCastNetlinkMsgData<const struct ifinfomsg>(header, length);
+- if (msg == nullptr)
+- return;
+- if (IsInterfaceIgnored(msg->ifi_index))
+- break;
+- AddressTrackerAutoLock lock(*this, online_links_lock_);
+- if (online_links_.erase(msg->ifi_index)) {
+- *link_changed = true;
+- if (IsTunnelInterface(msg->ifi_index))
+- *tunnel_changed = true;
+- }
+- } break;
+- default:
+- break;
+- }
+- }
++ NOTIMPLEMENTED();
+ }
+
+ void AddressTrackerLinux::OnFileCanReadWithoutBlocking() {
+@@ -506,31 +171,7 @@ bool AddressTrackerLinux::IsTunnelInterfaceName(const
+ }
+
+ void AddressTrackerLinux::UpdateCurrentConnectionType() {
+- AddressTrackerLinux::AddressMap address_map = GetAddressMap();
+- std::unordered_set<int> online_links = GetOnlineLinks();
+-
+- // Strip out tunnel interfaces from online_links
+- for (auto it = online_links.cbegin(); it != online_links.cend();) {
+- if (IsTunnelInterface(*it)) {
+- it = online_links.erase(it);
+- } else {
+- ++it;
+- }
+- }
+-
+- NetworkInterfaceList networks;
+- NetworkChangeNotifier::ConnectionType type =
+- NetworkChangeNotifier::CONNECTION_NONE;
+- if (GetNetworkListImpl(&networks, 0, online_links, address_map,
+- get_interface_name_)) {
+- type = NetworkChangeNotifier::ConnectionTypeFromInterfaceList(networks);
+- } else {
+- type = online_links.empty() ? NetworkChangeNotifier::CONNECTION_NONE
+- : NetworkChangeNotifier::CONNECTION_UNKNOWN;
+- }
+-
+- AddressTrackerAutoLock lock(*this, connection_type_lock_);
+- current_connection_type_ = type;
++ NOTIMPLEMENTED();
+ }
+
+ int AddressTrackerLinux::GetThreadsWaitingForConnectionTypeInitForTesting() {
diff --git a/devel/electron17/files/patch-net_base_address__tracker__linux.h b/devel/electron17/files/patch-net_base_address__tracker__linux.h
new file mode 100644
index 000000000000..7bce12ee945f
--- /dev/null
+++ b/devel/electron17/files/patch-net_base_address__tracker__linux.h
@@ -0,0 +1,12 @@
+--- net/base/address_tracker_linux.h.orig 2021-01-07 00:36:38 UTC
++++ net/base/address_tracker_linux.h
+@@ -7,9 +7,6 @@
+
+ #include <sys/socket.h> // Needed to include netlink.
+ // Mask superfluous definition of |struct net|. This is fixed in Linux 2.6.38.
+-#define net net_kernel
+-#include <linux/rtnetlink.h>
+-#undef net
+ #include <stddef.h>
+
+ #include <map>
diff --git a/devel/electron17/files/patch-net_base_network__change__notifier.cc b/devel/electron17/files/patch-net_base_network__change__notifier.cc
new file mode 100644
index 000000000000..2ea600aa485d
--- /dev/null
+++ b/devel/electron17/files/patch-net_base_network__change__notifier.cc
@@ -0,0 +1,26 @@
+--- net/base/network_change_notifier.cc.orig 2022-05-11 07:16:53 UTC
++++ net/base/network_change_notifier.cc
+@@ -38,7 +38,7 @@
+ #include "net/base/network_change_notifier_linux.h"
+ #elif defined(OS_APPLE)
+ #include "net/base/network_change_notifier_mac.h"
+-#elif BUILDFLAG(IS_CHROMEOS_ASH) || defined(OS_ANDROID)
++#elif BUILDFLAG(IS_CHROMEOS_ASH) || defined(OS_ANDROID) || defined(OS_BSD)
+ #include "net/base/network_change_notifier_posix.h"
+ #elif defined(OS_FUCHSIA)
+ #include "net/base/network_change_notifier_fuchsia.h"
+@@ -303,9 +303,13 @@ std::unique_ptr<NetworkChangeNotifier> NetworkChangeNo
+ // service in a separate process.
+ return std::make_unique<NetworkChangeNotifierPosix>(initial_type,
+ initial_subtype);
+-#elif BUILDFLAG(IS_CHROMEOS_ASH)
++#elif BUILDFLAG(IS_CHROMEOS_ASH) || defined(OS_BSD)
++#if !defined(OS_BSD)
+ return std::make_unique<NetworkChangeNotifierPosix>(initial_type,
+ initial_subtype);
++#else
++ return NULL;
++#endif
+ #elif defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
+ return std::make_unique<NetworkChangeNotifierLinux>(
+ std::unordered_set<std::string>());
diff --git a/devel/electron17/files/patch-net_base_network__change__notifier__posix.cc b/devel/electron17/files/patch-net_base_network__change__notifier__posix.cc
new file mode 100644
index 000000000000..8a0c35331f67
--- /dev/null
+++ b/devel/electron17/files/patch-net_base_network__change__notifier__posix.cc
@@ -0,0 +1,11 @@
+--- net/base/network_change_notifier_posix.cc.orig 2021-11-19 04:25:20 UTC
++++ net/base/network_change_notifier_posix.cc
+@@ -93,7 +93,7 @@ void NetworkChangeNotifierPosix::GetCurrentMaxBandwidt
+ NetworkChangeNotifier::NetworkChangeCalculatorParams
+ NetworkChangeNotifierPosix::NetworkChangeCalculatorParamsPosix() {
+ NetworkChangeCalculatorParams params;
+-#if BUILDFLAG(IS_CHROMEOS_ASH)
++#if BUILDFLAG(IS_CHROMEOS_ASH) || defined(OS_BSD)
+ // Delay values arrived at by simple experimentation and adjusted so as to
+ // produce a single signal when switching between network connections.
+ params.ip_address_offline_delay_ = base::Milliseconds(4000);
diff --git a/devel/electron17/files/patch-net_base_network__interfaces__posix.h b/devel/electron17/files/patch-net_base_network__interfaces__posix.h
new file mode 100644
index 000000000000..348aea8f278a
--- /dev/null
+++ b/devel/electron17/files/patch-net_base_network__interfaces__posix.h
@@ -0,0 +1,11 @@
+--- net/base/network_interfaces_posix.h.orig 2022-05-11 07:00:50 UTC
++++ net/base/network_interfaces_posix.h
+@@ -8,6 +8,8 @@
+ // This file provides some basic functionality shared between
+ // network_interfaces_linux.cc and network_interfaces_getifaddrs.cc.
+
++#include <sys/socket.h>
++
+ #include <string>
+
+ struct sockaddr;
diff --git a/devel/electron17/files/patch-net_cert_cert__verifier.cc b/devel/electron17/files/patch-net_cert_cert__verifier.cc
new file mode 100644
index 000000000000..f0f12791b68b
--- /dev/null
+++ b/devel/electron17/files/patch-net_cert_cert__verifier.cc
@@ -0,0 +1,11 @@
+--- net/cert/cert_verifier.cc.orig 2021-09-14 01:51:59 UTC
++++ net/cert/cert_verifier.cc
+@@ -78,7 +78,7 @@ bool CertVerifier::RequestParams::operator<(
+ std::unique_ptr<CertVerifier> CertVerifier::CreateDefaultWithoutCaching(
+ scoped_refptr<CertNetFetcher> cert_net_fetcher) {
+ scoped_refptr<CertVerifyProc> verify_proc;
+-#if defined(OS_FUCHSIA) || defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_FUCHSIA) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ verify_proc =
+ CertVerifyProc::CreateBuiltinVerifyProc(std::move(cert_net_fetcher));
+ #elif BUILDFLAG(BUILTIN_CERT_VERIFIER_FEATURE_SUPPORTED)
diff --git a/devel/electron17/files/patch-net_cert_cert__verify__proc.cc b/devel/electron17/files/patch-net_cert_cert__verify__proc.cc
new file mode 100644
index 000000000000..d3cb19ae14e2
--- /dev/null
+++ b/devel/electron17/files/patch-net_cert_cert__verify__proc.cc
@@ -0,0 +1,11 @@
+--- net/cert/cert_verify_proc.cc.orig 2021-09-14 01:51:59 UTC
++++ net/cert/cert_verify_proc.cc
+@@ -468,7 +468,7 @@ base::Value CertVerifyParams(X509Certificate* cert,
+
+ } // namespace
+
+-#if !(defined(OS_FUCHSIA) || defined(OS_LINUX) || defined(OS_CHROMEOS))
++#if !(defined(OS_FUCHSIA) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD))
+ // static
+ scoped_refptr<CertVerifyProc> CertVerifyProc::CreateSystemVerifyProc(
+ scoped_refptr<CertNetFetcher> cert_net_fetcher) {
diff --git a/devel/electron17/files/patch-net_cert_cert__verify__proc.h b/devel/electron17/files/patch-net_cert_cert__verify__proc.h
new file mode 100644
index 000000000000..bba5260b82f9
--- /dev/null
+++ b/devel/electron17/files/patch-net_cert_cert__verify__proc.h
@@ -0,0 +1,11 @@
+--- net/cert/cert_verify_proc.h.orig 2022-05-11 07:16:53 UTC
++++ net/cert/cert_verify_proc.h
+@@ -65,7 +65,7 @@ class NET_EXPORT CertVerifyProc
+ kMaxValue = kChainLengthOne
+ };
+
+-#if !(defined(OS_FUCHSIA) || defined(OS_LINUX) || defined(OS_CHROMEOS))
++#if !(defined(OS_FUCHSIA) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD))
+ // Creates and returns a CertVerifyProc that uses the system verifier.
+ // |cert_net_fetcher| may not be used, depending on the implementation.
+ static scoped_refptr<CertVerifyProc> CreateSystemVerifyProc(
diff --git a/devel/electron17/files/patch-net_disk__cache_blockfile_disk__format.h b/devel/electron17/files/patch-net_disk__cache_blockfile_disk__format.h
new file mode 100644
index 000000000000..ff58b0c9fc50
--- /dev/null
+++ b/devel/electron17/files/patch-net_disk__cache_blockfile_disk__format.h
@@ -0,0 +1,12 @@
+--- net/disk_cache/blockfile/disk_format.h.orig 2021-01-07 00:36:38 UTC
++++ net/disk_cache/blockfile/disk_format.h
+@@ -149,7 +149,9 @@ struct RankingsNode {
+ };
+ #pragma pack(pop)
+
++#if !defined(OS_BSD)
+ static_assert(sizeof(RankingsNode) == 36, "bad RankingsNode");
++#endif
+
+ } // namespace disk_cache
+
diff --git a/devel/electron17/files/patch-net_disk__cache_simple_simple__file__tracker.cc b/devel/electron17/files/patch-net_disk__cache_simple_simple__file__tracker.cc
new file mode 100644
index 000000000000..088fe8f7bab5
--- /dev/null
+++ b/devel/electron17/files/patch-net_disk__cache_simple_simple__file__tracker.cc
@@ -0,0 +1,20 @@
+--- net/disk_cache/simple/simple_file_tracker.cc.orig 2022-05-11 07:16:53 UTC
++++ net/disk_cache/simple/simple_file_tracker.cc
+@@ -28,7 +28,17 @@ void RecordFileDescripterLimiterOp(FileDescriptorLimit
+ } // namespace
+
+ SimpleFileTracker::SimpleFileTracker(int file_limit)
++#if defined(OS_OPENBSD)
++{
++ // cap the file descriptor limit at 85% of the size of the
++ // file descriptor table and also substract the amount of
++ // currently used file descriptors as this should give us
++ // enough reserve to avoid hitting the limit
++ file_limit_ = (getdtablesize() * 0.85) - getdtablecount();
++}
++#else
+ : file_limit_(file_limit) {}
++#endif
+
+ SimpleFileTracker::~SimpleFileTracker() {
+ DCHECK(lru_.empty());
diff --git a/devel/electron17/files/patch-net_dns_BUILD.gn b/devel/electron17/files/patch-net_dns_BUILD.gn
new file mode 100644
index 000000000000..1a73217d1bbf
--- /dev/null
+++ b/devel/electron17/files/patch-net_dns_BUILD.gn
@@ -0,0 +1,11 @@
+--- net/dns/BUILD.gn.orig 2022-05-11 07:16:53 UTC
++++ net/dns/BUILD.gn
+@@ -112,7 +112,7 @@ source_set("dns") {
+ "dns_config_service_android.cc",
+ "dns_config_service_android.h",
+ ]
+- } else if (is_linux) {
++ } else if (is_linux && !is_bsd) {
+ sources += [
+ "dns_config_service_linux.cc",
+ "dns_config_service_linux.h",
diff --git a/devel/electron17/files/patch-net_dns_address__sorter__posix.cc b/devel/electron17/files/patch-net_dns_address__sorter__posix.cc
new file mode 100644
index 000000000000..f334aaaedf85
--- /dev/null
+++ b/devel/electron17/files/patch-net_dns_address__sorter__posix.cc
@@ -0,0 +1,10 @@
+--- net/dns/address_sorter_posix.cc.orig 2022-05-11 07:16:53 UTC
++++ net/dns/address_sorter_posix.cc
+@@ -17,6 +17,7 @@
+ #include <ifaddrs.h>
+ #include <net/if.h>
+ #include <netinet/in_var.h>
++#include <netinet6/in6_var.h>
+ #include <string.h>
+ #include <sys/ioctl.h>
+ #endif
diff --git a/devel/electron17/files/patch-net_dns_dns__reloader.cc b/devel/electron17/files/patch-net_dns_dns__reloader.cc
new file mode 100644
index 000000000000..2f63f5f1d464
--- /dev/null
+++ b/devel/electron17/files/patch-net_dns_dns__reloader.cc
@@ -0,0 +1,18 @@
+--- net/dns/dns_reloader.cc.orig 2022-05-11 07:16:53 UTC
++++ net/dns/dns_reloader.cc
+@@ -4,7 +4,7 @@
+
+ #include "net/dns/dns_reloader.h"
+
+-#if defined(OS_POSIX) && !defined(OS_APPLE) && !defined(OS_OPENBSD) && \
++#if defined(OS_POSIX) && !defined(OS_APPLE) && !defined(OS_BSD) && \
+ !defined(OS_ANDROID) && !defined(OS_FUCHSIA)
+
+ #include <resolv.h>
+@@ -111,5 +111,5 @@ void DnsReloaderMaybeReload() {
+
+ } // namespace net
+
+-#endif // defined(OS_POSIX) && !defined(OS_APPLE) && !defined(OS_OPENBSD) &&
++#endif // defined(OS_POSIX) && !defined(OS_APPLE) && !defined(OS_BSD) &&
+ // !defined(OS_ANDROID)
diff --git a/devel/electron17/files/patch-net_dns_dns__reloader.h b/devel/electron17/files/patch-net_dns_dns__reloader.h
new file mode 100644
index 000000000000..7f911af887d6
--- /dev/null
+++ b/devel/electron17/files/patch-net_dns_dns__reloader.h
@@ -0,0 +1,11 @@
+--- net/dns/dns_reloader.h.orig 2022-05-11 07:16:53 UTC
++++ net/dns/dns_reloader.h
+@@ -7,7 +7,7 @@
+
+ #include "build/build_config.h"
+
+-#if defined(OS_POSIX) && !defined(OS_APPLE) && !defined(OS_OPENBSD)
++#if defined(OS_POSIX) && !defined(OS_APPLE) && !defined(OS_BSD)
+ namespace net {
+
+ // Call on the network thread before calling DnsReloaderMaybeReload() anywhere.
diff --git a/devel/electron17/files/patch-net_dns_dns__util.cc b/devel/electron17/files/patch-net_dns_dns__util.cc
new file mode 100644
index 000000000000..a7fddb6ccdb3
--- /dev/null
+++ b/devel/electron17/files/patch-net_dns_dns__util.cc
@@ -0,0 +1,11 @@
+--- net/dns/dns_util.cc.orig 2021-09-14 01:52:00 UTC
++++ net/dns/dns_util.cc
+@@ -28,6 +28,8 @@
+ #include "third_party/abseil-cpp/absl/types/optional.h"
+ #include "url/url_canon.h"
+
++#include <sys/socket.h>
++
+ #if defined(OS_POSIX)
+ #include <netinet/in.h>
+ #include <net/if.h>
diff --git a/devel/electron17/files/patch-net_dns_host__resolver__manager.cc b/devel/electron17/files/patch-net_dns_host__resolver__manager.cc
new file mode 100644
index 000000000000..2b3ecea65f37
--- /dev/null
+++ b/devel/electron17/files/patch-net_dns_host__resolver__manager.cc
@@ -0,0 +1,11 @@
+--- net/dns/host_resolver_manager.cc.orig 2022-05-11 07:16:53 UTC
++++ net/dns/host_resolver_manager.cc
+@@ -2932,7 +2932,7 @@ HostResolverManager::HostResolverManager(
+ NetworkChangeNotifier::AddConnectionTypeObserver(this);
+ if (system_dns_config_notifier_)
+ system_dns_config_notifier_->AddObserver(this);
+-#if defined(OS_POSIX) && !defined(OS_APPLE) && !defined(OS_OPENBSD) && \
++#if defined(OS_POSIX) && !defined(OS_APPLE) && !defined(OS_BSD) && \
+ !defined(OS_ANDROID)
+ EnsureDnsReloaderInit();
+ #endif
diff --git a/devel/electron17/files/patch-net_dns_host__resolver__proc.cc b/devel/electron17/files/patch-net_dns_host__resolver__proc.cc
new file mode 100644
index 000000000000..8d048f354f98
--- /dev/null
+++ b/devel/electron17/files/patch-net_dns_host__resolver__proc.cc
@@ -0,0 +1,22 @@
+--- net/dns/host_resolver_proc.cc.orig 2022-05-11 07:16:53 UTC
++++ net/dns/host_resolver_proc.cc
+@@ -19,10 +19,6 @@
+ #include "net/dns/dns_util.h"
+ #include "net/dns/host_resolver.h"
+
+-#if defined(OS_OPENBSD)
+-#define AI_ADDRCONFIG 0
+-#endif
+-
+ namespace net {
+
+ HostResolverProc* HostResolverProc::default_proc_ = nullptr;
+@@ -177,7 +173,7 @@ int SystemHostResolverCall(const std::string& host,
+ base::BlockingType::WILL_BLOCK);
+
+ #if defined(OS_POSIX) && \
+- !(defined(OS_APPLE) || defined(OS_OPENBSD) || defined(OS_ANDROID))
++ !(defined(OS_APPLE) || defined(OS_BSD) || defined(OS_ANDROID))
+ DnsReloaderMaybeReload();
+ #endif
+ absl::optional<AddressInfo> ai;
diff --git a/devel/electron17/files/patch-net_dns_public_BUILD.gn b/devel/electron17/files/patch-net_dns_public_BUILD.gn
new file mode 100644
index 000000000000..157fd192dcbe
--- /dev/null
+++ b/devel/electron17/files/patch-net_dns_public_BUILD.gn
@@ -0,0 +1,11 @@
+--- net/dns/public/BUILD.gn.orig 2021-11-19 04:25:20 UTC
++++ net/dns/public/BUILD.gn
+@@ -37,7 +37,7 @@ source_set("public") {
+ "util.h",
+ ]
+
+- if (is_linux) {
++ if (is_linux && !is_bsd) {
+ sources += [
+ "resolv_reader.cc",
+ "resolv_reader.h",
diff --git a/devel/electron17/files/patch-net_dns_public_resolv__reader.h b/devel/electron17/files/patch-net_dns_public_resolv__reader.h
new file mode 100644
index 000000000000..b8c1a4cfcc9d
--- /dev/null
+++ b/devel/electron17/files/patch-net_dns_public_resolv__reader.h
@@ -0,0 +1,9 @@
+--- net/dns/public/resolv_reader.h.orig 2022-05-11 07:16:53 UTC
++++ net/dns/public/resolv_reader.h
+@@ -34,4 +34,4 @@ NET_EXPORT absl::optional<std::vector<IPEndPoint>> Get
+
+ } // namespace net
+
+-#endif // NET_DNS_PUBLIC_RESOLV_READER_H_
+\ No newline at end of file
++#endif // NET_DNS_PUBLIC_RESOLV_READER_H_
diff --git a/devel/electron17/files/patch-net_http_http__auth__gssapi__posix.cc b/devel/electron17/files/patch-net_http_http__auth__gssapi__posix.cc
new file mode 100644
index 000000000000..c8a5cfa98fc9
--- /dev/null
+++ b/devel/electron17/files/patch-net_http_http__auth__gssapi__posix.cc
@@ -0,0 +1,14 @@
+--- net/http/http_auth_gssapi_posix.cc.orig 2021-11-19 04:25:20 UTC
++++ net/http/http_auth_gssapi_posix.cc
+@@ -369,8 +369,9 @@ base::NativeLibrary GSSAPISharedLibrary::LoadSharedLib
+ static const char* const kDefaultLibraryNames[] = {
+ #if defined(OS_APPLE)
+ "/System/Library/Frameworks/GSS.framework/GSS"
+-#elif defined(OS_OPENBSD)
+- "libgssapi.so" // Heimdal - OpenBSD
++#elif defined(OS_BSD)
++ "libgssapi_krb5.so.2", // MIT Kerberos - FreeBSD
++ "libgssapi.so" // Heimdal - OpenBSD, FreeBSD
+ #else
+ "libgssapi_krb5.so.2", // MIT Kerberos - FC, Suse10, Debian
+ "libgssapi.so.4", // Heimdal - Suse10, MDK
diff --git a/devel/electron17/files/patch-net_http_http__auth__gssapi__posix.h b/devel/electron17/files/patch-net_http_http__auth__gssapi__posix.h
new file mode 100644
index 000000000000..0bc5d57f8bd7
--- /dev/null
+++ b/devel/electron17/files/patch-net_http_http__auth__gssapi__posix.h
@@ -0,0 +1,12 @@
+--- net/http/http_auth_gssapi_posix.h.orig 2022-05-11 07:16:54 UTC
++++ net/http/http_auth_gssapi_posix.h
+@@ -20,6 +20,9 @@
+ #if defined(OS_APPLE)
+ #include <GSS/gssapi.h>
+ #elif defined(OS_FREEBSD)
++#ifndef GSS_C_DELEG_POLICY_FLAG
++#define GSS_C_DELEG_POLICY_FLAG 32768
++#endif
+ #include <gssapi/gssapi.h>
+ #else
+ #include <gssapi.h>
diff --git a/devel/electron17/files/patch-net_http_http__network__session.cc b/devel/electron17/files/patch-net_http_http__network__session.cc
new file mode 100644
index 000000000000..d32403fc4ce9
--- /dev/null
+++ b/devel/electron17/files/patch-net_http_http__network__session.cc
@@ -0,0 +1,12 @@
+--- net/http/http_network_session.cc.orig 2022-05-11 07:16:54 UTC
++++ net/http/http_network_session.cc
+@@ -20,7 +20,9 @@
+ #include "build/build_config.h"
+ #include "net/base/features.h"
+ #include "net/dns/host_resolver.h"
++#if defined(USE_KERBEROS)
+ #include "net/http/http_auth_handler_factory.h"
++#endif
+ #include "net/http/http_response_body_drainer.h"
+ #include "net/http/http_stream_factory.h"
+ #include "net/http/url_security_manager.h"
diff --git a/devel/electron17/files/patch-net_proxy__resolution_configured__proxy__resolution__service.cc b/devel/electron17/files/patch-net_proxy__resolution_configured__proxy__resolution__service.cc
new file mode 100644
index 000000000000..2c925875ecd2
--- /dev/null
+++ b/devel/electron17/files/patch-net_proxy__resolution_configured__proxy__resolution__service.cc
@@ -0,0 +1,29 @@
+--- net/proxy_resolution/configured_proxy_resolution_service.cc.orig 2022-05-11 07:16:54 UTC
++++ net/proxy_resolution/configured_proxy_resolution_service.cc
+@@ -52,7 +52,7 @@
+ #elif defined(OS_MAC)
+ #include "net/proxy_resolution/proxy_config_service_mac.h"
+ #include "net/proxy_resolution/proxy_resolver_mac.h"
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ #include "net/proxy_resolution/proxy_config_service_linux.h"
+ #elif defined(OS_ANDROID)
+ #include "net/proxy_resolution/proxy_config_service_android.h"
+@@ -64,7 +64,7 @@ namespace net {
+
+ namespace {
+
+-#if defined(OS_WIN) || defined(OS_APPLE) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_APPLE) || defined(OS_LINUX) || defined(OS_BSD)
+ constexpr net::NetworkTrafficAnnotationTag kSystemProxyConfigTrafficAnnotation =
+ net::DefineNetworkTrafficAnnotation("proxy_config_system", R"(
+ semantics {
+@@ -1422,7 +1422,7 @@ ConfiguredProxyResolutionService::CreateSystemProxyCon
+ << "profile_io_data.cc::CreateProxyConfigService and this should "
+ << "be used only for examples.";
+ return std::make_unique<UnsetProxyConfigService>();
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ std::unique_ptr<ProxyConfigServiceLinux> linux_config_service(
+ new ProxyConfigServiceLinux());
+
diff --git a/devel/electron17/files/patch-net_proxy__resolution_proxy__config__service__linux.cc b/devel/electron17/files/patch-net_proxy__resolution_proxy__config__service__linux.cc
new file mode 100644
index 000000000000..7d19f1c5af34
--- /dev/null
+++ b/devel/electron17/files/patch-net_proxy__resolution_proxy__config__service__linux.cc
@@ -0,0 +1,40 @@
+--- net/proxy_resolution/proxy_config_service_linux.cc.orig 2022-05-11 07:16:54 UTC
++++ net/proxy_resolution/proxy_config_service_linux.cc
+@@ -6,7 +6,9 @@
+
+ #include <errno.h>
+ #include <limits.h>
++#if !defined(OS_BSD)
+ #include <sys/inotify.h>
++#endif
+ #include <unistd.h>
+
+ #include <map>
+@@ -506,6 +508,7 @@ bool SettingGetterImplGSettings::CheckVersion(
+ }
+ #endif // defined(USE_GIO)
+
++#if !defined(OS_BSD)
+ // Converts |value| from a decimal string to an int. If there was a failure
+ // parsing, returns |default_value|.
+ int StringToIntOrDefault(base::StringPiece value, int default_value) {
+@@ -1007,6 +1010,7 @@ class SettingGetterImplKDE : public ProxyConfigService
+ // events on.
+ scoped_refptr<base::SequencedTaskRunner> file_task_runner_;
+ };
++#endif
+
+ } // namespace
+
+@@ -1222,9 +1226,11 @@ ProxyConfigServiceLinux::Delegate::Delegate(
+ case base::nix::DESKTOP_ENVIRONMENT_KDE3:
+ case base::nix::DESKTOP_ENVIRONMENT_KDE4:
+ case base::nix::DESKTOP_ENVIRONMENT_KDE5:
++#if !defined(OS_BSD)
+ setting_getter_ =
+ std::make_unique<SettingGetterImplKDE>(env_var_getter_.get());
+ break;
++#endif
+ case base::nix::DESKTOP_ENVIRONMENT_XFCE:
+ case base::nix::DESKTOP_ENVIRONMENT_OTHER:
+ break;
diff --git a/devel/electron17/files/patch-net_socket_socks5__client__socket.cc b/devel/electron17/files/patch-net_socket_socks5__client__socket.cc
new file mode 100644
index 000000000000..f6af6bb414bb
--- /dev/null
+++ b/devel/electron17/files/patch-net_socket_socks5__client__socket.cc
@@ -0,0 +1,12 @@
+--- net/socket/socks5_client_socket.cc.orig 2022-05-11 07:16:54 UTC
++++ net/socket/socks5_client_socket.cc
+@@ -20,6 +20,9 @@
+ #include "net/log/net_log_event_type.h"
+ #include "net/traffic_annotation/network_traffic_annotation.h"
+
++#include <sys/types.h>
++#include <netinet/in.h>
++
+ namespace net {
+
+ const unsigned int SOCKS5ClientSocket::kGreetReadHeaderSize = 2;
diff --git a/devel/electron17/files/patch-net_socket_udp__socket__posix.cc b/devel/electron17/files/patch-net_socket_udp__socket__posix.cc
new file mode 100644
index 000000000000..798b10a79d71
--- /dev/null
+++ b/devel/electron17/files/patch-net_socket_udp__socket__posix.cc
@@ -0,0 +1,11 @@
+--- net/socket/udp_socket_posix.cc.orig 2022-05-11 07:16:54 UTC
++++ net/socket/udp_socket_posix.cc
+@@ -636,7 +636,7 @@ int UDPSocketPosix::SetDoNotFragment() {
+ }
+
+ void UDPSocketPosix::SetMsgConfirm(bool confirm) {
+-#if !defined(OS_APPLE)
++#if !defined(OS_APPLE) && !defined(OS_BSD)
+ if (confirm) {
+ sendto_flags_ |= MSG_CONFIRM;
+ } else {
diff --git a/devel/electron17/files/patch-net_tools_cert__verify__tool_cert__verify__comparision__tool.cc b/devel/electron17/files/patch-net_tools_cert__verify__tool_cert__verify__comparision__tool.cc
new file mode 100644
index 000000000000..2b7361458d36
--- /dev/null
+++ b/devel/electron17/files/patch-net_tools_cert__verify__tool_cert__verify__comparision__tool.cc
@@ -0,0 +1,29 @@
+--- net/tools/cert_verify_tool/cert_verify_comparision_tool.cc.orig 2022-05-11 07:16:54 UTC
++++ net/tools/cert_verify_tool/cert_verify_comparision_tool.cc
+@@ -35,7 +35,7 @@
+ #include "net/url_request/url_request_context_builder.h"
+ #include "net/url_request/url_request_context_getter.h"
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ #include "net/proxy_resolution/proxy_config.h"
+ #include "net/proxy_resolution/proxy_config_service_fixed.h"
+ #endif
+@@ -51,7 +51,7 @@ void SetUpOnNetworkThread(
+ base::WaitableEvent* initialization_complete_event) {
+ net::URLRequestContextBuilder url_request_context_builder;
+ url_request_context_builder.set_user_agent(GetUserAgent());
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // On Linux, use a fixed ProxyConfigService, since the default one
+ // depends on glib.
+ //
+@@ -123,7 +123,7 @@ class CertVerifyImpl {
+ std::unique_ptr<CertVerifyImpl> CreateCertVerifyImplFromName(
+ base::StringPiece impl_name,
+ scoped_refptr<net::CertNetFetcher> cert_net_fetcher) {
+-#if !(defined(OS_FUCHSIA) || defined(OS_LINUX) || defined(OS_CHROMEOS))
++#if !(defined(OS_FUCHSIA) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD))
+ if (impl_name == "platform") {
+ return std::make_unique<CertVerifyImpl>(
+ "CertVerifyProc (system)", net::CertVerifyProc::CreateSystemVerifyProc(
diff --git a/devel/electron17/files/patch-net_tools_cert__verify__tool_cert__verify__tool.cc b/devel/electron17/files/patch-net_tools_cert__verify__tool_cert__verify__tool.cc
new file mode 100644
index 000000000000..c32369edc731
--- /dev/null
+++ b/devel/electron17/files/patch-net_tools_cert__verify__tool_cert__verify__tool.cc
@@ -0,0 +1,38 @@
+--- net/tools/cert_verify_tool/cert_verify_tool.cc.orig 2022-05-11 07:16:54 UTC
++++ net/tools/cert_verify_tool/cert_verify_tool.cc
+@@ -30,7 +30,7 @@
+ #include "net/url_request/url_request_context_builder.h"
+ #include "net/url_request/url_request_context_getter.h"
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ #include "net/proxy_resolution/proxy_config.h"
+ #include "net/proxy_resolution/proxy_config_service_fixed.h"
+ #endif
+@@ -56,7 +56,7 @@ void SetUpOnNetworkThread(
+ base::WaitableEvent* initialization_complete_event) {
+ net::URLRequestContextBuilder url_request_context_builder;
+ url_request_context_builder.set_user_agent(GetUserAgent());
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // On Linux, use a fixed ProxyConfigService, since the default one
+ // depends on glib.
+ //
+@@ -206,7 +206,7 @@ std::unique_ptr<CertVerifyImpl> CreateCertVerifyImplFr
+ base::StringPiece impl_name,
+ scoped_refptr<net::CertNetFetcher> cert_net_fetcher,
+ RootStoreType root_store_type) {
+-#if !(defined(OS_FUCHSIA) || defined(OS_LINUX) || defined(OS_CHROMEOS))
++#if !(defined(OS_FUCHSIA) || defined(OS_LINUX) || defined(OS_CHROMEOS)) || defined(OS_BSD)
+ if (impl_name == "platform") {
+ if (root_store_type != RootStoreType::kSystem) {
+ std::cerr << "WARNING: platform verifier not supported with "
+@@ -463,7 +463,7 @@ int main(int argc, char** argv) {
+ std::string impls_str = command_line.GetSwitchValueASCII("impls");
+ if (impls_str.empty()) {
+ // Default value.
+-#if !(defined(OS_FUCHSIA) || defined(OS_LINUX) || defined(OS_CHROMEOS))
++#if !(defined(OS_FUCHSIA) || defined(OS_LINUX) || defined(OS_CHROMEOS)) || defined(OS_BSD)
+ impls_str = "platform,";
+ #endif
+ impls_str += "builtin,pathbuilder";
diff --git a/devel/electron17/files/patch-net_tools_quic_quic__http__proxy__backend.cc b/devel/electron17/files/patch-net_tools_quic_quic__http__proxy__backend.cc
new file mode 100644
index 000000000000..78f152927a9b
--- /dev/null
+++ b/devel/electron17/files/patch-net_tools_quic_quic__http__proxy__backend.cc
@@ -0,0 +1,11 @@
+--- net/tools/quic/quic_http_proxy_backend.cc.orig 2021-09-14 01:52:00 UTC
++++ net/tools/quic/quic_http_proxy_backend.cc
+@@ -161,7 +161,7 @@ void QuicHttpProxyBackend::InitializeURLRequestContext
+ // Enable HTTP2, but disable QUIC on the backend
+ context_builder.SetSpdyAndQuicEnabled(true /* http2 */, false /* quic */);
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // On Linux, use a fixed ProxyConfigService, since the default one
+ // depends on glib.
+ context_builder.set_proxy_config_service(
diff --git a/devel/electron17/files/patch-net_url__request_url__fetcher.cc b/devel/electron17/files/patch-net_url__request_url__fetcher.cc
new file mode 100644
index 000000000000..62b8a8b8e06f
--- /dev/null
+++ b/devel/electron17/files/patch-net_url__request_url__fetcher.cc
@@ -0,0 +1,11 @@
+--- net/url_request/url_fetcher.cc.orig 2021-04-14 01:08:53 UTC
++++ net/url_request/url_fetcher.cc
+@@ -24,7 +24,7 @@ void URLFetcher::SetIgnoreCertificateRequests(bool ign
+
+ // TODO(crbug.com/1052397): Revisit once build flag switch of lacros-chrome is
+ // complete.
+-#if !defined(OS_WIN) && !(defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
++#if !defined(OS_WIN) && !(defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD))
+ // static
+ std::unique_ptr<URLFetcher> URLFetcher::Create(
+ const GURL& url,
diff --git a/devel/electron17/files/patch-net_url__request_url__fetcher.h b/devel/electron17/files/patch-net_url__request_url__fetcher.h
new file mode 100644
index 000000000000..42694018ce3f
--- /dev/null
+++ b/devel/electron17/files/patch-net_url__request_url__fetcher.h
@@ -0,0 +1,11 @@
+--- net/url_request/url_fetcher.h.orig 2022-05-11 07:16:54 UTC
++++ net/url_request/url_fetcher.h
+@@ -354,7 +354,7 @@ class NET_EXPORT URLFetcher {
+ // TODO(crbug.com/1052397): Revisit once build flag switch of lacros-chrome is
+ // complete.
+ #if (!defined(OS_WIN) && \
+- !(defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))) || \
++ !(defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD))) || \
+ defined(OS_CHROMEOS)
+ // |url| is the URL to send the request to. It must be valid.
+ // |request_type| is the type of request to make.
diff --git a/devel/electron17/files/patch-net_url__request_url__request__context.cc b/devel/electron17/files/patch-net_url__request_url__request__context.cc
new file mode 100644
index 000000000000..44c216609fbc
--- /dev/null
+++ b/devel/electron17/files/patch-net_url__request_url__request__context.cc
@@ -0,0 +1,11 @@
+--- net/url_request/url_request_context.cc.orig 2022-05-11 07:16:54 UTC
++++ net/url_request/url_request_context.cc
+@@ -87,7 +87,7 @@ const HttpNetworkSessionContext* URLRequestContext::Ge
+
+ // TODO(crbug.com/1052397): Revisit once build flag switch of lacros-chrome is
+ // complete.
+-#if !defined(OS_WIN) && !(defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
++#if !defined(OS_WIN) && !(defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD))
+ std::unique_ptr<URLRequest> URLRequestContext::CreateRequest(
+ const GURL& url,
+ RequestPriority priority,
diff --git a/devel/electron17/files/patch-net_url__request_url__request__context.h b/devel/electron17/files/patch-net_url__request_url__request__context.h
new file mode 100644
index 000000000000..1b991d5d6fb9
--- /dev/null
+++ b/devel/electron17/files/patch-net_url__request_url__request__context.h
@@ -0,0 +1,11 @@
+--- net/url_request/url_request_context.h.orig 2022-05-11 07:16:54 UTC
++++ net/url_request/url_request_context.h
+@@ -81,7 +81,7 @@ class NET_EXPORT URLRequestContext {
+
+ // TODO(crbug.com/1052397): Revisit once build flag switch of lacros-chrome is
+ // complete.
+-#if !defined(OS_WIN) && !(defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
++#if !defined(OS_WIN) && !(defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD))
+ // This function should not be used in Chromium, please use the version with
+ // NetworkTrafficAnnotationTag in the future.
+ //
diff --git a/devel/electron17/files/patch-net_url__request_url__request__context__builder.cc b/devel/electron17/files/patch-net_url__request_url__request__context__builder.cc
new file mode 100644
index 000000000000..b356367cde5d
--- /dev/null
+++ b/devel/electron17/files/patch-net_url__request_url__request__context__builder.cc
@@ -0,0 +1,11 @@
+--- net/url_request/url_request_context_builder.cc.orig 2022-05-11 07:16:54 UTC
++++ net/url_request/url_request_context_builder.cc
+@@ -424,7 +424,7 @@ std::unique_ptr<URLRequestContext> URLRequestContextBu
+ }
+
+ if (!proxy_resolution_service_) {
+-#if !defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(OS_ANDROID)
++#if !defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(OS_ANDROID) && !defined(OS_BSD)
+ // TODO(willchan): Switch to using this code when
+ // ConfiguredProxyResolutionService::CreateSystemProxyConfigService()'s
+ // signature doesn't suck.
diff --git a/devel/electron17/files/patch-pdf_font__table__linux.cc b/devel/electron17/files/patch-pdf_font__table__linux.cc
new file mode 100644
index 000000000000..8d0bb352302e
--- /dev/null
+++ b/devel/electron17/files/patch-pdf_font__table__linux.cc
@@ -0,0 +1,10 @@
+--- pdf/font_table_linux.cc.orig 2022-05-11 07:16:54 UTC
++++ pdf/font_table_linux.cc
+@@ -5,6 +5,7 @@
+ #include "pdf/font_table_linux.h"
+
+ #include <sys/stat.h>
++#include <unistd.h>
+
+ #include <algorithm>
+ #include <limits>
diff --git a/devel/electron17/files/patch-pdf_out__of__process__instance.cc b/devel/electron17/files/patch-pdf_out__of__process__instance.cc
new file mode 100644
index 000000000000..c493c9f2a74b
--- /dev/null
+++ b/devel/electron17/files/patch-pdf_out__of__process__instance.cc
@@ -0,0 +1,20 @@
+--- pdf/out_of_process_instance.cc.orig 2022-05-11 07:16:54 UTC
++++ pdf/out_of_process_instance.cc
+@@ -75,7 +75,7 @@
+ #include "ui/gfx/geometry/size.h"
+ #include "url/gurl.h"
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ #include "pdf/ppapi_migration/pdfium_font_linux.h"
+ #endif
+
+@@ -735,7 +735,7 @@ void OutOfProcessInstance::RotateCounterclockwise() {
+ }
+
+ void OutOfProcessInstance::SetLastPluginInstance() {
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ SetLastPepperInstance(this);
+ #endif
+ }
diff --git a/devel/electron17/files/patch-pdf_pdfium_pdfium__engine.cc b/devel/electron17/files/patch-pdf_pdfium_pdfium__engine.cc
new file mode 100644
index 000000000000..5a118ed326ff
--- /dev/null
+++ b/devel/electron17/files/patch-pdf_pdfium_pdfium__engine.cc
@@ -0,0 +1,20 @@
+--- pdf/pdfium/pdfium_engine.cc.orig 2022-05-11 07:16:54 UTC
++++ pdf/pdfium/pdfium_engine.cc
+@@ -84,7 +84,7 @@
+ #include "gin/public/cppgc.h"
+ #endif
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ #include "pdf/pdfium/pdfium_font_linux.h"
+ #endif
+
+@@ -519,7 +519,7 @@ void InitializeSDK(bool enable_v8, FontMappingMode fon
+
+ FPDF_InitLibraryWithConfig(&config);
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ g_font_mapping_mode = font_mapping_mode;
+ InitializeLinuxFontMapper();
+ #endif
diff --git a/devel/electron17/files/patch-printing_mojom_printing__context__mojom__traits.cc b/devel/electron17/files/patch-printing_mojom_printing__context__mojom__traits.cc
new file mode 100644
index 000000000000..ae823fab87bf
--- /dev/null
+++ b/devel/electron17/files/patch-printing_mojom_printing__context__mojom__traits.cc
@@ -0,0 +1,20 @@
+--- printing/mojom/printing_context_mojom_traits.cc.orig 2022-05-11 07:16:54 UTC
++++ printing/mojom/printing_context_mojom_traits.cc
+@@ -16,7 +16,7 @@
+ #include "ui/gfx/geometry/mojom/geometry_mojom_traits.h"
+ #include "ui/gfx/geometry/size.h"
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ #include "mojo/public/mojom/base/values.mojom.h"
+ #endif
+
+@@ -162,7 +162,7 @@ bool StructTraits<
+ }
+
+ out->set_pages_per_sheet(data.pages_per_sheet());
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ DCHECK(out->advanced_settings().empty());
+ if (!data.ReadAdvancedSettings(&out->advanced_settings()))
+ return false;
diff --git a/devel/electron17/files/patch-printing_mojom_printing__context__mojom__traits.h b/devel/electron17/files/patch-printing_mojom_printing__context__mojom__traits.h
new file mode 100644
index 000000000000..68da7609fb01
--- /dev/null
+++ b/devel/electron17/files/patch-printing_mojom_printing__context__mojom__traits.h
@@ -0,0 +1,11 @@
+--- printing/mojom/printing_context_mojom_traits.h.orig 2022-05-11 07:16:54 UTC
++++ printing/mojom/printing_context_mojom_traits.h
+@@ -168,7 +168,7 @@ struct StructTraits<printing::mojom::PrintSettingsData
+ return s.pages_per_sheet();
+ }
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ static const printing::PrintSettings::AdvancedSettings& advanced_settings(
+ const printing::PrintSettings& s) {
+ return s.advanced_settings();
diff --git a/devel/electron17/files/patch-printing_print__settings.cc b/devel/electron17/files/patch-printing_print__settings.cc
new file mode 100644
index 000000000000..fe01a71ea3a9
--- /dev/null
+++ b/devel/electron17/files/patch-printing_print__settings.cc
@@ -0,0 +1,29 @@
+--- printing/print_settings.cc.orig 2022-05-11 07:16:54 UTC
++++ printing/print_settings.cc
+@@ -265,7 +265,7 @@ PrintSettings::PrintSettings(const PrintSettings& sett
+ #endif
+ is_modifiable_ = settings.is_modifiable_;
+ pages_per_sheet_ = settings.pages_per_sheet_;
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ for (const auto& item : settings.advanced_settings_)
+ advanced_settings_.emplace(item.first, item.second.Clone());
+ #endif // defined(OS_LINUX) || defined(OS_CHROMEOS)
+@@ -305,7 +305,7 @@ PrintSettings& PrintSettings::operator=(const PrintSet
+ #endif
+ is_modifiable_ = settings.is_modifiable_;
+ pages_per_sheet_ = settings.pages_per_sheet_;
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ for (const auto& item : settings.advanced_settings_)
+ advanced_settings_.emplace(item.first, item.second.Clone());
+ #endif // defined(OS_LINUX) || defined(OS_CHROMEOS)
+@@ -345,7 +345,7 @@ void PrintSettings::Clear() {
+ #endif
+ is_modifiable_ = true;
+ pages_per_sheet_ = 1;
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ advanced_settings_.clear();
+ #endif // defined(OS_LINUX) || defined(OS_CHROMEOS)
+ #if defined(OS_CHROMEOS)
diff --git a/devel/electron17/files/patch-printing_print__settings.h b/devel/electron17/files/patch-printing_print__settings.h
new file mode 100644
index 000000000000..bae70e50331e
--- /dev/null
+++ b/devel/electron17/files/patch-printing_print__settings.h
@@ -0,0 +1,38 @@
+--- printing/print_settings.h.orig 2022-05-11 07:16:54 UTC
++++ printing/print_settings.h
+@@ -18,7 +18,7 @@
+ #include "ui/gfx/geometry/rect.h"
+ #include "ui/gfx/geometry/size.h"
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ #include <map>
+
+ #include "base/values.h"
+@@ -66,7 +66,7 @@ class COMPONENT_EXPORT(PRINTING) PrintSettings {
+ }
+ };
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ using AdvancedSettings = std::map<std::string, base::Value>;
+ #endif // defined(OS_LINUX) || defined(OS_CHROMEOS)
+
+@@ -221,7 +221,7 @@ class COMPONENT_EXPORT(PRINTING) PrintSettings {
+ pages_per_sheet_ = pages_per_sheet;
+ }
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ AdvancedSettings& advanced_settings() { return advanced_settings_; }
+ const AdvancedSettings& advanced_settings() const {
+ return advanced_settings_;
+@@ -322,7 +322,7 @@ class COMPONENT_EXPORT(PRINTING) PrintSettings {
+ // Number of pages per sheet.
+ int pages_per_sheet_;
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // Advanced settings.
+ AdvancedSettings advanced_settings_;
+ #endif // defined(OS_LINUX) || defined(OS_CHROMEOS)
diff --git a/devel/electron17/files/patch-printing_print__settings__conversion.cc b/devel/electron17/files/patch-printing_print__settings__conversion.cc
new file mode 100644
index 000000000000..22211f890673
--- /dev/null
+++ b/devel/electron17/files/patch-printing_print__settings__conversion.cc
@@ -0,0 +1,11 @@
+--- printing/print_settings_conversion.cc.orig 2022-05-11 07:16:54 UTC
++++ printing/print_settings_conversion.cc
+@@ -217,7 +217,7 @@ std::unique_ptr<PrintSettings> PrintSettingsFromJobSet
+ settings->set_is_modifiable(is_modifiable.value());
+ }
+
+-#if defined(OS_CHROMEOS) || (defined(OS_LINUX) && defined(USE_CUPS))
++#if defined(OS_CHROMEOS) || ((defined(OS_BSD) || defined(OS_LINUX)) && defined(USE_CUPS))
+ const base::Value* advanced_settings =
+ job_settings.FindDictKey(kSettingAdvancedSettings);
+ if (advanced_settings) {
diff --git a/devel/electron17/files/patch-printing_printing__features.cc b/devel/electron17/files/patch-printing_printing__features.cc
new file mode 100644
index 000000000000..0e3cebab29d4
--- /dev/null
+++ b/devel/electron17/files/patch-printing_printing__features.cc
@@ -0,0 +1,11 @@
+--- printing/printing_features.cc.orig 2022-05-11 07:16:54 UTC
++++ printing/printing_features.cc
+@@ -8,7 +8,7 @@
+ #include "printing/buildflags/buildflags.h"
+
+ #if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || \
+- defined(OS_CHROMEOS)
++ defined(OS_CHROMEOS) || defined(OS_BSD)
+ #include "base/metrics/field_trial_params.h"
+ #endif
+
diff --git a/devel/electron17/files/patch-printing_sandbox_print__backend__sandbox__hook__linux.cc b/devel/electron17/files/patch-printing_sandbox_print__backend__sandbox__hook__linux.cc
new file mode 100644
index 000000000000..12f7bfdcc22e
--- /dev/null
+++ b/devel/electron17/files/patch-printing_sandbox_print__backend__sandbox__hook__linux.cc
@@ -0,0 +1,50 @@
+--- printing/sandbox/print_backend_sandbox_hook_linux.cc.orig 2022-05-11 07:16:54 UTC
++++ printing/sandbox/print_backend_sandbox_hook_linux.cc
+@@ -9,20 +9,27 @@
+ #include "base/files/file_path.h"
+ #include "base/files/file_util.h"
+ #include "base/path_service.h"
++#if !defined(OS_BSD)
+ #include "sandbox/linux/syscall_broker/broker_command.h"
+ #include "sandbox/linux/syscall_broker/broker_file_permission.h"
+ #include "sandbox/policy/linux/sandbox_linux.h"
+ #include "services/network/network_sandbox_hook_linux.h"
++#else
++#include "sandbox/policy/openbsd/sandbox_openbsd.h"
++#endif
+
+ #if defined(OS_CHROMEOS) && defined(USE_CUPS)
+ #include "printing/backend/cups_connection_pool.h"
+ #endif
+
++#if !defined(OS_BSD)
+ using sandbox::syscall_broker::BrokerFilePermission;
+ using sandbox::syscall_broker::MakeBrokerCommandSet;
++#endif
+
+ namespace printing {
+
++#if !defined(OS_BSD)
+ namespace {
+
+ sandbox::syscall_broker::BrokerCommandSet GetPrintBackendBrokerCommandSet() {
+@@ -83,9 +90,11 @@ std::vector<BrokerFilePermission> GetPrintBackendFileP
+ }
+
+ } // namespace
++#endif
+
+ bool PrintBackendPreSandboxHook(
+ sandbox::policy::SandboxLinux::Options options) {
++#if !defined(OS_BSD)
+ #if defined(OS_CHROMEOS) && defined(USE_CUPS)
+ // Create the socket connections to the CUPS server before engaging the
+ // sandbox, since new connections cannot be made after that.
+@@ -99,6 +108,7 @@ bool PrintBackendPreSandboxHook(
+ sandbox::policy::SandboxLinux::PreSandboxHook(), options);
+
+ instance->EngageNamespaceSandboxIfPossible();
++#endif
+ return true;
+ }
+
diff --git a/devel/electron17/files/patch-printing_sandbox_print__backend__sandbox__hook__linux.h b/devel/electron17/files/patch-printing_sandbox_print__backend__sandbox__hook__linux.h
new file mode 100644
index 000000000000..69a0bc55dcbd
--- /dev/null
+++ b/devel/electron17/files/patch-printing_sandbox_print__backend__sandbox__hook__linux.h
@@ -0,0 +1,16 @@
+--- printing/sandbox/print_backend_sandbox_hook_linux.h.orig 2022-05-11 07:00:52 UTC
++++ printing/sandbox/print_backend_sandbox_hook_linux.h
+@@ -5,8 +5,13 @@
+ #ifndef PRINTING_SANDBOX_PRINT_BACKEND_SANDBOX_HOOK_LINUX_H_
+ #define PRINTING_SANDBOX_PRINT_BACKEND_SANDBOX_HOOK_LINUX_H_
+
++#include "build/build_config.h"
+ #include "base/component_export.h"
++#if defined(OS_BSD)
++#include "sandbox/policy/openbsd/sandbox_openbsd.h"
++#else
+ #include "sandbox/policy/linux/sandbox_linux.h"
++#endif
+
+ namespace printing {
+
diff --git a/devel/electron17/files/patch-remoting_base_chromoting__event.cc b/devel/electron17/files/patch-remoting_base_chromoting__event.cc
new file mode 100644
index 000000000000..3155eebf0260
--- /dev/null
+++ b/devel/electron17/files/patch-remoting_base_chromoting__event.cc
@@ -0,0 +1,11 @@
+--- remoting/base/chromoting_event.cc.orig 2021-04-14 01:08:53 UTC
++++ remoting/base/chromoting_event.cc
+@@ -189,7 +189,7 @@ void ChromotingEvent::AddSystemInfo() {
+ SetString(kCpuKey, base::SysInfo::OperatingSystemArchitecture());
+ SetString(kOsVersionKey, base::SysInfo::OperatingSystemVersion());
+ SetString(kWebAppVersionKey, STRINGIZE(VERSION));
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ Os os = Os::CHROMOTING_LINUX;
+ #elif BUILDFLAG(IS_CHROMEOS_ASH)
+ Os os = Os::CHROMOTING_CHROMEOS;
diff --git a/devel/electron17/files/patch-remoting_base_host__settings.cc b/devel/electron17/files/patch-remoting_base_host__settings.cc
new file mode 100644
index 000000000000..b7eec6f6f6a0
--- /dev/null
+++ b/devel/electron17/files/patch-remoting_base_host__settings.cc
@@ -0,0 +1,20 @@
+--- remoting/base/host_settings.cc.orig 2021-12-14 11:45:09 UTC
++++ remoting/base/host_settings.cc
+@@ -7,7 +7,7 @@
+ #include "base/no_destructor.h"
+ #include "build/build_config.h"
+
+-#if defined(OS_APPLE) || (defined(OS_LINUX) && !defined(OS_CHROMEOS))
++#if defined(OS_APPLE) || (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ #include "remoting/base/file_host_settings.h"
+ #endif // defined(OS_LINUX)
+
+@@ -44,7 +44,7 @@ HostSettings::~HostSettings() = default;
+
+ // static
+ HostSettings* HostSettings::GetInstance() {
+-#if defined(OS_APPLE) || (defined(OS_LINUX) && !defined(OS_CHROMEOS))
++#if defined(OS_APPLE) || (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ static base::NoDestructor<FileHostSettings> instance(
+ FileHostSettings::GetSettingsFilePath());
+ #elif defined(OS_WIN)
diff --git a/devel/electron17/files/patch-remoting_client_display_sys__opengl.h b/devel/electron17/files/patch-remoting_client_display_sys__opengl.h
new file mode 100644
index 000000000000..2f772ff81d0e
--- /dev/null
+++ b/devel/electron17/files/patch-remoting_client_display_sys__opengl.h
@@ -0,0 +1,11 @@
+--- remoting/client/display/sys_opengl.h.orig 2021-01-07 00:36:39 UTC
++++ remoting/client/display/sys_opengl.h
+@@ -9,7 +9,7 @@
+
+ #if defined(OS_IOS)
+ #include <OpenGLES/ES3/gl.h>
+-#elif defined(OS_LINUX) || defined(OS_CHROMEOS)
++#elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ #define GL_GLEXT_PROTOTYPES
+ #include <GL/gl.h>
+ #include <GL/glext.h>
diff --git a/devel/electron17/files/patch-remoting_codec_webrtc__video__encoder__vpx.cc b/devel/electron17/files/patch-remoting_codec_webrtc__video__encoder__vpx.cc
new file mode 100644
index 000000000000..63c44a995e10
--- /dev/null
+++ b/devel/electron17/files/patch-remoting_codec_webrtc__video__encoder__vpx.cc
@@ -0,0 +1,11 @@
+--- remoting/codec/webrtc_video_encoder_vpx.cc.orig 2022-05-11 07:16:54 UTC
++++ remoting/codec/webrtc_video_encoder_vpx.cc
+@@ -85,7 +85,7 @@ void SetVp8CodecParameters(vpx_codec_enc_cfg_t* config
+ const webrtc::DesktopSize& size) {
+ SetCommonCodecParameters(config, size);
+
+-#if defined(OS_LINUX) && !BUILDFLAG(IS_CHROMEOS_LACROS)
++#if (defined(OS_BSD) || defined(OS_LINUX)) && !BUILDFLAG(IS_CHROMEOS_LACROS)
+ // On Linux, using too many threads for VP8 encoding has been linked to high
+ // CPU usage on machines that are under stress. See http://crbug.com/1151148.
+ config->g_threads = std::min(config->g_threads, 2U);
diff --git a/devel/electron17/files/patch-remoting_host_base_switches.cc b/devel/electron17/files/patch-remoting_host_base_switches.cc
new file mode 100644
index 000000000000..03f742d0f7b4
--- /dev/null
+++ b/devel/electron17/files/patch-remoting_host_base_switches.cc
@@ -0,0 +1,11 @@
+--- remoting/host/base/switches.cc.orig 2022-05-11 07:16:54 UTC
++++ remoting/host/base/switches.cc
+@@ -23,7 +23,7 @@ const char kProcessTypeEvaluateCapability[] = "evaluat
+ const char kProcessTypeFileChooser[] = "file_chooser";
+ const char kProcessTypeUrlForwarderConfigurator[] =
+ "url_forwarder_configurator";
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ const char kProcessTypeXSessionChooser[] = "xsession_chooser";
+ #endif // defined(OS_LINUX) || defined(OS_CHROMEOS)
+
diff --git a/devel/electron17/files/patch-remoting_host_base_switches.h b/devel/electron17/files/patch-remoting_host_base_switches.h
new file mode 100644
index 000000000000..1c9be509a5db
--- /dev/null
+++ b/devel/electron17/files/patch-remoting_host_base_switches.h
@@ -0,0 +1,11 @@
+--- remoting/host/base/switches.h.orig 2022-05-11 07:16:54 UTC
++++ remoting/host/base/switches.h
+@@ -35,7 +35,7 @@ extern const char kProcessTypeRdpDesktopSession[];
+ extern const char kProcessTypeEvaluateCapability[];
+ extern const char kProcessTypeFileChooser[];
+ extern const char kProcessTypeUrlForwarderConfigurator[];
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ extern const char kProcessTypeXSessionChooser[];
+ #endif // defined(OS_LINUX) || defined(OS_CHROMEOS)
+
diff --git a/devel/electron17/files/patch-remoting_host_chromoting__host.cc b/devel/electron17/files/patch-remoting_host_chromoting__host.cc
new file mode 100644
index 000000000000..133277935fe9
--- /dev/null
+++ b/devel/electron17/files/patch-remoting_host_chromoting__host.cc
@@ -0,0 +1,11 @@
+--- remoting/host/chromoting_host.cc.orig 2022-05-11 07:16:54 UTC
++++ remoting/host/chromoting_host.cc
+@@ -124,7 +124,7 @@ void ChromotingHost::StartChromotingHostServices() {
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+ DCHECK(!ipc_server_);
+
+-#if defined(OS_LINUX) || defined(OS_WIN)
++#if defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
+ ipc_server_ = std::make_unique<MojoIpcServer<mojom::ChromotingHostServices>>(
+ GetChromotingHostServicesServerName(), this);
+ ipc_server_->StartServer();
diff --git a/devel/electron17/files/patch-remoting_host_chromoting__host__context.cc b/devel/electron17/files/patch-remoting_host_chromoting__host__context.cc
new file mode 100644
index 000000000000..2b671af8af04
--- /dev/null
+++ b/devel/electron17/files/patch-remoting_host_chromoting__host__context.cc
@@ -0,0 +1,11 @@
+--- remoting/host/chromoting_host_context.cc.orig 2022-05-11 07:16:54 UTC
++++ remoting/host/chromoting_host_context.cc
+@@ -143,7 +143,7 @@ std::unique_ptr<ChromotingHostContext> ChromotingHostC
+ // on a UI thread.
+ scoped_refptr<AutoThreadTaskRunner> input_task_runner =
+ AutoThread::CreateWithType("ChromotingInputThread", ui_task_runner,
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ base::MessagePumpType::UI);
+ #else
+ base::MessagePumpType::IO);
diff --git a/devel/electron17/files/patch-remoting_host_chromoting__host__services__client.cc b/devel/electron17/files/patch-remoting_host_chromoting__host__services__client.cc
new file mode 100644
index 000000000000..e8c8b8ff5be1
--- /dev/null
+++ b/devel/electron17/files/patch-remoting_host_chromoting__host__services__client.cc
@@ -0,0 +1,20 @@
+--- remoting/host/chromoting_host_services_client.cc.orig 2022-05-11 07:16:54 UTC
++++ remoting/host/chromoting_host_services_client.cc
+@@ -24,7 +24,7 @@ namespace remoting {
+
+ namespace {
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ constexpr char kChromeRemoteDesktopSessionEnvVar[] =
+ "CHROME_REMOTE_DESKTOP_SESSION";
+ #endif
+@@ -104,7 +104,7 @@ bool ChromotingHostServicesClient::EnsureSessionServic
+ if (session_services_remote_.is_bound()) {
+ return true;
+ }
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ if (!environment_->HasVar(kChromeRemoteDesktopSessionEnvVar)) {
+ LOG(WARNING) << "Current desktop environment is not remotable.";
+ return false;
diff --git a/devel/electron17/files/patch-remoting_host_evaluate__capability.cc b/devel/electron17/files/patch-remoting_host_evaluate__capability.cc
new file mode 100644
index 000000000000..0229ce3660f9
--- /dev/null
+++ b/devel/electron17/files/patch-remoting_host_evaluate__capability.cc
@@ -0,0 +1,11 @@
+--- remoting/host/evaluate_capability.cc.orig 2021-04-14 01:08:53 UTC
++++ remoting/host/evaluate_capability.cc
+@@ -55,7 +55,7 @@ base::FilePath BuildHostBinaryPath() {
+ }
+ #endif
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ if (path.BaseName().value() ==
+ FILE_PATH_LITERAL("chrome-remote-desktop-host")) {
+ return path;
diff --git a/devel/electron17/files/patch-remoting_host_heartbeat__sender.cc b/devel/electron17/files/patch-remoting_host_heartbeat__sender.cc
new file mode 100644
index 000000000000..c4e45a02dc5b
--- /dev/null
+++ b/devel/electron17/files/patch-remoting_host_heartbeat__sender.cc
@@ -0,0 +1,11 @@
+--- remoting/host/heartbeat_sender.cc.orig 2021-11-19 04:25:20 UTC
++++ remoting/host/heartbeat_sender.cc
+@@ -111,7 +111,7 @@ const net::BackoffEntry::Policy kBackoffPolicy = {
+ std::string GetHostname() {
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag
+ // switch of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ return net::GetHostName();
+ #elif defined(OS_WIN)
+ wchar_t buffer[MAX_PATH] = {0};
diff --git a/devel/electron17/files/patch-remoting_host_host__attributes.cc b/devel/electron17/files/patch-remoting_host_host__attributes.cc
new file mode 100644
index 000000000000..c0b681f73702
--- /dev/null
+++ b/devel/electron17/files/patch-remoting_host_host__attributes.cc
@@ -0,0 +1,11 @@
+--- remoting/host/host_attributes.cc.orig 2021-07-15 19:13:43 UTC
++++ remoting/host/host_attributes.cc
+@@ -122,7 +122,7 @@ std::string GetHostAttributes() {
+ media::InitializeMediaFoundation()) {
+ result.push_back("HWEncoder");
+ }
+-#elif defined(OS_LINUX) || defined(OS_CHROMEOS)
++#elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ result.push_back("HWEncoder");
+ #endif
+
diff --git a/devel/electron17/files/patch-remoting_host_host__details.cc b/devel/electron17/files/patch-remoting_host_host__details.cc
new file mode 100644
index 000000000000..8adb04f6fff6
--- /dev/null
+++ b/devel/electron17/files/patch-remoting_host_host__details.cc
@@ -0,0 +1,11 @@
+--- remoting/host/host_details.cc.orig 2022-05-11 07:16:54 UTC
++++ remoting/host/host_details.cc
+@@ -23,7 +23,7 @@ std::string GetHostOperatingSystemName() {
+ return "Mac";
+ #elif BUILDFLAG(IS_CHROMEOS_ASH)
+ return "ChromeOS";
+-#elif defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#elif defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ return "Linux";
+ #elif defined(OS_ANDROID)
+ return "Android";
diff --git a/devel/electron17/files/patch-remoting_host_host__main.cc b/devel/electron17/files/patch-remoting_host_host__main.cc
new file mode 100644
index 000000000000..cc6955658bfb
--- /dev/null
+++ b/devel/electron17/files/patch-remoting_host_host__main.cc
@@ -0,0 +1,29 @@
+--- remoting/host/host_main.cc.orig 2022-05-11 07:16:54 UTC
++++ remoting/host/host_main.cc
+@@ -50,7 +50,7 @@ int FileChooserMain();
+ int RdpDesktopSessionMain();
+ int UrlForwarderConfiguratorMain();
+ #endif // defined(OS_WIN)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ int XSessionChooserMain();
+ #endif // defined(OS_LINUX) || defined(OS_CHROMEOS)
+
+@@ -63,7 +63,7 @@ const char kUsageMessage[] =
+ "\n"
+ "Options:\n"
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ " --audio-pipe-name=<pipe> - Sets the pipe name to capture audio on "
+ "Linux.\n"
+ #endif // defined(OS_LINUX)
+@@ -152,7 +152,7 @@ MainRoutineFn SelectMainRoutine(const std::string& pro
+ } else if (process_type == kProcessTypeUrlForwarderConfigurator) {
+ main_routine = &UrlForwarderConfiguratorMain;
+ #endif // defined(OS_WIN)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ } else if (process_type == kProcessTypeXSessionChooser) {
+ main_routine = &XSessionChooserMain;
+ #endif // defined(OS_LINUX) || defined(OS_CHROMEOS)
diff --git a/devel/electron17/files/patch-remoting_host_ipc__constants.cc b/devel/electron17/files/patch-remoting_host_ipc__constants.cc
new file mode 100644
index 000000000000..bf34a0cafb32
--- /dev/null
+++ b/devel/electron17/files/patch-remoting_host_ipc__constants.cc
@@ -0,0 +1,11 @@
+--- remoting/host/ipc_constants.cc.orig 2022-05-11 07:16:54 UTC
++++ remoting/host/ipc_constants.cc
+@@ -16,7 +16,7 @@ namespace remoting {
+
+ namespace {
+
+-#if !defined(NDEBUG) && defined(OS_LINUX)
++#if !defined(NDEBUG) && (defined(OS_LINUX) || defined(OS_BSD))
+ // Use a different IPC name for Linux debug builds so that we can run the host
+ // directly from out/Debug without interfering with the production host that
+ // might also be running.
diff --git a/devel/electron17/files/patch-remoting_host_it2me_it2me__native__messaging__host__main.cc b/devel/electron17/files/patch-remoting_host_it2me_it2me__native__messaging__host__main.cc
new file mode 100644
index 000000000000..a9388679b1d6
--- /dev/null
+++ b/devel/electron17/files/patch-remoting_host_it2me_it2me__native__messaging__host__main.cc
@@ -0,0 +1,47 @@
+--- remoting/host/it2me/it2me_native_messaging_host_main.cc.orig 2022-05-11 07:16:54 UTC
++++ remoting/host/it2me/it2me_native_messaging_host_main.cc
+@@ -30,7 +30,7 @@
+ #include "remoting/host/resources.h"
+ #include "remoting/host/usage_stats_consent.h"
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ #include <gtk/gtk.h>
+
+ #include "base/linux_util.h"
+@@ -76,7 +76,7 @@ bool CurrentProcessHasUiAccess() {
+ // Creates a It2MeNativeMessagingHost instance, attaches it to stdin/stdout and
+ // runs the task executor until It2MeNativeMessagingHost signals shutdown.
+ int It2MeNativeMessagingHostMain(int argc, char** argv) {
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // Initialize Xlib for multi-threaded use, allowing non-Chromium code to
+ // use X11 safely (such as the WebRTC capturer, GTK ...)
+ x11::InitXlib();
+@@ -121,7 +121,7 @@ int It2MeNativeMessagingHostMain(int argc, char** argv
+
+ remoting::LoadResources("");
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // Required for any calls into GTK functions, such as the Disconnect and
+ // Continue windows. Calling with nullptr arguments because we don't have
+ // any command line arguments for gtk to consume.
+@@ -254,7 +254,7 @@ int It2MeNativeMessagingHostMain(int argc, char** argv
+ PolicyWatcher::CreateWithTaskRunner(context->file_task_runner(),
+ context->management_service());
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // Create an X11EventSource on all UI threads, so the global X11 connection
+ // (x11::Connection::Get()) can dispatch X events.
+ auto event_source =
+@@ -276,7 +276,7 @@ int It2MeNativeMessagingHostMain(int argc, char** argv
+ // Run the loop until channel is alive.
+ run_loop.Run();
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ input_task_runner->PostTask(FROM_HERE, base::BindOnce([]() {
+ delete ui::X11EventSource::GetInstance();
+ }));
diff --git a/devel/electron17/files/patch-remoting_host_me2me__desktop__environment.cc b/devel/electron17/files/patch-remoting_host_me2me__desktop__environment.cc
new file mode 100644
index 000000000000..5a88a61d1dc0
--- /dev/null
+++ b/devel/electron17/files/patch-remoting_host_me2me__desktop__environment.cc
@@ -0,0 +1,11 @@
+--- remoting/host/me2me_desktop_environment.cc.orig 2022-05-11 07:16:54 UTC
++++ remoting/host/me2me_desktop_environment.cc
+@@ -143,7 +143,7 @@ bool Me2MeDesktopEnvironment::InitializeSecurity(
+
+ // Otherwise, if the session is shared with the local user start monitoring
+ // the local input and create the in-session UI.
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ bool want_user_interface = false;
+ #elif defined(OS_APPLE)
+ // Don't try to display any UI on top of the system's login screen as this
diff --git a/devel/electron17/files/patch-remoting_host_remote__open__url_remote__open__url__client.cc b/devel/electron17/files/patch-remoting_host_remote__open__url_remote__open__url__client.cc
new file mode 100644
index 000000000000..297be3c23cf0
--- /dev/null
+++ b/devel/electron17/files/patch-remoting_host_remote__open__url_remote__open__url__client.cc
@@ -0,0 +1,20 @@
+--- remoting/host/remote_open_url/remote_open_url_client.cc.orig 2022-05-11 07:16:54 UTC
++++ remoting/host/remote_open_url/remote_open_url_client.cc
+@@ -15,7 +15,7 @@
+ #include "remoting/host/mojom/chromoting_host_services.mojom.h"
+ #include "remoting/host/mojom/remote_url_opener.mojom.h"
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "remoting/host/remote_open_url/remote_open_url_client_delegate_linux.h"
+ #elif defined(OS_WIN)
+ #include "remoting/host/remote_open_url/remote_open_url_client_delegate_win.h"
+@@ -28,7 +28,7 @@ namespace {
+ constexpr base::TimeDelta kRequestTimeout = base::Seconds(5);
+
+ std::unique_ptr<RemoteOpenUrlClient::Delegate> CreateDelegate() {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ return std::make_unique<RemoteOpenUrlClientDelegateLinux>();
+ #elif defined(OS_WIN)
+ return std::make_unique<RemoteOpenUrlClientDelegateWin>();
diff --git a/devel/electron17/files/patch-remoting_host_remote__open__url_remote__open__url__util.cc b/devel/electron17/files/patch-remoting_host_remote__open__url_remote__open__url__util.cc
new file mode 100644
index 000000000000..35afb57366e4
--- /dev/null
+++ b/devel/electron17/files/patch-remoting_host_remote__open__url_remote__open__url__util.cc
@@ -0,0 +1,11 @@
+--- remoting/host/remote_open_url/remote_open_url_util.cc.orig 2021-11-19 04:25:20 UTC
++++ remoting/host/remote_open_url/remote_open_url_util.cc
+@@ -30,7 +30,7 @@ const wchar_t kRegisteredApplicationsKeyName[] =
+ #endif // defined (OS_WIN)
+
+ bool IsRemoteOpenUrlSupported() {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ return true;
+ #elif defined(OS_WIN)
+ // The modern default apps settings dialog is only available to Windows 8+.
diff --git a/devel/electron17/files/patch-remoting_host_remote__open__url_url__forwarder__configurator.cc b/devel/electron17/files/patch-remoting_host_remote__open__url_url__forwarder__configurator.cc
new file mode 100644
index 000000000000..8e7b0a563b8b
--- /dev/null
+++ b/devel/electron17/files/patch-remoting_host_remote__open__url_url__forwarder__configurator.cc
@@ -0,0 +1,11 @@
+--- remoting/host/remote_open_url/url_forwarder_configurator.cc.orig 2022-05-11 07:16:54 UTC
++++ remoting/host/remote_open_url/url_forwarder_configurator.cc
+@@ -12,7 +12,7 @@ UrlForwarderConfigurator::UrlForwarderConfigurator() =
+
+ UrlForwarderConfigurator::~UrlForwarderConfigurator() = default;
+
+-#if !defined(OS_LINUX) && !defined(OS_WIN)
++#if !defined(OS_LINUX) && !defined(OS_WIN) && !defined(OS_BSD)
+
+ // static
+ std::unique_ptr<UrlForwarderConfigurator> UrlForwarderConfigurator::Create() {
diff --git a/devel/electron17/files/patch-remoting_host_remoting__me2me__host.cc b/devel/electron17/files/patch-remoting_host_remoting__me2me__host.cc
new file mode 100644
index 000000000000..93ca3c1908d9
--- /dev/null
+++ b/devel/electron17/files/patch-remoting_host_remoting__me2me__host.cc
@@ -0,0 +1,92 @@
+--- remoting/host/remoting_me2me_host.cc.orig 2022-05-11 07:16:54 UTC
++++ remoting/host/remoting_me2me_host.cc
+@@ -123,7 +123,7 @@
+ #include "remoting/host/mac/permission_utils.h"
+ #endif // defined(OS_APPLE)
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ #include <gtk/gtk.h>
+
+ #include "base/linux_util.h"
+@@ -167,7 +167,7 @@ const char kApplicationName[] = "chromoting";
+ const char kStdinConfigPath[] = "-";
+ #endif // !defined(REMOTING_MULTI_PROCESS)
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // The command line switch used to pass name of the pipe to capture audio on
+ // linux.
+ const char kAudioPipeSwitchName[] = "audio-pipe-name";
+@@ -366,7 +366,7 @@ class HostProcess : public ConfigWatcher::Delegate,
+
+ std::unique_ptr<ChromotingHostContext> context_;
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // Watch for certificate changes and kill the host when changes occur
+ std::unique_ptr<CertificateWatcher> cert_watcher_;
+ #endif
+@@ -790,7 +790,7 @@ void HostProcess::CreateAuthenticatorFactory() {
+ DCHECK(third_party_auth_config_.token_url.is_valid());
+ DCHECK(third_party_auth_config_.token_validation_url.is_valid());
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ if (!cert_watcher_) {
+ cert_watcher_ = std::make_unique<CertificateWatcher>(
+ base::BindRepeating(&HostProcess::ShutdownHost, this,
+@@ -904,7 +904,7 @@ void HostProcess::StartOnUiThread() {
+ base::BindRepeating(&HostProcess::OnPolicyUpdate, base::Unretained(this)),
+ base::BindRepeating(&HostProcess::OnPolicyError, base::Unretained(this)));
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // If an audio pipe is specific on the command-line then initialize
+ // AudioCapturerLinux to capture from it.
+ base::FilePath audio_pipe_name = base::CommandLine::ForCurrentProcess()->
+@@ -962,7 +962,7 @@ void HostProcess::ShutdownOnUiThread() {
+ // It is now safe for the HostProcess to be deleted.
+ self_ = nullptr;
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // Cause the global AudioPipeReader to be freed, otherwise the audio
+ // thread will remain in-use and prevent the process from exiting.
+ // TODO(wez): DesktopEnvironmentFactory should own the pipe reader.
+@@ -1667,7 +1667,7 @@ void HostProcess::StartHost() {
+ // The feature is enabled for all Googlers using a supported platform.
+ desktop_environment_options_.set_enable_remote_open_url(is_googler_);
+
+-#if defined(OS_LINUX) || !defined(NDEBUG)
++#if (defined(OS_LINUX) || defined(OS_BSD) || !defined(NDEBUG)
+ // Experimental feature. Enabled on Linux for easier testing.
+ if (is_googler_) {
+ desktop_environment_options_.set_enable_remote_webauthn(true);
+@@ -1864,7 +1864,7 @@ void HostProcess::CrashHostProcess(const std::string&
+ int HostProcessMain() {
+ HOST_LOG << "Starting host process: version " << STRINGIZE(VERSION);
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // Initialize Xlib for multi-threaded use, allowing non-Chromium code to
+ // use X11 safely (such as the WebRTC capturer, GTK ...)
+ x11::InitXlib();
+@@ -1901,7 +1901,7 @@ int HostProcessMain() {
+ std::unique_ptr<net::NetworkChangeNotifier> network_change_notifier(
+ net::NetworkChangeNotifier::CreateIfNeeded());
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // Create an X11EventSource on all UI threads, so the global X11 connection
+ // (x11::Connection::Get()) can dispatch X events.
+ auto event_source =
+@@ -1922,7 +1922,7 @@ int HostProcessMain() {
+ // Run the main (also UI) task executor until the host no longer needs it.
+ run_loop.Run();
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ input_task_runner->PostTask(FROM_HERE, base::BindOnce([]() {
+ delete ui::X11EventSource::GetInstance();
+ }));
diff --git a/devel/electron17/files/patch-remoting_host_setup_start__host__main.cc b/devel/electron17/files/patch-remoting_host_setup_start__host__main.cc
new file mode 100644
index 000000000000..60d388a86685
--- /dev/null
+++ b/devel/electron17/files/patch-remoting_host_setup_start__host__main.cc
@@ -0,0 +1,29 @@
+--- remoting/host/setup/start_host_main.cc.orig 2022-05-11 07:16:54 UTC
++++ remoting/host/setup/start_host_main.cc
+@@ -32,7 +32,7 @@
+ #include <unistd.h>
+ #endif // defined(OS_POSIX)
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "remoting/host/setup/daemon_controller_delegate_linux.h"
+ #include "remoting/host/setup/start_host_as_root.h"
+ #endif // defined(OS_LINUX)
+@@ -126,7 +126,7 @@ void OnDone(HostStarter::Result result) {
+ } // namespace
+
+ int StartHostMain(int argc, char** argv) {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Minimize the amount of code that runs as root on Posix systems.
+ if (getuid() == 0) {
+ return remoting::StartHostAsRoot(argc, argv);
+@@ -163,7 +163,7 @@ int StartHostMain(int argc, char** argv) {
+ // for the account which generated |code|.
+ std::string host_owner = command_line->GetSwitchValueASCII("host-owner");
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ if (command_line->HasSwitch("no-start")) {
+ // On Linux, registering the host with systemd and starting it is the only
+ // reason start_host requires root. The --no-start options skips that final
diff --git a/devel/electron17/files/patch-remoting_resources_remoting__strings.grd b/devel/electron17/files/patch-remoting_resources_remoting__strings.grd
new file mode 100644
index 000000000000..713e0e6926c0
--- /dev/null
+++ b/devel/electron17/files/patch-remoting_resources_remoting__strings.grd
@@ -0,0 +1,20 @@
+--- remoting/resources/remoting_strings.grd.orig 2021-11-19 04:25:20 UTC
++++ remoting/resources/remoting_strings.grd
+@@ -924,7 +924,7 @@ If '<ph name="SERVICE_SCRIPT_NAME">$3<ex>org.chromium.
+ <message name="IDS_URL_FORWARDER_INCORRECTLY_CONFIGURED" desc="Message shown when the Chrome Remote Desktop URL forwarder is incorrectly configured.">
+ <ph name="URL_FORWARDER_NAME">%s<ex>Chrome Remote Desktop URL Forwarder</ex></ph> is not configured correctly. Please choose a different default web browser and then enable URL forwarding again.
+ </message>
+- <if expr="is_linux">
++ <if expr="is_posix">
+ <message name="IDS_SESSION_DIALOG_MESSAGE" desc="The message to show at the top of the session-selection dialog.">
+ Select a session to launch within your Chrome Remote Desktop environment. (Note that some session types may not support running within Chrome Remote Desktop and on the local console simultaneously.)
+ </message>
+@@ -940,7 +940,7 @@ If '<ph name="SERVICE_SCRIPT_NAME">$3<ex>org.chromium.
+ <message name="IDS_SESSION_DIALOG_DEFAULT_SESSION_COMMENT" desc="The comment for the entry to launch the default session.">
+ Launch the default XSession
+ </message>
+- </if> <!-- is_linux -->
++ </if> <!-- is_posix -->
+ </messages>
+ </release>
+ </grit>
diff --git a/devel/electron17/files/patch-sandbox_BUILD.gn b/devel/electron17/files/patch-sandbox_BUILD.gn
new file mode 100644
index 000000000000..058e63d7c7cf
--- /dev/null
+++ b/devel/electron17/files/patch-sandbox_BUILD.gn
@@ -0,0 +1,11 @@
+--- sandbox/BUILD.gn.orig 2022-05-11 07:16:54 UTC
++++ sandbox/BUILD.gn
+@@ -27,7 +27,7 @@ group("sandbox") {
+ "//sandbox/mac:system_services",
+ "//sandbox/mac/mojom",
+ ]
+- } else if (is_linux || is_chromeos || is_android) {
++ } else if ((is_linux && !is_bsd) || is_chromeos || is_android) {
+ public_deps = [ "//sandbox/linux:sandbox" ]
+ }
+ }
diff --git a/devel/electron17/files/patch-sandbox_features.gni b/devel/electron17/files/patch-sandbox_features.gni
new file mode 100644
index 000000000000..b3bcbbbbc5ef
--- /dev/null
+++ b/devel/electron17/files/patch-sandbox_features.gni
@@ -0,0 +1,11 @@
+--- sandbox/features.gni.orig 2022-05-11 07:00:53 UTC
++++ sandbox/features.gni
+@@ -6,7 +6,7 @@
+ # currently.
+ # Do not disable seccomp_bpf anywhere without talking to
+ # security@chromium.org!
+-use_seccomp_bpf = (is_linux || is_chromeos || is_android) &&
++use_seccomp_bpf = !is_bsd && (is_linux || is_chromeos || is_android) &&
+ (current_cpu == "x86" || current_cpu == "x64" ||
+ current_cpu == "arm" || current_cpu == "arm64" ||
+ current_cpu == "mipsel" || current_cpu == "mips64el")
diff --git a/devel/electron17/files/patch-sandbox_linux_BUILD.gn b/devel/electron17/files/patch-sandbox_linux_BUILD.gn
new file mode 100644
index 000000000000..8e508d52f7b9
--- /dev/null
+++ b/devel/electron17/files/patch-sandbox_linux_BUILD.gn
@@ -0,0 +1,58 @@
+--- sandbox/linux/BUILD.gn.orig 2022-05-11 07:16:54 UTC
++++ sandbox/linux/BUILD.gn
+@@ -12,12 +12,12 @@ if (is_android) {
+ }
+
+ declare_args() {
+- compile_suid_client = is_linux || is_chromeos
++ compile_suid_client = (is_linux || is_chromeos) && !is_bsd
+
+- compile_credentials = is_linux || is_chromeos
++ compile_credentials = (is_linux || is_chromeos) && !is_bsd
+
+ # On Android, use plain GTest.
+- use_base_test_suite = is_linux || is_chromeos
++ use_base_test_suite = (is_linux || is_chromeos) && !is_bsd
+ }
+
+ # We have two principal targets: sandbox and sandbox_linux_unittests
+@@ -367,6 +367,39 @@ component("sandbox_services") {
+ sources += [
+ "services/libc_interceptor.cc",
+ "services/libc_interceptor.h",
++ ]
++ }
++
++ if (is_bsd) {
++ sources -= [
++ "services/scoped_process.cc",
++ "services/scoped_process.h",
++ "services/syscall_wrappers.cc",
++ "services/syscall_wrappers.h",
++ "services/yama.cc",
++ "services/yama.h",
++ "syscall_broker/broker_channel.cc",
++ "syscall_broker/broker_channel.h",
++ "syscall_broker/broker_client.cc",
++ "syscall_broker/broker_client.h",
++ "syscall_broker/broker_command.cc",
++ "syscall_broker/broker_command.h",
++ "syscall_broker/broker_file_permission.cc",
++ "syscall_broker/broker_file_permission.h",
++ "syscall_broker/broker_host.cc",
++ "syscall_broker/broker_host.h",
++ "syscall_broker/broker_permission_list.cc",
++ "syscall_broker/broker_permission_list.h",
++ "syscall_broker/broker_process.cc",
++ "syscall_broker/broker_process.h",
++ "syscall_broker/broker_sandbox_config.cc",
++ "syscall_broker/broker_sandbox_config.h",
++ "syscall_broker/broker_simple_message.cc",
++ "syscall_broker/broker_simple_message.h",
++ "syscall_broker/remote_syscall_arg_handler.cc",
++ "syscall_broker/remote_syscall_arg_handler.h",
++ "syscall_broker/syscall_dispatcher.cc",
++ "syscall_broker/syscall_dispatcher.h",
+ ]
+ }
+ }
diff --git a/devel/electron17/files/patch-sandbox_linux_services_init__process__reaper.cc b/devel/electron17/files/patch-sandbox_linux_services_init__process__reaper.cc
new file mode 100644
index 000000000000..e4ef40b14bb9
--- /dev/null
+++ b/devel/electron17/files/patch-sandbox_linux_services_init__process__reaper.cc
@@ -0,0 +1,15 @@
+--- sandbox/linux/services/init_process_reaper.cc.orig 2022-05-11 07:00:53 UTC
++++ sandbox/linux/services/init_process_reaper.cc
+@@ -2,6 +2,7 @@
+ // Use of this source code is governed by a BSD-style license that can be
+ // found in the LICENSE file.
+
++#if 0
+ #include "sandbox/linux/services/init_process_reaper.h"
+
+ #include <signal.h>
+@@ -100,3 +101,4 @@ bool CreateInitProcessReaper(base::OnceClosure post_fo
+ }
+
+ } // namespace sandbox.
++#endif
diff --git a/devel/electron17/files/patch-sandbox_linux_services_libc__interceptor.cc b/devel/electron17/files/patch-sandbox_linux_services_libc__interceptor.cc
new file mode 100644
index 000000000000..8644dc664732
--- /dev/null
+++ b/devel/electron17/files/patch-sandbox_linux_services_libc__interceptor.cc
@@ -0,0 +1,21 @@
+--- sandbox/linux/services/libc_interceptor.cc.orig 2021-09-14 01:52:00 UTC
++++ sandbox/linux/services/libc_interceptor.cc
+@@ -11,7 +11,9 @@
+ #include <stddef.h>
+ #include <stdint.h>
+ #include <string.h>
++#if !defined(OS_BSD)
+ #include <sys/prctl.h>
++#endif
+ #include <sys/socket.h>
+ #include <sys/types.h>
+ #include <time.h>
+@@ -96,7 +98,7 @@ bool ReadTimeStruct(base::PickleIterator* iter,
+ } else {
+ base::AutoLock lock(g_timezones_lock.Get());
+ auto ret_pair = g_timezones.Get().insert(timezone);
+- output->tm_zone = ret_pair.first->c_str();
++ output->tm_zone = (char *)ret_pair.first->c_str();
+ }
+
+ return true;
diff --git a/devel/electron17/files/patch-sandbox_policy_BUILD.gn b/devel/electron17/files/patch-sandbox_policy_BUILD.gn
new file mode 100644
index 000000000000..895c8e65c3f0
--- /dev/null
+++ b/devel/electron17/files/patch-sandbox_policy_BUILD.gn
@@ -0,0 +1,39 @@
+--- sandbox/policy/BUILD.gn.orig 2022-05-11 07:16:54 UTC
++++ sandbox/policy/BUILD.gn
+@@ -35,7 +35,7 @@ component("policy") {
+ "//sandbox/policy/mojom",
+ ]
+ public_deps = []
+- if (is_linux || is_chromeos) {
++ if ((is_linux || is_chromeos) && !is_bsd) {
+ sources += [
+ "linux/bpf_audio_policy_linux.cc",
+ "linux/bpf_audio_policy_linux.h",
+@@ -88,6 +88,27 @@ component("policy") {
+ "//sandbox/linux:sandbox_services",
+ "//sandbox/linux:seccomp_bpf",
+ "//sandbox/linux:suid_sandbox_client",
++ ]
++ }
++ if (is_openbsd) {
++ sources += [
++ "openbsd/sandbox_openbsd.cc",
++ "openbsd/sandbox_openbsd.h",
++ ]
++ deps += [
++ "//sandbox:sandbox_buildflags",
++ "//ui/gfx/x",
++ ]
++ libs = [ "util" ]
++ }
++ if (is_freebsd) {
++ sources += [
++ "freebsd/sandbox_freebsd.cc",
++ "freebsd/sandbox_freebsd.h",
++ ]
++ deps += [
++ "//sandbox:sandbox_buildflags",
++ "//ui/gfx/x",
+ ]
+ }
+ if (is_chromeos_ash) {
diff --git a/devel/electron17/files/patch-sandbox_policy_features.cc b/devel/electron17/files/patch-sandbox_policy_features.cc
new file mode 100644
index 000000000000..cfddcd8e2aa8
--- /dev/null
+++ b/devel/electron17/files/patch-sandbox_policy_features.cc
@@ -0,0 +1,14 @@
+--- sandbox/policy/features.cc.orig 2022-05-11 07:16:54 UTC
++++ sandbox/policy/features.cc
+@@ -16,7 +16,11 @@ namespace features {
+ // Enables network service sandbox.
+ // (Only causes an effect when feature kNetworkService is enabled.)
+ const base::Feature kNetworkServiceSandbox{"NetworkServiceSandbox",
++#if defined(OS_BSD)
++ base::FEATURE_ENABLED_BY_DEFAULT};
++#else
+ base::FEATURE_DISABLED_BY_DEFAULT};
++#endif
+ #endif // !defined(OS_MAC) && !defined(OS_FUCHSIA)
+
+ #if defined(OS_WIN)
diff --git a/devel/electron17/files/patch-sandbox_policy_freebsd_sandbox__freebsd.cc b/devel/electron17/files/patch-sandbox_policy_freebsd_sandbox__freebsd.cc
new file mode 100644
index 000000000000..5c1ae1d21fa0
--- /dev/null
+++ b/devel/electron17/files/patch-sandbox_policy_freebsd_sandbox__freebsd.cc
@@ -0,0 +1,250 @@
+--- sandbox/policy/freebsd/sandbox_freebsd.cc.orig 2022-05-13 07:20:05 UTC
++++ sandbox/policy/freebsd/sandbox_freebsd.cc
+@@ -0,0 +1,247 @@
++// Copyright (c) 2012 The Chromium Authors. All rights reserved.
++// Use of this source code is governed by a BSD-style license that can be
++// found in the LICENSE file.
++
++#include "sandbox/policy/openbsd/sandbox_openbsd.h"
++
++#include <dirent.h>
++#include <fcntl.h>
++#include <stdint.h>
++#include <sys/resource.h>
++#include <sys/stat.h>
++#include <sys/time.h>
++#include <sys/types.h>
++#include <unistd.h>
++
++#include <limits>
++#include <memory>
++#include <string>
++#include <vector>
++
++#include "base/bind.h"
++#include "base/callback_helpers.h"
++#include "base/command_line.h"
++#include "base/debug/stack_trace.h"
++#include "base/feature_list.h"
++#include "base/files/file_path.h"
++#include "base/files/file_util.h"
++#include "base/files/scoped_file.h"
++#include "base/logging.h"
++#include "base/memory/singleton.h"
++#include "base/path_service.h"
++#include "base/posix/eintr_wrapper.h"
++#include "base/strings/string_number_conversions.h"
++#include "base/system/sys_info.h"
++#include "base/time/time.h"
++#include "build/build_config.h"
++#include "sandbox/constants.h"
++#include "sandbox/linux/services/credentials.h"
++#include "sandbox/linux/services/namespace_sandbox.h"
++#include "sandbox/linux/services/proc_util.h"
++#include "sandbox/linux/services/resource_limits.h"
++#include "sandbox/linux/services/thread_helpers.h"
++#include "sandbox/linux/syscall_broker/broker_command.h"
++#include "sandbox/linux/syscall_broker/broker_process.h"
++#include "sandbox/policy/sandbox.h"
++#include "sandbox/policy/sandbox_type.h"
++#include "sandbox/policy/mojom/sandbox.mojom.h"
++#include "sandbox/policy/switches.h"
++#include "sandbox/sandbox_buildflags.h"
++
++#if BUILDFLAG(USING_SANITIZER)
++#include <sanitizer/common_interface_defs.h>
++#endif
++
++#if defined(USE_NSS_CERTS)
++#include "crypto/nss_util.h"
++#endif
++
++#include "ui/gfx/x/connection.h"
++#include "ui/gfx/font_util.h"
++
++#include <X11/Xlib.h>
++
++#define MAXTOKENS 3
++
++#define _UNVEIL_MAIN "/etc/chromium/unveil.main";
++#define _UNVEIL_RENDERER "/etc/chromium/unveil.renderer";
++#define _UNVEIL_GPU "/etc/chromium/unveil.gpu";
++#define _UNVEIL_PLUGIN "/etc/chromium/unveil.plugin";
++#define _UNVEIL_UTILITY "/etc/chromium/unveil.utility";
++#define _UNVEIL_UTILITY_NETWORK "/etc/chromium/unveil.utility_network";
++#define _UNVEIL_UTILITY_AUDIO "/etc/chromium/unveil.utility_audio";
++#define _UNVEIL_UTILITY_VIDEO "/etc/chromium/unveil.utility_video";
++
++namespace sandbox {
++namespace policy {
++
++SandboxLinux::SandboxLinux()
++ : sandbox_status_flags_(kInvalid),
++ pre_initialized_(false),
++ initialize_sandbox_ran_(false),
++ broker_process_(nullptr) {
++}
++
++SandboxLinux::~SandboxLinux() {
++ if (pre_initialized_) {
++ CHECK(initialize_sandbox_ran_);
++ }
++}
++
++SandboxLinux* SandboxLinux::GetInstance() {
++ SandboxLinux* instance = base::Singleton<SandboxLinux>::get();
++ CHECK(instance);
++ return instance;
++}
++
++void SandboxLinux::PreinitializeSandbox(sandbox::mojom::Sandbox sandbox_type) {
++ CHECK(!pre_initialized_);
++#if BUILDFLAG(USING_SANITIZER)
++ // Sanitizers need to open some resources before the sandbox is enabled.
++ // This should not fork, not launch threads, not open a directory.
++ __sanitizer_sandbox_on_notify(sanitizer_args());
++ sanitizer_args_.reset();
++#endif
++ base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
++ const std::string process_type =
++ command_line->GetSwitchValueASCII(switches::kProcessType);
++
++ base::SysInfo::AmountOfPhysicalMemory();
++ base::SysInfo::NumberOfProcessors();
++
++#if defined(USE_NSS_CERTS)
++ // The main process has to initialize the ~/.pki dir which won't work
++ // after unveil(2).
++ if (process_type.empty())
++ crypto::EnsureNSSInit();
++#endif
++
++ // cache the XErrorDB by forcing a read on it
++ {
++ auto* connection = x11::Connection::Get();
++ auto* display = connection->GetXlibDisplay().display();
++
++ char buf[1];
++ XGetErrorDatabaseText(display, "XProtoError", "0", "", buf, base::size(buf));
++ }
++
++ if (process_type.empty()) {
++ base::FilePath cache_directory, local_directory;
++
++ base::PathService::Get(base::DIR_CACHE, &cache_directory);
++ base::PathService::Get(base::DIR_HOME, &local_directory);
++
++ cache_directory = cache_directory.AppendASCII("chromium");
++ local_directory = local_directory.AppendASCII(".local").AppendASCII("share").AppendASCII("applications");
++
++ if (!base::CreateDirectory(cache_directory)) {
++ LOG(ERROR) << "Failed to create " << cache_directory.value() << " directory.";
++ }
++
++ if (!base::CreateDirectory(local_directory)) {
++ LOG(ERROR) << "Failed to create " << local_directory.value() << " directory.";
++ }
++ }
++
++ if (process_type == switches::kRendererProcess)
++ gfx::InitializeFonts();
++
++ pre_initialized_ = true;
++}
++
++bool SandboxLinux::InitializeSandbox(sandbox::mojom::Sandbox sandbox_type,
++ SandboxLinux::PreSandboxHook hook,
++ const Options& options) {
++ DCHECK(!initialize_sandbox_ran_);
++ initialize_sandbox_ran_ = true;
++
++ base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
++ const std::string process_type =
++ command_line->GetSwitchValueASCII(switches::kProcessType);
++
++ if (command_line->HasSwitch(switches::kNoSandbox))
++ return true;
++
++ VLOG(1) << "SandboxLinux::InitializeSandbox: process_type="
++ << process_type << " sandbox_type=" << GetSandboxTypeInEnglish(sandbox_type);
++
++ // Only one thread is running, pre-initialize if not already done.
++ if (!pre_initialized_)
++ PreinitializeSandbox(sandbox_type);
++
++ // Attempt to limit the future size of the address space of the process.
++ int error = 0;
++ const bool limited_as = LimitAddressSpace(&error);
++ if (error) {
++ // Restore errno. Internally to |LimitAddressSpace|, the errno due to
++ // setrlimit may be lost.
++ errno = error;
++ PCHECK(limited_as);
++ }
++
++ return true;
++}
++
++bool SandboxLinux::LimitAddressSpace(int* error) {
++#if !defined(ADDRESS_SANITIZER) && !defined(MEMORY_SANITIZER) && \
++ !defined(THREAD_SANITIZER) && !defined(LEAK_SANITIZER)
++ base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
++ if (SandboxTypeFromCommandLine(*command_line) == sandbox::mojom::Sandbox::kNoSandbox) {
++ return false;
++ }
++
++ // Unfortunately, it does not appear possible to set RLIMIT_AS such that it
++ // will both (a) be high enough to support V8's and WebAssembly's address
++ // space requirements while also (b) being low enough to mitigate exploits
++ // using integer overflows that require large allocations, heap spray, or
++ // other memory-hungry attack modes.
++
++ *error = sandbox::ResourceLimits::Lower(
++ RLIMIT_DATA, static_cast<rlim_t>(sandbox::kDataSizeLimit));
++
++ // Cache the resource limit before turning on the sandbox.
++ base::SysInfo::AmountOfVirtualMemory();
++ base::SysInfo::MaxSharedMemorySize();
++
++ return *error == 0;
++#else
++ base::SysInfo::AmountOfVirtualMemory();
++ return false;
++#endif // !defined(ADDRESS_SANITIZER) && !defined(MEMORY_SANITIZER) &&
++ // !defined(THREAD_SANITIZER) && !defined(LEAK_SANITIZER)
++}
++
++// static
++std::string SandboxLinux::GetSandboxTypeInEnglish(sandbox::mojom::Sandbox sandbox_type) {
++ switch (sandbox_type) {
++ case sandbox::mojom::Sandbox::kNoSandbox:
++ return "Unsandboxed";
++ case sandbox::mojom::Sandbox::kRenderer:
++ return "Renderer";
++ case sandbox::mojom::Sandbox::kUtility:
++ return "Utility";
++ case sandbox::mojom::Sandbox::kGpu:
++ return "GPU";
++ case sandbox::mojom::Sandbox::kPpapi:
++ return "PPAPI";
++ case sandbox::mojom::Sandbox::kNetwork:
++ return "Network";
++ case sandbox::mojom::Sandbox::kCdm:
++ return "CDM";
++ case sandbox::mojom::Sandbox::kPrintCompositor:
++ return "Print Compositor";
++ case sandbox::mojom::Sandbox::kAudio:
++ return "Audio";
++ case sandbox::mojom::Sandbox::kSpeechRecognition:
++ return "Speech Recognition";
++ case sandbox::mojom::Sandbox::kService:
++ return "Service";
++ case sandbox::mojom::Sandbox::kVideoCapture:
++ return "Video Capture";
++ default:
++ return "Unknown";
++ }
++}
++
++} // namespace policy
++} // namespace sandbox
diff --git a/devel/electron17/files/patch-sandbox_policy_freebsd_sandbox__freebsd.h b/devel/electron17/files/patch-sandbox_policy_freebsd_sandbox__freebsd.h
new file mode 100644
index 000000000000..e70aa0344687
--- /dev/null
+++ b/devel/electron17/files/patch-sandbox_policy_freebsd_sandbox__freebsd.h
@@ -0,0 +1,281 @@
+--- sandbox/policy/freebsd/sandbox_freebsd.h.orig 2022-05-13 07:20:05 UTC
++++ sandbox/policy/freebsd/sandbox_freebsd.h
+@@ -0,0 +1,278 @@
++// Copyright (c) 2012 The Chromium Authors. All rights reserved.
++// Use of this source code is governed by a BSD-style license that can be
++// found in the LICENSE file.
++#ifndef SANDBOX_POLICY_LINUX_SANDBOX_OPENBSD_H_
++#define SANDBOX_POLICY_LINUX_SANDBOX_OPENBSD_H_
++
++#include <memory>
++#include <string>
++#include <vector>
++
++#include "base/logging.h"
++#include "base/posix/global_descriptors.h"
++#include "sandbox/policy/export.h"
++#include "sandbox/policy/linux/sandbox_seccomp_bpf_linux.h"
++#include "sandbox/policy/mojom/sandbox.mojom.h"
++#include "sandbox/policy/sanitizer_buildflags.h"
++
++#if BUILDFLAG(USING_SANITIZER)
++#include <sanitizer/common_interface_defs.h>
++#endif
++
++namespace base {
++template <typename T>
++struct DefaultSingletonTraits;
++class Thread;
++} // namespace base
++
++namespace sandbox {
++namespace syscall_broker {
++class BrokerProcess;
++} // namespace syscall_broker
++} // namespace sandbox
++
++namespace sandbox {
++namespace policy {
++
++// A singleton class to represent and change our sandboxing state for the
++// three main Linux sandboxes.
++// The sandboxing model allows using two layers of sandboxing. The first layer
++// can be implemented either with unprivileged namespaces or with the setuid
++// sandbox. This class provides a way to engage the namespace sandbox, but does
++// not deal with the legacy setuid sandbox directly.
++// The second layer is mainly based on seccomp-bpf and is engaged with
++// InitializeSandbox(). InitializeSandbox() is also responsible for "sealing"
++// the first layer of sandboxing. That is, InitializeSandbox must always be
++// called to have any meaningful sandboxing at all.
++class SANDBOX_POLICY_EXPORT SandboxLinux {
++ public:
++ // This is a list of sandbox IPC methods which the renderer may send to the
++ // sandbox host. See
++ // https://chromium.googlesource.com/chromium/src/+/master/docs/linux_sandbox_ipc.md
++ // This isn't the full list, values < 32 are reserved for methods called from
++ // Skia, and values < 64 are reserved for libc_interceptor.cc.
++ enum LinuxSandboxIPCMethods {
++ DEPRECATED_METHOD_GET_FALLBACK_FONT_FOR_CHAR = 64,
++ DEPRECATED_METHOD_GET_CHILD_WITH_INODE,
++ DEPRECATED_METHOD_GET_STYLE_FOR_STRIKE,
++ METHOD_MAKE_SHARED_MEMORY_SEGMENT,
++ DEPRECATED_METHOD_MATCH_WITH_FALLBACK,
++ };
++
++ // These form a bitmask which describes the conditions of the Linux sandbox.
++ // Note: this doesn't strictly give you the current status, it states
++ // what will be enabled when the relevant processes are initialized.
++ enum Status {
++ // SUID sandbox active.
++ kSUID = 1 << 0,
++
++ // Sandbox is using a new PID namespace.
++ kPIDNS = 1 << 1,
++
++ // Sandbox is using a new network namespace.
++ kNetNS = 1 << 2,
++
++ // seccomp-bpf sandbox active.
++ kSeccompBPF = 1 << 3,
++
++ // The Yama LSM module is present and enforcing.
++ kYama = 1 << 4,
++
++ // seccomp-bpf sandbox is active and the kernel supports TSYNC.
++ kSeccompTSYNC = 1 << 5,
++
++ // User namespace sandbox active.
++ kUserNS = 1 << 6,
++
++ // A flag that denotes an invalid sandbox status.
++ kInvalid = 1 << 31,
++ };
++
++ // SandboxLinux Options are a superset of SandboxSecompBPF Options.
++ struct Options : public SandboxSeccompBPF::Options {
++ // When running with a zygote, the namespace sandbox will have already
++ // been engaged prior to initializing SandboxLinux itself, and need not
++ // be done so again. Set to true to indicate that there isn't a zygote
++ // for this process and the step is to be performed here explicitly.
++ bool engage_namespace_sandbox = false;
++
++ // Allow starting the sandbox with multiple threads already running. This
++ // will enable TSYNC for seccomp-BPF, which syncs the seccomp-BPF policy
++ // across all running threads.
++ bool allow_threads_during_sandbox_init = false;
++
++ // Enables the CHECK for open directories. The open directory check is only
++ // useful for the chroot jail (from the semantic layer of the sandbox), and
++ // can safely be disabled if we are only enabling the seccomp-BPF layer.
++ bool check_for_open_directories = true;
++ };
++
++ // Callers can provide this hook to run code right before the policy
++ // is passed to the BPF compiler and the sandbox is engaged. If
++ // pre_sandbox_hook() returns true, the sandbox will be engaged
++ // afterwards, otherwise the process is terminated.
++ using PreSandboxHook = base::OnceCallback<bool(Options)>;
++
++ // Get our singleton instance.
++ static SandboxLinux* GetInstance();
++
++ SandboxLinux(const SandboxLinux&) = delete;
++ SandboxLinux& operator=(const SandboxLinux&) = delete;
++
++ bool SetPledge(const char *pstring, const char *ppath);
++ bool SetUnveil(const std::string process_type, sandbox::mojom::Sandbox sandbox_type);
++
++ // Do some initialization that can only be done before any of the sandboxes
++ // are enabled. If using the setuid sandbox, this should be called manually
++ // before the setuid sandbox is engaged.
++ // Security: When this runs, it is imperative that either InitializeSandbox()
++ // runs as well or that all file descriptors returned in
++ // GetFileDescriptorsToClose() get closed.
++ // Otherwise file descriptors that bypass the security of the setuid sandbox
++ // would be kept open. One must be particularly careful if a process performs
++ // a fork().
++ void PreinitializeSandbox(sandbox::mojom::Sandbox sandbox_type);
++
++ // Check that the current process is the init process of a new PID
++ // namespace and then proceed to drop access to the file system by using
++ // a new unprivileged namespace. This is a layer-1 sandbox.
++ // In order for this sandbox to be effective, it must be "sealed" by calling
++ // InitializeSandbox().
++ void EngageNamespaceSandbox(bool from_zygote);
++
++ // Return a list of file descriptors to close if PreinitializeSandbox() ran
++ // but InitializeSandbox() won't. Avoid using.
++ // TODO(jln): get rid of this hack.
++ std::vector<int> GetFileDescriptorsToClose();
++
++ // Seal an eventual layer-1 sandbox and initialize the layer-2 sandbox with
++ // an adequate policy depending on the process type and command line
++ // arguments.
++ // Currently the layer-2 sandbox is composed of seccomp-bpf and address space
++ // limitations.
++ // This function should only be called without any thread running.
++ bool InitializeSandbox(sandbox::mojom::Sandbox sandbox_type,
++ PreSandboxHook hook,
++ const Options& options);
++
++ // Stop |thread| in a way that can be trusted by the sandbox.
++ void StopThread(base::Thread* thread);
++
++ // Returns the status of the renderer, worker and ppapi sandbox. Can only
++ // be queried after going through PreinitializeSandbox(). This is a bitmask
++ // and uses the constants defined in "enum Status" above. Since the
++ // status needs to be provided before the sandboxes are actually started,
++ // this returns what will actually happen once InitializeSandbox()
++ // is called from inside these processes.
++ int GetStatus();
++
++ static std::string GetSandboxTypeInEnglish(sandbox::mojom::Sandbox sandbox_type);
++
++ // Returns true if the current process is single-threaded or if the number
++ // of threads cannot be determined.
++ bool IsSingleThreaded() const;
++
++ // Returns true if we started Seccomp BPF.
++ bool seccomp_bpf_started() const;
++
++ // Check the policy and eventually start the seccomp-bpf sandbox. This should
++ // never be called with threads started. If we detect that threads have
++ // started we will crash.
++ bool StartSeccompBPF(sandbox::mojom::Sandbox sandbox_type,
++ PreSandboxHook hook,
++ const Options& options);
++
++ // Limit the address space of the current process (and its children) to make
++ // some vulnerabilities harder to exploit. Writes the errno due to setrlimit
++ // (including 0 if no error) into |error|.
++ bool LimitAddressSpace(int* error);
++
++ // Returns a file descriptor to proc. The file descriptor is no longer valid
++ // after the sandbox has been sealed.
++ int proc_fd() const {
++ DCHECK_NE(-1, proc_fd_);
++ return proc_fd_;
++ }
++
++#if BUILDFLAG(USING_SANITIZER)
++ __sanitizer_sandbox_arguments* sanitizer_args() const {
++ return sanitizer_args_.get();
++ };
++#endif
++
++ // A BrokerProcess is a helper that is started before the sandbox is engaged,
++ // typically from a pre-sandbox hook, that will serve requests to access
++ // files over an IPC channel. The client of this runs from a SIGSYS handler
++ // triggered by the seccomp-bpf sandbox.
++ // |client_sandbox_policy| is the policy being run by the client, and is
++ // used to derive the equivalent broker-side policy.
++ // |broker_side_hook| is an alternate pre-sandbox hook to be run before the
++ // broker itself gets sandboxed, to which the broker side policy and
++ // |options| are passed.
++ // Crashes the process if the broker can not be started since continuation
++ // is impossible (and presumably unsafe).
++ // This should never be destroyed, as after the sandbox is started it is
++ // vital to the process.
++#if 0
++ void StartBrokerProcess(
++ const sandbox::syscall_broker::BrokerCommandSet& allowed_command_set,
++ std::vector<sandbox::syscall_broker::BrokerFilePermission> permissions,
++ PreSandboxHook broker_side_hook,
++ const Options& options);
++
++ sandbox::syscall_broker::BrokerProcess* broker_process() const {
++ return broker_process_;
++ }
++#endif
++
++ private:
++ friend struct base::DefaultSingletonTraits<SandboxLinux>;
++
++ SandboxLinux();
++ ~SandboxLinux();
++
++ // We must have been pre_initialized_ before using these.
++ bool seccomp_bpf_supported() const;
++ bool seccomp_bpf_with_tsync_supported() const;
++
++ // Returns true if it can be determined that the current process has open
++ // directories that are not managed by the SandboxLinux class. This would
++ // be a vulnerability as it would allow to bypass the setuid sandbox.
++ bool HasOpenDirectories() const;
++
++ // The last part of the initialization is to make sure any temporary "hole"
++ // in the sandbox is closed. For now, this consists of closing proc_fd_.
++ void SealSandbox();
++
++ // GetStatus() makes promises as to how the sandbox will behave. This
++ // checks that no promises have been broken.
++ void CheckForBrokenPromises(sandbox::mojom::Sandbox sandbox_type);
++
++ // Stop |thread| and make sure it does not appear in /proc/self/tasks/
++ // anymore.
++ void StopThreadAndEnsureNotCounted(base::Thread* thread) const;
++
++ // A file descriptor to /proc. It's dangerous to have it around as it could
++ // allow for sandbox bypasses. It needs to be closed before we consider
++ // ourselves sandboxed.
++ int proc_fd_;
++
++ bool seccomp_bpf_started_;
++ // The value returned by GetStatus(). Gets computed once and then cached.
++ int sandbox_status_flags_;
++ // Did PreinitializeSandbox() run?
++ bool pre_initialized_;
++ bool seccomp_bpf_supported_; // Accurate if pre_initialized_.
++ bool seccomp_bpf_with_tsync_supported_; // Accurate if pre_initialized_.
++ bool yama_is_enforcing_; // Accurate if pre_initialized_.
++ bool initialize_sandbox_ran_; // InitializeSandbox() was called.
++#if BUILDFLAG(USING_SANITIZER)
++ std::unique_ptr<__sanitizer_sandbox_arguments> sanitizer_args_;
++#endif
++ sandbox::syscall_broker::BrokerProcess* broker_process_; // Leaked as global.
++};
++
++} // namespace policy
++} // namespace sandbox
++
++#endif // SANDBOX_POLICY_LINUX_SANDBOX_OPENBSD_H_
diff --git a/devel/electron17/files/patch-sandbox_policy_mojom_sandbox.mojom b/devel/electron17/files/patch-sandbox_policy_mojom_sandbox.mojom
new file mode 100644
index 000000000000..1da1bf0c9fa0
--- /dev/null
+++ b/devel/electron17/files/patch-sandbox_policy_mojom_sandbox.mojom
@@ -0,0 +1,15 @@
+--- sandbox/policy/mojom/sandbox.mojom.orig 2022-05-11 07:16:54 UTC
++++ sandbox/policy/mojom/sandbox.mojom
+@@ -63,6 +63,12 @@ enum Sandbox {
+ [EnableIf=is_fuchsia]
+ kVideoCapture,
+
++ [EnableIf=is_openbsd]
++ kVideoCapture,
++
++ [EnableIf=is_freebsd]
++ kVideoCapture,
++
+ // Allows access to file contents and Windows APIs for parsing icons from PE
+ // files.
+ [EnableIf=is_win]
diff --git a/devel/electron17/files/patch-sandbox_policy_openbsd_sandbox__openbsd.cc b/devel/electron17/files/patch-sandbox_policy_openbsd_sandbox__openbsd.cc
new file mode 100644
index 000000000000..db99617468f8
--- /dev/null
+++ b/devel/electron17/files/patch-sandbox_policy_openbsd_sandbox__openbsd.cc
@@ -0,0 +1,397 @@
+--- sandbox/policy/openbsd/sandbox_openbsd.cc.orig 2022-05-13 07:20:05 UTC
++++ sandbox/policy/openbsd/sandbox_openbsd.cc
+@@ -0,0 +1,394 @@
++// Copyright (c) 2012 The Chromium Authors. All rights reserved.
++// Use of this source code is governed by a BSD-style license that can be
++// found in the LICENSE file.
++
++#include "sandbox/policy/openbsd/sandbox_openbsd.h"
++
++#include <dirent.h>
++#include <fcntl.h>
++#include <stdint.h>
++#include <sys/resource.h>
++#include <sys/stat.h>
++#include <sys/time.h>
++#include <sys/types.h>
++#include <unistd.h>
++#include <util.h>
++
++#include <limits>
++#include <memory>
++#include <string>
++#include <vector>
++
++#include "base/bind.h"
++#include "base/callback_helpers.h"
++#include "base/command_line.h"
++#include "base/debug/stack_trace.h"
++#include "base/feature_list.h"
++#include "base/files/file_path.h"
++#include "base/files/file_util.h"
++#include "base/files/scoped_file.h"
++#include "base/logging.h"
++#include "base/memory/singleton.h"
++#include "base/path_service.h"
++#include "base/posix/eintr_wrapper.h"
++#include "base/strings/string_number_conversions.h"
++#include "base/system/sys_info.h"
++#include "base/time/time.h"
++#include "build/build_config.h"
++#include "sandbox/constants.h"
++#include "sandbox/linux/services/credentials.h"
++#include "sandbox/linux/services/namespace_sandbox.h"
++#include "sandbox/linux/services/proc_util.h"
++#include "sandbox/linux/services/resource_limits.h"
++#include "sandbox/linux/services/thread_helpers.h"
++#include "sandbox/linux/syscall_broker/broker_command.h"
++#include "sandbox/linux/syscall_broker/broker_process.h"
++#include "sandbox/policy/sandbox.h"
++#include "sandbox/policy/sandbox_type.h"
++#include "sandbox/policy/mojom/sandbox.mojom.h"
++#include "sandbox/policy/switches.h"
++#include "sandbox/sandbox_buildflags.h"
++
++#if BUILDFLAG(USING_SANITIZER)
++#include <sanitizer/common_interface_defs.h>
++#endif
++
++#if defined(USE_NSS_CERTS)
++#include "crypto/nss_util.h"
++#endif
++
++#include "ui/gfx/x/connection.h"
++#include "ui/gfx/font_util.h"
++
++#include <X11/Xlib.h>
++
++#define MAXTOKENS 3
++
++#define _UNVEIL_MAIN "/etc/chromium/unveil.main";
++#define _UNVEIL_RENDERER "/etc/chromium/unveil.renderer";
++#define _UNVEIL_GPU "/etc/chromium/unveil.gpu";
++#define _UNVEIL_PLUGIN "/etc/chromium/unveil.plugin";
++#define _UNVEIL_UTILITY "/etc/chromium/unveil.utility";
++#define _UNVEIL_UTILITY_NETWORK "/etc/chromium/unveil.utility_network";
++#define _UNVEIL_UTILITY_AUDIO "/etc/chromium/unveil.utility_audio";
++#define _UNVEIL_UTILITY_VIDEO "/etc/chromium/unveil.utility_video";
++
++namespace sandbox {
++namespace policy {
++
++SandboxLinux::SandboxLinux()
++ : sandbox_status_flags_(kInvalid),
++ pre_initialized_(false),
++ initialize_sandbox_ran_(false),
++ broker_process_(nullptr) {
++}
++
++SandboxLinux::~SandboxLinux() {
++ if (pre_initialized_) {
++ CHECK(initialize_sandbox_ran_);
++ }
++}
++
++SandboxLinux* SandboxLinux::GetInstance() {
++ SandboxLinux* instance = base::Singleton<SandboxLinux>::get();
++ CHECK(instance);
++ return instance;
++}
++
++void SandboxLinux::PreinitializeSandbox(sandbox::mojom::Sandbox sandbox_type) {
++ CHECK(!pre_initialized_);
++#if BUILDFLAG(USING_SANITIZER)
++ // Sanitizers need to open some resources before the sandbox is enabled.
++ // This should not fork, not launch threads, not open a directory.
++ __sanitizer_sandbox_on_notify(sanitizer_args());
++ sanitizer_args_.reset();
++#endif
++ base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
++ const std::string process_type =
++ command_line->GetSwitchValueASCII(switches::kProcessType);
++
++ base::SysInfo::AmountOfPhysicalMemory();
++ base::SysInfo::NumberOfProcessors();
++
++#if defined(USE_NSS_CERTS)
++ // The main process has to initialize the ~/.pki dir which won't work
++ // after unveil(2).
++ if (process_type.empty())
++ crypto::EnsureNSSInit();
++#endif
++
++ // cache the XErrorDB by forcing a read on it
++ {
++ auto* connection = x11::Connection::Get();
++ auto* display = connection->GetXlibDisplay().display();
++
++ char buf[1];
++ XGetErrorDatabaseText(display, "XProtoError", "0", "", buf, base::size(buf));
++ }
++
++ if (process_type.empty()) {
++ base::FilePath cache_directory, local_directory;
++
++ base::PathService::Get(base::DIR_CACHE, &cache_directory);
++ base::PathService::Get(base::DIR_HOME, &local_directory);
++
++ cache_directory = cache_directory.AppendASCII("chromium");
++ local_directory = local_directory.AppendASCII(".local").AppendASCII("share").AppendASCII("applications");
++
++ if (!base::CreateDirectory(cache_directory)) {
++ LOG(ERROR) << "Failed to create " << cache_directory.value() << " directory.";
++ }
++
++ if (!base::CreateDirectory(local_directory)) {
++ LOG(ERROR) << "Failed to create " << local_directory.value() << " directory.";
++ }
++ }
++
++ if (process_type == switches::kRendererProcess)
++ gfx::InitializeFonts();
++
++ if (!command_line->HasSwitch(switches::kDisableUnveil))
++ SetUnveil(process_type, sandbox_type);
++
++ pre_initialized_ = true;
++}
++
++bool SandboxLinux::SetPledge(const char *pstring, const char *ppath) {
++ FILE *fp;
++ char *s = NULL;
++ size_t len = 0;
++ ssize_t read;
++
++ if (pstring != NULL) {
++ if (pledge(pstring, NULL) == -1)
++ goto err;
++ } else if (ppath != NULL) {
++ fp = fopen(ppath, "r");
++ if (fp != NULL) {
++ while ((read = getline(&s, &len, fp)) != -1 ) {
++ if (s[strlen(s)-1] == '\n')
++ s[strlen(s)-1] = '\0';
++ if (pledge(s, NULL) == -1)
++ goto err;
++ }
++ fclose(fp);
++ } else {
++ LOG(ERROR) << "fopen() failed, errno: " << errno;
++ return false;
++ }
++ }
++ return true;
++err:
++ LOG(ERROR) << "pledge() failed, errno: " << errno;
++ return false;
++}
++
++bool SandboxLinux::SetUnveil(const std::string process_type, sandbox::mojom::Sandbox sandbox_type) {
++ FILE *fp;
++ char *s = NULL, *cp = NULL, *home = NULL, **ap, *tokens[MAXTOKENS];
++ char path[PATH_MAX];
++ const char *ufile;
++ size_t len = 0, lineno = 0;
++
++ if (process_type.empty()) {
++ ufile = _UNVEIL_MAIN;
++ } else if (process_type == switches::kRendererProcess) {
++ ufile = _UNVEIL_RENDERER;
++ } else if (process_type == switches::kGpuProcess) {
++ ufile = _UNVEIL_GPU;
++ } else if (process_type == switches::kPpapiPluginProcess) {
++ ufile = _UNVEIL_PLUGIN;
++ } else if (process_type == switches::kUtilityProcess) {
++ if (sandbox_type == sandbox::mojom::Sandbox::kNetwork) {
++ ufile = _UNVEIL_UTILITY_NETWORK;
++ } else if (sandbox_type == sandbox::mojom::Sandbox::kAudio) {
++ ufile = _UNVEIL_UTILITY_AUDIO;
++ } else if (sandbox_type == sandbox::mojom::Sandbox::kVideoCapture) {
++ ufile = _UNVEIL_UTILITY_VIDEO;
++ } else {
++ ufile = _UNVEIL_UTILITY;
++ }
++ }
++
++ fp = fopen(ufile, "r");
++ if (fp != NULL) {
++ while (!feof(fp)) {
++ if ((s = fparseln(fp, &len, &lineno, NULL,
++ FPARSELN_UNESCCOMM | FPARSELN_UNESCCONT)) == NULL) {
++ if (ferror(fp)) {
++ LOG(ERROR) << "ferror(), errno: " << errno;
++ _exit(1);
++ } else {
++ continue;
++ }
++ }
++ cp = s;
++ cp += strspn(cp, " \t\n"); /* eat whitespace */
++ if (cp[0] == '\0')
++ continue;
++
++ for (ap = tokens; ap < &tokens[MAXTOKENS - 1] &&
++ (*ap = strsep(&cp, " \t")) != NULL;) {
++ if (**ap != '\0')
++ ap++;
++ }
++ *ap = NULL;
++
++ if (tokens[1] == NULL) {
++ LOG(ERROR) << ufile << ": line " << lineno << ": must supply value to " << s;
++ _exit(1);
++ }
++
++ if (tokens[0][0] == '~') {
++ if ((home = getenv("HOME")) == NULL || *home == '\0') {
++ LOG(ERROR) << "failed to get home";
++ _exit(1);
++ }
++ memmove(tokens[0], tokens[0] + 1, strlen(tokens[0]));
++ strncpy(path, home, sizeof(path) - 1);
++ path[sizeof(path) - 1] = '\0';
++ strncat(path, tokens[0], sizeof(path) - 1 - strlen(path));
++ } else {
++ strncpy(path, tokens[0], sizeof(path) - 1);
++ path[sizeof(path) - 1] = '\0';
++ }
++
++ if (unveil(path, tokens[1]) == -1) {
++ LOG(ERROR) << "failed unveiling " << path << " with permissions " << tokens[1];
++ _exit(1);
++ } else {
++ VLOG(1) << "unveiling " << path << " with permissions " << tokens[1];
++ }
++ }
++ fclose(fp);
++ } else {
++ LOG(ERROR) << "failed to open " << ufile << " errno: " << errno;
++ _exit(1);
++ }
++
++ return true;
++}
++
++bool SandboxLinux::InitializeSandbox(sandbox::mojom::Sandbox sandbox_type,
++ SandboxLinux::PreSandboxHook hook,
++ const Options& options) {
++ DCHECK(!initialize_sandbox_ran_);
++ initialize_sandbox_ran_ = true;
++
++ base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
++ const std::string process_type =
++ command_line->GetSwitchValueASCII(switches::kProcessType);
++
++ if (command_line->HasSwitch(switches::kNoSandbox))
++ return true;
++
++ VLOG(1) << "SandboxLinux::InitializeSandbox: process_type="
++ << process_type << " sandbox_type=" << GetSandboxTypeInEnglish(sandbox_type);
++
++ // Only one thread is running, pre-initialize if not already done.
++ if (!pre_initialized_)
++ PreinitializeSandbox(sandbox_type);
++
++ // Attempt to limit the future size of the address space of the process.
++ int error = 0;
++ const bool limited_as = LimitAddressSpace(&error);
++ if (error) {
++ // Restore errno. Internally to |LimitAddressSpace|, the errno due to
++ // setrlimit may be lost.
++ errno = error;
++ PCHECK(limited_as);
++ }
++
++ if (process_type.empty()) {
++ // XXX use a file for listing pledges of the main process for now
++ // XXX not having the file is not a fatal error
++ SetPledge(NULL, "/etc/chromium/pledge.main");
++ } else if (process_type == switches::kRendererProcess) {
++ // prot_exec needed by v8
++ // flock needed by sqlite3 locking
++ SetPledge("stdio flock prot_exec recvfd sendfd ps", NULL);
++ } else if (process_type == switches::kGpuProcess) {
++ SetPledge("stdio rpath cpath wpath getpw drm prot_exec recvfd sendfd tmppath", NULL);
++ } else if (process_type == switches::kPpapiPluginProcess) {
++ // prot_exec needed by v8
++ SetPledge("stdio rpath prot_exec recvfd sendfd", NULL);
++ } else if (process_type == switches::kUtilityProcess) {
++ if (sandbox_type == sandbox::mojom::Sandbox::kAudio)
++ SetPledge(NULL, "/etc/chromium/pledge.utility_audio");
++ else if (sandbox_type == sandbox::mojom::Sandbox::kNetwork)
++ SetPledge(NULL, "/etc/chromium/pledge.utility_network");
++ else if (sandbox_type == sandbox::mojom::Sandbox::kVideoCapture)
++ SetPledge(NULL, "/etc/chromium/pledge.utility_video");
++ else
++ SetPledge("stdio rpath cpath wpath fattr flock sendfd recvfd prot_exec", NULL);
++ } else {
++ LOG(ERROR) << "non-pledge()'d process: " << process_type;
++ return false;
++ }
++
++ return true;
++}
++
++bool SandboxLinux::LimitAddressSpace(int* error) {
++#if !defined(ADDRESS_SANITIZER) && !defined(MEMORY_SANITIZER) && \
++ !defined(THREAD_SANITIZER) && !defined(LEAK_SANITIZER)
++ base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
++ if (SandboxTypeFromCommandLine(*command_line) == sandbox::mojom::Sandbox::kNoSandbox) {
++ return false;
++ }
++
++ // Unfortunately, it does not appear possible to set RLIMIT_AS such that it
++ // will both (a) be high enough to support V8's and WebAssembly's address
++ // space requirements while also (b) being low enough to mitigate exploits
++ // using integer overflows that require large allocations, heap spray, or
++ // other memory-hungry attack modes.
++
++ *error = sandbox::ResourceLimits::Lower(
++ RLIMIT_DATA, static_cast<rlim_t>(sandbox::kDataSizeLimit));
++
++ // Cache the resource limit before turning on the sandbox.
++ base::SysInfo::AmountOfVirtualMemory();
++ base::SysInfo::MaxSharedMemorySize();
++
++ return *error == 0;
++#else
++ base::SysInfo::AmountOfVirtualMemory();
++ return false;
++#endif // !defined(ADDRESS_SANITIZER) && !defined(MEMORY_SANITIZER) &&
++ // !defined(THREAD_SANITIZER) && !defined(LEAK_SANITIZER)
++}
++
++// static
++std::string SandboxLinux::GetSandboxTypeInEnglish(sandbox::mojom::Sandbox sandbox_type) {
++ switch (sandbox_type) {
++ case sandbox::mojom::Sandbox::kNoSandbox:
++ return "Unsandboxed";
++ case sandbox::mojom::Sandbox::kRenderer:
++ return "Renderer";
++ case sandbox::mojom::Sandbox::kUtility:
++ return "Utility";
++ case sandbox::mojom::Sandbox::kGpu:
++ return "GPU";
++ case sandbox::mojom::Sandbox::kPpapi:
++ return "PPAPI";
++ case sandbox::mojom::Sandbox::kNetwork:
++ return "Network";
++ case sandbox::mojom::Sandbox::kCdm:
++ return "CDM";
++ case sandbox::mojom::Sandbox::kPrintCompositor:
++ return "Print Compositor";
++ case sandbox::mojom::Sandbox::kAudio:
++ return "Audio";
++ case sandbox::mojom::Sandbox::kSpeechRecognition:
++ return "Speech Recognition";
++ case sandbox::mojom::Sandbox::kService:
++ return "Service";
++ case sandbox::mojom::Sandbox::kVideoCapture:
++ return "Video Capture";
++ default:
++ return "Unknown";
++ }
++}
++
++} // namespace policy
++} // namespace sandbox
diff --git a/devel/electron17/files/patch-sandbox_policy_openbsd_sandbox__openbsd.h b/devel/electron17/files/patch-sandbox_policy_openbsd_sandbox__openbsd.h
new file mode 100644
index 000000000000..db2564358ec1
--- /dev/null
+++ b/devel/electron17/files/patch-sandbox_policy_openbsd_sandbox__openbsd.h
@@ -0,0 +1,281 @@
+--- sandbox/policy/openbsd/sandbox_openbsd.h.orig 2022-05-13 07:20:05 UTC
++++ sandbox/policy/openbsd/sandbox_openbsd.h
+@@ -0,0 +1,278 @@
++// Copyright (c) 2012 The Chromium Authors. All rights reserved.
++// Use of this source code is governed by a BSD-style license that can be
++// found in the LICENSE file.
++#ifndef SANDBOX_POLICY_LINUX_SANDBOX_OPENBSD_H_
++#define SANDBOX_POLICY_LINUX_SANDBOX_OPENBSD_H_
++
++#include <memory>
++#include <string>
++#include <vector>
++
++#include "base/logging.h"
++#include "base/posix/global_descriptors.h"
++#include "sandbox/policy/export.h"
++#include "sandbox/policy/linux/sandbox_seccomp_bpf_linux.h"
++#include "sandbox/policy/mojom/sandbox.mojom.h"
++#include "sandbox/policy/sanitizer_buildflags.h"
++
++#if BUILDFLAG(USING_SANITIZER)
++#include <sanitizer/common_interface_defs.h>
++#endif
++
++namespace base {
++template <typename T>
++struct DefaultSingletonTraits;
++class Thread;
++} // namespace base
++
++namespace sandbox {
++namespace syscall_broker {
++class BrokerProcess;
++} // namespace syscall_broker
++} // namespace sandbox
++
++namespace sandbox {
++namespace policy {
++
++// A singleton class to represent and change our sandboxing state for the
++// three main Linux sandboxes.
++// The sandboxing model allows using two layers of sandboxing. The first layer
++// can be implemented either with unprivileged namespaces or with the setuid
++// sandbox. This class provides a way to engage the namespace sandbox, but does
++// not deal with the legacy setuid sandbox directly.
++// The second layer is mainly based on seccomp-bpf and is engaged with
++// InitializeSandbox(). InitializeSandbox() is also responsible for "sealing"
++// the first layer of sandboxing. That is, InitializeSandbox must always be
++// called to have any meaningful sandboxing at all.
++class SANDBOX_POLICY_EXPORT SandboxLinux {
++ public:
++ // This is a list of sandbox IPC methods which the renderer may send to the
++ // sandbox host. See
++ // https://chromium.googlesource.com/chromium/src/+/master/docs/linux_sandbox_ipc.md
++ // This isn't the full list, values < 32 are reserved for methods called from
++ // Skia, and values < 64 are reserved for libc_interceptor.cc.
++ enum LinuxSandboxIPCMethods {
++ DEPRECATED_METHOD_GET_FALLBACK_FONT_FOR_CHAR = 64,
++ DEPRECATED_METHOD_GET_CHILD_WITH_INODE,
++ DEPRECATED_METHOD_GET_STYLE_FOR_STRIKE,
++ METHOD_MAKE_SHARED_MEMORY_SEGMENT,
++ DEPRECATED_METHOD_MATCH_WITH_FALLBACK,
++ };
++
++ // These form a bitmask which describes the conditions of the Linux sandbox.
++ // Note: this doesn't strictly give you the current status, it states
++ // what will be enabled when the relevant processes are initialized.
++ enum Status {
++ // SUID sandbox active.
++ kSUID = 1 << 0,
++
++ // Sandbox is using a new PID namespace.
++ kPIDNS = 1 << 1,
++
++ // Sandbox is using a new network namespace.
++ kNetNS = 1 << 2,
++
++ // seccomp-bpf sandbox active.
++ kSeccompBPF = 1 << 3,
++
++ // The Yama LSM module is present and enforcing.
++ kYama = 1 << 4,
++
++ // seccomp-bpf sandbox is active and the kernel supports TSYNC.
++ kSeccompTSYNC = 1 << 5,
++
++ // User namespace sandbox active.
++ kUserNS = 1 << 6,
++
++ // A flag that denotes an invalid sandbox status.
++ kInvalid = 1 << 31,
++ };
++
++ // SandboxLinux Options are a superset of SandboxSecompBPF Options.
++ struct Options : public SandboxSeccompBPF::Options {
++ // When running with a zygote, the namespace sandbox will have already
++ // been engaged prior to initializing SandboxLinux itself, and need not
++ // be done so again. Set to true to indicate that there isn't a zygote
++ // for this process and the step is to be performed here explicitly.
++ bool engage_namespace_sandbox = false;
++
++ // Allow starting the sandbox with multiple threads already running. This
++ // will enable TSYNC for seccomp-BPF, which syncs the seccomp-BPF policy
++ // across all running threads.
++ bool allow_threads_during_sandbox_init = false;
++
++ // Enables the CHECK for open directories. The open directory check is only
++ // useful for the chroot jail (from the semantic layer of the sandbox), and
++ // can safely be disabled if we are only enabling the seccomp-BPF layer.
++ bool check_for_open_directories = true;
++ };
++
++ // Callers can provide this hook to run code right before the policy
++ // is passed to the BPF compiler and the sandbox is engaged. If
++ // pre_sandbox_hook() returns true, the sandbox will be engaged
++ // afterwards, otherwise the process is terminated.
++ using PreSandboxHook = base::OnceCallback<bool(Options)>;
++
++ // Get our singleton instance.
++ static SandboxLinux* GetInstance();
++
++ SandboxLinux(const SandboxLinux&) = delete;
++ SandboxLinux& operator=(const SandboxLinux&) = delete;
++
++ bool SetPledge(const char *pstring, const char *ppath);
++ bool SetUnveil(const std::string process_type, sandbox::mojom::Sandbox sandbox_type);
++
++ // Do some initialization that can only be done before any of the sandboxes
++ // are enabled. If using the setuid sandbox, this should be called manually
++ // before the setuid sandbox is engaged.
++ // Security: When this runs, it is imperative that either InitializeSandbox()
++ // runs as well or that all file descriptors returned in
++ // GetFileDescriptorsToClose() get closed.
++ // Otherwise file descriptors that bypass the security of the setuid sandbox
++ // would be kept open. One must be particularly careful if a process performs
++ // a fork().
++ void PreinitializeSandbox(sandbox::mojom::Sandbox sandbox_type);
++
++ // Check that the current process is the init process of a new PID
++ // namespace and then proceed to drop access to the file system by using
++ // a new unprivileged namespace. This is a layer-1 sandbox.
++ // In order for this sandbox to be effective, it must be "sealed" by calling
++ // InitializeSandbox().
++ void EngageNamespaceSandbox(bool from_zygote);
++
++ // Return a list of file descriptors to close if PreinitializeSandbox() ran
++ // but InitializeSandbox() won't. Avoid using.
++ // TODO(jln): get rid of this hack.
++ std::vector<int> GetFileDescriptorsToClose();
++
++ // Seal an eventual layer-1 sandbox and initialize the layer-2 sandbox with
++ // an adequate policy depending on the process type and command line
++ // arguments.
++ // Currently the layer-2 sandbox is composed of seccomp-bpf and address space
++ // limitations.
++ // This function should only be called without any thread running.
++ bool InitializeSandbox(sandbox::mojom::Sandbox sandbox_type,
++ PreSandboxHook hook,
++ const Options& options);
++
++ // Stop |thread| in a way that can be trusted by the sandbox.
++ void StopThread(base::Thread* thread);
++
++ // Returns the status of the renderer, worker and ppapi sandbox. Can only
++ // be queried after going through PreinitializeSandbox(). This is a bitmask
++ // and uses the constants defined in "enum Status" above. Since the
++ // status needs to be provided before the sandboxes are actually started,
++ // this returns what will actually happen once InitializeSandbox()
++ // is called from inside these processes.
++ int GetStatus();
++
++ static std::string GetSandboxTypeInEnglish(sandbox::mojom::Sandbox sandbox_type);
++
++ // Returns true if the current process is single-threaded or if the number
++ // of threads cannot be determined.
++ bool IsSingleThreaded() const;
++
++ // Returns true if we started Seccomp BPF.
++ bool seccomp_bpf_started() const;
++
++ // Check the policy and eventually start the seccomp-bpf sandbox. This should
++ // never be called with threads started. If we detect that threads have
++ // started we will crash.
++ bool StartSeccompBPF(sandbox::mojom::Sandbox sandbox_type,
++ PreSandboxHook hook,
++ const Options& options);
++
++ // Limit the address space of the current process (and its children) to make
++ // some vulnerabilities harder to exploit. Writes the errno due to setrlimit
++ // (including 0 if no error) into |error|.
++ bool LimitAddressSpace(int* error);
++
++ // Returns a file descriptor to proc. The file descriptor is no longer valid
++ // after the sandbox has been sealed.
++ int proc_fd() const {
++ DCHECK_NE(-1, proc_fd_);
++ return proc_fd_;
++ }
++
++#if BUILDFLAG(USING_SANITIZER)
++ __sanitizer_sandbox_arguments* sanitizer_args() const {
++ return sanitizer_args_.get();
++ };
++#endif
++
++ // A BrokerProcess is a helper that is started before the sandbox is engaged,
++ // typically from a pre-sandbox hook, that will serve requests to access
++ // files over an IPC channel. The client of this runs from a SIGSYS handler
++ // triggered by the seccomp-bpf sandbox.
++ // |client_sandbox_policy| is the policy being run by the client, and is
++ // used to derive the equivalent broker-side policy.
++ // |broker_side_hook| is an alternate pre-sandbox hook to be run before the
++ // broker itself gets sandboxed, to which the broker side policy and
++ // |options| are passed.
++ // Crashes the process if the broker can not be started since continuation
++ // is impossible (and presumably unsafe).
++ // This should never be destroyed, as after the sandbox is started it is
++ // vital to the process.
++#if 0
++ void StartBrokerProcess(
++ const sandbox::syscall_broker::BrokerCommandSet& allowed_command_set,
++ std::vector<sandbox::syscall_broker::BrokerFilePermission> permissions,
++ PreSandboxHook broker_side_hook,
++ const Options& options);
++
++ sandbox::syscall_broker::BrokerProcess* broker_process() const {
++ return broker_process_;
++ }
++#endif
++
++ private:
++ friend struct base::DefaultSingletonTraits<SandboxLinux>;
++
++ SandboxLinux();
++ ~SandboxLinux();
++
++ // We must have been pre_initialized_ before using these.
++ bool seccomp_bpf_supported() const;
++ bool seccomp_bpf_with_tsync_supported() const;
++
++ // Returns true if it can be determined that the current process has open
++ // directories that are not managed by the SandboxLinux class. This would
++ // be a vulnerability as it would allow to bypass the setuid sandbox.
++ bool HasOpenDirectories() const;
++
++ // The last part of the initialization is to make sure any temporary "hole"
++ // in the sandbox is closed. For now, this consists of closing proc_fd_.
++ void SealSandbox();
++
++ // GetStatus() makes promises as to how the sandbox will behave. This
++ // checks that no promises have been broken.
++ void CheckForBrokenPromises(sandbox::mojom::Sandbox sandbox_type);
++
++ // Stop |thread| and make sure it does not appear in /proc/self/tasks/
++ // anymore.
++ void StopThreadAndEnsureNotCounted(base::Thread* thread) const;
++
++ // A file descriptor to /proc. It's dangerous to have it around as it could
++ // allow for sandbox bypasses. It needs to be closed before we consider
++ // ourselves sandboxed.
++ int proc_fd_;
++
++ bool seccomp_bpf_started_;
++ // The value returned by GetStatus(). Gets computed once and then cached.
++ int sandbox_status_flags_;
++ // Did PreinitializeSandbox() run?
++ bool pre_initialized_;
++ bool seccomp_bpf_supported_; // Accurate if pre_initialized_.
++ bool seccomp_bpf_with_tsync_supported_; // Accurate if pre_initialized_.
++ bool yama_is_enforcing_; // Accurate if pre_initialized_.
++ bool initialize_sandbox_ran_; // InitializeSandbox() was called.
++#if BUILDFLAG(USING_SANITIZER)
++ std::unique_ptr<__sanitizer_sandbox_arguments> sanitizer_args_;
++#endif
++ sandbox::syscall_broker::BrokerProcess* broker_process_; // Leaked as global.
++};
++
++} // namespace policy
++} // namespace sandbox
++
++#endif // SANDBOX_POLICY_LINUX_SANDBOX_OPENBSD_H_
diff --git a/devel/electron17/files/patch-sandbox_policy_sandbox.cc b/devel/electron17/files/patch-sandbox_policy_sandbox.cc
new file mode 100644
index 000000000000..d58399858696
--- /dev/null
+++ b/devel/electron17/files/patch-sandbox_policy_sandbox.cc
@@ -0,0 +1,22 @@
+--- sandbox/policy/sandbox.cc.orig 2022-05-11 07:16:54 UTC
++++ sandbox/policy/sandbox.cc
+@@ -17,6 +17,10 @@
+ #include "sandbox/policy/linux/sandbox_linux.h"
+ #endif // defined(OS_LINUX) || defined(OS_CHROMEOS)
+
++#if defined(OS_BSD)
++#include "sandbox/policy/openbsd/sandbox_openbsd.h"
++#endif // defined(OS_BSD)
++
+ #if defined(OS_MAC)
+ #include "sandbox/mac/seatbelt.h"
+ #endif // defined(OS_MAC)
+@@ -30,7 +34,7 @@
+ namespace sandbox {
+ namespace policy {
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ bool Sandbox::Initialize(sandbox::mojom::Sandbox sandbox_type,
+ SandboxLinux::PreSandboxHook hook,
+ const SandboxLinux::Options& options) {
diff --git a/devel/electron17/files/patch-sandbox_policy_sandbox.h b/devel/electron17/files/patch-sandbox_policy_sandbox.h
new file mode 100644
index 000000000000..d5c98a9d779d
--- /dev/null
+++ b/devel/electron17/files/patch-sandbox_policy_sandbox.h
@@ -0,0 +1,22 @@
+--- sandbox/policy/sandbox.h.orig 2022-05-11 07:16:54 UTC
++++ sandbox/policy/sandbox.h
+@@ -12,6 +12,10 @@
+ #include "sandbox/policy/linux/sandbox_linux.h"
+ #endif
+
++#if defined(OS_BSD)
++#include "sandbox/policy/openbsd/sandbox_openbsd.h"
++#endif
++
+ namespace sandbox {
+ namespace mojom {
+ enum class Sandbox;
+@@ -32,7 +36,7 @@ namespace policy {
+
+ class SANDBOX_POLICY_EXPORT Sandbox {
+ public:
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ static bool Initialize(sandbox::mojom::Sandbox sandbox_type,
+ SandboxLinux::PreSandboxHook hook,
+ const SandboxLinux::Options& options);
diff --git a/devel/electron17/files/patch-sandbox_policy_sandbox__type.cc b/devel/electron17/files/patch-sandbox_policy_sandbox__type.cc
new file mode 100644
index 000000000000..0c304b371432
--- /dev/null
+++ b/devel/electron17/files/patch-sandbox_policy_sandbox__type.cc
@@ -0,0 +1,38 @@
+--- sandbox/policy/sandbox_type.cc.orig 2022-05-11 07:16:54 UTC
++++ sandbox/policy/sandbox_type.cc
+@@ -39,7 +39,7 @@ bool IsUnsandboxedSandboxType(Sandbox sandbox_type) {
+ #endif
+ case Sandbox::kAudio:
+ return false;
+-#if defined(OS_FUCHSIA)
++#if defined(OS_FUCHSIA) || defined(OS_BSD)
+ case Sandbox::kVideoCapture:
+ return false;
+ #endif
+@@ -120,7 +120,7 @@ void SetCommandLineFlagsForSandboxType(base::CommandLi
+ #endif
+ case Sandbox::kPrintCompositor:
+ case Sandbox::kAudio:
+-#if defined(OS_FUCHSIA)
++#if defined(OS_FUCHSIA) || defined(OS_BSD)
+ case Sandbox::kVideoCapture:
+ #endif
+ #if defined(OS_WIN)
+@@ -248,7 +248,7 @@ std::string StringFromUtilitySandboxType(Sandbox sandb
+ return switches::kUtilitySandbox;
+ case Sandbox::kAudio:
+ return switches::kAudioSandbox;
+-#if defined(OS_FUCHSIA)
++#if defined(OS_FUCHSIA) || defined(OS_BSD)
+ case Sandbox::kVideoCapture:
+ return switches::kVideoCaptureSandbox;
+ #endif
+@@ -352,7 +352,7 @@ sandbox::mojom::Sandbox UtilitySandboxTypeFromString(
+ return Sandbox::kAudio;
+ if (sandbox_string == switches::kSpeechRecognitionSandbox)
+ return Sandbox::kSpeechRecognition;
+-#if defined(OS_FUCHSIA)
++#if defined(OS_FUCHSIA) || defined(OS_BSD)
+ if (sandbox_string == switches::kVideoCaptureSandbox)
+ return Sandbox::kVideoCapture;
+ #endif
diff --git a/devel/electron17/files/patch-sandbox_policy_switches.cc b/devel/electron17/files/patch-sandbox_policy_switches.cc
new file mode 100644
index 000000000000..2af5a946d574
--- /dev/null
+++ b/devel/electron17/files/patch-sandbox_policy_switches.cc
@@ -0,0 +1,13 @@
+--- sandbox/policy/switches.cc.orig 2022-05-11 07:16:54 UTC
++++ sandbox/policy/switches.cc
+@@ -94,7 +94,9 @@ const char kGpuSandboxFailuresFatal[] = "gpu-sandbox-f
+ // Meant to be used as a browser-level switch for testing purposes only.
+ const char kNoSandbox[] = "no-sandbox";
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++const char kDisableUnveil[] = "disable-unveil";
++
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // Instructs the zygote to launch without a sandbox. Processes forked from this
+ // type of zygote will apply their own custom sandboxes later.
+ const char kNoZygoteSandbox[] = "no-zygote-sandbox";
diff --git a/devel/electron17/files/patch-sandbox_policy_switches.h b/devel/electron17/files/patch-sandbox_policy_switches.h
new file mode 100644
index 000000000000..9d15e462cd4f
--- /dev/null
+++ b/devel/electron17/files/patch-sandbox_policy_switches.h
@@ -0,0 +1,12 @@
+--- sandbox/policy/switches.h.orig 2022-05-11 07:16:54 UTC
++++ sandbox/policy/switches.h
+@@ -70,7 +70,8 @@ SANDBOX_POLICY_EXPORT extern const char kDisableSetuid
+ SANDBOX_POLICY_EXPORT extern const char kGpuSandboxAllowSysVShm[];
+ SANDBOX_POLICY_EXPORT extern const char kGpuSandboxFailuresFatal[];
+ SANDBOX_POLICY_EXPORT extern const char kNoSandbox[];
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++SANDBOX_POLICY_EXPORT extern const char kDisableUnveil[];
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ SANDBOX_POLICY_EXPORT extern const char kNoZygoteSandbox[];
+ #endif
+ #if defined(OS_WIN)
diff --git a/devel/electron17/files/patch-services_audio_audio__sandbox__hook__linux.cc b/devel/electron17/files/patch-services_audio_audio__sandbox__hook__linux.cc
new file mode 100644
index 000000000000..cea2cbbef696
--- /dev/null
+++ b/devel/electron17/files/patch-services_audio_audio__sandbox__hook__linux.cc
@@ -0,0 +1,31 @@
+--- services/audio/audio_sandbox_hook_linux.cc.orig 2022-05-11 07:00:53 UTC
++++ services/audio/audio_sandbox_hook_linux.cc
+@@ -143,6 +143,7 @@ void AddPulseAudioFilePermissions(
+ }
+ #endif
+
++#if !defined(OS_BSD)
+ std::vector<BrokerFilePermission> GetAudioFilePermissions() {
+ std::vector<BrokerFilePermission> permissions{
+ BrokerFilePermission::ReadOnly("/dev/urandom"),
+@@ -171,10 +172,12 @@ void LoadAudioLibraries() {
+ }
+ }
+ }
++#endif
+
+ } // namespace
+
+ bool AudioPreSandboxHook(sandbox::policy::SandboxLinux::Options options) {
++#if !defined(OS_BSD)
+ LoadAudioLibraries();
+ auto* instance = sandbox::policy::SandboxLinux::GetInstance();
+ instance->StartBrokerProcess(MakeBrokerCommandSet({
+@@ -194,6 +197,7 @@ bool AudioPreSandboxHook(sandbox::policy::SandboxLinux
+ // TODO(https://crbug.com/850878) enable namespace sandbox. Currently, if
+ // enabled, connect() on pulse native socket fails with ENOENT (called from
+ // pa_context_connect).
++#endif
+
+ return true;
+ }
diff --git a/devel/electron17/files/patch-services_audio_audio__sandbox__hook__linux.h b/devel/electron17/files/patch-services_audio_audio__sandbox__hook__linux.h
new file mode 100644
index 000000000000..84b2e0f3a9ed
--- /dev/null
+++ b/devel/electron17/files/patch-services_audio_audio__sandbox__hook__linux.h
@@ -0,0 +1,14 @@
+--- services/audio/audio_sandbox_hook_linux.h.orig 2022-05-11 07:00:53 UTC
++++ services/audio/audio_sandbox_hook_linux.h
+@@ -5,7 +5,11 @@
+ #ifndef SERVICES_AUDIO_AUDIO_SANDBOX_HOOK_LINUX_H_
+ #define SERVICES_AUDIO_AUDIO_SANDBOX_HOOK_LINUX_H_
+
++#if defined(OS_BSD)
++#include "sandbox/policy/openbsd/sandbox_openbsd.h"
++#else
+ #include "sandbox/policy/linux/sandbox_linux.h"
++#endif
+
+ namespace audio {
+
diff --git a/devel/electron17/files/patch-services_cert__verifier_cert__verifier__creation.cc b/devel/electron17/files/patch-services_cert__verifier_cert__verifier__creation.cc
new file mode 100644
index 000000000000..6ce1fc38f8c6
--- /dev/null
+++ b/devel/electron17/files/patch-services_cert__verifier_cert__verifier__creation.cc
@@ -0,0 +1,29 @@
+--- services/cert_verifier/cert_verifier_creation.cc.orig 2021-11-19 04:25:21 UTC
++++ services/cert_verifier/cert_verifier_creation.cc
+@@ -86,7 +86,7 @@ scoped_refptr<net::CertVerifyProc> CreateCertVerifyPro
+ scoped_refptr<net::CertVerifyProc> CreateOldDefaultWithoutCaching(
+ scoped_refptr<net::CertNetFetcher> cert_net_fetcher) {
+ scoped_refptr<net::CertVerifyProc> verify_proc;
+-#if defined(OS_FUCHSIA) || defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_FUCHSIA) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ verify_proc =
+ net::CertVerifyProc::CreateBuiltinVerifyProc(std::move(cert_net_fetcher));
+ #else
+@@ -104,7 +104,7 @@ scoped_refptr<net::CertVerifyProc> CreateNewDefaultWit
+ scoped_refptr<net::CertNetFetcher> cert_net_fetcher) {
+ scoped_refptr<net::CertVerifyProc> verify_proc;
+ #if BUILDFLAG(CHROME_ROOT_STORE_SUPPORTED) && \
+- (defined(OS_LINUX) || defined(OS_WIN))
++ (defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD))
+ verify_proc = net::CreateCertVerifyProcBuiltin(
+ std::move(cert_net_fetcher), net::CreateSslSystemTrustStoreChromeRoot());
+ #elif BUILDFLAG(BUILTIN_CERT_VERIFIER_FEATURE_SUPPORTED)
+@@ -120,7 +120,7 @@ scoped_refptr<net::CertVerifyProc> CreateNewDefaultWit
+
+ bool IsUsingCertNetFetcher() {
+ #if defined(OS_ANDROID) || defined(OS_FUCHSIA) || defined(OS_CHROMEOS) || \
+- defined(OS_LINUX) || \
++ defined(OS_LINUX) || defined(OS_BSD) || \
+ BUILDFLAG(TRIAL_COMPARISON_CERT_VERIFIER_SUPPORTED) || \
+ BUILDFLAG(BUILTIN_CERT_VERIFIER_FEATURE_SUPPORTED)
+ return true;
diff --git a/devel/electron17/files/patch-services_device_geolocation_location__arbitrator.cc b/devel/electron17/files/patch-services_device_geolocation_location__arbitrator.cc
new file mode 100644
index 000000000000..7d27fe8b90c0
--- /dev/null
+++ b/devel/electron17/files/patch-services_device_geolocation_location__arbitrator.cc
@@ -0,0 +1,11 @@
+--- services/device/geolocation/location_arbitrator.cc.orig 2021-09-14 01:52:00 UTC
++++ services/device/geolocation/location_arbitrator.cc
+@@ -161,7 +161,7 @@ LocationArbitrator::NewNetworkLocationProvider(
+
+ std::unique_ptr<LocationProvider>
+ LocationArbitrator::NewSystemLocationProvider() {
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_FUCHSIA)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ return nullptr;
+ #else
+ return device::NewSystemLocationProvider(main_task_runner_,
diff --git a/devel/electron17/files/patch-services_device_hid_BUILD.gn b/devel/electron17/files/patch-services_device_hid_BUILD.gn
new file mode 100644
index 000000000000..db4e8e04e757
--- /dev/null
+++ b/devel/electron17/files/patch-services_device_hid_BUILD.gn
@@ -0,0 +1,28 @@
+--- services/device/hid/BUILD.gn.orig 2022-05-11 07:16:54 UTC
++++ services/device/hid/BUILD.gn
+@@ -33,6 +33,25 @@ source_set("hid") {
+ "//services/device/public/mojom",
+ ]
+
++ if (is_openbsd) {
++ sources += [
++ "hid_connection_fido.cc",
++ "hid_connection_fido.h",
++ "hid_service_fido.cc",
++ "hid_service_fido.h",
++ ]
++ libs = ["fido2", "cbor", "usbhid", "crypto", "util"]
++ }
++
++ if (is_freebsd) {
++ sources += [
++ "hid_connection_freebsd.cc",
++ "hid_connection_freebsd.h",
++ "hid_service_freebsd.cc",
++ "hid_service_freebsd.h",
++ ]
++ }
++
+ if ((is_linux || is_chromeos) && use_udev) {
+ sources += [
+ "hid_connection_linux.cc",
diff --git a/devel/electron17/files/patch-services_device_hid_hid__connection__fido.cc b/devel/electron17/files/patch-services_device_hid_hid__connection__fido.cc
new file mode 100644
index 000000000000..aa6835028577
--- /dev/null
+++ b/devel/electron17/files/patch-services_device_hid_hid__connection__fido.cc
@@ -0,0 +1,201 @@
+--- services/device/hid/hid_connection_fido.cc.orig 2022-05-13 07:20:05 UTC
++++ services/device/hid/hid_connection_fido.cc
+@@ -0,0 +1,198 @@
++// Copyright (c) 2020 The Chromium Authors. All rights reserved.
++// Use of this source code is governed by a BSD-style license that can be
++// found in the LICENSE file.
++
++#include "services/device/hid/hid_connection_fido.h"
++
++#include "base/bind.h"
++#include "base/files/file_descriptor_watcher_posix.h"
++#include "base/location.h"
++#include "base/numerics/safe_math.h"
++#include "base/posix/eintr_wrapper.h"
++#include "base/task/post_task.h"
++#include "base/task/single_thread_task_runner.h"
++#include "base/threading/scoped_blocking_call.h"
++#include "base/threading/thread_restrictions.h"
++#include "base/threading/thread_task_runner_handle.h"
++#include "components/device_event_log/device_event_log.h"
++#include "services/device/hid/hid_service.h"
++
++namespace device {
++
++class HidConnectionFido::BlockingTaskHelper {
++public:
++ BlockingTaskHelper(base::ScopedFD fd,
++ scoped_refptr<HidDeviceInfo> device_info,
++ base::WeakPtr<HidConnectionFido> connection)
++ : fd_(std::move(fd)),
++ // Report buffers must always have room for the report ID.
++ report_buffer_size_(device_info->max_input_report_size() + 1),
++ has_report_id_(device_info->has_report_id()), connection_(connection),
++ origin_task_runner_(base::ThreadTaskRunnerHandle::Get()) {
++ DETACH_FROM_SEQUENCE(sequence_checker_);
++ }
++
++ BlockingTaskHelper(const BlockingTaskHelper&) = delete;
++ BlockingTaskHelper& operator=(const BlockingTaskHelper&) = delete;
++
++ ~BlockingTaskHelper() { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); }
++
++ // Starts the FileDescriptorWatcher that reads input events from the device.
++ // Must be called on a thread that has a base::MessageLoopForIO.
++ void Start() {
++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
++ base::internal::AssertBlockingAllowed();
++
++ file_watcher_ = base::FileDescriptorWatcher::WatchReadable(
++ fd_.get(), base::BindRepeating(&BlockingTaskHelper::OnFileCanReadWithoutBlocking,
++ base::Unretained(this)));
++ }
++
++ void Write(scoped_refptr<base::RefCountedBytes> buffer,
++ WriteCallback callback) {
++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
++ base::ScopedBlockingCall scoped_blocking_call(
++ FROM_HERE, base::BlockingType::MAY_BLOCK);
++
++ auto data = buffer->front();
++ size_t size = buffer->size();
++ // if report id is 0, it shouldn't be included
++ if (data[0] == 0) {
++ data++;
++ size--;
++ }
++
++ ssize_t result = HANDLE_EINTR(write(fd_.get(), data, size));
++ bool success = static_cast<size_t>(result) == size;
++ if (!success) {
++ HID_LOG(EVENT) << "HID write failed: " << result << " != " << size;
++ }
++ origin_task_runner_->PostTask(FROM_HERE,
++ base::BindOnce(std::move(callback), success));
++ }
++
++ void GetFeatureReport(uint8_t report_id,
++ scoped_refptr<base::RefCountedBytes> buffer,
++ ReadCallback callback) {
++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
++ base::ScopedBlockingCall scoped_blocking_call(
++ FROM_HERE, base::BlockingType::MAY_BLOCK);
++ HID_PLOG(EVENT) << "GendFeatureReport not implemented on OpenBSD";
++ origin_task_runner_->PostTask(
++ FROM_HERE, base::BindOnce(std::move(callback), false, nullptr, 0));
++ }
++
++ void SendFeatureReport(scoped_refptr<base::RefCountedBytes> buffer,
++ WriteCallback callback) {
++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
++ HID_PLOG(EVENT) << "SendFeatureReport not implemented on OpenBSD";
++ origin_task_runner_->PostTask(FROM_HERE,
++ base::BindOnce(std::move(callback), false));
++ }
++
++private:
++ void OnFileCanReadWithoutBlocking() {
++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
++
++ scoped_refptr<base::RefCountedBytes> buffer(
++ new base::RefCountedBytes(report_buffer_size_));
++ unsigned char *data = buffer->front();
++ size_t length = report_buffer_size_;
++ if (!has_report_id_) {
++ // OpenBSD will not prefix the buffer with a report ID if report IDs are
++ // not used by the device. Prefix the buffer with 0.
++ *data++ = 0;
++ length--;
++ }
++
++ ssize_t bytes_read = HANDLE_EINTR(read(fd_.get(), data, length));
++ if (bytes_read < 0) {
++ if (errno != EAGAIN) {
++ HID_PLOG(EVENT) << "Read failed";
++ // This assumes that the error is unrecoverable and disables reading
++ // from the device until it has been re-opened.
++ // TODO(reillyg): Investigate starting and stopping the file descriptor
++ // watcher in response to pending read requests so that per-request
++ // errors can be returned to the client.
++ file_watcher_.reset();
++ }
++ return;
++ }
++ if (!has_report_id_) {
++ // Behave as if the byte prefixed above as the the report ID was read.
++ bytes_read++;
++ }
++
++ origin_task_runner_->PostTask(
++ FROM_HERE, base::BindOnce(&HidConnectionFido::ProcessInputReport,
++ connection_, buffer, bytes_read));
++ }
++
++ SEQUENCE_CHECKER(sequence_checker_);
++ base::ScopedFD fd_;
++ const size_t report_buffer_size_;
++ const bool has_report_id_;
++ base::WeakPtr<HidConnectionFido> connection_;
++ const scoped_refptr<base::SequencedTaskRunner> origin_task_runner_;
++ std::unique_ptr<base::FileDescriptorWatcher::Controller> file_watcher_;
++};
++
++HidConnectionFido::HidConnectionFido(
++ scoped_refptr<HidDeviceInfo> device_info, base::ScopedFD fd,
++ scoped_refptr<base::SequencedTaskRunner> blocking_task_runner,
++ bool allow_protected_reports, bool allow_fido_reports)
++ : HidConnection(device_info, allow_protected_reports, allow_fido_reports),
++ blocking_task_runner_(std::move(blocking_task_runner)),
++ weak_factory_(this),
++ helper_(std::make_unique<BlockingTaskHelper>(
++ std::move(fd), device_info, weak_factory_.GetWeakPtr())) {
++ blocking_task_runner_->PostTask(
++ FROM_HERE, base::BindOnce(&BlockingTaskHelper::Start,
++ base::Unretained(helper_.get())));
++}
++
++HidConnectionFido::~HidConnectionFido() = default;
++
++void HidConnectionFido::PlatformClose() {
++ // By closing the device on the blocking task runner 1) the requirement that
++ // base::ScopedFD is destroyed on a thread where I/O is allowed is satisfied
++ // and 2) any tasks posted to this task runner that refer to this file will
++ // complete before it is closed.
++ blocking_task_runner_->DeleteSoon(FROM_HERE, helper_.release());
++}
++
++void HidConnectionFido::PlatformWrite(
++ scoped_refptr<base::RefCountedBytes> buffer, WriteCallback callback) {
++ blocking_task_runner_->PostTask(
++ FROM_HERE, base::BindOnce(&BlockingTaskHelper::Write,
++ base::Unretained(helper_.get()), buffer,
++ std::move(callback)));
++}
++
++void HidConnectionFido::PlatformGetFeatureReport(uint8_t report_id,
++ ReadCallback callback) {
++ // The first byte of the destination buffer is the report ID being requested
++ // and is overwritten by the feature report.
++ DCHECK_GT(device_info()->max_feature_report_size(), 0u);
++ scoped_refptr<base::RefCountedBytes> buffer(
++ new base::RefCountedBytes(device_info()->max_feature_report_size() + 1));
++ if (report_id != 0)
++ buffer->data()[0] = report_id;
++
++ blocking_task_runner_->PostTask(
++ FROM_HERE, base::BindOnce(&BlockingTaskHelper::GetFeatureReport,
++ base::Unretained(helper_.get()), report_id,
++ buffer, std::move(callback)));
++}
++
++void HidConnectionFido::PlatformSendFeatureReport(
++ scoped_refptr<base::RefCountedBytes> buffer, WriteCallback callback) {
++ base::ScopedBlockingCall scoped_blocking_call(FROM_HERE,
++ base::BlockingType::MAY_BLOCK);
++ blocking_task_runner_->PostTask(
++ FROM_HERE, base::BindOnce(&BlockingTaskHelper::SendFeatureReport,
++ base::Unretained(helper_.get()), buffer,
++ std::move(callback)));
++}
++
++} // namespace device
diff --git a/devel/electron17/files/patch-services_device_hid_hid__connection__fido.h b/devel/electron17/files/patch-services_device_hid_hid__connection__fido.h
new file mode 100644
index 000000000000..18bc8fb93979
--- /dev/null
+++ b/devel/electron17/files/patch-services_device_hid_hid__connection__fido.h
@@ -0,0 +1,60 @@
+--- services/device/hid/hid_connection_fido.h.orig 2022-05-13 07:20:05 UTC
++++ services/device/hid/hid_connection_fido.h
+@@ -0,0 +1,57 @@
++// Copyright (c) 2020 The Chromium Authors. All rights reserved.
++// Use of this source code is governed by a BSD-style license that can be
++// found in the LICENSE file.
++
++#ifndef SERVICE_DEVICE_HID_HID_CONNECTION_FIDO_H_
++#define SERVICE_DEVICE_HID_HID_CONNECTION_FIDO_H_
++
++#include "base/files/scoped_file.h"
++#include "base/memory/ptr_util.h"
++#include "base/memory/ref_counted_memory.h"
++#include "base/memory/weak_ptr.h"
++#include "base/sequence_checker.h"
++#include "services/device/hid/hid_connection.h"
++
++namespace device {
++
++class HidConnectionFido : public HidConnection {
++public:
++ HidConnectionFido(
++ scoped_refptr<HidDeviceInfo> device_info, base::ScopedFD fd,
++ scoped_refptr<base::SequencedTaskRunner> blocking_task_runner,
++ bool allow_protected_reports, bool allow_fido_reports);
++
++private:
++ friend class base::RefCountedThreadSafe<HidConnectionFido>;
++ class BlockingTaskHelper;
++
++ HidConnectionFido(const HidConnectionFido&) = delete;
++ HidConnectionFido& operator=(const HidConnectionFido&) = delete;
++
++ ~HidConnectionFido() override;
++
++ // HidConnection implementation.
++ void PlatformClose() override;
++ void PlatformWrite(scoped_refptr<base::RefCountedBytes> buffer,
++ WriteCallback callback) override;
++ void PlatformGetFeatureReport(uint8_t report_id,
++ ReadCallback callback) override;
++ void PlatformSendFeatureReport(scoped_refptr<base::RefCountedBytes> buffer,
++ WriteCallback callback) override;
++
++ const scoped_refptr<base::SequencedTaskRunner> blocking_task_runner_;
++ const scoped_refptr<base::SequencedTaskRunner> task_runner_;
++
++ SEQUENCE_CHECKER(sequence_checker_);
++
++ base::WeakPtrFactory<HidConnectionFido> weak_factory_;
++
++ // |helper_| lives on the sequence to which |blocking_task_runner_| posts
++ // tasks so all calls must be posted there including this object's
++ // destruction.
++ std::unique_ptr<BlockingTaskHelper> helper_;
++};
++
++} // namespace device
++
++#endif // SERVICE_DEVICE_HID_HID_CONNECTION_FIDO_H_
diff --git a/devel/electron17/files/patch-services_device_hid_hid__connection__freebsd.cc b/devel/electron17/files/patch-services_device_hid_hid__connection__freebsd.cc
new file mode 100644
index 000000000000..93defd1bc307
--- /dev/null
+++ b/devel/electron17/files/patch-services_device_hid_hid__connection__freebsd.cc
@@ -0,0 +1,246 @@
+--- services/device/hid/hid_connection_freebsd.cc.orig 2022-05-13 07:20:05 UTC
++++ services/device/hid/hid_connection_freebsd.cc
+@@ -0,0 +1,243 @@
++// Copyright (c) 2014 The Chromium Authors. All rights reserved.
++// Use of this source code is governed by a BSD-style license that can be
++// found in the LICENSE file.
++
++#include "services/device/hid/hid_connection_freebsd.h"
++
++#include <dev/usb/usbhid.h>
++#include <dev/usb/usb_ioctl.h>
++
++#include "base/bind.h"
++#include "base/files/file_descriptor_watcher_posix.h"
++#include "base/location.h"
++#include "base/numerics/safe_math.h"
++#include "base/posix/eintr_wrapper.h"
++#include "base/strings/stringprintf.h"
++#include "base/task/post_task.h"
++#include "base/task/single_thread_task_runner.h"
++#include "base/threading/scoped_blocking_call.h"
++#include "base/threading/thread_restrictions.h"
++#include "base/threading/thread_task_runner_handle.h"
++#include "components/device_event_log/device_event_log.h"
++#include "services/device/hid/hid_service.h"
++
++namespace device {
++
++class HidConnectionFreeBSD::BlockingTaskRunnerHelper {
++ public:
++ BlockingTaskRunnerHelper(base::ScopedFD fd,
++ scoped_refptr<HidDeviceInfo> device_info,
++ base::WeakPtr<HidConnectionFreeBSD> connection)
++ : fd_(std::move(fd)),
++ connection_(connection),
++ origin_task_runner_(base::ThreadTaskRunnerHandle::Get()) {
++ DETACH_FROM_SEQUENCE(sequence_checker_);
++ // Report buffers must always have room for the report ID.
++ report_buffer_size_ = device_info->max_input_report_size() + 1;
++ has_report_id_ = device_info->has_report_id();
++ }
++
++ BlockingTaskRunnerHelper(const BlockingTaskRunnerHelper&) = delete;
++ BlockingTaskRunnerHelper& operator=(const BlockingTaskRunnerHelper&) = delete;
++
++ ~BlockingTaskRunnerHelper() { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); }
++
++ // Starts the FileDescriptorWatcher that reads input events from the device.
++ // Must be called on a thread that has a base::MessageLoopForIO.
++ void Start() {
++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
++ base::internal::AssertBlockingAllowed();
++
++ file_watcher_ = base::FileDescriptorWatcher::WatchReadable(
++ fd_.get(), base::BindRepeating(&BlockingTaskRunnerHelper::OnFileCanReadWithoutBlocking,
++ base::Unretained(this)));
++ }
++
++ void Write(scoped_refptr<base::RefCountedBytes> buffer,
++ WriteCallback callback) {
++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
++ base::ScopedBlockingCall scoped_blocking_call(
++ FROM_HERE, base::BlockingType::MAY_BLOCK);
++
++ auto data = buffer->front();
++ size_t size = buffer->size();
++ // if report id is 0, it shouldn't be included
++ if (data[0] == 0) {
++ data++;
++ size--;
++ }
++
++ ssize_t result = HANDLE_EINTR(write(fd_.get(), data, size));
++ if (result < 0) {
++ HID_PLOG(EVENT) << "Write failed";
++ origin_task_runner_->PostTask(FROM_HERE, base::BindOnce(std::move(callback), false));
++ } else {
++ if (static_cast<size_t>(result) != size)
++ HID_LOG(EVENT) << "Incomplete HID write: " << result << " != " << size;
++ origin_task_runner_->PostTask(FROM_HERE, base::BindOnce(std::move(callback), true));
++ }
++ }
++
++ void GetFeatureReport(uint8_t report_id,
++ scoped_refptr<base::RefCountedBytes> buffer,
++ ReadCallback callback) {
++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
++ base::ScopedBlockingCall scoped_blocking_call(
++ FROM_HERE, base::BlockingType::MAY_BLOCK);
++ struct usb_gen_descriptor ugd;
++ ugd.ugd_report_type = UHID_FEATURE_REPORT;
++ ugd.ugd_data = buffer->front();
++ ugd.ugd_maxlen = buffer->size();
++ int result = HANDLE_EINTR(
++ ioctl(fd_.get(), USB_GET_REPORT, &ugd));
++ if (result < 0) {
++ HID_PLOG(EVENT) << "Failed to get feature report";
++ origin_task_runner_->PostTask(FROM_HERE,
++ base::BindOnce(std::move(callback), false, nullptr, 0));
++ } else if (result == 0) {
++ HID_LOG(EVENT) << "Get feature result too short.";
++ origin_task_runner_->PostTask(FROM_HERE,
++ base::BindOnce(std::move(callback), false, nullptr, 0));
++ } else {
++ origin_task_runner_->PostTask(FROM_HERE,
++ base::BindOnce(std::move(callback), true, buffer, result));
++ }
++ }
++
++ void SendFeatureReport(scoped_refptr<base::RefCountedBytes> buffer,
++ WriteCallback callback) {
++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
++ struct usb_gen_descriptor ugd;
++ ugd.ugd_report_type = UHID_FEATURE_REPORT;
++ ugd.ugd_data = buffer->front();
++ ugd.ugd_maxlen = buffer->size();
++ // FreeBSD does not require report id if it's not used
++ if (buffer->front()[0] == 0) {
++ ugd.ugd_data = buffer->front() + 1;
++ ugd.ugd_maxlen = buffer->size() - 1;
++ } else {
++ ugd.ugd_data = buffer->front();
++ ugd.ugd_maxlen = buffer->size();
++ }
++ int result = HANDLE_EINTR(
++ ioctl(fd_.get(), USB_SET_REPORT, &ugd));
++ if (result < 0) {
++ HID_PLOG(EVENT) << "Failed to send feature report";
++ origin_task_runner_->PostTask(FROM_HERE,
++ base::BindOnce(std::move(callback), false));
++ } else {
++ origin_task_runner_->PostTask(FROM_HERE,
++ base::BindOnce(std::move(callback), true));
++ }
++ }
++
++ private:
++ void OnFileCanReadWithoutBlocking() {
++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
++
++ scoped_refptr<base::RefCountedBytes> buffer(new base::RefCountedBytes(report_buffer_size_));
++ unsigned char* data = buffer->front();
++ size_t length = report_buffer_size_;
++ if (!has_report_id_) {
++ // FreeBSD will not prefix the buffer with a report ID if report IDs are not
++ // used by the device. Prefix the buffer with 0.
++ *data++ = 0;
++ length--;
++ }
++
++ ssize_t bytes_read = HANDLE_EINTR(read(fd_.get(), data, length));
++ if (bytes_read < 0) {
++ if (errno != EAGAIN) {
++ HID_PLOG(EVENT) << "Read failed";
++ // This assumes that the error is unrecoverable and disables reading
++ // from the device until it has been re-opened.
++ // TODO(reillyg): Investigate starting and stopping the file descriptor
++ // watcher in response to pending read requests so that per-request
++ // errors can be returned to the client.
++ file_watcher_.reset();
++ }
++ return;
++ }
++ if (!has_report_id_) {
++ // Behave as if the byte prefixed above as the the report ID was read.
++ bytes_read++;
++ }
++
++ origin_task_runner_->PostTask(
++ FROM_HERE, base::BindOnce(&HidConnectionFreeBSD::ProcessInputReport,
++ connection_, buffer, bytes_read));
++ }
++
++ SEQUENCE_CHECKER(sequence_checker_);
++ base::ScopedFD fd_;
++ size_t report_buffer_size_;
++ bool has_report_id_;
++ base::WeakPtr<HidConnectionFreeBSD> connection_;
++ const scoped_refptr<base::SequencedTaskRunner> origin_task_runner_;
++ std::unique_ptr<base::FileDescriptorWatcher::Controller> file_watcher_;
++};
++
++HidConnectionFreeBSD::HidConnectionFreeBSD(
++ scoped_refptr<HidDeviceInfo> device_info,
++ base::ScopedFD fd,
++ scoped_refptr<base::SequencedTaskRunner> blocking_task_runner,
++ bool allow_protected_reports,
++ bool allow_fido_reports)
++ : HidConnection(device_info, allow_protected_reports, allow_fido_reports),
++ helper_(nullptr, base::OnTaskRunnerDeleter(blocking_task_runner)),
++ blocking_task_runner_(std::move(blocking_task_runner)) {
++ helper_.reset(new BlockingTaskRunnerHelper(std::move(fd), device_info,
++ weak_factory_.GetWeakPtr()));
++ blocking_task_runner_->PostTask(
++ FROM_HERE, base::BindOnce(&BlockingTaskRunnerHelper::Start,
++ base::Unretained(helper_.get())));
++}
++
++HidConnectionFreeBSD::~HidConnectionFreeBSD() {}
++
++void HidConnectionFreeBSD::PlatformClose() {
++ // By closing the device on the blocking task runner 1) the requirement that
++ // base::ScopedFD is destroyed on a thread where I/O is allowed is satisfied
++ // and 2) any tasks posted to this task runner that refer to this file will
++ // complete before it is closed.
++ blocking_task_runner_->DeleteSoon(FROM_HERE, helper_.release());
++}
++
++void HidConnectionFreeBSD::PlatformWrite(scoped_refptr<base::RefCountedBytes> buffer,
++ WriteCallback callback) {
++
++ blocking_task_runner_->PostTask(
++ FROM_HERE,
++ base::BindOnce(&BlockingTaskRunnerHelper::Write, base::Unretained(helper_.get()),
++ buffer, std::move(callback)));
++}
++
++void HidConnectionFreeBSD::PlatformGetFeatureReport(uint8_t report_id,
++ ReadCallback callback) {
++ // The first byte of the destination buffer is the report ID being requested
++ // and is overwritten by the feature report.
++ DCHECK_GT(device_info()->max_feature_report_size(), 0u);
++ scoped_refptr<base::RefCountedBytes> buffer(
++ new base::RefCountedBytes(device_info()->max_feature_report_size() + 1));
++ if (report_id != 0)
++ buffer->data()[0] = report_id;
++
++ blocking_task_runner_->PostTask(
++ FROM_HERE,
++ base::BindOnce(&BlockingTaskRunnerHelper::GetFeatureReport,
++ base::Unretained(helper_.get()), report_id,
++ buffer, std::move(callback)));
++}
++
++void HidConnectionFreeBSD::PlatformSendFeatureReport(
++ scoped_refptr<base::RefCountedBytes> buffer,
++ WriteCallback callback) {
++ base::ScopedBlockingCall scoped_blocking_call(
++ FROM_HERE, base::BlockingType::MAY_BLOCK);
++ blocking_task_runner_->PostTask(
++ FROM_HERE,
++ base::BindOnce(&BlockingTaskRunnerHelper::SendFeatureReport,
++ base::Unretained(helper_.get()), buffer, std::move(callback)));
++}
++
++} // namespace device
diff --git a/devel/electron17/files/patch-services_device_hid_hid__connection__freebsd.h b/devel/electron17/files/patch-services_device_hid_hid__connection__freebsd.h
new file mode 100644
index 000000000000..2552d89146c4
--- /dev/null
+++ b/devel/electron17/files/patch-services_device_hid_hid__connection__freebsd.h
@@ -0,0 +1,70 @@
+--- services/device/hid/hid_connection_freebsd.h.orig 2022-05-13 07:20:05 UTC
++++ services/device/hid/hid_connection_freebsd.h
+@@ -0,0 +1,67 @@
++// Copyright (c) 2014 The Chromium Authors. All rights reserved.
++// Use of this source code is governed by a BSD-style license that can be
++// found in the LICENSE file.
++
++#ifndef DEVICE_HID_HID_CONNECTION_FREEBSD_H_
++#define DEVICE_HID_HID_CONNECTION_FREEBSD_H_
++
++#include <stddef.h>
++#include <stdint.h>
++
++#include "base/files/scoped_file.h"
++#include "base/memory/weak_ptr.h"
++#include "base/memory/ref_counted_memory.h"
++#include "base/task/sequenced_task_runner.h"
++#include "services/device/hid/hid_connection.h"
++
++namespace base {
++class SequencedTaskRunner;
++}
++
++namespace net {
++class IOBuffer;
++}
++
++namespace device {
++
++class HidConnectionFreeBSD : public HidConnection {
++ public:
++ HidConnectionFreeBSD(
++ scoped_refptr<HidDeviceInfo> device_info,
++ base::ScopedFD fd,
++ scoped_refptr<base::SequencedTaskRunner> blocking_task_runner,
++ bool allow_protected_reports,
++ bool allow_fido_reports);
++
++ private:
++ friend class base::RefCountedThreadSafe<HidConnectionFreeBSD>;
++ class BlockingTaskRunnerHelper;
++
++ HidConnectionFreeBSD(const HidConnectionFreeBSD&) = delete;
++ HidConnectionFreeBSD& operator=(const HidConnectionFreeBSD&) = delete;
++
++ ~HidConnectionFreeBSD() override;
++
++ // HidConnection implementation.
++ void PlatformClose() override;
++ void PlatformWrite(scoped_refptr<base::RefCountedBytes> buffer,
++ WriteCallback callback) override;
++ void PlatformGetFeatureReport(uint8_t report_id,
++ ReadCallback callback) override;
++ void PlatformSendFeatureReport(scoped_refptr<base::RefCountedBytes> buffer,
++ WriteCallback callback) override;
++
++ // |helper_| lives on the sequence to which |blocking_task_runner_| posts
++ // tasks so all calls must be posted there including this object's
++ // destruction.
++ std::unique_ptr<BlockingTaskRunnerHelper, base::OnTaskRunnerDeleter> helper_;
++
++ const scoped_refptr<base::SequencedTaskRunner> blocking_task_runner_;
++ const scoped_refptr<base::SequencedTaskRunner> task_runner_;
++
++ base::WeakPtrFactory<HidConnectionFreeBSD> weak_factory_{this};
++};
++
++} // namespace device
++
++#endif // DEVICE_HID_HID_CONNECTION_FREEBSD_H_
diff --git a/devel/electron17/files/patch-services_device_hid_hid__service.cc b/devel/electron17/files/patch-services_device_hid_hid__service.cc
new file mode 100644
index 000000000000..df16585a49b3
--- /dev/null
+++ b/devel/electron17/files/patch-services_device_hid_hid__service.cc
@@ -0,0 +1,24 @@
+--- services/device/hid/hid_service.cc.orig 2022-05-11 07:16:54 UTC
++++ services/device/hid/hid_service.cc
+@@ -18,6 +18,10 @@
+
+ #if (defined(OS_LINUX) || defined(OS_CHROMEOS)) && defined(USE_UDEV)
+ #include "services/device/hid/hid_service_linux.h"
++#elif defined(OS_OPENBSD)
++#include "services/device/hid/hid_service_fido.h"
++#elif defined(OS_FREEBSD)
++#include "services/device/hid/hid_service_freebsd.h"
+ #elif defined(OS_MAC)
+ #include "services/device/hid/hid_service_mac.h"
+ #elif defined(OS_WIN)
+@@ -61,6 +65,10 @@ constexpr base::TaskTraits HidService::kBlockingTaskTr
+ std::unique_ptr<HidService> HidService::Create() {
+ #if (defined(OS_LINUX) || defined(OS_CHROMEOS)) && defined(USE_UDEV)
+ return base::WrapUnique(new HidServiceLinux());
++#elif defined(OS_OPENBSD)
++ return base::WrapUnique(new HidServiceFido());
++#elif defined(OS_FREEBSD)
++ return base::WrapUnique(new HidServiceFreeBSD());
+ #elif defined(OS_MAC)
+ return base::WrapUnique(new HidServiceMac());
+ #elif defined(OS_WIN)
diff --git a/devel/electron17/files/patch-services_device_hid_hid__service__fido.cc b/devel/electron17/files/patch-services_device_hid_hid__service__fido.cc
new file mode 100644
index 000000000000..de049a945361
--- /dev/null
+++ b/devel/electron17/files/patch-services_device_hid_hid__service__fido.cc
@@ -0,0 +1,331 @@
+--- services/device/hid/hid_service_fido.cc.orig 2022-05-13 07:20:05 UTC
++++ services/device/hid/hid_service_fido.cc
+@@ -0,0 +1,328 @@
++// Copyright 2020 The Chromium Authors. All rights reserved.
++// Use of this source code is governed by a BSD-style license that can be
++// found in the LICENSE file.
++
++#include "services/device/hid/hid_service_fido.h"
++
++#include <fcntl.h>
++#include <poll.h>
++#include <stdint.h>
++#include <sys/socket.h>
++#include <sys/un.h>
++#include <unistd.h>
++
++// TODO: remove once the missing guard in fido.h is fixed upstream.
++extern "C" {
++#include <fido.h>
++}
++
++#include <set>
++#include <string>
++#include <vector>
++
++#include "base/bind.h"
++#include "base/files/file.h"
++#include "base/files/file_descriptor_watcher_posix.h"
++#include "base/files/file_enumerator.h"
++#include "base/location.h"
++#include "base/logging.h"
++#include "base/posix/eintr_wrapper.h"
++#include "base/task/single_thread_task_runner.h"
++#include "base/task/thread_pool.h"
++#include "base/stl_util.h"
++#include "base/strings/pattern.h"
++#include "base/strings/string_split.h"
++#include "base/strings/string_util.h"
++#include "base/strings/stringprintf.h"
++#include "base/strings/sys_string_conversions.h"
++#include "base/task/post_task.h"
++#include "base/threading/scoped_blocking_call.h"
++#include "base/threading/thread_task_runner_handle.h"
++#include "components/device_event_log/device_event_log.h"
++#include "services/device/hid/hid_connection_fido.h"
++
++namespace device {
++
++namespace {
++
++struct ConnectParams {
++ ConnectParams(scoped_refptr<HidDeviceInfo> device_info,
++ HidService::ConnectCallback callback)
++ : device_info(std::move(device_info)), callback(std::move(callback)),
++ task_runner(base::ThreadTaskRunnerHandle::Get()),
++ blocking_task_runner(base::ThreadPool::CreateSequencedTaskRunner(
++ HidService::kBlockingTaskTraits)) {}
++ ~ConnectParams() {}
++
++ scoped_refptr<HidDeviceInfo> device_info;
++ HidService::ConnectCallback callback;
++ scoped_refptr<base::SequencedTaskRunner> task_runner;
++ scoped_refptr<base::SequencedTaskRunner> blocking_task_runner;
++ base::ScopedFD fd;
++ bool allow_protected_reports;
++ bool allow_fido_reports;
++};
++
++void CreateConnection(std::unique_ptr<ConnectParams> params) {
++ DCHECK(params->fd.is_valid());
++ std::move(params->callback).Run(base::MakeRefCounted<HidConnectionFido>(
++ std::move(params->device_info), std::move(params->fd),
++ std::move(params->blocking_task_runner), params->allow_protected_reports,
++ params->allow_fido_reports));
++}
++
++void FinishOpen(std::unique_ptr<ConnectParams> params) {
++ scoped_refptr<base::SequencedTaskRunner> task_runner = params->task_runner;
++
++ task_runner->PostTask(FROM_HERE,
++ base::BindOnce(&CreateConnection, std::move(params)));
++}
++
++bool terrible_ping_kludge(int fd, const std::string &path) {
++ u_char data[256];
++ int i, n;
++ struct pollfd pfd;
++
++ for (i = 0; i < 4; i++) {
++ memset(data, 0, sizeof(data));
++ /* broadcast channel ID */
++ data[1] = 0xff;
++ data[2] = 0xff;
++ data[3] = 0xff;
++ data[4] = 0xff;
++ /* Ping command */
++ data[5] = 0x81;
++ /* One byte ping only, Vasili */
++ data[6] = 0;
++ data[7] = 1;
++ HID_LOG(EVENT) << "send ping " << i << " " << path;
++ if (write(fd, data, 64) == -1) {
++ HID_PLOG(ERROR) << "write " << path;
++ return false;
++ }
++ HID_LOG(EVENT) << "wait reply " << path;
++ memset(&pfd, 0, sizeof(pfd));
++ pfd.fd = fd;
++ pfd.events = POLLIN;
++ if ((n = poll(&pfd, 1, 100)) == -1) {
++ HID_PLOG(EVENT) << "poll " << path;
++ return false;
++ } else if (n == 0) {
++ HID_LOG(EVENT) << "timed out " << path;
++ continue;
++ }
++ if (read(fd, data, 64) == -1) {
++ HID_PLOG(ERROR) << "read " << path;
++ return false;
++ }
++ /*
++ * Ping isn't always supported on the broadcast channel,
++ * so we might get an error, but we don't care - we're
++ * synched now.
++ */
++ HID_LOG(EVENT) << "got reply " << path;
++ return true;
++ }
++ HID_LOG(ERROR) << "no response " << path;
++ return false;
++}
++
++void OpenOnBlockingThread(std::unique_ptr<ConnectParams> params) {
++ base::ScopedBlockingCall scoped_blocking_call(FROM_HERE,
++ base::BlockingType::MAY_BLOCK);
++ scoped_refptr<base::SequencedTaskRunner> task_runner = params->task_runner;
++
++ const auto &device_node = params->device_info->device_node();
++ base::FilePath device_path(device_node);
++ int flags =
++ base::File::FLAG_OPEN | base::File::FLAG_READ | base::File::FLAG_WRITE;
++ base::File device_file(device_path, flags);
++ if (!device_file.IsValid()) {
++ HID_LOG(EVENT) << "Failed to open '" << device_node << "': "
++ << base::File::ErrorToString(device_file.error_details());
++ task_runner->PostTask(FROM_HERE, base::BindOnce(std::move(params->callback), nullptr));
++ return;
++ }
++ if (!terrible_ping_kludge(device_file.GetPlatformFile(), device_node)) {
++ HID_LOG(EVENT) << "Failed to ping " << device_node;
++ task_runner->PostTask(FROM_HERE, base::BindOnce(std::move(params->callback), nullptr));
++ return;
++ }
++ params->fd.reset(device_file.TakePlatformFile());
++ FinishOpen(std::move(params));
++}
++
++// HID report descriptor for U2F interface. Copied from:
++// https://chromium.googlesource.com/chromiumos/platform2/+/c6c7e4e54fce11932fedaa3ea10236bf75d85a2b%5E%21/u2fd/u2fhid.cc
++// Apparently Chromium wants to see these bytes, but OpenBSD fido(4)
++// devices prohibit USB_GET_REPORT_DESC ioctl that could be used to
++// get the bytes from the USB device.
++constexpr uint8_t kU2fReportDesc[] = {
++ 0x06, 0xD0, 0xF1, /* Usage Page (FIDO Alliance), FIDO_USAGE_PAGE */
++ 0x09, 0x01, /* Usage (U2F HID Auth. Device) FIDO_USAGE_U2FHID */
++ 0xA1, 0x01, /* Collection (Application), HID_APPLICATION */
++ 0x09, 0x20, /* Usage (Input Report Data), FIDO_USAGE_DATA_IN */
++ 0x15, 0x00, /* Logical Minimum (0) */
++ 0x26, 0xFF, 0x00, /* Logical Maximum (255) */
++ 0x75, 0x08, /* Report Size (8) */
++ 0x95, 0x40, /* Report Count (64), HID_INPUT_REPORT_BYTES */
++ 0x81, 0x02, /* Input (Data, Var, Abs), Usage */
++ 0x09, 0x21, /* Usage (Output Report Data), FIDO_USAGE_DATA_OUT */
++ 0x15, 0x00, /* Logical Minimum (0) */
++ 0x26, 0xFF, 0x00, /* Logical Maximum (255) */
++ 0x75, 0x08, /* Report Size (8) */
++ 0x95, 0x40, /* Report Count (64), HID_OUTPUT_REPORT_BYTES */
++ 0x91, 0x02, /* Output (Data, Var, Abs), Usage */
++ 0xC0 /* End Collection */
++};
++
++} // namespace
++
++class HidServiceFido::BlockingTaskHelper {
++public:
++ BlockingTaskHelper(base::WeakPtr<HidServiceFido> service)
++ : service_(std::move(service)),
++ task_runner_(base::ThreadTaskRunnerHandle::Get()) {
++ DETACH_FROM_SEQUENCE(sequence_checker_);
++ }
++
++ BlockingTaskHelper(const BlockingTaskHelper&) = delete;
++ BlockingTaskHelper& operator=(const BlockingTaskHelper&) = delete;
++
++ ~BlockingTaskHelper() = default;
++
++ void Start() {
++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
++ base::ScopedBlockingCall scoped_blocking_call(
++ FROM_HERE, base::BlockingType::MAY_BLOCK);
++
++ fido_dev_info_t *devlist = NULL;
++ fido_dev_t *dev = NULL;
++ size_t devlist_len = 0, i;
++ const char *path;
++ int r;
++ const int MAX_FIDO_DEVICES = 256;
++
++ if ((devlist = fido_dev_info_new(MAX_FIDO_DEVICES)) == NULL) {
++ HID_LOG(ERROR) << "fido_dev_info_new failed";
++ goto out;
++ }
++ if ((r = fido_dev_info_manifest(devlist, MAX_FIDO_DEVICES, &devlist_len)) !=
++ FIDO_OK) {
++ HID_LOG(ERROR) << "fido_dev_info_manifest: " << fido_strerr(r);
++ goto out;
++ }
++
++ HID_LOG(EVENT) << "fido_dev_info_manifest found " << devlist_len
++ << " device(s)";
++
++ for (i = 0; i < devlist_len; i++) {
++ const fido_dev_info_t *di = fido_dev_info_ptr(devlist, i);
++ if (di == NULL) {
++ HID_LOG(ERROR) << "fido_dev_info_ptr " << i << " failed";
++ continue;
++ }
++ if ((path = fido_dev_info_path(di)) == NULL) {
++ HID_LOG(ERROR) << "fido_dev_info_path " << i << " failed";
++ continue;
++ }
++ HID_LOG(EVENT) << "trying device " << i << ": " << path;
++ if ((dev = fido_dev_new()) == NULL) {
++ HID_LOG(ERROR) << "fido_dev_new failed";
++ continue;
++ }
++ if ((r = fido_dev_open(dev, path)) != FIDO_OK) {
++ HID_LOG(ERROR) << "fido_dev_open failed " << path;
++ fido_dev_free(&dev);
++ continue;
++ }
++ OnDeviceAdded(di);
++ fido_dev_close(dev);
++ fido_dev_free(&dev);
++ }
++
++ out:
++ if (devlist != NULL)
++ fido_dev_info_free(&devlist, MAX_FIDO_DEVICES);
++
++ task_runner_->PostTask(
++ FROM_HERE,
++ base::BindOnce(&HidServiceFido::FirstEnumerationComplete, service_));
++ }
++
++ void OnDeviceAdded(const fido_dev_info_t *di) {
++ auto null_as_empty = [](const char *r) -> std::string {
++ return (r != nullptr) ? r : "";
++ };
++ std::string device_node(null_as_empty(fido_dev_info_path(di)));
++ std::vector<uint8_t> report_descriptor(
++ kU2fReportDesc, kU2fReportDesc + sizeof(kU2fReportDesc));
++ scoped_refptr<HidDeviceInfo> device_info(new HidDeviceInfo(
++ device_node, /*physical_device_id=*/"", fido_dev_info_vendor(di),
++ fido_dev_info_product(di), null_as_empty(fido_dev_info_product_string(di)),
++ null_as_empty(fido_dev_info_manufacturer_string(di)),
++ device::mojom::HidBusType::kHIDBusTypeUSB, report_descriptor,
++ device_node));
++
++ task_runner_->PostTask(FROM_HERE, base::BindOnce(&HidServiceFido::AddDevice,
++ service_, device_info));
++ }
++
++ void OnDeviceRemoved(std::string device_node) {
++ base::ScopedBlockingCall scoped_blocking_call(
++ FROM_HERE, base::BlockingType::MAY_BLOCK);
++ task_runner_->PostTask(FROM_HERE, base::BindOnce(&HidServiceFido::RemoveDevice,
++ service_, device_node));
++ }
++
++private:
++ SEQUENCE_CHECKER(sequence_checker_);
++
++ // This weak pointer is only valid when checked on this task runner.
++ base::WeakPtr<HidServiceFido> service_;
++ scoped_refptr<base::SequencedTaskRunner> task_runner_;
++};
++
++HidServiceFido::HidServiceFido()
++ : task_runner_(base::ThreadTaskRunnerHandle::Get()),
++ blocking_task_runner_(
++ base::ThreadPool::CreateSequencedTaskRunner(kBlockingTaskTraits)),
++ weak_factory_(this), helper_(std::make_unique<BlockingTaskHelper>(
++ weak_factory_.GetWeakPtr())) {
++ blocking_task_runner_->PostTask(
++ FROM_HERE,
++ base::BindOnce(&BlockingTaskHelper::Start, base::Unretained(helper_.get())));
++}
++
++HidServiceFido::~HidServiceFido() {
++ blocking_task_runner_->DeleteSoon(FROM_HERE, helper_.release());
++}
++
++base::WeakPtr<HidService> HidServiceFido::GetWeakPtr() {
++ return weak_factory_.GetWeakPtr();
++}
++
++void HidServiceFido::Connect(const std::string &device_guid,
++ bool allow_protected_reports,
++ bool allow_fido_reports,
++ ConnectCallback callback) {
++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
++
++ const auto &map_entry = devices().find(device_guid);
++ if (map_entry == devices().end()) {
++ base::ThreadTaskRunnerHandle::Get()->PostTask(
++ FROM_HERE, base::BindOnce(std::move(callback), nullptr));
++ return;
++ }
++
++ scoped_refptr<HidDeviceInfo> device_info = map_entry->second;
++
++ auto params = std::make_unique<ConnectParams>(device_info, std::move(callback));
++
++ scoped_refptr<base::SequencedTaskRunner> blocking_task_runner =
++ params->blocking_task_runner;
++ blocking_task_runner->PostTask(
++ FROM_HERE, base::BindOnce(&OpenOnBlockingThread, std::move(params)));
++}
++
++} // namespace device
diff --git a/devel/electron17/files/patch-services_device_hid_hid__service__fido.h b/devel/electron17/files/patch-services_device_hid_hid__service__fido.h
new file mode 100644
index 000000000000..4e620c86a248
--- /dev/null
+++ b/devel/electron17/files/patch-services_device_hid_hid__service__fido.h
@@ -0,0 +1,46 @@
+--- services/device/hid/hid_service_fido.h.orig 2022-05-13 07:20:05 UTC
++++ services/device/hid/hid_service_fido.h
+@@ -0,0 +1,43 @@
++// Copyright 2020 The Chromium Authors. All rights reserved.
++// Use of this source code is governed by a BSD-style license that can be
++// found in the LICENSE file.
++
++#ifndef SERVICE_DEVICE_HID_HID_SERVICE_FIDO_H_
++#define SERVICE_DEVICE_HID_HID_SERVICE_FIDO_H_
++
++#include <string>
++
++#include "base/memory/ref_counted.h"
++#include "base/memory/weak_ptr.h"
++#include "services/device/hid/hid_service.h"
++
++namespace device {
++
++class HidServiceFido : public HidService {
++public:
++ HidServiceFido();
++
++ HidServiceFido(const HidServiceFido&) = delete;
++ HidServiceFido& operator=(const HidServiceFido&) = delete;
++
++ ~HidServiceFido() override;
++
++ void Connect(const std::string &device_guid,
++ bool allow_protected_reports,
++ bool allow_fido_reports,
++ ConnectCallback connect) override;
++ base::WeakPtr<HidService> GetWeakPtr() override;
++
++private:
++ class BlockingTaskHelper;
++ const scoped_refptr<base::SequencedTaskRunner> task_runner_;
++ const scoped_refptr<base::SequencedTaskRunner> blocking_task_runner_;
++ base::WeakPtrFactory<HidServiceFido> weak_factory_;
++ // |helper_| lives on the sequence |blocking_task_runner_| posts to and holds
++ // a weak reference back to the service that owns it.
++ std::unique_ptr<BlockingTaskHelper> helper_;
++};
++
++} // namespace device
++
++#endif // SERVICE_DEVICE_HID_HID_SERVICE_FIDO_H_
diff --git a/devel/electron17/files/patch-services_device_hid_hid__service__freebsd.cc b/devel/electron17/files/patch-services_device_hid_hid__service__freebsd.cc
new file mode 100644
index 000000000000..e5d740ca171b
--- /dev/null
+++ b/devel/electron17/files/patch-services_device_hid_hid__service__freebsd.cc
@@ -0,0 +1,401 @@
+--- services/device/hid/hid_service_freebsd.cc.orig 2022-05-13 07:20:05 UTC
++++ services/device/hid/hid_service_freebsd.cc
+@@ -0,0 +1,398 @@
++// Copyright 2014 The Chromium Authors. All rights reserved.
++// Use of this source code is governed by a BSD-style license that can be
++// found in the LICENSE file.
++
++#include "services/device/hid/hid_service_freebsd.h"
++
++#include <dev/usb/usb_ioctl.h>
++#include <stdint.h>
++#include <sys/socket.h>
++#include <sys/un.h>
++
++#include <set>
++#include <string>
++#include <vector>
++
++#include "base/bind.h"
++#include "base/files/file_descriptor_watcher_posix.h"
++#include "base/files/file_enumerator.h"
++#include "base/files/file_util.h"
++#include "base/files/file.h"
++#include "base/location.h"
++#include "base/logging.h"
++#include "base/posix/eintr_wrapper.h"
++#include "base/stl_util.h"
++#include "base/strings/pattern.h"
++#include "base/strings/stringprintf.h"
++#include "base/strings/sys_string_conversions.h"
++#include "base/strings/string_util.h"
++#include "base/strings/string_split.h"
++#include "base/task/post_task.h"
++#include "base/task/single_thread_task_runner.h"
++#include "base/task/thread_pool.h"
++#include "base/threading/scoped_blocking_call.h"
++#include "base/threading/thread_task_runner_handle.h"
++#include "base/threading/thread_restrictions.h"
++#include "components/device_event_log/device_event_log.h"
++#include "services/device/hid/hid_connection_freebsd.h"
++
++const int kMaxPermissionChecks = 5;
++
++namespace device {
++
++struct HidServiceFreeBSD::ConnectParams {
++ ConnectParams(scoped_refptr<HidDeviceInfo> device_info,
++ bool allow_protected_reports,
++ bool allow_fido_reports,
++ ConnectCallback callback)
++ : device_info(std::move(device_info)),
++ allow_protected_reports(allow_protected_reports),
++ allow_fido_reports(allow_fido_reports),
++ callback(std::move(callback)),
++ task_runner(base::ThreadTaskRunnerHandle::Get()),
++ blocking_task_runner(
++ base::ThreadPool::CreateSequencedTaskRunner(kBlockingTaskTraits)) {}
++ ~ConnectParams() {}
++
++ scoped_refptr<HidDeviceInfo> device_info;
++ bool allow_protected_reports;
++ bool allow_fido_reports;
++ ConnectCallback callback;
++ scoped_refptr<base::SequencedTaskRunner> task_runner;
++ scoped_refptr<base::SequencedTaskRunner> blocking_task_runner;
++ base::ScopedFD fd;
++};
++
++class HidServiceFreeBSD::BlockingTaskRunnerHelper {
++ public:
++ BlockingTaskRunnerHelper(base::WeakPtr<HidServiceFreeBSD> service)
++ : service_(std::move(service)),
++ task_runner_(base::ThreadTaskRunnerHandle::Get()) {
++ DETACH_FROM_SEQUENCE(sequence_checker_);
++
++ timer_.reset(new base::RepeatingTimer());
++ devd_buffer_ = new net::IOBufferWithSize(1024);
++ }
++
++ BlockingTaskRunnerHelper(const BlockingTaskRunnerHelper&) = delete;
++ BlockingTaskRunnerHelper& operator=(const BlockingTaskRunnerHelper&) = delete;
++
++ ~BlockingTaskRunnerHelper() {
++ }
++
++ void Start() {
++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
++
++ const base::FilePath kDevRoot("/dev");
++ const std::string kUHIDPattern("/dev/uhid*");
++
++ base::FileEnumerator enumerator(kDevRoot, false, base::FileEnumerator::FILES);
++ do {
++ const base::FilePath next_device_path(enumerator.Next());
++ const std::string next_device = next_device_path.value();
++ if (next_device.empty())
++ break;
++
++ if (base::MatchPattern(next_device, kUHIDPattern))
++ OnDeviceAdded(next_device.substr(5));
++ } while (true);
++
++ SetupDevdMonitor();
++
++ task_runner_->PostTask(
++ FROM_HERE,
++ base::BindOnce(&HidServiceFreeBSD::FirstEnumerationComplete, service_));
++ }
++
++ bool HaveReadWritePermissions(std::string device_id) {
++ std::string device_node = "/dev/" + device_id;
++ base::internal::AssertBlockingAllowed();
++
++ base::FilePath device_path(device_node);
++ base::File device_file;
++ int flags =
++ base::File::FLAG_OPEN | base::File::FLAG_READ | base::File::FLAG_WRITE;
++ device_file.Initialize(device_path, flags);
++ if (!device_file.IsValid())
++ return false;
++
++ return true;
++ }
++
++ void OnDeviceAdded(std::string device_id) {
++ base::ScopedBlockingCall scoped_blocking_call(
++ FROM_HERE, base::BlockingType::MAY_BLOCK);
++ std::string device_node = "/dev/" + device_id;
++ uint16_t vendor_id = 0xffff;
++ uint16_t product_id = 0xffff;
++ std::string product_name = "";
++ std::string serial_number = "";
++
++ std::vector<uint8_t> report_descriptor;
++
++ base::internal::AssertBlockingAllowed();
++
++ base::FilePath device_path(device_node);
++ base::File device_file;
++ int flags =
++ base::File::FLAG_OPEN | base::File::FLAG_READ | base::File::FLAG_WRITE;
++ device_file.Initialize(device_path, flags);
++ if (!device_file.IsValid()) {
++ HID_LOG(ERROR) << "Failed to open '" << device_node
++ << "': "
++ << base::File::ErrorToString(device_file.error_details());
++ return;
++ }
++
++ base::ScopedFD fd;
++ fd.reset(device_file.TakePlatformFile());
++
++ struct usb_gen_descriptor ugd;
++ ugd.ugd_data = NULL;
++ ugd.ugd_maxlen = 0xffff;
++ int result = HANDLE_EINTR(
++ ioctl(fd.get(), USB_GET_REPORT_DESC, &ugd));
++
++ if (result < 0) {
++ HID_LOG(ERROR) << "Failed to get report descriptor size";
++ return;
++ }
++
++ report_descriptor.resize(ugd.ugd_actlen);
++
++ ugd.ugd_data = report_descriptor.data();
++ ugd.ugd_maxlen = ugd.ugd_actlen;
++ result = HANDLE_EINTR(
++ ioctl(fd.get(), USB_GET_REPORT_DESC, &ugd));
++
++ if (result < 0) {
++ HID_LOG(ERROR) << "Failed to get report descriptor";
++ return;
++ }
++
++ scoped_refptr<HidDeviceInfo> device_info(new HidDeviceInfo(
++ device_id,
++ /*physical_device_id*/"",
++ vendor_id,
++ product_id,
++ product_name,
++ serial_number,
++ device::mojom::HidBusType::kHIDBusTypeUSB,
++ report_descriptor,
++ device_node));
++
++ task_runner_->PostTask(FROM_HERE, base::BindOnce(&HidServiceFreeBSD::AddDevice,
++ service_, device_info));
++ }
++
++ void OnDeviceRemoved(std::string device_id) {
++ base::ScopedBlockingCall scoped_blocking_call(
++ FROM_HERE, base::BlockingType::MAY_BLOCK);
++ task_runner_->PostTask(
++ FROM_HERE, base::BindOnce(&HidServiceFreeBSD::RemoveDevice, service_,
++ device_id));
++ }
++
++ private:
++
++ void CheckPendingPermissionChange() {
++ base::internal::AssertBlockingAllowed();
++ std::map<std::string, int>::iterator it;
++ for (it = permissions_checks_attempts_.begin(); it != permissions_checks_attempts_.end();) {
++ std::string device_name = it->first;
++ bool keep = true;
++ if (HaveReadWritePermissions(device_name)) {
++ OnDeviceAdded(device_name);
++ keep = false;
++ }
++ else if (it->second-- <= 0) {
++ HID_LOG(ERROR) << "Still don't have write permissions to '" << device_name
++ << "' after " << kMaxPermissionChecks << " attempts";
++ keep = false;
++ }
++
++ if (keep)
++ ++it;
++ else
++ permissions_checks_attempts_.erase(it++);
++ }
++
++ if (permissions_checks_attempts_.empty())
++ timer_->Stop();
++ }
++
++ void SetupDevdMonitor() {
++ base::internal::AssertBlockingAllowed();
++
++ int devd_fd = socket(AF_UNIX, SOCK_SEQPACKET, 0);
++ if (devd_fd < 0)
++ return;
++
++ struct sockaddr_un sa;
++
++ sa.sun_family = AF_UNIX;
++ strlcpy(sa.sun_path, "/var/run/devd.seqpacket.pipe", sizeof(sa.sun_path));
++ if (connect(devd_fd, (struct sockaddr *) &sa, sizeof(sa)) < 0) {
++ close(devd_fd);
++ return;
++ }
++
++ devd_fd_.reset(devd_fd);
++ file_watcher_ = base::FileDescriptorWatcher::WatchReadable(
++ devd_fd_.get(), base::BindRepeating(&BlockingTaskRunnerHelper::OnDevdMessageCanBeRead,
++ base::Unretained(this)));
++ }
++
++ void OnDevdMessageCanBeRead() {
++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
++ ssize_t bytes_read = HANDLE_EINTR(recv(devd_fd_.get(), devd_buffer_->data(),
++ devd_buffer_->size() - 1, MSG_WAITALL));
++ if (bytes_read < 0) {
++ if (errno != EAGAIN) {
++ HID_LOG(ERROR) << "Read failed";
++ file_watcher_.reset();
++ }
++ return;
++ }
++
++ devd_buffer_->data()[bytes_read] = 0;
++ char *data = devd_buffer_->data();
++ // It may take some time for devd to change permissions
++ // on /dev/uhidX node. So do not fail immediately if
++ // open fail. Retry each second for kMaxPermissionChecks
++ // times before giving up entirely
++ if (base::StartsWith(data, "+uhid", base::CompareCase::SENSITIVE)) {
++ std::vector<std::string> parts = base::SplitString(
++ data, " ", base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL);
++ if (!parts.empty()) {
++ std::string device_name = parts[0].substr(1); // skip '+'
++ if (HaveReadWritePermissions(device_name))
++ OnDeviceAdded(parts[0].substr(1));
++ else {
++ // Do not re-add to checks
++ if (permissions_checks_attempts_.find(device_name) == permissions_checks_attempts_.end()) {
++ permissions_checks_attempts_.insert(std::pair<std::string, int>(device_name, kMaxPermissionChecks));
++ timer_->Start(FROM_HERE, base::Seconds(1),
++ this, &BlockingTaskRunnerHelper::CheckPendingPermissionChange);
++ }
++ }
++ }
++ }
++
++ if (base::StartsWith(data, "-uhid", base::CompareCase::SENSITIVE)) {
++ std::vector<std::string> parts = base::SplitString(
++ data, " ", base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL);
++ if (!parts.empty()) {
++ std::string device_name = parts[0].substr(1); // skip '-'
++ auto it = permissions_checks_attempts_.find(device_name);
++ if (it != permissions_checks_attempts_.end()) {
++ permissions_checks_attempts_.erase(it);
++ if (permissions_checks_attempts_.empty())
++ timer_->Stop();
++ }
++ OnDeviceRemoved(parts[0].substr(1));
++ }
++ }
++ }
++
++ SEQUENCE_CHECKER(sequence_checker_);
++
++ // This weak pointer is only valid when checked on this task runner.
++ base::WeakPtr<HidServiceFreeBSD> service_;
++ scoped_refptr<base::SequencedTaskRunner> task_runner_;
++ std::unique_ptr<base::FileDescriptorWatcher::Controller> file_watcher_;
++ std::unique_ptr<base::RepeatingTimer> timer_;
++ base::ScopedFD devd_fd_;
++ scoped_refptr<net::IOBufferWithSize> devd_buffer_;
++ std::map<std::string, int> permissions_checks_attempts_;
++};
++
++HidServiceFreeBSD::HidServiceFreeBSD()
++ : blocking_task_runner_(
++ base::ThreadPool::CreateSequencedTaskRunner(kBlockingTaskTraits)),
++ helper_(nullptr, base::OnTaskRunnerDeleter(blocking_task_runner_)) {
++ helper_.reset(new BlockingTaskRunnerHelper(weak_factory_.GetWeakPtr()));
++ blocking_task_runner_->PostTask(
++ FROM_HERE,
++ base::BindOnce(&BlockingTaskRunnerHelper::Start, base::Unretained(helper_.get())));
++}
++
++HidServiceFreeBSD::~HidServiceFreeBSD() {
++ blocking_task_runner_->DeleteSoon(FROM_HERE, helper_.release());
++}
++
++base::WeakPtr<HidService> HidServiceFreeBSD::GetWeakPtr() {
++ return weak_factory_.GetWeakPtr();
++}
++
++// static
++void HidServiceFreeBSD::OpenOnBlockingThread(
++ std::unique_ptr<ConnectParams> params) {
++ base::ScopedBlockingCall scoped_blocking_call(
++ FROM_HERE, base::BlockingType::MAY_BLOCK);
++ scoped_refptr<base::SequencedTaskRunner> task_runner = params->task_runner;
++
++ base::FilePath device_path(params->device_info->device_node());
++ base::File device_file;
++ int flags =
++ base::File::FLAG_OPEN | base::File::FLAG_READ | base::File::FLAG_WRITE;
++ device_file.Initialize(device_path, flags);
++ if (!device_file.IsValid()) {
++ HID_LOG(EVENT) << "Failed to open '" << params->device_info->device_node()
++ << "': "
++ << base::File::ErrorToString(device_file.error_details());
++ task_runner->PostTask(FROM_HERE,
++ base::BindOnce(std::move(params->callback), nullptr));
++ return;
++ }
++ params->fd.reset(device_file.TakePlatformFile());
++ task_runner->PostTask(FROM_HERE, base::BindOnce(&HidServiceFreeBSD::FinishOpen,
++ std::move(params)));
++}
++
++void HidServiceFreeBSD::Connect(const std::string& device_guid,
++ bool allow_protected_reports,
++ bool allow_fido_reports,
++ ConnectCallback callback) {
++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
++
++ const auto& map_entry = devices().find(device_guid);
++ if (map_entry == devices().end()) {
++ base::ThreadTaskRunnerHandle::Get()->PostTask(
++ FROM_HERE, base::BindOnce(std::move(callback), nullptr));
++ return;
++ }
++
++ scoped_refptr<HidDeviceInfo> device_info = map_entry->second;
++
++ auto params = std::make_unique<ConnectParams>(device_info,
++ allow_protected_reports,
++ allow_fido_reports,
++ std::move(callback));
++ scoped_refptr<base::SequencedTaskRunner> blocking_task_runner =
++ params->blocking_task_runner;
++
++ blocking_task_runner->PostTask(
++ FROM_HERE, base::BindOnce(&HidServiceFreeBSD::OpenOnBlockingThread,
++ std::move(params)));
++}
++
++// static
++void HidServiceFreeBSD::FinishOpen(std::unique_ptr<ConnectParams> params) {
++ DCHECK(params->fd.is_valid());
++
++ if (!base::SetNonBlocking(params->fd.get())) {
++ HID_PLOG(ERROR) << "Failed to set the non-blocking flag on the device fd";
++ std::move(params->callback).Run(nullptr);
++ }
++
++ std::move(params->callback).Run(base::MakeRefCounted<HidConnectionFreeBSD>(
++ std::move(params->device_info),
++ std::move(params->fd),
++ std::move(params->blocking_task_runner),
++ params->allow_protected_reports,
++ params->allow_fido_reports
++ ));
++}
++
++} // namespace device
diff --git a/devel/electron17/files/patch-services_device_hid_hid__service__freebsd.h b/devel/electron17/files/patch-services_device_hid_hid__service__freebsd.h
new file mode 100644
index 000000000000..0038f87b1864
--- /dev/null
+++ b/devel/electron17/files/patch-services_device_hid_hid__service__freebsd.h
@@ -0,0 +1,52 @@
+--- services/device/hid/hid_service_freebsd.h.orig 2022-05-13 07:20:05 UTC
++++ services/device/hid/hid_service_freebsd.h
+@@ -0,0 +1,49 @@
++// Copyright 2014 The Chromium Authors. All rights reserved.
++// Use of this source code is governed by a BSD-style license that can be
++// found in the LICENSE file.
++
++#ifndef DEVICE_HID_HID_SERVICE_FREEBSD_H_
++#define DEVICE_HID_HID_SERVICE_FREEBSD_H_
++
++#include <string>
++
++#include "base/memory/ref_counted.h"
++#include "base/memory/weak_ptr.h"
++#include "base/timer/timer.h"
++#include "services/device/hid/hid_service.h"
++#include "net/base/io_buffer.h"
++
++namespace device {
++
++class HidServiceFreeBSD : public HidService {
++ public:
++ HidServiceFreeBSD();
++
++ HidServiceFreeBSD(const HidServiceFreeBSD&) = delete;
++ HidServiceFreeBSD& operator=(const HidServiceFreeBSD&) = delete;
++
++ ~HidServiceFreeBSD() override;
++
++ void Connect(const std::string& device_guid,
++ bool allow_protected_reports,
++ bool allow_fido_reports,
++ ConnectCallback connect) override;
++ base::WeakPtr<HidService> GetWeakPtr() override;
++
++ private:
++ struct ConnectParams;
++ class BlockingTaskRunnerHelper;
++
++ static void OpenOnBlockingThread(std::unique_ptr<ConnectParams> params);
++ static void FinishOpen(std::unique_ptr<ConnectParams> params);
++
++ const scoped_refptr<base::SequencedTaskRunner> blocking_task_runner_;
++ // |helper_| lives on the sequence |blocking_task_runner_| posts to and holds
++ // a weak reference back to the service that owns it.
++ std::unique_ptr<BlockingTaskRunnerHelper, base::OnTaskRunnerDeleter> helper_;
++ base::WeakPtrFactory<HidServiceFreeBSD> weak_factory_{this};
++};
++
++} // namespace device
++
++#endif // DEVICE_HID_HID_SERVICE_FREEBSD_H_
diff --git a/devel/electron17/files/patch-services_device_serial_BUILD.gn b/devel/electron17/files/patch-services_device_serial_BUILD.gn
new file mode 100644
index 000000000000..07f8e9591b4a
--- /dev/null
+++ b/devel/electron17/files/patch-services_device_serial_BUILD.gn
@@ -0,0 +1,16 @@
+--- services/device/serial/BUILD.gn.orig 2022-05-11 07:00:53 UTC
++++ services/device/serial/BUILD.gn
+@@ -83,6 +83,13 @@ if (is_win || ((is_linux || is_chromeos) && use_udev)
+ ]
+ }
+
++ if (is_bsd) {
++ sources -= [
++ "serial_device_enumerator_linux.cc",
++ "serial_device_enumerator_linux.h"
++ ]
++ }
++
+ if (use_udev) {
+ deps += [ "//device/udev_linux" ]
+ }
diff --git a/devel/electron17/files/patch-services_device_serial_serial__device__enumerator.cc b/devel/electron17/files/patch-services_device_serial_serial__device__enumerator.cc
new file mode 100644
index 000000000000..465a31d02e64
--- /dev/null
+++ b/devel/electron17/files/patch-services_device_serial_serial__device__enumerator.cc
@@ -0,0 +1,20 @@
+--- services/device/serial/serial_device_enumerator.cc.orig 2021-01-07 00:36:39 UTC
++++ services/device/serial/serial_device_enumerator.cc
+@@ -10,7 +10,7 @@
+ #include "build/build_config.h"
+ #include "components/device_event_log/device_event_log.h"
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ #include "services/device/serial/serial_device_enumerator_linux.h"
+ #elif defined(OS_MAC)
+ #include "services/device/serial/serial_device_enumerator_mac.h"
+@@ -23,7 +23,7 @@ namespace device {
+ // static
+ std::unique_ptr<SerialDeviceEnumerator> SerialDeviceEnumerator::Create(
+ scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner) {
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ return SerialDeviceEnumeratorLinux::Create();
+ #elif defined(OS_MAC)
+ return std::make_unique<SerialDeviceEnumeratorMac>();
diff --git a/devel/electron17/files/patch-services_device_serial_serial__io__handler__posix.cc b/devel/electron17/files/patch-services_device_serial_serial__io__handler__posix.cc
new file mode 100644
index 000000000000..fbb84b98f8e4
--- /dev/null
+++ b/devel/electron17/files/patch-services_device_serial_serial__io__handler__posix.cc
@@ -0,0 +1,11 @@
+--- services/device/serial/serial_io_handler_posix.cc.orig 2022-05-11 07:16:54 UTC
++++ services/device/serial/serial_io_handler_posix.cc
+@@ -68,7 +68,7 @@ bool BitrateToSpeedConstant(int bitrate, speed_t* spee
+ BITRATE_TO_SPEED_CASE(9600)
+ BITRATE_TO_SPEED_CASE(19200)
+ BITRATE_TO_SPEED_CASE(38400)
+-#if !defined(OS_MAC)
++#if !defined(OS_MAC) && !defined(OS_BSD)
+ BITRATE_TO_SPEED_CASE(57600)
+ BITRATE_TO_SPEED_CASE(115200)
+ BITRATE_TO_SPEED_CASE(230400)
diff --git a/devel/electron17/files/patch-services_device_time__zone__monitor_time__zone__monitor__linux.cc b/devel/electron17/files/patch-services_device_time__zone__monitor_time__zone__monitor__linux.cc
new file mode 100644
index 000000000000..9af98767f06c
--- /dev/null
+++ b/devel/electron17/files/patch-services_device_time__zone__monitor_time__zone__monitor__linux.cc
@@ -0,0 +1,14 @@
+--- services/device/time_zone_monitor/time_zone_monitor_linux.cc.orig 2022-05-11 07:16:54 UTC
++++ services/device/time_zone_monitor/time_zone_monitor_linux.cc
+@@ -130,7 +130,11 @@ class TimeZoneMonitorLinuxImpl
+ // false positives are harmless, assuming the false positive rate is
+ // reasonable.
+ const char* const kFilesToWatch[] = {
++#if defined(OS_BSD)
++ "/etc/localtime",
++#else
+ "/etc/localtime", "/etc/timezone", "/etc/TZ",
++#endif
+ };
+ for (size_t index = 0; index < base::size(kFilesToWatch); ++index) {
+ file_path_watchers_.push_back(std::make_unique<base::FilePathWatcher>());
diff --git a/devel/electron17/files/patch-services_device_usb_BUILD.gn b/devel/electron17/files/patch-services_device_usb_BUILD.gn
new file mode 100644
index 000000000000..a2029c4c7d03
--- /dev/null
+++ b/devel/electron17/files/patch-services_device_usb_BUILD.gn
@@ -0,0 +1,38 @@
+--- services/device/usb/BUILD.gn.orig 2022-05-11 07:16:54 UTC
++++ services/device/usb/BUILD.gn
+@@ -102,15 +102,17 @@ static_library("usb") {
+ deps += [ "//third_party/re2" ]
+ }
+
+- if (is_mac) {
+- sources += [
+- "usb_device_handle_mac.cc",
+- "usb_device_handle_mac.h",
+- "usb_device_mac.cc",
+- "usb_device_mac.h",
+- "usb_service_mac.cc",
+- "usb_service_mac.h",
+- ]
++ if (is_mac || is_bsd) {
++ if (is_mac) {
++ sources += [
++ "usb_device_handle_mac.cc",
++ "usb_device_handle_mac.h",
++ "usb_device_mac.cc",
++ "usb_device_mac.h",
++ "usb_service_mac.cc",
++ "usb_service_mac.h",
++ ]
++ }
+
+ # These sources and deps are required for libusb.
+ # TODO(https://crbug.com/1096743) Remove these sources.
+@@ -151,7 +153,7 @@ static_library("usb") {
+ deps += [ "//device/udev_linux" ]
+ }
+
+- if (is_android || is_chromeos || is_linux) {
++ if (is_android || is_chromeos || is_linux && !is_bsd) {
+ sources += [
+ "usb_device_handle_usbfs.cc",
+ "usb_device_handle_usbfs.h",
diff --git a/devel/electron17/files/patch-services_network_BUILD.gn b/devel/electron17/files/patch-services_network_BUILD.gn
new file mode 100644
index 000000000000..87b6c3f5123f
--- /dev/null
+++ b/devel/electron17/files/patch-services_network_BUILD.gn
@@ -0,0 +1,10 @@
+--- services/network/BUILD.gn.orig 2022-05-11 07:16:54 UTC
++++ services/network/BUILD.gn
+@@ -311,7 +311,6 @@ if (is_linux || is_chromeos) {
+ ]
+ deps = [
+ "//base:base",
+- "//sandbox/linux:sandbox_services",
+ "//sandbox/policy:policy",
+ ]
+ }
diff --git a/devel/electron17/files/patch-services_network_network__context.cc b/devel/electron17/files/patch-services_network_network__context.cc
new file mode 100644
index 000000000000..411ed53b7c97
--- /dev/null
+++ b/devel/electron17/files/patch-services_network_network__context.cc
@@ -0,0 +1,11 @@
+--- services/network/network_context.cc.orig 2022-05-13 07:19:54 UTC
++++ services/network/network_context.cc
+@@ -2651,7 +2651,7 @@ NetworkContext::MakeSessionCleanupCookieStore() const
+
+ net::CookieCryptoDelegate* crypto_delegate = nullptr;
+ if (params_->enable_encrypted_cookies) {
+-#if (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) && \
++#if (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)) && \
+ !BUILDFLAG(IS_CHROMECAST)
+ DCHECK(network_service_->os_crypt_config_set())
+ << "NetworkService::SetCryptConfig must be called before creating a "
diff --git a/devel/electron17/files/patch-services_network_network__sandbox__hook__linux.cc b/devel/electron17/files/patch-services_network_network__sandbox__hook__linux.cc
new file mode 100644
index 000000000000..3f33c136909c
--- /dev/null
+++ b/devel/electron17/files/patch-services_network_network__sandbox__hook__linux.cc
@@ -0,0 +1,18 @@
+--- services/network/network_sandbox_hook_linux.cc.orig 2022-05-11 07:00:54 UTC
++++ services/network/network_sandbox_hook_linux.cc
+@@ -32,6 +32,7 @@ std::vector<BrokerFilePermission> GetNetworkFilePermis
+ }
+
+ bool NetworkPreSandboxHook(sandbox::policy::SandboxLinux::Options options) {
++#if !defined(OS_BSD)
+ auto* instance = sandbox::policy::SandboxLinux::GetInstance();
+
+ instance->StartBrokerProcess(
+@@ -39,6 +40,7 @@ bool NetworkPreSandboxHook(sandbox::policy::SandboxLin
+ sandbox::policy::SandboxLinux::PreSandboxHook(), options);
+
+ instance->EngageNamespaceSandboxIfPossible();
++#endif
+ return true;
+ }
+
diff --git a/devel/electron17/files/patch-services_network_network__sandbox__hook__linux.h b/devel/electron17/files/patch-services_network_network__sandbox__hook__linux.h
new file mode 100644
index 000000000000..8d5af5cd878b
--- /dev/null
+++ b/devel/electron17/files/patch-services_network_network__sandbox__hook__linux.h
@@ -0,0 +1,14 @@
+--- services/network/network_sandbox_hook_linux.h.orig 2022-05-11 07:00:54 UTC
++++ services/network/network_sandbox_hook_linux.h
+@@ -10,7 +10,11 @@
+ #include "base/component_export.h"
+ #include "sandbox/linux/syscall_broker/broker_command.h"
+ #include "sandbox/linux/syscall_broker/broker_file_permission.h"
++#if defined(OS_BSD)
++#include "sandbox/policy/openbsd/sandbox_openbsd.h"
++#else
+ #include "sandbox/policy/linux/sandbox_linux.h"
++#endif
+
+ namespace network {
+
diff --git a/devel/electron17/files/patch-services_network_network__service.cc b/devel/electron17/files/patch-services_network_network__service.cc
new file mode 100644
index 000000000000..2447cc2311a7
--- /dev/null
+++ b/devel/electron17/files/patch-services_network_network__service.cc
@@ -0,0 +1,20 @@
+--- services/network/network_service.cc.orig 2022-05-11 07:16:54 UTC
++++ services/network/network_service.cc
+@@ -76,7 +76,7 @@
+ #include "third_party/boringssl/src/include/openssl/cpu.h"
+ #endif
+
+-#if (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) && \
++#if (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)) && \
+ !BUILDFLAG(IS_CHROMECAST)
+ #include "components/os_crypt/key_storage_config_linux.h"
+ #endif
+@@ -625,7 +625,7 @@ void NetworkService::OnCertDBChanged() {
+ net::CertDatabase::GetInstance()->NotifyObserversCertDBChanged();
+ }
+
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ void NetworkService::SetCryptConfig(mojom::CryptConfigPtr crypt_config) {
+ #if !BUILDFLAG(IS_CHROMECAST)
+ DCHECK(!os_crypt_config_set_);
diff --git a/devel/electron17/files/patch-services_network_network__service.h b/devel/electron17/files/patch-services_network_network__service.h
new file mode 100644
index 000000000000..0c5ac3eec5ba
--- /dev/null
+++ b/devel/electron17/files/patch-services_network_network__service.h
@@ -0,0 +1,11 @@
+--- services/network/network_service.h.orig 2021-11-19 04:25:21 UTC
++++ services/network/network_service.h
+@@ -165,7 +165,7 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkService
+ base::span<const uint8_t> crl_set,
+ mojom::NetworkService::UpdateCRLSetCallback callback) override;
+ void OnCertDBChanged() override;
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ void SetCryptConfig(mojom::CryptConfigPtr crypt_config) override;
+ #endif
+ #if defined(OS_WIN) || defined(OS_MAC)
diff --git a/devel/electron17/files/patch-services_resource__coordinator_public_cpp_memory__instrumentation_os__metrics.h b/devel/electron17/files/patch-services_resource__coordinator_public_cpp_memory__instrumentation_os__metrics.h
new file mode 100644
index 000000000000..37aaaf34a461
--- /dev/null
+++ b/devel/electron17/files/patch-services_resource__coordinator_public_cpp_memory__instrumentation_os__metrics.h
@@ -0,0 +1,20 @@
+--- services/resource_coordinator/public/cpp/memory_instrumentation/os_metrics.h.orig 2022-05-11 07:16:54 UTC
++++ services/resource_coordinator/public/cpp/memory_instrumentation/os_metrics.h
+@@ -45,7 +45,7 @@ class COMPONENT_EXPORT(
+ mojom::RawOSMemDump*);
+ static std::vector<mojom::VmRegionPtr> GetProcessMemoryMaps(base::ProcessId);
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID) || defined(OS_BSD)
+ static void SetProcSmapsForTesting(FILE*);
+ #endif // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
+
+@@ -61,7 +61,7 @@ class COMPONENT_EXPORT(
+ static std::vector<mojom::VmRegionPtr> GetProcessModules(base::ProcessId);
+ #endif
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID) || defined(OS_BSD)
+ // Provides information on the dump state of resident pages. These values are
+ // written to logs. New enum values can be added, but existing enums must
+ // never be renumbered or deleted and reused.
diff --git a/devel/electron17/files/patch-services_resource__coordinator_public_cpp_memory__instrumentation_os__metrics__linux.cc b/devel/electron17/files/patch-services_resource__coordinator_public_cpp_memory__instrumentation_os__metrics__linux.cc
new file mode 100644
index 000000000000..b120572dcba0
--- /dev/null
+++ b/devel/electron17/files/patch-services_resource__coordinator_public_cpp_memory__instrumentation_os__metrics__linux.cc
@@ -0,0 +1,83 @@
+--- services/resource_coordinator/public/cpp/memory_instrumentation/os_metrics_linux.cc.orig 2022-05-11 07:16:54 UTC
++++ services/resource_coordinator/public/cpp/memory_instrumentation/os_metrics_linux.cc
+@@ -5,7 +5,9 @@
+ #include <dlfcn.h>
+ #include <fcntl.h>
+ #include <stdint.h>
++#if !defined(__OpenBSD__) && !defined(__FreeBSD__)
+ #include <sys/prctl.h>
++#endif
+
+ #include <memory>
+
+@@ -26,8 +28,10 @@
+ #include "build/build_config.h"
+ #include "services/resource_coordinator/public/cpp/memory_instrumentation/os_metrics.h"
+
++#if !defined(OS_BSD)
+ // Symbol with virtual address of the start of ELF header of the current binary.
+ extern char __ehdr_start;
++#endif
+
+ namespace memory_instrumentation {
+
+@@ -39,6 +43,7 @@ using mojom::VmRegionPtr;
+ const char kClearPeakRssCommand[] = "5";
+ const uint32_t kMaxLineSize = 4096;
+
++#if !defined(OS_BSD)
+ // TODO(chiniforooshan): Many of the utility functions in this anonymous
+ // namespace should move to base/process/process_metrics_linux.cc to make the
+ // code a lot cleaner. However, we should do so after we made sure the metrics
+@@ -267,6 +272,7 @@ class ScopedProcessSetDumpable {
+
+ bool was_dumpable_;
+ };
++#endif
+
+ } // namespace
+
+@@ -280,6 +286,9 @@ void OSMetrics::SetProcSmapsForTesting(FILE* f) {
+ // static
+ bool OSMetrics::FillOSMemoryDump(base::ProcessId pid,
+ mojom::RawOSMemDump* dump) {
++#if defined(OS_BSD)
++ return false;
++#else
+ // TODO(chiniforooshan): There is no need to read both /statm and /status
+ // files. Refactor to get everything from /status using ProcessMetric.
+ auto statm_file = GetProcPidDir(pid).Append("statm");
+@@ -336,10 +345,12 @@ bool OSMetrics::FillOSMemoryDump(base::ProcessId pid,
+ #endif // defined(OS_ANDROID)
+
+ return true;
++#endif
+ }
+
+ // static
+ std::vector<VmRegionPtr> OSMetrics::GetProcessMemoryMaps(base::ProcessId pid) {
++#if !defined(OS_BSD)
+ std::vector<VmRegionPtr> maps;
+ uint32_t res = 0;
+ if (g_proc_smaps_for_testing) {
+@@ -357,8 +368,13 @@ std::vector<VmRegionPtr> OSMetrics::GetProcessMemoryMa
+ return std::vector<VmRegionPtr>();
+
+ return maps;
++#else
++ NOTIMPLEMENTED();
++ return std::vector<VmRegionPtr>();
++#endif
+ }
+
++#if !defined(OS_BSD)
+ // static
+ OSMetrics::MappedAndResidentPagesDumpState OSMetrics::GetMappedAndResidentPages(
+ const size_t start_address,
+@@ -446,5 +462,6 @@ size_t OSMetrics::GetPeakResidentSetSize(base::Process
+ }
+ return 0;
+ }
++#endif
+
+ } // namespace memory_instrumentation
diff --git a/devel/electron17/files/patch-services_service__manager_BUILD.gn b/devel/electron17/files/patch-services_service__manager_BUILD.gn
new file mode 100644
index 000000000000..9a96c8457d51
--- /dev/null
+++ b/devel/electron17/files/patch-services_service__manager_BUILD.gn
@@ -0,0 +1,11 @@
+--- services/service_manager/BUILD.gn.orig 2022-05-11 07:00:54 UTC
++++ services/service_manager/BUILD.gn
+@@ -67,7 +67,7 @@ source_set("service_manager") {
+ ]
+ }
+
+- if (is_linux || is_chromeos) {
++ if ((is_linux || is_chromeos) && !is_bsd) {
+ deps += [ "//sandbox/linux:sandbox_services" ]
+ }
+ }
diff --git a/devel/electron17/files/patch-services_service__manager_public_cpp_service__executable_BUILD.gn b/devel/electron17/files/patch-services_service__manager_public_cpp_service__executable_BUILD.gn
new file mode 100644
index 000000000000..150bf6c5e9f0
--- /dev/null
+++ b/devel/electron17/files/patch-services_service__manager_public_cpp_service__executable_BUILD.gn
@@ -0,0 +1,11 @@
+--- services/service_manager/public/cpp/service_executable/BUILD.gn.orig 2021-01-07 00:36:39 UTC
++++ services/service_manager/public/cpp/service_executable/BUILD.gn
+@@ -22,7 +22,7 @@ source_set("support") {
+ "//services/service_manager/public/mojom",
+ ]
+
+- if (is_linux || is_chromeos) {
++ if ((is_linux || is_chromeos) && !is_bsd) {
+ deps += [
+ "//sandbox/linux:sandbox",
+ "//sandbox/linux:sandbox_services",
diff --git a/devel/electron17/files/patch-services_tracing_public_cpp_perfetto_perfetto__config.cc b/devel/electron17/files/patch-services_tracing_public_cpp_perfetto_perfetto__config.cc
new file mode 100644
index 000000000000..47c825be5a3a
--- /dev/null
+++ b/devel/electron17/files/patch-services_tracing_public_cpp_perfetto_perfetto__config.cc
@@ -0,0 +1,11 @@
+--- services/tracing/public/cpp/perfetto/perfetto_config.cc.orig 2021-11-19 04:25:21 UTC
++++ services/tracing/public/cpp/perfetto/perfetto_config.cc
+@@ -124,7 +124,7 @@ void AddDataSourceConfigs(
+ // TODO(crbug.com/1052397): Revisit once build flag switch of lacros-chrome is
+ // complete.
+ #if BUILDFLAG(IS_CHROMEOS_ASH) || \
+- (BUILDFLAG(IS_CHROMECAST) && defined(OS_LINUX))
++ (BUILDFLAG(IS_CHROMECAST) && (defined(OS_LINUX) || defined(OS_BSD)))
+ if (source_names.empty() ||
+ source_names.count(tracing::mojom::kSystemTraceDataSourceName) == 1) {
+ AddDataSourceConfig(
diff --git a/devel/electron17/files/patch-services_video__capture_broadcasting__receiver.cc b/devel/electron17/files/patch-services_video__capture_broadcasting__receiver.cc
new file mode 100644
index 000000000000..6e98aee83588
--- /dev/null
+++ b/devel/electron17/files/patch-services_video__capture_broadcasting__receiver.cc
@@ -0,0 +1,20 @@
+--- services/video_capture/broadcasting_receiver.cc.orig 2022-05-11 07:16:54 UTC
++++ services/video_capture/broadcasting_receiver.cc
+@@ -28,7 +28,7 @@ void CloneSharedBufferHandle(const mojo::ScopedSharedB
+ void CloneSharedBufferToRawFileDescriptorHandle(
+ const mojo::ScopedSharedBufferHandle& source,
+ media::mojom::VideoBufferHandlePtr* target) {
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // |source| is unwrapped to a |PlatformSharedMemoryRegion|, from whence a file
+ // descriptor can be extracted which is then mojo-wrapped.
+ base::subtle::PlatformSharedMemoryRegion platform_region =
+@@ -240,7 +240,7 @@ void BroadcastingReceiver::BufferContext::
+ ConvertRawFileDescriptorToSharedBuffer() {
+ DCHECK(buffer_handle_->is_shared_memory_via_raw_file_descriptor());
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // The conversion unwraps the descriptor from its mojo handle to the raw file
+ // descriptor (ie, an int). This is used to create a
+ // PlatformSharedMemoryRegion which is then wrapped as a
diff --git a/devel/electron17/files/patch-services_video__capture_public_mojom_video__capture__service.mojom b/devel/electron17/files/patch-services_video__capture_public_mojom_video__capture__service.mojom
new file mode 100644
index 000000000000..ab32ca5a901a
--- /dev/null
+++ b/devel/electron17/files/patch-services_video__capture_public_mojom_video__capture__service.mojom
@@ -0,0 +1,15 @@
+--- services/video_capture/public/mojom/video_capture_service.mojom.orig 2022-05-11 07:00:54 UTC
++++ services/video_capture/public/mojom/video_capture_service.mojom
+@@ -21,10 +21,10 @@ interface AcceleratorFactory {
+ pending_receiver<chromeos_camera.mojom.MjpegDecodeAccelerator> jda);
+ };
+
+-[EnableIf=is_fuchsia]
++[EnableIf=is_openbsd]
+ const sandbox.mojom.Sandbox kVideoCaptureSandbox
+ = sandbox.mojom.Sandbox.kVideoCapture;
+-[EnableIfNot=is_fuchsia]
++[EnableIfNot=is_openbsd]
+ const sandbox.mojom.Sandbox kVideoCaptureSandbox
+ = sandbox.mojom.Sandbox.kNoSandbox;
+
diff --git a/devel/electron17/files/patch-skia_ext_SkMemory__new__handler.cpp b/devel/electron17/files/patch-skia_ext_SkMemory__new__handler.cpp
new file mode 100644
index 000000000000..78af24117b19
--- /dev/null
+++ b/devel/electron17/files/patch-skia_ext_SkMemory__new__handler.cpp
@@ -0,0 +1,11 @@
+--- skia/ext/SkMemory_new_handler.cpp.orig 2022-05-11 07:16:54 UTC
++++ skia/ext/SkMemory_new_handler.cpp
+@@ -78,7 +78,7 @@ static void* malloc_nothrow(size_t size) {
+ // TODO(b.kelemen): we should always use UncheckedMalloc but currently it
+ // doesn't work as intended everywhere.
+ void* result;
+-#if defined(OS_IOS)
++#if defined(OS_IOS) || defined(OS_BSD)
+ result = malloc(size);
+ #else
+ // It's the responsibility of the caller to check the return value.
diff --git a/devel/electron17/files/patch-third__party_abseil-cpp_absl_base_config.h b/devel/electron17/files/patch-third__party_abseil-cpp_absl_base_config.h
new file mode 100644
index 000000000000..b49099df3b2f
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_abseil-cpp_absl_base_config.h
@@ -0,0 +1,40 @@
+--- third_party/abseil-cpp/absl/base/config.h.orig 2022-05-11 07:16:54 UTC
++++ third_party/abseil-cpp/absl/base/config.h
+@@ -414,7 +414,7 @@ static_assert(ABSL_INTERNAL_INLINE_NAMESPACE_STR[0] !=
+ defined(_AIX) || defined(__ros__) || defined(__native_client__) || \
+ defined(__asmjs__) || defined(__wasm__) || defined(__Fuchsia__) || \
+ defined(__sun) || defined(__ASYLO__) || defined(__myriad2__) || \
+- defined(__HAIKU__)
++ defined(__HAIKU__) || defined(__OpenBSD__)
+ #define ABSL_HAVE_MMAP 1
+ #endif
+
+@@ -425,7 +425,7 @@ static_assert(ABSL_INTERNAL_INLINE_NAMESPACE_STR[0] !=
+ #ifdef ABSL_HAVE_PTHREAD_GETSCHEDPARAM
+ #error ABSL_HAVE_PTHREAD_GETSCHEDPARAM cannot be directly set
+ #elif defined(__linux__) || defined(__APPLE__) || defined(__FreeBSD__) || \
+- defined(_AIX) || defined(__ros__)
++ defined(_AIX) || defined(__ros__) || defined(__OpenBSD__)
+ #define ABSL_HAVE_PTHREAD_GETSCHEDPARAM 1
+ #endif
+
+@@ -444,7 +444,8 @@ static_assert(ABSL_INTERNAL_INLINE_NAMESPACE_STR[0] !=
+ // POSIX.1-2001.
+ #ifdef ABSL_HAVE_SCHED_YIELD
+ #error ABSL_HAVE_SCHED_YIELD cannot be directly set
+-#elif defined(__linux__) || defined(__ros__) || defined(__native_client__)
++#elif defined(__linux__) || defined(__ros__) || defined(__native_client__) || \
++ defined(__OpenBSD__) || defined(__FreeBSD__)
+ #define ABSL_HAVE_SCHED_YIELD 1
+ #endif
+
+@@ -459,7 +460,8 @@ static_assert(ABSL_INTERNAL_INLINE_NAMESPACE_STR[0] !=
+ // platforms.
+ #ifdef ABSL_HAVE_SEMAPHORE_H
+ #error ABSL_HAVE_SEMAPHORE_H cannot be directly set
+-#elif defined(__linux__) || defined(__ros__)
++#elif defined(__linux__) || defined(__ros__) || defined(__OpenBSD__) || \
++ defined(__FreeBSD__)
+ #define ABSL_HAVE_SEMAPHORE_H 1
+ #endif
+
diff --git a/devel/electron17/files/patch-third__party_abseil-cpp_absl_base_internal_endian.h b/devel/electron17/files/patch-third__party_abseil-cpp_absl_base_internal_endian.h
new file mode 100644
index 000000000000..c712414157f7
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_abseil-cpp_absl_base_internal_endian.h
@@ -0,0 +1,11 @@
+--- third_party/abseil-cpp/absl/base/internal/endian.h.orig 2022-05-11 07:16:54 UTC
++++ third_party/abseil-cpp/absl/base/internal/endian.h
+@@ -19,7 +19,7 @@
+ // The following guarantees declaration of the byte swap functions
+ #ifdef _MSC_VER
+ #include <stdlib.h> // NOLINT(build/include)
+-#elif defined(__FreeBSD__)
++#elif defined(__FreeBSD__) || defined(__OpenBSD__)
+ #include <sys/endian.h>
+ #elif defined(__GLIBC__)
+ #include <byteswap.h> // IWYU pragma: export
diff --git a/devel/electron17/files/patch-third__party_abseil-cpp_absl_base_internal_sysinfo.cc b/devel/electron17/files/patch-third__party_abseil-cpp_absl_base_internal_sysinfo.cc
new file mode 100644
index 000000000000..825ca2e149b1
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_abseil-cpp_absl_base_internal_sysinfo.cc
@@ -0,0 +1,23 @@
+--- third_party/abseil-cpp/absl/base/internal/sysinfo.cc.orig 2022-05-11 07:16:54 UTC
++++ third_party/abseil-cpp/absl/base/internal/sysinfo.cc
+@@ -30,7 +30,7 @@
+ #include <sys/syscall.h>
+ #endif
+
+-#if defined(__APPLE__) || defined(__FreeBSD__)
++#if defined(__APPLE__) || defined(__FreeBSD__) || defined(__OpenBSD__)
+ #include <sys/sysctl.h>
+ #endif
+
+@@ -308,9 +308,11 @@ static double GetNominalCPUFrequency() {
+ // a new mode (turbo mode). Essentially, those frequencies cannot
+ // always be relied upon. The same reasons apply to /proc/cpuinfo as
+ // well.
++#if !defined(__OpenBSD__) && !defined(__FreeBSD__) // pledge violation
+ if (ReadLongFromFile("/sys/devices/system/cpu/cpu0/tsc_freq_khz", &freq)) {
+ return freq * 1e3; // Value is kHz.
+ }
++#endif
+
+ #if defined(ABSL_INTERNAL_UNSCALED_CYCLECLOCK_FREQUENCY_IS_CPU_FREQUENCY)
+ // On these platforms, the TSC frequency is the nominal CPU
diff --git a/devel/electron17/files/patch-third__party_abseil-cpp_absl_debugging_internal_elf__mem__image.h b/devel/electron17/files/patch-third__party_abseil-cpp_absl_debugging_internal_elf__mem__image.h
new file mode 100644
index 000000000000..9d0a55a8fd58
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_abseil-cpp_absl_debugging_internal_elf__mem__image.h
@@ -0,0 +1,11 @@
+--- third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h.orig 2022-05-11 07:16:54 UTC
++++ third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h
+@@ -32,7 +32,7 @@
+ #endif
+
+ #if defined(__ELF__) && !defined(__native_client__) && !defined(__asmjs__) && \
+- !defined(__wasm__)
++ !defined(__wasm__) && !defined(__OpenBSD__) && !defined(__FreeBSD__)
+ #define ABSL_HAVE_ELF_MEM_IMAGE 1
+ #endif
+
diff --git a/devel/electron17/files/patch-third__party_abseil-cpp_absl_time_internal_cctz_src_time__zone__format.cc b/devel/electron17/files/patch-third__party_abseil-cpp_absl_time_internal_cctz_src_time__zone__format.cc
new file mode 100644
index 000000000000..c2bfd50613a5
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_abseil-cpp_absl_time_internal_cctz_src_time__zone__format.cc
@@ -0,0 +1,11 @@
+--- third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc.orig 2022-05-11 07:00:55 UTC
++++ third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc
+@@ -19,7 +19,7 @@
+ #endif
+
+ #if defined(HAS_STRPTIME) && HAS_STRPTIME
+-#if !defined(_XOPEN_SOURCE)
++#if !defined(_XOPEN_SOURCE) && !defined(__OpenBSD__) && !defined(__FreeBSD__)
+ #define _XOPEN_SOURCE // Definedness suffices for strptime.
+ #endif
+ #endif
diff --git a/devel/electron17/files/patch-third__party_angle_BUILD.gn b/devel/electron17/files/patch-third__party_angle_BUILD.gn
new file mode 100644
index 000000000000..3349d3ddb548
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_angle_BUILD.gn
@@ -0,0 +1,29 @@
+--- third_party/angle/BUILD.gn.orig 2022-05-11 07:17:22 UTC
++++ third_party/angle/BUILD.gn
+@@ -206,7 +206,6 @@ config("extra_warnings") {
+ "-Wtautological-type-limit-compare",
+ "-Wundefined-reinterpret-cast",
+ "-Wunneeded-internal-declaration",
+- "-Wunused-but-set-variable",
+ "-Wsuggest-destructor-override",
+ "-Wsuggest-override",
+
+@@ -384,7 +383,7 @@ angle_static_library("angle_common") {
+ all_dependent_configs = [ ":angle_disable_pool_alloc" ]
+ }
+
+- if (is_linux || is_chromeos) {
++ if ((is_linux || is_chromeos) && !is_bsd) {
+ libs = [ "dl" ]
+ }
+
+@@ -498,6 +497,9 @@ angle_static_library("angle_gpu_info_util") {
+ "Xi",
+ "Xext",
+ ]
++ if (is_bsd) {
++ libs += [ "GL" ]
++ }
+ }
+ }
+
diff --git a/devel/electron17/files/patch-third__party_angle_src_common_platform.h b/devel/electron17/files/patch-third__party_angle_src_common_platform.h
new file mode 100644
index 000000000000..21ecb832eccb
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_angle_src_common_platform.h
@@ -0,0 +1,19 @@
+--- third_party/angle/src/common/platform.h.orig 2022-05-11 07:17:22 UTC
++++ third_party/angle/src/common/platform.h
+@@ -26,7 +26,15 @@
+ #elif defined(__linux__) || defined(EMSCRIPTEN)
+ # define ANGLE_PLATFORM_LINUX 1
+ # define ANGLE_PLATFORM_POSIX 1
+-#elif defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__NetBSD__) || \
++#elif defined(__OpenBSD__)
++# define ANGLE_PLATFORM_OPENBSD 1
++# define ANGLE_PLATFORM_POSIX 1
++# define ANGLE_PLATFORM_BSD 1
++#elif defined(__FreeBSD__)
++# define ANGLE_PLATFORM_FREEBSD 1
++# define ANGLE_PLATFORM_POSIX 1
++# define ANGLE_PLATFORM_BSD 1
++#elif defined(__NetBSD__) || \
+ defined(__DragonFly__) || defined(__sun) || defined(__GLIBC__) || defined(__GNU__) || \
+ defined(__QNX__) || defined(__Fuchsia__) || defined(__HAIKU__)
+ # define ANGLE_PLATFORM_POSIX 1
diff --git a/devel/electron17/files/patch-third__party_angle_src_common_system__utils__posix.cpp b/devel/electron17/files/patch-third__party_angle_src_common_system__utils__posix.cpp
new file mode 100644
index 000000000000..7a7883e20aa4
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_angle_src_common_system__utils__posix.cpp
@@ -0,0 +1,12 @@
+--- third_party/angle/src/common/system_utils_posix.cpp.orig 2022-05-11 07:17:22 UTC
++++ third_party/angle/src/common/system_utils_posix.cpp
+@@ -159,7 +159,9 @@ Library *OpenSharedLibraryWithExtension(const char *li
+ int extraFlags = 0;
+ if (searchType == SearchType::AlreadyLoaded)
+ {
++#if !defined(__OpenBSD__)
+ extraFlags = RTLD_NOLOAD;
++#endif
+ }
+
+ std::string fullPath = directory + libraryName;
diff --git a/devel/electron17/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__internal.h b/devel/electron17/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__internal.h
new file mode 100644
index 000000000000..a7f44f355eea
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__internal.h
@@ -0,0 +1,16 @@
+--- third_party/angle/src/gpu_info_util/SystemInfo_internal.h.orig 2022-05-11 07:03:14 UTC
++++ third_party/angle/src/gpu_info_util/SystemInfo_internal.h
+@@ -14,6 +14,13 @@
+ namespace angle
+ {
+
++#if defined(__OpenBSD__) || defined(__FreeBSD__)
++bool CollectMesaCardInfo(std::vector<GPUDeviceInfo> *devices);
++#if defined(__FreeBSD__)
++bool GetPCIDevicesFreeBSD(std::vector<GPUDeviceInfo> *devices);
++#endif
++#endif
++
+ // Defined in SystemInfo_libpci when GPU_INFO_USE_LIBPCI is defined.
+ bool GetPCIDevicesWithLibPCI(std::vector<GPUDeviceInfo> *devices);
+ // Defined in SystemInfo_x11 when GPU_INFO_USE_X11 is defined.
diff --git a/devel/electron17/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__libpci.cpp b/devel/electron17/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__libpci.cpp
new file mode 100644
index 000000000000..056966760053
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__libpci.cpp
@@ -0,0 +1,90 @@
+--- third_party/angle/src/gpu_info_util/SystemInfo_libpci.cpp.orig 2021-07-15 19:15:42 UTC
++++ third_party/angle/src/gpu_info_util/SystemInfo_libpci.cpp
+@@ -12,6 +12,11 @@
+ #include <pci/pci.h>
+ #include <unistd.h>
+
++#if defined(__FreeBSD__)
++#include <fcntl.h>
++#include <sys/pciio.h>
++#endif
++
+ #include "common/angleutils.h"
+ #include "common/debug.h"
+
+@@ -85,6 +90,75 @@ struct LibPCI : private angle::NonCopyable
+ };
+
+ } // anonymous namespace
++
++#if defined(__FreeBSD__)
++// Adds an entry per PCI GPU found and fills the device and vendor ID.
++bool GetPCIDevicesFreeBSD(std::vector<GPUDeviceInfo> *devices)
++{
++ int fd;
++ struct pci_conf_io conf;
++ struct pci_conf *matches;
++ uint32_t offset = 0;
++
++ fd = open("/dev/pci", O_RDONLY);
++ if (fd < 0)
++ return false;
++
++ matches = new struct pci_conf[32];
++ conf.generation = 0;
++ do {
++ conf.pat_buf_len = 0;
++ conf.num_patterns = 0;
++ conf.patterns = NULL;
++ conf.match_buf_len = 32 * sizeof(struct pci_conf);
++ conf.num_matches = 32;
++ conf.matches = matches;
++ conf.offset = offset;
++ conf.status = PCI_GETCONF_ERROR;
++ if (ioctl(fd, PCIOCGETCONF, &conf) < 0) {
++ if (errno == ENODEV)
++ break;
++ }
++ /* PCI_GETCONF_LIST_CHANGED would require us to start over. */
++ if (conf.status == PCI_GETCONF_ERROR || conf.status == PCI_GETCONF_LIST_CHANGED) {
++ break;
++ }
++
++ for (unsigned int i = 0; i < conf.num_matches; i++) {
++ uint16_t device_class = (matches[i].pc_class << 8) | matches[i].pc_subclass;
++
++ // Skip non-GPU devices
++ switch (device_class)
++ {
++ case PCI_CLASS_DISPLAY_VGA:
++ case PCI_CLASS_DISPLAY_XGA:
++ case PCI_CLASS_DISPLAY_3D:
++ break;
++ default:
++ continue;
++ }
++
++ // Skip unknown devices
++ if (matches[i].pc_vendor == 0 || matches[i].pc_device == 0) {
++ continue;
++ }
++
++ GPUDeviceInfo info;
++ info.vendorId = matches[i].pc_vendor;
++ info.deviceId = matches[i].pc_device;
++
++ devices->push_back(info);
++ }
++ offset += conf.num_matches;
++ } while (conf.status == PCI_GETCONF_MORE_DEVS);
++
++ delete[] matches;
++
++ close(fd);
++
++ return true;
++}
++#endif
+
+ // Adds an entry per PCI GPU found and fills the device and vendor ID.
+ bool GetPCIDevicesWithLibPCI(std::vector<GPUDeviceInfo> *devices)
diff --git a/devel/electron17/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__linux.cpp b/devel/electron17/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__linux.cpp
new file mode 100644
index 000000000000..6a9990f48f7f
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__linux.cpp
@@ -0,0 +1,35 @@
+--- third_party/angle/src/gpu_info_util/SystemInfo_linux.cpp.orig 2022-05-11 07:03:14 UTC
++++ third_party/angle/src/gpu_info_util/SystemInfo_linux.cpp
+@@ -71,6 +71,24 @@ bool GetPCIDevicesWithLibPCI(std::vector<GPUDeviceInfo
+
+ bool GetSystemInfo(SystemInfo *info)
+ {
++#if defined(__OpenBSD__) || defined(__FreeBSD__)
++ if (!CollectMesaCardInfo(&(info->gpus)))
++ {
++#if defined(__FreeBSD__)
++ if (!GetPCIDevicesFreeBSD(&(info->gpus)))
++ {
++#endif
++#if defined(ANGLE_USE_VULKAN_SYSTEM_INFO)
++ // Try vulkan backend to get GPU info
++ return GetSystemInfoVulkan(info);
++#else
++ return false;
++#endif
++#if defined(__FreeBSD__)
++ }
++#endif
++ }
++#else
+ if (!GetPCIDevicesWithLibPCI(&(info->gpus)))
+ {
+ #if defined(ANGLE_USE_VULKAN_SYSTEM_INFO)
+@@ -85,6 +103,7 @@ bool GetSystemInfo(SystemInfo *info)
+ {
+ return false;
+ }
++#endif
+
+ GetDualGPUInfo(info);
+
diff --git a/devel/electron17/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__x11.cpp b/devel/electron17/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__x11.cpp
new file mode 100644
index 000000000000..66f947e7afb3
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__x11.cpp
@@ -0,0 +1,60 @@
+--- third_party/angle/src/gpu_info_util/SystemInfo_x11.cpp.orig 2022-05-11 07:03:14 UTC
++++ third_party/angle/src/gpu_info_util/SystemInfo_x11.cpp
+@@ -8,6 +8,10 @@
+
+ #include "gpu_info_util/SystemInfo_internal.h"
+
++#if defined(__OpenBSD__) || defined(__FreeBSD__)
++#include <GL/glx.h>
++#include <GL/glxext.h>
++#endif
+ #include <X11/Xlib.h>
+
+ #include "common/debug.h"
+@@ -18,8 +22,46 @@
+ # error SystemInfo_x11.cpp compiled without GPU_INFO_USE_X11
+ #endif
+
++#if defined(__OpenBSD__) || defined(__FreeBSD__)
++#define GLX_RENDERER_VENDOR_ID_MESA 0x8183
++#define GLX_RENDERER_DEVICE_ID_MESA 0x8184
++#endif
++
+ namespace angle
+ {
++
++#if defined(__OpenBSD__) || defined(__FreeBSD__)
++bool CollectMesaCardInfo(std::vector<GPUDeviceInfo> *devices)
++{
++ unsigned int vid[3], did[3];
++
++ Display *display = XOpenDisplay(NULL);
++ if (!display) {
++ return false;
++ }
++
++ PFNGLXQUERYRENDERERINTEGERMESAPROC queryInteger =
++ (PFNGLXQUERYRENDERERINTEGERMESAPROC) glXGetProcAddressARB((const GLubyte *)
++ "glXQueryRendererIntegerMESA");
++
++ if (!queryInteger)
++ return false;
++
++ bool vendor_ret =
++ queryInteger(display, 0, 0, GLX_RENDERER_VENDOR_ID_MESA, vid);
++ bool device_ret =
++ queryInteger(display, 0, 0, GLX_RENDERER_DEVICE_ID_MESA, did);
++
++ if (vendor_ret && device_ret) {
++ GPUDeviceInfo info;
++ info.vendorId = vid[0];
++ info.deviceId = did[0];
++ devices->push_back(info);
++ }
++
++ return true;
++}
++#endif
+
+ bool GetNvidiaDriverVersionWithXNVCtrl(std::string *version)
+ {
diff --git a/devel/electron17/files/patch-third__party_angle_src_libANGLE_Display.cpp b/devel/electron17/files/patch-third__party_angle_src_libANGLE_Display.cpp
new file mode 100644
index 000000000000..49b3b2e764e9
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_angle_src_libANGLE_Display.cpp
@@ -0,0 +1,47 @@
+--- third_party/angle/src/libANGLE/Display.cpp.orig 2022-05-11 07:17:23 UTC
++++ third_party/angle/src/libANGLE/Display.cpp
+@@ -55,7 +55,7 @@
+ # include "libANGLE/renderer/gl/wgl/DisplayWGL.h"
+ # elif defined(ANGLE_PLATFORM_MACOS) || defined(ANGLE_PLATFORM_IOS)
+ # include "libANGLE/renderer/gl/apple/DisplayApple_api.h"
+-# elif defined(ANGLE_PLATFORM_LINUX)
++# elif defined(ANGLE_PLATFORM_LINUX) || defined(ANGLE_PLATFORM_BSD)
+ # include "libANGLE/renderer/gl/egl/DisplayEGL.h"
+ # if defined(ANGLE_USE_GBM)
+ # include "libANGLE/renderer/gl/egl/gbm/DisplayGbm.h"
+@@ -313,7 +313,7 @@ rx::DisplayImpl *CreateDisplayFromAttribs(EGLAttrib di
+ impl = rx::CreateDisplayCGLOrEAGL(state);
+ break;
+
+-# elif defined(ANGLE_PLATFORM_LINUX)
++# elif defined(ANGLE_PLATFORM_LINUX) || defined(ANGLE_PLATFORM_BSD)
+ # if defined(ANGLE_USE_GBM)
+ if (platformType == 0)
+ {
+@@ -358,7 +358,7 @@ rx::DisplayImpl *CreateDisplayFromAttribs(EGLAttrib di
+ #if defined(ANGLE_ENABLE_OPENGL)
+ # if defined(ANGLE_PLATFORM_WINDOWS)
+ impl = new rx::DisplayWGL(state);
+-# elif defined(ANGLE_PLATFORM_LINUX)
++# elif defined(ANGLE_PLATFORM_LINUX) || defined(ANGLE_PLATFORM_BSD)
+ # if defined(ANGLE_USE_GBM)
+ if (platformType == 0)
+ {
+@@ -406,7 +406,7 @@ rx::DisplayImpl *CreateDisplayFromAttribs(EGLAttrib di
+ impl = rx::CreateVulkanWin32Display(state);
+ }
+ break;
+-# elif defined(ANGLE_PLATFORM_LINUX)
++# elif defined(ANGLE_PLATFORM_LINUX) || defined(ANGLE_PLATFORM_BSD)
+ # if defined(ANGLE_USE_X11)
+ if (platformType == EGL_PLATFORM_X11_EXT && rx::IsVulkanXcbDisplayAvailable())
+ {
+@@ -1815,7 +1815,7 @@ static ClientExtensions GenerateClientExtensions()
+ extensions.x11Visual = true;
+ #endif
+
+-#if defined(ANGLE_PLATFORM_LINUX)
++#if defined(ANGLE_PLATFORM_LINUX) || defined(ANGLE_PLATFORM_BSD)
+ extensions.platformANGLEDeviceTypeEGLANGLE = true;
+ #endif
+
diff --git a/devel/electron17/files/patch-third__party_angle_src_libANGLE_renderer_driver__utils.h b/devel/electron17/files/patch-third__party_angle_src_libANGLE_renderer_driver__utils.h
new file mode 100644
index 000000000000..fc932888ddb1
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_angle_src_libANGLE_renderer_driver__utils.h
@@ -0,0 +1,11 @@
+--- third_party/angle/src/libANGLE/renderer/driver_utils.h.orig 2022-05-11 07:17:23 UTC
++++ third_party/angle/src/libANGLE/renderer/driver_utils.h
+@@ -173,7 +173,7 @@ inline bool IsWindows()
+
+ inline bool IsLinux()
+ {
+-#if defined(ANGLE_PLATFORM_LINUX)
++#if defined(ANGLE_PLATFORM_LINUX) || defined(ANGLE_PLATFORM_BSD)
+ return true;
+ #else
+ return false;
diff --git a/devel/electron17/files/patch-third__party_angle_src_libANGLE_renderer_gl_glx_FunctionsGLX.cpp b/devel/electron17/files/patch-third__party_angle_src_libANGLE_renderer_gl_glx_FunctionsGLX.cpp
new file mode 100644
index 000000000000..005350f3b104
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_angle_src_libANGLE_renderer_gl_glx_FunctionsGLX.cpp
@@ -0,0 +1,15 @@
+--- third_party/angle/src/libANGLE/renderer/gl/glx/FunctionsGLX.cpp.orig 2022-05-11 07:03:14 UTC
++++ third_party/angle/src/libANGLE/renderer/gl/glx/FunctionsGLX.cpp
+@@ -144,10 +144,10 @@ bool FunctionsGLX::initialize(Display *xDisplay, int s
+ // which a GLXWindow was ever created.
+ if (!sLibHandle)
+ {
+- sLibHandle = dlopen("libGL.so.1", RTLD_NOW);
++ sLibHandle = dlopen("libGL.so", RTLD_NOW);
+ if (!sLibHandle)
+ {
+- *errorString = std::string("Could not dlopen libGL.so.1: ") + dlerror();
++ *errorString = std::string("Could not dlopen libGL.so: ") + dlerror();
+ return false;
+ }
+ }
diff --git a/devel/electron17/files/patch-third__party_angle_src_libANGLE_renderer_vulkan_DisplayVk__api.h b/devel/electron17/files/patch-third__party_angle_src_libANGLE_renderer_vulkan_DisplayVk__api.h
new file mode 100644
index 000000000000..8375feca715b
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_angle_src_libANGLE_renderer_vulkan_DisplayVk__api.h
@@ -0,0 +1,11 @@
+--- third_party/angle/src/libANGLE/renderer/vulkan/DisplayVk_api.h.orig 2022-05-11 07:17:23 UTC
++++ third_party/angle/src/libANGLE/renderer/vulkan/DisplayVk_api.h
+@@ -23,7 +23,7 @@ bool IsVulkanWin32DisplayAvailable();
+ DisplayImpl *CreateVulkanWin32Display(const egl::DisplayState &state);
+ #endif // defined(ANGLE_PLATFORM_WINDOWS)
+
+-#if defined(ANGLE_PLATFORM_LINUX)
++#if defined(ANGLE_PLATFORM_POSIX)
+ bool IsVulkanXcbDisplayAvailable();
+ DisplayImpl *CreateVulkanXcbDisplay(const egl::DisplayState &state);
+
diff --git a/devel/electron17/files/patch-third__party_angle_src_libANGLE_validationEGL.h b/devel/electron17/files/patch-third__party_angle_src_libANGLE_validationEGL.h
new file mode 100644
index 000000000000..3518724dee51
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_angle_src_libANGLE_validationEGL.h
@@ -0,0 +1,11 @@
+--- third_party/angle/src/libANGLE/validationEGL.h.orig 2022-05-11 07:17:24 UTC
++++ third_party/angle/src/libANGLE/validationEGL.h
+@@ -121,7 +121,7 @@ inline const AttributeMap PackParam<const AttributeMap
+
+ // In a 32-bit environment the EGLAttrib and EGLint types are the same. We need to mask out one of
+ // the two specializations to avoid having an override ambiguity.
+-#if defined(ANGLE_IS_64_BIT_CPU)
++#if defined(ANGLE_IS_64_BIT_CPU) || defined(ANGLE_PLATFORM_OPENBSD)
+ template <>
+ inline const AttributeMap PackParam<const AttributeMap &, const EGLAttrib *>(
+ const EGLAttrib *attribs)
diff --git a/devel/electron17/files/patch-third__party_angle_util_BUILD.gn b/devel/electron17/files/patch-third__party_angle_util_BUILD.gn
new file mode 100644
index 000000000000..5057c7d5cb01
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_angle_util_BUILD.gn
@@ -0,0 +1,11 @@
+--- third_party/angle/util/BUILD.gn.orig 2022-05-11 07:17:24 UTC
++++ third_party/angle/util/BUILD.gn
+@@ -200,7 +200,7 @@ foreach(is_shared_library,
+ ]
+ libs = []
+
+- if (is_linux || is_chromeos) {
++ if ((is_linux || is_chromeos) && !is_bsd) {
+ libs += [
+ "rt",
+ "dl",
diff --git a/devel/electron17/files/patch-third__party_blink_common_renderer__preferences_renderer__preferences__mojom__traits.cc b/devel/electron17/files/patch-third__party_blink_common_renderer__preferences_renderer__preferences__mojom__traits.cc
new file mode 100644
index 000000000000..376991c827e3
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_blink_common_renderer__preferences_renderer__preferences__mojom__traits.cc
@@ -0,0 +1,11 @@
+--- third_party/blink/common/renderer_preferences/renderer_preferences_mojom_traits.cc.orig 2021-04-14 01:08:54 UTC
++++ third_party/blink/common/renderer_preferences/renderer_preferences_mojom_traits.cc
+@@ -64,7 +64,7 @@ bool StructTraits<blink::mojom::RendererPreferencesDat
+ if (!data.ReadAcceptLanguages(&out->accept_languages))
+ return false;
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ if (!data.ReadSystemFontFamilyName(&out->system_font_family_name))
+ return false;
+ #endif
diff --git a/devel/electron17/files/patch-third__party_blink_public_common_renderer__preferences_renderer__preferences.h b/devel/electron17/files/patch-third__party_blink_public_common_renderer__preferences_renderer__preferences.h
new file mode 100644
index 000000000000..c1680a98eaef
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_blink_public_common_renderer__preferences_renderer__preferences.h
@@ -0,0 +1,11 @@
+--- third_party/blink/public/common/renderer_preferences/renderer_preferences.h.orig 2021-07-15 19:13:44 UTC
++++ third_party/blink/public/common/renderer_preferences/renderer_preferences.h
+@@ -50,7 +50,7 @@ struct BLINK_COMMON_EXPORT RendererPreferences {
+ bool webrtc_allow_legacy_tls_protocols{false};
+ UserAgentOverride user_agent_override;
+ std::string accept_languages;
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ std::string system_font_family_name;
+ #endif
+ #if defined(OS_WIN)
diff --git a/devel/electron17/files/patch-third__party_blink_public_common_renderer__preferences_renderer__preferences__mojom__traits.h b/devel/electron17/files/patch-third__party_blink_public_common_renderer__preferences_renderer__preferences__mojom__traits.h
new file mode 100644
index 000000000000..c0ee4e7803cf
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_blink_public_common_renderer__preferences_renderer__preferences__mojom__traits.h
@@ -0,0 +1,11 @@
+--- third_party/blink/public/common/renderer_preferences/renderer_preferences_mojom_traits.h.orig 2021-07-15 19:13:44 UTC
++++ third_party/blink/public/common/renderer_preferences/renderer_preferences_mojom_traits.h
+@@ -157,7 +157,7 @@ struct BLINK_COMMON_EXPORT
+ return data.accept_languages;
+ }
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ static const std::string& system_font_family_name(
+ const ::blink::RendererPreferences& data) {
+ return data.system_font_family_name;
diff --git a/devel/electron17/files/patch-third__party_blink_public_platform_web__vector.h b/devel/electron17/files/patch-third__party_blink_public_platform_web__vector.h
new file mode 100644
index 000000000000..4ac1ef4fd290
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_blink_public_platform_web__vector.h
@@ -0,0 +1,11 @@
+--- third_party/blink/public/platform/web_vector.h.orig 2022-05-11 07:00:57 UTC
++++ third_party/blink/public/platform/web_vector.h
+@@ -81,7 +81,7 @@ class WebVector {
+ // The vector can be populated using reserve() and emplace_back().
+ WebVector() = default;
+
+-#if defined(ARCH_CPU_64_BITS)
++#if defined(ARCH_CPU_64_BITS) || defined(__OpenBSD__)
+ // Create a vector with |size| default-constructed elements. We define
+ // a constructor with size_t otherwise we'd have a duplicate define.
+ explicit WebVector(size_t size) : data_(size) {}
diff --git a/devel/electron17/files/patch-third__party_blink_renderer_bindings_scripts_bind__gen_style__format.py b/devel/electron17/files/patch-third__party_blink_renderer_bindings_scripts_bind__gen_style__format.py
new file mode 100644
index 000000000000..03c74f9287ba
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_blink_renderer_bindings_scripts_bind__gen_style__format.py
@@ -0,0 +1,11 @@
+--- third_party/blink/renderer/bindings/scripts/bind_gen/style_format.py.orig 2022-05-11 07:00:58 UTC
++++ third_party/blink/renderer/bindings/scripts/bind_gen/style_format.py
+@@ -28,7 +28,7 @@ def init(root_src_dir, enable_style_format=True):
+ root_src_dir = os.path.abspath(root_src_dir)
+
+ # Determine //buildtools/<platform>/ directory
+- if sys.platform.startswith("linux"):
++ if sys.platform.startswith(("linux","openbsd","freebsd")):
+ platform = "linux64"
+ exe_suffix = ""
+ elif sys.platform.startswith("darwin"):
diff --git a/devel/electron17/files/patch-third__party_blink_renderer_build_scripts_run__with__pythonpath.py b/devel/electron17/files/patch-third__party_blink_renderer_build_scripts_run__with__pythonpath.py
new file mode 100644
index 000000000000..a21aa9469191
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_blink_renderer_build_scripts_run__with__pythonpath.py
@@ -0,0 +1,10 @@
+--- third_party/blink/renderer/build/scripts/run_with_pythonpath.py.orig 2022-05-11 07:00:58 UTC
++++ third_party/blink/renderer/build/scripts/run_with_pythonpath.py
+@@ -22,6 +22,7 @@ def main():
+ existing_pp = (
+ os.pathsep + env['PYTHONPATH']) if 'PYTHONPATH' in env else ''
+ env['PYTHONPATH'] = os.pathsep.join(python_paths) + existing_pp
++ env['LD_LIBRARY_PATH'] = "${WRKSRC}/out/Release"
+ sys.exit(subprocess.call([sys.executable] + args, env=env))
+
+
diff --git a/devel/electron17/files/patch-third__party_blink_renderer_controller_blink__initializer.cc b/devel/electron17/files/patch-third__party_blink_renderer_controller_blink__initializer.cc
new file mode 100644
index 000000000000..8631c6759a1c
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_blink_renderer_controller_blink__initializer.cc
@@ -0,0 +1,35 @@
+--- third_party/blink/renderer/controller/blink_initializer.cc.orig 2022-05-11 07:16:55 UTC
++++ third_party/blink/renderer/controller/blink_initializer.cc
+@@ -71,12 +71,12 @@
+ #include "third_party/blink/renderer/controller/oom_intervention_impl.h"
+ #endif
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ #include "third_party/blink/renderer/controller/memory_usage_monitor_posix.h"
+ #endif
+
+ #if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID) || \
+- defined(OS_MAC) || defined(OS_WIN)
++ defined(OS_MAC) || defined(OS_WIN) || defined(OS_BSD)
+ #include "third_party/blink/renderer/controller/highest_pmf_reporter.h"
+ #include "third_party/blink/renderer/controller/user_level_memory_pressure_signal_generator.h"
+ #endif
+@@ -156,7 +156,7 @@ void InitializeCommon(Platform* platform, mojo::Binder
+ #endif
+
+ #if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID) || \
+- defined(OS_MAC) || defined(OS_WIN)
++ defined(OS_MAC) || defined(OS_WIN) || defined(OS_BSD)
+ // Initialize UserLevelMemoryPressureSignalGenerator so it starts monitoring.
+ if (UserLevelMemoryPressureSignalGenerator::Enabled())
+ UserLevelMemoryPressureSignalGenerator::Instance();
+@@ -227,7 +227,7 @@ void BlinkInitializer::RegisterInterfaces(mojo::Binder
+ main_thread->GetTaskRunner());
+ #endif
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ binders.Add(ConvertToBaseRepeatingCallback(
+ CrossThreadBindRepeating(&MemoryUsageMonitorPosix::Bind)),
+ main_thread->GetTaskRunner());
diff --git a/devel/electron17/files/patch-third__party_blink_renderer_controller_memory__usage__monitor__posix.cc b/devel/electron17/files/patch-third__party_blink_renderer_controller_memory__usage__monitor__posix.cc
new file mode 100644
index 000000000000..486f5edeec08
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_blink_renderer_controller_memory__usage__monitor__posix.cc
@@ -0,0 +1,21 @@
+--- third_party/blink/renderer/controller/memory_usage_monitor_posix.cc.orig 2022-05-11 07:16:55 UTC
++++ third_party/blink/renderer/controller/memory_usage_monitor_posix.cc
+@@ -126,15 +126,17 @@ void MemoryUsageMonitorPosix::ResetFileDescriptors() {
+
+ void MemoryUsageMonitorPosix::SetProcFiles(base::File statm_file,
+ base::File status_file) {
++#if !defined(OS_BSD)
+ DCHECK(statm_file.IsValid());
+ DCHECK(status_file.IsValid());
+ DCHECK_EQ(-1, statm_fd_.get());
+ DCHECK_EQ(-1, status_fd_.get());
+ statm_fd_.reset(statm_file.TakePlatformFile());
+ status_fd_.reset(status_file.TakePlatformFile());
++#endif
+ }
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // static
+ void MemoryUsageMonitorPosix::Bind(
+ mojo::PendingReceiver<mojom::blink::MemoryUsageMonitorLinux> receiver) {
diff --git a/devel/electron17/files/patch-third__party_blink_renderer_controller_memory__usage__monitor__posix.h b/devel/electron17/files/patch-third__party_blink_renderer_controller_memory__usage__monitor__posix.h
new file mode 100644
index 000000000000..e8a308226431
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_blink_renderer_controller_memory__usage__monitor__posix.h
@@ -0,0 +1,47 @@
+--- third_party/blink/renderer/controller/memory_usage_monitor_posix.h.orig 2021-11-19 04:25:23 UTC
++++ third_party/blink/renderer/controller/memory_usage_monitor_posix.h
+@@ -13,7 +13,7 @@
+ #include "third_party/blink/renderer/controller/controller_export.h"
+ #include "third_party/blink/renderer/controller/memory_usage_monitor.h"
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ #include "third_party/blink/public/mojom/memory_usage_monitor_linux.mojom-blink.h"
+ #endif
+
+@@ -22,7 +22,7 @@ namespace blink {
+ // MemoryUsageMonitor implementation for Android and Linux.
+ class CONTROLLER_EXPORT MemoryUsageMonitorPosix
+ : public MemoryUsageMonitor
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ ,
+ public mojom::blink::MemoryUsageMonitorLinux
+ #endif
+@@ -30,7 +30,7 @@ class CONTROLLER_EXPORT MemoryUsageMonitorPosix
+ public:
+ MemoryUsageMonitorPosix() = default;
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ static void Bind(
+ mojo::PendingReceiver<mojom::blink::MemoryUsageMonitorLinux> receiver);
+ #endif
+@@ -48,7 +48,7 @@ class CONTROLLER_EXPORT MemoryUsageMonitorPosix
+ uint64_t* vm_size,
+ uint64_t* vm_hwm_size);
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // mojom::MemoryUsageMonitorLinux implementations:
+ void SetProcFiles(base::File statm_file, base::File status_file) override;
+ #endif
+@@ -66,7 +66,7 @@ class CONTROLLER_EXPORT MemoryUsageMonitorPosix
+ base::ScopedFD statm_fd_;
+ base::ScopedFD status_fd_;
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ mojo::Receiver<mojom::blink::MemoryUsageMonitorLinux> receiver_{this};
+ #endif
+ };
diff --git a/devel/electron17/files/patch-third__party_blink_renderer_core_editing_editing__behavior.cc b/devel/electron17/files/patch-third__party_blink_renderer_core_editing_editing__behavior.cc
new file mode 100644
index 000000000000..4ac54bee0258
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_blink_renderer_core_editing_editing__behavior.cc
@@ -0,0 +1,11 @@
+--- third_party/blink/renderer/core/editing/editing_behavior.cc.orig 2021-11-19 04:25:23 UTC
++++ third_party/blink/renderer/core/editing/editing_behavior.cc
+@@ -280,7 +280,7 @@ bool EditingBehavior::ShouldInsertCharacter(const Keyb
+ // unexpected behaviour
+ if (ch < ' ')
+ return false;
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // According to XKB map no keyboard combinations with ctrl key are mapped to
+ // printable characters, however we need the filter as the DomKey/text could
+ // contain printable characters.
diff --git a/devel/electron17/files/patch-third__party_blink_renderer_core_exported_web__view__impl.cc b/devel/electron17/files/patch-third__party_blink_renderer_core_exported_web__view__impl.cc
new file mode 100644
index 000000000000..225a30f4aca9
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_blink_renderer_core_exported_web__view__impl.cc
@@ -0,0 +1,20 @@
+--- third_party/blink/renderer/core/exported/web_view_impl.cc.orig 2022-05-13 07:19:54 UTC
++++ third_party/blink/renderer/core/exported/web_view_impl.cc
+@@ -403,7 +403,7 @@ SkFontHinting RendererPreferencesToSkiaHinting(
+ const blink::RendererPreferences& prefs) {
+ // TODO(crbug.com/1052397): Revisit once build flag switch of lacros-chrome is
+ // complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ if (!prefs.should_antialias_text) {
+ // When anti-aliasing is off, GTK maps all non-zero hinting settings to
+ // 'Normal' hinting so we do the same. Otherwise, folks who have 'Slight'
+@@ -3172,7 +3172,7 @@ void WebViewImpl::UpdateFontRenderingFromRendererPrefs
+ renderer_preferences_.use_subpixel_positioning);
+ // TODO(crbug.com/1052397): Revisit once build flag switch of lacros-chrome is
+ // complete.
+-#if (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) && !defined(OS_ANDROID)
++#if (defined(OS_LINUX) || defined(OS_BSD) || BUILDFLAG(IS_CHROMEOS_LACROS)) && !defined(OS_ANDROID)
+ if (!renderer_preferences_.system_font_family_name.empty()) {
+ WebFontRenderStyle::SetSystemFontFamily(blink::WebString::FromUTF8(
+ renderer_preferences_.system_font_family_name));
diff --git a/devel/electron17/files/patch-third__party_blink_renderer_core_html_canvas_canvas__async__blob__creator.cc b/devel/electron17/files/patch-third__party_blink_renderer_core_html_canvas_canvas__async__blob__creator.cc
new file mode 100644
index 000000000000..28d07fb54010
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_blink_renderer_core_html_canvas_canvas__async__blob__creator.cc
@@ -0,0 +1,11 @@
+--- third_party/blink/renderer/core/html/canvas/canvas_async_blob_creator.cc.orig 2022-05-11 07:16:55 UTC
++++ third_party/blink/renderer/core/html/canvas/canvas_async_blob_creator.cc
+@@ -44,7 +44,7 @@ constexpr base::TimeDelta kEncodeRowSlackBeforeDeadlin
+
+ /* The value is based on user statistics on Nov 2017. */
+ #if (defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC) || \
+- defined(OS_WIN))
++ defined(OS_WIN)) || defined(OS_BSD)
+ const double kIdleTaskStartTimeoutDelayMs = 1000.0;
+ #else
+ const double kIdleTaskStartTimeoutDelayMs = 4000.0; // For ChromeOS, Mobile
diff --git a/devel/electron17/files/patch-third__party_blink_renderer_core_html_forms_internal__popup__menu.cc b/devel/electron17/files/patch-third__party_blink_renderer_core_html_forms_internal__popup__menu.cc
new file mode 100644
index 000000000000..1248ea4848c5
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_blink_renderer_core_html_forms_internal__popup__menu.cc
@@ -0,0 +1,11 @@
+--- third_party/blink/renderer/core/html/forms/internal_popup_menu.cc.orig 2021-11-19 04:25:23 UTC
++++ third_party/blink/renderer/core/html/forms/internal_popup_menu.cc
+@@ -159,7 +159,7 @@ class InternalPopupMenu::ItemIterationContext {
+ is_in_group_(false),
+ buffer_(buffer) {
+ DCHECK(buffer_);
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // On other platforms, the <option> background color is the same as the
+ // <select> background color. On Linux, that makes the <option>
+ // background color very dark, so by default, try to use a lighter
diff --git a/devel/electron17/files/patch-third__party_blink_renderer_core_inspector_inspector__memory__agent.cc b/devel/electron17/files/patch-third__party_blink_renderer_core_inspector_inspector__memory__agent.cc
new file mode 100644
index 000000000000..0634092c8d29
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_blink_renderer_core_inspector_inspector__memory__agent.cc
@@ -0,0 +1,11 @@
+--- third_party/blink/renderer/core/inspector/inspector_memory_agent.cc.orig 2021-01-07 00:36:42 UTC
++++ third_party/blink/renderer/core/inspector/inspector_memory_agent.cc
+@@ -186,7 +186,7 @@ InspectorMemoryAgent::GetSamplingProfileById(uint32_t
+
+ Vector<String> InspectorMemoryAgent::Symbolize(
+ const WebVector<void*>& addresses) {
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // TODO(alph): Move symbolization to the client.
+ Vector<void*> addresses_to_symbolize;
+ for (size_t i = 0; i < addresses.size(); i++) {
diff --git a/devel/electron17/files/patch-third__party_blink_renderer_core_layout_layout__view.cc b/devel/electron17/files/patch-third__party_blink_renderer_core_layout_layout__view.cc
new file mode 100644
index 000000000000..3012ba807385
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_blink_renderer_core_layout_layout__view.cc
@@ -0,0 +1,20 @@
+--- third_party/blink/renderer/core/layout/layout_view.cc.orig 2021-11-19 04:25:24 UTC
++++ third_party/blink/renderer/core/layout/layout_view.cc
+@@ -64,7 +64,7 @@
+ #include "third_party/blink/renderer/platform/runtime_enabled_features.h"
+ #include "ui/display/screen_info.h"
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ #include "third_party/blink/renderer/platform/fonts/font_cache.h"
+ #endif
+
+@@ -362,7 +362,7 @@ void LayoutView::UpdateLayout() {
+ DCHECK(!layout_state_);
+ LayoutState root_layout_state(*this);
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // The font code in FontPlatformData does not have a direct connection to the
+ // document, the frame or anything from which we could retrieve the device
+ // scale factor. After using zoom for DSF, the GraphicsContext does only ever
diff --git a/devel/electron17/files/patch-third__party_blink_renderer_core_paint_paint__layer.cc b/devel/electron17/files/patch-third__party_blink_renderer_core_paint_paint__layer.cc
new file mode 100644
index 000000000000..9a0235254127
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_blink_renderer_core_paint_paint__layer.cc
@@ -0,0 +1,11 @@
+--- third_party/blink/renderer/core/paint/paint_layer.cc.orig 2021-11-19 04:25:24 UTC
++++ third_party/blink/renderer/core/paint/paint_layer.cc
+@@ -112,7 +112,7 @@ namespace {
+ static CompositingQueryMode g_compositing_query_mode =
+ kCompositingQueriesAreOnlyAllowedInCertainDocumentLifecyclePhases;
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ struct SameSizeAsPaintLayer : GarbageCollected<PaintLayer>, DisplayItemClient {
+ // The bit fields may fit into the machine word of DisplayItemClient which
+ // has only 8-bit data.
diff --git a/devel/electron17/files/patch-third__party_blink_renderer_core_scroll_scrollbar__theme__aura.cc b/devel/electron17/files/patch-third__party_blink_renderer_core_scroll_scrollbar__theme__aura.cc
new file mode 100644
index 000000000000..01d239e0f7fc
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_blink_renderer_core_scroll_scrollbar__theme__aura.cc
@@ -0,0 +1,20 @@
+--- third_party/blink/renderer/core/scroll/scrollbar_theme_aura.cc.orig 2022-05-11 07:16:55 UTC
++++ third_party/blink/renderer/core/scroll/scrollbar_theme_aura.cc
+@@ -152,7 +152,7 @@ bool ScrollbarThemeAura::SupportsDragSnapBack() const
+ // is true for at least GTK and QT apps).
+ // TODO(crbug.com/1052397): Revisit once build flag switch of lacros-chrome is
+ // complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ return false;
+ #else
+ return true;
+@@ -327,7 +327,7 @@ bool ScrollbarThemeAura::ShouldCenterOnThumb(const Scr
+ const WebMouseEvent& event) {
+ // TODO(crbug.com/1052397): Revisit once build flag switch of lacros-chrome is
+ // complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ if (event.button == WebPointerProperties::Button::kMiddle)
+ return true;
+ #endif
diff --git a/devel/electron17/files/patch-third__party_blink_renderer_modules_webgl_webgl__rendering__context__base.cc b/devel/electron17/files/patch-third__party_blink_renderer_modules_webgl_webgl__rendering__context__base.cc
new file mode 100644
index 000000000000..aa4ef7f5bfa7
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_blink_renderer_modules_webgl_webgl__rendering__context__base.cc
@@ -0,0 +1,11 @@
+--- third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.cc.orig 2022-05-11 07:16:55 UTC
++++ third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.cc
+@@ -6102,7 +6102,7 @@ void WebGLRenderingContextBase::TexImageHelperMediaVid
+ constexpr bool kAllowZeroCopyImages = true;
+ #endif
+
+-#if defined(OS_ANDROID) || defined(OS_LINUX)
++#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_BSD)
+ // TODO(crbug.com/1175907): Only TexImage2D seems to work with the GPU path on
+ // Android M -- appears to work fine on R, but to avoid regressions in <video>
+ // limit to TexImage2D only for now. Fails conformance test on Nexus 5X:
diff --git a/devel/electron17/files/patch-third__party_blink_renderer_modules_webgl_webgl__webcodecs__video__frame.cc b/devel/electron17/files/patch-third__party_blink_renderer_modules_webgl_webgl__webcodecs__video__frame.cc
new file mode 100644
index 000000000000..28be31d52db6
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_blink_renderer_modules_webgl_webgl__webcodecs__video__frame.cc
@@ -0,0 +1,11 @@
+--- third_party/blink/renderer/modules/webgl/webgl_webcodecs_video_frame.cc.orig 2021-09-14 01:52:03 UTC
++++ third_party/blink/renderer/modules/webgl/webgl_webcodecs_video_frame.cc
+@@ -98,7 +98,7 @@ WebGLExtensionName WebGLWebCodecsVideoFrame::GetName()
+ bool WebGLWebCodecsVideoFrame::Supported(WebGLRenderingContextBase* context) {
+ // TODO(crbug.com/1052397): Revisit once build flag switch of lacros-chrome is
+ // complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_FUCHSIA)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ // TODO(jie.a.chen@intel.com): Add Linux support.
+ return false;
+ #elif defined(OS_MAC)
diff --git a/devel/electron17/files/patch-third__party_blink_renderer_platform_fonts_font__cache.cc b/devel/electron17/files/patch-third__party_blink_renderer_platform_fonts_font__cache.cc
new file mode 100644
index 000000000000..2212cca91889
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_blink_renderer_platform_fonts_font__cache.cc
@@ -0,0 +1,20 @@
+--- third_party/blink/renderer/platform/fonts/font_cache.cc.orig 2022-05-11 07:16:55 UTC
++++ third_party/blink/renderer/platform/fonts/font_cache.cc
+@@ -87,7 +87,7 @@ extern const char kNotoColorEmojiCompat[] = "Noto Colo
+
+ SkFontMgr* FontCache::static_font_manager_ = nullptr;
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ float FontCache::device_scale_factor_ = 1.0;
+ #endif
+
+@@ -127,7 +127,7 @@ FontCache::FontCache()
+ FontPlatformData* FontCache::SystemFontPlatformData(
+ const FontDescription& font_description) {
+ const AtomicString& family = FontCache::SystemFontFamily();
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_FUCHSIA)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ if (family.IsEmpty() || family == font_family_names::kSystemUi)
+ return nullptr;
+ #else
diff --git a/devel/electron17/files/patch-third__party_blink_renderer_platform_fonts_font__cache.h b/devel/electron17/files/patch-third__party_blink_renderer_platform_fonts_font__cache.h
new file mode 100644
index 000000000000..3f347f34c23f
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_blink_renderer_platform_fonts_font__cache.h
@@ -0,0 +1,47 @@
+--- third_party/blink/renderer/platform/fonts/font_cache.h.orig 2022-05-11 07:16:55 UTC
++++ third_party/blink/renderer/platform/fonts/font_cache.h
+@@ -59,7 +59,7 @@
+ #include "third_party/skia/include/core/SkFontMgr.h"
+ #include "third_party/skia/include/core/SkRefCnt.h"
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ #include "ui/gfx/font_fallback_linux.h"
+ #endif
+
+@@ -192,7 +192,7 @@ class PLATFORM_EXPORT FontCache {
+ static void PrewarmFamily(const AtomicString& family_name) {}
+ #endif
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // These are needed for calling QueryRenderStyleForStrike, since
+ // gfx::GetFontRenderParams makes distinctions based on DSF.
+ static float DeviceScaleFactor() { return device_scale_factor_; }
+@@ -275,7 +275,7 @@ class PLATFORM_EXPORT FontCache {
+ const char* locale_family_name);
+ #endif // defined(OS_ANDROID)
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ static bool GetFontForCharacter(UChar32,
+ const char* preferred_locale,
+ gfx::FallbackFontData*);
+@@ -355,7 +355,7 @@ class PLATFORM_EXPORT FontCache {
+ const FontFaceCreationParams&,
+ std::string& name);
+
+-#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ static AtomicString GetFamilyNameForCharacter(SkFontMgr*,
+ UChar32,
+ const FontDescription&,
+@@ -402,7 +402,7 @@ class PLATFORM_EXPORT FontCache {
+ std::unique_ptr<FallbackFamilyStyleCache> fallback_params_cache_;
+ #endif // defined(OS_WIN)
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ static float device_scale_factor_;
+ #endif
+
diff --git a/devel/electron17/files/patch-third__party_blink_renderer_platform_fonts_font__description.cc b/devel/electron17/files/patch-third__party_blink_renderer_platform_fonts_font__description.cc
new file mode 100644
index 000000000000..c0b2a93341be
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_blink_renderer_platform_fonts_font__description.cc
@@ -0,0 +1,20 @@
+--- third_party/blink/renderer/platform/fonts/font_description.cc.orig 2021-11-19 04:25:24 UTC
++++ third_party/blink/renderer/platform/fonts/font_description.cc
+@@ -38,7 +38,7 @@
+ #include "third_party/blink/renderer/platform/wtf/text/string_hash.h"
+ #include "third_party/blink/renderer/platform/wtf/text/string_hasher.h"
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID) || defined(OS_BSD)
+ #include "third_party/blink/renderer/platform/fonts/font_cache.h"
+ #endif
+
+@@ -259,7 +259,7 @@ FontCacheKey FontDescription::CacheKey(
+ static_cast<unsigned>(fields_.orientation_) << 1 | // bit 2-3
+ static_cast<unsigned>(fields_.subpixel_text_position_); // bit 1
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ float device_scale_factor_for_key = FontCache::DeviceScaleFactor();
+ #else
+ float device_scale_factor_for_key = 1.0f;
diff --git a/devel/electron17/files/patch-third__party_blink_renderer_platform_fonts_font__metrics.cc b/devel/electron17/files/patch-third__party_blink_renderer_platform_fonts_font__metrics.cc
new file mode 100644
index 000000000000..19b7715c5edc
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_blink_renderer_platform_fonts_font__metrics.cc
@@ -0,0 +1,29 @@
+--- third_party/blink/renderer/platform/fonts/font_metrics.cc.orig 2022-05-11 07:16:55 UTC
++++ third_party/blink/renderer/platform/fonts/font_metrics.cc
+@@ -39,7 +39,7 @@
+ namespace blink {
+
+ #if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID) || \
+- defined(OS_FUCHSIA)
++ defined(OS_FUCHSIA) || defined(OS_BSD)
+ // This is the largest VDMX table which we'll try to load and parse.
+ static const size_t kMaxVDMXTableSize = 1024 * 1024; // 1 MB
+ #endif
+@@ -69,7 +69,7 @@ void FontMetrics::AscentDescentWithHacks(
+ bool is_vdmx_valid = false;
+
+ #if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID) || \
+- defined(OS_FUCHSIA)
++ defined(OS_FUCHSIA) || defined(OS_BSD)
+ // Manually digging up VDMX metrics is only applicable when bytecode hinting
+ // using FreeType. With DirectWrite or CoreText, no bytecode hinting is ever
+ // done. This code should be pushed into FreeType (hinted font metrics).
+@@ -117,7 +117,7 @@ void FontMetrics::AscentDescentWithHacks(
+ if (descent < metrics.fDescent) {
+ visual_overflow_inflation_for_descent = 1;
+ #if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID) || \
+- defined(OS_FUCHSIA)
++ defined(OS_FUCHSIA) || defined(OS_BSD)
+ // When subpixel positioning is enabled, if the descent is rounded down,
+ // the descent part of the glyph may be truncated when displayed in a
+ // 'overflow: hidden' container. To avoid that, borrow 1 unit from the
diff --git a/devel/electron17/files/patch-third__party_blink_renderer_platform_fonts_font__unique__name__lookup.cc b/devel/electron17/files/patch-third__party_blink_renderer_platform_fonts_font__unique__name__lookup.cc
new file mode 100644
index 000000000000..7450661e5c84
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_blink_renderer_platform_fonts_font__unique__name__lookup.cc
@@ -0,0 +1,20 @@
+--- third_party/blink/renderer/platform/fonts/font_unique_name_lookup.cc.orig 2021-09-14 01:52:03 UTC
++++ third_party/blink/renderer/platform/fonts/font_unique_name_lookup.cc
+@@ -7,7 +7,7 @@
+ #if defined(OS_ANDROID)
+ #include "third_party/blink/public/mojom/font_unique_name_lookup/font_unique_name_lookup.mojom-blink.h"
+ #include "third_party/blink/renderer/platform/fonts/android/font_unique_name_lookup_android.h"
+-#elif defined(OS_LINUX) || defined(OS_CHROMEOS)
++#elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ #include "third_party/blink/renderer/platform/fonts/linux/font_unique_name_lookup_linux.h"
+ #elif defined(OS_WIN)
+ #include "third_party/blink/renderer/platform/fonts/win/font_unique_name_lookup_win.h"
+@@ -22,7 +22,7 @@ std::unique_ptr<FontUniqueNameLookup>
+ FontUniqueNameLookup::GetPlatformUniqueNameLookup() {
+ #if defined(OS_ANDROID)
+ return std::make_unique<FontUniqueNameLookupAndroid>();
+-#elif defined(OS_LINUX) || defined(OS_CHROMEOS)
++#elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ return std::make_unique<FontUniqueNameLookupLinux>();
+ #elif defined(OS_WIN)
+ return std::make_unique<FontUniqueNameLookupWin>();
diff --git a/devel/electron17/files/patch-third__party_blink_renderer_platform_fonts_skia_font__cache__skia.cc b/devel/electron17/files/patch-third__party_blink_renderer_platform_fonts_skia_font__cache__skia.cc
new file mode 100644
index 000000000000..8f7352173133
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_blink_renderer_platform_fonts_skia_font__cache__skia.cc
@@ -0,0 +1,29 @@
+--- third_party/blink/renderer/platform/fonts/skia/font_cache_skia.cc.orig 2022-05-11 07:16:55 UTC
++++ third_party/blink/renderer/platform/fonts/skia/font_cache_skia.cc
+@@ -60,7 +60,7 @@ AtomicString ToAtomicString(const SkString& str) {
+ return AtomicString::FromUTF8(str.c_str(), str.size());
+ }
+
+-#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // This function is called on android or when we are emulating android fonts on
+ // linux and the embedder has overriden the default fontManager with
+ // WebFontRendering::setSkiaFontMgr.
+@@ -235,7 +235,7 @@ sk_sp<SkTypeface> FontCache::CreateTypeface(
+ }
+ #endif
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_WIN)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_WIN) || defined(OS_BSD)
+ // On linux if the fontManager has been overridden then we should be calling
+ // the embedder provided font Manager rather than calling
+ // SkTypeface::CreateFromName which may redirect the call to the default font
+@@ -262,7 +262,7 @@ std::unique_ptr<FontPlatformData> FontCache::CreateFon
+ std::string name;
+
+ sk_sp<SkTypeface> typeface;
+-#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ bool noto_color_emoji_from_gmscore = false;
+ #if defined(OS_ANDROID)
+ // Use the unique local matching pathway for fetching Noto Color Emoji Compat
diff --git a/devel/electron17/files/patch-third__party_blink_renderer_platform_graphics_begin__frame__provider.cc b/devel/electron17/files/patch-third__party_blink_renderer_platform_graphics_begin__frame__provider.cc
new file mode 100644
index 000000000000..cf03522fdcda
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_blink_renderer_platform_graphics_begin__frame__provider.cc
@@ -0,0 +1,14 @@
+--- third_party/blink/renderer/platform/graphics/begin_frame_provider.cc.orig 2022-05-11 07:16:55 UTC
++++ third_party/blink/renderer/platform/graphics/begin_frame_provider.cc
+@@ -74,7 +74,11 @@ void BeginFrameProvider::CreateCompositorFrameSinkIfNe
+
+ // Once we are using RAF, this thread is driving Display updates. Update
+ // priority accordingly.
++ // pledge(2)
++ // stop this baloney
++#if !defined(OS_OPENBSD)
+ base::PlatformThread::SetCurrentThreadPriority(base::ThreadPriority::DISPLAY);
++#endif
+
+ mojo::Remote<mojom::blink::EmbeddedFrameSinkProvider> provider;
+ Platform::Current()->GetBrowserInterfaceBroker()->GetInterface(
diff --git a/devel/electron17/files/patch-third__party_blink_renderer_platform_graphics_video__frame__submitter.cc b/devel/electron17/files/patch-third__party_blink_renderer_platform_graphics_video__frame__submitter.cc
new file mode 100644
index 000000000000..e03dae8a6e37
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_blink_renderer_platform_graphics_video__frame__submitter.cc
@@ -0,0 +1,11 @@
+--- third_party/blink/renderer/platform/graphics/video_frame_submitter.cc.orig 2022-05-11 07:16:56 UTC
++++ third_party/blink/renderer/platform/graphics/video_frame_submitter.cc
+@@ -328,7 +328,7 @@ void VideoFrameSubmitter::OnBeginFrame(
+ continue;
+ auto& feedback =
+ timing_details.find(frame_token)->value.presentation_feedback;
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // TODO: On Linux failure flag is unreliable, and perfectly rendered frames
+ // are reported as failures all the time.
+ bool presentation_failure = false;
diff --git a/devel/electron17/files/patch-third__party_blink_renderer_platform_scheduler_common_thread.cc b/devel/electron17/files/patch-third__party_blink_renderer_platform_scheduler_common_thread.cc
new file mode 100644
index 000000000000..6fc0bb3c92b2
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_blink_renderer_platform_scheduler_common_thread.cc
@@ -0,0 +1,12 @@
+--- third_party/blink/renderer/platform/scheduler/common/thread.cc.orig 2022-05-11 07:16:56 UTC
++++ third_party/blink/renderer/platform/scheduler/common/thread.cc
+@@ -99,7 +99,8 @@ void Thread::CreateAndSetCompositorThread() {
+ std::make_unique<scheduler::CompositorThread>(params);
+ compositor_thread->Init();
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++// pledge
++#if (defined(OS_LINUX) || defined(OS_CHROMEOS)) && !defined(OS_OPENBSD)
+ if (base::FeatureList::IsEnabled(
+ features::kBlinkCompositorUseDisplayThreadPriority)) {
+ compositor_thread->GetTaskRunner()->PostTaskAndReplyWithResult(
diff --git a/devel/electron17/files/patch-third__party_blink_renderer_platform_wtf_container__annotations.h b/devel/electron17/files/patch-third__party_blink_renderer_platform_wtf_container__annotations.h
new file mode 100644
index 000000000000..3fe1a62ac732
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_blink_renderer_platform_wtf_container__annotations.h
@@ -0,0 +1,11 @@
+--- third_party/blink/renderer/platform/wtf/container_annotations.h.orig 2022-05-11 07:16:57 UTC
++++ third_party/blink/renderer/platform/wtf/container_annotations.h
+@@ -12,7 +12,7 @@
+ // TODO(ochang): Remove the ARCH_CPU_X86_64 condition to enable this for X86
+ // once the crashes there have been fixed: http://crbug.com/461406
+ #if defined(ADDRESS_SANITIZER) && \
+- (defined(OS_LINUX) || defined(OS_CHROMEOS)) && defined(ARCH_CPU_X86_64)
++ (defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)) && defined(ARCH_CPU_X86_64)
+ #define ANNOTATE_CONTIGUOUS_CONTAINER
+ #define ANNOTATE_NEW_BUFFER(buffer, capacity, newSize) \
+ if (buffer) { \
diff --git a/devel/electron17/files/patch-third__party_blink_renderer_platform_wtf_math__extras.h b/devel/electron17/files/patch-third__party_blink_renderer_platform_wtf_math__extras.h
new file mode 100644
index 000000000000..6db6767368a5
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_blink_renderer_platform_wtf_math__extras.h
@@ -0,0 +1,23 @@
+--- third_party/blink/renderer/platform/wtf/math_extras.h.orig 2022-05-11 07:16:57 UTC
++++ third_party/blink/renderer/platform/wtf/math_extras.h
+@@ -127,6 +127,10 @@ constexpr float Grad2turn(float g) {
+ return g * (1.0f / 400.0f);
+ }
+
++#if defined(OS_FREEBSD)
++#pragma clang diagnostic push
++#pragma clang diagnostic ignored "-Winvalid-constexpr"
++#endif
+ constexpr double RoundHalfTowardsPositiveInfinity(double value) {
+ return std::floor(value + 0.5);
+ }
+@@ -134,6 +138,9 @@ constexpr double RoundHalfTowardsPositiveInfinity(doub
+ constexpr float RoundHalfTowardsPositiveInfinity(float value) {
+ return std::floor(value + 0.5f);
+ }
++#if defined(OS_FREEBSD)
++#pragma clang diagnostic pop
++#endif
+
+ // ClampTo() is implemented by templated helper classes (to allow for partial
+ // template specialization) as well as several helper functions.
diff --git a/devel/electron17/files/patch-third__party_blink_renderer_platform_wtf_stack__util.cc b/devel/electron17/files/patch-third__party_blink_renderer_platform_wtf_stack__util.cc
new file mode 100644
index 000000000000..d4f18cad434a
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_blink_renderer_platform_wtf_stack__util.cc
@@ -0,0 +1,43 @@
+--- third_party/blink/renderer/platform/wtf/stack_util.cc.orig 2022-05-11 07:16:57 UTC
++++ third_party/blink/renderer/platform/wtf/stack_util.cc
+@@ -18,6 +18,11 @@
+ extern "C" void* __libc_stack_end; // NOLINT
+ #endif
+
++#if defined(OS_BSD)
++#include <sys/signal.h>
++#include <pthread_np.h>
++#endif
++
+ namespace WTF {
+
+ size_t GetUnderestimatedStackSize() {
+@@ -62,6 +67,8 @@ size_t GetUnderestimatedStackSize() {
+ // low as 512k.
+ //
+ return 512 * 1024;
++#elif defined(OS_OPENBSD)
++ return 512 * 1024;
+ #elif defined(OS_MAC)
+ // pthread_get_stacksize_np() returns too low a value for the main thread on
+ // OSX 10.9,
+@@ -98,12 +105,18 @@ return Threading::ThreadStackSize();
+
+ void* GetStackStart() {
+ #if defined(__GLIBC__) || defined(OS_ANDROID) || defined(OS_FREEBSD) || \
+- defined(OS_FUCHSIA)
++ defined(OS_FUCHSIA) || defined(OS_BSD)
+ pthread_attr_t attr;
+ int error;
+ #if defined(OS_FREEBSD)
+ pthread_attr_init(&attr);
+ error = pthread_attr_get_np(pthread_self(), &attr);
++#elif defined(OS_OPENBSD)
++ stack_t ss;
++ void *base;
++ error = pthread_stackseg_np(pthread_self(), &ss);
++ base = (void*)((size_t) ss.ss_sp - ss.ss_size);
++ return reinterpret_cast<uint8_t*>(base) + ss.ss_size;
+ #else
+ error = pthread_getattr_np(pthread_self(), &attr);
+ #endif
diff --git a/devel/electron17/files/patch-third__party_boringssl_BUILD.generated.gni b/devel/electron17/files/patch-third__party_boringssl_BUILD.generated.gni
new file mode 100644
index 000000000000..fa27e0bb40ff
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_boringssl_BUILD.generated.gni
@@ -0,0 +1,10 @@
+--- third_party/boringssl/BUILD.generated.gni.orig 2022-05-11 07:17:05 UTC
++++ third_party/boringssl/BUILD.generated.gni
+@@ -183,6 +183,7 @@ crypto_sources = [
+ "src/crypto/rand_extra/deterministic.c",
+ "src/crypto/rand_extra/forkunsafe.c",
+ "src/crypto/rand_extra/fuchsia.c",
++ "src/crypto/rand_extra/arc4random.c",
+ "src/crypto/rand_extra/passive.c",
+ "src/crypto/rand_extra/rand_extra.c",
+ "src/crypto/rand_extra/windows.c",
diff --git a/devel/electron17/files/patch-third__party_boringssl_src_crypto_fipsmodule_rand_internal.h b/devel/electron17/files/patch-third__party_boringssl_src_crypto_fipsmodule_rand_internal.h
new file mode 100644
index 000000000000..c6fda9173ad5
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_boringssl_src_crypto_fipsmodule_rand_internal.h
@@ -0,0 +1,12 @@
+--- third_party/boringssl/src/crypto/fipsmodule/rand/internal.h.orig 2022-05-11 07:17:25 UTC
++++ third_party/boringssl/src/crypto/fipsmodule/rand/internal.h
+@@ -27,7 +27,8 @@ extern "C" {
+
+
+ #if !defined(OPENSSL_WINDOWS) && !defined(OPENSSL_FUCHSIA) && \
+- !defined(BORINGSSL_UNSAFE_DETERMINISTIC_MODE) && !defined(OPENSSL_TRUSTY)
++ !defined(BORINGSSL_UNSAFE_DETERMINISTIC_MODE) && !defined(OPENSSL_TRUSTY) && \
++ !defined(OPENSSL_ARC4RANDOM)
+ #define OPENSSL_URANDOM
+ #endif
+
diff --git a/devel/electron17/files/patch-third__party_boringssl_src_crypto_rand__extra_arc4random.c b/devel/electron17/files/patch-third__party_boringssl_src_crypto_rand__extra_arc4random.c
new file mode 100644
index 000000000000..26e95b667f2e
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_boringssl_src_crypto_rand__extra_arc4random.c
@@ -0,0 +1,36 @@
+--- third_party/boringssl/src/crypto/rand_extra/arc4random.c.orig 2022-05-13 07:20:05 UTC
++++ third_party/boringssl/src/crypto/rand_extra/arc4random.c
+@@ -0,0 +1,33 @@
++/* Copyright (c) 2018, Robert Nagy <robert@openbsd.org>
++ *
++ * Permission to use, copy, modify, and/or distribute this software for any
++ * purpose with or without fee is hereby granted, provided that the above
++ * copyright notice and this permission notice appear in all copies.
++ *
++ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
++ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
++ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
++ * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
++ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
++ * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
++ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */
++
++#define _BSD_SOURCE 1
++
++#include <openssl/rand.h>
++
++#if defined(OPENSSL_ARC4RANDOM) && !defined(BORINGSSL_UNSAFE_DETERMINISTIC_MODE)
++
++#include <stdlib.h>
++
++#include "../fipsmodule/rand/internal.h"
++
++void CRYPTO_sysrand_for_seed(uint8_t *out, size_t requested) {
++ CRYPTO_sysrand(out, requested);
++}
++
++void CRYPTO_sysrand(uint8_t *out, size_t requested) {
++ arc4random_buf(out, requested);
++}
++
++#endif // OPENSSL_ARC4RANDOM && !BORINGSSL_UNSAFE_DETERMINISTIC_MODE
diff --git a/devel/electron17/files/patch-third__party_boringssl_src_crypto_refcount__c11.c b/devel/electron17/files/patch-third__party_boringssl_src_crypto_refcount__c11.c
new file mode 100644
index 000000000000..5fcae5e53850
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_boringssl_src_crypto_refcount__c11.c
@@ -0,0 +1,12 @@
+--- third_party/boringssl/src/crypto/refcount_c11.c.orig 2022-05-11 07:02:47 UTC
++++ third_party/boringssl/src/crypto/refcount_c11.c
+@@ -24,6 +24,9 @@
+
+ #include <openssl/type_check.h>
+
++#if !defined(__cplusplus) && !defined(static_assert)
++#define static_assert _Static_assert
++#endif
+
+ // See comment above the typedef of CRYPTO_refcount_t about these tests.
+ static_assert(alignof(CRYPTO_refcount_t) == alignof(_Atomic CRYPTO_refcount_t),
diff --git a/devel/electron17/files/patch-third__party_boringssl_src_include_openssl_base.h b/devel/electron17/files/patch-third__party_boringssl_src_include_openssl_base.h
new file mode 100644
index 000000000000..9ebb95d85524
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_boringssl_src_include_openssl_base.h
@@ -0,0 +1,14 @@
+--- third_party/boringssl/src/include/openssl/base.h.orig 2022-05-11 07:17:25 UTC
++++ third_party/boringssl/src/include/openssl/base.h
+@@ -153,6 +153,11 @@ extern "C" {
+ #define OPENSSL_FUCHSIA
+ #endif
+
++#if defined(__OpenBSD__)
++#define OPENSSL_OPENBSD
++#define OPENSSL_ARC4RANDOM
++#endif
++
+ #if defined(__TRUSTY__)
+ #define OPENSSL_TRUSTY
+ #define OPENSSL_NO_THREADS_CORRUPT_MEMORY_AND_LEAK_SECRETS_IF_THREADED
diff --git a/devel/electron17/files/patch-third__party_boringssl_src_include_openssl_cpu.h b/devel/electron17/files/patch-third__party_boringssl_src_include_openssl_cpu.h
new file mode 100644
index 000000000000..2fe8d73fb5b6
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_boringssl_src_include_openssl_cpu.h
@@ -0,0 +1,11 @@
+--- third_party/boringssl/src/include/openssl/cpu.h.orig 2022-05-11 07:17:25 UTC
++++ third_party/boringssl/src/include/openssl/cpu.h
+@@ -105,7 +105,7 @@ OPENSSL_INLINE const uint32_t *OPENSSL_ia32cap_get(voi
+
+ #if defined(OPENSSL_ARM) || defined(OPENSSL_AARCH64)
+
+-#if defined(OPENSSL_APPLE)
++#if defined(OPENSSL_APPLE) || defined(OPENSSL_OPENBSD)
+ // iOS builds use the static ARM configuration.
+ #define OPENSSL_STATIC_ARMCAP
+ #endif
diff --git a/devel/electron17/files/patch-third__party_brotli_common_platform.h b/devel/electron17/files/patch-third__party_brotli_common_platform.h
new file mode 100644
index 000000000000..3fea36059239
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_brotli_common_platform.h
@@ -0,0 +1,11 @@
+--- third_party/brotli/common/platform.h.orig 2022-05-11 07:01:48 UTC
++++ third_party/brotli/common/platform.h
+@@ -28,7 +28,7 @@
+ #include <brotli/port.h>
+ #include <brotli/types.h>
+
+-#if defined(OS_LINUX) || defined(OS_CYGWIN) || defined(__EMSCRIPTEN__)
++#if defined(OS_LINUX) || defined(OS_CYGWIN) || defined(__EMSCRIPTEN__) || defined(OS_BSD)
+ #include <endian.h>
+ #elif defined(OS_FREEBSD)
+ #include <machine/endian.h>
diff --git a/devel/electron17/files/patch-third__party_crashpad_crashpad_build_crashpad__buildconfig.gni b/devel/electron17/files/patch-third__party_crashpad_crashpad_build_crashpad__buildconfig.gni
new file mode 100644
index 000000000000..b55a765ae9d7
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_crashpad_crashpad_build_crashpad__buildconfig.gni
@@ -0,0 +1,11 @@
+--- third_party/crashpad/crashpad/build/crashpad_buildconfig.gni.orig 2022-05-11 07:01:48 UTC
++++ third_party/crashpad/crashpad/build/crashpad_buildconfig.gni
+@@ -58,7 +58,7 @@ if (crashpad_is_in_chromium) {
+ crashpad_is_mac = is_mac
+ crashpad_is_ios = is_ios
+ crashpad_is_win = is_win
+- crashpad_is_linux = is_linux || is_chromeos
++ crashpad_is_linux = (is_linux || is_chromeos) && !is_bsd
+ crashpad_is_android = is_android
+ crashpad_is_fuchsia = is_fuchsia
+
diff --git a/devel/electron17/files/patch-third__party_crashpad_crashpad_client_BUILD.gn b/devel/electron17/files/patch-third__party_crashpad_crashpad_client_BUILD.gn
new file mode 100644
index 000000000000..5224bf3f17a4
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_crashpad_crashpad_client_BUILD.gn
@@ -0,0 +1,16 @@
+--- third_party/crashpad/crashpad/client/BUILD.gn.orig 2022-05-11 07:01:48 UTC
++++ third_party/crashpad/crashpad/client/BUILD.gn
+@@ -130,6 +130,13 @@ static_library("common") {
+ if (crashpad_is_win) {
+ sources += [ "crash_report_database_win.cc" ]
+ }
++
++ if (crashpad_is_posix) {
++ sources += [
++ "crashpad_client_posix.cc",
++ ]
++ }
++
+ if (crashpad_is_linux || crashpad_is_android || crashpad_is_fuchsia) {
+ sources += [
+ "crash_report_database_generic.cc",
diff --git a/devel/electron17/files/patch-third__party_crashpad_crashpad_client_crashpad__client__posix.cc b/devel/electron17/files/patch-third__party_crashpad_crashpad_client_crashpad__client__posix.cc
new file mode 100644
index 000000000000..f130a0adee08
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_crashpad_crashpad_client_crashpad__client__posix.cc
@@ -0,0 +1,43 @@
+--- third_party/crashpad/crashpad/client/crashpad_client_posix.cc.orig 2022-05-13 07:20:05 UTC
++++ third_party/crashpad/crashpad/client/crashpad_client_posix.cc
+@@ -0,0 +1,40 @@
++// Copyright 2017 The Crashpad Authors. All rights reserved.
++//
++// Licensed under the Apache License, Version 2.0 (the "License");
++// you may not use this file except in compliance with the License.
++// You may obtain a copy of the License at
++//
++// http://www.apache.org/licenses/LICENSE-2.0
++//
++// Unless required by applicable law or agreed to in writing, software
++// distributed under the License is distributed on an "AS IS" BASIS,
++// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
++// See the License for the specific language governing permissions and
++// limitations under the License.
++
++#include "client/crashpad_client.h"
++
++#include "base/logging.h"
++#include "base/notreached.h"
++
++namespace crashpad {
++
++CrashpadClient::CrashpadClient() {}
++
++CrashpadClient::~CrashpadClient() {}
++
++bool CrashpadClient::StartHandler(
++ const base::FilePath& handler,
++ const base::FilePath& database,
++ const base::FilePath& metrics_dir,
++ const std::string& url,
++ const std::map<std::string, std::string>& annotations,
++ const std::vector<std::string>& arguments,
++ bool restartable,
++ bool asynchronous_start,
++ const std::vector<base::FilePath>& attachments) {
++ NOTREACHED(); // TODO(scottmg): https://crashpad.chromium.org/bug/196
++ return false;
++}
++
++} // namespace crashpad
diff --git a/devel/electron17/files/patch-third__party_crashpad_crashpad_minidump_minidump__misc__info__writer.cc b/devel/electron17/files/patch-third__party_crashpad_crashpad_minidump_minidump__misc__info__writer.cc
new file mode 100644
index 000000000000..872f36e0ed74
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_crashpad_crashpad_minidump_minidump__misc__info__writer.cc
@@ -0,0 +1,13 @@
+--- third_party/crashpad/crashpad/minidump/minidump_misc_info_writer.cc.orig 2022-05-11 07:17:05 UTC
++++ third_party/crashpad/crashpad/minidump/minidump_misc_info_writer.cc
+@@ -119,6 +119,10 @@ std::string MinidumpMiscInfoDebugBuildString() {
+ static constexpr char kOS[] = "win";
+ #elif defined(OS_FUCHSIA)
+ static constexpr char kOS[] = "fuchsia";
++#elif defined(OS_OPENBSD)
++ static constexpr char kOS[] = "openbsd";
++#elif defined(OS_FREEBSD)
++ static constexpr char kOS[] = "freebsd";
+ #else
+ #error define kOS for this operating system
+ #endif
diff --git a/devel/electron17/files/patch-third__party_crashpad_crashpad_util_misc_address__types.h b/devel/electron17/files/patch-third__party_crashpad_crashpad_util_misc_address__types.h
new file mode 100644
index 000000000000..023cf701be03
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_crashpad_crashpad_util_misc_address__types.h
@@ -0,0 +1,20 @@
+--- third_party/crashpad/crashpad/util/misc/address_types.h.orig 2022-05-11 07:17:05 UTC
++++ third_party/crashpad/crashpad/util/misc/address_types.h
+@@ -25,7 +25,7 @@
+ #include <mach/mach_types.h>
+ #elif defined(OS_WIN)
+ #include "util/win/address_types.h"
+-#elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
++#elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID) || defined(OS_BSD)
+ #include "util/linux/address_types.h"
+ #elif defined(OS_FUCHSIA)
+ #include <zircon/types.h>
+@@ -55,7 +55,7 @@ using VMSize = mach_vm_size_t;
+ using VMAddress = WinVMAddress;
+ using VMSize = WinVMSize;
+
+-#elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
++#elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID) || defined(OS_BSD)
+
+ using VMAddress = LinuxVMAddress;
+ using VMSize = LinuxVMSize;
diff --git a/devel/electron17/files/patch-third__party_crashpad_crashpad_util_misc_capture__context.h b/devel/electron17/files/patch-third__party_crashpad_crashpad_util_misc_capture__context.h
new file mode 100644
index 000000000000..3ba59e8e1286
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_crashpad_crashpad_util_misc_capture__context.h
@@ -0,0 +1,21 @@
+--- third_party/crashpad/crashpad/util/misc/capture_context.h.orig 2022-05-11 07:17:05 UTC
++++ third_party/crashpad/crashpad/util/misc/capture_context.h
+@@ -21,7 +21,8 @@
+ #include <mach/mach.h>
+ #elif defined(OS_WIN)
+ #include <windows.h>
+-#elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
++#elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID) || \
++ defined(OS_FREEBSD)
+ #include <ucontext.h>
+ #elif defined(OS_FUCHSIA)
+ #include <signal.h>
+@@ -38,7 +39,7 @@ using NativeCPUContext = arm_unified_thread_state;
+ #elif defined(OS_WIN)
+ using NativeCPUContext = CONTEXT;
+ #elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID) || \
+- defined(OS_FUCHSIA)
++ defined(OS_FUCHSIA) || defined(OS_BSD)
+ using NativeCPUContext = ucontext_t;
+ #endif // OS_APPLE
+
diff --git a/devel/electron17/files/patch-third__party_crashpad_crashpad_util_misc_metrics.cc b/devel/electron17/files/patch-third__party_crashpad_crashpad_util_misc_metrics.cc
new file mode 100644
index 000000000000..e9d516b8494d
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_crashpad_crashpad_util_misc_metrics.cc
@@ -0,0 +1,11 @@
+--- third_party/crashpad/crashpad/util/misc/metrics.cc.orig 2022-05-11 07:17:05 UTC
++++ third_party/crashpad/crashpad/util/misc/metrics.cc
+@@ -25,7 +25,7 @@
+ #define METRICS_OS_NAME "Win"
+ #elif defined(OS_ANDROID)
+ #define METRICS_OS_NAME "Android"
+-#elif defined(OS_LINUX) || defined(OS_CHROMEOS)
++#elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ #define METRICS_OS_NAME "Linux"
+ #elif defined(OS_FUCHSIA)
+ #define METRICS_OS_NAME "Fuchsia"
diff --git a/devel/electron17/files/patch-third__party_crashpad_crashpad_util_misc_uuid.cc b/devel/electron17/files/patch-third__party_crashpad_crashpad_util_misc_uuid.cc
new file mode 100644
index 000000000000..f7dcbf24ed51
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_crashpad_crashpad_util_misc_uuid.cc
@@ -0,0 +1,11 @@
+--- third_party/crashpad/crashpad/util/misc/uuid.cc.orig 2022-05-11 07:17:05 UTC
++++ third_party/crashpad/crashpad/util/misc/uuid.cc
+@@ -100,7 +100,7 @@ bool UUID::InitializeWithNew() {
+ InitializeFromBytes(uuid);
+ return true;
+ #elif defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) || \
+- defined(OS_ANDROID) || defined(OS_FUCHSIA)
++ defined(OS_ANDROID) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ // Linux, Android, and Fuchsia do not provide a UUID generator in a
+ // widely-available system library. On Linux and Android, uuid_generate()
+ // from libuuid is not available everywhere.
diff --git a/devel/electron17/files/patch-third__party_crashpad_crashpad_util_posix_close__multiple.cc b/devel/electron17/files/patch-third__party_crashpad_crashpad_util_posix_close__multiple.cc
new file mode 100644
index 000000000000..8fd00bcae51d
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_crashpad_crashpad_util_posix_close__multiple.cc
@@ -0,0 +1,11 @@
+--- third_party/crashpad/crashpad/util/posix/close_multiple.cc.orig 2022-05-11 07:17:05 UTC
++++ third_party/crashpad/crashpad/util/posix/close_multiple.cc
+@@ -72,7 +72,7 @@ void CloseNowOrOnExec(int fd, bool ebadf_ok) {
+ // This is an advantage over looping over all possible file descriptors, because
+ // no attempt needs to be made to close file descriptors that are not open.
+ bool CloseMultipleNowOrOnExecUsingFDDir(int min_fd, int preserve_fd) {
+-#if defined(OS_APPLE)
++#if defined(OS_APPLE) || defined(OS_BSD)
+ static constexpr char kFDDir[] = "/dev/fd";
+ #elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
+ static constexpr char kFDDir[] = "/proc/self/fd";
diff --git a/devel/electron17/files/patch-third__party_crashpad_crashpad_util_posix_drop__privileges.cc b/devel/electron17/files/patch-third__party_crashpad_crashpad_util_posix_drop__privileges.cc
new file mode 100644
index 000000000000..6826a24da748
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_crashpad_crashpad_util_posix_drop__privileges.cc
@@ -0,0 +1,11 @@
+--- third_party/crashpad/crashpad/util/posix/drop_privileges.cc.orig 2022-05-11 07:17:05 UTC
++++ third_party/crashpad/crashpad/util/posix/drop_privileges.cc
+@@ -25,7 +25,7 @@ void DropPrivileges() {
+ gid_t gid = getgid();
+ uid_t uid = getuid();
+
+-#if defined(OS_APPLE)
++#if defined(OS_APPLE) || defined(OS_BSD)
+ // Based on the POSIX.1-2008 2013 edition documentation for setreuid() and
+ // setregid(), setreuid() and setregid() alone should be sufficient to drop
+ // privileges. The standard specifies that the saved ID should be set to the
diff --git a/devel/electron17/files/patch-third__party_crashpad_crashpad_util_posix_signals.cc b/devel/electron17/files/patch-third__party_crashpad_crashpad_util_posix_signals.cc
new file mode 100644
index 000000000000..92786770faa2
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_crashpad_crashpad_util_posix_signals.cc
@@ -0,0 +1,33 @@
+--- third_party/crashpad/crashpad/util/posix/signals.cc.orig 2022-05-11 07:17:05 UTC
++++ third_party/crashpad/crashpad/util/posix/signals.cc
+@@ -50,7 +50,7 @@ constexpr int kCrashSignals[] = {
+ #if defined(SIGEMT)
+ SIGEMT,
+ #endif // defined(SIGEMT)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ SIGXCPU,
+ SIGXFSZ,
+ #endif // defined(OS_LINUX) || defined(OS_CHROMEOS)
+@@ -90,7 +90,7 @@ constexpr int kTerminateSignals[] = {
+ SIGXCPU,
+ SIGXFSZ,
+ #endif // defined(OS_APPLE)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ SIGIO,
+ #endif // defined(OS_LINUX) || defined(OS_CHROMEOS)
+ };
+@@ -232,8 +232,12 @@ bool Signals::WillSignalReraiseAutonomously(const sigi
+ // remains. See 10.12.3 xnu-3789.41.3/bsd/kern/kern_sig.c
+ // psignal_internal().
+ (code > 0 &&
++#if defined(SI_ASYNCIO)
+ code != SI_ASYNCIO &&
++#endif
++#if defined(SI_MESGQ)
+ code != SI_MESGQ &&
++#endif
+ code != SI_QUEUE &&
+ code != SI_TIMER &&
+ code != SI_USER &&
diff --git a/devel/electron17/files/patch-third__party_crashpad_crashpad_util_posix_symbolic__constants__posix.cc b/devel/electron17/files/patch-third__party_crashpad_crashpad_util_posix_symbolic__constants__posix.cc
new file mode 100644
index 000000000000..5f6e3b2b5a5d
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_crashpad_crashpad_util_posix_symbolic__constants__posix.cc
@@ -0,0 +1,20 @@
+--- third_party/crashpad/crashpad/util/posix/symbolic_constants_posix.cc.orig 2022-05-11 07:17:05 UTC
++++ third_party/crashpad/crashpad/util/posix/symbolic_constants_posix.cc
+@@ -64,7 +64,7 @@ constexpr const char* kSignalNames[] = {
+ "INFO",
+ "USR1",
+ "USR2",
+-#elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
++#elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID) || defined(OS_BSD)
+ #if defined(ARCH_CPU_MIPS_FAMILY)
+ "HUP",
+ "INT",
+@@ -135,7 +135,7 @@ constexpr const char* kSignalNames[] = {
+ #endif // defined(ARCH_CPU_MIPS_FAMILY)
+ #endif
+ };
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID) || defined(OS_BSD)
+ // NSIG is 64 to account for real-time signals.
+ static_assert(base::size(kSignalNames) == 32, "kSignalNames length");
+ #else
diff --git a/devel/electron17/files/patch-third__party_crc32c_BUILD.gn b/devel/electron17/files/patch-third__party_crc32c_BUILD.gn
new file mode 100644
index 000000000000..f1a942434d94
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_crc32c_BUILD.gn
@@ -0,0 +1,11 @@
+--- third_party/crc32c/BUILD.gn.orig 2022-05-11 07:01:48 UTC
++++ third_party/crc32c/BUILD.gn
+@@ -47,7 +47,7 @@ config("crc32c_config") {
+ }
+
+ # Android added <sys/auxv.h> in API level 18.
+- if (is_linux || is_chromeos || is_android) {
++ if (is_linux || is_chromeos || is_android && !is_bsd) {
+ defines += [
+ "HAVE_STRONG_GETAUXVAL=1",
+ "HAVE_WEAK_GETAUXVAL=1",
diff --git a/devel/electron17/files/patch-third__party_dawn_src_common_Platform.h b/devel/electron17/files/patch-third__party_dawn_src_common_Platform.h
new file mode 100644
index 000000000000..6a725dd18bcf
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_dawn_src_common_Platform.h
@@ -0,0 +1,13 @@
+--- third_party/dawn/src/common/Platform.h.orig 2022-05-11 07:17:27 UTC
++++ third_party/dawn/src/common/Platform.h
+@@ -26,6 +26,10 @@
+ # error "Unsupported Windows platform."
+ # endif
+
++#elif defined(__OpenBSD__) || defined(__FreeBSD__)
++# define DAWN_PLATFORM_BSD 1
++# define DAWN_PLATFORM_LINUX 1
++# define DAWN_PLATFORM_POSIX 1
+ #elif defined(__linux__)
+ # define DAWN_PLATFORM_LINUX 1
+ # define DAWN_PLATFORM_POSIX 1
diff --git a/devel/electron17/files/patch-third__party_dawn_src_dawn__native_vulkan_BackendVk.cpp b/devel/electron17/files/patch-third__party_dawn_src_dawn__native_vulkan_BackendVk.cpp
new file mode 100644
index 000000000000..81a775421a70
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_dawn_src_dawn__native_vulkan_BackendVk.cpp
@@ -0,0 +1,11 @@
+--- third_party/dawn/src/dawn_native/vulkan/BackendVk.cpp.orig 2022-05-11 07:17:27 UTC
++++ third_party/dawn/src/dawn_native/vulkan/BackendVk.cpp
+@@ -37,7 +37,7 @@ constexpr char kSwiftshaderLibName[] = "libvk_swiftsha
+ #endif
+
+ #if defined(DAWN_PLATFORM_LINUX)
+-# if defined(DAWN_PLATFORM_ANDROID)
++# if defined(DAWN_PLATFORM_ANDROID) || defined(DAWN_PLATFORM_BSD)
+ constexpr char kVulkanLibName[] = "libvulkan.so";
+ # else
+ constexpr char kVulkanLibName[] = "libvulkan.so.1";
diff --git a/devel/electron17/files/patch-third__party_dawn_src_include_dawn__native_VulkanBackend.h b/devel/electron17/files/patch-third__party_dawn_src_include_dawn__native_VulkanBackend.h
new file mode 100644
index 000000000000..10ab1d5d60de
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_dawn_src_include_dawn__native_VulkanBackend.h
@@ -0,0 +1,11 @@
+--- third_party/dawn/src/include/dawn_native/VulkanBackend.h.orig 2022-05-11 07:17:27 UTC
++++ third_party/dawn/src/include/dawn_native/VulkanBackend.h
+@@ -69,7 +69,7 @@ namespace dawn_native { namespace vulkan {
+ };
+
+ // Can't use DAWN_PLATFORM_LINUX since header included in both Dawn and Chrome
+-#ifdef __linux__
++#if defined(__linux__) || defined(__OpenBSD__) || defined(__FreeBSD__)
+
+ // Common properties of external images represented by FDs. On successful import the file
+ // descriptor's ownership is transferred to the Dawn implementation and they shouldn't be
diff --git a/devel/electron17/files/patch-third__party_electron__node_deps_uv_BUILD.gn b/devel/electron17/files/patch-third__party_electron__node_deps_uv_BUILD.gn
new file mode 100644
index 000000000000..9628c98dee4e
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_electron__node_deps_uv_BUILD.gn
@@ -0,0 +1,46 @@
+--- third_party/electron_node/deps/uv/BUILD.gn.orig 2022-05-13 07:19:54 UTC
++++ third_party/electron_node/deps/uv/BUILD.gn
+@@ -3,7 +3,7 @@ config("libuv_config") {
+
+ defines = []
+
+- if (is_linux) {
++ if (is_linux && !is_bsd) {
+ defines += [ "_POSIX_C_SOURCE=200112" ]
+ }
+ if (!is_win) {
+@@ -155,7 +155,7 @@ static_library("uv") {
+ libs += [ "m" ]
+ ldflags += [ "-pthread" ]
+ }
+- if (is_mac || is_linux) {
++ if (is_mac || (is_linux && !is_bsd)) {
+ sources += [ "src/unix/proctitle.c" ]
+ }
+ if (is_mac) {
+@@ -170,7 +170,7 @@ static_library("uv") {
+ "_DARWIN_UNLIMITED_SELECT=1",
+ ]
+ }
+- if (is_linux) {
++ if (is_linux && !is_bsd) {
+ defines += [ "_GNU_SOURCE" ]
+ sources += [
+ "src/unix/epoll.c",
+@@ -191,6 +191,16 @@ static_library("uv") {
+ sources += [
+ "src/unix/bsd-ifaddrs.c",
+ "src/unix/kqueue.c",
++ ]
++ }
++ if (is_bsd) {
++ sources += [
++ "src/unix/bsd-ifaddrs.c",
++ "src/unix/bsd-proctitle.c",
++ "src/unix/freebsd.c",
++ "src/unix/kqueue.c",
++ "src/unix/posix-hrtime.c",
++ "src/unix/random-getrandom.c",
+ ]
+ }
+ }
diff --git a/devel/electron17/files/patch-third__party_electron__node_deps_uv_src_unix_pipe.c b/devel/electron17/files/patch-third__party_electron__node_deps_uv_src_unix_pipe.c
new file mode 100644
index 000000000000..d01c2065440c
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_electron__node_deps_uv_src_unix_pipe.c
@@ -0,0 +1,18 @@
+--- third_party/electron_node/deps/uv/src/unix/pipe.c.orig 2020-07-22 14:57:01 UTC
++++ third_party/electron_node/deps/uv/src/unix/pipe.c
+@@ -150,9 +150,13 @@ int uv_pipe_open(uv_pipe_t* handle, uv_file fd) {
+ if (mode == -1)
+ return UV__ERR(errno); /* according to docs, must be EBADF */
+
++ /* If ioctl(FIONBIO) reports ENOTTY, try fcntl(F_GETFL) + fcntl(F_SETFL).
++ * Workaround for e.g. kqueue fds not supporting ioctls.
++ */
+ err = uv__nonblock(fd, 1);
+- if (err)
+- return err;
++ if (err == UV_ENOTTY)
++ if (uv__nonblock == uv__nonblock_ioctl)
++ err = uv__nonblock_fcntl(fd, 1);
+
+ #if defined(__APPLE__)
+ err = uv__stream_try_select((uv_stream_t*) handle, &fd);
diff --git a/devel/electron17/files/patch-third__party_ffmpeg_BUILD.gn b/devel/electron17/files/patch-third__party_ffmpeg_BUILD.gn
new file mode 100644
index 000000000000..a93cc1b500c0
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_ffmpeg_BUILD.gn
@@ -0,0 +1,10 @@
+--- third_party/ffmpeg/BUILD.gn.orig 2022-05-11 07:03:53 UTC
++++ third_party/ffmpeg/BUILD.gn
+@@ -349,7 +349,6 @@ target(link_target_type, "ffmpeg_internal") {
+ libs += [
+ "m",
+ "z",
+- "rt",
+ ]
+ }
+ if (is_component_ffmpeg) {
diff --git a/devel/electron17/files/patch-third__party_ffmpeg_chromium_config_Chrome_openbsd_arm64_config.h b/devel/electron17/files/patch-third__party_ffmpeg_chromium_config_Chrome_openbsd_arm64_config.h
new file mode 100644
index 000000000000..b831bd1736e3
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_ffmpeg_chromium_config_Chrome_openbsd_arm64_config.h
@@ -0,0 +1,2706 @@
+--- third_party/ffmpeg/chromium/config/Chrome/openbsd/arm64/config.h.orig 2022-05-13 07:20:05 UTC
++++ third_party/ffmpeg/chromium/config/Chrome/openbsd/arm64/config.h
+@@ -0,0 +1,2703 @@
++/* Automatically generated by configure - do not modify! */
++#ifndef FFMPEG_CONFIG_H
++#define FFMPEG_CONFIG_H
++/* #define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-debug --disable-bzlib --disable-error-resilience --disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl2 --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-faan --disable-alsa --disable-autodetect --enable-decoder='vorbis,libopus,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,mp3' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio,vp9' --extra-cflags=-I/chromium/chromium-git/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=nasm --optflags=-O2 --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --arch=aarch64 --enable-armv8 --extra-cflags='-march=armv8-a' --enable-pic --cc=clang --cxx=clang++ --ld=clang --extra-ldflags='-fuse-ld=lld' --enable-decoder='aac,h264' --enable-demuxer=aac --enable-parser='aac,h264'" -- elide long configuration string from binary */
++#define FFMPEG_LICENSE "LGPL version 2.1 or later"
++#define CONFIG_THIS_YEAR 2021
++#define FFMPEG_DATADIR "/usr/local/share/ffmpeg"
++#define AVCONV_DATADIR "/usr/local/share/ffmpeg"
++#define CC_IDENT "OpenBSD clang version 11.1.0"
++#define OS_NAME openbsd
++#define av_restrict restrict
++#define EXTERN_PREFIX ""
++#define EXTERN_ASM
++#define BUILDSUF ""
++#define SLIBSUF ".so"
++#define HAVE_MMX2 HAVE_MMXEXT
++#define SWS_MAX_FILTER_SIZE 256
++#define ARCH_AARCH64 1
++#define ARCH_ALPHA 0
++#define ARCH_ARM 0
++#define ARCH_AVR32 0
++#define ARCH_AVR32_AP 0
++#define ARCH_AVR32_UC 0
++#define ARCH_BFIN 0
++#define ARCH_IA64 0
++#define ARCH_M68K 0
++#define ARCH_MIPS 0
++#define ARCH_MIPS64 0
++#define ARCH_PARISC 0
++#define ARCH_PPC 0
++#define ARCH_PPC64 0
++#define ARCH_S390 0
++#define ARCH_SH4 0
++#define ARCH_SPARC 0
++#define ARCH_SPARC64 0
++#define ARCH_TILEGX 0
++#define ARCH_TILEPRO 0
++#define ARCH_TOMI 0
++#define ARCH_X86 0
++#define ARCH_X86_32 0
++#define ARCH_X86_64 0
++#define HAVE_ARMV5TE 0
++#define HAVE_ARMV6 0
++#define HAVE_ARMV6T2 0
++#define HAVE_ARMV8 1
++#define HAVE_NEON 1
++#define HAVE_VFP 1
++#define HAVE_VFPV3 0
++#define HAVE_SETEND 0
++#define HAVE_ALTIVEC 0
++#define HAVE_DCBZL 0
++#define HAVE_LDBRX 0
++#define HAVE_POWER8 0
++#define HAVE_PPC4XX 0
++#define HAVE_VSX 0
++#define HAVE_AESNI 0
++#define HAVE_AMD3DNOW 0
++#define HAVE_AMD3DNOWEXT 0
++#define HAVE_AVX 0
++#define HAVE_AVX2 0
++#define HAVE_AVX512 0
++#define HAVE_FMA3 0
++#define HAVE_FMA4 0
++#define HAVE_MMX 0
++#define HAVE_MMXEXT 0
++#define HAVE_SSE 0
++#define HAVE_SSE2 0
++#define HAVE_SSE3 0
++#define HAVE_SSE4 0
++#define HAVE_SSE42 0
++#define HAVE_SSSE3 0
++#define HAVE_XOP 0
++#define HAVE_CPUNOP 0
++#define HAVE_I686 0
++#define HAVE_MIPSFPU 0
++#define HAVE_MIPS32R2 0
++#define HAVE_MIPS32R5 0
++#define HAVE_MIPS64R2 0
++#define HAVE_MIPS32R6 0
++#define HAVE_MIPS64R6 0
++#define HAVE_MIPSDSP 0
++#define HAVE_MIPSDSPR2 0
++#define HAVE_MSA 0
++#define HAVE_LOONGSON2 0
++#define HAVE_LOONGSON3 0
++#define HAVE_MMI 0
++#define HAVE_ARMV5TE_EXTERNAL 0
++#define HAVE_ARMV6_EXTERNAL 0
++#define HAVE_ARMV6T2_EXTERNAL 0
++#define HAVE_ARMV8_EXTERNAL 1
++#define HAVE_NEON_EXTERNAL 1
++#define HAVE_VFP_EXTERNAL 1
++#define HAVE_VFPV3_EXTERNAL 0
++#define HAVE_SETEND_EXTERNAL 0
++#define HAVE_ALTIVEC_EXTERNAL 0
++#define HAVE_DCBZL_EXTERNAL 0
++#define HAVE_LDBRX_EXTERNAL 0
++#define HAVE_POWER8_EXTERNAL 0
++#define HAVE_PPC4XX_EXTERNAL 0
++#define HAVE_VSX_EXTERNAL 0
++#define HAVE_AESNI_EXTERNAL 0
++#define HAVE_AMD3DNOW_EXTERNAL 0
++#define HAVE_AMD3DNOWEXT_EXTERNAL 0
++#define HAVE_AVX_EXTERNAL 0
++#define HAVE_AVX2_EXTERNAL 0
++#define HAVE_AVX512_EXTERNAL 0
++#define HAVE_FMA3_EXTERNAL 0
++#define HAVE_FMA4_EXTERNAL 0
++#define HAVE_MMX_EXTERNAL 0
++#define HAVE_MMXEXT_EXTERNAL 0
++#define HAVE_SSE_EXTERNAL 0
++#define HAVE_SSE2_EXTERNAL 0
++#define HAVE_SSE3_EXTERNAL 0
++#define HAVE_SSE4_EXTERNAL 0
++#define HAVE_SSE42_EXTERNAL 0
++#define HAVE_SSSE3_EXTERNAL 0
++#define HAVE_XOP_EXTERNAL 0
++#define HAVE_CPUNOP_EXTERNAL 0
++#define HAVE_I686_EXTERNAL 0
++#define HAVE_MIPSFPU_EXTERNAL 0
++#define HAVE_MIPS32R2_EXTERNAL 0
++#define HAVE_MIPS32R5_EXTERNAL 0
++#define HAVE_MIPS64R2_EXTERNAL 0
++#define HAVE_MIPS32R6_EXTERNAL 0
++#define HAVE_MIPS64R6_EXTERNAL 0
++#define HAVE_MIPSDSP_EXTERNAL 0
++#define HAVE_MIPSDSPR2_EXTERNAL 0
++#define HAVE_MSA_EXTERNAL 0
++#define HAVE_LOONGSON2_EXTERNAL 0
++#define HAVE_LOONGSON3_EXTERNAL 0
++#define HAVE_MMI_EXTERNAL 0
++#define HAVE_ARMV5TE_INLINE 0
++#define HAVE_ARMV6_INLINE 0
++#define HAVE_ARMV6T2_INLINE 0
++#define HAVE_ARMV8_INLINE 1
++#define HAVE_NEON_INLINE 1
++#define HAVE_VFP_INLINE 1
++#define HAVE_VFPV3_INLINE 0
++#define HAVE_SETEND_INLINE 0
++#define HAVE_ALTIVEC_INLINE 0
++#define HAVE_DCBZL_INLINE 0
++#define HAVE_LDBRX_INLINE 0
++#define HAVE_POWER8_INLINE 0
++#define HAVE_PPC4XX_INLINE 0
++#define HAVE_VSX_INLINE 0
++#define HAVE_AESNI_INLINE 0
++#define HAVE_AMD3DNOW_INLINE 0
++#define HAVE_AMD3DNOWEXT_INLINE 0
++#define HAVE_AVX_INLINE 0
++#define HAVE_AVX2_INLINE 0
++#define HAVE_AVX512_INLINE 0
++#define HAVE_FMA3_INLINE 0
++#define HAVE_FMA4_INLINE 0
++#define HAVE_MMX_INLINE 0
++#define HAVE_MMXEXT_INLINE 0
++#define HAVE_SSE_INLINE 0
++#define HAVE_SSE2_INLINE 0
++#define HAVE_SSE3_INLINE 0
++#define HAVE_SSE4_INLINE 0
++#define HAVE_SSE42_INLINE 0
++#define HAVE_SSSE3_INLINE 0
++#define HAVE_XOP_INLINE 0
++#define HAVE_CPUNOP_INLINE 0
++#define HAVE_I686_INLINE 0
++#define HAVE_MIPSFPU_INLINE 0
++#define HAVE_MIPS32R2_INLINE 0
++#define HAVE_MIPS32R5_INLINE 0
++#define HAVE_MIPS64R2_INLINE 0
++#define HAVE_MIPS32R6_INLINE 0
++#define HAVE_MIPS64R6_INLINE 0
++#define HAVE_MIPSDSP_INLINE 0
++#define HAVE_MIPSDSPR2_INLINE 0
++#define HAVE_MSA_INLINE 0
++#define HAVE_LOONGSON2_INLINE 0
++#define HAVE_LOONGSON3_INLINE 0
++#define HAVE_MMI_INLINE 0
++#define HAVE_ALIGNED_STACK 1
++#define HAVE_FAST_64BIT 1
++#define HAVE_FAST_CLZ 1
++#define HAVE_FAST_CMOV 0
++#define HAVE_LOCAL_ALIGNED 0
++#define HAVE_SIMD_ALIGN_16 1
++#define HAVE_SIMD_ALIGN_32 0
++#define HAVE_SIMD_ALIGN_64 0
++#define HAVE_ATOMIC_CAS_PTR 0
++#define HAVE_MACHINE_RW_BARRIER 0
++#define HAVE_MEMORYBARRIER 0
++#define HAVE_MM_EMPTY 0
++#define HAVE_RDTSC 0
++#define HAVE_SEM_TIMEDWAIT 1
++#define HAVE_SYNC_VAL_COMPARE_AND_SWAP 1
++#define HAVE_CABS 0
++#define HAVE_CEXP 0
++#define HAVE_INLINE_ASM 1
++#define HAVE_SYMVER 0
++#define HAVE_X86ASM 0
++#define HAVE_BIGENDIAN 0
++#define HAVE_FAST_UNALIGNED 1
++#define HAVE_ARPA_INET_H 0
++#define HAVE_ASM_TYPES_H 0
++#define HAVE_CDIO_PARANOIA_H 0
++#define HAVE_CDIO_PARANOIA_PARANOIA_H 0
++#define HAVE_CUDA_H 0
++#define HAVE_DISPATCH_DISPATCH_H 0
++#define HAVE_DEV_BKTR_IOCTL_BT848_H 0
++#define HAVE_DEV_BKTR_IOCTL_METEOR_H 0
++#define HAVE_DEV_IC_BT8XX_H 1
++#define HAVE_DEV_VIDEO_BKTR_IOCTL_BT848_H 0
++#define HAVE_DEV_VIDEO_METEOR_IOCTL_METEOR_H 0
++#define HAVE_DIRECT_H 0
++#define HAVE_DIRENT_H 1
++#define HAVE_DXGIDEBUG_H 0
++#define HAVE_DXVA_H 0
++#define HAVE_ES2_GL_H 0
++#define HAVE_GSM_H 0
++#define HAVE_IO_H 0
++#define HAVE_LINUX_DMA_BUF_H 0
++#define HAVE_LINUX_PERF_EVENT_H 0
++#define HAVE_MACHINE_IOCTL_BT848_H 0
++#define HAVE_MACHINE_IOCTL_METEOR_H 0
++#define HAVE_MALLOC_H 0
++#define HAVE_OPENCV2_CORE_CORE_C_H 0
++#define HAVE_OPENGL_GL3_H 0
++#define HAVE_POLL_H 1
++#define HAVE_SYS_PARAM_H 1
++#define HAVE_SYS_RESOURCE_H 1
++#define HAVE_SYS_SELECT_H 1
++#define HAVE_SYS_SOUNDCARD_H 0
++#define HAVE_SYS_TIME_H 1
++#define HAVE_SYS_UN_H 1
++#define HAVE_SYS_VIDEOIO_H 1
++#define HAVE_TERMIOS_H 1
++#define HAVE_UDPLITE_H 0
++#define HAVE_UNISTD_H 1
++#define HAVE_VALGRIND_VALGRIND_H 0
++#define HAVE_WINDOWS_H 0
++#define HAVE_WINSOCK2_H 0
++#define HAVE_INTRINSICS_NEON 1
++#define HAVE_ATANF 1
++#define HAVE_ATAN2F 1
++#define HAVE_CBRT 1
++#define HAVE_CBRTF 1
++#define HAVE_COPYSIGN 1
++#define HAVE_COSF 1
++#define HAVE_ERF 1
++#define HAVE_EXP2 1
++#define HAVE_EXP2F 1
++#define HAVE_EXPF 1
++#define HAVE_HYPOT 1
++#define HAVE_ISFINITE 1
++#define HAVE_ISINF 1
++#define HAVE_ISNAN 1
++#define HAVE_LDEXPF 1
++#define HAVE_LLRINT 1
++#define HAVE_LLRINTF 1
++#define HAVE_LOG2 1
++#define HAVE_LOG2F 1
++#define HAVE_LOG10F 1
++#define HAVE_LRINT 1
++#define HAVE_LRINTF 1
++#define HAVE_POWF 1
++#define HAVE_RINT 1
++#define HAVE_ROUND 1
++#define HAVE_ROUNDF 1
++#define HAVE_SINF 1
++#define HAVE_TRUNC 1
++#define HAVE_TRUNCF 1
++#define HAVE_DOS_PATHS 0
++#define HAVE_LIBC_MSVCRT 0
++#define HAVE_MMAL_PARAMETER_VIDEO_MAX_NUM_CALLBACKS 0
++#define HAVE_SECTION_DATA_REL_RO 1
++#define HAVE_THREADS 1
++#define HAVE_UWP 0
++#define HAVE_WINRT 0
++#define HAVE_ACCESS 1
++#define HAVE_ALIGNED_MALLOC 0
++#define HAVE_ARC4RANDOM 1
++#define HAVE_CLOCK_GETTIME 1
++#define HAVE_CLOSESOCKET 0
++#define HAVE_COMMANDLINETOARGVW 0
++#define HAVE_FCNTL 1
++#define HAVE_GETADDRINFO 0
++#define HAVE_GETHRTIME 0
++#define HAVE_GETOPT 1
++#define HAVE_GETMODULEHANDLE 0
++#define HAVE_GETPROCESSAFFINITYMASK 0
++#define HAVE_GETPROCESSMEMORYINFO 0
++#define HAVE_GETPROCESSTIMES 0
++#define HAVE_GETRUSAGE 1
++#define HAVE_GETSTDHANDLE 0
++#define HAVE_GETSYSTEMTIMEASFILETIME 0
++#define HAVE_GETTIMEOFDAY 1
++#define HAVE_GLOB 1
++#define HAVE_GLXGETPROCADDRESS 0
++#define HAVE_GMTIME_R 1
++#define HAVE_INET_ATON 0
++#define HAVE_ISATTY 1
++#define HAVE_KBHIT 0
++#define HAVE_LOCALTIME_R 1
++#define HAVE_LSTAT 1
++#define HAVE_LZO1X_999_COMPRESS 0
++#define HAVE_MACH_ABSOLUTE_TIME 0
++#define HAVE_MAPVIEWOFFILE 0
++#define HAVE_MEMALIGN 0
++#define HAVE_MKSTEMP 1
++#define HAVE_MMAP 1
++#define HAVE_MPROTECT 1
++#define HAVE_NANOSLEEP 1
++#define HAVE_PEEKNAMEDPIPE 0
++#define HAVE_POSIX_MEMALIGN 1
++#define HAVE_PTHREAD_CANCEL 1
++#define HAVE_SCHED_GETAFFINITY 0
++#define HAVE_SECITEMIMPORT 0
++#define HAVE_SETCONSOLETEXTATTRIBUTE 0
++#define HAVE_SETCONSOLECTRLHANDLER 0
++#define HAVE_SETDLLDIRECTORY 0
++#define HAVE_SETMODE 0
++#define HAVE_SETRLIMIT 1
++#define HAVE_SLEEP 0
++#define HAVE_STRERROR_R 1
++#define HAVE_SYSCONF 1
++#define HAVE_SYSCTL 1
++#define HAVE_USLEEP 1
++#define HAVE_UTGETOSTYPEFROMSTRING 0
++#define HAVE_VIRTUALALLOC 0
++#define HAVE_WGLGETPROCADDRESS 0
++#define HAVE_BCRYPT 0
++#define HAVE_VAAPI_DRM 0
++#define HAVE_VAAPI_X11 0
++#define HAVE_VDPAU_X11 0
++#define HAVE_PTHREADS 1
++#define HAVE_OS2THREADS 0
++#define HAVE_W32THREADS 0
++#define HAVE_AS_ARCH_DIRECTIVE 0
++#define HAVE_AS_DN_DIRECTIVE 0
++#define HAVE_AS_FPU_DIRECTIVE 0
++#define HAVE_AS_FUNC 0
++#define HAVE_AS_OBJECT_ARCH 0
++#define HAVE_ASM_MOD_Q 0
++#define HAVE_BLOCKS_EXTENSION 0
++#define HAVE_EBP_AVAILABLE 0
++#define HAVE_EBX_AVAILABLE 0
++#define HAVE_GNU_AS 0
++#define HAVE_GNU_WINDRES 0
++#define HAVE_IBM_ASM 0
++#define HAVE_INLINE_ASM_DIRECT_SYMBOL_REFS 0
++#define HAVE_INLINE_ASM_LABELS 1
++#define HAVE_INLINE_ASM_NONLOCAL_LABELS 1
++#define HAVE_PRAGMA_DEPRECATED 1
++#define HAVE_RSYNC_CONTIMEOUT 0
++#define HAVE_SYMVER_ASM_LABEL 1
++#define HAVE_SYMVER_GNU_ASM 1
++/* #define HAVE_VFP_ARGS 0 -- softfp/hardfp selection is done by the chrome build */
++#define HAVE_XFORM_ASM 0
++#define HAVE_XMM_CLOBBERS 0
++#define HAVE_KCMVIDEOCODECTYPE_HEVC 0
++#define HAVE_KCMVIDEOCODECTYPE_HEVCWITHALPHA 0
++#define HAVE_KCVPIXELFORMATTYPE_420YPCBCR10BIPLANARVIDEORANGE 0
++#define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_SMPTE_ST_2084_PQ 0
++#define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_ITU_R_2100_HLG 0
++#define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_LINEAR 0
++#define HAVE_SOCKLEN_T 0
++#define HAVE_STRUCT_ADDRINFO 0
++#define HAVE_STRUCT_GROUP_SOURCE_REQ 0
++#define HAVE_STRUCT_IP_MREQ_SOURCE 0
++#define HAVE_STRUCT_IPV6_MREQ 0
++#define HAVE_STRUCT_MSGHDR_MSG_FLAGS 0
++#define HAVE_STRUCT_POLLFD 0
++#define HAVE_STRUCT_RUSAGE_RU_MAXRSS 1
++#define HAVE_STRUCT_SCTP_EVENT_SUBSCRIBE 0
++#define HAVE_STRUCT_SOCKADDR_IN6 0
++#define HAVE_STRUCT_SOCKADDR_SA_LEN 0
++#define HAVE_STRUCT_SOCKADDR_STORAGE 0
++#define HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC 1
++#define HAVE_STRUCT_V4L2_FRMIVALENUM_DISCRETE 1
++#define HAVE_LIBDRM_GETFB2 0
++#define HAVE_MAKEINFO 1
++#define HAVE_MAKEINFO_HTML 0
++#define HAVE_OPENCL_D3D11 0
++#define HAVE_OPENCL_DRM_ARM 0
++#define HAVE_OPENCL_DRM_BEIGNET 0
++#define HAVE_OPENCL_DXVA2 0
++#define HAVE_OPENCL_VAAPI_BEIGNET 0
++#define HAVE_OPENCL_VAAPI_INTEL_MEDIA 0
++#define HAVE_PERL 1
++#define HAVE_POD2MAN 1
++#define HAVE_TEXI2HTML 0
++#define CONFIG_DOC 0
++#define CONFIG_HTMLPAGES 0
++#define CONFIG_MANPAGES 0
++#define CONFIG_PODPAGES 0
++#define CONFIG_TXTPAGES 0
++#define CONFIG_AVIO_LIST_DIR_EXAMPLE 1
++#define CONFIG_AVIO_READING_EXAMPLE 1
++#define CONFIG_DECODE_AUDIO_EXAMPLE 1
++#define CONFIG_DECODE_VIDEO_EXAMPLE 1
++#define CONFIG_DEMUXING_DECODING_EXAMPLE 1
++#define CONFIG_ENCODE_AUDIO_EXAMPLE 1
++#define CONFIG_ENCODE_VIDEO_EXAMPLE 1
++#define CONFIG_EXTRACT_MVS_EXAMPLE 1
++#define CONFIG_FILTER_AUDIO_EXAMPLE 0
++#define CONFIG_FILTERING_AUDIO_EXAMPLE 0
++#define CONFIG_FILTERING_VIDEO_EXAMPLE 0
++#define CONFIG_HTTP_MULTICLIENT_EXAMPLE 1
++#define CONFIG_HW_DECODE_EXAMPLE 1
++#define CONFIG_METADATA_EXAMPLE 1
++#define CONFIG_MUXING_EXAMPLE 0
++#define CONFIG_QSVDEC_EXAMPLE 0
++#define CONFIG_REMUXING_EXAMPLE 1
++#define CONFIG_RESAMPLING_AUDIO_EXAMPLE 0
++#define CONFIG_SCALING_VIDEO_EXAMPLE 0
++#define CONFIG_TRANSCODE_AAC_EXAMPLE 0
++#define CONFIG_TRANSCODING_EXAMPLE 0
++#define CONFIG_VAAPI_ENCODE_EXAMPLE 0
++#define CONFIG_VAAPI_TRANSCODE_EXAMPLE 0
++#define CONFIG_AVISYNTH 0
++#define CONFIG_FREI0R 0
++#define CONFIG_LIBCDIO 0
++#define CONFIG_LIBDAVS2 0
++#define CONFIG_LIBRUBBERBAND 0
++#define CONFIG_LIBVIDSTAB 0
++#define CONFIG_LIBX264 0
++#define CONFIG_LIBX265 0
++#define CONFIG_LIBXAVS 0
++#define CONFIG_LIBXAVS2 0
++#define CONFIG_LIBXVID 0
++#define CONFIG_DECKLINK 0
++#define CONFIG_LIBFDK_AAC 0
++#define CONFIG_OPENSSL 0
++#define CONFIG_LIBTLS 0
++#define CONFIG_GMP 0
++#define CONFIG_LIBARIBB24 0
++#define CONFIG_LIBLENSFUN 0
++#define CONFIG_LIBOPENCORE_AMRNB 0
++#define CONFIG_LIBOPENCORE_AMRWB 0
++#define CONFIG_LIBVO_AMRWBENC 0
++#define CONFIG_MBEDTLS 0
++#define CONFIG_RKMPP 0
++#define CONFIG_LIBSMBCLIENT 0
++#define CONFIG_CHROMAPRINT 0
++#define CONFIG_GCRYPT 0
++#define CONFIG_GNUTLS 0
++#define CONFIG_JNI 0
++#define CONFIG_LADSPA 0
++#define CONFIG_LIBAOM 0
++#define CONFIG_LIBASS 0
++#define CONFIG_LIBBLURAY 0
++#define CONFIG_LIBBS2B 0
++#define CONFIG_LIBCACA 0
++#define CONFIG_LIBCELT 0
++#define CONFIG_LIBCODEC2 0
++#define CONFIG_LIBDAV1D 0
++#define CONFIG_LIBDC1394 0
++#define CONFIG_LIBDRM 0
++#define CONFIG_LIBFLITE 0
++#define CONFIG_LIBFONTCONFIG 0
++#define CONFIG_LIBFREETYPE 0
++#define CONFIG_LIBFRIBIDI 0
++#define CONFIG_LIBGLSLANG 0
++#define CONFIG_LIBGME 0
++#define CONFIG_LIBGSM 0
++#define CONFIG_LIBIEC61883 0
++#define CONFIG_LIBILBC 0
++#define CONFIG_LIBJACK 0
++#define CONFIG_LIBKLVANC 0
++#define CONFIG_LIBKVAZAAR 0
++#define CONFIG_LIBMODPLUG 0
++#define CONFIG_LIBMP3LAME 0
++#define CONFIG_LIBMYSOFA 0
++#define CONFIG_LIBOPENCV 0
++#define CONFIG_LIBOPENH264 0
++#define CONFIG_LIBOPENJPEG 0
++#define CONFIG_LIBOPENMPT 0
++#define CONFIG_LIBOPENVINO 0
++#define CONFIG_LIBOPUS 1
++#define CONFIG_LIBPULSE 0
++#define CONFIG_LIBRABBITMQ 0
++#define CONFIG_LIBRAV1E 0
++#define CONFIG_LIBRIST 0
++#define CONFIG_LIBRSVG 0
++#define CONFIG_LIBRTMP 0
++#define CONFIG_LIBSHINE 0
++#define CONFIG_LIBSMBCLIENT 0
++#define CONFIG_LIBSNAPPY 0
++#define CONFIG_LIBSOXR 0
++#define CONFIG_LIBSPEEX 0
++#define CONFIG_LIBSRT 0
++#define CONFIG_LIBSSH 0
++#define CONFIG_LIBSVTAV1 0
++#define CONFIG_LIBTENSORFLOW 0
++#define CONFIG_LIBTESSERACT 0
++#define CONFIG_LIBTHEORA 0
++#define CONFIG_LIBTWOLAME 0
++#define CONFIG_LIBUAVS3D 0
++#define CONFIG_LIBV4L2 0
++#define CONFIG_LIBVMAF 0
++#define CONFIG_LIBVORBIS 0
++#define CONFIG_LIBVPX 0
++#define CONFIG_LIBWEBP 0
++#define CONFIG_LIBXML2 0
++#define CONFIG_LIBZIMG 0
++#define CONFIG_LIBZMQ 0
++#define CONFIG_LIBZVBI 0
++#define CONFIG_LV2 0
++#define CONFIG_MEDIACODEC 0
++#define CONFIG_OPENAL 0
++#define CONFIG_OPENGL 0
++#define CONFIG_POCKETSPHINX 0
++#define CONFIG_VAPOURSYNTH 0
++#define CONFIG_ALSA 0
++#define CONFIG_APPKIT 0
++#define CONFIG_AVFOUNDATION 0
++#define CONFIG_BZLIB 0
++#define CONFIG_COREIMAGE 0
++#define CONFIG_ICONV 0
++#define CONFIG_LIBXCB 0
++#define CONFIG_LIBXCB_SHM 0
++#define CONFIG_LIBXCB_SHAPE 0
++#define CONFIG_LIBXCB_XFIXES 0
++#define CONFIG_LZMA 0
++#define CONFIG_MEDIAFOUNDATION 0
++#define CONFIG_SCHANNEL 0
++#define CONFIG_SDL2 0
++#define CONFIG_SECURETRANSPORT 0
++#define CONFIG_SNDIO 0
++#define CONFIG_XLIB 0
++#define CONFIG_ZLIB 0
++#define CONFIG_CUDA_NVCC 0
++#define CONFIG_CUDA_SDK 0
++#define CONFIG_LIBNPP 0
++#define CONFIG_LIBMFX 0
++#define CONFIG_MMAL 0
++#define CONFIG_OMX 0
++#define CONFIG_OPENCL 0
++#define CONFIG_VULKAN 0
++#define CONFIG_AMF 0
++#define CONFIG_AUDIOTOOLBOX 0
++#define CONFIG_CRYSTALHD 0
++#define CONFIG_CUDA 0
++#define CONFIG_CUDA_LLVM 0
++#define CONFIG_CUVID 0
++#define CONFIG_D3D11VA 0
++#define CONFIG_DXVA2 0
++#define CONFIG_FFNVCODEC 0
++#define CONFIG_NVDEC 0
++#define CONFIG_NVENC 0
++#define CONFIG_VAAPI 0
++#define CONFIG_VDPAU 0
++#define CONFIG_VIDEOTOOLBOX 0
++#define CONFIG_V4L2_M2M 0
++#define CONFIG_XVMC 0
++#define CONFIG_FTRAPV 0
++#define CONFIG_GRAY 0
++#define CONFIG_HARDCODED_TABLES 0
++#define CONFIG_OMX_RPI 0
++#define CONFIG_RUNTIME_CPUDETECT 1
++#define CONFIG_SAFE_BITSTREAM_READER 1
++#define CONFIG_SHARED 0
++#define CONFIG_SMALL 0
++#define CONFIG_STATIC 1
++#define CONFIG_SWSCALE_ALPHA 1
++#define CONFIG_GPL 0
++#define CONFIG_NONFREE 0
++#define CONFIG_VERSION3 0
++#define CONFIG_AVDEVICE 0
++#define CONFIG_AVFILTER 0
++#define CONFIG_SWSCALE 0
++#define CONFIG_POSTPROC 0
++#define CONFIG_AVFORMAT 1
++#define CONFIG_AVCODEC 1
++#define CONFIG_SWRESAMPLE 0
++#define CONFIG_AVUTIL 1
++#define CONFIG_FFPLAY 0
++#define CONFIG_FFPROBE 0
++#define CONFIG_FFMPEG 0
++#define CONFIG_DCT 1
++#define CONFIG_DWT 0
++#define CONFIG_ERROR_RESILIENCE 0
++#define CONFIG_FAAN 0
++#define CONFIG_FAST_UNALIGNED 1
++#define CONFIG_FFT 1
++#define CONFIG_LSP 0
++#define CONFIG_LZO 0
++#define CONFIG_MDCT 1
++#define CONFIG_PIXELUTILS 0
++#define CONFIG_NETWORK 0
++#define CONFIG_RDFT 1
++#define CONFIG_AUTODETECT 0
++#define CONFIG_FONTCONFIG 0
++#define CONFIG_LARGE_TESTS 1
++#define CONFIG_LINUX_PERF 0
++#define CONFIG_MEMORY_POISONING 0
++#define CONFIG_NEON_CLOBBER_TEST 0
++#define CONFIG_OSSFUZZ 0
++#define CONFIG_PIC 1
++#define CONFIG_THUMB 0
++#define CONFIG_VALGRIND_BACKTRACE 0
++#define CONFIG_XMM_CLOBBER_TEST 0
++#define CONFIG_BSFS 1
++#define CONFIG_DECODERS 1
++#define CONFIG_ENCODERS 0
++#define CONFIG_HWACCELS 0
++#define CONFIG_PARSERS 1
++#define CONFIG_INDEVS 0
++#define CONFIG_OUTDEVS 0
++#define CONFIG_FILTERS 0
++#define CONFIG_DEMUXERS 1
++#define CONFIG_MUXERS 0
++#define CONFIG_PROTOCOLS 0
++#define CONFIG_AANDCTTABLES 0
++#define CONFIG_AC3DSP 0
++#define CONFIG_ADTS_HEADER 1
++#define CONFIG_ATSC_A53 1
++#define CONFIG_AUDIO_FRAME_QUEUE 0
++#define CONFIG_AUDIODSP 0
++#define CONFIG_BLOCKDSP 0
++#define CONFIG_BSWAPDSP 0
++#define CONFIG_CABAC 1
++#define CONFIG_CBS 0
++#define CONFIG_CBS_AV1 0
++#define CONFIG_CBS_H264 0
++#define CONFIG_CBS_H265 0
++#define CONFIG_CBS_JPEG 0
++#define CONFIG_CBS_MPEG2 0
++#define CONFIG_CBS_VP9 0
++#define CONFIG_DIRAC_PARSE 1
++#define CONFIG_DNN 0
++#define CONFIG_DVPROFILE 0
++#define CONFIG_EXIF 0
++#define CONFIG_FAANDCT 0
++#define CONFIG_FAANIDCT 0
++#define CONFIG_FDCTDSP 0
++#define CONFIG_FLACDSP 1
++#define CONFIG_FMTCONVERT 0
++#define CONFIG_FRAME_THREAD_ENCODER 0
++#define CONFIG_G722DSP 0
++#define CONFIG_GOLOMB 1
++#define CONFIG_GPLV3 0
++#define CONFIG_H263DSP 0
++#define CONFIG_H264CHROMA 1
++#define CONFIG_H264DSP 1
++#define CONFIG_H264PARSE 1
++#define CONFIG_H264PRED 1
++#define CONFIG_H264QPEL 1
++#define CONFIG_HEVCPARSE 0
++#define CONFIG_HPELDSP 1
++#define CONFIG_HUFFMAN 0
++#define CONFIG_HUFFYUVDSP 0
++#define CONFIG_HUFFYUVENCDSP 0
++#define CONFIG_IDCTDSP 0
++#define CONFIG_IIRFILTER 0
++#define CONFIG_MDCT15 1
++#define CONFIG_INTRAX8 0
++#define CONFIG_ISO_MEDIA 1
++#define CONFIG_IVIDSP 0
++#define CONFIG_JPEGTABLES 0
++#define CONFIG_LGPLV3 0
++#define CONFIG_LIBX262 0
++#define CONFIG_LLAUDDSP 0
++#define CONFIG_LLVIDDSP 0
++#define CONFIG_LLVIDENCDSP 0
++#define CONFIG_LPC 0
++#define CONFIG_LZF 0
++#define CONFIG_ME_CMP 0
++#define CONFIG_MPEG_ER 0
++#define CONFIG_MPEGAUDIO 1
++#define CONFIG_MPEGAUDIODSP 1
++#define CONFIG_MPEGAUDIOHEADER 1
++#define CONFIG_MPEGVIDEO 0
++#define CONFIG_MPEGVIDEOENC 0
++#define CONFIG_MSS34DSP 0
++#define CONFIG_PIXBLOCKDSP 0
++#define CONFIG_QPELDSP 0
++#define CONFIG_QSV 0
++#define CONFIG_QSVDEC 0
++#define CONFIG_QSVENC 0
++#define CONFIG_QSVVPP 0
++#define CONFIG_RANGECODER 0
++#define CONFIG_RIFFDEC 1
++#define CONFIG_RIFFENC 0
++#define CONFIG_RTPDEC 0
++#define CONFIG_RTPENC_CHAIN 0
++#define CONFIG_RV34DSP 0
++#define CONFIG_SCENE_SAD 0
++#define CONFIG_SINEWIN 1
++#define CONFIG_SNAPPY 0
++#define CONFIG_SRTP 0
++#define CONFIG_STARTCODE 1
++#define CONFIG_TEXTUREDSP 0
++#define CONFIG_TEXTUREDSPENC 0
++#define CONFIG_TPELDSP 0
++#define CONFIG_VAAPI_1 0
++#define CONFIG_VAAPI_ENCODE 0
++#define CONFIG_VC1DSP 0
++#define CONFIG_VIDEODSP 1
++#define CONFIG_VP3DSP 1
++#define CONFIG_VP56DSP 0
++#define CONFIG_VP8DSP 1
++#define CONFIG_WMA_FREQS 0
++#define CONFIG_WMV2DSP 0
++#define CONFIG_AAC_ADTSTOASC_BSF 0
++#define CONFIG_AV1_FRAME_MERGE_BSF 0
++#define CONFIG_AV1_FRAME_SPLIT_BSF 0
++#define CONFIG_AV1_METADATA_BSF 0
++#define CONFIG_CHOMP_BSF 0
++#define CONFIG_DUMP_EXTRADATA_BSF 0
++#define CONFIG_DCA_CORE_BSF 0
++#define CONFIG_EAC3_CORE_BSF 0
++#define CONFIG_EXTRACT_EXTRADATA_BSF 0
++#define CONFIG_FILTER_UNITS_BSF 0
++#define CONFIG_H264_METADATA_BSF 0
++#define CONFIG_H264_MP4TOANNEXB_BSF 0
++#define CONFIG_H264_REDUNDANT_PPS_BSF 0
++#define CONFIG_HAPQA_EXTRACT_BSF 0
++#define CONFIG_HEVC_METADATA_BSF 0
++#define CONFIG_HEVC_MP4TOANNEXB_BSF 0
++#define CONFIG_IMX_DUMP_HEADER_BSF 0
++#define CONFIG_MJPEG2JPEG_BSF 0
++#define CONFIG_MJPEGA_DUMP_HEADER_BSF 0
++#define CONFIG_MP3_HEADER_DECOMPRESS_BSF 0
++#define CONFIG_MPEG2_METADATA_BSF 0
++#define CONFIG_MPEG4_UNPACK_BFRAMES_BSF 0
++#define CONFIG_MOV2TEXTSUB_BSF 0
++#define CONFIG_NOISE_BSF 0
++#define CONFIG_NULL_BSF 1
++#define CONFIG_OPUS_METADATA_BSF 0
++#define CONFIG_PCM_RECHUNK_BSF 0
++#define CONFIG_PRORES_METADATA_BSF 0
++#define CONFIG_REMOVE_EXTRADATA_BSF 0
++#define CONFIG_SETTS_BSF 0
++#define CONFIG_TEXT2MOVSUB_BSF 0
++#define CONFIG_TRACE_HEADERS_BSF 0
++#define CONFIG_TRUEHD_CORE_BSF 0
++#define CONFIG_VP9_METADATA_BSF 0
++#define CONFIG_VP9_RAW_REORDER_BSF 0
++#define CONFIG_VP9_SUPERFRAME_BSF 0
++#define CONFIG_VP9_SUPERFRAME_SPLIT_BSF 0
++#define CONFIG_AASC_DECODER 0
++#define CONFIG_AIC_DECODER 0
++#define CONFIG_ALIAS_PIX_DECODER 0
++#define CONFIG_AGM_DECODER 0
++#define CONFIG_AMV_DECODER 0
++#define CONFIG_ANM_DECODER 0
++#define CONFIG_ANSI_DECODER 0
++#define CONFIG_APNG_DECODER 0
++#define CONFIG_ARBC_DECODER 0
++#define CONFIG_ARGO_DECODER 0
++#define CONFIG_ASV1_DECODER 0
++#define CONFIG_ASV2_DECODER 0
++#define CONFIG_AURA_DECODER 0
++#define CONFIG_AURA2_DECODER 0
++#define CONFIG_AVRP_DECODER 0
++#define CONFIG_AVRN_DECODER 0
++#define CONFIG_AVS_DECODER 0
++#define CONFIG_AVUI_DECODER 0
++#define CONFIG_AYUV_DECODER 0
++#define CONFIG_BETHSOFTVID_DECODER 0
++#define CONFIG_BFI_DECODER 0
++#define CONFIG_BINK_DECODER 0
++#define CONFIG_BITPACKED_DECODER 0
++#define CONFIG_BMP_DECODER 0
++#define CONFIG_BMV_VIDEO_DECODER 0
++#define CONFIG_BRENDER_PIX_DECODER 0
++#define CONFIG_C93_DECODER 0
++#define CONFIG_CAVS_DECODER 0
++#define CONFIG_CDGRAPHICS_DECODER 0
++#define CONFIG_CDTOONS_DECODER 0
++#define CONFIG_CDXL_DECODER 0
++#define CONFIG_CFHD_DECODER 0
++#define CONFIG_CINEPAK_DECODER 0
++#define CONFIG_CLEARVIDEO_DECODER 0
++#define CONFIG_CLJR_DECODER 0
++#define CONFIG_CLLC_DECODER 0
++#define CONFIG_COMFORTNOISE_DECODER 0
++#define CONFIG_CPIA_DECODER 0
++#define CONFIG_CRI_DECODER 0
++#define CONFIG_CSCD_DECODER 0
++#define CONFIG_CYUV_DECODER 0
++#define CONFIG_DDS_DECODER 0
++#define CONFIG_DFA_DECODER 0
++#define CONFIG_DIRAC_DECODER 0
++#define CONFIG_DNXHD_DECODER 0
++#define CONFIG_DPX_DECODER 0
++#define CONFIG_DSICINVIDEO_DECODER 0
++#define CONFIG_DVAUDIO_DECODER 0
++#define CONFIG_DVVIDEO_DECODER 0
++#define CONFIG_DXA_DECODER 0
++#define CONFIG_DXTORY_DECODER 0
++#define CONFIG_DXV_DECODER 0
++#define CONFIG_EACMV_DECODER 0
++#define CONFIG_EAMAD_DECODER 0
++#define CONFIG_EATGQ_DECODER 0
++#define CONFIG_EATGV_DECODER 0
++#define CONFIG_EATQI_DECODER 0
++#define CONFIG_EIGHTBPS_DECODER 0
++#define CONFIG_EIGHTSVX_EXP_DECODER 0
++#define CONFIG_EIGHTSVX_FIB_DECODER 0
++#define CONFIG_ESCAPE124_DECODER 0
++#define CONFIG_ESCAPE130_DECODER 0
++#define CONFIG_EXR_DECODER 0
++#define CONFIG_FFV1_DECODER 0
++#define CONFIG_FFVHUFF_DECODER 0
++#define CONFIG_FIC_DECODER 0
++#define CONFIG_FITS_DECODER 0
++#define CONFIG_FLASHSV_DECODER 0
++#define CONFIG_FLASHSV2_DECODER 0
++#define CONFIG_FLIC_DECODER 0
++#define CONFIG_FLV_DECODER 0
++#define CONFIG_FMVC_DECODER 0
++#define CONFIG_FOURXM_DECODER 0
++#define CONFIG_FRAPS_DECODER 0
++#define CONFIG_FRWU_DECODER 0
++#define CONFIG_G2M_DECODER 0
++#define CONFIG_GDV_DECODER 0
++#define CONFIG_GIF_DECODER 0
++#define CONFIG_H261_DECODER 0
++#define CONFIG_H263_DECODER 0
++#define CONFIG_H263I_DECODER 0
++#define CONFIG_H263P_DECODER 0
++#define CONFIG_H263_V4L2M2M_DECODER 0
++#define CONFIG_H264_DECODER 1
++#define CONFIG_H264_CRYSTALHD_DECODER 0
++#define CONFIG_H264_V4L2M2M_DECODER 0
++#define CONFIG_H264_MEDIACODEC_DECODER 0
++#define CONFIG_H264_MMAL_DECODER 0
++#define CONFIG_H264_QSV_DECODER 0
++#define CONFIG_H264_RKMPP_DECODER 0
++#define CONFIG_HAP_DECODER 0
++#define CONFIG_HEVC_DECODER 0
++#define CONFIG_HEVC_QSV_DECODER 0
++#define CONFIG_HEVC_RKMPP_DECODER 0
++#define CONFIG_HEVC_V4L2M2M_DECODER 0
++#define CONFIG_HNM4_VIDEO_DECODER 0
++#define CONFIG_HQ_HQA_DECODER 0
++#define CONFIG_HQX_DECODER 0
++#define CONFIG_HUFFYUV_DECODER 0
++#define CONFIG_HYMT_DECODER 0
++#define CONFIG_IDCIN_DECODER 0
++#define CONFIG_IFF_ILBM_DECODER 0
++#define CONFIG_IMM4_DECODER 0
++#define CONFIG_IMM5_DECODER 0
++#define CONFIG_INDEO2_DECODER 0
++#define CONFIG_INDEO3_DECODER 0
++#define CONFIG_INDEO4_DECODER 0
++#define CONFIG_INDEO5_DECODER 0
++#define CONFIG_INTERPLAY_VIDEO_DECODER 0
++#define CONFIG_IPU_DECODER 0
++#define CONFIG_JPEG2000_DECODER 0
++#define CONFIG_JPEGLS_DECODER 0
++#define CONFIG_JV_DECODER 0
++#define CONFIG_KGV1_DECODER 0
++#define CONFIG_KMVC_DECODER 0
++#define CONFIG_LAGARITH_DECODER 0
++#define CONFIG_LOCO_DECODER 0
++#define CONFIG_LSCR_DECODER 0
++#define CONFIG_M101_DECODER 0
++#define CONFIG_MAGICYUV_DECODER 0
++#define CONFIG_MDEC_DECODER 0
++#define CONFIG_MIMIC_DECODER 0
++#define CONFIG_MJPEG_DECODER 0
++#define CONFIG_MJPEGB_DECODER 0
++#define CONFIG_MMVIDEO_DECODER 0
++#define CONFIG_MOBICLIP_DECODER 0
++#define CONFIG_MOTIONPIXELS_DECODER 0
++#define CONFIG_MPEG1VIDEO_DECODER 0
++#define CONFIG_MPEG2VIDEO_DECODER 0
++#define CONFIG_MPEG4_DECODER 0
++#define CONFIG_MPEG4_CRYSTALHD_DECODER 0
++#define CONFIG_MPEG4_V4L2M2M_DECODER 0
++#define CONFIG_MPEG4_MMAL_DECODER 0
++#define CONFIG_MPEGVIDEO_DECODER 0
++#define CONFIG_MPEG1_V4L2M2M_DECODER 0
++#define CONFIG_MPEG2_MMAL_DECODER 0
++#define CONFIG_MPEG2_CRYSTALHD_DECODER 0
++#define CONFIG_MPEG2_V4L2M2M_DECODER 0
++#define CONFIG_MPEG2_QSV_DECODER 0
++#define CONFIG_MPEG2_MEDIACODEC_DECODER 0
++#define CONFIG_MSA1_DECODER 0
++#define CONFIG_MSCC_DECODER 0
++#define CONFIG_MSMPEG4V1_DECODER 0
++#define CONFIG_MSMPEG4V2_DECODER 0
++#define CONFIG_MSMPEG4V3_DECODER 0
++#define CONFIG_MSMPEG4_CRYSTALHD_DECODER 0
++#define CONFIG_MSP2_DECODER 0
++#define CONFIG_MSRLE_DECODER 0
++#define CONFIG_MSS1_DECODER 0
++#define CONFIG_MSS2_DECODER 0
++#define CONFIG_MSVIDEO1_DECODER 0
++#define CONFIG_MSZH_DECODER 0
++#define CONFIG_MTS2_DECODER 0
++#define CONFIG_MV30_DECODER 0
++#define CONFIG_MVC1_DECODER 0
++#define CONFIG_MVC2_DECODER 0
++#define CONFIG_MVDV_DECODER 0
++#define CONFIG_MVHA_DECODER 0
++#define CONFIG_MWSC_DECODER 0
++#define CONFIG_MXPEG_DECODER 0
++#define CONFIG_NOTCHLC_DECODER 0
++#define CONFIG_NUV_DECODER 0
++#define CONFIG_PAF_VIDEO_DECODER 0
++#define CONFIG_PAM_DECODER 0
++#define CONFIG_PBM_DECODER 0
++#define CONFIG_PCX_DECODER 0
++#define CONFIG_PFM_DECODER 0
++#define CONFIG_PGM_DECODER 0
++#define CONFIG_PGMYUV_DECODER 0
++#define CONFIG_PGX_DECODER 0
++#define CONFIG_PHOTOCD_DECODER 0
++#define CONFIG_PICTOR_DECODER 0
++#define CONFIG_PIXLET_DECODER 0
++#define CONFIG_PNG_DECODER 0
++#define CONFIG_PPM_DECODER 0
++#define CONFIG_PRORES_DECODER 0
++#define CONFIG_PROSUMER_DECODER 0
++#define CONFIG_PSD_DECODER 0
++#define CONFIG_PTX_DECODER 0
++#define CONFIG_QDRAW_DECODER 0
++#define CONFIG_QPEG_DECODER 0
++#define CONFIG_QTRLE_DECODER 0
++#define CONFIG_R10K_DECODER 0
++#define CONFIG_R210_DECODER 0
++#define CONFIG_RASC_DECODER 0
++#define CONFIG_RAWVIDEO_DECODER 0
++#define CONFIG_RL2_DECODER 0
++#define CONFIG_ROQ_DECODER 0
++#define CONFIG_RPZA_DECODER 0
++#define CONFIG_RSCC_DECODER 0
++#define CONFIG_RV10_DECODER 0
++#define CONFIG_RV20_DECODER 0
++#define CONFIG_RV30_DECODER 0
++#define CONFIG_RV40_DECODER 0
++#define CONFIG_S302M_DECODER 0
++#define CONFIG_SANM_DECODER 0
++#define CONFIG_SCPR_DECODER 0
++#define CONFIG_SCREENPRESSO_DECODER 0
++#define CONFIG_SGA_DECODER 0
++#define CONFIG_SGI_DECODER 0
++#define CONFIG_SGIRLE_DECODER 0
++#define CONFIG_SHEERVIDEO_DECODER 0
++#define CONFIG_SIMBIOSIS_IMX_DECODER 0
++#define CONFIG_SMACKER_DECODER 0
++#define CONFIG_SMC_DECODER 0
++#define CONFIG_SMVJPEG_DECODER 0
++#define CONFIG_SNOW_DECODER 0
++#define CONFIG_SP5X_DECODER 0
++#define CONFIG_SPEEDHQ_DECODER 0
++#define CONFIG_SRGC_DECODER 0
++#define CONFIG_SUNRAST_DECODER 0
++#define CONFIG_SVQ1_DECODER 0
++#define CONFIG_SVQ3_DECODER 0
++#define CONFIG_TARGA_DECODER 0
++#define CONFIG_TARGA_Y216_DECODER 0
++#define CONFIG_TDSC_DECODER 0
++#define CONFIG_THEORA_DECODER 1
++#define CONFIG_THP_DECODER 0
++#define CONFIG_TIERTEXSEQVIDEO_DECODER 0
++#define CONFIG_TIFF_DECODER 0
++#define CONFIG_TMV_DECODER 0
++#define CONFIG_TRUEMOTION1_DECODER 0
++#define CONFIG_TRUEMOTION2_DECODER 0
++#define CONFIG_TRUEMOTION2RT_DECODER 0
++#define CONFIG_TSCC_DECODER 0
++#define CONFIG_TSCC2_DECODER 0
++#define CONFIG_TXD_DECODER 0
++#define CONFIG_ULTI_DECODER 0
++#define CONFIG_UTVIDEO_DECODER 0
++#define CONFIG_V210_DECODER 0
++#define CONFIG_V210X_DECODER 0
++#define CONFIG_V308_DECODER 0
++#define CONFIG_V408_DECODER 0
++#define CONFIG_V410_DECODER 0
++#define CONFIG_VB_DECODER 0
++#define CONFIG_VBLE_DECODER 0
++#define CONFIG_VC1_DECODER 0
++#define CONFIG_VC1_CRYSTALHD_DECODER 0
++#define CONFIG_VC1IMAGE_DECODER 0
++#define CONFIG_VC1_MMAL_DECODER 0
++#define CONFIG_VC1_QSV_DECODER 0
++#define CONFIG_VC1_V4L2M2M_DECODER 0
++#define CONFIG_VCR1_DECODER 0
++#define CONFIG_VMDVIDEO_DECODER 0
++#define CONFIG_VMNC_DECODER 0
++#define CONFIG_VP3_DECODER 1
++#define CONFIG_VP4_DECODER 0
++#define CONFIG_VP5_DECODER 0
++#define CONFIG_VP6_DECODER 0
++#define CONFIG_VP6A_DECODER 0
++#define CONFIG_VP6F_DECODER 0
++#define CONFIG_VP7_DECODER 0
++#define CONFIG_VP8_DECODER 1
++#define CONFIG_VP8_RKMPP_DECODER 0
++#define CONFIG_VP8_V4L2M2M_DECODER 0
++#define CONFIG_VP9_DECODER 0
++#define CONFIG_VP9_RKMPP_DECODER 0
++#define CONFIG_VP9_V4L2M2M_DECODER 0
++#define CONFIG_VQA_DECODER 0
++#define CONFIG_WEBP_DECODER 0
++#define CONFIG_WCMV_DECODER 0
++#define CONFIG_WRAPPED_AVFRAME_DECODER 0
++#define CONFIG_WMV1_DECODER 0
++#define CONFIG_WMV2_DECODER 0
++#define CONFIG_WMV3_DECODER 0
++#define CONFIG_WMV3_CRYSTALHD_DECODER 0
++#define CONFIG_WMV3IMAGE_DECODER 0
++#define CONFIG_WNV1_DECODER 0
++#define CONFIG_XAN_WC3_DECODER 0
++#define CONFIG_XAN_WC4_DECODER 0
++#define CONFIG_XBM_DECODER 0
++#define CONFIG_XFACE_DECODER 0
++#define CONFIG_XL_DECODER 0
++#define CONFIG_XPM_DECODER 0
++#define CONFIG_XWD_DECODER 0
++#define CONFIG_Y41P_DECODER 0
++#define CONFIG_YLC_DECODER 0
++#define CONFIG_YOP_DECODER 0
++#define CONFIG_YUV4_DECODER 0
++#define CONFIG_ZERO12V_DECODER 0
++#define CONFIG_ZEROCODEC_DECODER 0
++#define CONFIG_ZLIB_DECODER 0
++#define CONFIG_ZMBV_DECODER 0
++#define CONFIG_AAC_DECODER 1
++#define CONFIG_AAC_FIXED_DECODER 0
++#define CONFIG_AAC_LATM_DECODER 0
++#define CONFIG_AC3_DECODER 0
++#define CONFIG_AC3_FIXED_DECODER 0
++#define CONFIG_ACELP_KELVIN_DECODER 0
++#define CONFIG_ALAC_DECODER 0
++#define CONFIG_ALS_DECODER 0
++#define CONFIG_AMRNB_DECODER 0
++#define CONFIG_AMRWB_DECODER 0
++#define CONFIG_APE_DECODER 0
++#define CONFIG_APTX_DECODER 0
++#define CONFIG_APTX_HD_DECODER 0
++#define CONFIG_ATRAC1_DECODER 0
++#define CONFIG_ATRAC3_DECODER 0
++#define CONFIG_ATRAC3AL_DECODER 0
++#define CONFIG_ATRAC3P_DECODER 0
++#define CONFIG_ATRAC3PAL_DECODER 0
++#define CONFIG_ATRAC9_DECODER 0
++#define CONFIG_BINKAUDIO_DCT_DECODER 0
++#define CONFIG_BINKAUDIO_RDFT_DECODER 0
++#define CONFIG_BMV_AUDIO_DECODER 0
++#define CONFIG_COOK_DECODER 0
++#define CONFIG_DCA_DECODER 0
++#define CONFIG_DOLBY_E_DECODER 0
++#define CONFIG_DSD_LSBF_DECODER 0
++#define CONFIG_DSD_MSBF_DECODER 0
++#define CONFIG_DSD_LSBF_PLANAR_DECODER 0
++#define CONFIG_DSD_MSBF_PLANAR_DECODER 0
++#define CONFIG_DSICINAUDIO_DECODER 0
++#define CONFIG_DSS_SP_DECODER 0
++#define CONFIG_DST_DECODER 0
++#define CONFIG_EAC3_DECODER 0
++#define CONFIG_EVRC_DECODER 0
++#define CONFIG_FASTAUDIO_DECODER 0
++#define CONFIG_FFWAVESYNTH_DECODER 0
++#define CONFIG_FLAC_DECODER 1
++#define CONFIG_G723_1_DECODER 0
++#define CONFIG_G729_DECODER 0
++#define CONFIG_GSM_DECODER 0
++#define CONFIG_GSM_MS_DECODER 0
++#define CONFIG_HCA_DECODER 0
++#define CONFIG_HCOM_DECODER 0
++#define CONFIG_IAC_DECODER 0
++#define CONFIG_ILBC_DECODER 0
++#define CONFIG_IMC_DECODER 0
++#define CONFIG_INTERPLAY_ACM_DECODER 0
++#define CONFIG_MACE3_DECODER 0
++#define CONFIG_MACE6_DECODER 0
++#define CONFIG_METASOUND_DECODER 0
++#define CONFIG_MLP_DECODER 0
++#define CONFIG_MP1_DECODER 0
++#define CONFIG_MP1FLOAT_DECODER 0
++#define CONFIG_MP2_DECODER 0
++#define CONFIG_MP2FLOAT_DECODER 0
++#define CONFIG_MP3FLOAT_DECODER 0
++#define CONFIG_MP3_DECODER 1
++#define CONFIG_MP3ADUFLOAT_DECODER 0
++#define CONFIG_MP3ADU_DECODER 0
++#define CONFIG_MP3ON4FLOAT_DECODER 0
++#define CONFIG_MP3ON4_DECODER 0
++#define CONFIG_MPC7_DECODER 0
++#define CONFIG_MPC8_DECODER 0
++#define CONFIG_NELLYMOSER_DECODER 0
++#define CONFIG_ON2AVC_DECODER 0
++#define CONFIG_OPUS_DECODER 0
++#define CONFIG_PAF_AUDIO_DECODER 0
++#define CONFIG_QCELP_DECODER 0
++#define CONFIG_QDM2_DECODER 0
++#define CONFIG_QDMC_DECODER 0
++#define CONFIG_RA_144_DECODER 0
++#define CONFIG_RA_288_DECODER 0
++#define CONFIG_RALF_DECODER 0
++#define CONFIG_SBC_DECODER 0
++#define CONFIG_SHORTEN_DECODER 0
++#define CONFIG_SIPR_DECODER 0
++#define CONFIG_SIREN_DECODER 0
++#define CONFIG_SMACKAUD_DECODER 0
++#define CONFIG_SONIC_DECODER 0
++#define CONFIG_TAK_DECODER 0
++#define CONFIG_TRUEHD_DECODER 0
++#define CONFIG_TRUESPEECH_DECODER 0
++#define CONFIG_TTA_DECODER 0
++#define CONFIG_TWINVQ_DECODER 0
++#define CONFIG_VMDAUDIO_DECODER 0
++#define CONFIG_VORBIS_DECODER 1
++#define CONFIG_WAVPACK_DECODER 0
++#define CONFIG_WMALOSSLESS_DECODER 0
++#define CONFIG_WMAPRO_DECODER 0
++#define CONFIG_WMAV1_DECODER 0
++#define CONFIG_WMAV2_DECODER 0
++#define CONFIG_WMAVOICE_DECODER 0
++#define CONFIG_WS_SND1_DECODER 0
++#define CONFIG_XMA1_DECODER 0
++#define CONFIG_XMA2_DECODER 0
++#define CONFIG_PCM_ALAW_DECODER 1
++#define CONFIG_PCM_BLURAY_DECODER 0
++#define CONFIG_PCM_DVD_DECODER 0
++#define CONFIG_PCM_F16LE_DECODER 0
++#define CONFIG_PCM_F24LE_DECODER 0
++#define CONFIG_PCM_F32BE_DECODER 0
++#define CONFIG_PCM_F32LE_DECODER 1
++#define CONFIG_PCM_F64BE_DECODER 0
++#define CONFIG_PCM_F64LE_DECODER 0
++#define CONFIG_PCM_LXF_DECODER 0
++#define CONFIG_PCM_MULAW_DECODER 1
++#define CONFIG_PCM_S8_DECODER 0
++#define CONFIG_PCM_S8_PLANAR_DECODER 0
++#define CONFIG_PCM_S16BE_DECODER 1
++#define CONFIG_PCM_S16BE_PLANAR_DECODER 0
++#define CONFIG_PCM_S16LE_DECODER 1
++#define CONFIG_PCM_S16LE_PLANAR_DECODER 0
++#define CONFIG_PCM_S24BE_DECODER 1
++#define CONFIG_PCM_S24DAUD_DECODER 0
++#define CONFIG_PCM_S24LE_DECODER 1
++#define CONFIG_PCM_S24LE_PLANAR_DECODER 0
++#define CONFIG_PCM_S32BE_DECODER 0
++#define CONFIG_PCM_S32LE_DECODER 1
++#define CONFIG_PCM_S32LE_PLANAR_DECODER 0
++#define CONFIG_PCM_S64BE_DECODER 0
++#define CONFIG_PCM_S64LE_DECODER 0
++#define CONFIG_PCM_SGA_DECODER 0
++#define CONFIG_PCM_U8_DECODER 1
++#define CONFIG_PCM_U16BE_DECODER 0
++#define CONFIG_PCM_U16LE_DECODER 0
++#define CONFIG_PCM_U24BE_DECODER 0
++#define CONFIG_PCM_U24LE_DECODER 0
++#define CONFIG_PCM_U32BE_DECODER 0
++#define CONFIG_PCM_U32LE_DECODER 0
++#define CONFIG_PCM_VIDC_DECODER 0
++#define CONFIG_DERF_DPCM_DECODER 0
++#define CONFIG_GREMLIN_DPCM_DECODER 0
++#define CONFIG_INTERPLAY_DPCM_DECODER 0
++#define CONFIG_ROQ_DPCM_DECODER 0
++#define CONFIG_SDX2_DPCM_DECODER 0
++#define CONFIG_SOL_DPCM_DECODER 0
++#define CONFIG_XAN_DPCM_DECODER 0
++#define CONFIG_ADPCM_4XM_DECODER 0
++#define CONFIG_ADPCM_ADX_DECODER 0
++#define CONFIG_ADPCM_AFC_DECODER 0
++#define CONFIG_ADPCM_AGM_DECODER 0
++#define CONFIG_ADPCM_AICA_DECODER 0
++#define CONFIG_ADPCM_ARGO_DECODER 0
++#define CONFIG_ADPCM_CT_DECODER 0
++#define CONFIG_ADPCM_DTK_DECODER 0
++#define CONFIG_ADPCM_EA_DECODER 0
++#define CONFIG_ADPCM_EA_MAXIS_XA_DECODER 0
++#define CONFIG_ADPCM_EA_R1_DECODER 0
++#define CONFIG_ADPCM_EA_R2_DECODER 0
++#define CONFIG_ADPCM_EA_R3_DECODER 0
++#define CONFIG_ADPCM_EA_XAS_DECODER 0
++#define CONFIG_ADPCM_G722_DECODER 0
++#define CONFIG_ADPCM_G726_DECODER 0
++#define CONFIG_ADPCM_G726LE_DECODER 0
++#define CONFIG_ADPCM_IMA_ACORN_DECODER 0
++#define CONFIG_ADPCM_IMA_AMV_DECODER 0
++#define CONFIG_ADPCM_IMA_ALP_DECODER 0
++#define CONFIG_ADPCM_IMA_APC_DECODER 0
++#define CONFIG_ADPCM_IMA_APM_DECODER 0
++#define CONFIG_ADPCM_IMA_CUNNING_DECODER 0
++#define CONFIG_ADPCM_IMA_DAT4_DECODER 0
++#define CONFIG_ADPCM_IMA_DK3_DECODER 0
++#define CONFIG_ADPCM_IMA_DK4_DECODER 0
++#define CONFIG_ADPCM_IMA_EA_EACS_DECODER 0
++#define CONFIG_ADPCM_IMA_EA_SEAD_DECODER 0
++#define CONFIG_ADPCM_IMA_ISS_DECODER 0
++#define CONFIG_ADPCM_IMA_MOFLEX_DECODER 0
++#define CONFIG_ADPCM_IMA_MTF_DECODER 0
++#define CONFIG_ADPCM_IMA_OKI_DECODER 0
++#define CONFIG_ADPCM_IMA_QT_DECODER 0
++#define CONFIG_ADPCM_IMA_RAD_DECODER 0
++#define CONFIG_ADPCM_IMA_SSI_DECODER 0
++#define CONFIG_ADPCM_IMA_SMJPEG_DECODER 0
++#define CONFIG_ADPCM_IMA_WAV_DECODER 0
++#define CONFIG_ADPCM_IMA_WS_DECODER 0
++#define CONFIG_ADPCM_MS_DECODER 0
++#define CONFIG_ADPCM_MTAF_DECODER 0
++#define CONFIG_ADPCM_PSX_DECODER 0
++#define CONFIG_ADPCM_SBPRO_2_DECODER 0
++#define CONFIG_ADPCM_SBPRO_3_DECODER 0
++#define CONFIG_ADPCM_SBPRO_4_DECODER 0
++#define CONFIG_ADPCM_SWF_DECODER 0
++#define CONFIG_ADPCM_THP_DECODER 0
++#define CONFIG_ADPCM_THP_LE_DECODER 0
++#define CONFIG_ADPCM_VIMA_DECODER 0
++#define CONFIG_ADPCM_XA_DECODER 0
++#define CONFIG_ADPCM_YAMAHA_DECODER 0
++#define CONFIG_ADPCM_ZORK_DECODER 0
++#define CONFIG_SSA_DECODER 0
++#define CONFIG_ASS_DECODER 0
++#define CONFIG_CCAPTION_DECODER 0
++#define CONFIG_DVBSUB_DECODER 0
++#define CONFIG_DVDSUB_DECODER 0
++#define CONFIG_JACOSUB_DECODER 0
++#define CONFIG_MICRODVD_DECODER 0
++#define CONFIG_MOVTEXT_DECODER 0
++#define CONFIG_MPL2_DECODER 0
++#define CONFIG_PGSSUB_DECODER 0
++#define CONFIG_PJS_DECODER 0
++#define CONFIG_REALTEXT_DECODER 0
++#define CONFIG_SAMI_DECODER 0
++#define CONFIG_SRT_DECODER 0
++#define CONFIG_STL_DECODER 0
++#define CONFIG_SUBRIP_DECODER 0
++#define CONFIG_SUBVIEWER_DECODER 0
++#define CONFIG_SUBVIEWER1_DECODER 0
++#define CONFIG_TEXT_DECODER 0
++#define CONFIG_VPLAYER_DECODER 0
++#define CONFIG_WEBVTT_DECODER 0
++#define CONFIG_XSUB_DECODER 0
++#define CONFIG_AAC_AT_DECODER 0
++#define CONFIG_AC3_AT_DECODER 0
++#define CONFIG_ADPCM_IMA_QT_AT_DECODER 0
++#define CONFIG_ALAC_AT_DECODER 0
++#define CONFIG_AMR_NB_AT_DECODER 0
++#define CONFIG_EAC3_AT_DECODER 0
++#define CONFIG_GSM_MS_AT_DECODER 0
++#define CONFIG_ILBC_AT_DECODER 0
++#define CONFIG_MP1_AT_DECODER 0
++#define CONFIG_MP2_AT_DECODER 0
++#define CONFIG_MP3_AT_DECODER 0
++#define CONFIG_PCM_ALAW_AT_DECODER 0
++#define CONFIG_PCM_MULAW_AT_DECODER 0
++#define CONFIG_QDMC_AT_DECODER 0
++#define CONFIG_QDM2_AT_DECODER 0
++#define CONFIG_LIBARIBB24_DECODER 0
++#define CONFIG_LIBCELT_DECODER 0
++#define CONFIG_LIBCODEC2_DECODER 0
++#define CONFIG_LIBDAV1D_DECODER 0
++#define CONFIG_LIBDAVS2_DECODER 0
++#define CONFIG_LIBFDK_AAC_DECODER 0
++#define CONFIG_LIBGSM_DECODER 0
++#define CONFIG_LIBGSM_MS_DECODER 0
++#define CONFIG_LIBILBC_DECODER 0
++#define CONFIG_LIBOPENCORE_AMRNB_DECODER 0
++#define CONFIG_LIBOPENCORE_AMRWB_DECODER 0
++#define CONFIG_LIBOPENJPEG_DECODER 0
++#define CONFIG_LIBOPUS_DECODER 1
++#define CONFIG_LIBRSVG_DECODER 0
++#define CONFIG_LIBSPEEX_DECODER 0
++#define CONFIG_LIBUAVS3D_DECODER 0
++#define CONFIG_LIBVORBIS_DECODER 0
++#define CONFIG_LIBVPX_VP8_DECODER 0
++#define CONFIG_LIBVPX_VP9_DECODER 0
++#define CONFIG_LIBZVBI_TELETEXT_DECODER 0
++#define CONFIG_BINTEXT_DECODER 0
++#define CONFIG_XBIN_DECODER 0
++#define CONFIG_IDF_DECODER 0
++#define CONFIG_LIBAOM_AV1_DECODER 0
++#define CONFIG_AV1_DECODER 0
++#define CONFIG_AV1_CUVID_DECODER 0
++#define CONFIG_AV1_QSV_DECODER 0
++#define CONFIG_LIBOPENH264_DECODER 0
++#define CONFIG_H264_CUVID_DECODER 0
++#define CONFIG_HEVC_CUVID_DECODER 0
++#define CONFIG_HEVC_MEDIACODEC_DECODER 0
++#define CONFIG_MJPEG_CUVID_DECODER 0
++#define CONFIG_MJPEG_QSV_DECODER 0
++#define CONFIG_MPEG1_CUVID_DECODER 0
++#define CONFIG_MPEG2_CUVID_DECODER 0
++#define CONFIG_MPEG4_CUVID_DECODER 0
++#define CONFIG_MPEG4_MEDIACODEC_DECODER 0
++#define CONFIG_VC1_CUVID_DECODER 0
++#define CONFIG_VP8_CUVID_DECODER 0
++#define CONFIG_VP8_MEDIACODEC_DECODER 0
++#define CONFIG_VP8_QSV_DECODER 0
++#define CONFIG_VP9_CUVID_DECODER 0
++#define CONFIG_VP9_MEDIACODEC_DECODER 0
++#define CONFIG_VP9_QSV_DECODER 0
++#define CONFIG_A64MULTI_ENCODER 0
++#define CONFIG_A64MULTI5_ENCODER 0
++#define CONFIG_ALIAS_PIX_ENCODER 0
++#define CONFIG_AMV_ENCODER 0
++#define CONFIG_APNG_ENCODER 0
++#define CONFIG_ASV1_ENCODER 0
++#define CONFIG_ASV2_ENCODER 0
++#define CONFIG_AVRP_ENCODER 0
++#define CONFIG_AVUI_ENCODER 0
++#define CONFIG_AYUV_ENCODER 0
++#define CONFIG_BMP_ENCODER 0
++#define CONFIG_CFHD_ENCODER 0
++#define CONFIG_CINEPAK_ENCODER 0
++#define CONFIG_CLJR_ENCODER 0
++#define CONFIG_COMFORTNOISE_ENCODER 0
++#define CONFIG_DNXHD_ENCODER 0
++#define CONFIG_DPX_ENCODER 0
++#define CONFIG_DVVIDEO_ENCODER 0
++#define CONFIG_EXR_ENCODER 0
++#define CONFIG_FFV1_ENCODER 0
++#define CONFIG_FFVHUFF_ENCODER 0
++#define CONFIG_FITS_ENCODER 0
++#define CONFIG_FLASHSV_ENCODER 0
++#define CONFIG_FLASHSV2_ENCODER 0
++#define CONFIG_FLV_ENCODER 0
++#define CONFIG_GIF_ENCODER 0
++#define CONFIG_H261_ENCODER 0
++#define CONFIG_H263_ENCODER 0
++#define CONFIG_H263P_ENCODER 0
++#define CONFIG_HAP_ENCODER 0
++#define CONFIG_HUFFYUV_ENCODER 0
++#define CONFIG_JPEG2000_ENCODER 0
++#define CONFIG_JPEGLS_ENCODER 0
++#define CONFIG_LJPEG_ENCODER 0
++#define CONFIG_MAGICYUV_ENCODER 0
++#define CONFIG_MJPEG_ENCODER 0
++#define CONFIG_MPEG1VIDEO_ENCODER 0
++#define CONFIG_MPEG2VIDEO_ENCODER 0
++#define CONFIG_MPEG4_ENCODER 0
++#define CONFIG_MSMPEG4V2_ENCODER 0
++#define CONFIG_MSMPEG4V3_ENCODER 0
++#define CONFIG_MSVIDEO1_ENCODER 0
++#define CONFIG_PAM_ENCODER 0
++#define CONFIG_PBM_ENCODER 0
++#define CONFIG_PCX_ENCODER 0
++#define CONFIG_PFM_ENCODER 0
++#define CONFIG_PGM_ENCODER 0
++#define CONFIG_PGMYUV_ENCODER 0
++#define CONFIG_PNG_ENCODER 0
++#define CONFIG_PPM_ENCODER 0
++#define CONFIG_PRORES_ENCODER 0
++#define CONFIG_PRORES_AW_ENCODER 0
++#define CONFIG_PRORES_KS_ENCODER 0
++#define CONFIG_QTRLE_ENCODER 0
++#define CONFIG_R10K_ENCODER 0
++#define CONFIG_R210_ENCODER 0
++#define CONFIG_RAWVIDEO_ENCODER 0
++#define CONFIG_ROQ_ENCODER 0
++#define CONFIG_RPZA_ENCODER 0
++#define CONFIG_RV10_ENCODER 0
++#define CONFIG_RV20_ENCODER 0
++#define CONFIG_S302M_ENCODER 0
++#define CONFIG_SGI_ENCODER 0
++#define CONFIG_SNOW_ENCODER 0
++#define CONFIG_SPEEDHQ_ENCODER 0
++#define CONFIG_SUNRAST_ENCODER 0
++#define CONFIG_SVQ1_ENCODER 0
++#define CONFIG_TARGA_ENCODER 0
++#define CONFIG_TIFF_ENCODER 0
++#define CONFIG_UTVIDEO_ENCODER 0
++#define CONFIG_V210_ENCODER 0
++#define CONFIG_V308_ENCODER 0
++#define CONFIG_V408_ENCODER 0
++#define CONFIG_V410_ENCODER 0
++#define CONFIG_VC2_ENCODER 0
++#define CONFIG_WRAPPED_AVFRAME_ENCODER 0
++#define CONFIG_WMV1_ENCODER 0
++#define CONFIG_WMV2_ENCODER 0
++#define CONFIG_XBM_ENCODER 0
++#define CONFIG_XFACE_ENCODER 0
++#define CONFIG_XWD_ENCODER 0
++#define CONFIG_Y41P_ENCODER 0
++#define CONFIG_YUV4_ENCODER 0
++#define CONFIG_ZLIB_ENCODER 0
++#define CONFIG_ZMBV_ENCODER 0
++#define CONFIG_AAC_ENCODER 0
++#define CONFIG_AC3_ENCODER 0
++#define CONFIG_AC3_FIXED_ENCODER 0
++#define CONFIG_ALAC_ENCODER 0
++#define CONFIG_APTX_ENCODER 0
++#define CONFIG_APTX_HD_ENCODER 0
++#define CONFIG_DCA_ENCODER 0
++#define CONFIG_EAC3_ENCODER 0
++#define CONFIG_FLAC_ENCODER 0
++#define CONFIG_G723_1_ENCODER 0
++#define CONFIG_MLP_ENCODER 0
++#define CONFIG_MP2_ENCODER 0
++#define CONFIG_MP2FIXED_ENCODER 0
++#define CONFIG_NELLYMOSER_ENCODER 0
++#define CONFIG_OPUS_ENCODER 0
++#define CONFIG_RA_144_ENCODER 0
++#define CONFIG_SBC_ENCODER 0
++#define CONFIG_SONIC_ENCODER 0
++#define CONFIG_SONIC_LS_ENCODER 0
++#define CONFIG_TRUEHD_ENCODER 0
++#define CONFIG_TTA_ENCODER 0
++#define CONFIG_VORBIS_ENCODER 0
++#define CONFIG_WAVPACK_ENCODER 0
++#define CONFIG_WMAV1_ENCODER 0
++#define CONFIG_WMAV2_ENCODER 0
++#define CONFIG_PCM_ALAW_ENCODER 0
++#define CONFIG_PCM_DVD_ENCODER 0
++#define CONFIG_PCM_F32BE_ENCODER 0
++#define CONFIG_PCM_F32LE_ENCODER 0
++#define CONFIG_PCM_F64BE_ENCODER 0
++#define CONFIG_PCM_F64LE_ENCODER 0
++#define CONFIG_PCM_MULAW_ENCODER 0
++#define CONFIG_PCM_S8_ENCODER 0
++#define CONFIG_PCM_S8_PLANAR_ENCODER 0
++#define CONFIG_PCM_S16BE_ENCODER 0
++#define CONFIG_PCM_S16BE_PLANAR_ENCODER 0
++#define CONFIG_PCM_S16LE_ENCODER 0
++#define CONFIG_PCM_S16LE_PLANAR_ENCODER 0
++#define CONFIG_PCM_S24BE_ENCODER 0
++#define CONFIG_PCM_S24DAUD_ENCODER 0
++#define CONFIG_PCM_S24LE_ENCODER 0
++#define CONFIG_PCM_S24LE_PLANAR_ENCODER 0
++#define CONFIG_PCM_S32BE_ENCODER 0
++#define CONFIG_PCM_S32LE_ENCODER 0
++#define CONFIG_PCM_S32LE_PLANAR_ENCODER 0
++#define CONFIG_PCM_S64BE_ENCODER 0
++#define CONFIG_PCM_S64LE_ENCODER 0
++#define CONFIG_PCM_U8_ENCODER 0
++#define CONFIG_PCM_U16BE_ENCODER 0
++#define CONFIG_PCM_U16LE_ENCODER 0
++#define CONFIG_PCM_U24BE_ENCODER 0
++#define CONFIG_PCM_U24LE_ENCODER 0
++#define CONFIG_PCM_U32BE_ENCODER 0
++#define CONFIG_PCM_U32LE_ENCODER 0
++#define CONFIG_PCM_VIDC_ENCODER 0
++#define CONFIG_ROQ_DPCM_ENCODER 0
++#define CONFIG_ADPCM_ADX_ENCODER 0
++#define CONFIG_ADPCM_ARGO_ENCODER 0
++#define CONFIG_ADPCM_G722_ENCODER 0
++#define CONFIG_ADPCM_G726_ENCODER 0
++#define CONFIG_ADPCM_G726LE_ENCODER 0
++#define CONFIG_ADPCM_IMA_AMV_ENCODER 0
++#define CONFIG_ADPCM_IMA_ALP_ENCODER 0
++#define CONFIG_ADPCM_IMA_APM_ENCODER 0
++#define CONFIG_ADPCM_IMA_QT_ENCODER 0
++#define CONFIG_ADPCM_IMA_SSI_ENCODER 0
++#define CONFIG_ADPCM_IMA_WAV_ENCODER 0
++#define CONFIG_ADPCM_IMA_WS_ENCODER 0
++#define CONFIG_ADPCM_MS_ENCODER 0
++#define CONFIG_ADPCM_SWF_ENCODER 0
++#define CONFIG_ADPCM_YAMAHA_ENCODER 0
++#define CONFIG_SSA_ENCODER 0
++#define CONFIG_ASS_ENCODER 0
++#define CONFIG_DVBSUB_ENCODER 0
++#define CONFIG_DVDSUB_ENCODER 0
++#define CONFIG_MOVTEXT_ENCODER 0
++#define CONFIG_SRT_ENCODER 0
++#define CONFIG_SUBRIP_ENCODER 0
++#define CONFIG_TEXT_ENCODER 0
++#define CONFIG_TTML_ENCODER 0
++#define CONFIG_WEBVTT_ENCODER 0
++#define CONFIG_XSUB_ENCODER 0
++#define CONFIG_AAC_AT_ENCODER 0
++#define CONFIG_ALAC_AT_ENCODER 0
++#define CONFIG_ILBC_AT_ENCODER 0
++#define CONFIG_PCM_ALAW_AT_ENCODER 0
++#define CONFIG_PCM_MULAW_AT_ENCODER 0
++#define CONFIG_LIBAOM_AV1_ENCODER 0
++#define CONFIG_LIBCODEC2_ENCODER 0
++#define CONFIG_LIBFDK_AAC_ENCODER 0
++#define CONFIG_LIBGSM_ENCODER 0
++#define CONFIG_LIBGSM_MS_ENCODER 0
++#define CONFIG_LIBILBC_ENCODER 0
++#define CONFIG_LIBMP3LAME_ENCODER 0
++#define CONFIG_LIBOPENCORE_AMRNB_ENCODER 0
++#define CONFIG_LIBOPENJPEG_ENCODER 0
++#define CONFIG_LIBOPUS_ENCODER 0
++#define CONFIG_LIBRAV1E_ENCODER 0
++#define CONFIG_LIBSHINE_ENCODER 0
++#define CONFIG_LIBSPEEX_ENCODER 0
++#define CONFIG_LIBSVTAV1_ENCODER 0
++#define CONFIG_LIBTHEORA_ENCODER 0
++#define CONFIG_LIBTWOLAME_ENCODER 0
++#define CONFIG_LIBVO_AMRWBENC_ENCODER 0
++#define CONFIG_LIBVORBIS_ENCODER 0
++#define CONFIG_LIBVPX_VP8_ENCODER 0
++#define CONFIG_LIBVPX_VP9_ENCODER 0
++#define CONFIG_LIBWEBP_ANIM_ENCODER 0
++#define CONFIG_LIBWEBP_ENCODER 0
++#define CONFIG_LIBX262_ENCODER 0
++#define CONFIG_LIBX264_ENCODER 0
++#define CONFIG_LIBX264_ENCODER 0
++#define CONFIG_LIBX264RGB_ENCODER 0
++#define CONFIG_LIBX265_ENCODER 0
++#define CONFIG_LIBXAVS_ENCODER 0
++#define CONFIG_LIBXAVS2_ENCODER 0
++#define CONFIG_LIBXVID_ENCODER 0
++#define CONFIG_AAC_MF_ENCODER 0
++#define CONFIG_AC3_MF_ENCODER 0
++#define CONFIG_H263_V4L2M2M_ENCODER 0
++#define CONFIG_LIBOPENH264_ENCODER 0
++#define CONFIG_H264_AMF_ENCODER 0
++#define CONFIG_H264_MF_ENCODER 0
++#define CONFIG_H264_NVENC_ENCODER 0
++#define CONFIG_H264_OMX_ENCODER 0
++#define CONFIG_H264_QSV_ENCODER 0
++#define CONFIG_H264_V4L2M2M_ENCODER 0
++#define CONFIG_H264_VAAPI_ENCODER 0
++#define CONFIG_H264_VIDEOTOOLBOX_ENCODER 0
++#define CONFIG_HEVC_AMF_ENCODER 0
++#define CONFIG_HEVC_MF_ENCODER 0
++#define CONFIG_HEVC_NVENC_ENCODER 0
++#define CONFIG_HEVC_QSV_ENCODER 0
++#define CONFIG_HEVC_V4L2M2M_ENCODER 0
++#define CONFIG_HEVC_VAAPI_ENCODER 0
++#define CONFIG_HEVC_VIDEOTOOLBOX_ENCODER 0
++#define CONFIG_LIBKVAZAAR_ENCODER 0
++#define CONFIG_MJPEG_QSV_ENCODER 0
++#define CONFIG_MJPEG_VAAPI_ENCODER 0
++#define CONFIG_MP3_MF_ENCODER 0
++#define CONFIG_MPEG2_QSV_ENCODER 0
++#define CONFIG_MPEG2_VAAPI_ENCODER 0
++#define CONFIG_MPEG4_OMX_ENCODER 0
++#define CONFIG_MPEG4_V4L2M2M_ENCODER 0
++#define CONFIG_VP8_V4L2M2M_ENCODER 0
++#define CONFIG_VP8_VAAPI_ENCODER 0
++#define CONFIG_VP9_VAAPI_ENCODER 0
++#define CONFIG_VP9_QSV_ENCODER 0
++#define CONFIG_AV1_D3D11VA_HWACCEL 0
++#define CONFIG_AV1_D3D11VA2_HWACCEL 0
++#define CONFIG_AV1_DXVA2_HWACCEL 0
++#define CONFIG_AV1_NVDEC_HWACCEL 0
++#define CONFIG_AV1_VAAPI_HWACCEL 0
++#define CONFIG_H263_VAAPI_HWACCEL 0
++#define CONFIG_H263_VIDEOTOOLBOX_HWACCEL 0
++#define CONFIG_H264_D3D11VA_HWACCEL 0
++#define CONFIG_H264_D3D11VA2_HWACCEL 0
++#define CONFIG_H264_DXVA2_HWACCEL 0
++#define CONFIG_H264_NVDEC_HWACCEL 0
++#define CONFIG_H264_VAAPI_HWACCEL 0
++#define CONFIG_H264_VDPAU_HWACCEL 0
++#define CONFIG_H264_VIDEOTOOLBOX_HWACCEL 0
++#define CONFIG_HEVC_D3D11VA_HWACCEL 0
++#define CONFIG_HEVC_D3D11VA2_HWACCEL 0
++#define CONFIG_HEVC_DXVA2_HWACCEL 0
++#define CONFIG_HEVC_NVDEC_HWACCEL 0
++#define CONFIG_HEVC_VAAPI_HWACCEL 0
++#define CONFIG_HEVC_VDPAU_HWACCEL 0
++#define CONFIG_HEVC_VIDEOTOOLBOX_HWACCEL 0
++#define CONFIG_MJPEG_NVDEC_HWACCEL 0
++#define CONFIG_MJPEG_VAAPI_HWACCEL 0
++#define CONFIG_MPEG1_NVDEC_HWACCEL 0
++#define CONFIG_MPEG1_VDPAU_HWACCEL 0
++#define CONFIG_MPEG1_VIDEOTOOLBOX_HWACCEL 0
++#define CONFIG_MPEG1_XVMC_HWACCEL 0
++#define CONFIG_MPEG2_D3D11VA_HWACCEL 0
++#define CONFIG_MPEG2_D3D11VA2_HWACCEL 0
++#define CONFIG_MPEG2_NVDEC_HWACCEL 0
++#define CONFIG_MPEG2_DXVA2_HWACCEL 0
++#define CONFIG_MPEG2_VAAPI_HWACCEL 0
++#define CONFIG_MPEG2_VDPAU_HWACCEL 0
++#define CONFIG_MPEG2_VIDEOTOOLBOX_HWACCEL 0
++#define CONFIG_MPEG2_XVMC_HWACCEL 0
++#define CONFIG_MPEG4_NVDEC_HWACCEL 0
++#define CONFIG_MPEG4_VAAPI_HWACCEL 0
++#define CONFIG_MPEG4_VDPAU_HWACCEL 0
++#define CONFIG_MPEG4_VIDEOTOOLBOX_HWACCEL 0
++#define CONFIG_VC1_D3D11VA_HWACCEL 0
++#define CONFIG_VC1_D3D11VA2_HWACCEL 0
++#define CONFIG_VC1_DXVA2_HWACCEL 0
++#define CONFIG_VC1_NVDEC_HWACCEL 0
++#define CONFIG_VC1_VAAPI_HWACCEL 0
++#define CONFIG_VC1_VDPAU_HWACCEL 0
++#define CONFIG_VP8_NVDEC_HWACCEL 0
++#define CONFIG_VP8_VAAPI_HWACCEL 0
++#define CONFIG_VP9_D3D11VA_HWACCEL 0
++#define CONFIG_VP9_D3D11VA2_HWACCEL 0
++#define CONFIG_VP9_DXVA2_HWACCEL 0
++#define CONFIG_VP9_NVDEC_HWACCEL 0
++#define CONFIG_VP9_VAAPI_HWACCEL 0
++#define CONFIG_VP9_VDPAU_HWACCEL 0
++#define CONFIG_WMV3_D3D11VA_HWACCEL 0
++#define CONFIG_WMV3_D3D11VA2_HWACCEL 0
++#define CONFIG_WMV3_DXVA2_HWACCEL 0
++#define CONFIG_WMV3_NVDEC_HWACCEL 0
++#define CONFIG_WMV3_VAAPI_HWACCEL 0
++#define CONFIG_WMV3_VDPAU_HWACCEL 0
++#define CONFIG_AAC_PARSER 1
++#define CONFIG_AAC_LATM_PARSER 0
++#define CONFIG_AC3_PARSER 0
++#define CONFIG_ADX_PARSER 0
++#define CONFIG_AV1_PARSER 0
++#define CONFIG_AVS2_PARSER 0
++#define CONFIG_AVS3_PARSER 0
++#define CONFIG_BMP_PARSER 0
++#define CONFIG_CAVSVIDEO_PARSER 0
++#define CONFIG_COOK_PARSER 0
++#define CONFIG_CRI_PARSER 0
++#define CONFIG_DCA_PARSER 0
++#define CONFIG_DIRAC_PARSER 0
++#define CONFIG_DNXHD_PARSER 0
++#define CONFIG_DOLBY_E_PARSER 0
++#define CONFIG_DPX_PARSER 0
++#define CONFIG_DVAUDIO_PARSER 0
++#define CONFIG_DVBSUB_PARSER 0
++#define CONFIG_DVDSUB_PARSER 0
++#define CONFIG_DVD_NAV_PARSER 0
++#define CONFIG_FLAC_PARSER 1
++#define CONFIG_G723_1_PARSER 0
++#define CONFIG_G729_PARSER 0
++#define CONFIG_GIF_PARSER 0
++#define CONFIG_GSM_PARSER 0
++#define CONFIG_H261_PARSER 0
++#define CONFIG_H263_PARSER 0
++#define CONFIG_H264_PARSER 1
++#define CONFIG_HEVC_PARSER 0
++#define CONFIG_IPU_PARSER 0
++#define CONFIG_JPEG2000_PARSER 0
++#define CONFIG_MJPEG_PARSER 0
++#define CONFIG_MLP_PARSER 0
++#define CONFIG_MPEG4VIDEO_PARSER 0
++#define CONFIG_MPEGAUDIO_PARSER 1
++#define CONFIG_MPEGVIDEO_PARSER 0
++#define CONFIG_OPUS_PARSER 1
++#define CONFIG_PNG_PARSER 0
++#define CONFIG_PNM_PARSER 0
++#define CONFIG_RV30_PARSER 0
++#define CONFIG_RV40_PARSER 0
++#define CONFIG_SBC_PARSER 0
++#define CONFIG_SIPR_PARSER 0
++#define CONFIG_TAK_PARSER 0
++#define CONFIG_VC1_PARSER 0
++#define CONFIG_VORBIS_PARSER 1
++#define CONFIG_VP3_PARSER 1
++#define CONFIG_VP8_PARSER 1
++#define CONFIG_VP9_PARSER 1
++#define CONFIG_WEBP_PARSER 0
++#define CONFIG_XBM_PARSER 0
++#define CONFIG_XMA_PARSER 0
++#define CONFIG_ALSA_INDEV 0
++#define CONFIG_ANDROID_CAMERA_INDEV 0
++#define CONFIG_AVFOUNDATION_INDEV 0
++#define CONFIG_BKTR_INDEV 0
++#define CONFIG_DECKLINK_INDEV 0
++#define CONFIG_DSHOW_INDEV 0
++#define CONFIG_FBDEV_INDEV 0
++#define CONFIG_GDIGRAB_INDEV 0
++#define CONFIG_IEC61883_INDEV 0
++#define CONFIG_JACK_INDEV 0
++#define CONFIG_KMSGRAB_INDEV 0
++#define CONFIG_LAVFI_INDEV 0
++#define CONFIG_OPENAL_INDEV 0
++#define CONFIG_OSS_INDEV 0
++#define CONFIG_PULSE_INDEV 0
++#define CONFIG_SNDIO_INDEV 0
++#define CONFIG_V4L2_INDEV 0
++#define CONFIG_VFWCAP_INDEV 0
++#define CONFIG_XCBGRAB_INDEV 0
++#define CONFIG_LIBCDIO_INDEV 0
++#define CONFIG_LIBDC1394_INDEV 0
++#define CONFIG_ALSA_OUTDEV 0
++#define CONFIG_AUDIOTOOLBOX_OUTDEV 0
++#define CONFIG_CACA_OUTDEV 0
++#define CONFIG_DECKLINK_OUTDEV 0
++#define CONFIG_FBDEV_OUTDEV 0
++#define CONFIG_OPENGL_OUTDEV 0
++#define CONFIG_OSS_OUTDEV 0
++#define CONFIG_PULSE_OUTDEV 0
++#define CONFIG_SDL2_OUTDEV 0
++#define CONFIG_SNDIO_OUTDEV 0
++#define CONFIG_V4L2_OUTDEV 0
++#define CONFIG_XV_OUTDEV 0
++#define CONFIG_ABENCH_FILTER 0
++#define CONFIG_ACOMPRESSOR_FILTER 0
++#define CONFIG_ACONTRAST_FILTER 0
++#define CONFIG_ACOPY_FILTER 0
++#define CONFIG_ACUE_FILTER 0
++#define CONFIG_ACROSSFADE_FILTER 0
++#define CONFIG_ACROSSOVER_FILTER 0
++#define CONFIG_ACRUSHER_FILTER 0
++#define CONFIG_ADECLICK_FILTER 0
++#define CONFIG_ADECLIP_FILTER 0
++#define CONFIG_ADELAY_FILTER 0
++#define CONFIG_ADENORM_FILTER 0
++#define CONFIG_ADERIVATIVE_FILTER 0
++#define CONFIG_AECHO_FILTER 0
++#define CONFIG_AEMPHASIS_FILTER 0
++#define CONFIG_AEVAL_FILTER 0
++#define CONFIG_AEXCITER_FILTER 0
++#define CONFIG_AFADE_FILTER 0
++#define CONFIG_AFFTDN_FILTER 0
++#define CONFIG_AFFTFILT_FILTER 0
++#define CONFIG_AFIR_FILTER 0
++#define CONFIG_AFORMAT_FILTER 0
++#define CONFIG_AFREQSHIFT_FILTER 0
++#define CONFIG_AGATE_FILTER 0
++#define CONFIG_AIIR_FILTER 0
++#define CONFIG_AINTEGRAL_FILTER 0
++#define CONFIG_AINTERLEAVE_FILTER 0
++#define CONFIG_ALIMITER_FILTER 0
++#define CONFIG_ALLPASS_FILTER 0
++#define CONFIG_ALOOP_FILTER 0
++#define CONFIG_AMERGE_FILTER 0
++#define CONFIG_AMETADATA_FILTER 0
++#define CONFIG_AMIX_FILTER 0
++#define CONFIG_AMULTIPLY_FILTER 0
++#define CONFIG_ANEQUALIZER_FILTER 0
++#define CONFIG_ANLMDN_FILTER 0
++#define CONFIG_ANLMS_FILTER 0
++#define CONFIG_ANULL_FILTER 0
++#define CONFIG_APAD_FILTER 0
++#define CONFIG_APERMS_FILTER 0
++#define CONFIG_APHASER_FILTER 0
++#define CONFIG_APHASESHIFT_FILTER 0
++#define CONFIG_APULSATOR_FILTER 0
++#define CONFIG_AREALTIME_FILTER 0
++#define CONFIG_ARESAMPLE_FILTER 0
++#define CONFIG_AREVERSE_FILTER 0
++#define CONFIG_ARNNDN_FILTER 0
++#define CONFIG_ASELECT_FILTER 0
++#define CONFIG_ASENDCMD_FILTER 0
++#define CONFIG_ASETNSAMPLES_FILTER 0
++#define CONFIG_ASETPTS_FILTER 0
++#define CONFIG_ASETRATE_FILTER 0
++#define CONFIG_ASETTB_FILTER 0
++#define CONFIG_ASHOWINFO_FILTER 0
++#define CONFIG_ASIDEDATA_FILTER 0
++#define CONFIG_ASOFTCLIP_FILTER 0
++#define CONFIG_ASPLIT_FILTER 0
++#define CONFIG_ASR_FILTER 0
++#define CONFIG_ASTATS_FILTER 0
++#define CONFIG_ASTREAMSELECT_FILTER 0
++#define CONFIG_ASUBBOOST_FILTER 0
++#define CONFIG_ASUBCUT_FILTER 0
++#define CONFIG_ASUPERCUT_FILTER 0
++#define CONFIG_ASUPERPASS_FILTER 0
++#define CONFIG_ASUPERSTOP_FILTER 0
++#define CONFIG_ATEMPO_FILTER 0
++#define CONFIG_ATRIM_FILTER 0
++#define CONFIG_AXCORRELATE_FILTER 0
++#define CONFIG_AZMQ_FILTER 0
++#define CONFIG_BANDPASS_FILTER 0
++#define CONFIG_BANDREJECT_FILTER 0
++#define CONFIG_BASS_FILTER 0
++#define CONFIG_BIQUAD_FILTER 0
++#define CONFIG_BS2B_FILTER 0
++#define CONFIG_CHROMABER_VULKAN_FILTER 0
++#define CONFIG_CHANNELMAP_FILTER 0
++#define CONFIG_CHANNELSPLIT_FILTER 0
++#define CONFIG_CHORUS_FILTER 0
++#define CONFIG_COMPAND_FILTER 0
++#define CONFIG_COMPENSATIONDELAY_FILTER 0
++#define CONFIG_CROSSFEED_FILTER 0
++#define CONFIG_CRYSTALIZER_FILTER 0
++#define CONFIG_DCSHIFT_FILTER 0
++#define CONFIG_DEESSER_FILTER 0
++#define CONFIG_DRMETER_FILTER 0
++#define CONFIG_DYNAUDNORM_FILTER 0
++#define CONFIG_EARWAX_FILTER 0
++#define CONFIG_EBUR128_FILTER 0
++#define CONFIG_EQUALIZER_FILTER 0
++#define CONFIG_EXTRASTEREO_FILTER 0
++#define CONFIG_FIREQUALIZER_FILTER 0
++#define CONFIG_FLANGER_FILTER 0
++#define CONFIG_HAAS_FILTER 0
++#define CONFIG_HDCD_FILTER 0
++#define CONFIG_HEADPHONE_FILTER 0
++#define CONFIG_HIGHPASS_FILTER 0
++#define CONFIG_HIGHSHELF_FILTER 0
++#define CONFIG_JOIN_FILTER 0
++#define CONFIG_LADSPA_FILTER 0
++#define CONFIG_LOUDNORM_FILTER 0
++#define CONFIG_LOWPASS_FILTER 0
++#define CONFIG_LOWSHELF_FILTER 0
++#define CONFIG_LV2_FILTER 0
++#define CONFIG_MCOMPAND_FILTER 0
++#define CONFIG_PAN_FILTER 0
++#define CONFIG_REPLAYGAIN_FILTER 0
++#define CONFIG_RUBBERBAND_FILTER 0
++#define CONFIG_SIDECHAINCOMPRESS_FILTER 0
++#define CONFIG_SIDECHAINGATE_FILTER 0
++#define CONFIG_SILENCEDETECT_FILTER 0
++#define CONFIG_SILENCEREMOVE_FILTER 0
++#define CONFIG_SOFALIZER_FILTER 0
++#define CONFIG_SPEECHNORM_FILTER 0
++#define CONFIG_STEREOTOOLS_FILTER 0
++#define CONFIG_STEREOWIDEN_FILTER 0
++#define CONFIG_SUPEREQUALIZER_FILTER 0
++#define CONFIG_SURROUND_FILTER 0
++#define CONFIG_TREBLE_FILTER 0
++#define CONFIG_TREMOLO_FILTER 0
++#define CONFIG_VIBRATO_FILTER 0
++#define CONFIG_VOLUME_FILTER 0
++#define CONFIG_VOLUMEDETECT_FILTER 0
++#define CONFIG_AEVALSRC_FILTER 0
++#define CONFIG_AFIRSRC_FILTER 0
++#define CONFIG_ANOISESRC_FILTER 0
++#define CONFIG_ANULLSRC_FILTER 0
++#define CONFIG_FLITE_FILTER 0
++#define CONFIG_HILBERT_FILTER 0
++#define CONFIG_SINC_FILTER 0
++#define CONFIG_SINE_FILTER 0
++#define CONFIG_ANULLSINK_FILTER 0
++#define CONFIG_ADDROI_FILTER 0
++#define CONFIG_ALPHAEXTRACT_FILTER 0
++#define CONFIG_ALPHAMERGE_FILTER 0
++#define CONFIG_AMPLIFY_FILTER 0
++#define CONFIG_ASS_FILTER 0
++#define CONFIG_ATADENOISE_FILTER 0
++#define CONFIG_AVGBLUR_FILTER 0
++#define CONFIG_AVGBLUR_OPENCL_FILTER 0
++#define CONFIG_AVGBLUR_VULKAN_FILTER 0
++#define CONFIG_BBOX_FILTER 0
++#define CONFIG_BENCH_FILTER 0
++#define CONFIG_BILATERAL_FILTER 0
++#define CONFIG_BITPLANENOISE_FILTER 0
++#define CONFIG_BLACKDETECT_FILTER 0
++#define CONFIG_BLACKFRAME_FILTER 0
++#define CONFIG_BLEND_FILTER 0
++#define CONFIG_BM3D_FILTER 0
++#define CONFIG_BOXBLUR_FILTER 0
++#define CONFIG_BOXBLUR_OPENCL_FILTER 0
++#define CONFIG_BWDIF_FILTER 0
++#define CONFIG_CAS_FILTER 0
++#define CONFIG_CHROMAHOLD_FILTER 0
++#define CONFIG_CHROMAKEY_FILTER 0
++#define CONFIG_CHROMANR_FILTER 0
++#define CONFIG_CHROMASHIFT_FILTER 0
++#define CONFIG_CIESCOPE_FILTER 0
++#define CONFIG_CODECVIEW_FILTER 0
++#define CONFIG_COLORBALANCE_FILTER 0
++#define CONFIG_COLORCHANNELMIXER_FILTER 0
++#define CONFIG_COLORCONTRAST_FILTER 0
++#define CONFIG_COLORCORRECT_FILTER 0
++#define CONFIG_COLORIZE_FILTER 0
++#define CONFIG_COLORKEY_FILTER 0
++#define CONFIG_COLORKEY_OPENCL_FILTER 0
++#define CONFIG_COLORHOLD_FILTER 0
++#define CONFIG_COLORLEVELS_FILTER 0
++#define CONFIG_COLORMATRIX_FILTER 0
++#define CONFIG_COLORSPACE_FILTER 0
++#define CONFIG_COLORTEMPERATURE_FILTER 0
++#define CONFIG_CONVOLUTION_FILTER 0
++#define CONFIG_CONVOLUTION_OPENCL_FILTER 0
++#define CONFIG_CONVOLVE_FILTER 0
++#define CONFIG_COPY_FILTER 0
++#define CONFIG_COREIMAGE_FILTER 0
++#define CONFIG_COVER_RECT_FILTER 0
++#define CONFIG_CROP_FILTER 0
++#define CONFIG_CROPDETECT_FILTER 0
++#define CONFIG_CUE_FILTER 0
++#define CONFIG_CURVES_FILTER 0
++#define CONFIG_DATASCOPE_FILTER 0
++#define CONFIG_DBLUR_FILTER 0
++#define CONFIG_DCTDNOIZ_FILTER 0
++#define CONFIG_DEBAND_FILTER 0
++#define CONFIG_DEBLOCK_FILTER 0
++#define CONFIG_DECIMATE_FILTER 0
++#define CONFIG_DECONVOLVE_FILTER 0
++#define CONFIG_DEDOT_FILTER 0
++#define CONFIG_DEFLATE_FILTER 0
++#define CONFIG_DEFLICKER_FILTER 0
++#define CONFIG_DEINTERLACE_QSV_FILTER 0
++#define CONFIG_DEINTERLACE_VAAPI_FILTER 0
++#define CONFIG_DEJUDDER_FILTER 0
++#define CONFIG_DELOGO_FILTER 0
++#define CONFIG_DENOISE_VAAPI_FILTER 0
++#define CONFIG_DERAIN_FILTER 0
++#define CONFIG_DESHAKE_FILTER 0
++#define CONFIG_DESHAKE_OPENCL_FILTER 0
++#define CONFIG_DESPILL_FILTER 0
++#define CONFIG_DETELECINE_FILTER 0
++#define CONFIG_DILATION_FILTER 0
++#define CONFIG_DILATION_OPENCL_FILTER 0
++#define CONFIG_DISPLACE_FILTER 0
++#define CONFIG_DNN_CLASSIFY_FILTER 0
++#define CONFIG_DNN_DETECT_FILTER 0
++#define CONFIG_DNN_PROCESSING_FILTER 0
++#define CONFIG_DOUBLEWEAVE_FILTER 0
++#define CONFIG_DRAWBOX_FILTER 0
++#define CONFIG_DRAWGRAPH_FILTER 0
++#define CONFIG_DRAWGRID_FILTER 0
++#define CONFIG_DRAWTEXT_FILTER 0
++#define CONFIG_EDGEDETECT_FILTER 0
++#define CONFIG_ELBG_FILTER 0
++#define CONFIG_ENTROPY_FILTER 0
++#define CONFIG_EPX_FILTER 0
++#define CONFIG_EQ_FILTER 0
++#define CONFIG_EROSION_FILTER 0
++#define CONFIG_EROSION_OPENCL_FILTER 0
++#define CONFIG_ESTDIF_FILTER 0
++#define CONFIG_EXPOSURE_FILTER 0
++#define CONFIG_EXTRACTPLANES_FILTER 0
++#define CONFIG_FADE_FILTER 0
++#define CONFIG_FFTDNOIZ_FILTER 0
++#define CONFIG_FFTFILT_FILTER 0
++#define CONFIG_FIELD_FILTER 0
++#define CONFIG_FIELDHINT_FILTER 0
++#define CONFIG_FIELDMATCH_FILTER 0
++#define CONFIG_FIELDORDER_FILTER 0
++#define CONFIG_FILLBORDERS_FILTER 0
++#define CONFIG_FIND_RECT_FILTER 0
++#define CONFIG_FLOODFILL_FILTER 0
++#define CONFIG_FORMAT_FILTER 0
++#define CONFIG_FPS_FILTER 0
++#define CONFIG_FRAMEPACK_FILTER 0
++#define CONFIG_FRAMERATE_FILTER 0
++#define CONFIG_FRAMESTEP_FILTER 0
++#define CONFIG_FREEZEDETECT_FILTER 0
++#define CONFIG_FREEZEFRAMES_FILTER 0
++#define CONFIG_FREI0R_FILTER 0
++#define CONFIG_FSPP_FILTER 0
++#define CONFIG_GBLUR_FILTER 0
++#define CONFIG_GEQ_FILTER 0
++#define CONFIG_GRADFUN_FILTER 0
++#define CONFIG_GRAPHMONITOR_FILTER 0
++#define CONFIG_GREYEDGE_FILTER 0
++#define CONFIG_HALDCLUT_FILTER 0
++#define CONFIG_HFLIP_FILTER 0
++#define CONFIG_HISTEQ_FILTER 0
++#define CONFIG_HISTOGRAM_FILTER 0
++#define CONFIG_HQDN3D_FILTER 0
++#define CONFIG_HQX_FILTER 0
++#define CONFIG_HSTACK_FILTER 0
++#define CONFIG_HUE_FILTER 0
++#define CONFIG_HWDOWNLOAD_FILTER 0
++#define CONFIG_HWMAP_FILTER 0
++#define CONFIG_HWUPLOAD_FILTER 0
++#define CONFIG_HWUPLOAD_CUDA_FILTER 0
++#define CONFIG_HYSTERESIS_FILTER 0
++#define CONFIG_IDENTITY_FILTER 0
++#define CONFIG_IDET_FILTER 0
++#define CONFIG_IL_FILTER 0
++#define CONFIG_INFLATE_FILTER 0
++#define CONFIG_INTERLACE_FILTER 0
++#define CONFIG_INTERLEAVE_FILTER 0
++#define CONFIG_KERNDEINT_FILTER 0
++#define CONFIG_KIRSCH_FILTER 0
++#define CONFIG_LAGFUN_FILTER 0
++#define CONFIG_LENSCORRECTION_FILTER 0
++#define CONFIG_LENSFUN_FILTER 0
++#define CONFIG_LIBVMAF_FILTER 0
++#define CONFIG_LIMITER_FILTER 0
++#define CONFIG_LOOP_FILTER 0
++#define CONFIG_LUMAKEY_FILTER 0
++#define CONFIG_LUT_FILTER 0
++#define CONFIG_LUT1D_FILTER 0
++#define CONFIG_LUT2_FILTER 0
++#define CONFIG_LUT3D_FILTER 0
++#define CONFIG_LUTRGB_FILTER 0
++#define CONFIG_LUTYUV_FILTER 0
++#define CONFIG_MASKEDCLAMP_FILTER 0
++#define CONFIG_MASKEDMAX_FILTER 0
++#define CONFIG_MASKEDMERGE_FILTER 0
++#define CONFIG_MASKEDMIN_FILTER 0
++#define CONFIG_MASKEDTHRESHOLD_FILTER 0
++#define CONFIG_MASKFUN_FILTER 0
++#define CONFIG_MCDEINT_FILTER 0
++#define CONFIG_MEDIAN_FILTER 0
++#define CONFIG_MERGEPLANES_FILTER 0
++#define CONFIG_MESTIMATE_FILTER 0
++#define CONFIG_METADATA_FILTER 0
++#define CONFIG_MIDEQUALIZER_FILTER 0
++#define CONFIG_MINTERPOLATE_FILTER 0
++#define CONFIG_MIX_FILTER 0
++#define CONFIG_MONOCHROME_FILTER 0
++#define CONFIG_MPDECIMATE_FILTER 0
++#define CONFIG_MSAD_FILTER 0
++#define CONFIG_NEGATE_FILTER 0
++#define CONFIG_NLMEANS_FILTER 0
++#define CONFIG_NLMEANS_OPENCL_FILTER 0
++#define CONFIG_NNEDI_FILTER 0
++#define CONFIG_NOFORMAT_FILTER 0
++#define CONFIG_NOISE_FILTER 0
++#define CONFIG_NORMALIZE_FILTER 0
++#define CONFIG_NULL_FILTER 0
++#define CONFIG_OCR_FILTER 0
++#define CONFIG_OCV_FILTER 0
++#define CONFIG_OSCILLOSCOPE_FILTER 0
++#define CONFIG_OVERLAY_FILTER 0
++#define CONFIG_OVERLAY_OPENCL_FILTER 0
++#define CONFIG_OVERLAY_QSV_FILTER 0
++#define CONFIG_OVERLAY_VULKAN_FILTER 0
++#define CONFIG_OVERLAY_CUDA_FILTER 0
++#define CONFIG_OWDENOISE_FILTER 0
++#define CONFIG_PAD_FILTER 0
++#define CONFIG_PAD_OPENCL_FILTER 0
++#define CONFIG_PALETTEGEN_FILTER 0
++#define CONFIG_PALETTEUSE_FILTER 0
++#define CONFIG_PERMS_FILTER 0
++#define CONFIG_PERSPECTIVE_FILTER 0
++#define CONFIG_PHASE_FILTER 0
++#define CONFIG_PHOTOSENSITIVITY_FILTER 0
++#define CONFIG_PIXDESCTEST_FILTER 0
++#define CONFIG_PIXSCOPE_FILTER 0
++#define CONFIG_PP_FILTER 0
++#define CONFIG_PP7_FILTER 0
++#define CONFIG_PREMULTIPLY_FILTER 0
++#define CONFIG_PREWITT_FILTER 0
++#define CONFIG_PREWITT_OPENCL_FILTER 0
++#define CONFIG_PROCAMP_VAAPI_FILTER 0
++#define CONFIG_PROGRAM_OPENCL_FILTER 0
++#define CONFIG_PSEUDOCOLOR_FILTER 0
++#define CONFIG_PSNR_FILTER 0
++#define CONFIG_PULLUP_FILTER 0
++#define CONFIG_QP_FILTER 0
++#define CONFIG_RANDOM_FILTER 0
++#define CONFIG_READEIA608_FILTER 0
++#define CONFIG_READVITC_FILTER 0
++#define CONFIG_REALTIME_FILTER 0
++#define CONFIG_REMAP_FILTER 0
++#define CONFIG_REMOVEGRAIN_FILTER 0
++#define CONFIG_REMOVELOGO_FILTER 0
++#define CONFIG_REPEATFIELDS_FILTER 0
++#define CONFIG_REVERSE_FILTER 0
++#define CONFIG_RGBASHIFT_FILTER 0
++#define CONFIG_ROBERTS_FILTER 0
++#define CONFIG_ROBERTS_OPENCL_FILTER 0
++#define CONFIG_ROTATE_FILTER 0
++#define CONFIG_SAB_FILTER 0
++#define CONFIG_SCALE_FILTER 0
++#define CONFIG_SCALE_CUDA_FILTER 0
++#define CONFIG_SCALE_NPP_FILTER 0
++#define CONFIG_SCALE_QSV_FILTER 0
++#define CONFIG_SCALE_VAAPI_FILTER 0
++#define CONFIG_SCALE_VULKAN_FILTER 0
++#define CONFIG_SCALE2REF_FILTER 0
++#define CONFIG_SCDET_FILTER 0
++#define CONFIG_SCROLL_FILTER 0
++#define CONFIG_SELECT_FILTER 0
++#define CONFIG_SELECTIVECOLOR_FILTER 0
++#define CONFIG_SENDCMD_FILTER 0
++#define CONFIG_SEPARATEFIELDS_FILTER 0
++#define CONFIG_SETDAR_FILTER 0
++#define CONFIG_SETFIELD_FILTER 0
++#define CONFIG_SETPARAMS_FILTER 0
++#define CONFIG_SETPTS_FILTER 0
++#define CONFIG_SETRANGE_FILTER 0
++#define CONFIG_SETSAR_FILTER 0
++#define CONFIG_SETTB_FILTER 0
++#define CONFIG_SHARPNESS_VAAPI_FILTER 0
++#define CONFIG_SHEAR_FILTER 0
++#define CONFIG_SHOWINFO_FILTER 0
++#define CONFIG_SHOWPALETTE_FILTER 0
++#define CONFIG_SHUFFLEFRAMES_FILTER 0
++#define CONFIG_SHUFFLEPIXELS_FILTER 0
++#define CONFIG_SHUFFLEPLANES_FILTER 0
++#define CONFIG_SIDEDATA_FILTER 0
++#define CONFIG_SIGNALSTATS_FILTER 0
++#define CONFIG_SIGNATURE_FILTER 0
++#define CONFIG_SMARTBLUR_FILTER 0
++#define CONFIG_SOBEL_FILTER 0
++#define CONFIG_SOBEL_OPENCL_FILTER 0
++#define CONFIG_SPLIT_FILTER 0
++#define CONFIG_SPP_FILTER 0
++#define CONFIG_SR_FILTER 0
++#define CONFIG_SSIM_FILTER 0
++#define CONFIG_STEREO3D_FILTER 0
++#define CONFIG_STREAMSELECT_FILTER 0
++#define CONFIG_SUBTITLES_FILTER 0
++#define CONFIG_SUPER2XSAI_FILTER 0
++#define CONFIG_SWAPRECT_FILTER 0
++#define CONFIG_SWAPUV_FILTER 0
++#define CONFIG_TBLEND_FILTER 0
++#define CONFIG_TELECINE_FILTER 0
++#define CONFIG_THISTOGRAM_FILTER 0
++#define CONFIG_THRESHOLD_FILTER 0
++#define CONFIG_THUMBNAIL_FILTER 0
++#define CONFIG_THUMBNAIL_CUDA_FILTER 0
++#define CONFIG_TILE_FILTER 0
++#define CONFIG_TINTERLACE_FILTER 0
++#define CONFIG_TLUT2_FILTER 0
++#define CONFIG_TMEDIAN_FILTER 0
++#define CONFIG_TMIDEQUALIZER_FILTER 0
++#define CONFIG_TMIX_FILTER 0
++#define CONFIG_TONEMAP_FILTER 0
++#define CONFIG_TONEMAP_OPENCL_FILTER 0
++#define CONFIG_TONEMAP_VAAPI_FILTER 0
++#define CONFIG_TPAD_FILTER 0
++#define CONFIG_TRANSPOSE_FILTER 0
++#define CONFIG_TRANSPOSE_NPP_FILTER 0
++#define CONFIG_TRANSPOSE_OPENCL_FILTER 0
++#define CONFIG_TRANSPOSE_VAAPI_FILTER 0
++#define CONFIG_TRIM_FILTER 0
++#define CONFIG_UNPREMULTIPLY_FILTER 0
++#define CONFIG_UNSHARP_FILTER 0
++#define CONFIG_UNSHARP_OPENCL_FILTER 0
++#define CONFIG_UNTILE_FILTER 0
++#define CONFIG_USPP_FILTER 0
++#define CONFIG_V360_FILTER 0
++#define CONFIG_VAGUEDENOISER_FILTER 0
++#define CONFIG_VECTORSCOPE_FILTER 0
++#define CONFIG_VFLIP_FILTER 0
++#define CONFIG_VFRDET_FILTER 0
++#define CONFIG_VIBRANCE_FILTER 0
++#define CONFIG_VIDSTABDETECT_FILTER 0
++#define CONFIG_VIDSTABTRANSFORM_FILTER 0
++#define CONFIG_VIF_FILTER 0
++#define CONFIG_VIGNETTE_FILTER 0
++#define CONFIG_VMAFMOTION_FILTER 0
++#define CONFIG_VPP_QSV_FILTER 0
++#define CONFIG_VSTACK_FILTER 0
++#define CONFIG_W3FDIF_FILTER 0
++#define CONFIG_WAVEFORM_FILTER 0
++#define CONFIG_WEAVE_FILTER 0
++#define CONFIG_XBR_FILTER 0
++#define CONFIG_XFADE_FILTER 0
++#define CONFIG_XFADE_OPENCL_FILTER 0
++#define CONFIG_XMEDIAN_FILTER 0
++#define CONFIG_XSTACK_FILTER 0
++#define CONFIG_YADIF_FILTER 0
++#define CONFIG_YADIF_CUDA_FILTER 0
++#define CONFIG_YAEPBLUR_FILTER 0
++#define CONFIG_ZMQ_FILTER 0
++#define CONFIG_ZOOMPAN_FILTER 0
++#define CONFIG_ZSCALE_FILTER 0
++#define CONFIG_ALLRGB_FILTER 0
++#define CONFIG_ALLYUV_FILTER 0
++#define CONFIG_CELLAUTO_FILTER 0
++#define CONFIG_COLOR_FILTER 0
++#define CONFIG_COREIMAGESRC_FILTER 0
++#define CONFIG_FREI0R_SRC_FILTER 0
++#define CONFIG_GRADIENTS_FILTER 0
++#define CONFIG_HALDCLUTSRC_FILTER 0
++#define CONFIG_LIFE_FILTER 0
++#define CONFIG_MANDELBROT_FILTER 0
++#define CONFIG_MPTESTSRC_FILTER 0
++#define CONFIG_NULLSRC_FILTER 0
++#define CONFIG_OPENCLSRC_FILTER 0
++#define CONFIG_PAL75BARS_FILTER 0
++#define CONFIG_PAL100BARS_FILTER 0
++#define CONFIG_RGBTESTSRC_FILTER 0
++#define CONFIG_SIERPINSKI_FILTER 0
++#define CONFIG_SMPTEBARS_FILTER 0
++#define CONFIG_SMPTEHDBARS_FILTER 0
++#define CONFIG_TESTSRC_FILTER 0
++#define CONFIG_TESTSRC2_FILTER 0
++#define CONFIG_YUVTESTSRC_FILTER 0
++#define CONFIG_NULLSINK_FILTER 0
++#define CONFIG_ABITSCOPE_FILTER 0
++#define CONFIG_ADRAWGRAPH_FILTER 0
++#define CONFIG_AGRAPHMONITOR_FILTER 0
++#define CONFIG_AHISTOGRAM_FILTER 0
++#define CONFIG_APHASEMETER_FILTER 0
++#define CONFIG_AVECTORSCOPE_FILTER 0
++#define CONFIG_CONCAT_FILTER 0
++#define CONFIG_SHOWCQT_FILTER 0
++#define CONFIG_SHOWFREQS_FILTER 0
++#define CONFIG_SHOWSPATIAL_FILTER 0
++#define CONFIG_SHOWSPECTRUM_FILTER 0
++#define CONFIG_SHOWSPECTRUMPIC_FILTER 0
++#define CONFIG_SHOWVOLUME_FILTER 0
++#define CONFIG_SHOWWAVES_FILTER 0
++#define CONFIG_SHOWWAVESPIC_FILTER 0
++#define CONFIG_SPECTRUMSYNTH_FILTER 0
++#define CONFIG_AMOVIE_FILTER 0
++#define CONFIG_MOVIE_FILTER 0
++#define CONFIG_AFIFO_FILTER 0
++#define CONFIG_FIFO_FILTER 0
++#define CONFIG_AA_DEMUXER 0
++#define CONFIG_AAC_DEMUXER 1
++#define CONFIG_AAX_DEMUXER 0
++#define CONFIG_AC3_DEMUXER 0
++#define CONFIG_ACE_DEMUXER 0
++#define CONFIG_ACM_DEMUXER 0
++#define CONFIG_ACT_DEMUXER 0
++#define CONFIG_ADF_DEMUXER 0
++#define CONFIG_ADP_DEMUXER 0
++#define CONFIG_ADS_DEMUXER 0
++#define CONFIG_ADX_DEMUXER 0
++#define CONFIG_AEA_DEMUXER 0
++#define CONFIG_AFC_DEMUXER 0
++#define CONFIG_AIFF_DEMUXER 0
++#define CONFIG_AIX_DEMUXER 0
++#define CONFIG_ALP_DEMUXER 0
++#define CONFIG_AMR_DEMUXER 0
++#define CONFIG_AMRNB_DEMUXER 0
++#define CONFIG_AMRWB_DEMUXER 0
++#define CONFIG_ANM_DEMUXER 0
++#define CONFIG_APC_DEMUXER 0
++#define CONFIG_APE_DEMUXER 0
++#define CONFIG_APM_DEMUXER 0
++#define CONFIG_APNG_DEMUXER 0
++#define CONFIG_APTX_DEMUXER 0
++#define CONFIG_APTX_HD_DEMUXER 0
++#define CONFIG_AQTITLE_DEMUXER 0
++#define CONFIG_ARGO_ASF_DEMUXER 0
++#define CONFIG_ARGO_BRP_DEMUXER 0
++#define CONFIG_ASF_DEMUXER 0
++#define CONFIG_ASF_O_DEMUXER 0
++#define CONFIG_ASS_DEMUXER 0
++#define CONFIG_AST_DEMUXER 0
++#define CONFIG_AU_DEMUXER 0
++#define CONFIG_AV1_DEMUXER 0
++#define CONFIG_AVI_DEMUXER 0
++#define CONFIG_AVISYNTH_DEMUXER 0
++#define CONFIG_AVR_DEMUXER 0
++#define CONFIG_AVS_DEMUXER 0
++#define CONFIG_AVS2_DEMUXER 0
++#define CONFIG_AVS3_DEMUXER 0
++#define CONFIG_BETHSOFTVID_DEMUXER 0
++#define CONFIG_BFI_DEMUXER 0
++#define CONFIG_BINTEXT_DEMUXER 0
++#define CONFIG_BINK_DEMUXER 0
++#define CONFIG_BINKA_DEMUXER 0
++#define CONFIG_BIT_DEMUXER 0
++#define CONFIG_BMV_DEMUXER 0
++#define CONFIG_BFSTM_DEMUXER 0
++#define CONFIG_BRSTM_DEMUXER 0
++#define CONFIG_BOA_DEMUXER 0
++#define CONFIG_C93_DEMUXER 0
++#define CONFIG_CAF_DEMUXER 0
++#define CONFIG_CAVSVIDEO_DEMUXER 0
++#define CONFIG_CDG_DEMUXER 0
++#define CONFIG_CDXL_DEMUXER 0
++#define CONFIG_CINE_DEMUXER 0
++#define CONFIG_CODEC2_DEMUXER 0
++#define CONFIG_CODEC2RAW_DEMUXER 0
++#define CONFIG_CONCAT_DEMUXER 0
++#define CONFIG_DASH_DEMUXER 0
++#define CONFIG_DATA_DEMUXER 0
++#define CONFIG_DAUD_DEMUXER 0
++#define CONFIG_DCSTR_DEMUXER 0
++#define CONFIG_DERF_DEMUXER 0
++#define CONFIG_DFA_DEMUXER 0
++#define CONFIG_DHAV_DEMUXER 0
++#define CONFIG_DIRAC_DEMUXER 0
++#define CONFIG_DNXHD_DEMUXER 0
++#define CONFIG_DSF_DEMUXER 0
++#define CONFIG_DSICIN_DEMUXER 0
++#define CONFIG_DSS_DEMUXER 0
++#define CONFIG_DTS_DEMUXER 0
++#define CONFIG_DTSHD_DEMUXER 0
++#define CONFIG_DV_DEMUXER 0
++#define CONFIG_DVBSUB_DEMUXER 0
++#define CONFIG_DVBTXT_DEMUXER 0
++#define CONFIG_DXA_DEMUXER 0
++#define CONFIG_EA_DEMUXER 0
++#define CONFIG_EA_CDATA_DEMUXER 0
++#define CONFIG_EAC3_DEMUXER 0
++#define CONFIG_EPAF_DEMUXER 0
++#define CONFIG_FFMETADATA_DEMUXER 0
++#define CONFIG_FILMSTRIP_DEMUXER 0
++#define CONFIG_FITS_DEMUXER 0
++#define CONFIG_FLAC_DEMUXER 1
++#define CONFIG_FLIC_DEMUXER 0
++#define CONFIG_FLV_DEMUXER 0
++#define CONFIG_LIVE_FLV_DEMUXER 0
++#define CONFIG_FOURXM_DEMUXER 0
++#define CONFIG_FRM_DEMUXER 0
++#define CONFIG_FSB_DEMUXER 0
++#define CONFIG_FWSE_DEMUXER 0
++#define CONFIG_G722_DEMUXER 0
++#define CONFIG_G723_1_DEMUXER 0
++#define CONFIG_G726_DEMUXER 0
++#define CONFIG_G726LE_DEMUXER 0
++#define CONFIG_G729_DEMUXER 0
++#define CONFIG_GDV_DEMUXER 0
++#define CONFIG_GENH_DEMUXER 0
++#define CONFIG_GIF_DEMUXER 0
++#define CONFIG_GSM_DEMUXER 0
++#define CONFIG_GXF_DEMUXER 0
++#define CONFIG_H261_DEMUXER 0
++#define CONFIG_H263_DEMUXER 0
++#define CONFIG_H264_DEMUXER 0
++#define CONFIG_HCA_DEMUXER 0
++#define CONFIG_HCOM_DEMUXER 0
++#define CONFIG_HEVC_DEMUXER 0
++#define CONFIG_HLS_DEMUXER 0
++#define CONFIG_HNM_DEMUXER 0
++#define CONFIG_ICO_DEMUXER 0
++#define CONFIG_IDCIN_DEMUXER 0
++#define CONFIG_IDF_DEMUXER 0
++#define CONFIG_IFF_DEMUXER 0
++#define CONFIG_IFV_DEMUXER 0
++#define CONFIG_ILBC_DEMUXER 0
++#define CONFIG_IMAGE2_DEMUXER 0
++#define CONFIG_IMAGE2PIPE_DEMUXER 0
++#define CONFIG_IMAGE2_ALIAS_PIX_DEMUXER 0
++#define CONFIG_IMAGE2_BRENDER_PIX_DEMUXER 0
++#define CONFIG_INGENIENT_DEMUXER 0
++#define CONFIG_IPMOVIE_DEMUXER 0
++#define CONFIG_IPU_DEMUXER 0
++#define CONFIG_IRCAM_DEMUXER 0
++#define CONFIG_ISS_DEMUXER 0
++#define CONFIG_IV8_DEMUXER 0
++#define CONFIG_IVF_DEMUXER 0
++#define CONFIG_IVR_DEMUXER 0
++#define CONFIG_JACOSUB_DEMUXER 0
++#define CONFIG_JV_DEMUXER 0
++#define CONFIG_KUX_DEMUXER 0
++#define CONFIG_KVAG_DEMUXER 0
++#define CONFIG_LMLM4_DEMUXER 0
++#define CONFIG_LOAS_DEMUXER 0
++#define CONFIG_LUODAT_DEMUXER 0
++#define CONFIG_LRC_DEMUXER 0
++#define CONFIG_LVF_DEMUXER 0
++#define CONFIG_LXF_DEMUXER 0
++#define CONFIG_M4V_DEMUXER 0
++#define CONFIG_MCA_DEMUXER 0
++#define CONFIG_MCC_DEMUXER 0
++#define CONFIG_MATROSKA_DEMUXER 1
++#define CONFIG_MGSTS_DEMUXER 0
++#define CONFIG_MICRODVD_DEMUXER 0
++#define CONFIG_MJPEG_DEMUXER 0
++#define CONFIG_MJPEG_2000_DEMUXER 0
++#define CONFIG_MLP_DEMUXER 0
++#define CONFIG_MLV_DEMUXER 0
++#define CONFIG_MM_DEMUXER 0
++#define CONFIG_MMF_DEMUXER 0
++#define CONFIG_MODS_DEMUXER 0
++#define CONFIG_MOFLEX_DEMUXER 0
++#define CONFIG_MOV_DEMUXER 1
++#define CONFIG_MP3_DEMUXER 1
++#define CONFIG_MPC_DEMUXER 0
++#define CONFIG_MPC8_DEMUXER 0
++#define CONFIG_MPEGPS_DEMUXER 0
++#define CONFIG_MPEGTS_DEMUXER 0
++#define CONFIG_MPEGTSRAW_DEMUXER 0
++#define CONFIG_MPEGVIDEO_DEMUXER 0
++#define CONFIG_MPJPEG_DEMUXER 0
++#define CONFIG_MPL2_DEMUXER 0
++#define CONFIG_MPSUB_DEMUXER 0
++#define CONFIG_MSF_DEMUXER 0
++#define CONFIG_MSNWC_TCP_DEMUXER 0
++#define CONFIG_MSP_DEMUXER 0
++#define CONFIG_MTAF_DEMUXER 0
++#define CONFIG_MTV_DEMUXER 0
++#define CONFIG_MUSX_DEMUXER 0
++#define CONFIG_MV_DEMUXER 0
++#define CONFIG_MVI_DEMUXER 0
++#define CONFIG_MXF_DEMUXER 0
++#define CONFIG_MXG_DEMUXER 0
++#define CONFIG_NC_DEMUXER 0
++#define CONFIG_NISTSPHERE_DEMUXER 0
++#define CONFIG_NSP_DEMUXER 0
++#define CONFIG_NSV_DEMUXER 0
++#define CONFIG_NUT_DEMUXER 0
++#define CONFIG_NUV_DEMUXER 0
++#define CONFIG_OBU_DEMUXER 0
++#define CONFIG_OGG_DEMUXER 1
++#define CONFIG_OMA_DEMUXER 0
++#define CONFIG_PAF_DEMUXER 0
++#define CONFIG_PCM_ALAW_DEMUXER 0
++#define CONFIG_PCM_MULAW_DEMUXER 0
++#define CONFIG_PCM_VIDC_DEMUXER 0
++#define CONFIG_PCM_F64BE_DEMUXER 0
++#define CONFIG_PCM_F64LE_DEMUXER 0
++#define CONFIG_PCM_F32BE_DEMUXER 0
++#define CONFIG_PCM_F32LE_DEMUXER 0
++#define CONFIG_PCM_S32BE_DEMUXER 0
++#define CONFIG_PCM_S32LE_DEMUXER 0
++#define CONFIG_PCM_S24BE_DEMUXER 0
++#define CONFIG_PCM_S24LE_DEMUXER 0
++#define CONFIG_PCM_S16BE_DEMUXER 0
++#define CONFIG_PCM_S16LE_DEMUXER 0
++#define CONFIG_PCM_S8_DEMUXER 0
++#define CONFIG_PCM_U32BE_DEMUXER 0
++#define CONFIG_PCM_U32LE_DEMUXER 0
++#define CONFIG_PCM_U24BE_DEMUXER 0
++#define CONFIG_PCM_U24LE_DEMUXER 0
++#define CONFIG_PCM_U16BE_DEMUXER 0
++#define CONFIG_PCM_U16LE_DEMUXER 0
++#define CONFIG_PCM_U8_DEMUXER 0
++#define CONFIG_PJS_DEMUXER 0
++#define CONFIG_PMP_DEMUXER 0
++#define CONFIG_PP_BNK_DEMUXER 0
++#define CONFIG_PVA_DEMUXER 0
++#define CONFIG_PVF_DEMUXER 0
++#define CONFIG_QCP_DEMUXER 0
++#define CONFIG_R3D_DEMUXER 0
++#define CONFIG_RAWVIDEO_DEMUXER 0
++#define CONFIG_REALTEXT_DEMUXER 0
++#define CONFIG_REDSPARK_DEMUXER 0
++#define CONFIG_RL2_DEMUXER 0
++#define CONFIG_RM_DEMUXER 0
++#define CONFIG_ROQ_DEMUXER 0
++#define CONFIG_RPL_DEMUXER 0
++#define CONFIG_RSD_DEMUXER 0
++#define CONFIG_RSO_DEMUXER 0
++#define CONFIG_RTP_DEMUXER 0
++#define CONFIG_RTSP_DEMUXER 0
++#define CONFIG_S337M_DEMUXER 0
++#define CONFIG_SAMI_DEMUXER 0
++#define CONFIG_SAP_DEMUXER 0
++#define CONFIG_SBC_DEMUXER 0
++#define CONFIG_SBG_DEMUXER 0
++#define CONFIG_SCC_DEMUXER 0
++#define CONFIG_SDP_DEMUXER 0
++#define CONFIG_SDR2_DEMUXER 0
++#define CONFIG_SDS_DEMUXER 0
++#define CONFIG_SDX_DEMUXER 0
++#define CONFIG_SEGAFILM_DEMUXER 0
++#define CONFIG_SER_DEMUXER 0
++#define CONFIG_SGA_DEMUXER 0
++#define CONFIG_SHORTEN_DEMUXER 0
++#define CONFIG_SIFF_DEMUXER 0
++#define CONFIG_SIMBIOSIS_IMX_DEMUXER 0
++#define CONFIG_SLN_DEMUXER 0
++#define CONFIG_SMACKER_DEMUXER 0
++#define CONFIG_SMJPEG_DEMUXER 0
++#define CONFIG_SMUSH_DEMUXER 0
++#define CONFIG_SOL_DEMUXER 0
++#define CONFIG_SOX_DEMUXER 0
++#define CONFIG_SPDIF_DEMUXER 0
++#define CONFIG_SRT_DEMUXER 0
++#define CONFIG_STR_DEMUXER 0
++#define CONFIG_STL_DEMUXER 0
++#define CONFIG_SUBVIEWER1_DEMUXER 0
++#define CONFIG_SUBVIEWER_DEMUXER 0
++#define CONFIG_SUP_DEMUXER 0
++#define CONFIG_SVAG_DEMUXER 0
++#define CONFIG_SVS_DEMUXER 0
++#define CONFIG_SWF_DEMUXER 0
++#define CONFIG_TAK_DEMUXER 0
++#define CONFIG_TEDCAPTIONS_DEMUXER 0
++#define CONFIG_THP_DEMUXER 0
++#define CONFIG_THREEDOSTR_DEMUXER 0
++#define CONFIG_TIERTEXSEQ_DEMUXER 0
++#define CONFIG_TMV_DEMUXER 0
++#define CONFIG_TRUEHD_DEMUXER 0
++#define CONFIG_TTA_DEMUXER 0
++#define CONFIG_TXD_DEMUXER 0
++#define CONFIG_TTY_DEMUXER 0
++#define CONFIG_TY_DEMUXER 0
++#define CONFIG_V210_DEMUXER 0
++#define CONFIG_V210X_DEMUXER 0
++#define CONFIG_VAG_DEMUXER 0
++#define CONFIG_VC1_DEMUXER 0
++#define CONFIG_VC1T_DEMUXER 0
++#define CONFIG_VIVIDAS_DEMUXER 0
++#define CONFIG_VIVO_DEMUXER 0
++#define CONFIG_VMD_DEMUXER 0
++#define CONFIG_VOBSUB_DEMUXER 0
++#define CONFIG_VOC_DEMUXER 0
++#define CONFIG_VPK_DEMUXER 0
++#define CONFIG_VPLAYER_DEMUXER 0
++#define CONFIG_VQF_DEMUXER 0
++#define CONFIG_W64_DEMUXER 0
++#define CONFIG_WAV_DEMUXER 1
++#define CONFIG_WC3_DEMUXER 0
++#define CONFIG_WEBM_DASH_MANIFEST_DEMUXER 0
++#define CONFIG_WEBVTT_DEMUXER 0
++#define CONFIG_WSAUD_DEMUXER 0
++#define CONFIG_WSD_DEMUXER 0
++#define CONFIG_WSVQA_DEMUXER 0
++#define CONFIG_WTV_DEMUXER 0
++#define CONFIG_WVE_DEMUXER 0
++#define CONFIG_WV_DEMUXER 0
++#define CONFIG_XA_DEMUXER 0
++#define CONFIG_XBIN_DEMUXER 0
++#define CONFIG_XMV_DEMUXER 0
++#define CONFIG_XVAG_DEMUXER 0
++#define CONFIG_XWMA_DEMUXER 0
++#define CONFIG_YOP_DEMUXER 0
++#define CONFIG_YUV4MPEGPIPE_DEMUXER 0
++#define CONFIG_IMAGE_BMP_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_CRI_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_DDS_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_DPX_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_EXR_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_GIF_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_J2K_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_JPEG_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_JPEGLS_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_PAM_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_PBM_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_PCX_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_PGMYUV_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_PGM_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_PGX_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_PHOTOCD_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_PICTOR_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_PNG_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_PPM_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_PSD_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_QDRAW_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_SGI_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_SVG_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_SUNRAST_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_TIFF_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_WEBP_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_XBM_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_XPM_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_XWD_PIPE_DEMUXER 0
++#define CONFIG_LIBGME_DEMUXER 0
++#define CONFIG_LIBMODPLUG_DEMUXER 0
++#define CONFIG_LIBOPENMPT_DEMUXER 0
++#define CONFIG_VAPOURSYNTH_DEMUXER 0
++#define CONFIG_A64_MUXER 0
++#define CONFIG_AC3_MUXER 0
++#define CONFIG_ADTS_MUXER 0
++#define CONFIG_ADX_MUXER 0
++#define CONFIG_AIFF_MUXER 0
++#define CONFIG_ALP_MUXER 0
++#define CONFIG_AMR_MUXER 0
++#define CONFIG_AMV_MUXER 0
++#define CONFIG_APM_MUXER 0
++#define CONFIG_APNG_MUXER 0
++#define CONFIG_APTX_MUXER 0
++#define CONFIG_APTX_HD_MUXER 0
++#define CONFIG_ARGO_ASF_MUXER 0
++#define CONFIG_ASF_MUXER 0
++#define CONFIG_ASS_MUXER 0
++#define CONFIG_AST_MUXER 0
++#define CONFIG_ASF_STREAM_MUXER 0
++#define CONFIG_AU_MUXER 0
++#define CONFIG_AVI_MUXER 0
++#define CONFIG_AVM2_MUXER 0
++#define CONFIG_AVS2_MUXER 0
++#define CONFIG_BIT_MUXER 0
++#define CONFIG_CAF_MUXER 0
++#define CONFIG_CAVSVIDEO_MUXER 0
++#define CONFIG_CODEC2_MUXER 0
++#define CONFIG_CODEC2RAW_MUXER 0
++#define CONFIG_CRC_MUXER 0
++#define CONFIG_DASH_MUXER 0
++#define CONFIG_DATA_MUXER 0
++#define CONFIG_DAUD_MUXER 0
++#define CONFIG_DIRAC_MUXER 0
++#define CONFIG_DNXHD_MUXER 0
++#define CONFIG_DTS_MUXER 0
++#define CONFIG_DV_MUXER 0
++#define CONFIG_EAC3_MUXER 0
++#define CONFIG_F4V_MUXER 0
++#define CONFIG_FFMETADATA_MUXER 0
++#define CONFIG_FIFO_MUXER 0
++#define CONFIG_FIFO_TEST_MUXER 0
++#define CONFIG_FILMSTRIP_MUXER 0
++#define CONFIG_FITS_MUXER 0
++#define CONFIG_FLAC_MUXER 0
++#define CONFIG_FLV_MUXER 0
++#define CONFIG_FRAMECRC_MUXER 0
++#define CONFIG_FRAMEHASH_MUXER 0
++#define CONFIG_FRAMEMD5_MUXER 0
++#define CONFIG_G722_MUXER 0
++#define CONFIG_G723_1_MUXER 0
++#define CONFIG_G726_MUXER 0
++#define CONFIG_G726LE_MUXER 0
++#define CONFIG_GIF_MUXER 0
++#define CONFIG_GSM_MUXER 0
++#define CONFIG_GXF_MUXER 0
++#define CONFIG_H261_MUXER 0
++#define CONFIG_H263_MUXER 0
++#define CONFIG_H264_MUXER 0
++#define CONFIG_HASH_MUXER 0
++#define CONFIG_HDS_MUXER 0
++#define CONFIG_HEVC_MUXER 0
++#define CONFIG_HLS_MUXER 0
++#define CONFIG_ICO_MUXER 0
++#define CONFIG_ILBC_MUXER 0
++#define CONFIG_IMAGE2_MUXER 0
++#define CONFIG_IMAGE2PIPE_MUXER 0
++#define CONFIG_IPOD_MUXER 0
++#define CONFIG_IRCAM_MUXER 0
++#define CONFIG_ISMV_MUXER 0
++#define CONFIG_IVF_MUXER 0
++#define CONFIG_JACOSUB_MUXER 0
++#define CONFIG_KVAG_MUXER 0
++#define CONFIG_LATM_MUXER 0
++#define CONFIG_LRC_MUXER 0
++#define CONFIG_M4V_MUXER 0
++#define CONFIG_MD5_MUXER 0
++#define CONFIG_MATROSKA_MUXER 0
++#define CONFIG_MATROSKA_AUDIO_MUXER 0
++#define CONFIG_MICRODVD_MUXER 0
++#define CONFIG_MJPEG_MUXER 0
++#define CONFIG_MLP_MUXER 0
++#define CONFIG_MMF_MUXER 0
++#define CONFIG_MOV_MUXER 0
++#define CONFIG_MP2_MUXER 0
++#define CONFIG_MP3_MUXER 0
++#define CONFIG_MP4_MUXER 0
++#define CONFIG_MPEG1SYSTEM_MUXER 0
++#define CONFIG_MPEG1VCD_MUXER 0
++#define CONFIG_MPEG1VIDEO_MUXER 0
++#define CONFIG_MPEG2DVD_MUXER 0
++#define CONFIG_MPEG2SVCD_MUXER 0
++#define CONFIG_MPEG2VIDEO_MUXER 0
++#define CONFIG_MPEG2VOB_MUXER 0
++#define CONFIG_MPEGTS_MUXER 0
++#define CONFIG_MPJPEG_MUXER 0
++#define CONFIG_MXF_MUXER 0
++#define CONFIG_MXF_D10_MUXER 0
++#define CONFIG_MXF_OPATOM_MUXER 0
++#define CONFIG_NULL_MUXER 0
++#define CONFIG_NUT_MUXER 0
++#define CONFIG_OGA_MUXER 0
++#define CONFIG_OGG_MUXER 0
++#define CONFIG_OGV_MUXER 0
++#define CONFIG_OMA_MUXER 0
++#define CONFIG_OPUS_MUXER 0
++#define CONFIG_PCM_ALAW_MUXER 0
++#define CONFIG_PCM_MULAW_MUXER 0
++#define CONFIG_PCM_VIDC_MUXER 0
++#define CONFIG_PCM_F64BE_MUXER 0
++#define CONFIG_PCM_F64LE_MUXER 0
++#define CONFIG_PCM_F32BE_MUXER 0
++#define CONFIG_PCM_F32LE_MUXER 0
++#define CONFIG_PCM_S32BE_MUXER 0
++#define CONFIG_PCM_S32LE_MUXER 0
++#define CONFIG_PCM_S24BE_MUXER 0
++#define CONFIG_PCM_S24LE_MUXER 0
++#define CONFIG_PCM_S16BE_MUXER 0
++#define CONFIG_PCM_S16LE_MUXER 0
++#define CONFIG_PCM_S8_MUXER 0
++#define CONFIG_PCM_U32BE_MUXER 0
++#define CONFIG_PCM_U32LE_MUXER 0
++#define CONFIG_PCM_U24BE_MUXER 0
++#define CONFIG_PCM_U24LE_MUXER 0
++#define CONFIG_PCM_U16BE_MUXER 0
++#define CONFIG_PCM_U16LE_MUXER 0
++#define CONFIG_PCM_U8_MUXER 0
++#define CONFIG_PSP_MUXER 0
++#define CONFIG_RAWVIDEO_MUXER 0
++#define CONFIG_RM_MUXER 0
++#define CONFIG_ROQ_MUXER 0
++#define CONFIG_RSO_MUXER 0
++#define CONFIG_RTP_MUXER 0
++#define CONFIG_RTP_MPEGTS_MUXER 0
++#define CONFIG_RTSP_MUXER 0
++#define CONFIG_SAP_MUXER 0
++#define CONFIG_SBC_MUXER 0
++#define CONFIG_SCC_MUXER 0
++#define CONFIG_SEGAFILM_MUXER 0
++#define CONFIG_SEGMENT_MUXER 0
++#define CONFIG_STREAM_SEGMENT_MUXER 0
++#define CONFIG_SMJPEG_MUXER 0
++#define CONFIG_SMOOTHSTREAMING_MUXER 0
++#define CONFIG_SOX_MUXER 0
++#define CONFIG_SPX_MUXER 0
++#define CONFIG_SPDIF_MUXER 0
++#define CONFIG_SRT_MUXER 0
++#define CONFIG_STREAMHASH_MUXER 0
++#define CONFIG_SUP_MUXER 0
++#define CONFIG_SWF_MUXER 0
++#define CONFIG_TEE_MUXER 0
++#define CONFIG_TG2_MUXER 0
++#define CONFIG_TGP_MUXER 0
++#define CONFIG_MKVTIMESTAMP_V2_MUXER 0
++#define CONFIG_TRUEHD_MUXER 0
++#define CONFIG_TTA_MUXER 0
++#define CONFIG_TTML_MUXER 0
++#define CONFIG_UNCODEDFRAMECRC_MUXER 0
++#define CONFIG_VC1_MUXER 0
++#define CONFIG_VC1T_MUXER 0
++#define CONFIG_VOC_MUXER 0
++#define CONFIG_W64_MUXER 0
++#define CONFIG_WAV_MUXER 0
++#define CONFIG_WEBM_MUXER 0
++#define CONFIG_WEBM_DASH_MANIFEST_MUXER 0
++#define CONFIG_WEBM_CHUNK_MUXER 0
++#define CONFIG_WEBP_MUXER 0
++#define CONFIG_WEBVTT_MUXER 0
++#define CONFIG_WSAUD_MUXER 0
++#define CONFIG_WTV_MUXER 0
++#define CONFIG_WV_MUXER 0
++#define CONFIG_YUV4MPEGPIPE_MUXER 0
++#define CONFIG_CHROMAPRINT_MUXER 0
++#define CONFIG_ASYNC_PROTOCOL 0
++#define CONFIG_BLURAY_PROTOCOL 0
++#define CONFIG_CACHE_PROTOCOL 0
++#define CONFIG_CONCAT_PROTOCOL 0
++#define CONFIG_CRYPTO_PROTOCOL 0
++#define CONFIG_DATA_PROTOCOL 0
++#define CONFIG_FFRTMPCRYPT_PROTOCOL 0
++#define CONFIG_FFRTMPHTTP_PROTOCOL 0
++#define CONFIG_FILE_PROTOCOL 0
++#define CONFIG_FTP_PROTOCOL 0
++#define CONFIG_GOPHER_PROTOCOL 0
++#define CONFIG_GOPHERS_PROTOCOL 0
++#define CONFIG_HLS_PROTOCOL 0
++#define CONFIG_HTTP_PROTOCOL 0
++#define CONFIG_HTTPPROXY_PROTOCOL 0
++#define CONFIG_HTTPS_PROTOCOL 0
++#define CONFIG_ICECAST_PROTOCOL 0
++#define CONFIG_MMSH_PROTOCOL 0
++#define CONFIG_MMST_PROTOCOL 0
++#define CONFIG_MD5_PROTOCOL 0
++#define CONFIG_PIPE_PROTOCOL 0
++#define CONFIG_PROMPEG_PROTOCOL 0
++#define CONFIG_RTMP_PROTOCOL 0
++#define CONFIG_RTMPE_PROTOCOL 0
++#define CONFIG_RTMPS_PROTOCOL 0
++#define CONFIG_RTMPT_PROTOCOL 0
++#define CONFIG_RTMPTE_PROTOCOL 0
++#define CONFIG_RTMPTS_PROTOCOL 0
++#define CONFIG_RTP_PROTOCOL 0
++#define CONFIG_SCTP_PROTOCOL 0
++#define CONFIG_SRTP_PROTOCOL 0
++#define CONFIG_SUBFILE_PROTOCOL 0
++#define CONFIG_TEE_PROTOCOL 0
++#define CONFIG_TCP_PROTOCOL 0
++#define CONFIG_TLS_PROTOCOL 0
++#define CONFIG_UDP_PROTOCOL 0
++#define CONFIG_UDPLITE_PROTOCOL 0
++#define CONFIG_UNIX_PROTOCOL 0
++#define CONFIG_LIBAMQP_PROTOCOL 0
++#define CONFIG_LIBRIST_PROTOCOL 0
++#define CONFIG_LIBRTMP_PROTOCOL 0
++#define CONFIG_LIBRTMPE_PROTOCOL 0
++#define CONFIG_LIBRTMPS_PROTOCOL 0
++#define CONFIG_LIBRTMPT_PROTOCOL 0
++#define CONFIG_LIBRTMPTE_PROTOCOL 0
++#define CONFIG_LIBSRT_PROTOCOL 0
++#define CONFIG_LIBSSH_PROTOCOL 0
++#define CONFIG_LIBSMBCLIENT_PROTOCOL 0
++#define CONFIG_LIBZMQ_PROTOCOL 0
++#endif /* FFMPEG_CONFIG_H */
diff --git a/devel/electron17/files/patch-third__party_ffmpeg_chromium_config_Chrome_openbsd_ia32_config.asm b/devel/electron17/files/patch-third__party_ffmpeg_chromium_config_Chrome_openbsd_ia32_config.asm
new file mode 100644
index 000000000000..9ce4614ed56e
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_ffmpeg_chromium_config_Chrome_openbsd_ia32_config.asm
@@ -0,0 +1,2689 @@
+--- third_party/ffmpeg/chromium/config/Chrome/openbsd/ia32/config.asm.orig 2022-05-13 07:20:05 UTC
++++ third_party/ffmpeg/chromium/config/Chrome/openbsd/ia32/config.asm
+@@ -0,0 +1,2686 @@
++; Automatically generated by configure - do not modify!
++%define ARCH_AARCH64 0
++%define ARCH_ALPHA 0
++%define ARCH_ARM 0
++%define ARCH_AVR32 0
++%define ARCH_AVR32_AP 0
++%define ARCH_AVR32_UC 0
++%define ARCH_BFIN 0
++%define ARCH_IA64 0
++%define ARCH_M68K 0
++%define ARCH_MIPS 0
++%define ARCH_MIPS64 0
++%define ARCH_PARISC 0
++%define ARCH_PPC 0
++%define ARCH_PPC64 0
++%define ARCH_S390 0
++%define ARCH_SH4 0
++%define ARCH_SPARC 0
++%define ARCH_SPARC64 0
++%define ARCH_TILEGX 0
++%define ARCH_TILEPRO 0
++%define ARCH_TOMI 0
++%define ARCH_X86 1
++%define ARCH_X86_32 1
++%define ARCH_X86_64 0
++%define HAVE_ARMV5TE 0
++%define HAVE_ARMV6 0
++%define HAVE_ARMV6T2 0
++%define HAVE_ARMV8 0
++%define HAVE_NEON 0
++%define HAVE_VFP 0
++%define HAVE_VFPV3 0
++%define HAVE_SETEND 0
++%define HAVE_ALTIVEC 0
++%define HAVE_DCBZL 0
++%define HAVE_LDBRX 0
++%define HAVE_POWER8 0
++%define HAVE_PPC4XX 0
++%define HAVE_VSX 0
++%define HAVE_AESNI 1
++%define HAVE_AMD3DNOW 1
++%define HAVE_AMD3DNOWEXT 1
++%define HAVE_AVX 1
++%define HAVE_AVX2 1
++%define HAVE_AVX512 1
++%define HAVE_FMA3 1
++%define HAVE_FMA4 1
++%define HAVE_MMX 1
++%define HAVE_MMXEXT 1
++%define HAVE_SSE 1
++%define HAVE_SSE2 1
++%define HAVE_SSE3 1
++%define HAVE_SSE4 1
++%define HAVE_SSE42 1
++%define HAVE_SSSE3 1
++%define HAVE_XOP 1
++%define HAVE_CPUNOP 0
++%define HAVE_I686 1
++%define HAVE_MIPSFPU 0
++%define HAVE_MIPS32R2 0
++%define HAVE_MIPS32R5 0
++%define HAVE_MIPS64R2 0
++%define HAVE_MIPS32R6 0
++%define HAVE_MIPS64R6 0
++%define HAVE_MIPSDSP 0
++%define HAVE_MIPSDSPR2 0
++%define HAVE_MSA 0
++%define HAVE_LOONGSON2 0
++%define HAVE_LOONGSON3 0
++%define HAVE_MMI 0
++%define HAVE_ARMV5TE_EXTERNAL 0
++%define HAVE_ARMV6_EXTERNAL 0
++%define HAVE_ARMV6T2_EXTERNAL 0
++%define HAVE_ARMV8_EXTERNAL 0
++%define HAVE_NEON_EXTERNAL 0
++%define HAVE_VFP_EXTERNAL 0
++%define HAVE_VFPV3_EXTERNAL 0
++%define HAVE_SETEND_EXTERNAL 0
++%define HAVE_ALTIVEC_EXTERNAL 0
++%define HAVE_DCBZL_EXTERNAL 0
++%define HAVE_LDBRX_EXTERNAL 0
++%define HAVE_POWER8_EXTERNAL 0
++%define HAVE_PPC4XX_EXTERNAL 0
++%define HAVE_VSX_EXTERNAL 0
++%define HAVE_AESNI_EXTERNAL 1
++%define HAVE_AMD3DNOW_EXTERNAL 1
++%define HAVE_AMD3DNOWEXT_EXTERNAL 1
++%define HAVE_AVX_EXTERNAL 1
++%define HAVE_AVX2_EXTERNAL 1
++%define HAVE_AVX512_EXTERNAL 0
++%define HAVE_FMA3_EXTERNAL 1
++%define HAVE_FMA4_EXTERNAL 1
++%define HAVE_MMX_EXTERNAL 1
++%define HAVE_MMXEXT_EXTERNAL 1
++%define HAVE_SSE_EXTERNAL 1
++%define HAVE_SSE2_EXTERNAL 1
++%define HAVE_SSE3_EXTERNAL 1
++%define HAVE_SSE4_EXTERNAL 1
++%define HAVE_SSE42_EXTERNAL 1
++%define HAVE_SSSE3_EXTERNAL 1
++%define HAVE_XOP_EXTERNAL 1
++%define HAVE_CPUNOP_EXTERNAL 0
++%define HAVE_I686_EXTERNAL 0
++%define HAVE_MIPSFPU_EXTERNAL 0
++%define HAVE_MIPS32R2_EXTERNAL 0
++%define HAVE_MIPS32R5_EXTERNAL 0
++%define HAVE_MIPS64R2_EXTERNAL 0
++%define HAVE_MIPS32R6_EXTERNAL 0
++%define HAVE_MIPS64R6_EXTERNAL 0
++%define HAVE_MIPSDSP_EXTERNAL 0
++%define HAVE_MIPSDSPR2_EXTERNAL 0
++%define HAVE_MSA_EXTERNAL 0
++%define HAVE_LOONGSON2_EXTERNAL 0
++%define HAVE_LOONGSON3_EXTERNAL 0
++%define HAVE_MMI_EXTERNAL 0
++%define HAVE_ARMV5TE_INLINE 0
++%define HAVE_ARMV6_INLINE 0
++%define HAVE_ARMV6T2_INLINE 0
++%define HAVE_ARMV8_INLINE 0
++%define HAVE_NEON_INLINE 0
++%define HAVE_VFP_INLINE 0
++%define HAVE_VFPV3_INLINE 0
++%define HAVE_SETEND_INLINE 0
++%define HAVE_ALTIVEC_INLINE 0
++%define HAVE_DCBZL_INLINE 0
++%define HAVE_LDBRX_INLINE 0
++%define HAVE_POWER8_INLINE 0
++%define HAVE_PPC4XX_INLINE 0
++%define HAVE_VSX_INLINE 0
++%define HAVE_AESNI_INLINE 1
++%define HAVE_AMD3DNOW_INLINE 1
++%define HAVE_AMD3DNOWEXT_INLINE 1
++%define HAVE_AVX_INLINE 1
++%define HAVE_AVX2_INLINE 1
++%define HAVE_AVX512_INLINE 1
++%define HAVE_FMA3_INLINE 1
++%define HAVE_FMA4_INLINE 1
++%define HAVE_MMX_INLINE 1
++%define HAVE_MMXEXT_INLINE 1
++%define HAVE_SSE_INLINE 1
++%define HAVE_SSE2_INLINE 1
++%define HAVE_SSE3_INLINE 1
++%define HAVE_SSE4_INLINE 1
++%define HAVE_SSE42_INLINE 1
++%define HAVE_SSSE3_INLINE 1
++%define HAVE_XOP_INLINE 1
++%define HAVE_CPUNOP_INLINE 0
++%define HAVE_I686_INLINE 0
++%define HAVE_MIPSFPU_INLINE 0
++%define HAVE_MIPS32R2_INLINE 0
++%define HAVE_MIPS32R5_INLINE 0
++%define HAVE_MIPS64R2_INLINE 0
++%define HAVE_MIPS32R6_INLINE 0
++%define HAVE_MIPS64R6_INLINE 0
++%define HAVE_MIPSDSP_INLINE 0
++%define HAVE_MIPSDSPR2_INLINE 0
++%define HAVE_MSA_INLINE 0
++%define HAVE_LOONGSON2_INLINE 0
++%define HAVE_LOONGSON3_INLINE 0
++%define HAVE_MMI_INLINE 0
++%define HAVE_ALIGNED_STACK 0
++%define HAVE_FAST_64BIT 0
++%define HAVE_FAST_CLZ 1
++%define HAVE_FAST_CMOV 0
++%define HAVE_LOCAL_ALIGNED 1
++%define HAVE_SIMD_ALIGN_16 1
++%define HAVE_SIMD_ALIGN_32 1
++%define HAVE_SIMD_ALIGN_64 1
++%define HAVE_ATOMIC_CAS_PTR 0
++%define HAVE_MACHINE_RW_BARRIER 0
++%define HAVE_MEMORYBARRIER 0
++%define HAVE_MM_EMPTY 0
++%define HAVE_RDTSC 0
++%define HAVE_SEM_TIMEDWAIT 1
++%define HAVE_SYNC_VAL_COMPARE_AND_SWAP 1
++%define HAVE_CABS 0
++%define HAVE_CEXP 0
++%define HAVE_INLINE_ASM 1
++%define HAVE_SYMVER 0
++%define HAVE_X86ASM 1
++%define HAVE_BIGENDIAN 0
++%define HAVE_FAST_UNALIGNED 1
++%define HAVE_ARPA_INET_H 0
++%define HAVE_ASM_TYPES_H 0
++%define HAVE_CDIO_PARANOIA_H 0
++%define HAVE_CDIO_PARANOIA_PARANOIA_H 0
++%define HAVE_CUDA_H 0
++%define HAVE_DISPATCH_DISPATCH_H 0
++%define HAVE_DEV_BKTR_IOCTL_BT848_H 0
++%define HAVE_DEV_BKTR_IOCTL_METEOR_H 0
++%define HAVE_DEV_IC_BT8XX_H 1
++%define HAVE_DEV_VIDEO_BKTR_IOCTL_BT848_H 0
++%define HAVE_DEV_VIDEO_METEOR_IOCTL_METEOR_H 0
++%define HAVE_DIRECT_H 0
++%define HAVE_DIRENT_H 1
++%define HAVE_DXGIDEBUG_H 0
++%define HAVE_DXVA_H 0
++%define HAVE_ES2_GL_H 0
++%define HAVE_GSM_H 0
++%define HAVE_IO_H 0
++%define HAVE_LINUX_DMA_BUF_H 0
++%define HAVE_LINUX_PERF_EVENT_H 0
++%define HAVE_MACHINE_IOCTL_BT848_H 0
++%define HAVE_MACHINE_IOCTL_METEOR_H 0
++%define HAVE_MALLOC_H 0
++%define HAVE_OPENCV2_CORE_CORE_C_H 0
++%define HAVE_OPENGL_GL3_H 0
++%define HAVE_POLL_H 1
++%define HAVE_SYS_PARAM_H 1
++%define HAVE_SYS_RESOURCE_H 1
++%define HAVE_SYS_SELECT_H 1
++%define HAVE_SYS_SOUNDCARD_H 0
++%define HAVE_SYS_TIME_H 1
++%define HAVE_SYS_UN_H 1
++%define HAVE_SYS_VIDEOIO_H 1
++%define HAVE_TERMIOS_H 1
++%define HAVE_UDPLITE_H 0
++%define HAVE_UNISTD_H 1
++%define HAVE_VALGRIND_VALGRIND_H 0
++%define HAVE_WINDOWS_H 0
++%define HAVE_WINSOCK2_H 0
++%define HAVE_INTRINSICS_NEON 0
++%define HAVE_ATANF 1
++%define HAVE_ATAN2F 1
++%define HAVE_CBRT 1
++%define HAVE_CBRTF 1
++%define HAVE_COPYSIGN 1
++%define HAVE_COSF 1
++%define HAVE_ERF 1
++%define HAVE_EXP2 1
++%define HAVE_EXP2F 1
++%define HAVE_EXPF 1
++%define HAVE_HYPOT 1
++%define HAVE_ISFINITE 1
++%define HAVE_ISINF 1
++%define HAVE_ISNAN 1
++%define HAVE_LDEXPF 1
++%define HAVE_LLRINT 1
++%define HAVE_LLRINTF 1
++%define HAVE_LOG2 1
++%define HAVE_LOG2F 1
++%define HAVE_LOG10F 1
++%define HAVE_LRINT 1
++%define HAVE_LRINTF 1
++%define HAVE_POWF 1
++%define HAVE_RINT 1
++%define HAVE_ROUND 1
++%define HAVE_ROUNDF 1
++%define HAVE_SINF 1
++%define HAVE_TRUNC 1
++%define HAVE_TRUNCF 1
++%define HAVE_DOS_PATHS 0
++%define HAVE_LIBC_MSVCRT 0
++%define HAVE_MMAL_PARAMETER_VIDEO_MAX_NUM_CALLBACKS 0
++%define HAVE_SECTION_DATA_REL_RO 1
++%define HAVE_THREADS 1
++%define HAVE_UWP 0
++%define HAVE_WINRT 0
++%define HAVE_ACCESS 1
++%define HAVE_ALIGNED_MALLOC 0
++%define HAVE_ARC4RANDOM 1
++%define HAVE_CLOCK_GETTIME 1
++%define HAVE_CLOSESOCKET 0
++%define HAVE_COMMANDLINETOARGVW 0
++%define HAVE_FCNTL 1
++%define HAVE_GETADDRINFO 0
++%define HAVE_GETHRTIME 0
++%define HAVE_GETOPT 1
++%define HAVE_GETMODULEHANDLE 0
++%define HAVE_GETPROCESSAFFINITYMASK 0
++%define HAVE_GETPROCESSMEMORYINFO 0
++%define HAVE_GETPROCESSTIMES 0
++%define HAVE_GETRUSAGE 1
++%define HAVE_GETSTDHANDLE 0
++%define HAVE_GETSYSTEMTIMEASFILETIME 0
++%define HAVE_GETTIMEOFDAY 1
++%define HAVE_GLOB 1
++%define HAVE_GLXGETPROCADDRESS 0
++%define HAVE_GMTIME_R 1
++%define HAVE_INET_ATON 0
++%define HAVE_ISATTY 1
++%define HAVE_KBHIT 0
++%define HAVE_LOCALTIME_R 1
++%define HAVE_LSTAT 1
++%define HAVE_LZO1X_999_COMPRESS 0
++%define HAVE_MACH_ABSOLUTE_TIME 0
++%define HAVE_MAPVIEWOFFILE 0
++%define HAVE_MEMALIGN 0
++%define HAVE_MKSTEMP 1
++%define HAVE_MMAP 1
++%define HAVE_MPROTECT 1
++%define HAVE_NANOSLEEP 1
++%define HAVE_PEEKNAMEDPIPE 0
++%define HAVE_POSIX_MEMALIGN 1
++%define HAVE_PTHREAD_CANCEL 1
++%define HAVE_SCHED_GETAFFINITY 0
++%define HAVE_SECITEMIMPORT 0
++%define HAVE_SETCONSOLETEXTATTRIBUTE 0
++%define HAVE_SETCONSOLECTRLHANDLER 0
++%define HAVE_SETDLLDIRECTORY 0
++%define HAVE_SETMODE 0
++%define HAVE_SETRLIMIT 1
++%define HAVE_SLEEP 0
++%define HAVE_STRERROR_R 1
++%define HAVE_SYSCONF 1
++%define HAVE_SYSCTL 1
++%define HAVE_USLEEP 1
++%define HAVE_UTGETOSTYPEFROMSTRING 0
++%define HAVE_VIRTUALALLOC 0
++%define HAVE_WGLGETPROCADDRESS 0
++%define HAVE_BCRYPT 0
++%define HAVE_VAAPI_DRM 0
++%define HAVE_VAAPI_X11 0
++%define HAVE_VDPAU_X11 0
++%define HAVE_PTHREADS 1
++%define HAVE_OS2THREADS 0
++%define HAVE_W32THREADS 0
++%define HAVE_AS_ARCH_DIRECTIVE 0
++%define HAVE_AS_DN_DIRECTIVE 0
++%define HAVE_AS_FPU_DIRECTIVE 0
++%define HAVE_AS_FUNC 0
++%define HAVE_AS_OBJECT_ARCH 0
++%define HAVE_ASM_MOD_Q 0
++%define HAVE_BLOCKS_EXTENSION 0
++%define HAVE_EBP_AVAILABLE 1
++%define HAVE_EBX_AVAILABLE 1
++%define HAVE_GNU_AS 0
++%define HAVE_GNU_WINDRES 0
++%define HAVE_IBM_ASM 0
++%define HAVE_INLINE_ASM_DIRECT_SYMBOL_REFS 1
++%define HAVE_INLINE_ASM_LABELS 1
++%define HAVE_INLINE_ASM_NONLOCAL_LABELS 1
++%define HAVE_PRAGMA_DEPRECATED 1
++%define HAVE_RSYNC_CONTIMEOUT 0
++%define HAVE_SYMVER_ASM_LABEL 1
++%define HAVE_SYMVER_GNU_ASM 1
++%define HAVE_VFP_ARGS 0
++%define HAVE_XFORM_ASM 0
++%define HAVE_XMM_CLOBBERS 1
++%define HAVE_KCMVIDEOCODECTYPE_HEVC 0
++%define HAVE_KCMVIDEOCODECTYPE_HEVCWITHALPHA 0
++%define HAVE_KCVPIXELFORMATTYPE_420YPCBCR10BIPLANARVIDEORANGE 0
++%define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_SMPTE_ST_2084_PQ 0
++%define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_ITU_R_2100_HLG 0
++%define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_LINEAR 0
++%define HAVE_SOCKLEN_T 0
++%define HAVE_STRUCT_ADDRINFO 0
++%define HAVE_STRUCT_GROUP_SOURCE_REQ 0
++%define HAVE_STRUCT_IP_MREQ_SOURCE 0
++%define HAVE_STRUCT_IPV6_MREQ 0
++%define HAVE_STRUCT_MSGHDR_MSG_FLAGS 0
++%define HAVE_STRUCT_POLLFD 0
++%define HAVE_STRUCT_RUSAGE_RU_MAXRSS 1
++%define HAVE_STRUCT_SCTP_EVENT_SUBSCRIBE 0
++%define HAVE_STRUCT_SOCKADDR_IN6 0
++%define HAVE_STRUCT_SOCKADDR_SA_LEN 0
++%define HAVE_STRUCT_SOCKADDR_STORAGE 0
++%define HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC 1
++%define HAVE_STRUCT_V4L2_FRMIVALENUM_DISCRETE 1
++%define HAVE_LIBDRM_GETFB2 0
++%define HAVE_MAKEINFO 1
++%define HAVE_MAKEINFO_HTML 0
++%define HAVE_OPENCL_D3D11 0
++%define HAVE_OPENCL_DRM_ARM 0
++%define HAVE_OPENCL_DRM_BEIGNET 0
++%define HAVE_OPENCL_DXVA2 0
++%define HAVE_OPENCL_VAAPI_BEIGNET 0
++%define HAVE_OPENCL_VAAPI_INTEL_MEDIA 0
++%define HAVE_PERL 1
++%define HAVE_POD2MAN 1
++%define HAVE_TEXI2HTML 0
++%define CONFIG_DOC 0
++%define CONFIG_HTMLPAGES 0
++%define CONFIG_MANPAGES 0
++%define CONFIG_PODPAGES 0
++%define CONFIG_TXTPAGES 0
++%define CONFIG_AVIO_LIST_DIR_EXAMPLE 1
++%define CONFIG_AVIO_READING_EXAMPLE 1
++%define CONFIG_DECODE_AUDIO_EXAMPLE 1
++%define CONFIG_DECODE_VIDEO_EXAMPLE 1
++%define CONFIG_DEMUXING_DECODING_EXAMPLE 1
++%define CONFIG_ENCODE_AUDIO_EXAMPLE 1
++%define CONFIG_ENCODE_VIDEO_EXAMPLE 1
++%define CONFIG_EXTRACT_MVS_EXAMPLE 1
++%define CONFIG_FILTER_AUDIO_EXAMPLE 0
++%define CONFIG_FILTERING_AUDIO_EXAMPLE 0
++%define CONFIG_FILTERING_VIDEO_EXAMPLE 0
++%define CONFIG_HTTP_MULTICLIENT_EXAMPLE 1
++%define CONFIG_HW_DECODE_EXAMPLE 1
++%define CONFIG_METADATA_EXAMPLE 1
++%define CONFIG_MUXING_EXAMPLE 0
++%define CONFIG_QSVDEC_EXAMPLE 0
++%define CONFIG_REMUXING_EXAMPLE 1
++%define CONFIG_RESAMPLING_AUDIO_EXAMPLE 0
++%define CONFIG_SCALING_VIDEO_EXAMPLE 0
++%define CONFIG_TRANSCODE_AAC_EXAMPLE 0
++%define CONFIG_TRANSCODING_EXAMPLE 0
++%define CONFIG_VAAPI_ENCODE_EXAMPLE 0
++%define CONFIG_VAAPI_TRANSCODE_EXAMPLE 0
++%define CONFIG_AVISYNTH 0
++%define CONFIG_FREI0R 0
++%define CONFIG_LIBCDIO 0
++%define CONFIG_LIBDAVS2 0
++%define CONFIG_LIBRUBBERBAND 0
++%define CONFIG_LIBVIDSTAB 0
++%define CONFIG_LIBX264 0
++%define CONFIG_LIBX265 0
++%define CONFIG_LIBXAVS 0
++%define CONFIG_LIBXAVS2 0
++%define CONFIG_LIBXVID 0
++%define CONFIG_DECKLINK 0
++%define CONFIG_LIBFDK_AAC 0
++%define CONFIG_OPENSSL 0
++%define CONFIG_LIBTLS 0
++%define CONFIG_GMP 0
++%define CONFIG_LIBARIBB24 0
++%define CONFIG_LIBLENSFUN 0
++%define CONFIG_LIBOPENCORE_AMRNB 0
++%define CONFIG_LIBOPENCORE_AMRWB 0
++%define CONFIG_LIBVO_AMRWBENC 0
++%define CONFIG_MBEDTLS 0
++%define CONFIG_RKMPP 0
++%define CONFIG_LIBSMBCLIENT 0
++%define CONFIG_CHROMAPRINT 0
++%define CONFIG_GCRYPT 0
++%define CONFIG_GNUTLS 0
++%define CONFIG_JNI 0
++%define CONFIG_LADSPA 0
++%define CONFIG_LIBAOM 0
++%define CONFIG_LIBASS 0
++%define CONFIG_LIBBLURAY 0
++%define CONFIG_LIBBS2B 0
++%define CONFIG_LIBCACA 0
++%define CONFIG_LIBCELT 0
++%define CONFIG_LIBCODEC2 0
++%define CONFIG_LIBDAV1D 0
++%define CONFIG_LIBDC1394 0
++%define CONFIG_LIBDRM 0
++%define CONFIG_LIBFLITE 0
++%define CONFIG_LIBFONTCONFIG 0
++%define CONFIG_LIBFREETYPE 0
++%define CONFIG_LIBFRIBIDI 0
++%define CONFIG_LIBGLSLANG 0
++%define CONFIG_LIBGME 0
++%define CONFIG_LIBGSM 0
++%define CONFIG_LIBIEC61883 0
++%define CONFIG_LIBILBC 0
++%define CONFIG_LIBJACK 0
++%define CONFIG_LIBKLVANC 0
++%define CONFIG_LIBKVAZAAR 0
++%define CONFIG_LIBMODPLUG 0
++%define CONFIG_LIBMP3LAME 0
++%define CONFIG_LIBMYSOFA 0
++%define CONFIG_LIBOPENCV 0
++%define CONFIG_LIBOPENH264 0
++%define CONFIG_LIBOPENJPEG 0
++%define CONFIG_LIBOPENMPT 0
++%define CONFIG_LIBOPENVINO 0
++%define CONFIG_LIBOPUS 1
++%define CONFIG_LIBPULSE 0
++%define CONFIG_LIBRABBITMQ 0
++%define CONFIG_LIBRAV1E 0
++%define CONFIG_LIBRIST 0
++%define CONFIG_LIBRSVG 0
++%define CONFIG_LIBRTMP 0
++%define CONFIG_LIBSHINE 0
++%define CONFIG_LIBSMBCLIENT 0
++%define CONFIG_LIBSNAPPY 0
++%define CONFIG_LIBSOXR 0
++%define CONFIG_LIBSPEEX 0
++%define CONFIG_LIBSRT 0
++%define CONFIG_LIBSSH 0
++%define CONFIG_LIBSVTAV1 0
++%define CONFIG_LIBTENSORFLOW 0
++%define CONFIG_LIBTESSERACT 0
++%define CONFIG_LIBTHEORA 0
++%define CONFIG_LIBTWOLAME 0
++%define CONFIG_LIBUAVS3D 0
++%define CONFIG_LIBV4L2 0
++%define CONFIG_LIBVMAF 0
++%define CONFIG_LIBVORBIS 0
++%define CONFIG_LIBVPX 0
++%define CONFIG_LIBWEBP 0
++%define CONFIG_LIBXML2 0
++%define CONFIG_LIBZIMG 0
++%define CONFIG_LIBZMQ 0
++%define CONFIG_LIBZVBI 0
++%define CONFIG_LV2 0
++%define CONFIG_MEDIACODEC 0
++%define CONFIG_OPENAL 0
++%define CONFIG_OPENGL 0
++%define CONFIG_POCKETSPHINX 0
++%define CONFIG_VAPOURSYNTH 0
++%define CONFIG_ALSA 0
++%define CONFIG_APPKIT 0
++%define CONFIG_AVFOUNDATION 0
++%define CONFIG_BZLIB 0
++%define CONFIG_COREIMAGE 0
++%define CONFIG_ICONV 0
++%define CONFIG_LIBXCB 0
++%define CONFIG_LIBXCB_SHM 0
++%define CONFIG_LIBXCB_SHAPE 0
++%define CONFIG_LIBXCB_XFIXES 0
++%define CONFIG_LZMA 0
++%define CONFIG_MEDIAFOUNDATION 0
++%define CONFIG_SCHANNEL 0
++%define CONFIG_SDL2 0
++%define CONFIG_SECURETRANSPORT 0
++%define CONFIG_SNDIO 0
++%define CONFIG_XLIB 0
++%define CONFIG_ZLIB 0
++%define CONFIG_CUDA_NVCC 0
++%define CONFIG_CUDA_SDK 0
++%define CONFIG_LIBNPP 0
++%define CONFIG_LIBMFX 0
++%define CONFIG_MMAL 0
++%define CONFIG_OMX 0
++%define CONFIG_OPENCL 0
++%define CONFIG_VULKAN 0
++%define CONFIG_AMF 0
++%define CONFIG_AUDIOTOOLBOX 0
++%define CONFIG_CRYSTALHD 0
++%define CONFIG_CUDA 0
++%define CONFIG_CUDA_LLVM 0
++%define CONFIG_CUVID 0
++%define CONFIG_D3D11VA 0
++%define CONFIG_DXVA2 0
++%define CONFIG_FFNVCODEC 0
++%define CONFIG_NVDEC 0
++%define CONFIG_NVENC 0
++%define CONFIG_VAAPI 0
++%define CONFIG_VDPAU 0
++%define CONFIG_VIDEOTOOLBOX 0
++%define CONFIG_V4L2_M2M 0
++%define CONFIG_XVMC 0
++%define CONFIG_FTRAPV 0
++%define CONFIG_GRAY 0
++%define CONFIG_HARDCODED_TABLES 0
++%define CONFIG_OMX_RPI 0
++%define CONFIG_RUNTIME_CPUDETECT 1
++%define CONFIG_SAFE_BITSTREAM_READER 1
++%define CONFIG_SHARED 0
++%define CONFIG_SMALL 0
++%define CONFIG_STATIC 1
++%define CONFIG_SWSCALE_ALPHA 1
++%define CONFIG_GPL 0
++%define CONFIG_NONFREE 0
++%define CONFIG_VERSION3 0
++%define CONFIG_AVDEVICE 0
++%define CONFIG_AVFILTER 0
++%define CONFIG_SWSCALE 0
++%define CONFIG_POSTPROC 0
++%define CONFIG_AVFORMAT 1
++%define CONFIG_AVCODEC 1
++%define CONFIG_SWRESAMPLE 0
++%define CONFIG_AVUTIL 1
++%define CONFIG_FFPLAY 0
++%define CONFIG_FFPROBE 0
++%define CONFIG_FFMPEG 0
++%define CONFIG_DCT 1
++%define CONFIG_DWT 0
++%define CONFIG_ERROR_RESILIENCE 0
++%define CONFIG_FAAN 0
++%define CONFIG_FAST_UNALIGNED 1
++%define CONFIG_FFT 1
++%define CONFIG_LSP 0
++%define CONFIG_LZO 0
++%define CONFIG_MDCT 1
++%define CONFIG_PIXELUTILS 0
++%define CONFIG_NETWORK 0
++%define CONFIG_RDFT 1
++%define CONFIG_AUTODETECT 0
++%define CONFIG_FONTCONFIG 0
++%define CONFIG_LARGE_TESTS 1
++%define CONFIG_LINUX_PERF 0
++%define CONFIG_MEMORY_POISONING 0
++%define CONFIG_NEON_CLOBBER_TEST 0
++%define CONFIG_OSSFUZZ 0
++%define CONFIG_PIC 1
++%define CONFIG_THUMB 0
++%define CONFIG_VALGRIND_BACKTRACE 0
++%define CONFIG_XMM_CLOBBER_TEST 0
++%define CONFIG_BSFS 1
++%define CONFIG_DECODERS 1
++%define CONFIG_ENCODERS 0
++%define CONFIG_HWACCELS 0
++%define CONFIG_PARSERS 1
++%define CONFIG_INDEVS 0
++%define CONFIG_OUTDEVS 0
++%define CONFIG_FILTERS 0
++%define CONFIG_DEMUXERS 1
++%define CONFIG_MUXERS 0
++%define CONFIG_PROTOCOLS 0
++%define CONFIG_AANDCTTABLES 0
++%define CONFIG_AC3DSP 0
++%define CONFIG_ADTS_HEADER 1
++%define CONFIG_ATSC_A53 1
++%define CONFIG_AUDIO_FRAME_QUEUE 0
++%define CONFIG_AUDIODSP 0
++%define CONFIG_BLOCKDSP 0
++%define CONFIG_BSWAPDSP 0
++%define CONFIG_CABAC 1
++%define CONFIG_CBS 0
++%define CONFIG_CBS_AV1 0
++%define CONFIG_CBS_H264 0
++%define CONFIG_CBS_H265 0
++%define CONFIG_CBS_JPEG 0
++%define CONFIG_CBS_MPEG2 0
++%define CONFIG_CBS_VP9 0
++%define CONFIG_DIRAC_PARSE 1
++%define CONFIG_DNN 0
++%define CONFIG_DVPROFILE 0
++%define CONFIG_EXIF 0
++%define CONFIG_FAANDCT 0
++%define CONFIG_FAANIDCT 0
++%define CONFIG_FDCTDSP 0
++%define CONFIG_FLACDSP 1
++%define CONFIG_FMTCONVERT 0
++%define CONFIG_FRAME_THREAD_ENCODER 0
++%define CONFIG_G722DSP 0
++%define CONFIG_GOLOMB 1
++%define CONFIG_GPLV3 0
++%define CONFIG_H263DSP 0
++%define CONFIG_H264CHROMA 1
++%define CONFIG_H264DSP 1
++%define CONFIG_H264PARSE 1
++%define CONFIG_H264PRED 1
++%define CONFIG_H264QPEL 1
++%define CONFIG_HEVCPARSE 0
++%define CONFIG_HPELDSP 1
++%define CONFIG_HUFFMAN 0
++%define CONFIG_HUFFYUVDSP 0
++%define CONFIG_HUFFYUVENCDSP 0
++%define CONFIG_IDCTDSP 0
++%define CONFIG_IIRFILTER 0
++%define CONFIG_MDCT15 1
++%define CONFIG_INTRAX8 0
++%define CONFIG_ISO_MEDIA 1
++%define CONFIG_IVIDSP 0
++%define CONFIG_JPEGTABLES 0
++%define CONFIG_LGPLV3 0
++%define CONFIG_LIBX262 0
++%define CONFIG_LLAUDDSP 0
++%define CONFIG_LLVIDDSP 0
++%define CONFIG_LLVIDENCDSP 0
++%define CONFIG_LPC 0
++%define CONFIG_LZF 0
++%define CONFIG_ME_CMP 0
++%define CONFIG_MPEG_ER 0
++%define CONFIG_MPEGAUDIO 1
++%define CONFIG_MPEGAUDIODSP 1
++%define CONFIG_MPEGAUDIOHEADER 1
++%define CONFIG_MPEGVIDEO 0
++%define CONFIG_MPEGVIDEOENC 0
++%define CONFIG_MSS34DSP 0
++%define CONFIG_PIXBLOCKDSP 0
++%define CONFIG_QPELDSP 0
++%define CONFIG_QSV 0
++%define CONFIG_QSVDEC 0
++%define CONFIG_QSVENC 0
++%define CONFIG_QSVVPP 0
++%define CONFIG_RANGECODER 0
++%define CONFIG_RIFFDEC 1
++%define CONFIG_RIFFENC 0
++%define CONFIG_RTPDEC 0
++%define CONFIG_RTPENC_CHAIN 0
++%define CONFIG_RV34DSP 0
++%define CONFIG_SCENE_SAD 0
++%define CONFIG_SINEWIN 1
++%define CONFIG_SNAPPY 0
++%define CONFIG_SRTP 0
++%define CONFIG_STARTCODE 1
++%define CONFIG_TEXTUREDSP 0
++%define CONFIG_TEXTUREDSPENC 0
++%define CONFIG_TPELDSP 0
++%define CONFIG_VAAPI_1 0
++%define CONFIG_VAAPI_ENCODE 0
++%define CONFIG_VC1DSP 0
++%define CONFIG_VIDEODSP 1
++%define CONFIG_VP3DSP 1
++%define CONFIG_VP56DSP 0
++%define CONFIG_VP8DSP 1
++%define CONFIG_WMA_FREQS 0
++%define CONFIG_WMV2DSP 0
++%define CONFIG_AAC_ADTSTOASC_BSF 0
++%define CONFIG_AV1_FRAME_MERGE_BSF 0
++%define CONFIG_AV1_FRAME_SPLIT_BSF 0
++%define CONFIG_AV1_METADATA_BSF 0
++%define CONFIG_CHOMP_BSF 0
++%define CONFIG_DUMP_EXTRADATA_BSF 0
++%define CONFIG_DCA_CORE_BSF 0
++%define CONFIG_EAC3_CORE_BSF 0
++%define CONFIG_EXTRACT_EXTRADATA_BSF 0
++%define CONFIG_FILTER_UNITS_BSF 0
++%define CONFIG_H264_METADATA_BSF 0
++%define CONFIG_H264_MP4TOANNEXB_BSF 0
++%define CONFIG_H264_REDUNDANT_PPS_BSF 0
++%define CONFIG_HAPQA_EXTRACT_BSF 0
++%define CONFIG_HEVC_METADATA_BSF 0
++%define CONFIG_HEVC_MP4TOANNEXB_BSF 0
++%define CONFIG_IMX_DUMP_HEADER_BSF 0
++%define CONFIG_MJPEG2JPEG_BSF 0
++%define CONFIG_MJPEGA_DUMP_HEADER_BSF 0
++%define CONFIG_MP3_HEADER_DECOMPRESS_BSF 0
++%define CONFIG_MPEG2_METADATA_BSF 0
++%define CONFIG_MPEG4_UNPACK_BFRAMES_BSF 0
++%define CONFIG_MOV2TEXTSUB_BSF 0
++%define CONFIG_NOISE_BSF 0
++%define CONFIG_NULL_BSF 1
++%define CONFIG_OPUS_METADATA_BSF 0
++%define CONFIG_PCM_RECHUNK_BSF 0
++%define CONFIG_PRORES_METADATA_BSF 0
++%define CONFIG_REMOVE_EXTRADATA_BSF 0
++%define CONFIG_SETTS_BSF 0
++%define CONFIG_TEXT2MOVSUB_BSF 0
++%define CONFIG_TRACE_HEADERS_BSF 0
++%define CONFIG_TRUEHD_CORE_BSF 0
++%define CONFIG_VP9_METADATA_BSF 0
++%define CONFIG_VP9_RAW_REORDER_BSF 0
++%define CONFIG_VP9_SUPERFRAME_BSF 0
++%define CONFIG_VP9_SUPERFRAME_SPLIT_BSF 0
++%define CONFIG_AASC_DECODER 0
++%define CONFIG_AIC_DECODER 0
++%define CONFIG_ALIAS_PIX_DECODER 0
++%define CONFIG_AGM_DECODER 0
++%define CONFIG_AMV_DECODER 0
++%define CONFIG_ANM_DECODER 0
++%define CONFIG_ANSI_DECODER 0
++%define CONFIG_APNG_DECODER 0
++%define CONFIG_ARBC_DECODER 0
++%define CONFIG_ARGO_DECODER 0
++%define CONFIG_ASV1_DECODER 0
++%define CONFIG_ASV2_DECODER 0
++%define CONFIG_AURA_DECODER 0
++%define CONFIG_AURA2_DECODER 0
++%define CONFIG_AVRP_DECODER 0
++%define CONFIG_AVRN_DECODER 0
++%define CONFIG_AVS_DECODER 0
++%define CONFIG_AVUI_DECODER 0
++%define CONFIG_AYUV_DECODER 0
++%define CONFIG_BETHSOFTVID_DECODER 0
++%define CONFIG_BFI_DECODER 0
++%define CONFIG_BINK_DECODER 0
++%define CONFIG_BITPACKED_DECODER 0
++%define CONFIG_BMP_DECODER 0
++%define CONFIG_BMV_VIDEO_DECODER 0
++%define CONFIG_BRENDER_PIX_DECODER 0
++%define CONFIG_C93_DECODER 0
++%define CONFIG_CAVS_DECODER 0
++%define CONFIG_CDGRAPHICS_DECODER 0
++%define CONFIG_CDTOONS_DECODER 0
++%define CONFIG_CDXL_DECODER 0
++%define CONFIG_CFHD_DECODER 0
++%define CONFIG_CINEPAK_DECODER 0
++%define CONFIG_CLEARVIDEO_DECODER 0
++%define CONFIG_CLJR_DECODER 0
++%define CONFIG_CLLC_DECODER 0
++%define CONFIG_COMFORTNOISE_DECODER 0
++%define CONFIG_CPIA_DECODER 0
++%define CONFIG_CRI_DECODER 0
++%define CONFIG_CSCD_DECODER 0
++%define CONFIG_CYUV_DECODER 0
++%define CONFIG_DDS_DECODER 0
++%define CONFIG_DFA_DECODER 0
++%define CONFIG_DIRAC_DECODER 0
++%define CONFIG_DNXHD_DECODER 0
++%define CONFIG_DPX_DECODER 0
++%define CONFIG_DSICINVIDEO_DECODER 0
++%define CONFIG_DVAUDIO_DECODER 0
++%define CONFIG_DVVIDEO_DECODER 0
++%define CONFIG_DXA_DECODER 0
++%define CONFIG_DXTORY_DECODER 0
++%define CONFIG_DXV_DECODER 0
++%define CONFIG_EACMV_DECODER 0
++%define CONFIG_EAMAD_DECODER 0
++%define CONFIG_EATGQ_DECODER 0
++%define CONFIG_EATGV_DECODER 0
++%define CONFIG_EATQI_DECODER 0
++%define CONFIG_EIGHTBPS_DECODER 0
++%define CONFIG_EIGHTSVX_EXP_DECODER 0
++%define CONFIG_EIGHTSVX_FIB_DECODER 0
++%define CONFIG_ESCAPE124_DECODER 0
++%define CONFIG_ESCAPE130_DECODER 0
++%define CONFIG_EXR_DECODER 0
++%define CONFIG_FFV1_DECODER 0
++%define CONFIG_FFVHUFF_DECODER 0
++%define CONFIG_FIC_DECODER 0
++%define CONFIG_FITS_DECODER 0
++%define CONFIG_FLASHSV_DECODER 0
++%define CONFIG_FLASHSV2_DECODER 0
++%define CONFIG_FLIC_DECODER 0
++%define CONFIG_FLV_DECODER 0
++%define CONFIG_FMVC_DECODER 0
++%define CONFIG_FOURXM_DECODER 0
++%define CONFIG_FRAPS_DECODER 0
++%define CONFIG_FRWU_DECODER 0
++%define CONFIG_G2M_DECODER 0
++%define CONFIG_GDV_DECODER 0
++%define CONFIG_GIF_DECODER 0
++%define CONFIG_H261_DECODER 0
++%define CONFIG_H263_DECODER 0
++%define CONFIG_H263I_DECODER 0
++%define CONFIG_H263P_DECODER 0
++%define CONFIG_H263_V4L2M2M_DECODER 0
++%define CONFIG_H264_DECODER 1
++%define CONFIG_H264_CRYSTALHD_DECODER 0
++%define CONFIG_H264_V4L2M2M_DECODER 0
++%define CONFIG_H264_MEDIACODEC_DECODER 0
++%define CONFIG_H264_MMAL_DECODER 0
++%define CONFIG_H264_QSV_DECODER 0
++%define CONFIG_H264_RKMPP_DECODER 0
++%define CONFIG_HAP_DECODER 0
++%define CONFIG_HEVC_DECODER 0
++%define CONFIG_HEVC_QSV_DECODER 0
++%define CONFIG_HEVC_RKMPP_DECODER 0
++%define CONFIG_HEVC_V4L2M2M_DECODER 0
++%define CONFIG_HNM4_VIDEO_DECODER 0
++%define CONFIG_HQ_HQA_DECODER 0
++%define CONFIG_HQX_DECODER 0
++%define CONFIG_HUFFYUV_DECODER 0
++%define CONFIG_HYMT_DECODER 0
++%define CONFIG_IDCIN_DECODER 0
++%define CONFIG_IFF_ILBM_DECODER 0
++%define CONFIG_IMM4_DECODER 0
++%define CONFIG_IMM5_DECODER 0
++%define CONFIG_INDEO2_DECODER 0
++%define CONFIG_INDEO3_DECODER 0
++%define CONFIG_INDEO4_DECODER 0
++%define CONFIG_INDEO5_DECODER 0
++%define CONFIG_INTERPLAY_VIDEO_DECODER 0
++%define CONFIG_IPU_DECODER 0
++%define CONFIG_JPEG2000_DECODER 0
++%define CONFIG_JPEGLS_DECODER 0
++%define CONFIG_JV_DECODER 0
++%define CONFIG_KGV1_DECODER 0
++%define CONFIG_KMVC_DECODER 0
++%define CONFIG_LAGARITH_DECODER 0
++%define CONFIG_LOCO_DECODER 0
++%define CONFIG_LSCR_DECODER 0
++%define CONFIG_M101_DECODER 0
++%define CONFIG_MAGICYUV_DECODER 0
++%define CONFIG_MDEC_DECODER 0
++%define CONFIG_MIMIC_DECODER 0
++%define CONFIG_MJPEG_DECODER 0
++%define CONFIG_MJPEGB_DECODER 0
++%define CONFIG_MMVIDEO_DECODER 0
++%define CONFIG_MOBICLIP_DECODER 0
++%define CONFIG_MOTIONPIXELS_DECODER 0
++%define CONFIG_MPEG1VIDEO_DECODER 0
++%define CONFIG_MPEG2VIDEO_DECODER 0
++%define CONFIG_MPEG4_DECODER 0
++%define CONFIG_MPEG4_CRYSTALHD_DECODER 0
++%define CONFIG_MPEG4_V4L2M2M_DECODER 0
++%define CONFIG_MPEG4_MMAL_DECODER 0
++%define CONFIG_MPEGVIDEO_DECODER 0
++%define CONFIG_MPEG1_V4L2M2M_DECODER 0
++%define CONFIG_MPEG2_MMAL_DECODER 0
++%define CONFIG_MPEG2_CRYSTALHD_DECODER 0
++%define CONFIG_MPEG2_V4L2M2M_DECODER 0
++%define CONFIG_MPEG2_QSV_DECODER 0
++%define CONFIG_MPEG2_MEDIACODEC_DECODER 0
++%define CONFIG_MSA1_DECODER 0
++%define CONFIG_MSCC_DECODER 0
++%define CONFIG_MSMPEG4V1_DECODER 0
++%define CONFIG_MSMPEG4V2_DECODER 0
++%define CONFIG_MSMPEG4V3_DECODER 0
++%define CONFIG_MSMPEG4_CRYSTALHD_DECODER 0
++%define CONFIG_MSP2_DECODER 0
++%define CONFIG_MSRLE_DECODER 0
++%define CONFIG_MSS1_DECODER 0
++%define CONFIG_MSS2_DECODER 0
++%define CONFIG_MSVIDEO1_DECODER 0
++%define CONFIG_MSZH_DECODER 0
++%define CONFIG_MTS2_DECODER 0
++%define CONFIG_MV30_DECODER 0
++%define CONFIG_MVC1_DECODER 0
++%define CONFIG_MVC2_DECODER 0
++%define CONFIG_MVDV_DECODER 0
++%define CONFIG_MVHA_DECODER 0
++%define CONFIG_MWSC_DECODER 0
++%define CONFIG_MXPEG_DECODER 0
++%define CONFIG_NOTCHLC_DECODER 0
++%define CONFIG_NUV_DECODER 0
++%define CONFIG_PAF_VIDEO_DECODER 0
++%define CONFIG_PAM_DECODER 0
++%define CONFIG_PBM_DECODER 0
++%define CONFIG_PCX_DECODER 0
++%define CONFIG_PFM_DECODER 0
++%define CONFIG_PGM_DECODER 0
++%define CONFIG_PGMYUV_DECODER 0
++%define CONFIG_PGX_DECODER 0
++%define CONFIG_PHOTOCD_DECODER 0
++%define CONFIG_PICTOR_DECODER 0
++%define CONFIG_PIXLET_DECODER 0
++%define CONFIG_PNG_DECODER 0
++%define CONFIG_PPM_DECODER 0
++%define CONFIG_PRORES_DECODER 0
++%define CONFIG_PROSUMER_DECODER 0
++%define CONFIG_PSD_DECODER 0
++%define CONFIG_PTX_DECODER 0
++%define CONFIG_QDRAW_DECODER 0
++%define CONFIG_QPEG_DECODER 0
++%define CONFIG_QTRLE_DECODER 0
++%define CONFIG_R10K_DECODER 0
++%define CONFIG_R210_DECODER 0
++%define CONFIG_RASC_DECODER 0
++%define CONFIG_RAWVIDEO_DECODER 0
++%define CONFIG_RL2_DECODER 0
++%define CONFIG_ROQ_DECODER 0
++%define CONFIG_RPZA_DECODER 0
++%define CONFIG_RSCC_DECODER 0
++%define CONFIG_RV10_DECODER 0
++%define CONFIG_RV20_DECODER 0
++%define CONFIG_RV30_DECODER 0
++%define CONFIG_RV40_DECODER 0
++%define CONFIG_S302M_DECODER 0
++%define CONFIG_SANM_DECODER 0
++%define CONFIG_SCPR_DECODER 0
++%define CONFIG_SCREENPRESSO_DECODER 0
++%define CONFIG_SGA_DECODER 0
++%define CONFIG_SGI_DECODER 0
++%define CONFIG_SGIRLE_DECODER 0
++%define CONFIG_SHEERVIDEO_DECODER 0
++%define CONFIG_SIMBIOSIS_IMX_DECODER 0
++%define CONFIG_SMACKER_DECODER 0
++%define CONFIG_SMC_DECODER 0
++%define CONFIG_SMVJPEG_DECODER 0
++%define CONFIG_SNOW_DECODER 0
++%define CONFIG_SP5X_DECODER 0
++%define CONFIG_SPEEDHQ_DECODER 0
++%define CONFIG_SRGC_DECODER 0
++%define CONFIG_SUNRAST_DECODER 0
++%define CONFIG_SVQ1_DECODER 0
++%define CONFIG_SVQ3_DECODER 0
++%define CONFIG_TARGA_DECODER 0
++%define CONFIG_TARGA_Y216_DECODER 0
++%define CONFIG_TDSC_DECODER 0
++%define CONFIG_THEORA_DECODER 1
++%define CONFIG_THP_DECODER 0
++%define CONFIG_TIERTEXSEQVIDEO_DECODER 0
++%define CONFIG_TIFF_DECODER 0
++%define CONFIG_TMV_DECODER 0
++%define CONFIG_TRUEMOTION1_DECODER 0
++%define CONFIG_TRUEMOTION2_DECODER 0
++%define CONFIG_TRUEMOTION2RT_DECODER 0
++%define CONFIG_TSCC_DECODER 0
++%define CONFIG_TSCC2_DECODER 0
++%define CONFIG_TXD_DECODER 0
++%define CONFIG_ULTI_DECODER 0
++%define CONFIG_UTVIDEO_DECODER 0
++%define CONFIG_V210_DECODER 0
++%define CONFIG_V210X_DECODER 0
++%define CONFIG_V308_DECODER 0
++%define CONFIG_V408_DECODER 0
++%define CONFIG_V410_DECODER 0
++%define CONFIG_VB_DECODER 0
++%define CONFIG_VBLE_DECODER 0
++%define CONFIG_VC1_DECODER 0
++%define CONFIG_VC1_CRYSTALHD_DECODER 0
++%define CONFIG_VC1IMAGE_DECODER 0
++%define CONFIG_VC1_MMAL_DECODER 0
++%define CONFIG_VC1_QSV_DECODER 0
++%define CONFIG_VC1_V4L2M2M_DECODER 0
++%define CONFIG_VCR1_DECODER 0
++%define CONFIG_VMDVIDEO_DECODER 0
++%define CONFIG_VMNC_DECODER 0
++%define CONFIG_VP3_DECODER 1
++%define CONFIG_VP4_DECODER 0
++%define CONFIG_VP5_DECODER 0
++%define CONFIG_VP6_DECODER 0
++%define CONFIG_VP6A_DECODER 0
++%define CONFIG_VP6F_DECODER 0
++%define CONFIG_VP7_DECODER 0
++%define CONFIG_VP8_DECODER 1
++%define CONFIG_VP8_RKMPP_DECODER 0
++%define CONFIG_VP8_V4L2M2M_DECODER 0
++%define CONFIG_VP9_DECODER 0
++%define CONFIG_VP9_RKMPP_DECODER 0
++%define CONFIG_VP9_V4L2M2M_DECODER 0
++%define CONFIG_VQA_DECODER 0
++%define CONFIG_WEBP_DECODER 0
++%define CONFIG_WCMV_DECODER 0
++%define CONFIG_WRAPPED_AVFRAME_DECODER 0
++%define CONFIG_WMV1_DECODER 0
++%define CONFIG_WMV2_DECODER 0
++%define CONFIG_WMV3_DECODER 0
++%define CONFIG_WMV3_CRYSTALHD_DECODER 0
++%define CONFIG_WMV3IMAGE_DECODER 0
++%define CONFIG_WNV1_DECODER 0
++%define CONFIG_XAN_WC3_DECODER 0
++%define CONFIG_XAN_WC4_DECODER 0
++%define CONFIG_XBM_DECODER 0
++%define CONFIG_XFACE_DECODER 0
++%define CONFIG_XL_DECODER 0
++%define CONFIG_XPM_DECODER 0
++%define CONFIG_XWD_DECODER 0
++%define CONFIG_Y41P_DECODER 0
++%define CONFIG_YLC_DECODER 0
++%define CONFIG_YOP_DECODER 0
++%define CONFIG_YUV4_DECODER 0
++%define CONFIG_ZERO12V_DECODER 0
++%define CONFIG_ZEROCODEC_DECODER 0
++%define CONFIG_ZLIB_DECODER 0
++%define CONFIG_ZMBV_DECODER 0
++%define CONFIG_AAC_DECODER 1
++%define CONFIG_AAC_FIXED_DECODER 0
++%define CONFIG_AAC_LATM_DECODER 0
++%define CONFIG_AC3_DECODER 0
++%define CONFIG_AC3_FIXED_DECODER 0
++%define CONFIG_ACELP_KELVIN_DECODER 0
++%define CONFIG_ALAC_DECODER 0
++%define CONFIG_ALS_DECODER 0
++%define CONFIG_AMRNB_DECODER 0
++%define CONFIG_AMRWB_DECODER 0
++%define CONFIG_APE_DECODER 0
++%define CONFIG_APTX_DECODER 0
++%define CONFIG_APTX_HD_DECODER 0
++%define CONFIG_ATRAC1_DECODER 0
++%define CONFIG_ATRAC3_DECODER 0
++%define CONFIG_ATRAC3AL_DECODER 0
++%define CONFIG_ATRAC3P_DECODER 0
++%define CONFIG_ATRAC3PAL_DECODER 0
++%define CONFIG_ATRAC9_DECODER 0
++%define CONFIG_BINKAUDIO_DCT_DECODER 0
++%define CONFIG_BINKAUDIO_RDFT_DECODER 0
++%define CONFIG_BMV_AUDIO_DECODER 0
++%define CONFIG_COOK_DECODER 0
++%define CONFIG_DCA_DECODER 0
++%define CONFIG_DOLBY_E_DECODER 0
++%define CONFIG_DSD_LSBF_DECODER 0
++%define CONFIG_DSD_MSBF_DECODER 0
++%define CONFIG_DSD_LSBF_PLANAR_DECODER 0
++%define CONFIG_DSD_MSBF_PLANAR_DECODER 0
++%define CONFIG_DSICINAUDIO_DECODER 0
++%define CONFIG_DSS_SP_DECODER 0
++%define CONFIG_DST_DECODER 0
++%define CONFIG_EAC3_DECODER 0
++%define CONFIG_EVRC_DECODER 0
++%define CONFIG_FASTAUDIO_DECODER 0
++%define CONFIG_FFWAVESYNTH_DECODER 0
++%define CONFIG_FLAC_DECODER 1
++%define CONFIG_G723_1_DECODER 0
++%define CONFIG_G729_DECODER 0
++%define CONFIG_GSM_DECODER 0
++%define CONFIG_GSM_MS_DECODER 0
++%define CONFIG_HCA_DECODER 0
++%define CONFIG_HCOM_DECODER 0
++%define CONFIG_IAC_DECODER 0
++%define CONFIG_ILBC_DECODER 0
++%define CONFIG_IMC_DECODER 0
++%define CONFIG_INTERPLAY_ACM_DECODER 0
++%define CONFIG_MACE3_DECODER 0
++%define CONFIG_MACE6_DECODER 0
++%define CONFIG_METASOUND_DECODER 0
++%define CONFIG_MLP_DECODER 0
++%define CONFIG_MP1_DECODER 0
++%define CONFIG_MP1FLOAT_DECODER 0
++%define CONFIG_MP2_DECODER 0
++%define CONFIG_MP2FLOAT_DECODER 0
++%define CONFIG_MP3FLOAT_DECODER 0
++%define CONFIG_MP3_DECODER 1
++%define CONFIG_MP3ADUFLOAT_DECODER 0
++%define CONFIG_MP3ADU_DECODER 0
++%define CONFIG_MP3ON4FLOAT_DECODER 0
++%define CONFIG_MP3ON4_DECODER 0
++%define CONFIG_MPC7_DECODER 0
++%define CONFIG_MPC8_DECODER 0
++%define CONFIG_NELLYMOSER_DECODER 0
++%define CONFIG_ON2AVC_DECODER 0
++%define CONFIG_OPUS_DECODER 0
++%define CONFIG_PAF_AUDIO_DECODER 0
++%define CONFIG_QCELP_DECODER 0
++%define CONFIG_QDM2_DECODER 0
++%define CONFIG_QDMC_DECODER 0
++%define CONFIG_RA_144_DECODER 0
++%define CONFIG_RA_288_DECODER 0
++%define CONFIG_RALF_DECODER 0
++%define CONFIG_SBC_DECODER 0
++%define CONFIG_SHORTEN_DECODER 0
++%define CONFIG_SIPR_DECODER 0
++%define CONFIG_SIREN_DECODER 0
++%define CONFIG_SMACKAUD_DECODER 0
++%define CONFIG_SONIC_DECODER 0
++%define CONFIG_TAK_DECODER 0
++%define CONFIG_TRUEHD_DECODER 0
++%define CONFIG_TRUESPEECH_DECODER 0
++%define CONFIG_TTA_DECODER 0
++%define CONFIG_TWINVQ_DECODER 0
++%define CONFIG_VMDAUDIO_DECODER 0
++%define CONFIG_VORBIS_DECODER 1
++%define CONFIG_WAVPACK_DECODER 0
++%define CONFIG_WMALOSSLESS_DECODER 0
++%define CONFIG_WMAPRO_DECODER 0
++%define CONFIG_WMAV1_DECODER 0
++%define CONFIG_WMAV2_DECODER 0
++%define CONFIG_WMAVOICE_DECODER 0
++%define CONFIG_WS_SND1_DECODER 0
++%define CONFIG_XMA1_DECODER 0
++%define CONFIG_XMA2_DECODER 0
++%define CONFIG_PCM_ALAW_DECODER 1
++%define CONFIG_PCM_BLURAY_DECODER 0
++%define CONFIG_PCM_DVD_DECODER 0
++%define CONFIG_PCM_F16LE_DECODER 0
++%define CONFIG_PCM_F24LE_DECODER 0
++%define CONFIG_PCM_F32BE_DECODER 0
++%define CONFIG_PCM_F32LE_DECODER 1
++%define CONFIG_PCM_F64BE_DECODER 0
++%define CONFIG_PCM_F64LE_DECODER 0
++%define CONFIG_PCM_LXF_DECODER 0
++%define CONFIG_PCM_MULAW_DECODER 1
++%define CONFIG_PCM_S8_DECODER 0
++%define CONFIG_PCM_S8_PLANAR_DECODER 0
++%define CONFIG_PCM_S16BE_DECODER 1
++%define CONFIG_PCM_S16BE_PLANAR_DECODER 0
++%define CONFIG_PCM_S16LE_DECODER 1
++%define CONFIG_PCM_S16LE_PLANAR_DECODER 0
++%define CONFIG_PCM_S24BE_DECODER 1
++%define CONFIG_PCM_S24DAUD_DECODER 0
++%define CONFIG_PCM_S24LE_DECODER 1
++%define CONFIG_PCM_S24LE_PLANAR_DECODER 0
++%define CONFIG_PCM_S32BE_DECODER 0
++%define CONFIG_PCM_S32LE_DECODER 1
++%define CONFIG_PCM_S32LE_PLANAR_DECODER 0
++%define CONFIG_PCM_S64BE_DECODER 0
++%define CONFIG_PCM_S64LE_DECODER 0
++%define CONFIG_PCM_SGA_DECODER 0
++%define CONFIG_PCM_U8_DECODER 1
++%define CONFIG_PCM_U16BE_DECODER 0
++%define CONFIG_PCM_U16LE_DECODER 0
++%define CONFIG_PCM_U24BE_DECODER 0
++%define CONFIG_PCM_U24LE_DECODER 0
++%define CONFIG_PCM_U32BE_DECODER 0
++%define CONFIG_PCM_U32LE_DECODER 0
++%define CONFIG_PCM_VIDC_DECODER 0
++%define CONFIG_DERF_DPCM_DECODER 0
++%define CONFIG_GREMLIN_DPCM_DECODER 0
++%define CONFIG_INTERPLAY_DPCM_DECODER 0
++%define CONFIG_ROQ_DPCM_DECODER 0
++%define CONFIG_SDX2_DPCM_DECODER 0
++%define CONFIG_SOL_DPCM_DECODER 0
++%define CONFIG_XAN_DPCM_DECODER 0
++%define CONFIG_ADPCM_4XM_DECODER 0
++%define CONFIG_ADPCM_ADX_DECODER 0
++%define CONFIG_ADPCM_AFC_DECODER 0
++%define CONFIG_ADPCM_AGM_DECODER 0
++%define CONFIG_ADPCM_AICA_DECODER 0
++%define CONFIG_ADPCM_ARGO_DECODER 0
++%define CONFIG_ADPCM_CT_DECODER 0
++%define CONFIG_ADPCM_DTK_DECODER 0
++%define CONFIG_ADPCM_EA_DECODER 0
++%define CONFIG_ADPCM_EA_MAXIS_XA_DECODER 0
++%define CONFIG_ADPCM_EA_R1_DECODER 0
++%define CONFIG_ADPCM_EA_R2_DECODER 0
++%define CONFIG_ADPCM_EA_R3_DECODER 0
++%define CONFIG_ADPCM_EA_XAS_DECODER 0
++%define CONFIG_ADPCM_G722_DECODER 0
++%define CONFIG_ADPCM_G726_DECODER 0
++%define CONFIG_ADPCM_G726LE_DECODER 0
++%define CONFIG_ADPCM_IMA_ACORN_DECODER 0
++%define CONFIG_ADPCM_IMA_AMV_DECODER 0
++%define CONFIG_ADPCM_IMA_ALP_DECODER 0
++%define CONFIG_ADPCM_IMA_APC_DECODER 0
++%define CONFIG_ADPCM_IMA_APM_DECODER 0
++%define CONFIG_ADPCM_IMA_CUNNING_DECODER 0
++%define CONFIG_ADPCM_IMA_DAT4_DECODER 0
++%define CONFIG_ADPCM_IMA_DK3_DECODER 0
++%define CONFIG_ADPCM_IMA_DK4_DECODER 0
++%define CONFIG_ADPCM_IMA_EA_EACS_DECODER 0
++%define CONFIG_ADPCM_IMA_EA_SEAD_DECODER 0
++%define CONFIG_ADPCM_IMA_ISS_DECODER 0
++%define CONFIG_ADPCM_IMA_MOFLEX_DECODER 0
++%define CONFIG_ADPCM_IMA_MTF_DECODER 0
++%define CONFIG_ADPCM_IMA_OKI_DECODER 0
++%define CONFIG_ADPCM_IMA_QT_DECODER 0
++%define CONFIG_ADPCM_IMA_RAD_DECODER 0
++%define CONFIG_ADPCM_IMA_SSI_DECODER 0
++%define CONFIG_ADPCM_IMA_SMJPEG_DECODER 0
++%define CONFIG_ADPCM_IMA_WAV_DECODER 0
++%define CONFIG_ADPCM_IMA_WS_DECODER 0
++%define CONFIG_ADPCM_MS_DECODER 0
++%define CONFIG_ADPCM_MTAF_DECODER 0
++%define CONFIG_ADPCM_PSX_DECODER 0
++%define CONFIG_ADPCM_SBPRO_2_DECODER 0
++%define CONFIG_ADPCM_SBPRO_3_DECODER 0
++%define CONFIG_ADPCM_SBPRO_4_DECODER 0
++%define CONFIG_ADPCM_SWF_DECODER 0
++%define CONFIG_ADPCM_THP_DECODER 0
++%define CONFIG_ADPCM_THP_LE_DECODER 0
++%define CONFIG_ADPCM_VIMA_DECODER 0
++%define CONFIG_ADPCM_XA_DECODER 0
++%define CONFIG_ADPCM_YAMAHA_DECODER 0
++%define CONFIG_ADPCM_ZORK_DECODER 0
++%define CONFIG_SSA_DECODER 0
++%define CONFIG_ASS_DECODER 0
++%define CONFIG_CCAPTION_DECODER 0
++%define CONFIG_DVBSUB_DECODER 0
++%define CONFIG_DVDSUB_DECODER 0
++%define CONFIG_JACOSUB_DECODER 0
++%define CONFIG_MICRODVD_DECODER 0
++%define CONFIG_MOVTEXT_DECODER 0
++%define CONFIG_MPL2_DECODER 0
++%define CONFIG_PGSSUB_DECODER 0
++%define CONFIG_PJS_DECODER 0
++%define CONFIG_REALTEXT_DECODER 0
++%define CONFIG_SAMI_DECODER 0
++%define CONFIG_SRT_DECODER 0
++%define CONFIG_STL_DECODER 0
++%define CONFIG_SUBRIP_DECODER 0
++%define CONFIG_SUBVIEWER_DECODER 0
++%define CONFIG_SUBVIEWER1_DECODER 0
++%define CONFIG_TEXT_DECODER 0
++%define CONFIG_VPLAYER_DECODER 0
++%define CONFIG_WEBVTT_DECODER 0
++%define CONFIG_XSUB_DECODER 0
++%define CONFIG_AAC_AT_DECODER 0
++%define CONFIG_AC3_AT_DECODER 0
++%define CONFIG_ADPCM_IMA_QT_AT_DECODER 0
++%define CONFIG_ALAC_AT_DECODER 0
++%define CONFIG_AMR_NB_AT_DECODER 0
++%define CONFIG_EAC3_AT_DECODER 0
++%define CONFIG_GSM_MS_AT_DECODER 0
++%define CONFIG_ILBC_AT_DECODER 0
++%define CONFIG_MP1_AT_DECODER 0
++%define CONFIG_MP2_AT_DECODER 0
++%define CONFIG_MP3_AT_DECODER 0
++%define CONFIG_PCM_ALAW_AT_DECODER 0
++%define CONFIG_PCM_MULAW_AT_DECODER 0
++%define CONFIG_QDMC_AT_DECODER 0
++%define CONFIG_QDM2_AT_DECODER 0
++%define CONFIG_LIBARIBB24_DECODER 0
++%define CONFIG_LIBCELT_DECODER 0
++%define CONFIG_LIBCODEC2_DECODER 0
++%define CONFIG_LIBDAV1D_DECODER 0
++%define CONFIG_LIBDAVS2_DECODER 0
++%define CONFIG_LIBFDK_AAC_DECODER 0
++%define CONFIG_LIBGSM_DECODER 0
++%define CONFIG_LIBGSM_MS_DECODER 0
++%define CONFIG_LIBILBC_DECODER 0
++%define CONFIG_LIBOPENCORE_AMRNB_DECODER 0
++%define CONFIG_LIBOPENCORE_AMRWB_DECODER 0
++%define CONFIG_LIBOPENJPEG_DECODER 0
++%define CONFIG_LIBOPUS_DECODER 1
++%define CONFIG_LIBRSVG_DECODER 0
++%define CONFIG_LIBSPEEX_DECODER 0
++%define CONFIG_LIBUAVS3D_DECODER 0
++%define CONFIG_LIBVORBIS_DECODER 0
++%define CONFIG_LIBVPX_VP8_DECODER 0
++%define CONFIG_LIBVPX_VP9_DECODER 0
++%define CONFIG_LIBZVBI_TELETEXT_DECODER 0
++%define CONFIG_BINTEXT_DECODER 0
++%define CONFIG_XBIN_DECODER 0
++%define CONFIG_IDF_DECODER 0
++%define CONFIG_LIBAOM_AV1_DECODER 0
++%define CONFIG_AV1_DECODER 0
++%define CONFIG_AV1_CUVID_DECODER 0
++%define CONFIG_AV1_QSV_DECODER 0
++%define CONFIG_LIBOPENH264_DECODER 0
++%define CONFIG_H264_CUVID_DECODER 0
++%define CONFIG_HEVC_CUVID_DECODER 0
++%define CONFIG_HEVC_MEDIACODEC_DECODER 0
++%define CONFIG_MJPEG_CUVID_DECODER 0
++%define CONFIG_MJPEG_QSV_DECODER 0
++%define CONFIG_MPEG1_CUVID_DECODER 0
++%define CONFIG_MPEG2_CUVID_DECODER 0
++%define CONFIG_MPEG4_CUVID_DECODER 0
++%define CONFIG_MPEG4_MEDIACODEC_DECODER 0
++%define CONFIG_VC1_CUVID_DECODER 0
++%define CONFIG_VP8_CUVID_DECODER 0
++%define CONFIG_VP8_MEDIACODEC_DECODER 0
++%define CONFIG_VP8_QSV_DECODER 0
++%define CONFIG_VP9_CUVID_DECODER 0
++%define CONFIG_VP9_MEDIACODEC_DECODER 0
++%define CONFIG_VP9_QSV_DECODER 0
++%define CONFIG_A64MULTI_ENCODER 0
++%define CONFIG_A64MULTI5_ENCODER 0
++%define CONFIG_ALIAS_PIX_ENCODER 0
++%define CONFIG_AMV_ENCODER 0
++%define CONFIG_APNG_ENCODER 0
++%define CONFIG_ASV1_ENCODER 0
++%define CONFIG_ASV2_ENCODER 0
++%define CONFIG_AVRP_ENCODER 0
++%define CONFIG_AVUI_ENCODER 0
++%define CONFIG_AYUV_ENCODER 0
++%define CONFIG_BMP_ENCODER 0
++%define CONFIG_CFHD_ENCODER 0
++%define CONFIG_CINEPAK_ENCODER 0
++%define CONFIG_CLJR_ENCODER 0
++%define CONFIG_COMFORTNOISE_ENCODER 0
++%define CONFIG_DNXHD_ENCODER 0
++%define CONFIG_DPX_ENCODER 0
++%define CONFIG_DVVIDEO_ENCODER 0
++%define CONFIG_EXR_ENCODER 0
++%define CONFIG_FFV1_ENCODER 0
++%define CONFIG_FFVHUFF_ENCODER 0
++%define CONFIG_FITS_ENCODER 0
++%define CONFIG_FLASHSV_ENCODER 0
++%define CONFIG_FLASHSV2_ENCODER 0
++%define CONFIG_FLV_ENCODER 0
++%define CONFIG_GIF_ENCODER 0
++%define CONFIG_H261_ENCODER 0
++%define CONFIG_H263_ENCODER 0
++%define CONFIG_H263P_ENCODER 0
++%define CONFIG_HAP_ENCODER 0
++%define CONFIG_HUFFYUV_ENCODER 0
++%define CONFIG_JPEG2000_ENCODER 0
++%define CONFIG_JPEGLS_ENCODER 0
++%define CONFIG_LJPEG_ENCODER 0
++%define CONFIG_MAGICYUV_ENCODER 0
++%define CONFIG_MJPEG_ENCODER 0
++%define CONFIG_MPEG1VIDEO_ENCODER 0
++%define CONFIG_MPEG2VIDEO_ENCODER 0
++%define CONFIG_MPEG4_ENCODER 0
++%define CONFIG_MSMPEG4V2_ENCODER 0
++%define CONFIG_MSMPEG4V3_ENCODER 0
++%define CONFIG_MSVIDEO1_ENCODER 0
++%define CONFIG_PAM_ENCODER 0
++%define CONFIG_PBM_ENCODER 0
++%define CONFIG_PCX_ENCODER 0
++%define CONFIG_PFM_ENCODER 0
++%define CONFIG_PGM_ENCODER 0
++%define CONFIG_PGMYUV_ENCODER 0
++%define CONFIG_PNG_ENCODER 0
++%define CONFIG_PPM_ENCODER 0
++%define CONFIG_PRORES_ENCODER 0
++%define CONFIG_PRORES_AW_ENCODER 0
++%define CONFIG_PRORES_KS_ENCODER 0
++%define CONFIG_QTRLE_ENCODER 0
++%define CONFIG_R10K_ENCODER 0
++%define CONFIG_R210_ENCODER 0
++%define CONFIG_RAWVIDEO_ENCODER 0
++%define CONFIG_ROQ_ENCODER 0
++%define CONFIG_RPZA_ENCODER 0
++%define CONFIG_RV10_ENCODER 0
++%define CONFIG_RV20_ENCODER 0
++%define CONFIG_S302M_ENCODER 0
++%define CONFIG_SGI_ENCODER 0
++%define CONFIG_SNOW_ENCODER 0
++%define CONFIG_SPEEDHQ_ENCODER 0
++%define CONFIG_SUNRAST_ENCODER 0
++%define CONFIG_SVQ1_ENCODER 0
++%define CONFIG_TARGA_ENCODER 0
++%define CONFIG_TIFF_ENCODER 0
++%define CONFIG_UTVIDEO_ENCODER 0
++%define CONFIG_V210_ENCODER 0
++%define CONFIG_V308_ENCODER 0
++%define CONFIG_V408_ENCODER 0
++%define CONFIG_V410_ENCODER 0
++%define CONFIG_VC2_ENCODER 0
++%define CONFIG_WRAPPED_AVFRAME_ENCODER 0
++%define CONFIG_WMV1_ENCODER 0
++%define CONFIG_WMV2_ENCODER 0
++%define CONFIG_XBM_ENCODER 0
++%define CONFIG_XFACE_ENCODER 0
++%define CONFIG_XWD_ENCODER 0
++%define CONFIG_Y41P_ENCODER 0
++%define CONFIG_YUV4_ENCODER 0
++%define CONFIG_ZLIB_ENCODER 0
++%define CONFIG_ZMBV_ENCODER 0
++%define CONFIG_AAC_ENCODER 0
++%define CONFIG_AC3_ENCODER 0
++%define CONFIG_AC3_FIXED_ENCODER 0
++%define CONFIG_ALAC_ENCODER 0
++%define CONFIG_APTX_ENCODER 0
++%define CONFIG_APTX_HD_ENCODER 0
++%define CONFIG_DCA_ENCODER 0
++%define CONFIG_EAC3_ENCODER 0
++%define CONFIG_FLAC_ENCODER 0
++%define CONFIG_G723_1_ENCODER 0
++%define CONFIG_MLP_ENCODER 0
++%define CONFIG_MP2_ENCODER 0
++%define CONFIG_MP2FIXED_ENCODER 0
++%define CONFIG_NELLYMOSER_ENCODER 0
++%define CONFIG_OPUS_ENCODER 0
++%define CONFIG_RA_144_ENCODER 0
++%define CONFIG_SBC_ENCODER 0
++%define CONFIG_SONIC_ENCODER 0
++%define CONFIG_SONIC_LS_ENCODER 0
++%define CONFIG_TRUEHD_ENCODER 0
++%define CONFIG_TTA_ENCODER 0
++%define CONFIG_VORBIS_ENCODER 0
++%define CONFIG_WAVPACK_ENCODER 0
++%define CONFIG_WMAV1_ENCODER 0
++%define CONFIG_WMAV2_ENCODER 0
++%define CONFIG_PCM_ALAW_ENCODER 0
++%define CONFIG_PCM_DVD_ENCODER 0
++%define CONFIG_PCM_F32BE_ENCODER 0
++%define CONFIG_PCM_F32LE_ENCODER 0
++%define CONFIG_PCM_F64BE_ENCODER 0
++%define CONFIG_PCM_F64LE_ENCODER 0
++%define CONFIG_PCM_MULAW_ENCODER 0
++%define CONFIG_PCM_S8_ENCODER 0
++%define CONFIG_PCM_S8_PLANAR_ENCODER 0
++%define CONFIG_PCM_S16BE_ENCODER 0
++%define CONFIG_PCM_S16BE_PLANAR_ENCODER 0
++%define CONFIG_PCM_S16LE_ENCODER 0
++%define CONFIG_PCM_S16LE_PLANAR_ENCODER 0
++%define CONFIG_PCM_S24BE_ENCODER 0
++%define CONFIG_PCM_S24DAUD_ENCODER 0
++%define CONFIG_PCM_S24LE_ENCODER 0
++%define CONFIG_PCM_S24LE_PLANAR_ENCODER 0
++%define CONFIG_PCM_S32BE_ENCODER 0
++%define CONFIG_PCM_S32LE_ENCODER 0
++%define CONFIG_PCM_S32LE_PLANAR_ENCODER 0
++%define CONFIG_PCM_S64BE_ENCODER 0
++%define CONFIG_PCM_S64LE_ENCODER 0
++%define CONFIG_PCM_U8_ENCODER 0
++%define CONFIG_PCM_U16BE_ENCODER 0
++%define CONFIG_PCM_U16LE_ENCODER 0
++%define CONFIG_PCM_U24BE_ENCODER 0
++%define CONFIG_PCM_U24LE_ENCODER 0
++%define CONFIG_PCM_U32BE_ENCODER 0
++%define CONFIG_PCM_U32LE_ENCODER 0
++%define CONFIG_PCM_VIDC_ENCODER 0
++%define CONFIG_ROQ_DPCM_ENCODER 0
++%define CONFIG_ADPCM_ADX_ENCODER 0
++%define CONFIG_ADPCM_ARGO_ENCODER 0
++%define CONFIG_ADPCM_G722_ENCODER 0
++%define CONFIG_ADPCM_G726_ENCODER 0
++%define CONFIG_ADPCM_G726LE_ENCODER 0
++%define CONFIG_ADPCM_IMA_AMV_ENCODER 0
++%define CONFIG_ADPCM_IMA_ALP_ENCODER 0
++%define CONFIG_ADPCM_IMA_APM_ENCODER 0
++%define CONFIG_ADPCM_IMA_QT_ENCODER 0
++%define CONFIG_ADPCM_IMA_SSI_ENCODER 0
++%define CONFIG_ADPCM_IMA_WAV_ENCODER 0
++%define CONFIG_ADPCM_IMA_WS_ENCODER 0
++%define CONFIG_ADPCM_MS_ENCODER 0
++%define CONFIG_ADPCM_SWF_ENCODER 0
++%define CONFIG_ADPCM_YAMAHA_ENCODER 0
++%define CONFIG_SSA_ENCODER 0
++%define CONFIG_ASS_ENCODER 0
++%define CONFIG_DVBSUB_ENCODER 0
++%define CONFIG_DVDSUB_ENCODER 0
++%define CONFIG_MOVTEXT_ENCODER 0
++%define CONFIG_SRT_ENCODER 0
++%define CONFIG_SUBRIP_ENCODER 0
++%define CONFIG_TEXT_ENCODER 0
++%define CONFIG_TTML_ENCODER 0
++%define CONFIG_WEBVTT_ENCODER 0
++%define CONFIG_XSUB_ENCODER 0
++%define CONFIG_AAC_AT_ENCODER 0
++%define CONFIG_ALAC_AT_ENCODER 0
++%define CONFIG_ILBC_AT_ENCODER 0
++%define CONFIG_PCM_ALAW_AT_ENCODER 0
++%define CONFIG_PCM_MULAW_AT_ENCODER 0
++%define CONFIG_LIBAOM_AV1_ENCODER 0
++%define CONFIG_LIBCODEC2_ENCODER 0
++%define CONFIG_LIBFDK_AAC_ENCODER 0
++%define CONFIG_LIBGSM_ENCODER 0
++%define CONFIG_LIBGSM_MS_ENCODER 0
++%define CONFIG_LIBILBC_ENCODER 0
++%define CONFIG_LIBMP3LAME_ENCODER 0
++%define CONFIG_LIBOPENCORE_AMRNB_ENCODER 0
++%define CONFIG_LIBOPENJPEG_ENCODER 0
++%define CONFIG_LIBOPUS_ENCODER 0
++%define CONFIG_LIBRAV1E_ENCODER 0
++%define CONFIG_LIBSHINE_ENCODER 0
++%define CONFIG_LIBSPEEX_ENCODER 0
++%define CONFIG_LIBSVTAV1_ENCODER 0
++%define CONFIG_LIBTHEORA_ENCODER 0
++%define CONFIG_LIBTWOLAME_ENCODER 0
++%define CONFIG_LIBVO_AMRWBENC_ENCODER 0
++%define CONFIG_LIBVORBIS_ENCODER 0
++%define CONFIG_LIBVPX_VP8_ENCODER 0
++%define CONFIG_LIBVPX_VP9_ENCODER 0
++%define CONFIG_LIBWEBP_ANIM_ENCODER 0
++%define CONFIG_LIBWEBP_ENCODER 0
++%define CONFIG_LIBX262_ENCODER 0
++%define CONFIG_LIBX264_ENCODER 0
++%define CONFIG_LIBX264_ENCODER 0
++%define CONFIG_LIBX264RGB_ENCODER 0
++%define CONFIG_LIBX265_ENCODER 0
++%define CONFIG_LIBXAVS_ENCODER 0
++%define CONFIG_LIBXAVS2_ENCODER 0
++%define CONFIG_LIBXVID_ENCODER 0
++%define CONFIG_AAC_MF_ENCODER 0
++%define CONFIG_AC3_MF_ENCODER 0
++%define CONFIG_H263_V4L2M2M_ENCODER 0
++%define CONFIG_LIBOPENH264_ENCODER 0
++%define CONFIG_H264_AMF_ENCODER 0
++%define CONFIG_H264_MF_ENCODER 0
++%define CONFIG_H264_NVENC_ENCODER 0
++%define CONFIG_H264_OMX_ENCODER 0
++%define CONFIG_H264_QSV_ENCODER 0
++%define CONFIG_H264_V4L2M2M_ENCODER 0
++%define CONFIG_H264_VAAPI_ENCODER 0
++%define CONFIG_H264_VIDEOTOOLBOX_ENCODER 0
++%define CONFIG_HEVC_AMF_ENCODER 0
++%define CONFIG_HEVC_MF_ENCODER 0
++%define CONFIG_HEVC_NVENC_ENCODER 0
++%define CONFIG_HEVC_QSV_ENCODER 0
++%define CONFIG_HEVC_V4L2M2M_ENCODER 0
++%define CONFIG_HEVC_VAAPI_ENCODER 0
++%define CONFIG_HEVC_VIDEOTOOLBOX_ENCODER 0
++%define CONFIG_LIBKVAZAAR_ENCODER 0
++%define CONFIG_MJPEG_QSV_ENCODER 0
++%define CONFIG_MJPEG_VAAPI_ENCODER 0
++%define CONFIG_MP3_MF_ENCODER 0
++%define CONFIG_MPEG2_QSV_ENCODER 0
++%define CONFIG_MPEG2_VAAPI_ENCODER 0
++%define CONFIG_MPEG4_OMX_ENCODER 0
++%define CONFIG_MPEG4_V4L2M2M_ENCODER 0
++%define CONFIG_VP8_V4L2M2M_ENCODER 0
++%define CONFIG_VP8_VAAPI_ENCODER 0
++%define CONFIG_VP9_VAAPI_ENCODER 0
++%define CONFIG_VP9_QSV_ENCODER 0
++%define CONFIG_AV1_D3D11VA_HWACCEL 0
++%define CONFIG_AV1_D3D11VA2_HWACCEL 0
++%define CONFIG_AV1_DXVA2_HWACCEL 0
++%define CONFIG_AV1_NVDEC_HWACCEL 0
++%define CONFIG_AV1_VAAPI_HWACCEL 0
++%define CONFIG_H263_VAAPI_HWACCEL 0
++%define CONFIG_H263_VIDEOTOOLBOX_HWACCEL 0
++%define CONFIG_H264_D3D11VA_HWACCEL 0
++%define CONFIG_H264_D3D11VA2_HWACCEL 0
++%define CONFIG_H264_DXVA2_HWACCEL 0
++%define CONFIG_H264_NVDEC_HWACCEL 0
++%define CONFIG_H264_VAAPI_HWACCEL 0
++%define CONFIG_H264_VDPAU_HWACCEL 0
++%define CONFIG_H264_VIDEOTOOLBOX_HWACCEL 0
++%define CONFIG_HEVC_D3D11VA_HWACCEL 0
++%define CONFIG_HEVC_D3D11VA2_HWACCEL 0
++%define CONFIG_HEVC_DXVA2_HWACCEL 0
++%define CONFIG_HEVC_NVDEC_HWACCEL 0
++%define CONFIG_HEVC_VAAPI_HWACCEL 0
++%define CONFIG_HEVC_VDPAU_HWACCEL 0
++%define CONFIG_HEVC_VIDEOTOOLBOX_HWACCEL 0
++%define CONFIG_MJPEG_NVDEC_HWACCEL 0
++%define CONFIG_MJPEG_VAAPI_HWACCEL 0
++%define CONFIG_MPEG1_NVDEC_HWACCEL 0
++%define CONFIG_MPEG1_VDPAU_HWACCEL 0
++%define CONFIG_MPEG1_VIDEOTOOLBOX_HWACCEL 0
++%define CONFIG_MPEG1_XVMC_HWACCEL 0
++%define CONFIG_MPEG2_D3D11VA_HWACCEL 0
++%define CONFIG_MPEG2_D3D11VA2_HWACCEL 0
++%define CONFIG_MPEG2_NVDEC_HWACCEL 0
++%define CONFIG_MPEG2_DXVA2_HWACCEL 0
++%define CONFIG_MPEG2_VAAPI_HWACCEL 0
++%define CONFIG_MPEG2_VDPAU_HWACCEL 0
++%define CONFIG_MPEG2_VIDEOTOOLBOX_HWACCEL 0
++%define CONFIG_MPEG2_XVMC_HWACCEL 0
++%define CONFIG_MPEG4_NVDEC_HWACCEL 0
++%define CONFIG_MPEG4_VAAPI_HWACCEL 0
++%define CONFIG_MPEG4_VDPAU_HWACCEL 0
++%define CONFIG_MPEG4_VIDEOTOOLBOX_HWACCEL 0
++%define CONFIG_VC1_D3D11VA_HWACCEL 0
++%define CONFIG_VC1_D3D11VA2_HWACCEL 0
++%define CONFIG_VC1_DXVA2_HWACCEL 0
++%define CONFIG_VC1_NVDEC_HWACCEL 0
++%define CONFIG_VC1_VAAPI_HWACCEL 0
++%define CONFIG_VC1_VDPAU_HWACCEL 0
++%define CONFIG_VP8_NVDEC_HWACCEL 0
++%define CONFIG_VP8_VAAPI_HWACCEL 0
++%define CONFIG_VP9_D3D11VA_HWACCEL 0
++%define CONFIG_VP9_D3D11VA2_HWACCEL 0
++%define CONFIG_VP9_DXVA2_HWACCEL 0
++%define CONFIG_VP9_NVDEC_HWACCEL 0
++%define CONFIG_VP9_VAAPI_HWACCEL 0
++%define CONFIG_VP9_VDPAU_HWACCEL 0
++%define CONFIG_WMV3_D3D11VA_HWACCEL 0
++%define CONFIG_WMV3_D3D11VA2_HWACCEL 0
++%define CONFIG_WMV3_DXVA2_HWACCEL 0
++%define CONFIG_WMV3_NVDEC_HWACCEL 0
++%define CONFIG_WMV3_VAAPI_HWACCEL 0
++%define CONFIG_WMV3_VDPAU_HWACCEL 0
++%define CONFIG_AAC_PARSER 1
++%define CONFIG_AAC_LATM_PARSER 0
++%define CONFIG_AC3_PARSER 0
++%define CONFIG_ADX_PARSER 0
++%define CONFIG_AV1_PARSER 0
++%define CONFIG_AVS2_PARSER 0
++%define CONFIG_AVS3_PARSER 0
++%define CONFIG_BMP_PARSER 0
++%define CONFIG_CAVSVIDEO_PARSER 0
++%define CONFIG_COOK_PARSER 0
++%define CONFIG_CRI_PARSER 0
++%define CONFIG_DCA_PARSER 0
++%define CONFIG_DIRAC_PARSER 0
++%define CONFIG_DNXHD_PARSER 0
++%define CONFIG_DOLBY_E_PARSER 0
++%define CONFIG_DPX_PARSER 0
++%define CONFIG_DVAUDIO_PARSER 0
++%define CONFIG_DVBSUB_PARSER 0
++%define CONFIG_DVDSUB_PARSER 0
++%define CONFIG_DVD_NAV_PARSER 0
++%define CONFIG_FLAC_PARSER 1
++%define CONFIG_G723_1_PARSER 0
++%define CONFIG_G729_PARSER 0
++%define CONFIG_GIF_PARSER 0
++%define CONFIG_GSM_PARSER 0
++%define CONFIG_H261_PARSER 0
++%define CONFIG_H263_PARSER 0
++%define CONFIG_H264_PARSER 1
++%define CONFIG_HEVC_PARSER 0
++%define CONFIG_IPU_PARSER 0
++%define CONFIG_JPEG2000_PARSER 0
++%define CONFIG_MJPEG_PARSER 0
++%define CONFIG_MLP_PARSER 0
++%define CONFIG_MPEG4VIDEO_PARSER 0
++%define CONFIG_MPEGAUDIO_PARSER 1
++%define CONFIG_MPEGVIDEO_PARSER 0
++%define CONFIG_OPUS_PARSER 1
++%define CONFIG_PNG_PARSER 0
++%define CONFIG_PNM_PARSER 0
++%define CONFIG_RV30_PARSER 0
++%define CONFIG_RV40_PARSER 0
++%define CONFIG_SBC_PARSER 0
++%define CONFIG_SIPR_PARSER 0
++%define CONFIG_TAK_PARSER 0
++%define CONFIG_VC1_PARSER 0
++%define CONFIG_VORBIS_PARSER 1
++%define CONFIG_VP3_PARSER 1
++%define CONFIG_VP8_PARSER 1
++%define CONFIG_VP9_PARSER 1
++%define CONFIG_WEBP_PARSER 0
++%define CONFIG_XBM_PARSER 0
++%define CONFIG_XMA_PARSER 0
++%define CONFIG_ALSA_INDEV 0
++%define CONFIG_ANDROID_CAMERA_INDEV 0
++%define CONFIG_AVFOUNDATION_INDEV 0
++%define CONFIG_BKTR_INDEV 0
++%define CONFIG_DECKLINK_INDEV 0
++%define CONFIG_DSHOW_INDEV 0
++%define CONFIG_FBDEV_INDEV 0
++%define CONFIG_GDIGRAB_INDEV 0
++%define CONFIG_IEC61883_INDEV 0
++%define CONFIG_JACK_INDEV 0
++%define CONFIG_KMSGRAB_INDEV 0
++%define CONFIG_LAVFI_INDEV 0
++%define CONFIG_OPENAL_INDEV 0
++%define CONFIG_OSS_INDEV 0
++%define CONFIG_PULSE_INDEV 0
++%define CONFIG_SNDIO_INDEV 0
++%define CONFIG_V4L2_INDEV 0
++%define CONFIG_VFWCAP_INDEV 0
++%define CONFIG_XCBGRAB_INDEV 0
++%define CONFIG_LIBCDIO_INDEV 0
++%define CONFIG_LIBDC1394_INDEV 0
++%define CONFIG_ALSA_OUTDEV 0
++%define CONFIG_AUDIOTOOLBOX_OUTDEV 0
++%define CONFIG_CACA_OUTDEV 0
++%define CONFIG_DECKLINK_OUTDEV 0
++%define CONFIG_FBDEV_OUTDEV 0
++%define CONFIG_OPENGL_OUTDEV 0
++%define CONFIG_OSS_OUTDEV 0
++%define CONFIG_PULSE_OUTDEV 0
++%define CONFIG_SDL2_OUTDEV 0
++%define CONFIG_SNDIO_OUTDEV 0
++%define CONFIG_V4L2_OUTDEV 0
++%define CONFIG_XV_OUTDEV 0
++%define CONFIG_ABENCH_FILTER 0
++%define CONFIG_ACOMPRESSOR_FILTER 0
++%define CONFIG_ACONTRAST_FILTER 0
++%define CONFIG_ACOPY_FILTER 0
++%define CONFIG_ACUE_FILTER 0
++%define CONFIG_ACROSSFADE_FILTER 0
++%define CONFIG_ACROSSOVER_FILTER 0
++%define CONFIG_ACRUSHER_FILTER 0
++%define CONFIG_ADECLICK_FILTER 0
++%define CONFIG_ADECLIP_FILTER 0
++%define CONFIG_ADELAY_FILTER 0
++%define CONFIG_ADENORM_FILTER 0
++%define CONFIG_ADERIVATIVE_FILTER 0
++%define CONFIG_AECHO_FILTER 0
++%define CONFIG_AEMPHASIS_FILTER 0
++%define CONFIG_AEVAL_FILTER 0
++%define CONFIG_AEXCITER_FILTER 0
++%define CONFIG_AFADE_FILTER 0
++%define CONFIG_AFFTDN_FILTER 0
++%define CONFIG_AFFTFILT_FILTER 0
++%define CONFIG_AFIR_FILTER 0
++%define CONFIG_AFORMAT_FILTER 0
++%define CONFIG_AFREQSHIFT_FILTER 0
++%define CONFIG_AGATE_FILTER 0
++%define CONFIG_AIIR_FILTER 0
++%define CONFIG_AINTEGRAL_FILTER 0
++%define CONFIG_AINTERLEAVE_FILTER 0
++%define CONFIG_ALIMITER_FILTER 0
++%define CONFIG_ALLPASS_FILTER 0
++%define CONFIG_ALOOP_FILTER 0
++%define CONFIG_AMERGE_FILTER 0
++%define CONFIG_AMETADATA_FILTER 0
++%define CONFIG_AMIX_FILTER 0
++%define CONFIG_AMULTIPLY_FILTER 0
++%define CONFIG_ANEQUALIZER_FILTER 0
++%define CONFIG_ANLMDN_FILTER 0
++%define CONFIG_ANLMS_FILTER 0
++%define CONFIG_ANULL_FILTER 0
++%define CONFIG_APAD_FILTER 0
++%define CONFIG_APERMS_FILTER 0
++%define CONFIG_APHASER_FILTER 0
++%define CONFIG_APHASESHIFT_FILTER 0
++%define CONFIG_APULSATOR_FILTER 0
++%define CONFIG_AREALTIME_FILTER 0
++%define CONFIG_ARESAMPLE_FILTER 0
++%define CONFIG_AREVERSE_FILTER 0
++%define CONFIG_ARNNDN_FILTER 0
++%define CONFIG_ASELECT_FILTER 0
++%define CONFIG_ASENDCMD_FILTER 0
++%define CONFIG_ASETNSAMPLES_FILTER 0
++%define CONFIG_ASETPTS_FILTER 0
++%define CONFIG_ASETRATE_FILTER 0
++%define CONFIG_ASETTB_FILTER 0
++%define CONFIG_ASHOWINFO_FILTER 0
++%define CONFIG_ASIDEDATA_FILTER 0
++%define CONFIG_ASOFTCLIP_FILTER 0
++%define CONFIG_ASPLIT_FILTER 0
++%define CONFIG_ASR_FILTER 0
++%define CONFIG_ASTATS_FILTER 0
++%define CONFIG_ASTREAMSELECT_FILTER 0
++%define CONFIG_ASUBBOOST_FILTER 0
++%define CONFIG_ASUBCUT_FILTER 0
++%define CONFIG_ASUPERCUT_FILTER 0
++%define CONFIG_ASUPERPASS_FILTER 0
++%define CONFIG_ASUPERSTOP_FILTER 0
++%define CONFIG_ATEMPO_FILTER 0
++%define CONFIG_ATRIM_FILTER 0
++%define CONFIG_AXCORRELATE_FILTER 0
++%define CONFIG_AZMQ_FILTER 0
++%define CONFIG_BANDPASS_FILTER 0
++%define CONFIG_BANDREJECT_FILTER 0
++%define CONFIG_BASS_FILTER 0
++%define CONFIG_BIQUAD_FILTER 0
++%define CONFIG_BS2B_FILTER 0
++%define CONFIG_CHROMABER_VULKAN_FILTER 0
++%define CONFIG_CHANNELMAP_FILTER 0
++%define CONFIG_CHANNELSPLIT_FILTER 0
++%define CONFIG_CHORUS_FILTER 0
++%define CONFIG_COMPAND_FILTER 0
++%define CONFIG_COMPENSATIONDELAY_FILTER 0
++%define CONFIG_CROSSFEED_FILTER 0
++%define CONFIG_CRYSTALIZER_FILTER 0
++%define CONFIG_DCSHIFT_FILTER 0
++%define CONFIG_DEESSER_FILTER 0
++%define CONFIG_DRMETER_FILTER 0
++%define CONFIG_DYNAUDNORM_FILTER 0
++%define CONFIG_EARWAX_FILTER 0
++%define CONFIG_EBUR128_FILTER 0
++%define CONFIG_EQUALIZER_FILTER 0
++%define CONFIG_EXTRASTEREO_FILTER 0
++%define CONFIG_FIREQUALIZER_FILTER 0
++%define CONFIG_FLANGER_FILTER 0
++%define CONFIG_HAAS_FILTER 0
++%define CONFIG_HDCD_FILTER 0
++%define CONFIG_HEADPHONE_FILTER 0
++%define CONFIG_HIGHPASS_FILTER 0
++%define CONFIG_HIGHSHELF_FILTER 0
++%define CONFIG_JOIN_FILTER 0
++%define CONFIG_LADSPA_FILTER 0
++%define CONFIG_LOUDNORM_FILTER 0
++%define CONFIG_LOWPASS_FILTER 0
++%define CONFIG_LOWSHELF_FILTER 0
++%define CONFIG_LV2_FILTER 0
++%define CONFIG_MCOMPAND_FILTER 0
++%define CONFIG_PAN_FILTER 0
++%define CONFIG_REPLAYGAIN_FILTER 0
++%define CONFIG_RUBBERBAND_FILTER 0
++%define CONFIG_SIDECHAINCOMPRESS_FILTER 0
++%define CONFIG_SIDECHAINGATE_FILTER 0
++%define CONFIG_SILENCEDETECT_FILTER 0
++%define CONFIG_SILENCEREMOVE_FILTER 0
++%define CONFIG_SOFALIZER_FILTER 0
++%define CONFIG_SPEECHNORM_FILTER 0
++%define CONFIG_STEREOTOOLS_FILTER 0
++%define CONFIG_STEREOWIDEN_FILTER 0
++%define CONFIG_SUPEREQUALIZER_FILTER 0
++%define CONFIG_SURROUND_FILTER 0
++%define CONFIG_TREBLE_FILTER 0
++%define CONFIG_TREMOLO_FILTER 0
++%define CONFIG_VIBRATO_FILTER 0
++%define CONFIG_VOLUME_FILTER 0
++%define CONFIG_VOLUMEDETECT_FILTER 0
++%define CONFIG_AEVALSRC_FILTER 0
++%define CONFIG_AFIRSRC_FILTER 0
++%define CONFIG_ANOISESRC_FILTER 0
++%define CONFIG_ANULLSRC_FILTER 0
++%define CONFIG_FLITE_FILTER 0
++%define CONFIG_HILBERT_FILTER 0
++%define CONFIG_SINC_FILTER 0
++%define CONFIG_SINE_FILTER 0
++%define CONFIG_ANULLSINK_FILTER 0
++%define CONFIG_ADDROI_FILTER 0
++%define CONFIG_ALPHAEXTRACT_FILTER 0
++%define CONFIG_ALPHAMERGE_FILTER 0
++%define CONFIG_AMPLIFY_FILTER 0
++%define CONFIG_ASS_FILTER 0
++%define CONFIG_ATADENOISE_FILTER 0
++%define CONFIG_AVGBLUR_FILTER 0
++%define CONFIG_AVGBLUR_OPENCL_FILTER 0
++%define CONFIG_AVGBLUR_VULKAN_FILTER 0
++%define CONFIG_BBOX_FILTER 0
++%define CONFIG_BENCH_FILTER 0
++%define CONFIG_BILATERAL_FILTER 0
++%define CONFIG_BITPLANENOISE_FILTER 0
++%define CONFIG_BLACKDETECT_FILTER 0
++%define CONFIG_BLACKFRAME_FILTER 0
++%define CONFIG_BLEND_FILTER 0
++%define CONFIG_BM3D_FILTER 0
++%define CONFIG_BOXBLUR_FILTER 0
++%define CONFIG_BOXBLUR_OPENCL_FILTER 0
++%define CONFIG_BWDIF_FILTER 0
++%define CONFIG_CAS_FILTER 0
++%define CONFIG_CHROMAHOLD_FILTER 0
++%define CONFIG_CHROMAKEY_FILTER 0
++%define CONFIG_CHROMANR_FILTER 0
++%define CONFIG_CHROMASHIFT_FILTER 0
++%define CONFIG_CIESCOPE_FILTER 0
++%define CONFIG_CODECVIEW_FILTER 0
++%define CONFIG_COLORBALANCE_FILTER 0
++%define CONFIG_COLORCHANNELMIXER_FILTER 0
++%define CONFIG_COLORCONTRAST_FILTER 0
++%define CONFIG_COLORCORRECT_FILTER 0
++%define CONFIG_COLORIZE_FILTER 0
++%define CONFIG_COLORKEY_FILTER 0
++%define CONFIG_COLORKEY_OPENCL_FILTER 0
++%define CONFIG_COLORHOLD_FILTER 0
++%define CONFIG_COLORLEVELS_FILTER 0
++%define CONFIG_COLORMATRIX_FILTER 0
++%define CONFIG_COLORSPACE_FILTER 0
++%define CONFIG_COLORTEMPERATURE_FILTER 0
++%define CONFIG_CONVOLUTION_FILTER 0
++%define CONFIG_CONVOLUTION_OPENCL_FILTER 0
++%define CONFIG_CONVOLVE_FILTER 0
++%define CONFIG_COPY_FILTER 0
++%define CONFIG_COREIMAGE_FILTER 0
++%define CONFIG_COVER_RECT_FILTER 0
++%define CONFIG_CROP_FILTER 0
++%define CONFIG_CROPDETECT_FILTER 0
++%define CONFIG_CUE_FILTER 0
++%define CONFIG_CURVES_FILTER 0
++%define CONFIG_DATASCOPE_FILTER 0
++%define CONFIG_DBLUR_FILTER 0
++%define CONFIG_DCTDNOIZ_FILTER 0
++%define CONFIG_DEBAND_FILTER 0
++%define CONFIG_DEBLOCK_FILTER 0
++%define CONFIG_DECIMATE_FILTER 0
++%define CONFIG_DECONVOLVE_FILTER 0
++%define CONFIG_DEDOT_FILTER 0
++%define CONFIG_DEFLATE_FILTER 0
++%define CONFIG_DEFLICKER_FILTER 0
++%define CONFIG_DEINTERLACE_QSV_FILTER 0
++%define CONFIG_DEINTERLACE_VAAPI_FILTER 0
++%define CONFIG_DEJUDDER_FILTER 0
++%define CONFIG_DELOGO_FILTER 0
++%define CONFIG_DENOISE_VAAPI_FILTER 0
++%define CONFIG_DERAIN_FILTER 0
++%define CONFIG_DESHAKE_FILTER 0
++%define CONFIG_DESHAKE_OPENCL_FILTER 0
++%define CONFIG_DESPILL_FILTER 0
++%define CONFIG_DETELECINE_FILTER 0
++%define CONFIG_DILATION_FILTER 0
++%define CONFIG_DILATION_OPENCL_FILTER 0
++%define CONFIG_DISPLACE_FILTER 0
++%define CONFIG_DNN_CLASSIFY_FILTER 0
++%define CONFIG_DNN_DETECT_FILTER 0
++%define CONFIG_DNN_PROCESSING_FILTER 0
++%define CONFIG_DOUBLEWEAVE_FILTER 0
++%define CONFIG_DRAWBOX_FILTER 0
++%define CONFIG_DRAWGRAPH_FILTER 0
++%define CONFIG_DRAWGRID_FILTER 0
++%define CONFIG_DRAWTEXT_FILTER 0
++%define CONFIG_EDGEDETECT_FILTER 0
++%define CONFIG_ELBG_FILTER 0
++%define CONFIG_ENTROPY_FILTER 0
++%define CONFIG_EPX_FILTER 0
++%define CONFIG_EQ_FILTER 0
++%define CONFIG_EROSION_FILTER 0
++%define CONFIG_EROSION_OPENCL_FILTER 0
++%define CONFIG_ESTDIF_FILTER 0
++%define CONFIG_EXPOSURE_FILTER 0
++%define CONFIG_EXTRACTPLANES_FILTER 0
++%define CONFIG_FADE_FILTER 0
++%define CONFIG_FFTDNOIZ_FILTER 0
++%define CONFIG_FFTFILT_FILTER 0
++%define CONFIG_FIELD_FILTER 0
++%define CONFIG_FIELDHINT_FILTER 0
++%define CONFIG_FIELDMATCH_FILTER 0
++%define CONFIG_FIELDORDER_FILTER 0
++%define CONFIG_FILLBORDERS_FILTER 0
++%define CONFIG_FIND_RECT_FILTER 0
++%define CONFIG_FLOODFILL_FILTER 0
++%define CONFIG_FORMAT_FILTER 0
++%define CONFIG_FPS_FILTER 0
++%define CONFIG_FRAMEPACK_FILTER 0
++%define CONFIG_FRAMERATE_FILTER 0
++%define CONFIG_FRAMESTEP_FILTER 0
++%define CONFIG_FREEZEDETECT_FILTER 0
++%define CONFIG_FREEZEFRAMES_FILTER 0
++%define CONFIG_FREI0R_FILTER 0
++%define CONFIG_FSPP_FILTER 0
++%define CONFIG_GBLUR_FILTER 0
++%define CONFIG_GEQ_FILTER 0
++%define CONFIG_GRADFUN_FILTER 0
++%define CONFIG_GRAPHMONITOR_FILTER 0
++%define CONFIG_GREYEDGE_FILTER 0
++%define CONFIG_HALDCLUT_FILTER 0
++%define CONFIG_HFLIP_FILTER 0
++%define CONFIG_HISTEQ_FILTER 0
++%define CONFIG_HISTOGRAM_FILTER 0
++%define CONFIG_HQDN3D_FILTER 0
++%define CONFIG_HQX_FILTER 0
++%define CONFIG_HSTACK_FILTER 0
++%define CONFIG_HUE_FILTER 0
++%define CONFIG_HWDOWNLOAD_FILTER 0
++%define CONFIG_HWMAP_FILTER 0
++%define CONFIG_HWUPLOAD_FILTER 0
++%define CONFIG_HWUPLOAD_CUDA_FILTER 0
++%define CONFIG_HYSTERESIS_FILTER 0
++%define CONFIG_IDENTITY_FILTER 0
++%define CONFIG_IDET_FILTER 0
++%define CONFIG_IL_FILTER 0
++%define CONFIG_INFLATE_FILTER 0
++%define CONFIG_INTERLACE_FILTER 0
++%define CONFIG_INTERLEAVE_FILTER 0
++%define CONFIG_KERNDEINT_FILTER 0
++%define CONFIG_KIRSCH_FILTER 0
++%define CONFIG_LAGFUN_FILTER 0
++%define CONFIG_LENSCORRECTION_FILTER 0
++%define CONFIG_LENSFUN_FILTER 0
++%define CONFIG_LIBVMAF_FILTER 0
++%define CONFIG_LIMITER_FILTER 0
++%define CONFIG_LOOP_FILTER 0
++%define CONFIG_LUMAKEY_FILTER 0
++%define CONFIG_LUT_FILTER 0
++%define CONFIG_LUT1D_FILTER 0
++%define CONFIG_LUT2_FILTER 0
++%define CONFIG_LUT3D_FILTER 0
++%define CONFIG_LUTRGB_FILTER 0
++%define CONFIG_LUTYUV_FILTER 0
++%define CONFIG_MASKEDCLAMP_FILTER 0
++%define CONFIG_MASKEDMAX_FILTER 0
++%define CONFIG_MASKEDMERGE_FILTER 0
++%define CONFIG_MASKEDMIN_FILTER 0
++%define CONFIG_MASKEDTHRESHOLD_FILTER 0
++%define CONFIG_MASKFUN_FILTER 0
++%define CONFIG_MCDEINT_FILTER 0
++%define CONFIG_MEDIAN_FILTER 0
++%define CONFIG_MERGEPLANES_FILTER 0
++%define CONFIG_MESTIMATE_FILTER 0
++%define CONFIG_METADATA_FILTER 0
++%define CONFIG_MIDEQUALIZER_FILTER 0
++%define CONFIG_MINTERPOLATE_FILTER 0
++%define CONFIG_MIX_FILTER 0
++%define CONFIG_MONOCHROME_FILTER 0
++%define CONFIG_MPDECIMATE_FILTER 0
++%define CONFIG_MSAD_FILTER 0
++%define CONFIG_NEGATE_FILTER 0
++%define CONFIG_NLMEANS_FILTER 0
++%define CONFIG_NLMEANS_OPENCL_FILTER 0
++%define CONFIG_NNEDI_FILTER 0
++%define CONFIG_NOFORMAT_FILTER 0
++%define CONFIG_NOISE_FILTER 0
++%define CONFIG_NORMALIZE_FILTER 0
++%define CONFIG_NULL_FILTER 0
++%define CONFIG_OCR_FILTER 0
++%define CONFIG_OCV_FILTER 0
++%define CONFIG_OSCILLOSCOPE_FILTER 0
++%define CONFIG_OVERLAY_FILTER 0
++%define CONFIG_OVERLAY_OPENCL_FILTER 0
++%define CONFIG_OVERLAY_QSV_FILTER 0
++%define CONFIG_OVERLAY_VULKAN_FILTER 0
++%define CONFIG_OVERLAY_CUDA_FILTER 0
++%define CONFIG_OWDENOISE_FILTER 0
++%define CONFIG_PAD_FILTER 0
++%define CONFIG_PAD_OPENCL_FILTER 0
++%define CONFIG_PALETTEGEN_FILTER 0
++%define CONFIG_PALETTEUSE_FILTER 0
++%define CONFIG_PERMS_FILTER 0
++%define CONFIG_PERSPECTIVE_FILTER 0
++%define CONFIG_PHASE_FILTER 0
++%define CONFIG_PHOTOSENSITIVITY_FILTER 0
++%define CONFIG_PIXDESCTEST_FILTER 0
++%define CONFIG_PIXSCOPE_FILTER 0
++%define CONFIG_PP_FILTER 0
++%define CONFIG_PP7_FILTER 0
++%define CONFIG_PREMULTIPLY_FILTER 0
++%define CONFIG_PREWITT_FILTER 0
++%define CONFIG_PREWITT_OPENCL_FILTER 0
++%define CONFIG_PROCAMP_VAAPI_FILTER 0
++%define CONFIG_PROGRAM_OPENCL_FILTER 0
++%define CONFIG_PSEUDOCOLOR_FILTER 0
++%define CONFIG_PSNR_FILTER 0
++%define CONFIG_PULLUP_FILTER 0
++%define CONFIG_QP_FILTER 0
++%define CONFIG_RANDOM_FILTER 0
++%define CONFIG_READEIA608_FILTER 0
++%define CONFIG_READVITC_FILTER 0
++%define CONFIG_REALTIME_FILTER 0
++%define CONFIG_REMAP_FILTER 0
++%define CONFIG_REMOVEGRAIN_FILTER 0
++%define CONFIG_REMOVELOGO_FILTER 0
++%define CONFIG_REPEATFIELDS_FILTER 0
++%define CONFIG_REVERSE_FILTER 0
++%define CONFIG_RGBASHIFT_FILTER 0
++%define CONFIG_ROBERTS_FILTER 0
++%define CONFIG_ROBERTS_OPENCL_FILTER 0
++%define CONFIG_ROTATE_FILTER 0
++%define CONFIG_SAB_FILTER 0
++%define CONFIG_SCALE_FILTER 0
++%define CONFIG_SCALE_CUDA_FILTER 0
++%define CONFIG_SCALE_NPP_FILTER 0
++%define CONFIG_SCALE_QSV_FILTER 0
++%define CONFIG_SCALE_VAAPI_FILTER 0
++%define CONFIG_SCALE_VULKAN_FILTER 0
++%define CONFIG_SCALE2REF_FILTER 0
++%define CONFIG_SCDET_FILTER 0
++%define CONFIG_SCROLL_FILTER 0
++%define CONFIG_SELECT_FILTER 0
++%define CONFIG_SELECTIVECOLOR_FILTER 0
++%define CONFIG_SENDCMD_FILTER 0
++%define CONFIG_SEPARATEFIELDS_FILTER 0
++%define CONFIG_SETDAR_FILTER 0
++%define CONFIG_SETFIELD_FILTER 0
++%define CONFIG_SETPARAMS_FILTER 0
++%define CONFIG_SETPTS_FILTER 0
++%define CONFIG_SETRANGE_FILTER 0
++%define CONFIG_SETSAR_FILTER 0
++%define CONFIG_SETTB_FILTER 0
++%define CONFIG_SHARPNESS_VAAPI_FILTER 0
++%define CONFIG_SHEAR_FILTER 0
++%define CONFIG_SHOWINFO_FILTER 0
++%define CONFIG_SHOWPALETTE_FILTER 0
++%define CONFIG_SHUFFLEFRAMES_FILTER 0
++%define CONFIG_SHUFFLEPIXELS_FILTER 0
++%define CONFIG_SHUFFLEPLANES_FILTER 0
++%define CONFIG_SIDEDATA_FILTER 0
++%define CONFIG_SIGNALSTATS_FILTER 0
++%define CONFIG_SIGNATURE_FILTER 0
++%define CONFIG_SMARTBLUR_FILTER 0
++%define CONFIG_SOBEL_FILTER 0
++%define CONFIG_SOBEL_OPENCL_FILTER 0
++%define CONFIG_SPLIT_FILTER 0
++%define CONFIG_SPP_FILTER 0
++%define CONFIG_SR_FILTER 0
++%define CONFIG_SSIM_FILTER 0
++%define CONFIG_STEREO3D_FILTER 0
++%define CONFIG_STREAMSELECT_FILTER 0
++%define CONFIG_SUBTITLES_FILTER 0
++%define CONFIG_SUPER2XSAI_FILTER 0
++%define CONFIG_SWAPRECT_FILTER 0
++%define CONFIG_SWAPUV_FILTER 0
++%define CONFIG_TBLEND_FILTER 0
++%define CONFIG_TELECINE_FILTER 0
++%define CONFIG_THISTOGRAM_FILTER 0
++%define CONFIG_THRESHOLD_FILTER 0
++%define CONFIG_THUMBNAIL_FILTER 0
++%define CONFIG_THUMBNAIL_CUDA_FILTER 0
++%define CONFIG_TILE_FILTER 0
++%define CONFIG_TINTERLACE_FILTER 0
++%define CONFIG_TLUT2_FILTER 0
++%define CONFIG_TMEDIAN_FILTER 0
++%define CONFIG_TMIDEQUALIZER_FILTER 0
++%define CONFIG_TMIX_FILTER 0
++%define CONFIG_TONEMAP_FILTER 0
++%define CONFIG_TONEMAP_OPENCL_FILTER 0
++%define CONFIG_TONEMAP_VAAPI_FILTER 0
++%define CONFIG_TPAD_FILTER 0
++%define CONFIG_TRANSPOSE_FILTER 0
++%define CONFIG_TRANSPOSE_NPP_FILTER 0
++%define CONFIG_TRANSPOSE_OPENCL_FILTER 0
++%define CONFIG_TRANSPOSE_VAAPI_FILTER 0
++%define CONFIG_TRIM_FILTER 0
++%define CONFIG_UNPREMULTIPLY_FILTER 0
++%define CONFIG_UNSHARP_FILTER 0
++%define CONFIG_UNSHARP_OPENCL_FILTER 0
++%define CONFIG_UNTILE_FILTER 0
++%define CONFIG_USPP_FILTER 0
++%define CONFIG_V360_FILTER 0
++%define CONFIG_VAGUEDENOISER_FILTER 0
++%define CONFIG_VECTORSCOPE_FILTER 0
++%define CONFIG_VFLIP_FILTER 0
++%define CONFIG_VFRDET_FILTER 0
++%define CONFIG_VIBRANCE_FILTER 0
++%define CONFIG_VIDSTABDETECT_FILTER 0
++%define CONFIG_VIDSTABTRANSFORM_FILTER 0
++%define CONFIG_VIF_FILTER 0
++%define CONFIG_VIGNETTE_FILTER 0
++%define CONFIG_VMAFMOTION_FILTER 0
++%define CONFIG_VPP_QSV_FILTER 0
++%define CONFIG_VSTACK_FILTER 0
++%define CONFIG_W3FDIF_FILTER 0
++%define CONFIG_WAVEFORM_FILTER 0
++%define CONFIG_WEAVE_FILTER 0
++%define CONFIG_XBR_FILTER 0
++%define CONFIG_XFADE_FILTER 0
++%define CONFIG_XFADE_OPENCL_FILTER 0
++%define CONFIG_XMEDIAN_FILTER 0
++%define CONFIG_XSTACK_FILTER 0
++%define CONFIG_YADIF_FILTER 0
++%define CONFIG_YADIF_CUDA_FILTER 0
++%define CONFIG_YAEPBLUR_FILTER 0
++%define CONFIG_ZMQ_FILTER 0
++%define CONFIG_ZOOMPAN_FILTER 0
++%define CONFIG_ZSCALE_FILTER 0
++%define CONFIG_ALLRGB_FILTER 0
++%define CONFIG_ALLYUV_FILTER 0
++%define CONFIG_CELLAUTO_FILTER 0
++%define CONFIG_COLOR_FILTER 0
++%define CONFIG_COREIMAGESRC_FILTER 0
++%define CONFIG_FREI0R_SRC_FILTER 0
++%define CONFIG_GRADIENTS_FILTER 0
++%define CONFIG_HALDCLUTSRC_FILTER 0
++%define CONFIG_LIFE_FILTER 0
++%define CONFIG_MANDELBROT_FILTER 0
++%define CONFIG_MPTESTSRC_FILTER 0
++%define CONFIG_NULLSRC_FILTER 0
++%define CONFIG_OPENCLSRC_FILTER 0
++%define CONFIG_PAL75BARS_FILTER 0
++%define CONFIG_PAL100BARS_FILTER 0
++%define CONFIG_RGBTESTSRC_FILTER 0
++%define CONFIG_SIERPINSKI_FILTER 0
++%define CONFIG_SMPTEBARS_FILTER 0
++%define CONFIG_SMPTEHDBARS_FILTER 0
++%define CONFIG_TESTSRC_FILTER 0
++%define CONFIG_TESTSRC2_FILTER 0
++%define CONFIG_YUVTESTSRC_FILTER 0
++%define CONFIG_NULLSINK_FILTER 0
++%define CONFIG_ABITSCOPE_FILTER 0
++%define CONFIG_ADRAWGRAPH_FILTER 0
++%define CONFIG_AGRAPHMONITOR_FILTER 0
++%define CONFIG_AHISTOGRAM_FILTER 0
++%define CONFIG_APHASEMETER_FILTER 0
++%define CONFIG_AVECTORSCOPE_FILTER 0
++%define CONFIG_CONCAT_FILTER 0
++%define CONFIG_SHOWCQT_FILTER 0
++%define CONFIG_SHOWFREQS_FILTER 0
++%define CONFIG_SHOWSPATIAL_FILTER 0
++%define CONFIG_SHOWSPECTRUM_FILTER 0
++%define CONFIG_SHOWSPECTRUMPIC_FILTER 0
++%define CONFIG_SHOWVOLUME_FILTER 0
++%define CONFIG_SHOWWAVES_FILTER 0
++%define CONFIG_SHOWWAVESPIC_FILTER 0
++%define CONFIG_SPECTRUMSYNTH_FILTER 0
++%define CONFIG_AMOVIE_FILTER 0
++%define CONFIG_MOVIE_FILTER 0
++%define CONFIG_AFIFO_FILTER 0
++%define CONFIG_FIFO_FILTER 0
++%define CONFIG_AA_DEMUXER 0
++%define CONFIG_AAC_DEMUXER 1
++%define CONFIG_AAX_DEMUXER 0
++%define CONFIG_AC3_DEMUXER 0
++%define CONFIG_ACE_DEMUXER 0
++%define CONFIG_ACM_DEMUXER 0
++%define CONFIG_ACT_DEMUXER 0
++%define CONFIG_ADF_DEMUXER 0
++%define CONFIG_ADP_DEMUXER 0
++%define CONFIG_ADS_DEMUXER 0
++%define CONFIG_ADX_DEMUXER 0
++%define CONFIG_AEA_DEMUXER 0
++%define CONFIG_AFC_DEMUXER 0
++%define CONFIG_AIFF_DEMUXER 0
++%define CONFIG_AIX_DEMUXER 0
++%define CONFIG_ALP_DEMUXER 0
++%define CONFIG_AMR_DEMUXER 0
++%define CONFIG_AMRNB_DEMUXER 0
++%define CONFIG_AMRWB_DEMUXER 0
++%define CONFIG_ANM_DEMUXER 0
++%define CONFIG_APC_DEMUXER 0
++%define CONFIG_APE_DEMUXER 0
++%define CONFIG_APM_DEMUXER 0
++%define CONFIG_APNG_DEMUXER 0
++%define CONFIG_APTX_DEMUXER 0
++%define CONFIG_APTX_HD_DEMUXER 0
++%define CONFIG_AQTITLE_DEMUXER 0
++%define CONFIG_ARGO_ASF_DEMUXER 0
++%define CONFIG_ARGO_BRP_DEMUXER 0
++%define CONFIG_ASF_DEMUXER 0
++%define CONFIG_ASF_O_DEMUXER 0
++%define CONFIG_ASS_DEMUXER 0
++%define CONFIG_AST_DEMUXER 0
++%define CONFIG_AU_DEMUXER 0
++%define CONFIG_AV1_DEMUXER 0
++%define CONFIG_AVI_DEMUXER 0
++%define CONFIG_AVISYNTH_DEMUXER 0
++%define CONFIG_AVR_DEMUXER 0
++%define CONFIG_AVS_DEMUXER 0
++%define CONFIG_AVS2_DEMUXER 0
++%define CONFIG_AVS3_DEMUXER 0
++%define CONFIG_BETHSOFTVID_DEMUXER 0
++%define CONFIG_BFI_DEMUXER 0
++%define CONFIG_BINTEXT_DEMUXER 0
++%define CONFIG_BINK_DEMUXER 0
++%define CONFIG_BINKA_DEMUXER 0
++%define CONFIG_BIT_DEMUXER 0
++%define CONFIG_BMV_DEMUXER 0
++%define CONFIG_BFSTM_DEMUXER 0
++%define CONFIG_BRSTM_DEMUXER 0
++%define CONFIG_BOA_DEMUXER 0
++%define CONFIG_C93_DEMUXER 0
++%define CONFIG_CAF_DEMUXER 0
++%define CONFIG_CAVSVIDEO_DEMUXER 0
++%define CONFIG_CDG_DEMUXER 0
++%define CONFIG_CDXL_DEMUXER 0
++%define CONFIG_CINE_DEMUXER 0
++%define CONFIG_CODEC2_DEMUXER 0
++%define CONFIG_CODEC2RAW_DEMUXER 0
++%define CONFIG_CONCAT_DEMUXER 0
++%define CONFIG_DASH_DEMUXER 0
++%define CONFIG_DATA_DEMUXER 0
++%define CONFIG_DAUD_DEMUXER 0
++%define CONFIG_DCSTR_DEMUXER 0
++%define CONFIG_DERF_DEMUXER 0
++%define CONFIG_DFA_DEMUXER 0
++%define CONFIG_DHAV_DEMUXER 0
++%define CONFIG_DIRAC_DEMUXER 0
++%define CONFIG_DNXHD_DEMUXER 0
++%define CONFIG_DSF_DEMUXER 0
++%define CONFIG_DSICIN_DEMUXER 0
++%define CONFIG_DSS_DEMUXER 0
++%define CONFIG_DTS_DEMUXER 0
++%define CONFIG_DTSHD_DEMUXER 0
++%define CONFIG_DV_DEMUXER 0
++%define CONFIG_DVBSUB_DEMUXER 0
++%define CONFIG_DVBTXT_DEMUXER 0
++%define CONFIG_DXA_DEMUXER 0
++%define CONFIG_EA_DEMUXER 0
++%define CONFIG_EA_CDATA_DEMUXER 0
++%define CONFIG_EAC3_DEMUXER 0
++%define CONFIG_EPAF_DEMUXER 0
++%define CONFIG_FFMETADATA_DEMUXER 0
++%define CONFIG_FILMSTRIP_DEMUXER 0
++%define CONFIG_FITS_DEMUXER 0
++%define CONFIG_FLAC_DEMUXER 1
++%define CONFIG_FLIC_DEMUXER 0
++%define CONFIG_FLV_DEMUXER 0
++%define CONFIG_LIVE_FLV_DEMUXER 0
++%define CONFIG_FOURXM_DEMUXER 0
++%define CONFIG_FRM_DEMUXER 0
++%define CONFIG_FSB_DEMUXER 0
++%define CONFIG_FWSE_DEMUXER 0
++%define CONFIG_G722_DEMUXER 0
++%define CONFIG_G723_1_DEMUXER 0
++%define CONFIG_G726_DEMUXER 0
++%define CONFIG_G726LE_DEMUXER 0
++%define CONFIG_G729_DEMUXER 0
++%define CONFIG_GDV_DEMUXER 0
++%define CONFIG_GENH_DEMUXER 0
++%define CONFIG_GIF_DEMUXER 0
++%define CONFIG_GSM_DEMUXER 0
++%define CONFIG_GXF_DEMUXER 0
++%define CONFIG_H261_DEMUXER 0
++%define CONFIG_H263_DEMUXER 0
++%define CONFIG_H264_DEMUXER 0
++%define CONFIG_HCA_DEMUXER 0
++%define CONFIG_HCOM_DEMUXER 0
++%define CONFIG_HEVC_DEMUXER 0
++%define CONFIG_HLS_DEMUXER 0
++%define CONFIG_HNM_DEMUXER 0
++%define CONFIG_ICO_DEMUXER 0
++%define CONFIG_IDCIN_DEMUXER 0
++%define CONFIG_IDF_DEMUXER 0
++%define CONFIG_IFF_DEMUXER 0
++%define CONFIG_IFV_DEMUXER 0
++%define CONFIG_ILBC_DEMUXER 0
++%define CONFIG_IMAGE2_DEMUXER 0
++%define CONFIG_IMAGE2PIPE_DEMUXER 0
++%define CONFIG_IMAGE2_ALIAS_PIX_DEMUXER 0
++%define CONFIG_IMAGE2_BRENDER_PIX_DEMUXER 0
++%define CONFIG_INGENIENT_DEMUXER 0
++%define CONFIG_IPMOVIE_DEMUXER 0
++%define CONFIG_IPU_DEMUXER 0
++%define CONFIG_IRCAM_DEMUXER 0
++%define CONFIG_ISS_DEMUXER 0
++%define CONFIG_IV8_DEMUXER 0
++%define CONFIG_IVF_DEMUXER 0
++%define CONFIG_IVR_DEMUXER 0
++%define CONFIG_JACOSUB_DEMUXER 0
++%define CONFIG_JV_DEMUXER 0
++%define CONFIG_KUX_DEMUXER 0
++%define CONFIG_KVAG_DEMUXER 0
++%define CONFIG_LMLM4_DEMUXER 0
++%define CONFIG_LOAS_DEMUXER 0
++%define CONFIG_LUODAT_DEMUXER 0
++%define CONFIG_LRC_DEMUXER 0
++%define CONFIG_LVF_DEMUXER 0
++%define CONFIG_LXF_DEMUXER 0
++%define CONFIG_M4V_DEMUXER 0
++%define CONFIG_MCA_DEMUXER 0
++%define CONFIG_MCC_DEMUXER 0
++%define CONFIG_MATROSKA_DEMUXER 1
++%define CONFIG_MGSTS_DEMUXER 0
++%define CONFIG_MICRODVD_DEMUXER 0
++%define CONFIG_MJPEG_DEMUXER 0
++%define CONFIG_MJPEG_2000_DEMUXER 0
++%define CONFIG_MLP_DEMUXER 0
++%define CONFIG_MLV_DEMUXER 0
++%define CONFIG_MM_DEMUXER 0
++%define CONFIG_MMF_DEMUXER 0
++%define CONFIG_MODS_DEMUXER 0
++%define CONFIG_MOFLEX_DEMUXER 0
++%define CONFIG_MOV_DEMUXER 1
++%define CONFIG_MP3_DEMUXER 1
++%define CONFIG_MPC_DEMUXER 0
++%define CONFIG_MPC8_DEMUXER 0
++%define CONFIG_MPEGPS_DEMUXER 0
++%define CONFIG_MPEGTS_DEMUXER 0
++%define CONFIG_MPEGTSRAW_DEMUXER 0
++%define CONFIG_MPEGVIDEO_DEMUXER 0
++%define CONFIG_MPJPEG_DEMUXER 0
++%define CONFIG_MPL2_DEMUXER 0
++%define CONFIG_MPSUB_DEMUXER 0
++%define CONFIG_MSF_DEMUXER 0
++%define CONFIG_MSNWC_TCP_DEMUXER 0
++%define CONFIG_MSP_DEMUXER 0
++%define CONFIG_MTAF_DEMUXER 0
++%define CONFIG_MTV_DEMUXER 0
++%define CONFIG_MUSX_DEMUXER 0
++%define CONFIG_MV_DEMUXER 0
++%define CONFIG_MVI_DEMUXER 0
++%define CONFIG_MXF_DEMUXER 0
++%define CONFIG_MXG_DEMUXER 0
++%define CONFIG_NC_DEMUXER 0
++%define CONFIG_NISTSPHERE_DEMUXER 0
++%define CONFIG_NSP_DEMUXER 0
++%define CONFIG_NSV_DEMUXER 0
++%define CONFIG_NUT_DEMUXER 0
++%define CONFIG_NUV_DEMUXER 0
++%define CONFIG_OBU_DEMUXER 0
++%define CONFIG_OGG_DEMUXER 1
++%define CONFIG_OMA_DEMUXER 0
++%define CONFIG_PAF_DEMUXER 0
++%define CONFIG_PCM_ALAW_DEMUXER 0
++%define CONFIG_PCM_MULAW_DEMUXER 0
++%define CONFIG_PCM_VIDC_DEMUXER 0
++%define CONFIG_PCM_F64BE_DEMUXER 0
++%define CONFIG_PCM_F64LE_DEMUXER 0
++%define CONFIG_PCM_F32BE_DEMUXER 0
++%define CONFIG_PCM_F32LE_DEMUXER 0
++%define CONFIG_PCM_S32BE_DEMUXER 0
++%define CONFIG_PCM_S32LE_DEMUXER 0
++%define CONFIG_PCM_S24BE_DEMUXER 0
++%define CONFIG_PCM_S24LE_DEMUXER 0
++%define CONFIG_PCM_S16BE_DEMUXER 0
++%define CONFIG_PCM_S16LE_DEMUXER 0
++%define CONFIG_PCM_S8_DEMUXER 0
++%define CONFIG_PCM_U32BE_DEMUXER 0
++%define CONFIG_PCM_U32LE_DEMUXER 0
++%define CONFIG_PCM_U24BE_DEMUXER 0
++%define CONFIG_PCM_U24LE_DEMUXER 0
++%define CONFIG_PCM_U16BE_DEMUXER 0
++%define CONFIG_PCM_U16LE_DEMUXER 0
++%define CONFIG_PCM_U8_DEMUXER 0
++%define CONFIG_PJS_DEMUXER 0
++%define CONFIG_PMP_DEMUXER 0
++%define CONFIG_PP_BNK_DEMUXER 0
++%define CONFIG_PVA_DEMUXER 0
++%define CONFIG_PVF_DEMUXER 0
++%define CONFIG_QCP_DEMUXER 0
++%define CONFIG_R3D_DEMUXER 0
++%define CONFIG_RAWVIDEO_DEMUXER 0
++%define CONFIG_REALTEXT_DEMUXER 0
++%define CONFIG_REDSPARK_DEMUXER 0
++%define CONFIG_RL2_DEMUXER 0
++%define CONFIG_RM_DEMUXER 0
++%define CONFIG_ROQ_DEMUXER 0
++%define CONFIG_RPL_DEMUXER 0
++%define CONFIG_RSD_DEMUXER 0
++%define CONFIG_RSO_DEMUXER 0
++%define CONFIG_RTP_DEMUXER 0
++%define CONFIG_RTSP_DEMUXER 0
++%define CONFIG_S337M_DEMUXER 0
++%define CONFIG_SAMI_DEMUXER 0
++%define CONFIG_SAP_DEMUXER 0
++%define CONFIG_SBC_DEMUXER 0
++%define CONFIG_SBG_DEMUXER 0
++%define CONFIG_SCC_DEMUXER 0
++%define CONFIG_SDP_DEMUXER 0
++%define CONFIG_SDR2_DEMUXER 0
++%define CONFIG_SDS_DEMUXER 0
++%define CONFIG_SDX_DEMUXER 0
++%define CONFIG_SEGAFILM_DEMUXER 0
++%define CONFIG_SER_DEMUXER 0
++%define CONFIG_SGA_DEMUXER 0
++%define CONFIG_SHORTEN_DEMUXER 0
++%define CONFIG_SIFF_DEMUXER 0
++%define CONFIG_SIMBIOSIS_IMX_DEMUXER 0
++%define CONFIG_SLN_DEMUXER 0
++%define CONFIG_SMACKER_DEMUXER 0
++%define CONFIG_SMJPEG_DEMUXER 0
++%define CONFIG_SMUSH_DEMUXER 0
++%define CONFIG_SOL_DEMUXER 0
++%define CONFIG_SOX_DEMUXER 0
++%define CONFIG_SPDIF_DEMUXER 0
++%define CONFIG_SRT_DEMUXER 0
++%define CONFIG_STR_DEMUXER 0
++%define CONFIG_STL_DEMUXER 0
++%define CONFIG_SUBVIEWER1_DEMUXER 0
++%define CONFIG_SUBVIEWER_DEMUXER 0
++%define CONFIG_SUP_DEMUXER 0
++%define CONFIG_SVAG_DEMUXER 0
++%define CONFIG_SVS_DEMUXER 0
++%define CONFIG_SWF_DEMUXER 0
++%define CONFIG_TAK_DEMUXER 0
++%define CONFIG_TEDCAPTIONS_DEMUXER 0
++%define CONFIG_THP_DEMUXER 0
++%define CONFIG_THREEDOSTR_DEMUXER 0
++%define CONFIG_TIERTEXSEQ_DEMUXER 0
++%define CONFIG_TMV_DEMUXER 0
++%define CONFIG_TRUEHD_DEMUXER 0
++%define CONFIG_TTA_DEMUXER 0
++%define CONFIG_TXD_DEMUXER 0
++%define CONFIG_TTY_DEMUXER 0
++%define CONFIG_TY_DEMUXER 0
++%define CONFIG_V210_DEMUXER 0
++%define CONFIG_V210X_DEMUXER 0
++%define CONFIG_VAG_DEMUXER 0
++%define CONFIG_VC1_DEMUXER 0
++%define CONFIG_VC1T_DEMUXER 0
++%define CONFIG_VIVIDAS_DEMUXER 0
++%define CONFIG_VIVO_DEMUXER 0
++%define CONFIG_VMD_DEMUXER 0
++%define CONFIG_VOBSUB_DEMUXER 0
++%define CONFIG_VOC_DEMUXER 0
++%define CONFIG_VPK_DEMUXER 0
++%define CONFIG_VPLAYER_DEMUXER 0
++%define CONFIG_VQF_DEMUXER 0
++%define CONFIG_W64_DEMUXER 0
++%define CONFIG_WAV_DEMUXER 1
++%define CONFIG_WC3_DEMUXER 0
++%define CONFIG_WEBM_DASH_MANIFEST_DEMUXER 0
++%define CONFIG_WEBVTT_DEMUXER 0
++%define CONFIG_WSAUD_DEMUXER 0
++%define CONFIG_WSD_DEMUXER 0
++%define CONFIG_WSVQA_DEMUXER 0
++%define CONFIG_WTV_DEMUXER 0
++%define CONFIG_WVE_DEMUXER 0
++%define CONFIG_WV_DEMUXER 0
++%define CONFIG_XA_DEMUXER 0
++%define CONFIG_XBIN_DEMUXER 0
++%define CONFIG_XMV_DEMUXER 0
++%define CONFIG_XVAG_DEMUXER 0
++%define CONFIG_XWMA_DEMUXER 0
++%define CONFIG_YOP_DEMUXER 0
++%define CONFIG_YUV4MPEGPIPE_DEMUXER 0
++%define CONFIG_IMAGE_BMP_PIPE_DEMUXER 0
++%define CONFIG_IMAGE_CRI_PIPE_DEMUXER 0
++%define CONFIG_IMAGE_DDS_PIPE_DEMUXER 0
++%define CONFIG_IMAGE_DPX_PIPE_DEMUXER 0
++%define CONFIG_IMAGE_EXR_PIPE_DEMUXER 0
++%define CONFIG_IMAGE_GIF_PIPE_DEMUXER 0
++%define CONFIG_IMAGE_J2K_PIPE_DEMUXER 0
++%define CONFIG_IMAGE_JPEG_PIPE_DEMUXER 0
++%define CONFIG_IMAGE_JPEGLS_PIPE_DEMUXER 0
++%define CONFIG_IMAGE_PAM_PIPE_DEMUXER 0
++%define CONFIG_IMAGE_PBM_PIPE_DEMUXER 0
++%define CONFIG_IMAGE_PCX_PIPE_DEMUXER 0
++%define CONFIG_IMAGE_PGMYUV_PIPE_DEMUXER 0
++%define CONFIG_IMAGE_PGM_PIPE_DEMUXER 0
++%define CONFIG_IMAGE_PGX_PIPE_DEMUXER 0
++%define CONFIG_IMAGE_PHOTOCD_PIPE_DEMUXER 0
++%define CONFIG_IMAGE_PICTOR_PIPE_DEMUXER 0
++%define CONFIG_IMAGE_PNG_PIPE_DEMUXER 0
++%define CONFIG_IMAGE_PPM_PIPE_DEMUXER 0
++%define CONFIG_IMAGE_PSD_PIPE_DEMUXER 0
++%define CONFIG_IMAGE_QDRAW_PIPE_DEMUXER 0
++%define CONFIG_IMAGE_SGI_PIPE_DEMUXER 0
++%define CONFIG_IMAGE_SVG_PIPE_DEMUXER 0
++%define CONFIG_IMAGE_SUNRAST_PIPE_DEMUXER 0
++%define CONFIG_IMAGE_TIFF_PIPE_DEMUXER 0
++%define CONFIG_IMAGE_WEBP_PIPE_DEMUXER 0
++%define CONFIG_IMAGE_XBM_PIPE_DEMUXER 0
++%define CONFIG_IMAGE_XPM_PIPE_DEMUXER 0
++%define CONFIG_IMAGE_XWD_PIPE_DEMUXER 0
++%define CONFIG_LIBGME_DEMUXER 0
++%define CONFIG_LIBMODPLUG_DEMUXER 0
++%define CONFIG_LIBOPENMPT_DEMUXER 0
++%define CONFIG_VAPOURSYNTH_DEMUXER 0
++%define CONFIG_A64_MUXER 0
++%define CONFIG_AC3_MUXER 0
++%define CONFIG_ADTS_MUXER 0
++%define CONFIG_ADX_MUXER 0
++%define CONFIG_AIFF_MUXER 0
++%define CONFIG_ALP_MUXER 0
++%define CONFIG_AMR_MUXER 0
++%define CONFIG_AMV_MUXER 0
++%define CONFIG_APM_MUXER 0
++%define CONFIG_APNG_MUXER 0
++%define CONFIG_APTX_MUXER 0
++%define CONFIG_APTX_HD_MUXER 0
++%define CONFIG_ARGO_ASF_MUXER 0
++%define CONFIG_ASF_MUXER 0
++%define CONFIG_ASS_MUXER 0
++%define CONFIG_AST_MUXER 0
++%define CONFIG_ASF_STREAM_MUXER 0
++%define CONFIG_AU_MUXER 0
++%define CONFIG_AVI_MUXER 0
++%define CONFIG_AVM2_MUXER 0
++%define CONFIG_AVS2_MUXER 0
++%define CONFIG_BIT_MUXER 0
++%define CONFIG_CAF_MUXER 0
++%define CONFIG_CAVSVIDEO_MUXER 0
++%define CONFIG_CODEC2_MUXER 0
++%define CONFIG_CODEC2RAW_MUXER 0
++%define CONFIG_CRC_MUXER 0
++%define CONFIG_DASH_MUXER 0
++%define CONFIG_DATA_MUXER 0
++%define CONFIG_DAUD_MUXER 0
++%define CONFIG_DIRAC_MUXER 0
++%define CONFIG_DNXHD_MUXER 0
++%define CONFIG_DTS_MUXER 0
++%define CONFIG_DV_MUXER 0
++%define CONFIG_EAC3_MUXER 0
++%define CONFIG_F4V_MUXER 0
++%define CONFIG_FFMETADATA_MUXER 0
++%define CONFIG_FIFO_MUXER 0
++%define CONFIG_FIFO_TEST_MUXER 0
++%define CONFIG_FILMSTRIP_MUXER 0
++%define CONFIG_FITS_MUXER 0
++%define CONFIG_FLAC_MUXER 0
++%define CONFIG_FLV_MUXER 0
++%define CONFIG_FRAMECRC_MUXER 0
++%define CONFIG_FRAMEHASH_MUXER 0
++%define CONFIG_FRAMEMD5_MUXER 0
++%define CONFIG_G722_MUXER 0
++%define CONFIG_G723_1_MUXER 0
++%define CONFIG_G726_MUXER 0
++%define CONFIG_G726LE_MUXER 0
++%define CONFIG_GIF_MUXER 0
++%define CONFIG_GSM_MUXER 0
++%define CONFIG_GXF_MUXER 0
++%define CONFIG_H261_MUXER 0
++%define CONFIG_H263_MUXER 0
++%define CONFIG_H264_MUXER 0
++%define CONFIG_HASH_MUXER 0
++%define CONFIG_HDS_MUXER 0
++%define CONFIG_HEVC_MUXER 0
++%define CONFIG_HLS_MUXER 0
++%define CONFIG_ICO_MUXER 0
++%define CONFIG_ILBC_MUXER 0
++%define CONFIG_IMAGE2_MUXER 0
++%define CONFIG_IMAGE2PIPE_MUXER 0
++%define CONFIG_IPOD_MUXER 0
++%define CONFIG_IRCAM_MUXER 0
++%define CONFIG_ISMV_MUXER 0
++%define CONFIG_IVF_MUXER 0
++%define CONFIG_JACOSUB_MUXER 0
++%define CONFIG_KVAG_MUXER 0
++%define CONFIG_LATM_MUXER 0
++%define CONFIG_LRC_MUXER 0
++%define CONFIG_M4V_MUXER 0
++%define CONFIG_MD5_MUXER 0
++%define CONFIG_MATROSKA_MUXER 0
++%define CONFIG_MATROSKA_AUDIO_MUXER 0
++%define CONFIG_MICRODVD_MUXER 0
++%define CONFIG_MJPEG_MUXER 0
++%define CONFIG_MLP_MUXER 0
++%define CONFIG_MMF_MUXER 0
++%define CONFIG_MOV_MUXER 0
++%define CONFIG_MP2_MUXER 0
++%define CONFIG_MP3_MUXER 0
++%define CONFIG_MP4_MUXER 0
++%define CONFIG_MPEG1SYSTEM_MUXER 0
++%define CONFIG_MPEG1VCD_MUXER 0
++%define CONFIG_MPEG1VIDEO_MUXER 0
++%define CONFIG_MPEG2DVD_MUXER 0
++%define CONFIG_MPEG2SVCD_MUXER 0
++%define CONFIG_MPEG2VIDEO_MUXER 0
++%define CONFIG_MPEG2VOB_MUXER 0
++%define CONFIG_MPEGTS_MUXER 0
++%define CONFIG_MPJPEG_MUXER 0
++%define CONFIG_MXF_MUXER 0
++%define CONFIG_MXF_D10_MUXER 0
++%define CONFIG_MXF_OPATOM_MUXER 0
++%define CONFIG_NULL_MUXER 0
++%define CONFIG_NUT_MUXER 0
++%define CONFIG_OGA_MUXER 0
++%define CONFIG_OGG_MUXER 0
++%define CONFIG_OGV_MUXER 0
++%define CONFIG_OMA_MUXER 0
++%define CONFIG_OPUS_MUXER 0
++%define CONFIG_PCM_ALAW_MUXER 0
++%define CONFIG_PCM_MULAW_MUXER 0
++%define CONFIG_PCM_VIDC_MUXER 0
++%define CONFIG_PCM_F64BE_MUXER 0
++%define CONFIG_PCM_F64LE_MUXER 0
++%define CONFIG_PCM_F32BE_MUXER 0
++%define CONFIG_PCM_F32LE_MUXER 0
++%define CONFIG_PCM_S32BE_MUXER 0
++%define CONFIG_PCM_S32LE_MUXER 0
++%define CONFIG_PCM_S24BE_MUXER 0
++%define CONFIG_PCM_S24LE_MUXER 0
++%define CONFIG_PCM_S16BE_MUXER 0
++%define CONFIG_PCM_S16LE_MUXER 0
++%define CONFIG_PCM_S8_MUXER 0
++%define CONFIG_PCM_U32BE_MUXER 0
++%define CONFIG_PCM_U32LE_MUXER 0
++%define CONFIG_PCM_U24BE_MUXER 0
++%define CONFIG_PCM_U24LE_MUXER 0
++%define CONFIG_PCM_U16BE_MUXER 0
++%define CONFIG_PCM_U16LE_MUXER 0
++%define CONFIG_PCM_U8_MUXER 0
++%define CONFIG_PSP_MUXER 0
++%define CONFIG_RAWVIDEO_MUXER 0
++%define CONFIG_RM_MUXER 0
++%define CONFIG_ROQ_MUXER 0
++%define CONFIG_RSO_MUXER 0
++%define CONFIG_RTP_MUXER 0
++%define CONFIG_RTP_MPEGTS_MUXER 0
++%define CONFIG_RTSP_MUXER 0
++%define CONFIG_SAP_MUXER 0
++%define CONFIG_SBC_MUXER 0
++%define CONFIG_SCC_MUXER 0
++%define CONFIG_SEGAFILM_MUXER 0
++%define CONFIG_SEGMENT_MUXER 0
++%define CONFIG_STREAM_SEGMENT_MUXER 0
++%define CONFIG_SMJPEG_MUXER 0
++%define CONFIG_SMOOTHSTREAMING_MUXER 0
++%define CONFIG_SOX_MUXER 0
++%define CONFIG_SPX_MUXER 0
++%define CONFIG_SPDIF_MUXER 0
++%define CONFIG_SRT_MUXER 0
++%define CONFIG_STREAMHASH_MUXER 0
++%define CONFIG_SUP_MUXER 0
++%define CONFIG_SWF_MUXER 0
++%define CONFIG_TEE_MUXER 0
++%define CONFIG_TG2_MUXER 0
++%define CONFIG_TGP_MUXER 0
++%define CONFIG_MKVTIMESTAMP_V2_MUXER 0
++%define CONFIG_TRUEHD_MUXER 0
++%define CONFIG_TTA_MUXER 0
++%define CONFIG_TTML_MUXER 0
++%define CONFIG_UNCODEDFRAMECRC_MUXER 0
++%define CONFIG_VC1_MUXER 0
++%define CONFIG_VC1T_MUXER 0
++%define CONFIG_VOC_MUXER 0
++%define CONFIG_W64_MUXER 0
++%define CONFIG_WAV_MUXER 0
++%define CONFIG_WEBM_MUXER 0
++%define CONFIG_WEBM_DASH_MANIFEST_MUXER 0
++%define CONFIG_WEBM_CHUNK_MUXER 0
++%define CONFIG_WEBP_MUXER 0
++%define CONFIG_WEBVTT_MUXER 0
++%define CONFIG_WSAUD_MUXER 0
++%define CONFIG_WTV_MUXER 0
++%define CONFIG_WV_MUXER 0
++%define CONFIG_YUV4MPEGPIPE_MUXER 0
++%define CONFIG_CHROMAPRINT_MUXER 0
++%define CONFIG_ASYNC_PROTOCOL 0
++%define CONFIG_BLURAY_PROTOCOL 0
++%define CONFIG_CACHE_PROTOCOL 0
++%define CONFIG_CONCAT_PROTOCOL 0
++%define CONFIG_CRYPTO_PROTOCOL 0
++%define CONFIG_DATA_PROTOCOL 0
++%define CONFIG_FFRTMPCRYPT_PROTOCOL 0
++%define CONFIG_FFRTMPHTTP_PROTOCOL 0
++%define CONFIG_FILE_PROTOCOL 0
++%define CONFIG_FTP_PROTOCOL 0
++%define CONFIG_GOPHER_PROTOCOL 0
++%define CONFIG_GOPHERS_PROTOCOL 0
++%define CONFIG_HLS_PROTOCOL 0
++%define CONFIG_HTTP_PROTOCOL 0
++%define CONFIG_HTTPPROXY_PROTOCOL 0
++%define CONFIG_HTTPS_PROTOCOL 0
++%define CONFIG_ICECAST_PROTOCOL 0
++%define CONFIG_MMSH_PROTOCOL 0
++%define CONFIG_MMST_PROTOCOL 0
++%define CONFIG_MD5_PROTOCOL 0
++%define CONFIG_PIPE_PROTOCOL 0
++%define CONFIG_PROMPEG_PROTOCOL 0
++%define CONFIG_RTMP_PROTOCOL 0
++%define CONFIG_RTMPE_PROTOCOL 0
++%define CONFIG_RTMPS_PROTOCOL 0
++%define CONFIG_RTMPT_PROTOCOL 0
++%define CONFIG_RTMPTE_PROTOCOL 0
++%define CONFIG_RTMPTS_PROTOCOL 0
++%define CONFIG_RTP_PROTOCOL 0
++%define CONFIG_SCTP_PROTOCOL 0
++%define CONFIG_SRTP_PROTOCOL 0
++%define CONFIG_SUBFILE_PROTOCOL 0
++%define CONFIG_TEE_PROTOCOL 0
++%define CONFIG_TCP_PROTOCOL 0
++%define CONFIG_TLS_PROTOCOL 0
++%define CONFIG_UDP_PROTOCOL 0
++%define CONFIG_UDPLITE_PROTOCOL 0
++%define CONFIG_UNIX_PROTOCOL 0
++%define CONFIG_LIBAMQP_PROTOCOL 0
++%define CONFIG_LIBRIST_PROTOCOL 0
++%define CONFIG_LIBRTMP_PROTOCOL 0
++%define CONFIG_LIBRTMPE_PROTOCOL 0
++%define CONFIG_LIBRTMPS_PROTOCOL 0
++%define CONFIG_LIBRTMPT_PROTOCOL 0
++%define CONFIG_LIBRTMPTE_PROTOCOL 0
++%define CONFIG_LIBSRT_PROTOCOL 0
++%define CONFIG_LIBSSH_PROTOCOL 0
++%define CONFIG_LIBSMBCLIENT_PROTOCOL 0
++%define CONFIG_LIBZMQ_PROTOCOL 0
diff --git a/devel/electron17/files/patch-third__party_ffmpeg_chromium_config_Chrome_openbsd_ia32_config.h b/devel/electron17/files/patch-third__party_ffmpeg_chromium_config_Chrome_openbsd_ia32_config.h
new file mode 100644
index 000000000000..c541496d9627
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_ffmpeg_chromium_config_Chrome_openbsd_ia32_config.h
@@ -0,0 +1,2706 @@
+--- third_party/ffmpeg/chromium/config/Chrome/openbsd/ia32/config.h.orig 2022-05-13 07:20:05 UTC
++++ third_party/ffmpeg/chromium/config/Chrome/openbsd/ia32/config.h
+@@ -0,0 +1,2703 @@
++/* Automatically generated by configure - do not modify! */
++#ifndef FFMPEG_CONFIG_H
++#define FFMPEG_CONFIG_H
++/* #define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-debug --disable-bzlib --disable-error-resilience --disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl2 --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-faan --disable-alsa --disable-autodetect --enable-decoder='vorbis,libopus,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,mp3' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio,vp9' --extra-cflags=-I/chromium/chromium-git/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=nasm --optflags=-O2 --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --arch=i686 --extra-cflags=-m32 --extra-ldflags=-m32 --enable-pic --cc=clang --cxx=clang++ --ld=clang --enable-decoder='aac,h264' --enable-demuxer=aac --enable-parser='aac,h264'" -- elide long configuration string from binary */
++#define FFMPEG_LICENSE "LGPL version 2.1 or later"
++#define CONFIG_THIS_YEAR 2021
++#define FFMPEG_DATADIR "/usr/local/share/ffmpeg"
++#define AVCONV_DATADIR "/usr/local/share/ffmpeg"
++#define CC_IDENT "OpenBSD clang version 11.1.0"
++#define OS_NAME openbsd
++#define av_restrict restrict
++#define EXTERN_PREFIX ""
++#define EXTERN_ASM
++#define BUILDSUF ""
++#define SLIBSUF ".so"
++#define HAVE_MMX2 HAVE_MMXEXT
++#define SWS_MAX_FILTER_SIZE 256
++#define ARCH_AARCH64 0
++#define ARCH_ALPHA 0
++#define ARCH_ARM 0
++#define ARCH_AVR32 0
++#define ARCH_AVR32_AP 0
++#define ARCH_AVR32_UC 0
++#define ARCH_BFIN 0
++#define ARCH_IA64 0
++#define ARCH_M68K 0
++#define ARCH_MIPS 0
++#define ARCH_MIPS64 0
++#define ARCH_PARISC 0
++#define ARCH_PPC 0
++#define ARCH_PPC64 0
++#define ARCH_S390 0
++#define ARCH_SH4 0
++#define ARCH_SPARC 0
++#define ARCH_SPARC64 0
++#define ARCH_TILEGX 0
++#define ARCH_TILEPRO 0
++#define ARCH_TOMI 0
++#define ARCH_X86 1
++#define ARCH_X86_32 1
++#define ARCH_X86_64 0
++#define HAVE_ARMV5TE 0
++#define HAVE_ARMV6 0
++#define HAVE_ARMV6T2 0
++#define HAVE_ARMV8 0
++#define HAVE_NEON 0
++#define HAVE_VFP 0
++#define HAVE_VFPV3 0
++#define HAVE_SETEND 0
++#define HAVE_ALTIVEC 0
++#define HAVE_DCBZL 0
++#define HAVE_LDBRX 0
++#define HAVE_POWER8 0
++#define HAVE_PPC4XX 0
++#define HAVE_VSX 0
++#define HAVE_AESNI 1
++#define HAVE_AMD3DNOW 1
++#define HAVE_AMD3DNOWEXT 1
++#define HAVE_AVX 1
++#define HAVE_AVX2 1
++#define HAVE_AVX512 1
++#define HAVE_FMA3 1
++#define HAVE_FMA4 1
++#define HAVE_MMX 1
++#define HAVE_MMXEXT 1
++#define HAVE_SSE 1
++#define HAVE_SSE2 1
++#define HAVE_SSE3 1
++#define HAVE_SSE4 1
++#define HAVE_SSE42 1
++#define HAVE_SSSE3 1
++#define HAVE_XOP 1
++#define HAVE_CPUNOP 0
++#define HAVE_I686 1
++#define HAVE_MIPSFPU 0
++#define HAVE_MIPS32R2 0
++#define HAVE_MIPS32R5 0
++#define HAVE_MIPS64R2 0
++#define HAVE_MIPS32R6 0
++#define HAVE_MIPS64R6 0
++#define HAVE_MIPSDSP 0
++#define HAVE_MIPSDSPR2 0
++#define HAVE_MSA 0
++#define HAVE_LOONGSON2 0
++#define HAVE_LOONGSON3 0
++#define HAVE_MMI 0
++#define HAVE_ARMV5TE_EXTERNAL 0
++#define HAVE_ARMV6_EXTERNAL 0
++#define HAVE_ARMV6T2_EXTERNAL 0
++#define HAVE_ARMV8_EXTERNAL 0
++#define HAVE_NEON_EXTERNAL 0
++#define HAVE_VFP_EXTERNAL 0
++#define HAVE_VFPV3_EXTERNAL 0
++#define HAVE_SETEND_EXTERNAL 0
++#define HAVE_ALTIVEC_EXTERNAL 0
++#define HAVE_DCBZL_EXTERNAL 0
++#define HAVE_LDBRX_EXTERNAL 0
++#define HAVE_POWER8_EXTERNAL 0
++#define HAVE_PPC4XX_EXTERNAL 0
++#define HAVE_VSX_EXTERNAL 0
++#define HAVE_AESNI_EXTERNAL 1
++#define HAVE_AMD3DNOW_EXTERNAL 1
++#define HAVE_AMD3DNOWEXT_EXTERNAL 1
++#define HAVE_AVX_EXTERNAL 1
++#define HAVE_AVX2_EXTERNAL 1
++#define HAVE_AVX512_EXTERNAL 0
++#define HAVE_FMA3_EXTERNAL 1
++#define HAVE_FMA4_EXTERNAL 1
++#define HAVE_MMX_EXTERNAL 1
++#define HAVE_MMXEXT_EXTERNAL 1
++#define HAVE_SSE_EXTERNAL 1
++#define HAVE_SSE2_EXTERNAL 1
++#define HAVE_SSE3_EXTERNAL 1
++#define HAVE_SSE4_EXTERNAL 1
++#define HAVE_SSE42_EXTERNAL 1
++#define HAVE_SSSE3_EXTERNAL 1
++#define HAVE_XOP_EXTERNAL 1
++#define HAVE_CPUNOP_EXTERNAL 0
++#define HAVE_I686_EXTERNAL 0
++#define HAVE_MIPSFPU_EXTERNAL 0
++#define HAVE_MIPS32R2_EXTERNAL 0
++#define HAVE_MIPS32R5_EXTERNAL 0
++#define HAVE_MIPS64R2_EXTERNAL 0
++#define HAVE_MIPS32R6_EXTERNAL 0
++#define HAVE_MIPS64R6_EXTERNAL 0
++#define HAVE_MIPSDSP_EXTERNAL 0
++#define HAVE_MIPSDSPR2_EXTERNAL 0
++#define HAVE_MSA_EXTERNAL 0
++#define HAVE_LOONGSON2_EXTERNAL 0
++#define HAVE_LOONGSON3_EXTERNAL 0
++#define HAVE_MMI_EXTERNAL 0
++#define HAVE_ARMV5TE_INLINE 0
++#define HAVE_ARMV6_INLINE 0
++#define HAVE_ARMV6T2_INLINE 0
++#define HAVE_ARMV8_INLINE 0
++#define HAVE_NEON_INLINE 0
++#define HAVE_VFP_INLINE 0
++#define HAVE_VFPV3_INLINE 0
++#define HAVE_SETEND_INLINE 0
++#define HAVE_ALTIVEC_INLINE 0
++#define HAVE_DCBZL_INLINE 0
++#define HAVE_LDBRX_INLINE 0
++#define HAVE_POWER8_INLINE 0
++#define HAVE_PPC4XX_INLINE 0
++#define HAVE_VSX_INLINE 0
++#define HAVE_AESNI_INLINE 1
++#define HAVE_AMD3DNOW_INLINE 1
++#define HAVE_AMD3DNOWEXT_INLINE 1
++#define HAVE_AVX_INLINE 1
++#define HAVE_AVX2_INLINE 1
++#define HAVE_AVX512_INLINE 1
++#define HAVE_FMA3_INLINE 1
++#define HAVE_FMA4_INLINE 1
++#define HAVE_MMX_INLINE 1
++#define HAVE_MMXEXT_INLINE 1
++#define HAVE_SSE_INLINE 1
++#define HAVE_SSE2_INLINE 1
++#define HAVE_SSE3_INLINE 1
++#define HAVE_SSE4_INLINE 1
++#define HAVE_SSE42_INLINE 1
++#define HAVE_SSSE3_INLINE 1
++#define HAVE_XOP_INLINE 1
++#define HAVE_CPUNOP_INLINE 0
++#define HAVE_I686_INLINE 0
++#define HAVE_MIPSFPU_INLINE 0
++#define HAVE_MIPS32R2_INLINE 0
++#define HAVE_MIPS32R5_INLINE 0
++#define HAVE_MIPS64R2_INLINE 0
++#define HAVE_MIPS32R6_INLINE 0
++#define HAVE_MIPS64R6_INLINE 0
++#define HAVE_MIPSDSP_INLINE 0
++#define HAVE_MIPSDSPR2_INLINE 0
++#define HAVE_MSA_INLINE 0
++#define HAVE_LOONGSON2_INLINE 0
++#define HAVE_LOONGSON3_INLINE 0
++#define HAVE_MMI_INLINE 0
++#define HAVE_ALIGNED_STACK 0
++#define HAVE_FAST_64BIT 0
++#define HAVE_FAST_CLZ 1
++#define HAVE_FAST_CMOV 0
++#define HAVE_LOCAL_ALIGNED 1
++#define HAVE_SIMD_ALIGN_16 1
++#define HAVE_SIMD_ALIGN_32 1
++#define HAVE_SIMD_ALIGN_64 1
++#define HAVE_ATOMIC_CAS_PTR 0
++#define HAVE_MACHINE_RW_BARRIER 0
++#define HAVE_MEMORYBARRIER 0
++#define HAVE_MM_EMPTY 0
++#define HAVE_RDTSC 0
++#define HAVE_SEM_TIMEDWAIT 1
++#define HAVE_SYNC_VAL_COMPARE_AND_SWAP 1
++#define HAVE_CABS 0
++#define HAVE_CEXP 0
++#define HAVE_INLINE_ASM 1
++#define HAVE_SYMVER 0
++#define HAVE_X86ASM 1
++#define HAVE_BIGENDIAN 0
++#define HAVE_FAST_UNALIGNED 1
++#define HAVE_ARPA_INET_H 0
++#define HAVE_ASM_TYPES_H 0
++#define HAVE_CDIO_PARANOIA_H 0
++#define HAVE_CDIO_PARANOIA_PARANOIA_H 0
++#define HAVE_CUDA_H 0
++#define HAVE_DISPATCH_DISPATCH_H 0
++#define HAVE_DEV_BKTR_IOCTL_BT848_H 0
++#define HAVE_DEV_BKTR_IOCTL_METEOR_H 0
++#define HAVE_DEV_IC_BT8XX_H 1
++#define HAVE_DEV_VIDEO_BKTR_IOCTL_BT848_H 0
++#define HAVE_DEV_VIDEO_METEOR_IOCTL_METEOR_H 0
++#define HAVE_DIRECT_H 0
++#define HAVE_DIRENT_H 1
++#define HAVE_DXGIDEBUG_H 0
++#define HAVE_DXVA_H 0
++#define HAVE_ES2_GL_H 0
++#define HAVE_GSM_H 0
++#define HAVE_IO_H 0
++#define HAVE_LINUX_DMA_BUF_H 0
++#define HAVE_LINUX_PERF_EVENT_H 0
++#define HAVE_MACHINE_IOCTL_BT848_H 0
++#define HAVE_MACHINE_IOCTL_METEOR_H 0
++#define HAVE_MALLOC_H 0
++#define HAVE_OPENCV2_CORE_CORE_C_H 0
++#define HAVE_OPENGL_GL3_H 0
++#define HAVE_POLL_H 1
++#define HAVE_SYS_PARAM_H 1
++#define HAVE_SYS_RESOURCE_H 1
++#define HAVE_SYS_SELECT_H 1
++#define HAVE_SYS_SOUNDCARD_H 0
++#define HAVE_SYS_TIME_H 1
++#define HAVE_SYS_UN_H 1
++#define HAVE_SYS_VIDEOIO_H 1
++#define HAVE_TERMIOS_H 1
++#define HAVE_UDPLITE_H 0
++#define HAVE_UNISTD_H 1
++#define HAVE_VALGRIND_VALGRIND_H 0
++#define HAVE_WINDOWS_H 0
++#define HAVE_WINSOCK2_H 0
++#define HAVE_INTRINSICS_NEON 0
++#define HAVE_ATANF 1
++#define HAVE_ATAN2F 1
++#define HAVE_CBRT 1
++#define HAVE_CBRTF 1
++#define HAVE_COPYSIGN 1
++#define HAVE_COSF 1
++#define HAVE_ERF 1
++#define HAVE_EXP2 1
++#define HAVE_EXP2F 1
++#define HAVE_EXPF 1
++#define HAVE_HYPOT 1
++#define HAVE_ISFINITE 1
++#define HAVE_ISINF 1
++#define HAVE_ISNAN 1
++#define HAVE_LDEXPF 1
++#define HAVE_LLRINT 1
++#define HAVE_LLRINTF 1
++#define HAVE_LOG2 1
++#define HAVE_LOG2F 1
++#define HAVE_LOG10F 1
++#define HAVE_LRINT 1
++#define HAVE_LRINTF 1
++#define HAVE_POWF 1
++#define HAVE_RINT 1
++#define HAVE_ROUND 1
++#define HAVE_ROUNDF 1
++#define HAVE_SINF 1
++#define HAVE_TRUNC 1
++#define HAVE_TRUNCF 1
++#define HAVE_DOS_PATHS 0
++#define HAVE_LIBC_MSVCRT 0
++#define HAVE_MMAL_PARAMETER_VIDEO_MAX_NUM_CALLBACKS 0
++#define HAVE_SECTION_DATA_REL_RO 1
++#define HAVE_THREADS 1
++#define HAVE_UWP 0
++#define HAVE_WINRT 0
++#define HAVE_ACCESS 1
++#define HAVE_ALIGNED_MALLOC 0
++#define HAVE_ARC4RANDOM 1
++#define HAVE_CLOCK_GETTIME 1
++#define HAVE_CLOSESOCKET 0
++#define HAVE_COMMANDLINETOARGVW 0
++#define HAVE_FCNTL 1
++#define HAVE_GETADDRINFO 0
++#define HAVE_GETHRTIME 0
++#define HAVE_GETOPT 1
++#define HAVE_GETMODULEHANDLE 0
++#define HAVE_GETPROCESSAFFINITYMASK 0
++#define HAVE_GETPROCESSMEMORYINFO 0
++#define HAVE_GETPROCESSTIMES 0
++#define HAVE_GETRUSAGE 1
++#define HAVE_GETSTDHANDLE 0
++#define HAVE_GETSYSTEMTIMEASFILETIME 0
++#define HAVE_GETTIMEOFDAY 1
++#define HAVE_GLOB 1
++#define HAVE_GLXGETPROCADDRESS 0
++#define HAVE_GMTIME_R 1
++#define HAVE_INET_ATON 0
++#define HAVE_ISATTY 1
++#define HAVE_KBHIT 0
++#define HAVE_LOCALTIME_R 1
++#define HAVE_LSTAT 1
++#define HAVE_LZO1X_999_COMPRESS 0
++#define HAVE_MACH_ABSOLUTE_TIME 0
++#define HAVE_MAPVIEWOFFILE 0
++#define HAVE_MEMALIGN 0
++#define HAVE_MKSTEMP 1
++#define HAVE_MMAP 1
++#define HAVE_MPROTECT 1
++#define HAVE_NANOSLEEP 1
++#define HAVE_PEEKNAMEDPIPE 0
++#define HAVE_POSIX_MEMALIGN 1
++#define HAVE_PTHREAD_CANCEL 1
++#define HAVE_SCHED_GETAFFINITY 0
++#define HAVE_SECITEMIMPORT 0
++#define HAVE_SETCONSOLETEXTATTRIBUTE 0
++#define HAVE_SETCONSOLECTRLHANDLER 0
++#define HAVE_SETDLLDIRECTORY 0
++#define HAVE_SETMODE 0
++#define HAVE_SETRLIMIT 1
++#define HAVE_SLEEP 0
++#define HAVE_STRERROR_R 1
++#define HAVE_SYSCONF 1
++#define HAVE_SYSCTL 1
++#define HAVE_USLEEP 1
++#define HAVE_UTGETOSTYPEFROMSTRING 0
++#define HAVE_VIRTUALALLOC 0
++#define HAVE_WGLGETPROCADDRESS 0
++#define HAVE_BCRYPT 0
++#define HAVE_VAAPI_DRM 0
++#define HAVE_VAAPI_X11 0
++#define HAVE_VDPAU_X11 0
++#define HAVE_PTHREADS 1
++#define HAVE_OS2THREADS 0
++#define HAVE_W32THREADS 0
++#define HAVE_AS_ARCH_DIRECTIVE 0
++#define HAVE_AS_DN_DIRECTIVE 0
++#define HAVE_AS_FPU_DIRECTIVE 0
++#define HAVE_AS_FUNC 0
++#define HAVE_AS_OBJECT_ARCH 0
++#define HAVE_ASM_MOD_Q 0
++#define HAVE_BLOCKS_EXTENSION 0
++/* #define HAVE_EBP_AVAILABLE 1 -- ebp selection is done by the chrome build */
++#define HAVE_EBX_AVAILABLE 1
++#define HAVE_GNU_AS 0
++#define HAVE_GNU_WINDRES 0
++#define HAVE_IBM_ASM 0
++#define HAVE_INLINE_ASM_DIRECT_SYMBOL_REFS 1
++#define HAVE_INLINE_ASM_LABELS 1
++#define HAVE_INLINE_ASM_NONLOCAL_LABELS 1
++#define HAVE_PRAGMA_DEPRECATED 1
++#define HAVE_RSYNC_CONTIMEOUT 0
++#define HAVE_SYMVER_ASM_LABEL 1
++#define HAVE_SYMVER_GNU_ASM 1
++#define HAVE_VFP_ARGS 0
++#define HAVE_XFORM_ASM 0
++#define HAVE_XMM_CLOBBERS 1
++#define HAVE_KCMVIDEOCODECTYPE_HEVC 0
++#define HAVE_KCMVIDEOCODECTYPE_HEVCWITHALPHA 0
++#define HAVE_KCVPIXELFORMATTYPE_420YPCBCR10BIPLANARVIDEORANGE 0
++#define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_SMPTE_ST_2084_PQ 0
++#define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_ITU_R_2100_HLG 0
++#define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_LINEAR 0
++#define HAVE_SOCKLEN_T 0
++#define HAVE_STRUCT_ADDRINFO 0
++#define HAVE_STRUCT_GROUP_SOURCE_REQ 0
++#define HAVE_STRUCT_IP_MREQ_SOURCE 0
++#define HAVE_STRUCT_IPV6_MREQ 0
++#define HAVE_STRUCT_MSGHDR_MSG_FLAGS 0
++#define HAVE_STRUCT_POLLFD 0
++#define HAVE_STRUCT_RUSAGE_RU_MAXRSS 1
++#define HAVE_STRUCT_SCTP_EVENT_SUBSCRIBE 0
++#define HAVE_STRUCT_SOCKADDR_IN6 0
++#define HAVE_STRUCT_SOCKADDR_SA_LEN 0
++#define HAVE_STRUCT_SOCKADDR_STORAGE 0
++#define HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC 1
++#define HAVE_STRUCT_V4L2_FRMIVALENUM_DISCRETE 1
++#define HAVE_LIBDRM_GETFB2 0
++#define HAVE_MAKEINFO 1
++#define HAVE_MAKEINFO_HTML 0
++#define HAVE_OPENCL_D3D11 0
++#define HAVE_OPENCL_DRM_ARM 0
++#define HAVE_OPENCL_DRM_BEIGNET 0
++#define HAVE_OPENCL_DXVA2 0
++#define HAVE_OPENCL_VAAPI_BEIGNET 0
++#define HAVE_OPENCL_VAAPI_INTEL_MEDIA 0
++#define HAVE_PERL 1
++#define HAVE_POD2MAN 1
++#define HAVE_TEXI2HTML 0
++#define CONFIG_DOC 0
++#define CONFIG_HTMLPAGES 0
++#define CONFIG_MANPAGES 0
++#define CONFIG_PODPAGES 0
++#define CONFIG_TXTPAGES 0
++#define CONFIG_AVIO_LIST_DIR_EXAMPLE 1
++#define CONFIG_AVIO_READING_EXAMPLE 1
++#define CONFIG_DECODE_AUDIO_EXAMPLE 1
++#define CONFIG_DECODE_VIDEO_EXAMPLE 1
++#define CONFIG_DEMUXING_DECODING_EXAMPLE 1
++#define CONFIG_ENCODE_AUDIO_EXAMPLE 1
++#define CONFIG_ENCODE_VIDEO_EXAMPLE 1
++#define CONFIG_EXTRACT_MVS_EXAMPLE 1
++#define CONFIG_FILTER_AUDIO_EXAMPLE 0
++#define CONFIG_FILTERING_AUDIO_EXAMPLE 0
++#define CONFIG_FILTERING_VIDEO_EXAMPLE 0
++#define CONFIG_HTTP_MULTICLIENT_EXAMPLE 1
++#define CONFIG_HW_DECODE_EXAMPLE 1
++#define CONFIG_METADATA_EXAMPLE 1
++#define CONFIG_MUXING_EXAMPLE 0
++#define CONFIG_QSVDEC_EXAMPLE 0
++#define CONFIG_REMUXING_EXAMPLE 1
++#define CONFIG_RESAMPLING_AUDIO_EXAMPLE 0
++#define CONFIG_SCALING_VIDEO_EXAMPLE 0
++#define CONFIG_TRANSCODE_AAC_EXAMPLE 0
++#define CONFIG_TRANSCODING_EXAMPLE 0
++#define CONFIG_VAAPI_ENCODE_EXAMPLE 0
++#define CONFIG_VAAPI_TRANSCODE_EXAMPLE 0
++#define CONFIG_AVISYNTH 0
++#define CONFIG_FREI0R 0
++#define CONFIG_LIBCDIO 0
++#define CONFIG_LIBDAVS2 0
++#define CONFIG_LIBRUBBERBAND 0
++#define CONFIG_LIBVIDSTAB 0
++#define CONFIG_LIBX264 0
++#define CONFIG_LIBX265 0
++#define CONFIG_LIBXAVS 0
++#define CONFIG_LIBXAVS2 0
++#define CONFIG_LIBXVID 0
++#define CONFIG_DECKLINK 0
++#define CONFIG_LIBFDK_AAC 0
++#define CONFIG_OPENSSL 0
++#define CONFIG_LIBTLS 0
++#define CONFIG_GMP 0
++#define CONFIG_LIBARIBB24 0
++#define CONFIG_LIBLENSFUN 0
++#define CONFIG_LIBOPENCORE_AMRNB 0
++#define CONFIG_LIBOPENCORE_AMRWB 0
++#define CONFIG_LIBVO_AMRWBENC 0
++#define CONFIG_MBEDTLS 0
++#define CONFIG_RKMPP 0
++#define CONFIG_LIBSMBCLIENT 0
++#define CONFIG_CHROMAPRINT 0
++#define CONFIG_GCRYPT 0
++#define CONFIG_GNUTLS 0
++#define CONFIG_JNI 0
++#define CONFIG_LADSPA 0
++#define CONFIG_LIBAOM 0
++#define CONFIG_LIBASS 0
++#define CONFIG_LIBBLURAY 0
++#define CONFIG_LIBBS2B 0
++#define CONFIG_LIBCACA 0
++#define CONFIG_LIBCELT 0
++#define CONFIG_LIBCODEC2 0
++#define CONFIG_LIBDAV1D 0
++#define CONFIG_LIBDC1394 0
++#define CONFIG_LIBDRM 0
++#define CONFIG_LIBFLITE 0
++#define CONFIG_LIBFONTCONFIG 0
++#define CONFIG_LIBFREETYPE 0
++#define CONFIG_LIBFRIBIDI 0
++#define CONFIG_LIBGLSLANG 0
++#define CONFIG_LIBGME 0
++#define CONFIG_LIBGSM 0
++#define CONFIG_LIBIEC61883 0
++#define CONFIG_LIBILBC 0
++#define CONFIG_LIBJACK 0
++#define CONFIG_LIBKLVANC 0
++#define CONFIG_LIBKVAZAAR 0
++#define CONFIG_LIBMODPLUG 0
++#define CONFIG_LIBMP3LAME 0
++#define CONFIG_LIBMYSOFA 0
++#define CONFIG_LIBOPENCV 0
++#define CONFIG_LIBOPENH264 0
++#define CONFIG_LIBOPENJPEG 0
++#define CONFIG_LIBOPENMPT 0
++#define CONFIG_LIBOPENVINO 0
++#define CONFIG_LIBOPUS 1
++#define CONFIG_LIBPULSE 0
++#define CONFIG_LIBRABBITMQ 0
++#define CONFIG_LIBRAV1E 0
++#define CONFIG_LIBRIST 0
++#define CONFIG_LIBRSVG 0
++#define CONFIG_LIBRTMP 0
++#define CONFIG_LIBSHINE 0
++#define CONFIG_LIBSMBCLIENT 0
++#define CONFIG_LIBSNAPPY 0
++#define CONFIG_LIBSOXR 0
++#define CONFIG_LIBSPEEX 0
++#define CONFIG_LIBSRT 0
++#define CONFIG_LIBSSH 0
++#define CONFIG_LIBSVTAV1 0
++#define CONFIG_LIBTENSORFLOW 0
++#define CONFIG_LIBTESSERACT 0
++#define CONFIG_LIBTHEORA 0
++#define CONFIG_LIBTWOLAME 0
++#define CONFIG_LIBUAVS3D 0
++#define CONFIG_LIBV4L2 0
++#define CONFIG_LIBVMAF 0
++#define CONFIG_LIBVORBIS 0
++#define CONFIG_LIBVPX 0
++#define CONFIG_LIBWEBP 0
++#define CONFIG_LIBXML2 0
++#define CONFIG_LIBZIMG 0
++#define CONFIG_LIBZMQ 0
++#define CONFIG_LIBZVBI 0
++#define CONFIG_LV2 0
++#define CONFIG_MEDIACODEC 0
++#define CONFIG_OPENAL 0
++#define CONFIG_OPENGL 0
++#define CONFIG_POCKETSPHINX 0
++#define CONFIG_VAPOURSYNTH 0
++#define CONFIG_ALSA 0
++#define CONFIG_APPKIT 0
++#define CONFIG_AVFOUNDATION 0
++#define CONFIG_BZLIB 0
++#define CONFIG_COREIMAGE 0
++#define CONFIG_ICONV 0
++#define CONFIG_LIBXCB 0
++#define CONFIG_LIBXCB_SHM 0
++#define CONFIG_LIBXCB_SHAPE 0
++#define CONFIG_LIBXCB_XFIXES 0
++#define CONFIG_LZMA 0
++#define CONFIG_MEDIAFOUNDATION 0
++#define CONFIG_SCHANNEL 0
++#define CONFIG_SDL2 0
++#define CONFIG_SECURETRANSPORT 0
++#define CONFIG_SNDIO 0
++#define CONFIG_XLIB 0
++#define CONFIG_ZLIB 0
++#define CONFIG_CUDA_NVCC 0
++#define CONFIG_CUDA_SDK 0
++#define CONFIG_LIBNPP 0
++#define CONFIG_LIBMFX 0
++#define CONFIG_MMAL 0
++#define CONFIG_OMX 0
++#define CONFIG_OPENCL 0
++#define CONFIG_VULKAN 0
++#define CONFIG_AMF 0
++#define CONFIG_AUDIOTOOLBOX 0
++#define CONFIG_CRYSTALHD 0
++#define CONFIG_CUDA 0
++#define CONFIG_CUDA_LLVM 0
++#define CONFIG_CUVID 0
++#define CONFIG_D3D11VA 0
++#define CONFIG_DXVA2 0
++#define CONFIG_FFNVCODEC 0
++#define CONFIG_NVDEC 0
++#define CONFIG_NVENC 0
++#define CONFIG_VAAPI 0
++#define CONFIG_VDPAU 0
++#define CONFIG_VIDEOTOOLBOX 0
++#define CONFIG_V4L2_M2M 0
++#define CONFIG_XVMC 0
++#define CONFIG_FTRAPV 0
++#define CONFIG_GRAY 0
++#define CONFIG_HARDCODED_TABLES 0
++#define CONFIG_OMX_RPI 0
++#define CONFIG_RUNTIME_CPUDETECT 1
++#define CONFIG_SAFE_BITSTREAM_READER 1
++#define CONFIG_SHARED 0
++#define CONFIG_SMALL 0
++#define CONFIG_STATIC 1
++#define CONFIG_SWSCALE_ALPHA 1
++#define CONFIG_GPL 0
++#define CONFIG_NONFREE 0
++#define CONFIG_VERSION3 0
++#define CONFIG_AVDEVICE 0
++#define CONFIG_AVFILTER 0
++#define CONFIG_SWSCALE 0
++#define CONFIG_POSTPROC 0
++#define CONFIG_AVFORMAT 1
++#define CONFIG_AVCODEC 1
++#define CONFIG_SWRESAMPLE 0
++#define CONFIG_AVUTIL 1
++#define CONFIG_FFPLAY 0
++#define CONFIG_FFPROBE 0
++#define CONFIG_FFMPEG 0
++#define CONFIG_DCT 1
++#define CONFIG_DWT 0
++#define CONFIG_ERROR_RESILIENCE 0
++#define CONFIG_FAAN 0
++#define CONFIG_FAST_UNALIGNED 1
++#define CONFIG_FFT 1
++#define CONFIG_LSP 0
++#define CONFIG_LZO 0
++#define CONFIG_MDCT 1
++#define CONFIG_PIXELUTILS 0
++#define CONFIG_NETWORK 0
++#define CONFIG_RDFT 1
++#define CONFIG_AUTODETECT 0
++#define CONFIG_FONTCONFIG 0
++#define CONFIG_LARGE_TESTS 1
++#define CONFIG_LINUX_PERF 0
++#define CONFIG_MEMORY_POISONING 0
++#define CONFIG_NEON_CLOBBER_TEST 0
++#define CONFIG_OSSFUZZ 0
++#define CONFIG_PIC 1
++#define CONFIG_THUMB 0
++#define CONFIG_VALGRIND_BACKTRACE 0
++#define CONFIG_XMM_CLOBBER_TEST 0
++#define CONFIG_BSFS 1
++#define CONFIG_DECODERS 1
++#define CONFIG_ENCODERS 0
++#define CONFIG_HWACCELS 0
++#define CONFIG_PARSERS 1
++#define CONFIG_INDEVS 0
++#define CONFIG_OUTDEVS 0
++#define CONFIG_FILTERS 0
++#define CONFIG_DEMUXERS 1
++#define CONFIG_MUXERS 0
++#define CONFIG_PROTOCOLS 0
++#define CONFIG_AANDCTTABLES 0
++#define CONFIG_AC3DSP 0
++#define CONFIG_ADTS_HEADER 1
++#define CONFIG_ATSC_A53 1
++#define CONFIG_AUDIO_FRAME_QUEUE 0
++#define CONFIG_AUDIODSP 0
++#define CONFIG_BLOCKDSP 0
++#define CONFIG_BSWAPDSP 0
++#define CONFIG_CABAC 1
++#define CONFIG_CBS 0
++#define CONFIG_CBS_AV1 0
++#define CONFIG_CBS_H264 0
++#define CONFIG_CBS_H265 0
++#define CONFIG_CBS_JPEG 0
++#define CONFIG_CBS_MPEG2 0
++#define CONFIG_CBS_VP9 0
++#define CONFIG_DIRAC_PARSE 1
++#define CONFIG_DNN 0
++#define CONFIG_DVPROFILE 0
++#define CONFIG_EXIF 0
++#define CONFIG_FAANDCT 0
++#define CONFIG_FAANIDCT 0
++#define CONFIG_FDCTDSP 0
++#define CONFIG_FLACDSP 1
++#define CONFIG_FMTCONVERT 0
++#define CONFIG_FRAME_THREAD_ENCODER 0
++#define CONFIG_G722DSP 0
++#define CONFIG_GOLOMB 1
++#define CONFIG_GPLV3 0
++#define CONFIG_H263DSP 0
++#define CONFIG_H264CHROMA 1
++#define CONFIG_H264DSP 1
++#define CONFIG_H264PARSE 1
++#define CONFIG_H264PRED 1
++#define CONFIG_H264QPEL 1
++#define CONFIG_HEVCPARSE 0
++#define CONFIG_HPELDSP 1
++#define CONFIG_HUFFMAN 0
++#define CONFIG_HUFFYUVDSP 0
++#define CONFIG_HUFFYUVENCDSP 0
++#define CONFIG_IDCTDSP 0
++#define CONFIG_IIRFILTER 0
++#define CONFIG_MDCT15 1
++#define CONFIG_INTRAX8 0
++#define CONFIG_ISO_MEDIA 1
++#define CONFIG_IVIDSP 0
++#define CONFIG_JPEGTABLES 0
++#define CONFIG_LGPLV3 0
++#define CONFIG_LIBX262 0
++#define CONFIG_LLAUDDSP 0
++#define CONFIG_LLVIDDSP 0
++#define CONFIG_LLVIDENCDSP 0
++#define CONFIG_LPC 0
++#define CONFIG_LZF 0
++#define CONFIG_ME_CMP 0
++#define CONFIG_MPEG_ER 0
++#define CONFIG_MPEGAUDIO 1
++#define CONFIG_MPEGAUDIODSP 1
++#define CONFIG_MPEGAUDIOHEADER 1
++#define CONFIG_MPEGVIDEO 0
++#define CONFIG_MPEGVIDEOENC 0
++#define CONFIG_MSS34DSP 0
++#define CONFIG_PIXBLOCKDSP 0
++#define CONFIG_QPELDSP 0
++#define CONFIG_QSV 0
++#define CONFIG_QSVDEC 0
++#define CONFIG_QSVENC 0
++#define CONFIG_QSVVPP 0
++#define CONFIG_RANGECODER 0
++#define CONFIG_RIFFDEC 1
++#define CONFIG_RIFFENC 0
++#define CONFIG_RTPDEC 0
++#define CONFIG_RTPENC_CHAIN 0
++#define CONFIG_RV34DSP 0
++#define CONFIG_SCENE_SAD 0
++#define CONFIG_SINEWIN 1
++#define CONFIG_SNAPPY 0
++#define CONFIG_SRTP 0
++#define CONFIG_STARTCODE 1
++#define CONFIG_TEXTUREDSP 0
++#define CONFIG_TEXTUREDSPENC 0
++#define CONFIG_TPELDSP 0
++#define CONFIG_VAAPI_1 0
++#define CONFIG_VAAPI_ENCODE 0
++#define CONFIG_VC1DSP 0
++#define CONFIG_VIDEODSP 1
++#define CONFIG_VP3DSP 1
++#define CONFIG_VP56DSP 0
++#define CONFIG_VP8DSP 1
++#define CONFIG_WMA_FREQS 0
++#define CONFIG_WMV2DSP 0
++#define CONFIG_AAC_ADTSTOASC_BSF 0
++#define CONFIG_AV1_FRAME_MERGE_BSF 0
++#define CONFIG_AV1_FRAME_SPLIT_BSF 0
++#define CONFIG_AV1_METADATA_BSF 0
++#define CONFIG_CHOMP_BSF 0
++#define CONFIG_DUMP_EXTRADATA_BSF 0
++#define CONFIG_DCA_CORE_BSF 0
++#define CONFIG_EAC3_CORE_BSF 0
++#define CONFIG_EXTRACT_EXTRADATA_BSF 0
++#define CONFIG_FILTER_UNITS_BSF 0
++#define CONFIG_H264_METADATA_BSF 0
++#define CONFIG_H264_MP4TOANNEXB_BSF 0
++#define CONFIG_H264_REDUNDANT_PPS_BSF 0
++#define CONFIG_HAPQA_EXTRACT_BSF 0
++#define CONFIG_HEVC_METADATA_BSF 0
++#define CONFIG_HEVC_MP4TOANNEXB_BSF 0
++#define CONFIG_IMX_DUMP_HEADER_BSF 0
++#define CONFIG_MJPEG2JPEG_BSF 0
++#define CONFIG_MJPEGA_DUMP_HEADER_BSF 0
++#define CONFIG_MP3_HEADER_DECOMPRESS_BSF 0
++#define CONFIG_MPEG2_METADATA_BSF 0
++#define CONFIG_MPEG4_UNPACK_BFRAMES_BSF 0
++#define CONFIG_MOV2TEXTSUB_BSF 0
++#define CONFIG_NOISE_BSF 0
++#define CONFIG_NULL_BSF 1
++#define CONFIG_OPUS_METADATA_BSF 0
++#define CONFIG_PCM_RECHUNK_BSF 0
++#define CONFIG_PRORES_METADATA_BSF 0
++#define CONFIG_REMOVE_EXTRADATA_BSF 0
++#define CONFIG_SETTS_BSF 0
++#define CONFIG_TEXT2MOVSUB_BSF 0
++#define CONFIG_TRACE_HEADERS_BSF 0
++#define CONFIG_TRUEHD_CORE_BSF 0
++#define CONFIG_VP9_METADATA_BSF 0
++#define CONFIG_VP9_RAW_REORDER_BSF 0
++#define CONFIG_VP9_SUPERFRAME_BSF 0
++#define CONFIG_VP9_SUPERFRAME_SPLIT_BSF 0
++#define CONFIG_AASC_DECODER 0
++#define CONFIG_AIC_DECODER 0
++#define CONFIG_ALIAS_PIX_DECODER 0
++#define CONFIG_AGM_DECODER 0
++#define CONFIG_AMV_DECODER 0
++#define CONFIG_ANM_DECODER 0
++#define CONFIG_ANSI_DECODER 0
++#define CONFIG_APNG_DECODER 0
++#define CONFIG_ARBC_DECODER 0
++#define CONFIG_ARGO_DECODER 0
++#define CONFIG_ASV1_DECODER 0
++#define CONFIG_ASV2_DECODER 0
++#define CONFIG_AURA_DECODER 0
++#define CONFIG_AURA2_DECODER 0
++#define CONFIG_AVRP_DECODER 0
++#define CONFIG_AVRN_DECODER 0
++#define CONFIG_AVS_DECODER 0
++#define CONFIG_AVUI_DECODER 0
++#define CONFIG_AYUV_DECODER 0
++#define CONFIG_BETHSOFTVID_DECODER 0
++#define CONFIG_BFI_DECODER 0
++#define CONFIG_BINK_DECODER 0
++#define CONFIG_BITPACKED_DECODER 0
++#define CONFIG_BMP_DECODER 0
++#define CONFIG_BMV_VIDEO_DECODER 0
++#define CONFIG_BRENDER_PIX_DECODER 0
++#define CONFIG_C93_DECODER 0
++#define CONFIG_CAVS_DECODER 0
++#define CONFIG_CDGRAPHICS_DECODER 0
++#define CONFIG_CDTOONS_DECODER 0
++#define CONFIG_CDXL_DECODER 0
++#define CONFIG_CFHD_DECODER 0
++#define CONFIG_CINEPAK_DECODER 0
++#define CONFIG_CLEARVIDEO_DECODER 0
++#define CONFIG_CLJR_DECODER 0
++#define CONFIG_CLLC_DECODER 0
++#define CONFIG_COMFORTNOISE_DECODER 0
++#define CONFIG_CPIA_DECODER 0
++#define CONFIG_CRI_DECODER 0
++#define CONFIG_CSCD_DECODER 0
++#define CONFIG_CYUV_DECODER 0
++#define CONFIG_DDS_DECODER 0
++#define CONFIG_DFA_DECODER 0
++#define CONFIG_DIRAC_DECODER 0
++#define CONFIG_DNXHD_DECODER 0
++#define CONFIG_DPX_DECODER 0
++#define CONFIG_DSICINVIDEO_DECODER 0
++#define CONFIG_DVAUDIO_DECODER 0
++#define CONFIG_DVVIDEO_DECODER 0
++#define CONFIG_DXA_DECODER 0
++#define CONFIG_DXTORY_DECODER 0
++#define CONFIG_DXV_DECODER 0
++#define CONFIG_EACMV_DECODER 0
++#define CONFIG_EAMAD_DECODER 0
++#define CONFIG_EATGQ_DECODER 0
++#define CONFIG_EATGV_DECODER 0
++#define CONFIG_EATQI_DECODER 0
++#define CONFIG_EIGHTBPS_DECODER 0
++#define CONFIG_EIGHTSVX_EXP_DECODER 0
++#define CONFIG_EIGHTSVX_FIB_DECODER 0
++#define CONFIG_ESCAPE124_DECODER 0
++#define CONFIG_ESCAPE130_DECODER 0
++#define CONFIG_EXR_DECODER 0
++#define CONFIG_FFV1_DECODER 0
++#define CONFIG_FFVHUFF_DECODER 0
++#define CONFIG_FIC_DECODER 0
++#define CONFIG_FITS_DECODER 0
++#define CONFIG_FLASHSV_DECODER 0
++#define CONFIG_FLASHSV2_DECODER 0
++#define CONFIG_FLIC_DECODER 0
++#define CONFIG_FLV_DECODER 0
++#define CONFIG_FMVC_DECODER 0
++#define CONFIG_FOURXM_DECODER 0
++#define CONFIG_FRAPS_DECODER 0
++#define CONFIG_FRWU_DECODER 0
++#define CONFIG_G2M_DECODER 0
++#define CONFIG_GDV_DECODER 0
++#define CONFIG_GIF_DECODER 0
++#define CONFIG_H261_DECODER 0
++#define CONFIG_H263_DECODER 0
++#define CONFIG_H263I_DECODER 0
++#define CONFIG_H263P_DECODER 0
++#define CONFIG_H263_V4L2M2M_DECODER 0
++#define CONFIG_H264_DECODER 1
++#define CONFIG_H264_CRYSTALHD_DECODER 0
++#define CONFIG_H264_V4L2M2M_DECODER 0
++#define CONFIG_H264_MEDIACODEC_DECODER 0
++#define CONFIG_H264_MMAL_DECODER 0
++#define CONFIG_H264_QSV_DECODER 0
++#define CONFIG_H264_RKMPP_DECODER 0
++#define CONFIG_HAP_DECODER 0
++#define CONFIG_HEVC_DECODER 0
++#define CONFIG_HEVC_QSV_DECODER 0
++#define CONFIG_HEVC_RKMPP_DECODER 0
++#define CONFIG_HEVC_V4L2M2M_DECODER 0
++#define CONFIG_HNM4_VIDEO_DECODER 0
++#define CONFIG_HQ_HQA_DECODER 0
++#define CONFIG_HQX_DECODER 0
++#define CONFIG_HUFFYUV_DECODER 0
++#define CONFIG_HYMT_DECODER 0
++#define CONFIG_IDCIN_DECODER 0
++#define CONFIG_IFF_ILBM_DECODER 0
++#define CONFIG_IMM4_DECODER 0
++#define CONFIG_IMM5_DECODER 0
++#define CONFIG_INDEO2_DECODER 0
++#define CONFIG_INDEO3_DECODER 0
++#define CONFIG_INDEO4_DECODER 0
++#define CONFIG_INDEO5_DECODER 0
++#define CONFIG_INTERPLAY_VIDEO_DECODER 0
++#define CONFIG_IPU_DECODER 0
++#define CONFIG_JPEG2000_DECODER 0
++#define CONFIG_JPEGLS_DECODER 0
++#define CONFIG_JV_DECODER 0
++#define CONFIG_KGV1_DECODER 0
++#define CONFIG_KMVC_DECODER 0
++#define CONFIG_LAGARITH_DECODER 0
++#define CONFIG_LOCO_DECODER 0
++#define CONFIG_LSCR_DECODER 0
++#define CONFIG_M101_DECODER 0
++#define CONFIG_MAGICYUV_DECODER 0
++#define CONFIG_MDEC_DECODER 0
++#define CONFIG_MIMIC_DECODER 0
++#define CONFIG_MJPEG_DECODER 0
++#define CONFIG_MJPEGB_DECODER 0
++#define CONFIG_MMVIDEO_DECODER 0
++#define CONFIG_MOBICLIP_DECODER 0
++#define CONFIG_MOTIONPIXELS_DECODER 0
++#define CONFIG_MPEG1VIDEO_DECODER 0
++#define CONFIG_MPEG2VIDEO_DECODER 0
++#define CONFIG_MPEG4_DECODER 0
++#define CONFIG_MPEG4_CRYSTALHD_DECODER 0
++#define CONFIG_MPEG4_V4L2M2M_DECODER 0
++#define CONFIG_MPEG4_MMAL_DECODER 0
++#define CONFIG_MPEGVIDEO_DECODER 0
++#define CONFIG_MPEG1_V4L2M2M_DECODER 0
++#define CONFIG_MPEG2_MMAL_DECODER 0
++#define CONFIG_MPEG2_CRYSTALHD_DECODER 0
++#define CONFIG_MPEG2_V4L2M2M_DECODER 0
++#define CONFIG_MPEG2_QSV_DECODER 0
++#define CONFIG_MPEG2_MEDIACODEC_DECODER 0
++#define CONFIG_MSA1_DECODER 0
++#define CONFIG_MSCC_DECODER 0
++#define CONFIG_MSMPEG4V1_DECODER 0
++#define CONFIG_MSMPEG4V2_DECODER 0
++#define CONFIG_MSMPEG4V3_DECODER 0
++#define CONFIG_MSMPEG4_CRYSTALHD_DECODER 0
++#define CONFIG_MSP2_DECODER 0
++#define CONFIG_MSRLE_DECODER 0
++#define CONFIG_MSS1_DECODER 0
++#define CONFIG_MSS2_DECODER 0
++#define CONFIG_MSVIDEO1_DECODER 0
++#define CONFIG_MSZH_DECODER 0
++#define CONFIG_MTS2_DECODER 0
++#define CONFIG_MV30_DECODER 0
++#define CONFIG_MVC1_DECODER 0
++#define CONFIG_MVC2_DECODER 0
++#define CONFIG_MVDV_DECODER 0
++#define CONFIG_MVHA_DECODER 0
++#define CONFIG_MWSC_DECODER 0
++#define CONFIG_MXPEG_DECODER 0
++#define CONFIG_NOTCHLC_DECODER 0
++#define CONFIG_NUV_DECODER 0
++#define CONFIG_PAF_VIDEO_DECODER 0
++#define CONFIG_PAM_DECODER 0
++#define CONFIG_PBM_DECODER 0
++#define CONFIG_PCX_DECODER 0
++#define CONFIG_PFM_DECODER 0
++#define CONFIG_PGM_DECODER 0
++#define CONFIG_PGMYUV_DECODER 0
++#define CONFIG_PGX_DECODER 0
++#define CONFIG_PHOTOCD_DECODER 0
++#define CONFIG_PICTOR_DECODER 0
++#define CONFIG_PIXLET_DECODER 0
++#define CONFIG_PNG_DECODER 0
++#define CONFIG_PPM_DECODER 0
++#define CONFIG_PRORES_DECODER 0
++#define CONFIG_PROSUMER_DECODER 0
++#define CONFIG_PSD_DECODER 0
++#define CONFIG_PTX_DECODER 0
++#define CONFIG_QDRAW_DECODER 0
++#define CONFIG_QPEG_DECODER 0
++#define CONFIG_QTRLE_DECODER 0
++#define CONFIG_R10K_DECODER 0
++#define CONFIG_R210_DECODER 0
++#define CONFIG_RASC_DECODER 0
++#define CONFIG_RAWVIDEO_DECODER 0
++#define CONFIG_RL2_DECODER 0
++#define CONFIG_ROQ_DECODER 0
++#define CONFIG_RPZA_DECODER 0
++#define CONFIG_RSCC_DECODER 0
++#define CONFIG_RV10_DECODER 0
++#define CONFIG_RV20_DECODER 0
++#define CONFIG_RV30_DECODER 0
++#define CONFIG_RV40_DECODER 0
++#define CONFIG_S302M_DECODER 0
++#define CONFIG_SANM_DECODER 0
++#define CONFIG_SCPR_DECODER 0
++#define CONFIG_SCREENPRESSO_DECODER 0
++#define CONFIG_SGA_DECODER 0
++#define CONFIG_SGI_DECODER 0
++#define CONFIG_SGIRLE_DECODER 0
++#define CONFIG_SHEERVIDEO_DECODER 0
++#define CONFIG_SIMBIOSIS_IMX_DECODER 0
++#define CONFIG_SMACKER_DECODER 0
++#define CONFIG_SMC_DECODER 0
++#define CONFIG_SMVJPEG_DECODER 0
++#define CONFIG_SNOW_DECODER 0
++#define CONFIG_SP5X_DECODER 0
++#define CONFIG_SPEEDHQ_DECODER 0
++#define CONFIG_SRGC_DECODER 0
++#define CONFIG_SUNRAST_DECODER 0
++#define CONFIG_SVQ1_DECODER 0
++#define CONFIG_SVQ3_DECODER 0
++#define CONFIG_TARGA_DECODER 0
++#define CONFIG_TARGA_Y216_DECODER 0
++#define CONFIG_TDSC_DECODER 0
++#define CONFIG_THEORA_DECODER 1
++#define CONFIG_THP_DECODER 0
++#define CONFIG_TIERTEXSEQVIDEO_DECODER 0
++#define CONFIG_TIFF_DECODER 0
++#define CONFIG_TMV_DECODER 0
++#define CONFIG_TRUEMOTION1_DECODER 0
++#define CONFIG_TRUEMOTION2_DECODER 0
++#define CONFIG_TRUEMOTION2RT_DECODER 0
++#define CONFIG_TSCC_DECODER 0
++#define CONFIG_TSCC2_DECODER 0
++#define CONFIG_TXD_DECODER 0
++#define CONFIG_ULTI_DECODER 0
++#define CONFIG_UTVIDEO_DECODER 0
++#define CONFIG_V210_DECODER 0
++#define CONFIG_V210X_DECODER 0
++#define CONFIG_V308_DECODER 0
++#define CONFIG_V408_DECODER 0
++#define CONFIG_V410_DECODER 0
++#define CONFIG_VB_DECODER 0
++#define CONFIG_VBLE_DECODER 0
++#define CONFIG_VC1_DECODER 0
++#define CONFIG_VC1_CRYSTALHD_DECODER 0
++#define CONFIG_VC1IMAGE_DECODER 0
++#define CONFIG_VC1_MMAL_DECODER 0
++#define CONFIG_VC1_QSV_DECODER 0
++#define CONFIG_VC1_V4L2M2M_DECODER 0
++#define CONFIG_VCR1_DECODER 0
++#define CONFIG_VMDVIDEO_DECODER 0
++#define CONFIG_VMNC_DECODER 0
++#define CONFIG_VP3_DECODER 1
++#define CONFIG_VP4_DECODER 0
++#define CONFIG_VP5_DECODER 0
++#define CONFIG_VP6_DECODER 0
++#define CONFIG_VP6A_DECODER 0
++#define CONFIG_VP6F_DECODER 0
++#define CONFIG_VP7_DECODER 0
++#define CONFIG_VP8_DECODER 1
++#define CONFIG_VP8_RKMPP_DECODER 0
++#define CONFIG_VP8_V4L2M2M_DECODER 0
++#define CONFIG_VP9_DECODER 0
++#define CONFIG_VP9_RKMPP_DECODER 0
++#define CONFIG_VP9_V4L2M2M_DECODER 0
++#define CONFIG_VQA_DECODER 0
++#define CONFIG_WEBP_DECODER 0
++#define CONFIG_WCMV_DECODER 0
++#define CONFIG_WRAPPED_AVFRAME_DECODER 0
++#define CONFIG_WMV1_DECODER 0
++#define CONFIG_WMV2_DECODER 0
++#define CONFIG_WMV3_DECODER 0
++#define CONFIG_WMV3_CRYSTALHD_DECODER 0
++#define CONFIG_WMV3IMAGE_DECODER 0
++#define CONFIG_WNV1_DECODER 0
++#define CONFIG_XAN_WC3_DECODER 0
++#define CONFIG_XAN_WC4_DECODER 0
++#define CONFIG_XBM_DECODER 0
++#define CONFIG_XFACE_DECODER 0
++#define CONFIG_XL_DECODER 0
++#define CONFIG_XPM_DECODER 0
++#define CONFIG_XWD_DECODER 0
++#define CONFIG_Y41P_DECODER 0
++#define CONFIG_YLC_DECODER 0
++#define CONFIG_YOP_DECODER 0
++#define CONFIG_YUV4_DECODER 0
++#define CONFIG_ZERO12V_DECODER 0
++#define CONFIG_ZEROCODEC_DECODER 0
++#define CONFIG_ZLIB_DECODER 0
++#define CONFIG_ZMBV_DECODER 0
++#define CONFIG_AAC_DECODER 1
++#define CONFIG_AAC_FIXED_DECODER 0
++#define CONFIG_AAC_LATM_DECODER 0
++#define CONFIG_AC3_DECODER 0
++#define CONFIG_AC3_FIXED_DECODER 0
++#define CONFIG_ACELP_KELVIN_DECODER 0
++#define CONFIG_ALAC_DECODER 0
++#define CONFIG_ALS_DECODER 0
++#define CONFIG_AMRNB_DECODER 0
++#define CONFIG_AMRWB_DECODER 0
++#define CONFIG_APE_DECODER 0
++#define CONFIG_APTX_DECODER 0
++#define CONFIG_APTX_HD_DECODER 0
++#define CONFIG_ATRAC1_DECODER 0
++#define CONFIG_ATRAC3_DECODER 0
++#define CONFIG_ATRAC3AL_DECODER 0
++#define CONFIG_ATRAC3P_DECODER 0
++#define CONFIG_ATRAC3PAL_DECODER 0
++#define CONFIG_ATRAC9_DECODER 0
++#define CONFIG_BINKAUDIO_DCT_DECODER 0
++#define CONFIG_BINKAUDIO_RDFT_DECODER 0
++#define CONFIG_BMV_AUDIO_DECODER 0
++#define CONFIG_COOK_DECODER 0
++#define CONFIG_DCA_DECODER 0
++#define CONFIG_DOLBY_E_DECODER 0
++#define CONFIG_DSD_LSBF_DECODER 0
++#define CONFIG_DSD_MSBF_DECODER 0
++#define CONFIG_DSD_LSBF_PLANAR_DECODER 0
++#define CONFIG_DSD_MSBF_PLANAR_DECODER 0
++#define CONFIG_DSICINAUDIO_DECODER 0
++#define CONFIG_DSS_SP_DECODER 0
++#define CONFIG_DST_DECODER 0
++#define CONFIG_EAC3_DECODER 0
++#define CONFIG_EVRC_DECODER 0
++#define CONFIG_FASTAUDIO_DECODER 0
++#define CONFIG_FFWAVESYNTH_DECODER 0
++#define CONFIG_FLAC_DECODER 1
++#define CONFIG_G723_1_DECODER 0
++#define CONFIG_G729_DECODER 0
++#define CONFIG_GSM_DECODER 0
++#define CONFIG_GSM_MS_DECODER 0
++#define CONFIG_HCA_DECODER 0
++#define CONFIG_HCOM_DECODER 0
++#define CONFIG_IAC_DECODER 0
++#define CONFIG_ILBC_DECODER 0
++#define CONFIG_IMC_DECODER 0
++#define CONFIG_INTERPLAY_ACM_DECODER 0
++#define CONFIG_MACE3_DECODER 0
++#define CONFIG_MACE6_DECODER 0
++#define CONFIG_METASOUND_DECODER 0
++#define CONFIG_MLP_DECODER 0
++#define CONFIG_MP1_DECODER 0
++#define CONFIG_MP1FLOAT_DECODER 0
++#define CONFIG_MP2_DECODER 0
++#define CONFIG_MP2FLOAT_DECODER 0
++#define CONFIG_MP3FLOAT_DECODER 0
++#define CONFIG_MP3_DECODER 1
++#define CONFIG_MP3ADUFLOAT_DECODER 0
++#define CONFIG_MP3ADU_DECODER 0
++#define CONFIG_MP3ON4FLOAT_DECODER 0
++#define CONFIG_MP3ON4_DECODER 0
++#define CONFIG_MPC7_DECODER 0
++#define CONFIG_MPC8_DECODER 0
++#define CONFIG_NELLYMOSER_DECODER 0
++#define CONFIG_ON2AVC_DECODER 0
++#define CONFIG_OPUS_DECODER 0
++#define CONFIG_PAF_AUDIO_DECODER 0
++#define CONFIG_QCELP_DECODER 0
++#define CONFIG_QDM2_DECODER 0
++#define CONFIG_QDMC_DECODER 0
++#define CONFIG_RA_144_DECODER 0
++#define CONFIG_RA_288_DECODER 0
++#define CONFIG_RALF_DECODER 0
++#define CONFIG_SBC_DECODER 0
++#define CONFIG_SHORTEN_DECODER 0
++#define CONFIG_SIPR_DECODER 0
++#define CONFIG_SIREN_DECODER 0
++#define CONFIG_SMACKAUD_DECODER 0
++#define CONFIG_SONIC_DECODER 0
++#define CONFIG_TAK_DECODER 0
++#define CONFIG_TRUEHD_DECODER 0
++#define CONFIG_TRUESPEECH_DECODER 0
++#define CONFIG_TTA_DECODER 0
++#define CONFIG_TWINVQ_DECODER 0
++#define CONFIG_VMDAUDIO_DECODER 0
++#define CONFIG_VORBIS_DECODER 1
++#define CONFIG_WAVPACK_DECODER 0
++#define CONFIG_WMALOSSLESS_DECODER 0
++#define CONFIG_WMAPRO_DECODER 0
++#define CONFIG_WMAV1_DECODER 0
++#define CONFIG_WMAV2_DECODER 0
++#define CONFIG_WMAVOICE_DECODER 0
++#define CONFIG_WS_SND1_DECODER 0
++#define CONFIG_XMA1_DECODER 0
++#define CONFIG_XMA2_DECODER 0
++#define CONFIG_PCM_ALAW_DECODER 1
++#define CONFIG_PCM_BLURAY_DECODER 0
++#define CONFIG_PCM_DVD_DECODER 0
++#define CONFIG_PCM_F16LE_DECODER 0
++#define CONFIG_PCM_F24LE_DECODER 0
++#define CONFIG_PCM_F32BE_DECODER 0
++#define CONFIG_PCM_F32LE_DECODER 1
++#define CONFIG_PCM_F64BE_DECODER 0
++#define CONFIG_PCM_F64LE_DECODER 0
++#define CONFIG_PCM_LXF_DECODER 0
++#define CONFIG_PCM_MULAW_DECODER 1
++#define CONFIG_PCM_S8_DECODER 0
++#define CONFIG_PCM_S8_PLANAR_DECODER 0
++#define CONFIG_PCM_S16BE_DECODER 1
++#define CONFIG_PCM_S16BE_PLANAR_DECODER 0
++#define CONFIG_PCM_S16LE_DECODER 1
++#define CONFIG_PCM_S16LE_PLANAR_DECODER 0
++#define CONFIG_PCM_S24BE_DECODER 1
++#define CONFIG_PCM_S24DAUD_DECODER 0
++#define CONFIG_PCM_S24LE_DECODER 1
++#define CONFIG_PCM_S24LE_PLANAR_DECODER 0
++#define CONFIG_PCM_S32BE_DECODER 0
++#define CONFIG_PCM_S32LE_DECODER 1
++#define CONFIG_PCM_S32LE_PLANAR_DECODER 0
++#define CONFIG_PCM_S64BE_DECODER 0
++#define CONFIG_PCM_S64LE_DECODER 0
++#define CONFIG_PCM_SGA_DECODER 0
++#define CONFIG_PCM_U8_DECODER 1
++#define CONFIG_PCM_U16BE_DECODER 0
++#define CONFIG_PCM_U16LE_DECODER 0
++#define CONFIG_PCM_U24BE_DECODER 0
++#define CONFIG_PCM_U24LE_DECODER 0
++#define CONFIG_PCM_U32BE_DECODER 0
++#define CONFIG_PCM_U32LE_DECODER 0
++#define CONFIG_PCM_VIDC_DECODER 0
++#define CONFIG_DERF_DPCM_DECODER 0
++#define CONFIG_GREMLIN_DPCM_DECODER 0
++#define CONFIG_INTERPLAY_DPCM_DECODER 0
++#define CONFIG_ROQ_DPCM_DECODER 0
++#define CONFIG_SDX2_DPCM_DECODER 0
++#define CONFIG_SOL_DPCM_DECODER 0
++#define CONFIG_XAN_DPCM_DECODER 0
++#define CONFIG_ADPCM_4XM_DECODER 0
++#define CONFIG_ADPCM_ADX_DECODER 0
++#define CONFIG_ADPCM_AFC_DECODER 0
++#define CONFIG_ADPCM_AGM_DECODER 0
++#define CONFIG_ADPCM_AICA_DECODER 0
++#define CONFIG_ADPCM_ARGO_DECODER 0
++#define CONFIG_ADPCM_CT_DECODER 0
++#define CONFIG_ADPCM_DTK_DECODER 0
++#define CONFIG_ADPCM_EA_DECODER 0
++#define CONFIG_ADPCM_EA_MAXIS_XA_DECODER 0
++#define CONFIG_ADPCM_EA_R1_DECODER 0
++#define CONFIG_ADPCM_EA_R2_DECODER 0
++#define CONFIG_ADPCM_EA_R3_DECODER 0
++#define CONFIG_ADPCM_EA_XAS_DECODER 0
++#define CONFIG_ADPCM_G722_DECODER 0
++#define CONFIG_ADPCM_G726_DECODER 0
++#define CONFIG_ADPCM_G726LE_DECODER 0
++#define CONFIG_ADPCM_IMA_ACORN_DECODER 0
++#define CONFIG_ADPCM_IMA_AMV_DECODER 0
++#define CONFIG_ADPCM_IMA_ALP_DECODER 0
++#define CONFIG_ADPCM_IMA_APC_DECODER 0
++#define CONFIG_ADPCM_IMA_APM_DECODER 0
++#define CONFIG_ADPCM_IMA_CUNNING_DECODER 0
++#define CONFIG_ADPCM_IMA_DAT4_DECODER 0
++#define CONFIG_ADPCM_IMA_DK3_DECODER 0
++#define CONFIG_ADPCM_IMA_DK4_DECODER 0
++#define CONFIG_ADPCM_IMA_EA_EACS_DECODER 0
++#define CONFIG_ADPCM_IMA_EA_SEAD_DECODER 0
++#define CONFIG_ADPCM_IMA_ISS_DECODER 0
++#define CONFIG_ADPCM_IMA_MOFLEX_DECODER 0
++#define CONFIG_ADPCM_IMA_MTF_DECODER 0
++#define CONFIG_ADPCM_IMA_OKI_DECODER 0
++#define CONFIG_ADPCM_IMA_QT_DECODER 0
++#define CONFIG_ADPCM_IMA_RAD_DECODER 0
++#define CONFIG_ADPCM_IMA_SSI_DECODER 0
++#define CONFIG_ADPCM_IMA_SMJPEG_DECODER 0
++#define CONFIG_ADPCM_IMA_WAV_DECODER 0
++#define CONFIG_ADPCM_IMA_WS_DECODER 0
++#define CONFIG_ADPCM_MS_DECODER 0
++#define CONFIG_ADPCM_MTAF_DECODER 0
++#define CONFIG_ADPCM_PSX_DECODER 0
++#define CONFIG_ADPCM_SBPRO_2_DECODER 0
++#define CONFIG_ADPCM_SBPRO_3_DECODER 0
++#define CONFIG_ADPCM_SBPRO_4_DECODER 0
++#define CONFIG_ADPCM_SWF_DECODER 0
++#define CONFIG_ADPCM_THP_DECODER 0
++#define CONFIG_ADPCM_THP_LE_DECODER 0
++#define CONFIG_ADPCM_VIMA_DECODER 0
++#define CONFIG_ADPCM_XA_DECODER 0
++#define CONFIG_ADPCM_YAMAHA_DECODER 0
++#define CONFIG_ADPCM_ZORK_DECODER 0
++#define CONFIG_SSA_DECODER 0
++#define CONFIG_ASS_DECODER 0
++#define CONFIG_CCAPTION_DECODER 0
++#define CONFIG_DVBSUB_DECODER 0
++#define CONFIG_DVDSUB_DECODER 0
++#define CONFIG_JACOSUB_DECODER 0
++#define CONFIG_MICRODVD_DECODER 0
++#define CONFIG_MOVTEXT_DECODER 0
++#define CONFIG_MPL2_DECODER 0
++#define CONFIG_PGSSUB_DECODER 0
++#define CONFIG_PJS_DECODER 0
++#define CONFIG_REALTEXT_DECODER 0
++#define CONFIG_SAMI_DECODER 0
++#define CONFIG_SRT_DECODER 0
++#define CONFIG_STL_DECODER 0
++#define CONFIG_SUBRIP_DECODER 0
++#define CONFIG_SUBVIEWER_DECODER 0
++#define CONFIG_SUBVIEWER1_DECODER 0
++#define CONFIG_TEXT_DECODER 0
++#define CONFIG_VPLAYER_DECODER 0
++#define CONFIG_WEBVTT_DECODER 0
++#define CONFIG_XSUB_DECODER 0
++#define CONFIG_AAC_AT_DECODER 0
++#define CONFIG_AC3_AT_DECODER 0
++#define CONFIG_ADPCM_IMA_QT_AT_DECODER 0
++#define CONFIG_ALAC_AT_DECODER 0
++#define CONFIG_AMR_NB_AT_DECODER 0
++#define CONFIG_EAC3_AT_DECODER 0
++#define CONFIG_GSM_MS_AT_DECODER 0
++#define CONFIG_ILBC_AT_DECODER 0
++#define CONFIG_MP1_AT_DECODER 0
++#define CONFIG_MP2_AT_DECODER 0
++#define CONFIG_MP3_AT_DECODER 0
++#define CONFIG_PCM_ALAW_AT_DECODER 0
++#define CONFIG_PCM_MULAW_AT_DECODER 0
++#define CONFIG_QDMC_AT_DECODER 0
++#define CONFIG_QDM2_AT_DECODER 0
++#define CONFIG_LIBARIBB24_DECODER 0
++#define CONFIG_LIBCELT_DECODER 0
++#define CONFIG_LIBCODEC2_DECODER 0
++#define CONFIG_LIBDAV1D_DECODER 0
++#define CONFIG_LIBDAVS2_DECODER 0
++#define CONFIG_LIBFDK_AAC_DECODER 0
++#define CONFIG_LIBGSM_DECODER 0
++#define CONFIG_LIBGSM_MS_DECODER 0
++#define CONFIG_LIBILBC_DECODER 0
++#define CONFIG_LIBOPENCORE_AMRNB_DECODER 0
++#define CONFIG_LIBOPENCORE_AMRWB_DECODER 0
++#define CONFIG_LIBOPENJPEG_DECODER 0
++#define CONFIG_LIBOPUS_DECODER 1
++#define CONFIG_LIBRSVG_DECODER 0
++#define CONFIG_LIBSPEEX_DECODER 0
++#define CONFIG_LIBUAVS3D_DECODER 0
++#define CONFIG_LIBVORBIS_DECODER 0
++#define CONFIG_LIBVPX_VP8_DECODER 0
++#define CONFIG_LIBVPX_VP9_DECODER 0
++#define CONFIG_LIBZVBI_TELETEXT_DECODER 0
++#define CONFIG_BINTEXT_DECODER 0
++#define CONFIG_XBIN_DECODER 0
++#define CONFIG_IDF_DECODER 0
++#define CONFIG_LIBAOM_AV1_DECODER 0
++#define CONFIG_AV1_DECODER 0
++#define CONFIG_AV1_CUVID_DECODER 0
++#define CONFIG_AV1_QSV_DECODER 0
++#define CONFIG_LIBOPENH264_DECODER 0
++#define CONFIG_H264_CUVID_DECODER 0
++#define CONFIG_HEVC_CUVID_DECODER 0
++#define CONFIG_HEVC_MEDIACODEC_DECODER 0
++#define CONFIG_MJPEG_CUVID_DECODER 0
++#define CONFIG_MJPEG_QSV_DECODER 0
++#define CONFIG_MPEG1_CUVID_DECODER 0
++#define CONFIG_MPEG2_CUVID_DECODER 0
++#define CONFIG_MPEG4_CUVID_DECODER 0
++#define CONFIG_MPEG4_MEDIACODEC_DECODER 0
++#define CONFIG_VC1_CUVID_DECODER 0
++#define CONFIG_VP8_CUVID_DECODER 0
++#define CONFIG_VP8_MEDIACODEC_DECODER 0
++#define CONFIG_VP8_QSV_DECODER 0
++#define CONFIG_VP9_CUVID_DECODER 0
++#define CONFIG_VP9_MEDIACODEC_DECODER 0
++#define CONFIG_VP9_QSV_DECODER 0
++#define CONFIG_A64MULTI_ENCODER 0
++#define CONFIG_A64MULTI5_ENCODER 0
++#define CONFIG_ALIAS_PIX_ENCODER 0
++#define CONFIG_AMV_ENCODER 0
++#define CONFIG_APNG_ENCODER 0
++#define CONFIG_ASV1_ENCODER 0
++#define CONFIG_ASV2_ENCODER 0
++#define CONFIG_AVRP_ENCODER 0
++#define CONFIG_AVUI_ENCODER 0
++#define CONFIG_AYUV_ENCODER 0
++#define CONFIG_BMP_ENCODER 0
++#define CONFIG_CFHD_ENCODER 0
++#define CONFIG_CINEPAK_ENCODER 0
++#define CONFIG_CLJR_ENCODER 0
++#define CONFIG_COMFORTNOISE_ENCODER 0
++#define CONFIG_DNXHD_ENCODER 0
++#define CONFIG_DPX_ENCODER 0
++#define CONFIG_DVVIDEO_ENCODER 0
++#define CONFIG_EXR_ENCODER 0
++#define CONFIG_FFV1_ENCODER 0
++#define CONFIG_FFVHUFF_ENCODER 0
++#define CONFIG_FITS_ENCODER 0
++#define CONFIG_FLASHSV_ENCODER 0
++#define CONFIG_FLASHSV2_ENCODER 0
++#define CONFIG_FLV_ENCODER 0
++#define CONFIG_GIF_ENCODER 0
++#define CONFIG_H261_ENCODER 0
++#define CONFIG_H263_ENCODER 0
++#define CONFIG_H263P_ENCODER 0
++#define CONFIG_HAP_ENCODER 0
++#define CONFIG_HUFFYUV_ENCODER 0
++#define CONFIG_JPEG2000_ENCODER 0
++#define CONFIG_JPEGLS_ENCODER 0
++#define CONFIG_LJPEG_ENCODER 0
++#define CONFIG_MAGICYUV_ENCODER 0
++#define CONFIG_MJPEG_ENCODER 0
++#define CONFIG_MPEG1VIDEO_ENCODER 0
++#define CONFIG_MPEG2VIDEO_ENCODER 0
++#define CONFIG_MPEG4_ENCODER 0
++#define CONFIG_MSMPEG4V2_ENCODER 0
++#define CONFIG_MSMPEG4V3_ENCODER 0
++#define CONFIG_MSVIDEO1_ENCODER 0
++#define CONFIG_PAM_ENCODER 0
++#define CONFIG_PBM_ENCODER 0
++#define CONFIG_PCX_ENCODER 0
++#define CONFIG_PFM_ENCODER 0
++#define CONFIG_PGM_ENCODER 0
++#define CONFIG_PGMYUV_ENCODER 0
++#define CONFIG_PNG_ENCODER 0
++#define CONFIG_PPM_ENCODER 0
++#define CONFIG_PRORES_ENCODER 0
++#define CONFIG_PRORES_AW_ENCODER 0
++#define CONFIG_PRORES_KS_ENCODER 0
++#define CONFIG_QTRLE_ENCODER 0
++#define CONFIG_R10K_ENCODER 0
++#define CONFIG_R210_ENCODER 0
++#define CONFIG_RAWVIDEO_ENCODER 0
++#define CONFIG_ROQ_ENCODER 0
++#define CONFIG_RPZA_ENCODER 0
++#define CONFIG_RV10_ENCODER 0
++#define CONFIG_RV20_ENCODER 0
++#define CONFIG_S302M_ENCODER 0
++#define CONFIG_SGI_ENCODER 0
++#define CONFIG_SNOW_ENCODER 0
++#define CONFIG_SPEEDHQ_ENCODER 0
++#define CONFIG_SUNRAST_ENCODER 0
++#define CONFIG_SVQ1_ENCODER 0
++#define CONFIG_TARGA_ENCODER 0
++#define CONFIG_TIFF_ENCODER 0
++#define CONFIG_UTVIDEO_ENCODER 0
++#define CONFIG_V210_ENCODER 0
++#define CONFIG_V308_ENCODER 0
++#define CONFIG_V408_ENCODER 0
++#define CONFIG_V410_ENCODER 0
++#define CONFIG_VC2_ENCODER 0
++#define CONFIG_WRAPPED_AVFRAME_ENCODER 0
++#define CONFIG_WMV1_ENCODER 0
++#define CONFIG_WMV2_ENCODER 0
++#define CONFIG_XBM_ENCODER 0
++#define CONFIG_XFACE_ENCODER 0
++#define CONFIG_XWD_ENCODER 0
++#define CONFIG_Y41P_ENCODER 0
++#define CONFIG_YUV4_ENCODER 0
++#define CONFIG_ZLIB_ENCODER 0
++#define CONFIG_ZMBV_ENCODER 0
++#define CONFIG_AAC_ENCODER 0
++#define CONFIG_AC3_ENCODER 0
++#define CONFIG_AC3_FIXED_ENCODER 0
++#define CONFIG_ALAC_ENCODER 0
++#define CONFIG_APTX_ENCODER 0
++#define CONFIG_APTX_HD_ENCODER 0
++#define CONFIG_DCA_ENCODER 0
++#define CONFIG_EAC3_ENCODER 0
++#define CONFIG_FLAC_ENCODER 0
++#define CONFIG_G723_1_ENCODER 0
++#define CONFIG_MLP_ENCODER 0
++#define CONFIG_MP2_ENCODER 0
++#define CONFIG_MP2FIXED_ENCODER 0
++#define CONFIG_NELLYMOSER_ENCODER 0
++#define CONFIG_OPUS_ENCODER 0
++#define CONFIG_RA_144_ENCODER 0
++#define CONFIG_SBC_ENCODER 0
++#define CONFIG_SONIC_ENCODER 0
++#define CONFIG_SONIC_LS_ENCODER 0
++#define CONFIG_TRUEHD_ENCODER 0
++#define CONFIG_TTA_ENCODER 0
++#define CONFIG_VORBIS_ENCODER 0
++#define CONFIG_WAVPACK_ENCODER 0
++#define CONFIG_WMAV1_ENCODER 0
++#define CONFIG_WMAV2_ENCODER 0
++#define CONFIG_PCM_ALAW_ENCODER 0
++#define CONFIG_PCM_DVD_ENCODER 0
++#define CONFIG_PCM_F32BE_ENCODER 0
++#define CONFIG_PCM_F32LE_ENCODER 0
++#define CONFIG_PCM_F64BE_ENCODER 0
++#define CONFIG_PCM_F64LE_ENCODER 0
++#define CONFIG_PCM_MULAW_ENCODER 0
++#define CONFIG_PCM_S8_ENCODER 0
++#define CONFIG_PCM_S8_PLANAR_ENCODER 0
++#define CONFIG_PCM_S16BE_ENCODER 0
++#define CONFIG_PCM_S16BE_PLANAR_ENCODER 0
++#define CONFIG_PCM_S16LE_ENCODER 0
++#define CONFIG_PCM_S16LE_PLANAR_ENCODER 0
++#define CONFIG_PCM_S24BE_ENCODER 0
++#define CONFIG_PCM_S24DAUD_ENCODER 0
++#define CONFIG_PCM_S24LE_ENCODER 0
++#define CONFIG_PCM_S24LE_PLANAR_ENCODER 0
++#define CONFIG_PCM_S32BE_ENCODER 0
++#define CONFIG_PCM_S32LE_ENCODER 0
++#define CONFIG_PCM_S32LE_PLANAR_ENCODER 0
++#define CONFIG_PCM_S64BE_ENCODER 0
++#define CONFIG_PCM_S64LE_ENCODER 0
++#define CONFIG_PCM_U8_ENCODER 0
++#define CONFIG_PCM_U16BE_ENCODER 0
++#define CONFIG_PCM_U16LE_ENCODER 0
++#define CONFIG_PCM_U24BE_ENCODER 0
++#define CONFIG_PCM_U24LE_ENCODER 0
++#define CONFIG_PCM_U32BE_ENCODER 0
++#define CONFIG_PCM_U32LE_ENCODER 0
++#define CONFIG_PCM_VIDC_ENCODER 0
++#define CONFIG_ROQ_DPCM_ENCODER 0
++#define CONFIG_ADPCM_ADX_ENCODER 0
++#define CONFIG_ADPCM_ARGO_ENCODER 0
++#define CONFIG_ADPCM_G722_ENCODER 0
++#define CONFIG_ADPCM_G726_ENCODER 0
++#define CONFIG_ADPCM_G726LE_ENCODER 0
++#define CONFIG_ADPCM_IMA_AMV_ENCODER 0
++#define CONFIG_ADPCM_IMA_ALP_ENCODER 0
++#define CONFIG_ADPCM_IMA_APM_ENCODER 0
++#define CONFIG_ADPCM_IMA_QT_ENCODER 0
++#define CONFIG_ADPCM_IMA_SSI_ENCODER 0
++#define CONFIG_ADPCM_IMA_WAV_ENCODER 0
++#define CONFIG_ADPCM_IMA_WS_ENCODER 0
++#define CONFIG_ADPCM_MS_ENCODER 0
++#define CONFIG_ADPCM_SWF_ENCODER 0
++#define CONFIG_ADPCM_YAMAHA_ENCODER 0
++#define CONFIG_SSA_ENCODER 0
++#define CONFIG_ASS_ENCODER 0
++#define CONFIG_DVBSUB_ENCODER 0
++#define CONFIG_DVDSUB_ENCODER 0
++#define CONFIG_MOVTEXT_ENCODER 0
++#define CONFIG_SRT_ENCODER 0
++#define CONFIG_SUBRIP_ENCODER 0
++#define CONFIG_TEXT_ENCODER 0
++#define CONFIG_TTML_ENCODER 0
++#define CONFIG_WEBVTT_ENCODER 0
++#define CONFIG_XSUB_ENCODER 0
++#define CONFIG_AAC_AT_ENCODER 0
++#define CONFIG_ALAC_AT_ENCODER 0
++#define CONFIG_ILBC_AT_ENCODER 0
++#define CONFIG_PCM_ALAW_AT_ENCODER 0
++#define CONFIG_PCM_MULAW_AT_ENCODER 0
++#define CONFIG_LIBAOM_AV1_ENCODER 0
++#define CONFIG_LIBCODEC2_ENCODER 0
++#define CONFIG_LIBFDK_AAC_ENCODER 0
++#define CONFIG_LIBGSM_ENCODER 0
++#define CONFIG_LIBGSM_MS_ENCODER 0
++#define CONFIG_LIBILBC_ENCODER 0
++#define CONFIG_LIBMP3LAME_ENCODER 0
++#define CONFIG_LIBOPENCORE_AMRNB_ENCODER 0
++#define CONFIG_LIBOPENJPEG_ENCODER 0
++#define CONFIG_LIBOPUS_ENCODER 0
++#define CONFIG_LIBRAV1E_ENCODER 0
++#define CONFIG_LIBSHINE_ENCODER 0
++#define CONFIG_LIBSPEEX_ENCODER 0
++#define CONFIG_LIBSVTAV1_ENCODER 0
++#define CONFIG_LIBTHEORA_ENCODER 0
++#define CONFIG_LIBTWOLAME_ENCODER 0
++#define CONFIG_LIBVO_AMRWBENC_ENCODER 0
++#define CONFIG_LIBVORBIS_ENCODER 0
++#define CONFIG_LIBVPX_VP8_ENCODER 0
++#define CONFIG_LIBVPX_VP9_ENCODER 0
++#define CONFIG_LIBWEBP_ANIM_ENCODER 0
++#define CONFIG_LIBWEBP_ENCODER 0
++#define CONFIG_LIBX262_ENCODER 0
++#define CONFIG_LIBX264_ENCODER 0
++#define CONFIG_LIBX264_ENCODER 0
++#define CONFIG_LIBX264RGB_ENCODER 0
++#define CONFIG_LIBX265_ENCODER 0
++#define CONFIG_LIBXAVS_ENCODER 0
++#define CONFIG_LIBXAVS2_ENCODER 0
++#define CONFIG_LIBXVID_ENCODER 0
++#define CONFIG_AAC_MF_ENCODER 0
++#define CONFIG_AC3_MF_ENCODER 0
++#define CONFIG_H263_V4L2M2M_ENCODER 0
++#define CONFIG_LIBOPENH264_ENCODER 0
++#define CONFIG_H264_AMF_ENCODER 0
++#define CONFIG_H264_MF_ENCODER 0
++#define CONFIG_H264_NVENC_ENCODER 0
++#define CONFIG_H264_OMX_ENCODER 0
++#define CONFIG_H264_QSV_ENCODER 0
++#define CONFIG_H264_V4L2M2M_ENCODER 0
++#define CONFIG_H264_VAAPI_ENCODER 0
++#define CONFIG_H264_VIDEOTOOLBOX_ENCODER 0
++#define CONFIG_HEVC_AMF_ENCODER 0
++#define CONFIG_HEVC_MF_ENCODER 0
++#define CONFIG_HEVC_NVENC_ENCODER 0
++#define CONFIG_HEVC_QSV_ENCODER 0
++#define CONFIG_HEVC_V4L2M2M_ENCODER 0
++#define CONFIG_HEVC_VAAPI_ENCODER 0
++#define CONFIG_HEVC_VIDEOTOOLBOX_ENCODER 0
++#define CONFIG_LIBKVAZAAR_ENCODER 0
++#define CONFIG_MJPEG_QSV_ENCODER 0
++#define CONFIG_MJPEG_VAAPI_ENCODER 0
++#define CONFIG_MP3_MF_ENCODER 0
++#define CONFIG_MPEG2_QSV_ENCODER 0
++#define CONFIG_MPEG2_VAAPI_ENCODER 0
++#define CONFIG_MPEG4_OMX_ENCODER 0
++#define CONFIG_MPEG4_V4L2M2M_ENCODER 0
++#define CONFIG_VP8_V4L2M2M_ENCODER 0
++#define CONFIG_VP8_VAAPI_ENCODER 0
++#define CONFIG_VP9_VAAPI_ENCODER 0
++#define CONFIG_VP9_QSV_ENCODER 0
++#define CONFIG_AV1_D3D11VA_HWACCEL 0
++#define CONFIG_AV1_D3D11VA2_HWACCEL 0
++#define CONFIG_AV1_DXVA2_HWACCEL 0
++#define CONFIG_AV1_NVDEC_HWACCEL 0
++#define CONFIG_AV1_VAAPI_HWACCEL 0
++#define CONFIG_H263_VAAPI_HWACCEL 0
++#define CONFIG_H263_VIDEOTOOLBOX_HWACCEL 0
++#define CONFIG_H264_D3D11VA_HWACCEL 0
++#define CONFIG_H264_D3D11VA2_HWACCEL 0
++#define CONFIG_H264_DXVA2_HWACCEL 0
++#define CONFIG_H264_NVDEC_HWACCEL 0
++#define CONFIG_H264_VAAPI_HWACCEL 0
++#define CONFIG_H264_VDPAU_HWACCEL 0
++#define CONFIG_H264_VIDEOTOOLBOX_HWACCEL 0
++#define CONFIG_HEVC_D3D11VA_HWACCEL 0
++#define CONFIG_HEVC_D3D11VA2_HWACCEL 0
++#define CONFIG_HEVC_DXVA2_HWACCEL 0
++#define CONFIG_HEVC_NVDEC_HWACCEL 0
++#define CONFIG_HEVC_VAAPI_HWACCEL 0
++#define CONFIG_HEVC_VDPAU_HWACCEL 0
++#define CONFIG_HEVC_VIDEOTOOLBOX_HWACCEL 0
++#define CONFIG_MJPEG_NVDEC_HWACCEL 0
++#define CONFIG_MJPEG_VAAPI_HWACCEL 0
++#define CONFIG_MPEG1_NVDEC_HWACCEL 0
++#define CONFIG_MPEG1_VDPAU_HWACCEL 0
++#define CONFIG_MPEG1_VIDEOTOOLBOX_HWACCEL 0
++#define CONFIG_MPEG1_XVMC_HWACCEL 0
++#define CONFIG_MPEG2_D3D11VA_HWACCEL 0
++#define CONFIG_MPEG2_D3D11VA2_HWACCEL 0
++#define CONFIG_MPEG2_NVDEC_HWACCEL 0
++#define CONFIG_MPEG2_DXVA2_HWACCEL 0
++#define CONFIG_MPEG2_VAAPI_HWACCEL 0
++#define CONFIG_MPEG2_VDPAU_HWACCEL 0
++#define CONFIG_MPEG2_VIDEOTOOLBOX_HWACCEL 0
++#define CONFIG_MPEG2_XVMC_HWACCEL 0
++#define CONFIG_MPEG4_NVDEC_HWACCEL 0
++#define CONFIG_MPEG4_VAAPI_HWACCEL 0
++#define CONFIG_MPEG4_VDPAU_HWACCEL 0
++#define CONFIG_MPEG4_VIDEOTOOLBOX_HWACCEL 0
++#define CONFIG_VC1_D3D11VA_HWACCEL 0
++#define CONFIG_VC1_D3D11VA2_HWACCEL 0
++#define CONFIG_VC1_DXVA2_HWACCEL 0
++#define CONFIG_VC1_NVDEC_HWACCEL 0
++#define CONFIG_VC1_VAAPI_HWACCEL 0
++#define CONFIG_VC1_VDPAU_HWACCEL 0
++#define CONFIG_VP8_NVDEC_HWACCEL 0
++#define CONFIG_VP8_VAAPI_HWACCEL 0
++#define CONFIG_VP9_D3D11VA_HWACCEL 0
++#define CONFIG_VP9_D3D11VA2_HWACCEL 0
++#define CONFIG_VP9_DXVA2_HWACCEL 0
++#define CONFIG_VP9_NVDEC_HWACCEL 0
++#define CONFIG_VP9_VAAPI_HWACCEL 0
++#define CONFIG_VP9_VDPAU_HWACCEL 0
++#define CONFIG_WMV3_D3D11VA_HWACCEL 0
++#define CONFIG_WMV3_D3D11VA2_HWACCEL 0
++#define CONFIG_WMV3_DXVA2_HWACCEL 0
++#define CONFIG_WMV3_NVDEC_HWACCEL 0
++#define CONFIG_WMV3_VAAPI_HWACCEL 0
++#define CONFIG_WMV3_VDPAU_HWACCEL 0
++#define CONFIG_AAC_PARSER 1
++#define CONFIG_AAC_LATM_PARSER 0
++#define CONFIG_AC3_PARSER 0
++#define CONFIG_ADX_PARSER 0
++#define CONFIG_AV1_PARSER 0
++#define CONFIG_AVS2_PARSER 0
++#define CONFIG_AVS3_PARSER 0
++#define CONFIG_BMP_PARSER 0
++#define CONFIG_CAVSVIDEO_PARSER 0
++#define CONFIG_COOK_PARSER 0
++#define CONFIG_CRI_PARSER 0
++#define CONFIG_DCA_PARSER 0
++#define CONFIG_DIRAC_PARSER 0
++#define CONFIG_DNXHD_PARSER 0
++#define CONFIG_DOLBY_E_PARSER 0
++#define CONFIG_DPX_PARSER 0
++#define CONFIG_DVAUDIO_PARSER 0
++#define CONFIG_DVBSUB_PARSER 0
++#define CONFIG_DVDSUB_PARSER 0
++#define CONFIG_DVD_NAV_PARSER 0
++#define CONFIG_FLAC_PARSER 1
++#define CONFIG_G723_1_PARSER 0
++#define CONFIG_G729_PARSER 0
++#define CONFIG_GIF_PARSER 0
++#define CONFIG_GSM_PARSER 0
++#define CONFIG_H261_PARSER 0
++#define CONFIG_H263_PARSER 0
++#define CONFIG_H264_PARSER 1
++#define CONFIG_HEVC_PARSER 0
++#define CONFIG_IPU_PARSER 0
++#define CONFIG_JPEG2000_PARSER 0
++#define CONFIG_MJPEG_PARSER 0
++#define CONFIG_MLP_PARSER 0
++#define CONFIG_MPEG4VIDEO_PARSER 0
++#define CONFIG_MPEGAUDIO_PARSER 1
++#define CONFIG_MPEGVIDEO_PARSER 0
++#define CONFIG_OPUS_PARSER 1
++#define CONFIG_PNG_PARSER 0
++#define CONFIG_PNM_PARSER 0
++#define CONFIG_RV30_PARSER 0
++#define CONFIG_RV40_PARSER 0
++#define CONFIG_SBC_PARSER 0
++#define CONFIG_SIPR_PARSER 0
++#define CONFIG_TAK_PARSER 0
++#define CONFIG_VC1_PARSER 0
++#define CONFIG_VORBIS_PARSER 1
++#define CONFIG_VP3_PARSER 1
++#define CONFIG_VP8_PARSER 1
++#define CONFIG_VP9_PARSER 1
++#define CONFIG_WEBP_PARSER 0
++#define CONFIG_XBM_PARSER 0
++#define CONFIG_XMA_PARSER 0
++#define CONFIG_ALSA_INDEV 0
++#define CONFIG_ANDROID_CAMERA_INDEV 0
++#define CONFIG_AVFOUNDATION_INDEV 0
++#define CONFIG_BKTR_INDEV 0
++#define CONFIG_DECKLINK_INDEV 0
++#define CONFIG_DSHOW_INDEV 0
++#define CONFIG_FBDEV_INDEV 0
++#define CONFIG_GDIGRAB_INDEV 0
++#define CONFIG_IEC61883_INDEV 0
++#define CONFIG_JACK_INDEV 0
++#define CONFIG_KMSGRAB_INDEV 0
++#define CONFIG_LAVFI_INDEV 0
++#define CONFIG_OPENAL_INDEV 0
++#define CONFIG_OSS_INDEV 0
++#define CONFIG_PULSE_INDEV 0
++#define CONFIG_SNDIO_INDEV 0
++#define CONFIG_V4L2_INDEV 0
++#define CONFIG_VFWCAP_INDEV 0
++#define CONFIG_XCBGRAB_INDEV 0
++#define CONFIG_LIBCDIO_INDEV 0
++#define CONFIG_LIBDC1394_INDEV 0
++#define CONFIG_ALSA_OUTDEV 0
++#define CONFIG_AUDIOTOOLBOX_OUTDEV 0
++#define CONFIG_CACA_OUTDEV 0
++#define CONFIG_DECKLINK_OUTDEV 0
++#define CONFIG_FBDEV_OUTDEV 0
++#define CONFIG_OPENGL_OUTDEV 0
++#define CONFIG_OSS_OUTDEV 0
++#define CONFIG_PULSE_OUTDEV 0
++#define CONFIG_SDL2_OUTDEV 0
++#define CONFIG_SNDIO_OUTDEV 0
++#define CONFIG_V4L2_OUTDEV 0
++#define CONFIG_XV_OUTDEV 0
++#define CONFIG_ABENCH_FILTER 0
++#define CONFIG_ACOMPRESSOR_FILTER 0
++#define CONFIG_ACONTRAST_FILTER 0
++#define CONFIG_ACOPY_FILTER 0
++#define CONFIG_ACUE_FILTER 0
++#define CONFIG_ACROSSFADE_FILTER 0
++#define CONFIG_ACROSSOVER_FILTER 0
++#define CONFIG_ACRUSHER_FILTER 0
++#define CONFIG_ADECLICK_FILTER 0
++#define CONFIG_ADECLIP_FILTER 0
++#define CONFIG_ADELAY_FILTER 0
++#define CONFIG_ADENORM_FILTER 0
++#define CONFIG_ADERIVATIVE_FILTER 0
++#define CONFIG_AECHO_FILTER 0
++#define CONFIG_AEMPHASIS_FILTER 0
++#define CONFIG_AEVAL_FILTER 0
++#define CONFIG_AEXCITER_FILTER 0
++#define CONFIG_AFADE_FILTER 0
++#define CONFIG_AFFTDN_FILTER 0
++#define CONFIG_AFFTFILT_FILTER 0
++#define CONFIG_AFIR_FILTER 0
++#define CONFIG_AFORMAT_FILTER 0
++#define CONFIG_AFREQSHIFT_FILTER 0
++#define CONFIG_AGATE_FILTER 0
++#define CONFIG_AIIR_FILTER 0
++#define CONFIG_AINTEGRAL_FILTER 0
++#define CONFIG_AINTERLEAVE_FILTER 0
++#define CONFIG_ALIMITER_FILTER 0
++#define CONFIG_ALLPASS_FILTER 0
++#define CONFIG_ALOOP_FILTER 0
++#define CONFIG_AMERGE_FILTER 0
++#define CONFIG_AMETADATA_FILTER 0
++#define CONFIG_AMIX_FILTER 0
++#define CONFIG_AMULTIPLY_FILTER 0
++#define CONFIG_ANEQUALIZER_FILTER 0
++#define CONFIG_ANLMDN_FILTER 0
++#define CONFIG_ANLMS_FILTER 0
++#define CONFIG_ANULL_FILTER 0
++#define CONFIG_APAD_FILTER 0
++#define CONFIG_APERMS_FILTER 0
++#define CONFIG_APHASER_FILTER 0
++#define CONFIG_APHASESHIFT_FILTER 0
++#define CONFIG_APULSATOR_FILTER 0
++#define CONFIG_AREALTIME_FILTER 0
++#define CONFIG_ARESAMPLE_FILTER 0
++#define CONFIG_AREVERSE_FILTER 0
++#define CONFIG_ARNNDN_FILTER 0
++#define CONFIG_ASELECT_FILTER 0
++#define CONFIG_ASENDCMD_FILTER 0
++#define CONFIG_ASETNSAMPLES_FILTER 0
++#define CONFIG_ASETPTS_FILTER 0
++#define CONFIG_ASETRATE_FILTER 0
++#define CONFIG_ASETTB_FILTER 0
++#define CONFIG_ASHOWINFO_FILTER 0
++#define CONFIG_ASIDEDATA_FILTER 0
++#define CONFIG_ASOFTCLIP_FILTER 0
++#define CONFIG_ASPLIT_FILTER 0
++#define CONFIG_ASR_FILTER 0
++#define CONFIG_ASTATS_FILTER 0
++#define CONFIG_ASTREAMSELECT_FILTER 0
++#define CONFIG_ASUBBOOST_FILTER 0
++#define CONFIG_ASUBCUT_FILTER 0
++#define CONFIG_ASUPERCUT_FILTER 0
++#define CONFIG_ASUPERPASS_FILTER 0
++#define CONFIG_ASUPERSTOP_FILTER 0
++#define CONFIG_ATEMPO_FILTER 0
++#define CONFIG_ATRIM_FILTER 0
++#define CONFIG_AXCORRELATE_FILTER 0
++#define CONFIG_AZMQ_FILTER 0
++#define CONFIG_BANDPASS_FILTER 0
++#define CONFIG_BANDREJECT_FILTER 0
++#define CONFIG_BASS_FILTER 0
++#define CONFIG_BIQUAD_FILTER 0
++#define CONFIG_BS2B_FILTER 0
++#define CONFIG_CHROMABER_VULKAN_FILTER 0
++#define CONFIG_CHANNELMAP_FILTER 0
++#define CONFIG_CHANNELSPLIT_FILTER 0
++#define CONFIG_CHORUS_FILTER 0
++#define CONFIG_COMPAND_FILTER 0
++#define CONFIG_COMPENSATIONDELAY_FILTER 0
++#define CONFIG_CROSSFEED_FILTER 0
++#define CONFIG_CRYSTALIZER_FILTER 0
++#define CONFIG_DCSHIFT_FILTER 0
++#define CONFIG_DEESSER_FILTER 0
++#define CONFIG_DRMETER_FILTER 0
++#define CONFIG_DYNAUDNORM_FILTER 0
++#define CONFIG_EARWAX_FILTER 0
++#define CONFIG_EBUR128_FILTER 0
++#define CONFIG_EQUALIZER_FILTER 0
++#define CONFIG_EXTRASTEREO_FILTER 0
++#define CONFIG_FIREQUALIZER_FILTER 0
++#define CONFIG_FLANGER_FILTER 0
++#define CONFIG_HAAS_FILTER 0
++#define CONFIG_HDCD_FILTER 0
++#define CONFIG_HEADPHONE_FILTER 0
++#define CONFIG_HIGHPASS_FILTER 0
++#define CONFIG_HIGHSHELF_FILTER 0
++#define CONFIG_JOIN_FILTER 0
++#define CONFIG_LADSPA_FILTER 0
++#define CONFIG_LOUDNORM_FILTER 0
++#define CONFIG_LOWPASS_FILTER 0
++#define CONFIG_LOWSHELF_FILTER 0
++#define CONFIG_LV2_FILTER 0
++#define CONFIG_MCOMPAND_FILTER 0
++#define CONFIG_PAN_FILTER 0
++#define CONFIG_REPLAYGAIN_FILTER 0
++#define CONFIG_RUBBERBAND_FILTER 0
++#define CONFIG_SIDECHAINCOMPRESS_FILTER 0
++#define CONFIG_SIDECHAINGATE_FILTER 0
++#define CONFIG_SILENCEDETECT_FILTER 0
++#define CONFIG_SILENCEREMOVE_FILTER 0
++#define CONFIG_SOFALIZER_FILTER 0
++#define CONFIG_SPEECHNORM_FILTER 0
++#define CONFIG_STEREOTOOLS_FILTER 0
++#define CONFIG_STEREOWIDEN_FILTER 0
++#define CONFIG_SUPEREQUALIZER_FILTER 0
++#define CONFIG_SURROUND_FILTER 0
++#define CONFIG_TREBLE_FILTER 0
++#define CONFIG_TREMOLO_FILTER 0
++#define CONFIG_VIBRATO_FILTER 0
++#define CONFIG_VOLUME_FILTER 0
++#define CONFIG_VOLUMEDETECT_FILTER 0
++#define CONFIG_AEVALSRC_FILTER 0
++#define CONFIG_AFIRSRC_FILTER 0
++#define CONFIG_ANOISESRC_FILTER 0
++#define CONFIG_ANULLSRC_FILTER 0
++#define CONFIG_FLITE_FILTER 0
++#define CONFIG_HILBERT_FILTER 0
++#define CONFIG_SINC_FILTER 0
++#define CONFIG_SINE_FILTER 0
++#define CONFIG_ANULLSINK_FILTER 0
++#define CONFIG_ADDROI_FILTER 0
++#define CONFIG_ALPHAEXTRACT_FILTER 0
++#define CONFIG_ALPHAMERGE_FILTER 0
++#define CONFIG_AMPLIFY_FILTER 0
++#define CONFIG_ASS_FILTER 0
++#define CONFIG_ATADENOISE_FILTER 0
++#define CONFIG_AVGBLUR_FILTER 0
++#define CONFIG_AVGBLUR_OPENCL_FILTER 0
++#define CONFIG_AVGBLUR_VULKAN_FILTER 0
++#define CONFIG_BBOX_FILTER 0
++#define CONFIG_BENCH_FILTER 0
++#define CONFIG_BILATERAL_FILTER 0
++#define CONFIG_BITPLANENOISE_FILTER 0
++#define CONFIG_BLACKDETECT_FILTER 0
++#define CONFIG_BLACKFRAME_FILTER 0
++#define CONFIG_BLEND_FILTER 0
++#define CONFIG_BM3D_FILTER 0
++#define CONFIG_BOXBLUR_FILTER 0
++#define CONFIG_BOXBLUR_OPENCL_FILTER 0
++#define CONFIG_BWDIF_FILTER 0
++#define CONFIG_CAS_FILTER 0
++#define CONFIG_CHROMAHOLD_FILTER 0
++#define CONFIG_CHROMAKEY_FILTER 0
++#define CONFIG_CHROMANR_FILTER 0
++#define CONFIG_CHROMASHIFT_FILTER 0
++#define CONFIG_CIESCOPE_FILTER 0
++#define CONFIG_CODECVIEW_FILTER 0
++#define CONFIG_COLORBALANCE_FILTER 0
++#define CONFIG_COLORCHANNELMIXER_FILTER 0
++#define CONFIG_COLORCONTRAST_FILTER 0
++#define CONFIG_COLORCORRECT_FILTER 0
++#define CONFIG_COLORIZE_FILTER 0
++#define CONFIG_COLORKEY_FILTER 0
++#define CONFIG_COLORKEY_OPENCL_FILTER 0
++#define CONFIG_COLORHOLD_FILTER 0
++#define CONFIG_COLORLEVELS_FILTER 0
++#define CONFIG_COLORMATRIX_FILTER 0
++#define CONFIG_COLORSPACE_FILTER 0
++#define CONFIG_COLORTEMPERATURE_FILTER 0
++#define CONFIG_CONVOLUTION_FILTER 0
++#define CONFIG_CONVOLUTION_OPENCL_FILTER 0
++#define CONFIG_CONVOLVE_FILTER 0
++#define CONFIG_COPY_FILTER 0
++#define CONFIG_COREIMAGE_FILTER 0
++#define CONFIG_COVER_RECT_FILTER 0
++#define CONFIG_CROP_FILTER 0
++#define CONFIG_CROPDETECT_FILTER 0
++#define CONFIG_CUE_FILTER 0
++#define CONFIG_CURVES_FILTER 0
++#define CONFIG_DATASCOPE_FILTER 0
++#define CONFIG_DBLUR_FILTER 0
++#define CONFIG_DCTDNOIZ_FILTER 0
++#define CONFIG_DEBAND_FILTER 0
++#define CONFIG_DEBLOCK_FILTER 0
++#define CONFIG_DECIMATE_FILTER 0
++#define CONFIG_DECONVOLVE_FILTER 0
++#define CONFIG_DEDOT_FILTER 0
++#define CONFIG_DEFLATE_FILTER 0
++#define CONFIG_DEFLICKER_FILTER 0
++#define CONFIG_DEINTERLACE_QSV_FILTER 0
++#define CONFIG_DEINTERLACE_VAAPI_FILTER 0
++#define CONFIG_DEJUDDER_FILTER 0
++#define CONFIG_DELOGO_FILTER 0
++#define CONFIG_DENOISE_VAAPI_FILTER 0
++#define CONFIG_DERAIN_FILTER 0
++#define CONFIG_DESHAKE_FILTER 0
++#define CONFIG_DESHAKE_OPENCL_FILTER 0
++#define CONFIG_DESPILL_FILTER 0
++#define CONFIG_DETELECINE_FILTER 0
++#define CONFIG_DILATION_FILTER 0
++#define CONFIG_DILATION_OPENCL_FILTER 0
++#define CONFIG_DISPLACE_FILTER 0
++#define CONFIG_DNN_CLASSIFY_FILTER 0
++#define CONFIG_DNN_DETECT_FILTER 0
++#define CONFIG_DNN_PROCESSING_FILTER 0
++#define CONFIG_DOUBLEWEAVE_FILTER 0
++#define CONFIG_DRAWBOX_FILTER 0
++#define CONFIG_DRAWGRAPH_FILTER 0
++#define CONFIG_DRAWGRID_FILTER 0
++#define CONFIG_DRAWTEXT_FILTER 0
++#define CONFIG_EDGEDETECT_FILTER 0
++#define CONFIG_ELBG_FILTER 0
++#define CONFIG_ENTROPY_FILTER 0
++#define CONFIG_EPX_FILTER 0
++#define CONFIG_EQ_FILTER 0
++#define CONFIG_EROSION_FILTER 0
++#define CONFIG_EROSION_OPENCL_FILTER 0
++#define CONFIG_ESTDIF_FILTER 0
++#define CONFIG_EXPOSURE_FILTER 0
++#define CONFIG_EXTRACTPLANES_FILTER 0
++#define CONFIG_FADE_FILTER 0
++#define CONFIG_FFTDNOIZ_FILTER 0
++#define CONFIG_FFTFILT_FILTER 0
++#define CONFIG_FIELD_FILTER 0
++#define CONFIG_FIELDHINT_FILTER 0
++#define CONFIG_FIELDMATCH_FILTER 0
++#define CONFIG_FIELDORDER_FILTER 0
++#define CONFIG_FILLBORDERS_FILTER 0
++#define CONFIG_FIND_RECT_FILTER 0
++#define CONFIG_FLOODFILL_FILTER 0
++#define CONFIG_FORMAT_FILTER 0
++#define CONFIG_FPS_FILTER 0
++#define CONFIG_FRAMEPACK_FILTER 0
++#define CONFIG_FRAMERATE_FILTER 0
++#define CONFIG_FRAMESTEP_FILTER 0
++#define CONFIG_FREEZEDETECT_FILTER 0
++#define CONFIG_FREEZEFRAMES_FILTER 0
++#define CONFIG_FREI0R_FILTER 0
++#define CONFIG_FSPP_FILTER 0
++#define CONFIG_GBLUR_FILTER 0
++#define CONFIG_GEQ_FILTER 0
++#define CONFIG_GRADFUN_FILTER 0
++#define CONFIG_GRAPHMONITOR_FILTER 0
++#define CONFIG_GREYEDGE_FILTER 0
++#define CONFIG_HALDCLUT_FILTER 0
++#define CONFIG_HFLIP_FILTER 0
++#define CONFIG_HISTEQ_FILTER 0
++#define CONFIG_HISTOGRAM_FILTER 0
++#define CONFIG_HQDN3D_FILTER 0
++#define CONFIG_HQX_FILTER 0
++#define CONFIG_HSTACK_FILTER 0
++#define CONFIG_HUE_FILTER 0
++#define CONFIG_HWDOWNLOAD_FILTER 0
++#define CONFIG_HWMAP_FILTER 0
++#define CONFIG_HWUPLOAD_FILTER 0
++#define CONFIG_HWUPLOAD_CUDA_FILTER 0
++#define CONFIG_HYSTERESIS_FILTER 0
++#define CONFIG_IDENTITY_FILTER 0
++#define CONFIG_IDET_FILTER 0
++#define CONFIG_IL_FILTER 0
++#define CONFIG_INFLATE_FILTER 0
++#define CONFIG_INTERLACE_FILTER 0
++#define CONFIG_INTERLEAVE_FILTER 0
++#define CONFIG_KERNDEINT_FILTER 0
++#define CONFIG_KIRSCH_FILTER 0
++#define CONFIG_LAGFUN_FILTER 0
++#define CONFIG_LENSCORRECTION_FILTER 0
++#define CONFIG_LENSFUN_FILTER 0
++#define CONFIG_LIBVMAF_FILTER 0
++#define CONFIG_LIMITER_FILTER 0
++#define CONFIG_LOOP_FILTER 0
++#define CONFIG_LUMAKEY_FILTER 0
++#define CONFIG_LUT_FILTER 0
++#define CONFIG_LUT1D_FILTER 0
++#define CONFIG_LUT2_FILTER 0
++#define CONFIG_LUT3D_FILTER 0
++#define CONFIG_LUTRGB_FILTER 0
++#define CONFIG_LUTYUV_FILTER 0
++#define CONFIG_MASKEDCLAMP_FILTER 0
++#define CONFIG_MASKEDMAX_FILTER 0
++#define CONFIG_MASKEDMERGE_FILTER 0
++#define CONFIG_MASKEDMIN_FILTER 0
++#define CONFIG_MASKEDTHRESHOLD_FILTER 0
++#define CONFIG_MASKFUN_FILTER 0
++#define CONFIG_MCDEINT_FILTER 0
++#define CONFIG_MEDIAN_FILTER 0
++#define CONFIG_MERGEPLANES_FILTER 0
++#define CONFIG_MESTIMATE_FILTER 0
++#define CONFIG_METADATA_FILTER 0
++#define CONFIG_MIDEQUALIZER_FILTER 0
++#define CONFIG_MINTERPOLATE_FILTER 0
++#define CONFIG_MIX_FILTER 0
++#define CONFIG_MONOCHROME_FILTER 0
++#define CONFIG_MPDECIMATE_FILTER 0
++#define CONFIG_MSAD_FILTER 0
++#define CONFIG_NEGATE_FILTER 0
++#define CONFIG_NLMEANS_FILTER 0
++#define CONFIG_NLMEANS_OPENCL_FILTER 0
++#define CONFIG_NNEDI_FILTER 0
++#define CONFIG_NOFORMAT_FILTER 0
++#define CONFIG_NOISE_FILTER 0
++#define CONFIG_NORMALIZE_FILTER 0
++#define CONFIG_NULL_FILTER 0
++#define CONFIG_OCR_FILTER 0
++#define CONFIG_OCV_FILTER 0
++#define CONFIG_OSCILLOSCOPE_FILTER 0
++#define CONFIG_OVERLAY_FILTER 0
++#define CONFIG_OVERLAY_OPENCL_FILTER 0
++#define CONFIG_OVERLAY_QSV_FILTER 0
++#define CONFIG_OVERLAY_VULKAN_FILTER 0
++#define CONFIG_OVERLAY_CUDA_FILTER 0
++#define CONFIG_OWDENOISE_FILTER 0
++#define CONFIG_PAD_FILTER 0
++#define CONFIG_PAD_OPENCL_FILTER 0
++#define CONFIG_PALETTEGEN_FILTER 0
++#define CONFIG_PALETTEUSE_FILTER 0
++#define CONFIG_PERMS_FILTER 0
++#define CONFIG_PERSPECTIVE_FILTER 0
++#define CONFIG_PHASE_FILTER 0
++#define CONFIG_PHOTOSENSITIVITY_FILTER 0
++#define CONFIG_PIXDESCTEST_FILTER 0
++#define CONFIG_PIXSCOPE_FILTER 0
++#define CONFIG_PP_FILTER 0
++#define CONFIG_PP7_FILTER 0
++#define CONFIG_PREMULTIPLY_FILTER 0
++#define CONFIG_PREWITT_FILTER 0
++#define CONFIG_PREWITT_OPENCL_FILTER 0
++#define CONFIG_PROCAMP_VAAPI_FILTER 0
++#define CONFIG_PROGRAM_OPENCL_FILTER 0
++#define CONFIG_PSEUDOCOLOR_FILTER 0
++#define CONFIG_PSNR_FILTER 0
++#define CONFIG_PULLUP_FILTER 0
++#define CONFIG_QP_FILTER 0
++#define CONFIG_RANDOM_FILTER 0
++#define CONFIG_READEIA608_FILTER 0
++#define CONFIG_READVITC_FILTER 0
++#define CONFIG_REALTIME_FILTER 0
++#define CONFIG_REMAP_FILTER 0
++#define CONFIG_REMOVEGRAIN_FILTER 0
++#define CONFIG_REMOVELOGO_FILTER 0
++#define CONFIG_REPEATFIELDS_FILTER 0
++#define CONFIG_REVERSE_FILTER 0
++#define CONFIG_RGBASHIFT_FILTER 0
++#define CONFIG_ROBERTS_FILTER 0
++#define CONFIG_ROBERTS_OPENCL_FILTER 0
++#define CONFIG_ROTATE_FILTER 0
++#define CONFIG_SAB_FILTER 0
++#define CONFIG_SCALE_FILTER 0
++#define CONFIG_SCALE_CUDA_FILTER 0
++#define CONFIG_SCALE_NPP_FILTER 0
++#define CONFIG_SCALE_QSV_FILTER 0
++#define CONFIG_SCALE_VAAPI_FILTER 0
++#define CONFIG_SCALE_VULKAN_FILTER 0
++#define CONFIG_SCALE2REF_FILTER 0
++#define CONFIG_SCDET_FILTER 0
++#define CONFIG_SCROLL_FILTER 0
++#define CONFIG_SELECT_FILTER 0
++#define CONFIG_SELECTIVECOLOR_FILTER 0
++#define CONFIG_SENDCMD_FILTER 0
++#define CONFIG_SEPARATEFIELDS_FILTER 0
++#define CONFIG_SETDAR_FILTER 0
++#define CONFIG_SETFIELD_FILTER 0
++#define CONFIG_SETPARAMS_FILTER 0
++#define CONFIG_SETPTS_FILTER 0
++#define CONFIG_SETRANGE_FILTER 0
++#define CONFIG_SETSAR_FILTER 0
++#define CONFIG_SETTB_FILTER 0
++#define CONFIG_SHARPNESS_VAAPI_FILTER 0
++#define CONFIG_SHEAR_FILTER 0
++#define CONFIG_SHOWINFO_FILTER 0
++#define CONFIG_SHOWPALETTE_FILTER 0
++#define CONFIG_SHUFFLEFRAMES_FILTER 0
++#define CONFIG_SHUFFLEPIXELS_FILTER 0
++#define CONFIG_SHUFFLEPLANES_FILTER 0
++#define CONFIG_SIDEDATA_FILTER 0
++#define CONFIG_SIGNALSTATS_FILTER 0
++#define CONFIG_SIGNATURE_FILTER 0
++#define CONFIG_SMARTBLUR_FILTER 0
++#define CONFIG_SOBEL_FILTER 0
++#define CONFIG_SOBEL_OPENCL_FILTER 0
++#define CONFIG_SPLIT_FILTER 0
++#define CONFIG_SPP_FILTER 0
++#define CONFIG_SR_FILTER 0
++#define CONFIG_SSIM_FILTER 0
++#define CONFIG_STEREO3D_FILTER 0
++#define CONFIG_STREAMSELECT_FILTER 0
++#define CONFIG_SUBTITLES_FILTER 0
++#define CONFIG_SUPER2XSAI_FILTER 0
++#define CONFIG_SWAPRECT_FILTER 0
++#define CONFIG_SWAPUV_FILTER 0
++#define CONFIG_TBLEND_FILTER 0
++#define CONFIG_TELECINE_FILTER 0
++#define CONFIG_THISTOGRAM_FILTER 0
++#define CONFIG_THRESHOLD_FILTER 0
++#define CONFIG_THUMBNAIL_FILTER 0
++#define CONFIG_THUMBNAIL_CUDA_FILTER 0
++#define CONFIG_TILE_FILTER 0
++#define CONFIG_TINTERLACE_FILTER 0
++#define CONFIG_TLUT2_FILTER 0
++#define CONFIG_TMEDIAN_FILTER 0
++#define CONFIG_TMIDEQUALIZER_FILTER 0
++#define CONFIG_TMIX_FILTER 0
++#define CONFIG_TONEMAP_FILTER 0
++#define CONFIG_TONEMAP_OPENCL_FILTER 0
++#define CONFIG_TONEMAP_VAAPI_FILTER 0
++#define CONFIG_TPAD_FILTER 0
++#define CONFIG_TRANSPOSE_FILTER 0
++#define CONFIG_TRANSPOSE_NPP_FILTER 0
++#define CONFIG_TRANSPOSE_OPENCL_FILTER 0
++#define CONFIG_TRANSPOSE_VAAPI_FILTER 0
++#define CONFIG_TRIM_FILTER 0
++#define CONFIG_UNPREMULTIPLY_FILTER 0
++#define CONFIG_UNSHARP_FILTER 0
++#define CONFIG_UNSHARP_OPENCL_FILTER 0
++#define CONFIG_UNTILE_FILTER 0
++#define CONFIG_USPP_FILTER 0
++#define CONFIG_V360_FILTER 0
++#define CONFIG_VAGUEDENOISER_FILTER 0
++#define CONFIG_VECTORSCOPE_FILTER 0
++#define CONFIG_VFLIP_FILTER 0
++#define CONFIG_VFRDET_FILTER 0
++#define CONFIG_VIBRANCE_FILTER 0
++#define CONFIG_VIDSTABDETECT_FILTER 0
++#define CONFIG_VIDSTABTRANSFORM_FILTER 0
++#define CONFIG_VIF_FILTER 0
++#define CONFIG_VIGNETTE_FILTER 0
++#define CONFIG_VMAFMOTION_FILTER 0
++#define CONFIG_VPP_QSV_FILTER 0
++#define CONFIG_VSTACK_FILTER 0
++#define CONFIG_W3FDIF_FILTER 0
++#define CONFIG_WAVEFORM_FILTER 0
++#define CONFIG_WEAVE_FILTER 0
++#define CONFIG_XBR_FILTER 0
++#define CONFIG_XFADE_FILTER 0
++#define CONFIG_XFADE_OPENCL_FILTER 0
++#define CONFIG_XMEDIAN_FILTER 0
++#define CONFIG_XSTACK_FILTER 0
++#define CONFIG_YADIF_FILTER 0
++#define CONFIG_YADIF_CUDA_FILTER 0
++#define CONFIG_YAEPBLUR_FILTER 0
++#define CONFIG_ZMQ_FILTER 0
++#define CONFIG_ZOOMPAN_FILTER 0
++#define CONFIG_ZSCALE_FILTER 0
++#define CONFIG_ALLRGB_FILTER 0
++#define CONFIG_ALLYUV_FILTER 0
++#define CONFIG_CELLAUTO_FILTER 0
++#define CONFIG_COLOR_FILTER 0
++#define CONFIG_COREIMAGESRC_FILTER 0
++#define CONFIG_FREI0R_SRC_FILTER 0
++#define CONFIG_GRADIENTS_FILTER 0
++#define CONFIG_HALDCLUTSRC_FILTER 0
++#define CONFIG_LIFE_FILTER 0
++#define CONFIG_MANDELBROT_FILTER 0
++#define CONFIG_MPTESTSRC_FILTER 0
++#define CONFIG_NULLSRC_FILTER 0
++#define CONFIG_OPENCLSRC_FILTER 0
++#define CONFIG_PAL75BARS_FILTER 0
++#define CONFIG_PAL100BARS_FILTER 0
++#define CONFIG_RGBTESTSRC_FILTER 0
++#define CONFIG_SIERPINSKI_FILTER 0
++#define CONFIG_SMPTEBARS_FILTER 0
++#define CONFIG_SMPTEHDBARS_FILTER 0
++#define CONFIG_TESTSRC_FILTER 0
++#define CONFIG_TESTSRC2_FILTER 0
++#define CONFIG_YUVTESTSRC_FILTER 0
++#define CONFIG_NULLSINK_FILTER 0
++#define CONFIG_ABITSCOPE_FILTER 0
++#define CONFIG_ADRAWGRAPH_FILTER 0
++#define CONFIG_AGRAPHMONITOR_FILTER 0
++#define CONFIG_AHISTOGRAM_FILTER 0
++#define CONFIG_APHASEMETER_FILTER 0
++#define CONFIG_AVECTORSCOPE_FILTER 0
++#define CONFIG_CONCAT_FILTER 0
++#define CONFIG_SHOWCQT_FILTER 0
++#define CONFIG_SHOWFREQS_FILTER 0
++#define CONFIG_SHOWSPATIAL_FILTER 0
++#define CONFIG_SHOWSPECTRUM_FILTER 0
++#define CONFIG_SHOWSPECTRUMPIC_FILTER 0
++#define CONFIG_SHOWVOLUME_FILTER 0
++#define CONFIG_SHOWWAVES_FILTER 0
++#define CONFIG_SHOWWAVESPIC_FILTER 0
++#define CONFIG_SPECTRUMSYNTH_FILTER 0
++#define CONFIG_AMOVIE_FILTER 0
++#define CONFIG_MOVIE_FILTER 0
++#define CONFIG_AFIFO_FILTER 0
++#define CONFIG_FIFO_FILTER 0
++#define CONFIG_AA_DEMUXER 0
++#define CONFIG_AAC_DEMUXER 1
++#define CONFIG_AAX_DEMUXER 0
++#define CONFIG_AC3_DEMUXER 0
++#define CONFIG_ACE_DEMUXER 0
++#define CONFIG_ACM_DEMUXER 0
++#define CONFIG_ACT_DEMUXER 0
++#define CONFIG_ADF_DEMUXER 0
++#define CONFIG_ADP_DEMUXER 0
++#define CONFIG_ADS_DEMUXER 0
++#define CONFIG_ADX_DEMUXER 0
++#define CONFIG_AEA_DEMUXER 0
++#define CONFIG_AFC_DEMUXER 0
++#define CONFIG_AIFF_DEMUXER 0
++#define CONFIG_AIX_DEMUXER 0
++#define CONFIG_ALP_DEMUXER 0
++#define CONFIG_AMR_DEMUXER 0
++#define CONFIG_AMRNB_DEMUXER 0
++#define CONFIG_AMRWB_DEMUXER 0
++#define CONFIG_ANM_DEMUXER 0
++#define CONFIG_APC_DEMUXER 0
++#define CONFIG_APE_DEMUXER 0
++#define CONFIG_APM_DEMUXER 0
++#define CONFIG_APNG_DEMUXER 0
++#define CONFIG_APTX_DEMUXER 0
++#define CONFIG_APTX_HD_DEMUXER 0
++#define CONFIG_AQTITLE_DEMUXER 0
++#define CONFIG_ARGO_ASF_DEMUXER 0
++#define CONFIG_ARGO_BRP_DEMUXER 0
++#define CONFIG_ASF_DEMUXER 0
++#define CONFIG_ASF_O_DEMUXER 0
++#define CONFIG_ASS_DEMUXER 0
++#define CONFIG_AST_DEMUXER 0
++#define CONFIG_AU_DEMUXER 0
++#define CONFIG_AV1_DEMUXER 0
++#define CONFIG_AVI_DEMUXER 0
++#define CONFIG_AVISYNTH_DEMUXER 0
++#define CONFIG_AVR_DEMUXER 0
++#define CONFIG_AVS_DEMUXER 0
++#define CONFIG_AVS2_DEMUXER 0
++#define CONFIG_AVS3_DEMUXER 0
++#define CONFIG_BETHSOFTVID_DEMUXER 0
++#define CONFIG_BFI_DEMUXER 0
++#define CONFIG_BINTEXT_DEMUXER 0
++#define CONFIG_BINK_DEMUXER 0
++#define CONFIG_BINKA_DEMUXER 0
++#define CONFIG_BIT_DEMUXER 0
++#define CONFIG_BMV_DEMUXER 0
++#define CONFIG_BFSTM_DEMUXER 0
++#define CONFIG_BRSTM_DEMUXER 0
++#define CONFIG_BOA_DEMUXER 0
++#define CONFIG_C93_DEMUXER 0
++#define CONFIG_CAF_DEMUXER 0
++#define CONFIG_CAVSVIDEO_DEMUXER 0
++#define CONFIG_CDG_DEMUXER 0
++#define CONFIG_CDXL_DEMUXER 0
++#define CONFIG_CINE_DEMUXER 0
++#define CONFIG_CODEC2_DEMUXER 0
++#define CONFIG_CODEC2RAW_DEMUXER 0
++#define CONFIG_CONCAT_DEMUXER 0
++#define CONFIG_DASH_DEMUXER 0
++#define CONFIG_DATA_DEMUXER 0
++#define CONFIG_DAUD_DEMUXER 0
++#define CONFIG_DCSTR_DEMUXER 0
++#define CONFIG_DERF_DEMUXER 0
++#define CONFIG_DFA_DEMUXER 0
++#define CONFIG_DHAV_DEMUXER 0
++#define CONFIG_DIRAC_DEMUXER 0
++#define CONFIG_DNXHD_DEMUXER 0
++#define CONFIG_DSF_DEMUXER 0
++#define CONFIG_DSICIN_DEMUXER 0
++#define CONFIG_DSS_DEMUXER 0
++#define CONFIG_DTS_DEMUXER 0
++#define CONFIG_DTSHD_DEMUXER 0
++#define CONFIG_DV_DEMUXER 0
++#define CONFIG_DVBSUB_DEMUXER 0
++#define CONFIG_DVBTXT_DEMUXER 0
++#define CONFIG_DXA_DEMUXER 0
++#define CONFIG_EA_DEMUXER 0
++#define CONFIG_EA_CDATA_DEMUXER 0
++#define CONFIG_EAC3_DEMUXER 0
++#define CONFIG_EPAF_DEMUXER 0
++#define CONFIG_FFMETADATA_DEMUXER 0
++#define CONFIG_FILMSTRIP_DEMUXER 0
++#define CONFIG_FITS_DEMUXER 0
++#define CONFIG_FLAC_DEMUXER 1
++#define CONFIG_FLIC_DEMUXER 0
++#define CONFIG_FLV_DEMUXER 0
++#define CONFIG_LIVE_FLV_DEMUXER 0
++#define CONFIG_FOURXM_DEMUXER 0
++#define CONFIG_FRM_DEMUXER 0
++#define CONFIG_FSB_DEMUXER 0
++#define CONFIG_FWSE_DEMUXER 0
++#define CONFIG_G722_DEMUXER 0
++#define CONFIG_G723_1_DEMUXER 0
++#define CONFIG_G726_DEMUXER 0
++#define CONFIG_G726LE_DEMUXER 0
++#define CONFIG_G729_DEMUXER 0
++#define CONFIG_GDV_DEMUXER 0
++#define CONFIG_GENH_DEMUXER 0
++#define CONFIG_GIF_DEMUXER 0
++#define CONFIG_GSM_DEMUXER 0
++#define CONFIG_GXF_DEMUXER 0
++#define CONFIG_H261_DEMUXER 0
++#define CONFIG_H263_DEMUXER 0
++#define CONFIG_H264_DEMUXER 0
++#define CONFIG_HCA_DEMUXER 0
++#define CONFIG_HCOM_DEMUXER 0
++#define CONFIG_HEVC_DEMUXER 0
++#define CONFIG_HLS_DEMUXER 0
++#define CONFIG_HNM_DEMUXER 0
++#define CONFIG_ICO_DEMUXER 0
++#define CONFIG_IDCIN_DEMUXER 0
++#define CONFIG_IDF_DEMUXER 0
++#define CONFIG_IFF_DEMUXER 0
++#define CONFIG_IFV_DEMUXER 0
++#define CONFIG_ILBC_DEMUXER 0
++#define CONFIG_IMAGE2_DEMUXER 0
++#define CONFIG_IMAGE2PIPE_DEMUXER 0
++#define CONFIG_IMAGE2_ALIAS_PIX_DEMUXER 0
++#define CONFIG_IMAGE2_BRENDER_PIX_DEMUXER 0
++#define CONFIG_INGENIENT_DEMUXER 0
++#define CONFIG_IPMOVIE_DEMUXER 0
++#define CONFIG_IPU_DEMUXER 0
++#define CONFIG_IRCAM_DEMUXER 0
++#define CONFIG_ISS_DEMUXER 0
++#define CONFIG_IV8_DEMUXER 0
++#define CONFIG_IVF_DEMUXER 0
++#define CONFIG_IVR_DEMUXER 0
++#define CONFIG_JACOSUB_DEMUXER 0
++#define CONFIG_JV_DEMUXER 0
++#define CONFIG_KUX_DEMUXER 0
++#define CONFIG_KVAG_DEMUXER 0
++#define CONFIG_LMLM4_DEMUXER 0
++#define CONFIG_LOAS_DEMUXER 0
++#define CONFIG_LUODAT_DEMUXER 0
++#define CONFIG_LRC_DEMUXER 0
++#define CONFIG_LVF_DEMUXER 0
++#define CONFIG_LXF_DEMUXER 0
++#define CONFIG_M4V_DEMUXER 0
++#define CONFIG_MCA_DEMUXER 0
++#define CONFIG_MCC_DEMUXER 0
++#define CONFIG_MATROSKA_DEMUXER 1
++#define CONFIG_MGSTS_DEMUXER 0
++#define CONFIG_MICRODVD_DEMUXER 0
++#define CONFIG_MJPEG_DEMUXER 0
++#define CONFIG_MJPEG_2000_DEMUXER 0
++#define CONFIG_MLP_DEMUXER 0
++#define CONFIG_MLV_DEMUXER 0
++#define CONFIG_MM_DEMUXER 0
++#define CONFIG_MMF_DEMUXER 0
++#define CONFIG_MODS_DEMUXER 0
++#define CONFIG_MOFLEX_DEMUXER 0
++#define CONFIG_MOV_DEMUXER 1
++#define CONFIG_MP3_DEMUXER 1
++#define CONFIG_MPC_DEMUXER 0
++#define CONFIG_MPC8_DEMUXER 0
++#define CONFIG_MPEGPS_DEMUXER 0
++#define CONFIG_MPEGTS_DEMUXER 0
++#define CONFIG_MPEGTSRAW_DEMUXER 0
++#define CONFIG_MPEGVIDEO_DEMUXER 0
++#define CONFIG_MPJPEG_DEMUXER 0
++#define CONFIG_MPL2_DEMUXER 0
++#define CONFIG_MPSUB_DEMUXER 0
++#define CONFIG_MSF_DEMUXER 0
++#define CONFIG_MSNWC_TCP_DEMUXER 0
++#define CONFIG_MSP_DEMUXER 0
++#define CONFIG_MTAF_DEMUXER 0
++#define CONFIG_MTV_DEMUXER 0
++#define CONFIG_MUSX_DEMUXER 0
++#define CONFIG_MV_DEMUXER 0
++#define CONFIG_MVI_DEMUXER 0
++#define CONFIG_MXF_DEMUXER 0
++#define CONFIG_MXG_DEMUXER 0
++#define CONFIG_NC_DEMUXER 0
++#define CONFIG_NISTSPHERE_DEMUXER 0
++#define CONFIG_NSP_DEMUXER 0
++#define CONFIG_NSV_DEMUXER 0
++#define CONFIG_NUT_DEMUXER 0
++#define CONFIG_NUV_DEMUXER 0
++#define CONFIG_OBU_DEMUXER 0
++#define CONFIG_OGG_DEMUXER 1
++#define CONFIG_OMA_DEMUXER 0
++#define CONFIG_PAF_DEMUXER 0
++#define CONFIG_PCM_ALAW_DEMUXER 0
++#define CONFIG_PCM_MULAW_DEMUXER 0
++#define CONFIG_PCM_VIDC_DEMUXER 0
++#define CONFIG_PCM_F64BE_DEMUXER 0
++#define CONFIG_PCM_F64LE_DEMUXER 0
++#define CONFIG_PCM_F32BE_DEMUXER 0
++#define CONFIG_PCM_F32LE_DEMUXER 0
++#define CONFIG_PCM_S32BE_DEMUXER 0
++#define CONFIG_PCM_S32LE_DEMUXER 0
++#define CONFIG_PCM_S24BE_DEMUXER 0
++#define CONFIG_PCM_S24LE_DEMUXER 0
++#define CONFIG_PCM_S16BE_DEMUXER 0
++#define CONFIG_PCM_S16LE_DEMUXER 0
++#define CONFIG_PCM_S8_DEMUXER 0
++#define CONFIG_PCM_U32BE_DEMUXER 0
++#define CONFIG_PCM_U32LE_DEMUXER 0
++#define CONFIG_PCM_U24BE_DEMUXER 0
++#define CONFIG_PCM_U24LE_DEMUXER 0
++#define CONFIG_PCM_U16BE_DEMUXER 0
++#define CONFIG_PCM_U16LE_DEMUXER 0
++#define CONFIG_PCM_U8_DEMUXER 0
++#define CONFIG_PJS_DEMUXER 0
++#define CONFIG_PMP_DEMUXER 0
++#define CONFIG_PP_BNK_DEMUXER 0
++#define CONFIG_PVA_DEMUXER 0
++#define CONFIG_PVF_DEMUXER 0
++#define CONFIG_QCP_DEMUXER 0
++#define CONFIG_R3D_DEMUXER 0
++#define CONFIG_RAWVIDEO_DEMUXER 0
++#define CONFIG_REALTEXT_DEMUXER 0
++#define CONFIG_REDSPARK_DEMUXER 0
++#define CONFIG_RL2_DEMUXER 0
++#define CONFIG_RM_DEMUXER 0
++#define CONFIG_ROQ_DEMUXER 0
++#define CONFIG_RPL_DEMUXER 0
++#define CONFIG_RSD_DEMUXER 0
++#define CONFIG_RSO_DEMUXER 0
++#define CONFIG_RTP_DEMUXER 0
++#define CONFIG_RTSP_DEMUXER 0
++#define CONFIG_S337M_DEMUXER 0
++#define CONFIG_SAMI_DEMUXER 0
++#define CONFIG_SAP_DEMUXER 0
++#define CONFIG_SBC_DEMUXER 0
++#define CONFIG_SBG_DEMUXER 0
++#define CONFIG_SCC_DEMUXER 0
++#define CONFIG_SDP_DEMUXER 0
++#define CONFIG_SDR2_DEMUXER 0
++#define CONFIG_SDS_DEMUXER 0
++#define CONFIG_SDX_DEMUXER 0
++#define CONFIG_SEGAFILM_DEMUXER 0
++#define CONFIG_SER_DEMUXER 0
++#define CONFIG_SGA_DEMUXER 0
++#define CONFIG_SHORTEN_DEMUXER 0
++#define CONFIG_SIFF_DEMUXER 0
++#define CONFIG_SIMBIOSIS_IMX_DEMUXER 0
++#define CONFIG_SLN_DEMUXER 0
++#define CONFIG_SMACKER_DEMUXER 0
++#define CONFIG_SMJPEG_DEMUXER 0
++#define CONFIG_SMUSH_DEMUXER 0
++#define CONFIG_SOL_DEMUXER 0
++#define CONFIG_SOX_DEMUXER 0
++#define CONFIG_SPDIF_DEMUXER 0
++#define CONFIG_SRT_DEMUXER 0
++#define CONFIG_STR_DEMUXER 0
++#define CONFIG_STL_DEMUXER 0
++#define CONFIG_SUBVIEWER1_DEMUXER 0
++#define CONFIG_SUBVIEWER_DEMUXER 0
++#define CONFIG_SUP_DEMUXER 0
++#define CONFIG_SVAG_DEMUXER 0
++#define CONFIG_SVS_DEMUXER 0
++#define CONFIG_SWF_DEMUXER 0
++#define CONFIG_TAK_DEMUXER 0
++#define CONFIG_TEDCAPTIONS_DEMUXER 0
++#define CONFIG_THP_DEMUXER 0
++#define CONFIG_THREEDOSTR_DEMUXER 0
++#define CONFIG_TIERTEXSEQ_DEMUXER 0
++#define CONFIG_TMV_DEMUXER 0
++#define CONFIG_TRUEHD_DEMUXER 0
++#define CONFIG_TTA_DEMUXER 0
++#define CONFIG_TXD_DEMUXER 0
++#define CONFIG_TTY_DEMUXER 0
++#define CONFIG_TY_DEMUXER 0
++#define CONFIG_V210_DEMUXER 0
++#define CONFIG_V210X_DEMUXER 0
++#define CONFIG_VAG_DEMUXER 0
++#define CONFIG_VC1_DEMUXER 0
++#define CONFIG_VC1T_DEMUXER 0
++#define CONFIG_VIVIDAS_DEMUXER 0
++#define CONFIG_VIVO_DEMUXER 0
++#define CONFIG_VMD_DEMUXER 0
++#define CONFIG_VOBSUB_DEMUXER 0
++#define CONFIG_VOC_DEMUXER 0
++#define CONFIG_VPK_DEMUXER 0
++#define CONFIG_VPLAYER_DEMUXER 0
++#define CONFIG_VQF_DEMUXER 0
++#define CONFIG_W64_DEMUXER 0
++#define CONFIG_WAV_DEMUXER 1
++#define CONFIG_WC3_DEMUXER 0
++#define CONFIG_WEBM_DASH_MANIFEST_DEMUXER 0
++#define CONFIG_WEBVTT_DEMUXER 0
++#define CONFIG_WSAUD_DEMUXER 0
++#define CONFIG_WSD_DEMUXER 0
++#define CONFIG_WSVQA_DEMUXER 0
++#define CONFIG_WTV_DEMUXER 0
++#define CONFIG_WVE_DEMUXER 0
++#define CONFIG_WV_DEMUXER 0
++#define CONFIG_XA_DEMUXER 0
++#define CONFIG_XBIN_DEMUXER 0
++#define CONFIG_XMV_DEMUXER 0
++#define CONFIG_XVAG_DEMUXER 0
++#define CONFIG_XWMA_DEMUXER 0
++#define CONFIG_YOP_DEMUXER 0
++#define CONFIG_YUV4MPEGPIPE_DEMUXER 0
++#define CONFIG_IMAGE_BMP_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_CRI_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_DDS_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_DPX_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_EXR_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_GIF_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_J2K_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_JPEG_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_JPEGLS_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_PAM_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_PBM_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_PCX_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_PGMYUV_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_PGM_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_PGX_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_PHOTOCD_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_PICTOR_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_PNG_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_PPM_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_PSD_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_QDRAW_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_SGI_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_SVG_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_SUNRAST_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_TIFF_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_WEBP_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_XBM_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_XPM_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_XWD_PIPE_DEMUXER 0
++#define CONFIG_LIBGME_DEMUXER 0
++#define CONFIG_LIBMODPLUG_DEMUXER 0
++#define CONFIG_LIBOPENMPT_DEMUXER 0
++#define CONFIG_VAPOURSYNTH_DEMUXER 0
++#define CONFIG_A64_MUXER 0
++#define CONFIG_AC3_MUXER 0
++#define CONFIG_ADTS_MUXER 0
++#define CONFIG_ADX_MUXER 0
++#define CONFIG_AIFF_MUXER 0
++#define CONFIG_ALP_MUXER 0
++#define CONFIG_AMR_MUXER 0
++#define CONFIG_AMV_MUXER 0
++#define CONFIG_APM_MUXER 0
++#define CONFIG_APNG_MUXER 0
++#define CONFIG_APTX_MUXER 0
++#define CONFIG_APTX_HD_MUXER 0
++#define CONFIG_ARGO_ASF_MUXER 0
++#define CONFIG_ASF_MUXER 0
++#define CONFIG_ASS_MUXER 0
++#define CONFIG_AST_MUXER 0
++#define CONFIG_ASF_STREAM_MUXER 0
++#define CONFIG_AU_MUXER 0
++#define CONFIG_AVI_MUXER 0
++#define CONFIG_AVM2_MUXER 0
++#define CONFIG_AVS2_MUXER 0
++#define CONFIG_BIT_MUXER 0
++#define CONFIG_CAF_MUXER 0
++#define CONFIG_CAVSVIDEO_MUXER 0
++#define CONFIG_CODEC2_MUXER 0
++#define CONFIG_CODEC2RAW_MUXER 0
++#define CONFIG_CRC_MUXER 0
++#define CONFIG_DASH_MUXER 0
++#define CONFIG_DATA_MUXER 0
++#define CONFIG_DAUD_MUXER 0
++#define CONFIG_DIRAC_MUXER 0
++#define CONFIG_DNXHD_MUXER 0
++#define CONFIG_DTS_MUXER 0
++#define CONFIG_DV_MUXER 0
++#define CONFIG_EAC3_MUXER 0
++#define CONFIG_F4V_MUXER 0
++#define CONFIG_FFMETADATA_MUXER 0
++#define CONFIG_FIFO_MUXER 0
++#define CONFIG_FIFO_TEST_MUXER 0
++#define CONFIG_FILMSTRIP_MUXER 0
++#define CONFIG_FITS_MUXER 0
++#define CONFIG_FLAC_MUXER 0
++#define CONFIG_FLV_MUXER 0
++#define CONFIG_FRAMECRC_MUXER 0
++#define CONFIG_FRAMEHASH_MUXER 0
++#define CONFIG_FRAMEMD5_MUXER 0
++#define CONFIG_G722_MUXER 0
++#define CONFIG_G723_1_MUXER 0
++#define CONFIG_G726_MUXER 0
++#define CONFIG_G726LE_MUXER 0
++#define CONFIG_GIF_MUXER 0
++#define CONFIG_GSM_MUXER 0
++#define CONFIG_GXF_MUXER 0
++#define CONFIG_H261_MUXER 0
++#define CONFIG_H263_MUXER 0
++#define CONFIG_H264_MUXER 0
++#define CONFIG_HASH_MUXER 0
++#define CONFIG_HDS_MUXER 0
++#define CONFIG_HEVC_MUXER 0
++#define CONFIG_HLS_MUXER 0
++#define CONFIG_ICO_MUXER 0
++#define CONFIG_ILBC_MUXER 0
++#define CONFIG_IMAGE2_MUXER 0
++#define CONFIG_IMAGE2PIPE_MUXER 0
++#define CONFIG_IPOD_MUXER 0
++#define CONFIG_IRCAM_MUXER 0
++#define CONFIG_ISMV_MUXER 0
++#define CONFIG_IVF_MUXER 0
++#define CONFIG_JACOSUB_MUXER 0
++#define CONFIG_KVAG_MUXER 0
++#define CONFIG_LATM_MUXER 0
++#define CONFIG_LRC_MUXER 0
++#define CONFIG_M4V_MUXER 0
++#define CONFIG_MD5_MUXER 0
++#define CONFIG_MATROSKA_MUXER 0
++#define CONFIG_MATROSKA_AUDIO_MUXER 0
++#define CONFIG_MICRODVD_MUXER 0
++#define CONFIG_MJPEG_MUXER 0
++#define CONFIG_MLP_MUXER 0
++#define CONFIG_MMF_MUXER 0
++#define CONFIG_MOV_MUXER 0
++#define CONFIG_MP2_MUXER 0
++#define CONFIG_MP3_MUXER 0
++#define CONFIG_MP4_MUXER 0
++#define CONFIG_MPEG1SYSTEM_MUXER 0
++#define CONFIG_MPEG1VCD_MUXER 0
++#define CONFIG_MPEG1VIDEO_MUXER 0
++#define CONFIG_MPEG2DVD_MUXER 0
++#define CONFIG_MPEG2SVCD_MUXER 0
++#define CONFIG_MPEG2VIDEO_MUXER 0
++#define CONFIG_MPEG2VOB_MUXER 0
++#define CONFIG_MPEGTS_MUXER 0
++#define CONFIG_MPJPEG_MUXER 0
++#define CONFIG_MXF_MUXER 0
++#define CONFIG_MXF_D10_MUXER 0
++#define CONFIG_MXF_OPATOM_MUXER 0
++#define CONFIG_NULL_MUXER 0
++#define CONFIG_NUT_MUXER 0
++#define CONFIG_OGA_MUXER 0
++#define CONFIG_OGG_MUXER 0
++#define CONFIG_OGV_MUXER 0
++#define CONFIG_OMA_MUXER 0
++#define CONFIG_OPUS_MUXER 0
++#define CONFIG_PCM_ALAW_MUXER 0
++#define CONFIG_PCM_MULAW_MUXER 0
++#define CONFIG_PCM_VIDC_MUXER 0
++#define CONFIG_PCM_F64BE_MUXER 0
++#define CONFIG_PCM_F64LE_MUXER 0
++#define CONFIG_PCM_F32BE_MUXER 0
++#define CONFIG_PCM_F32LE_MUXER 0
++#define CONFIG_PCM_S32BE_MUXER 0
++#define CONFIG_PCM_S32LE_MUXER 0
++#define CONFIG_PCM_S24BE_MUXER 0
++#define CONFIG_PCM_S24LE_MUXER 0
++#define CONFIG_PCM_S16BE_MUXER 0
++#define CONFIG_PCM_S16LE_MUXER 0
++#define CONFIG_PCM_S8_MUXER 0
++#define CONFIG_PCM_U32BE_MUXER 0
++#define CONFIG_PCM_U32LE_MUXER 0
++#define CONFIG_PCM_U24BE_MUXER 0
++#define CONFIG_PCM_U24LE_MUXER 0
++#define CONFIG_PCM_U16BE_MUXER 0
++#define CONFIG_PCM_U16LE_MUXER 0
++#define CONFIG_PCM_U8_MUXER 0
++#define CONFIG_PSP_MUXER 0
++#define CONFIG_RAWVIDEO_MUXER 0
++#define CONFIG_RM_MUXER 0
++#define CONFIG_ROQ_MUXER 0
++#define CONFIG_RSO_MUXER 0
++#define CONFIG_RTP_MUXER 0
++#define CONFIG_RTP_MPEGTS_MUXER 0
++#define CONFIG_RTSP_MUXER 0
++#define CONFIG_SAP_MUXER 0
++#define CONFIG_SBC_MUXER 0
++#define CONFIG_SCC_MUXER 0
++#define CONFIG_SEGAFILM_MUXER 0
++#define CONFIG_SEGMENT_MUXER 0
++#define CONFIG_STREAM_SEGMENT_MUXER 0
++#define CONFIG_SMJPEG_MUXER 0
++#define CONFIG_SMOOTHSTREAMING_MUXER 0
++#define CONFIG_SOX_MUXER 0
++#define CONFIG_SPX_MUXER 0
++#define CONFIG_SPDIF_MUXER 0
++#define CONFIG_SRT_MUXER 0
++#define CONFIG_STREAMHASH_MUXER 0
++#define CONFIG_SUP_MUXER 0
++#define CONFIG_SWF_MUXER 0
++#define CONFIG_TEE_MUXER 0
++#define CONFIG_TG2_MUXER 0
++#define CONFIG_TGP_MUXER 0
++#define CONFIG_MKVTIMESTAMP_V2_MUXER 0
++#define CONFIG_TRUEHD_MUXER 0
++#define CONFIG_TTA_MUXER 0
++#define CONFIG_TTML_MUXER 0
++#define CONFIG_UNCODEDFRAMECRC_MUXER 0
++#define CONFIG_VC1_MUXER 0
++#define CONFIG_VC1T_MUXER 0
++#define CONFIG_VOC_MUXER 0
++#define CONFIG_W64_MUXER 0
++#define CONFIG_WAV_MUXER 0
++#define CONFIG_WEBM_MUXER 0
++#define CONFIG_WEBM_DASH_MANIFEST_MUXER 0
++#define CONFIG_WEBM_CHUNK_MUXER 0
++#define CONFIG_WEBP_MUXER 0
++#define CONFIG_WEBVTT_MUXER 0
++#define CONFIG_WSAUD_MUXER 0
++#define CONFIG_WTV_MUXER 0
++#define CONFIG_WV_MUXER 0
++#define CONFIG_YUV4MPEGPIPE_MUXER 0
++#define CONFIG_CHROMAPRINT_MUXER 0
++#define CONFIG_ASYNC_PROTOCOL 0
++#define CONFIG_BLURAY_PROTOCOL 0
++#define CONFIG_CACHE_PROTOCOL 0
++#define CONFIG_CONCAT_PROTOCOL 0
++#define CONFIG_CRYPTO_PROTOCOL 0
++#define CONFIG_DATA_PROTOCOL 0
++#define CONFIG_FFRTMPCRYPT_PROTOCOL 0
++#define CONFIG_FFRTMPHTTP_PROTOCOL 0
++#define CONFIG_FILE_PROTOCOL 0
++#define CONFIG_FTP_PROTOCOL 0
++#define CONFIG_GOPHER_PROTOCOL 0
++#define CONFIG_GOPHERS_PROTOCOL 0
++#define CONFIG_HLS_PROTOCOL 0
++#define CONFIG_HTTP_PROTOCOL 0
++#define CONFIG_HTTPPROXY_PROTOCOL 0
++#define CONFIG_HTTPS_PROTOCOL 0
++#define CONFIG_ICECAST_PROTOCOL 0
++#define CONFIG_MMSH_PROTOCOL 0
++#define CONFIG_MMST_PROTOCOL 0
++#define CONFIG_MD5_PROTOCOL 0
++#define CONFIG_PIPE_PROTOCOL 0
++#define CONFIG_PROMPEG_PROTOCOL 0
++#define CONFIG_RTMP_PROTOCOL 0
++#define CONFIG_RTMPE_PROTOCOL 0
++#define CONFIG_RTMPS_PROTOCOL 0
++#define CONFIG_RTMPT_PROTOCOL 0
++#define CONFIG_RTMPTE_PROTOCOL 0
++#define CONFIG_RTMPTS_PROTOCOL 0
++#define CONFIG_RTP_PROTOCOL 0
++#define CONFIG_SCTP_PROTOCOL 0
++#define CONFIG_SRTP_PROTOCOL 0
++#define CONFIG_SUBFILE_PROTOCOL 0
++#define CONFIG_TEE_PROTOCOL 0
++#define CONFIG_TCP_PROTOCOL 0
++#define CONFIG_TLS_PROTOCOL 0
++#define CONFIG_UDP_PROTOCOL 0
++#define CONFIG_UDPLITE_PROTOCOL 0
++#define CONFIG_UNIX_PROTOCOL 0
++#define CONFIG_LIBAMQP_PROTOCOL 0
++#define CONFIG_LIBRIST_PROTOCOL 0
++#define CONFIG_LIBRTMP_PROTOCOL 0
++#define CONFIG_LIBRTMPE_PROTOCOL 0
++#define CONFIG_LIBRTMPS_PROTOCOL 0
++#define CONFIG_LIBRTMPT_PROTOCOL 0
++#define CONFIG_LIBRTMPTE_PROTOCOL 0
++#define CONFIG_LIBSRT_PROTOCOL 0
++#define CONFIG_LIBSSH_PROTOCOL 0
++#define CONFIG_LIBSMBCLIENT_PROTOCOL 0
++#define CONFIG_LIBZMQ_PROTOCOL 0
++#endif /* FFMPEG_CONFIG_H */
diff --git a/devel/electron17/files/patch-third__party_ffmpeg_chromium_config_Chrome_openbsd_x64_config.asm b/devel/electron17/files/patch-third__party_ffmpeg_chromium_config_Chrome_openbsd_x64_config.asm
new file mode 100644
index 000000000000..de8d68d04c74
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_ffmpeg_chromium_config_Chrome_openbsd_x64_config.asm
@@ -0,0 +1,2688 @@
+--- third_party/ffmpeg/chromium/config/Chrome/openbsd/x64/config.asm.orig 2022-05-13 07:20:05 UTC
++++ third_party/ffmpeg/chromium/config/Chrome/openbsd/x64/config.asm
+@@ -0,0 +1,2685 @@
++; Automatically generated by configure - do not modify!
++%define ARCH_AARCH64 0
++%define ARCH_ALPHA 0
++%define ARCH_ARM 0
++%define ARCH_AVR32 0
++%define ARCH_AVR32_AP 0
++%define ARCH_AVR32_UC 0
++%define ARCH_BFIN 0
++%define ARCH_IA64 0
++%define ARCH_M68K 0
++%define ARCH_MIPS 0
++%define ARCH_MIPS64 0
++%define ARCH_PARISC 0
++%define ARCH_PPC 0
++%define ARCH_PPC64 0
++%define ARCH_S390 0
++%define ARCH_SH4 0
++%define ARCH_SPARC 0
++%define ARCH_SPARC64 0
++%define ARCH_TILEGX 0
++%define ARCH_TILEPRO 0
++%define ARCH_TOMI 0
++%define ARCH_X86 1
++%define ARCH_X86_32 0
++%define ARCH_X86_64 1
++%define HAVE_ARMV5TE 0
++%define HAVE_ARMV6 0
++%define HAVE_ARMV6T2 0
++%define HAVE_ARMV8 0
++%define HAVE_NEON 0
++%define HAVE_VFP 0
++%define HAVE_VFPV3 0
++%define HAVE_SETEND 0
++%define HAVE_ALTIVEC 0
++%define HAVE_DCBZL 0
++%define HAVE_LDBRX 0
++%define HAVE_POWER8 0
++%define HAVE_PPC4XX 0
++%define HAVE_VSX 0
++%define HAVE_AESNI 1
++%define HAVE_AMD3DNOW 1
++%define HAVE_AMD3DNOWEXT 1
++%define HAVE_AVX 1
++%define HAVE_AVX2 1
++%define HAVE_AVX512 1
++%define HAVE_FMA3 1
++%define HAVE_FMA4 1
++%define HAVE_MMX 1
++%define HAVE_MMXEXT 1
++%define HAVE_SSE 1
++%define HAVE_SSE2 1
++%define HAVE_SSE3 1
++%define HAVE_SSE4 1
++%define HAVE_SSE42 1
++%define HAVE_SSSE3 1
++%define HAVE_XOP 1
++%define HAVE_CPUNOP 0
++%define HAVE_I686 1
++%define HAVE_MIPSFPU 0
++%define HAVE_MIPS32R2 0
++%define HAVE_MIPS32R5 0
++%define HAVE_MIPS64R2 0
++%define HAVE_MIPS32R6 0
++%define HAVE_MIPS64R6 0
++%define HAVE_MIPSDSP 0
++%define HAVE_MIPSDSPR2 0
++%define HAVE_MSA 0
++%define HAVE_MSA2 0
++%define HAVE_LOONGSON2 0
++%define HAVE_LOONGSON3 0
++%define HAVE_MMI 0
++%define HAVE_ARMV5TE_EXTERNAL 0
++%define HAVE_ARMV6_EXTERNAL 0
++%define HAVE_ARMV6T2_EXTERNAL 0
++%define HAVE_ARMV8_EXTERNAL 0
++%define HAVE_NEON_EXTERNAL 0
++%define HAVE_VFP_EXTERNAL 0
++%define HAVE_VFPV3_EXTERNAL 0
++%define HAVE_SETEND_EXTERNAL 0
++%define HAVE_ALTIVEC_EXTERNAL 0
++%define HAVE_DCBZL_EXTERNAL 0
++%define HAVE_LDBRX_EXTERNAL 0
++%define HAVE_POWER8_EXTERNAL 0
++%define HAVE_PPC4XX_EXTERNAL 0
++%define HAVE_VSX_EXTERNAL 0
++%define HAVE_AESNI_EXTERNAL 1
++%define HAVE_AMD3DNOW_EXTERNAL 1
++%define HAVE_AMD3DNOWEXT_EXTERNAL 1
++%define HAVE_AVX_EXTERNAL 1
++%define HAVE_AVX2_EXTERNAL 1
++%define HAVE_AVX512_EXTERNAL 0
++%define HAVE_FMA3_EXTERNAL 1
++%define HAVE_FMA4_EXTERNAL 1
++%define HAVE_MMX_EXTERNAL 1
++%define HAVE_MMXEXT_EXTERNAL 1
++%define HAVE_SSE_EXTERNAL 1
++%define HAVE_SSE2_EXTERNAL 1
++%define HAVE_SSE3_EXTERNAL 1
++%define HAVE_SSE4_EXTERNAL 1
++%define HAVE_SSE42_EXTERNAL 1
++%define HAVE_SSSE3_EXTERNAL 1
++%define HAVE_XOP_EXTERNAL 1
++%define HAVE_CPUNOP_EXTERNAL 0
++%define HAVE_I686_EXTERNAL 0
++%define HAVE_MIPSFPU_EXTERNAL 0
++%define HAVE_MIPS32R2_EXTERNAL 0
++%define HAVE_MIPS32R5_EXTERNAL 0
++%define HAVE_MIPS64R2_EXTERNAL 0
++%define HAVE_MIPS32R6_EXTERNAL 0
++%define HAVE_MIPS64R6_EXTERNAL 0
++%define HAVE_MIPSDSP_EXTERNAL 0
++%define HAVE_MIPSDSPR2_EXTERNAL 0
++%define HAVE_MSA_EXTERNAL 0
++%define HAVE_MSA2_EXTERNAL 0
++%define HAVE_LOONGSON2_EXTERNAL 0
++%define HAVE_LOONGSON3_EXTERNAL 0
++%define HAVE_MMI_EXTERNAL 0
++%define HAVE_ARMV5TE_INLINE 0
++%define HAVE_ARMV6_INLINE 0
++%define HAVE_ARMV6T2_INLINE 0
++%define HAVE_ARMV8_INLINE 0
++%define HAVE_NEON_INLINE 0
++%define HAVE_VFP_INLINE 0
++%define HAVE_VFPV3_INLINE 0
++%define HAVE_SETEND_INLINE 0
++%define HAVE_ALTIVEC_INLINE 0
++%define HAVE_DCBZL_INLINE 0
++%define HAVE_LDBRX_INLINE 0
++%define HAVE_POWER8_INLINE 0
++%define HAVE_PPC4XX_INLINE 0
++%define HAVE_VSX_INLINE 0
++%define HAVE_AESNI_INLINE 1
++%define HAVE_AMD3DNOW_INLINE 1
++%define HAVE_AMD3DNOWEXT_INLINE 1
++%define HAVE_AVX_INLINE 1
++%define HAVE_AVX2_INLINE 1
++%define HAVE_AVX512_INLINE 1
++%define HAVE_FMA3_INLINE 1
++%define HAVE_FMA4_INLINE 1
++%define HAVE_MMX_INLINE 1
++%define HAVE_MMXEXT_INLINE 1
++%define HAVE_SSE_INLINE 1
++%define HAVE_SSE2_INLINE 1
++%define HAVE_SSE3_INLINE 1
++%define HAVE_SSE4_INLINE 1
++%define HAVE_SSE42_INLINE 1
++%define HAVE_SSSE3_INLINE 1
++%define HAVE_XOP_INLINE 1
++%define HAVE_CPUNOP_INLINE 0
++%define HAVE_I686_INLINE 0
++%define HAVE_MIPSFPU_INLINE 0
++%define HAVE_MIPS32R2_INLINE 0
++%define HAVE_MIPS32R5_INLINE 0
++%define HAVE_MIPS64R2_INLINE 0
++%define HAVE_MIPS32R6_INLINE 0
++%define HAVE_MIPS64R6_INLINE 0
++%define HAVE_MIPSDSP_INLINE 0
++%define HAVE_MIPSDSPR2_INLINE 0
++%define HAVE_MSA_INLINE 0
++%define HAVE_MSA2_INLINE 0
++%define HAVE_LOONGSON2_INLINE 0
++%define HAVE_LOONGSON3_INLINE 0
++%define HAVE_MMI_INLINE 0
++%define HAVE_ALIGNED_STACK 1
++%define HAVE_FAST_64BIT 1
++%define HAVE_FAST_CLZ 1
++%define HAVE_FAST_CMOV 1
++%define HAVE_LOCAL_ALIGNED 1
++%define HAVE_SIMD_ALIGN_16 1
++%define HAVE_SIMD_ALIGN_32 1
++%define HAVE_SIMD_ALIGN_64 1
++%define HAVE_ATOMIC_CAS_PTR 0
++%define HAVE_MACHINE_RW_BARRIER 0
++%define HAVE_MEMORYBARRIER 0
++%define HAVE_MM_EMPTY 1
++%define HAVE_RDTSC 0
++%define HAVE_SEM_TIMEDWAIT 1
++%define HAVE_SYNC_VAL_COMPARE_AND_SWAP 1
++%define HAVE_CABS 0
++%define HAVE_CEXP 0
++%define HAVE_INLINE_ASM 1
++%define HAVE_SYMVER 0
++%define HAVE_X86ASM 1
++%define HAVE_BIGENDIAN 0
++%define HAVE_FAST_UNALIGNED 1
++%define HAVE_ARPA_INET_H 0
++%define HAVE_ASM_TYPES_H 0
++%define HAVE_CDIO_PARANOIA_H 0
++%define HAVE_CDIO_PARANOIA_PARANOIA_H 0
++%define HAVE_CUDA_H 0
++%define HAVE_DISPATCH_DISPATCH_H 0
++%define HAVE_DEV_BKTR_IOCTL_BT848_H 0
++%define HAVE_DEV_BKTR_IOCTL_METEOR_H 0
++%define HAVE_DEV_IC_BT8XX_H 1
++%define HAVE_DEV_VIDEO_BKTR_IOCTL_BT848_H 0
++%define HAVE_DEV_VIDEO_METEOR_IOCTL_METEOR_H 0
++%define HAVE_DIRECT_H 0
++%define HAVE_DIRENT_H 1
++%define HAVE_DXGIDEBUG_H 0
++%define HAVE_DXVA_H 0
++%define HAVE_ES2_GL_H 0
++%define HAVE_GSM_H 0
++%define HAVE_IO_H 0
++%define HAVE_LINUX_DMA_BUF_H 0
++%define HAVE_LINUX_PERF_EVENT_H 0
++%define HAVE_MACHINE_IOCTL_BT848_H 0
++%define HAVE_MACHINE_IOCTL_METEOR_H 0
++%define HAVE_MALLOC_H 0
++%define HAVE_OPENCV2_CORE_CORE_C_H 0
++%define HAVE_OPENGL_GL3_H 0
++%define HAVE_POLL_H 1
++%define HAVE_SYS_PARAM_H 1
++%define HAVE_SYS_RESOURCE_H 1
++%define HAVE_SYS_SELECT_H 1
++%define HAVE_SYS_SOUNDCARD_H 0
++%define HAVE_SYS_TIME_H 1
++%define HAVE_SYS_UN_H 1
++%define HAVE_SYS_VIDEOIO_H 1
++%define HAVE_TERMIOS_H 1
++%define HAVE_UDPLITE_H 0
++%define HAVE_UNISTD_H 1
++%define HAVE_VALGRIND_VALGRIND_H 0
++%define HAVE_WINDOWS_H 0
++%define HAVE_WINSOCK2_H 0
++%define HAVE_INTRINSICS_NEON 0
++%define HAVE_ATANF 1
++%define HAVE_ATAN2F 1
++%define HAVE_CBRT 1
++%define HAVE_CBRTF 1
++%define HAVE_COPYSIGN 1
++%define HAVE_COSF 1
++%define HAVE_ERF 1
++%define HAVE_EXP2 1
++%define HAVE_EXP2F 1
++%define HAVE_EXPF 1
++%define HAVE_HYPOT 1
++%define HAVE_ISFINITE 1
++%define HAVE_ISINF 1
++%define HAVE_ISNAN 1
++%define HAVE_LDEXPF 1
++%define HAVE_LLRINT 1
++%define HAVE_LLRINTF 1
++%define HAVE_LOG2 1
++%define HAVE_LOG2F 1
++%define HAVE_LOG10F 1
++%define HAVE_LRINT 1
++%define HAVE_LRINTF 1
++%define HAVE_POWF 1
++%define HAVE_RINT 1
++%define HAVE_ROUND 1
++%define HAVE_ROUNDF 1
++%define HAVE_SINF 1
++%define HAVE_TRUNC 1
++%define HAVE_TRUNCF 1
++%define HAVE_DOS_PATHS 0
++%define HAVE_LIBC_MSVCRT 0
++%define HAVE_MMAL_PARAMETER_VIDEO_MAX_NUM_CALLBACKS 0
++%define HAVE_SECTION_DATA_REL_RO 1
++%define HAVE_THREADS 1
++%define HAVE_UWP 0
++%define HAVE_WINRT 0
++%define HAVE_ACCESS 1
++%define HAVE_ALIGNED_MALLOC 0
++%define HAVE_ARC4RANDOM 1
++%define HAVE_CLOCK_GETTIME 1
++%define HAVE_CLOSESOCKET 0
++%define HAVE_COMMANDLINETOARGVW 0
++%define HAVE_FCNTL 1
++%define HAVE_GETADDRINFO 0
++%define HAVE_GETHRTIME 0
++%define HAVE_GETOPT 1
++%define HAVE_GETMODULEHANDLE 0
++%define HAVE_GETPROCESSAFFINITYMASK 0
++%define HAVE_GETPROCESSMEMORYINFO 0
++%define HAVE_GETPROCESSTIMES 0
++%define HAVE_GETRUSAGE 1
++%define HAVE_GETSTDHANDLE 0
++%define HAVE_GETSYSTEMTIMEASFILETIME 0
++%define HAVE_GETTIMEOFDAY 1
++%define HAVE_GLOB 1
++%define HAVE_GLXGETPROCADDRESS 0
++%define HAVE_GMTIME_R 1
++%define HAVE_INET_ATON 0
++%define HAVE_ISATTY 1
++%define HAVE_KBHIT 0
++%define HAVE_LOCALTIME_R 1
++%define HAVE_LSTAT 1
++%define HAVE_LZO1X_999_COMPRESS 0
++%define HAVE_MACH_ABSOLUTE_TIME 0
++%define HAVE_MAPVIEWOFFILE 0
++%define HAVE_MEMALIGN 0
++%define HAVE_MKSTEMP 1
++%define HAVE_MMAP 1
++%define HAVE_MPROTECT 1
++%define HAVE_NANOSLEEP 1
++%define HAVE_PEEKNAMEDPIPE 0
++%define HAVE_POSIX_MEMALIGN 1
++%define HAVE_PTHREAD_CANCEL 1
++%define HAVE_SCHED_GETAFFINITY 0
++%define HAVE_SECITEMIMPORT 0
++%define HAVE_SETCONSOLETEXTATTRIBUTE 0
++%define HAVE_SETCONSOLECTRLHANDLER 0
++%define HAVE_SETDLLDIRECTORY 0
++%define HAVE_SETMODE 0
++%define HAVE_SETRLIMIT 1
++%define HAVE_SLEEP 0
++%define HAVE_STRERROR_R 1
++%define HAVE_SYSCONF 1
++%define HAVE_SYSCTL 1
++%define HAVE_USLEEP 1
++%define HAVE_UTGETOSTYPEFROMSTRING 0
++%define HAVE_VIRTUALALLOC 0
++%define HAVE_WGLGETPROCADDRESS 0
++%define HAVE_BCRYPT 0
++%define HAVE_VAAPI_DRM 0
++%define HAVE_VAAPI_X11 0
++%define HAVE_VDPAU_X11 0
++%define HAVE_PTHREADS 1
++%define HAVE_OS2THREADS 0
++%define HAVE_W32THREADS 0
++%define HAVE_AS_ARCH_DIRECTIVE 0
++%define HAVE_AS_DN_DIRECTIVE 0
++%define HAVE_AS_FPU_DIRECTIVE 0
++%define HAVE_AS_FUNC 0
++%define HAVE_AS_OBJECT_ARCH 0
++%define HAVE_ASM_MOD_Q 0
++%define HAVE_BLOCKS_EXTENSION 0
++%define HAVE_EBP_AVAILABLE 1
++%define HAVE_EBX_AVAILABLE 1
++%define HAVE_GNU_AS 0
++%define HAVE_GNU_WINDRES 0
++%define HAVE_IBM_ASM 0
++%define HAVE_INLINE_ASM_DIRECT_SYMBOL_REFS 0
++%define HAVE_INLINE_ASM_LABELS 1
++%define HAVE_INLINE_ASM_NONLOCAL_LABELS 1
++%define HAVE_PRAGMA_DEPRECATED 1
++%define HAVE_RSYNC_CONTIMEOUT 1
++%define HAVE_SYMVER_ASM_LABEL 1
++%define HAVE_SYMVER_GNU_ASM 1
++%define HAVE_VFP_ARGS 0
++%define HAVE_XFORM_ASM 0
++%define HAVE_XMM_CLOBBERS 1
++%define HAVE_KCMVIDEOCODECTYPE_HEVC 0
++%define HAVE_KCVPIXELFORMATTYPE_420YPCBCR10BIPLANARVIDEORANGE 0
++%define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_SMPTE_ST_2084_PQ 0
++%define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_ITU_R_2100_HLG 0
++%define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_LINEAR 0
++%define HAVE_SOCKLEN_T 0
++%define HAVE_STRUCT_ADDRINFO 0
++%define HAVE_STRUCT_GROUP_SOURCE_REQ 0
++%define HAVE_STRUCT_IP_MREQ_SOURCE 0
++%define HAVE_STRUCT_IPV6_MREQ 0
++%define HAVE_STRUCT_MSGHDR_MSG_FLAGS 0
++%define HAVE_STRUCT_POLLFD 0
++%define HAVE_STRUCT_RUSAGE_RU_MAXRSS 1
++%define HAVE_STRUCT_SCTP_EVENT_SUBSCRIBE 0
++%define HAVE_STRUCT_SOCKADDR_IN6 0
++%define HAVE_STRUCT_SOCKADDR_SA_LEN 0
++%define HAVE_STRUCT_SOCKADDR_STORAGE 0
++%define HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC 1
++%define HAVE_STRUCT_V4L2_FRMIVALENUM_DISCRETE 1
++%define HAVE_LIBDRM_GETFB2 0
++%define HAVE_MAKEINFO 1
++%define HAVE_MAKEINFO_HTML 0
++%define HAVE_OPENCL_D3D11 0
++%define HAVE_OPENCL_DRM_ARM 0
++%define HAVE_OPENCL_DRM_BEIGNET 0
++%define HAVE_OPENCL_DXVA2 0
++%define HAVE_OPENCL_VAAPI_BEIGNET 0
++%define HAVE_OPENCL_VAAPI_INTEL_MEDIA 0
++%define HAVE_PERL 1
++%define HAVE_POD2MAN 1
++%define HAVE_TEXI2HTML 0
++%define CONFIG_DOC 0
++%define CONFIG_HTMLPAGES 0
++%define CONFIG_MANPAGES 0
++%define CONFIG_PODPAGES 0
++%define CONFIG_TXTPAGES 0
++%define CONFIG_AVIO_LIST_DIR_EXAMPLE 1
++%define CONFIG_AVIO_READING_EXAMPLE 1
++%define CONFIG_DECODE_AUDIO_EXAMPLE 1
++%define CONFIG_DECODE_VIDEO_EXAMPLE 1
++%define CONFIG_DEMUXING_DECODING_EXAMPLE 1
++%define CONFIG_ENCODE_AUDIO_EXAMPLE 1
++%define CONFIG_ENCODE_VIDEO_EXAMPLE 1
++%define CONFIG_EXTRACT_MVS_EXAMPLE 1
++%define CONFIG_FILTER_AUDIO_EXAMPLE 0
++%define CONFIG_FILTERING_AUDIO_EXAMPLE 0
++%define CONFIG_FILTERING_VIDEO_EXAMPLE 0
++%define CONFIG_HTTP_MULTICLIENT_EXAMPLE 1
++%define CONFIG_HW_DECODE_EXAMPLE 1
++%define CONFIG_METADATA_EXAMPLE 1
++%define CONFIG_MUXING_EXAMPLE 0
++%define CONFIG_QSVDEC_EXAMPLE 0
++%define CONFIG_REMUXING_EXAMPLE 1
++%define CONFIG_RESAMPLING_AUDIO_EXAMPLE 0
++%define CONFIG_SCALING_VIDEO_EXAMPLE 0
++%define CONFIG_TRANSCODE_AAC_EXAMPLE 0
++%define CONFIG_TRANSCODING_EXAMPLE 0
++%define CONFIG_VAAPI_ENCODE_EXAMPLE 0
++%define CONFIG_VAAPI_TRANSCODE_EXAMPLE 0
++%define CONFIG_AVISYNTH 0
++%define CONFIG_FREI0R 0
++%define CONFIG_LIBCDIO 0
++%define CONFIG_LIBDAVS2 0
++%define CONFIG_LIBRUBBERBAND 0
++%define CONFIG_LIBVIDSTAB 0
++%define CONFIG_LIBX264 0
++%define CONFIG_LIBX265 0
++%define CONFIG_LIBXAVS 0
++%define CONFIG_LIBXAVS2 0
++%define CONFIG_LIBXVID 0
++%define CONFIG_DECKLINK 0
++%define CONFIG_LIBFDK_AAC 0
++%define CONFIG_OPENSSL 0
++%define CONFIG_LIBTLS 0
++%define CONFIG_GMP 0
++%define CONFIG_LIBARIBB24 0
++%define CONFIG_LIBLENSFUN 0
++%define CONFIG_LIBOPENCORE_AMRNB 0
++%define CONFIG_LIBOPENCORE_AMRWB 0
++%define CONFIG_LIBVO_AMRWBENC 0
++%define CONFIG_MBEDTLS 0
++%define CONFIG_RKMPP 0
++%define CONFIG_LIBSMBCLIENT 0
++%define CONFIG_CHROMAPRINT 0
++%define CONFIG_GCRYPT 0
++%define CONFIG_GNUTLS 0
++%define CONFIG_JNI 0
++%define CONFIG_LADSPA 0
++%define CONFIG_LIBAOM 0
++%define CONFIG_LIBASS 0
++%define CONFIG_LIBBLURAY 0
++%define CONFIG_LIBBS2B 0
++%define CONFIG_LIBCACA 0
++%define CONFIG_LIBCELT 0
++%define CONFIG_LIBCODEC2 0
++%define CONFIG_LIBDAV1D 0
++%define CONFIG_LIBDC1394 0
++%define CONFIG_LIBDRM 0
++%define CONFIG_LIBFLITE 0
++%define CONFIG_LIBFONTCONFIG 0
++%define CONFIG_LIBFREETYPE 0
++%define CONFIG_LIBFRIBIDI 0
++%define CONFIG_LIBGLSLANG 0
++%define CONFIG_LIBGME 0
++%define CONFIG_LIBGSM 0
++%define CONFIG_LIBIEC61883 0
++%define CONFIG_LIBILBC 0
++%define CONFIG_LIBJACK 0
++%define CONFIG_LIBKLVANC 0
++%define CONFIG_LIBKVAZAAR 0
++%define CONFIG_LIBMODPLUG 0
++%define CONFIG_LIBMP3LAME 0
++%define CONFIG_LIBMYSOFA 0
++%define CONFIG_LIBOPENCV 0
++%define CONFIG_LIBOPENH264 0
++%define CONFIG_LIBOPENJPEG 0
++%define CONFIG_LIBOPENMPT 0
++%define CONFIG_LIBOPENVINO 0
++%define CONFIG_LIBOPUS 1
++%define CONFIG_LIBPULSE 0
++%define CONFIG_LIBRABBITMQ 0
++%define CONFIG_LIBRAV1E 0
++%define CONFIG_LIBRSVG 0
++%define CONFIG_LIBRTMP 0
++%define CONFIG_LIBSHINE 0
++%define CONFIG_LIBSMBCLIENT 0
++%define CONFIG_LIBSNAPPY 0
++%define CONFIG_LIBSOXR 0
++%define CONFIG_LIBSPEEX 0
++%define CONFIG_LIBSRT 0
++%define CONFIG_LIBSSH 0
++%define CONFIG_LIBSVTAV1 0
++%define CONFIG_LIBTENSORFLOW 0
++%define CONFIG_LIBTESSERACT 0
++%define CONFIG_LIBTHEORA 0
++%define CONFIG_LIBTWOLAME 0
++%define CONFIG_LIBUAVS3D 0
++%define CONFIG_LIBV4L2 0
++%define CONFIG_LIBVMAF 0
++%define CONFIG_LIBVORBIS 0
++%define CONFIG_LIBVPX 0
++%define CONFIG_LIBWEBP 0
++%define CONFIG_LIBXML2 0
++%define CONFIG_LIBZIMG 0
++%define CONFIG_LIBZMQ 0
++%define CONFIG_LIBZVBI 0
++%define CONFIG_LV2 0
++%define CONFIG_MEDIACODEC 0
++%define CONFIG_OPENAL 0
++%define CONFIG_OPENGL 0
++%define CONFIG_POCKETSPHINX 0
++%define CONFIG_VAPOURSYNTH 0
++%define CONFIG_ALSA 0
++%define CONFIG_APPKIT 0
++%define CONFIG_AVFOUNDATION 0
++%define CONFIG_BZLIB 0
++%define CONFIG_COREIMAGE 0
++%define CONFIG_ICONV 0
++%define CONFIG_LIBXCB 0
++%define CONFIG_LIBXCB_SHM 0
++%define CONFIG_LIBXCB_SHAPE 0
++%define CONFIG_LIBXCB_XFIXES 0
++%define CONFIG_LZMA 0
++%define CONFIG_MEDIAFOUNDATION 0
++%define CONFIG_SCHANNEL 0
++%define CONFIG_SDL2 0
++%define CONFIG_SECURETRANSPORT 0
++%define CONFIG_SNDIO 0
++%define CONFIG_XLIB 0
++%define CONFIG_ZLIB 0
++%define CONFIG_CUDA_NVCC 0
++%define CONFIG_CUDA_SDK 0
++%define CONFIG_LIBNPP 0
++%define CONFIG_LIBMFX 0
++%define CONFIG_MMAL 0
++%define CONFIG_OMX 0
++%define CONFIG_OPENCL 0
++%define CONFIG_VULKAN 0
++%define CONFIG_AMF 0
++%define CONFIG_AUDIOTOOLBOX 0
++%define CONFIG_CRYSTALHD 0
++%define CONFIG_CUDA 0
++%define CONFIG_CUDA_LLVM 0
++%define CONFIG_CUVID 0
++%define CONFIG_D3D11VA 0
++%define CONFIG_DXVA2 0
++%define CONFIG_FFNVCODEC 0
++%define CONFIG_NVDEC 0
++%define CONFIG_NVENC 0
++%define CONFIG_VAAPI 0
++%define CONFIG_VDPAU 0
++%define CONFIG_VIDEOTOOLBOX 0
++%define CONFIG_V4L2_M2M 0
++%define CONFIG_XVMC 0
++%define CONFIG_FTRAPV 0
++%define CONFIG_GRAY 0
++%define CONFIG_HARDCODED_TABLES 0
++%define CONFIG_OMX_RPI 0
++%define CONFIG_RUNTIME_CPUDETECT 1
++%define CONFIG_SAFE_BITSTREAM_READER 1
++%define CONFIG_SHARED 0
++%define CONFIG_SMALL 0
++%define CONFIG_STATIC 1
++%define CONFIG_SWSCALE_ALPHA 1
++%define CONFIG_GPL 0
++%define CONFIG_NONFREE 0
++%define CONFIG_VERSION3 0
++%define CONFIG_AVDEVICE 0
++%define CONFIG_AVFILTER 0
++%define CONFIG_SWSCALE 0
++%define CONFIG_POSTPROC 0
++%define CONFIG_AVFORMAT 1
++%define CONFIG_AVCODEC 1
++%define CONFIG_SWRESAMPLE 0
++%define CONFIG_AVRESAMPLE 0
++%define CONFIG_AVUTIL 1
++%define CONFIG_FFPLAY 0
++%define CONFIG_FFPROBE 0
++%define CONFIG_FFMPEG 0
++%define CONFIG_DCT 1
++%define CONFIG_DWT 0
++%define CONFIG_ERROR_RESILIENCE 0
++%define CONFIG_FAAN 0
++%define CONFIG_FAST_UNALIGNED 1
++%define CONFIG_FFT 1
++%define CONFIG_LSP 0
++%define CONFIG_LZO 0
++%define CONFIG_MDCT 1
++%define CONFIG_PIXELUTILS 0
++%define CONFIG_NETWORK 0
++%define CONFIG_RDFT 1
++%define CONFIG_AUTODETECT 0
++%define CONFIG_FONTCONFIG 0
++%define CONFIG_LARGE_TESTS 1
++%define CONFIG_LINUX_PERF 0
++%define CONFIG_MEMORY_POISONING 0
++%define CONFIG_NEON_CLOBBER_TEST 0
++%define CONFIG_OSSFUZZ 0
++%define CONFIG_PIC 1
++%define CONFIG_THUMB 0
++%define CONFIG_VALGRIND_BACKTRACE 0
++%define CONFIG_XMM_CLOBBER_TEST 0
++%define CONFIG_BSFS 0
++%define CONFIG_DECODERS 1
++%define CONFIG_ENCODERS 0
++%define CONFIG_HWACCELS 0
++%define CONFIG_PARSERS 1
++%define CONFIG_INDEVS 0
++%define CONFIG_OUTDEVS 0
++%define CONFIG_FILTERS 0
++%define CONFIG_DEMUXERS 1
++%define CONFIG_MUXERS 0
++%define CONFIG_PROTOCOLS 0
++%define CONFIG_AANDCTTABLES 0
++%define CONFIG_AC3DSP 0
++%define CONFIG_ADTS_HEADER 1
++%define CONFIG_ATSC_A53 1
++%define CONFIG_AUDIO_FRAME_QUEUE 0
++%define CONFIG_AUDIODSP 0
++%define CONFIG_BLOCKDSP 0
++%define CONFIG_BSWAPDSP 0
++%define CONFIG_CABAC 1
++%define CONFIG_CBS 0
++%define CONFIG_CBS_AV1 0
++%define CONFIG_CBS_H264 0
++%define CONFIG_CBS_H265 0
++%define CONFIG_CBS_JPEG 0
++%define CONFIG_CBS_MPEG2 0
++%define CONFIG_CBS_VP9 0
++%define CONFIG_DIRAC_PARSE 1
++%define CONFIG_DNN 0
++%define CONFIG_DVPROFILE 0
++%define CONFIG_EXIF 0
++%define CONFIG_FAANDCT 0
++%define CONFIG_FAANIDCT 0
++%define CONFIG_FDCTDSP 0
++%define CONFIG_FLACDSP 1
++%define CONFIG_FMTCONVERT 0
++%define CONFIG_FRAME_THREAD_ENCODER 0
++%define CONFIG_G722DSP 0
++%define CONFIG_GOLOMB 1
++%define CONFIG_GPLV3 0
++%define CONFIG_H263DSP 0
++%define CONFIG_H264CHROMA 1
++%define CONFIG_H264DSP 1
++%define CONFIG_H264PARSE 1
++%define CONFIG_H264PRED 1
++%define CONFIG_H264QPEL 1
++%define CONFIG_HEVCPARSE 0
++%define CONFIG_HPELDSP 1
++%define CONFIG_HUFFMAN 0
++%define CONFIG_HUFFYUVDSP 0
++%define CONFIG_HUFFYUVENCDSP 0
++%define CONFIG_IDCTDSP 0
++%define CONFIG_IIRFILTER 0
++%define CONFIG_MDCT15 1
++%define CONFIG_INTRAX8 0
++%define CONFIG_ISO_MEDIA 1
++%define CONFIG_IVIDSP 0
++%define CONFIG_JPEGTABLES 0
++%define CONFIG_LGPLV3 0
++%define CONFIG_LIBX262 0
++%define CONFIG_LLAUDDSP 0
++%define CONFIG_LLVIDDSP 0
++%define CONFIG_LLVIDENCDSP 0
++%define CONFIG_LPC 0
++%define CONFIG_LZF 0
++%define CONFIG_ME_CMP 0
++%define CONFIG_MPEG_ER 0
++%define CONFIG_MPEGAUDIO 1
++%define CONFIG_MPEGAUDIODSP 1
++%define CONFIG_MPEGAUDIOHEADER 1
++%define CONFIG_MPEGVIDEO 0
++%define CONFIG_MPEGVIDEOENC 0
++%define CONFIG_MSS34DSP 0
++%define CONFIG_PIXBLOCKDSP 0
++%define CONFIG_QPELDSP 0
++%define CONFIG_QSV 0
++%define CONFIG_QSVDEC 0
++%define CONFIG_QSVENC 0
++%define CONFIG_QSVVPP 0
++%define CONFIG_RANGECODER 0
++%define CONFIG_RIFFDEC 1
++%define CONFIG_RIFFENC 0
++%define CONFIG_RTPDEC 0
++%define CONFIG_RTPENC_CHAIN 0
++%define CONFIG_RV34DSP 0
++%define CONFIG_SCENE_SAD 0
++%define CONFIG_SINEWIN 1
++%define CONFIG_SNAPPY 0
++%define CONFIG_SRTP 0
++%define CONFIG_STARTCODE 1
++%define CONFIG_TEXTUREDSP 0
++%define CONFIG_TEXTUREDSPENC 0
++%define CONFIG_TPELDSP 0
++%define CONFIG_VAAPI_1 0
++%define CONFIG_VAAPI_ENCODE 0
++%define CONFIG_VC1DSP 0
++%define CONFIG_VIDEODSP 1
++%define CONFIG_VP3DSP 1
++%define CONFIG_VP56DSP 0
++%define CONFIG_VP8DSP 1
++%define CONFIG_WMA_FREQS 0
++%define CONFIG_WMV2DSP 0
++%define CONFIG_AAC_ADTSTOASC_BSF 0
++%define CONFIG_AV1_FRAME_MERGE_BSF 0
++%define CONFIG_AV1_FRAME_SPLIT_BSF 0
++%define CONFIG_AV1_METADATA_BSF 0
++%define CONFIG_CHOMP_BSF 0
++%define CONFIG_DUMP_EXTRADATA_BSF 0
++%define CONFIG_DCA_CORE_BSF 0
++%define CONFIG_EAC3_CORE_BSF 0
++%define CONFIG_EXTRACT_EXTRADATA_BSF 0
++%define CONFIG_FILTER_UNITS_BSF 0
++%define CONFIG_H264_METADATA_BSF 0
++%define CONFIG_H264_MP4TOANNEXB_BSF 0
++%define CONFIG_H264_REDUNDANT_PPS_BSF 0
++%define CONFIG_HAPQA_EXTRACT_BSF 0
++%define CONFIG_HEVC_METADATA_BSF 0
++%define CONFIG_HEVC_MP4TOANNEXB_BSF 0
++%define CONFIG_IMX_DUMP_HEADER_BSF 0
++%define CONFIG_MJPEG2JPEG_BSF 0
++%define CONFIG_MJPEGA_DUMP_HEADER_BSF 0
++%define CONFIG_MP3_HEADER_DECOMPRESS_BSF 0
++%define CONFIG_MPEG2_METADATA_BSF 0
++%define CONFIG_MPEG4_UNPACK_BFRAMES_BSF 0
++%define CONFIG_MOV2TEXTSUB_BSF 0
++%define CONFIG_NOISE_BSF 0
++%define CONFIG_NULL_BSF 0
++%define CONFIG_OPUS_METADATA_BSF 0
++%define CONFIG_PCM_RECHUNK_BSF 0
++%define CONFIG_PRORES_METADATA_BSF 0
++%define CONFIG_REMOVE_EXTRADATA_BSF 0
++%define CONFIG_SETTS_BSF 0
++%define CONFIG_TEXT2MOVSUB_BSF 0
++%define CONFIG_TRACE_HEADERS_BSF 0
++%define CONFIG_TRUEHD_CORE_BSF 0
++%define CONFIG_VP9_METADATA_BSF 0
++%define CONFIG_VP9_RAW_REORDER_BSF 0
++%define CONFIG_VP9_SUPERFRAME_BSF 0
++%define CONFIG_VP9_SUPERFRAME_SPLIT_BSF 0
++%define CONFIG_AASC_DECODER 0
++%define CONFIG_AIC_DECODER 0
++%define CONFIG_ALIAS_PIX_DECODER 0
++%define CONFIG_AGM_DECODER 0
++%define CONFIG_AMV_DECODER 0
++%define CONFIG_ANM_DECODER 0
++%define CONFIG_ANSI_DECODER 0
++%define CONFIG_APNG_DECODER 0
++%define CONFIG_ARBC_DECODER 0
++%define CONFIG_ARGO_DECODER 0
++%define CONFIG_ASV1_DECODER 0
++%define CONFIG_ASV2_DECODER 0
++%define CONFIG_AURA_DECODER 0
++%define CONFIG_AURA2_DECODER 0
++%define CONFIG_AVRP_DECODER 0
++%define CONFIG_AVRN_DECODER 0
++%define CONFIG_AVS_DECODER 0
++%define CONFIG_AVUI_DECODER 0
++%define CONFIG_AYUV_DECODER 0
++%define CONFIG_BETHSOFTVID_DECODER 0
++%define CONFIG_BFI_DECODER 0
++%define CONFIG_BINK_DECODER 0
++%define CONFIG_BITPACKED_DECODER 0
++%define CONFIG_BMP_DECODER 0
++%define CONFIG_BMV_VIDEO_DECODER 0
++%define CONFIG_BRENDER_PIX_DECODER 0
++%define CONFIG_C93_DECODER 0
++%define CONFIG_CAVS_DECODER 0
++%define CONFIG_CDGRAPHICS_DECODER 0
++%define CONFIG_CDTOONS_DECODER 0
++%define CONFIG_CDXL_DECODER 0
++%define CONFIG_CFHD_DECODER 0
++%define CONFIG_CINEPAK_DECODER 0
++%define CONFIG_CLEARVIDEO_DECODER 0
++%define CONFIG_CLJR_DECODER 0
++%define CONFIG_CLLC_DECODER 0
++%define CONFIG_COMFORTNOISE_DECODER 0
++%define CONFIG_CPIA_DECODER 0
++%define CONFIG_CRI_DECODER 0
++%define CONFIG_CSCD_DECODER 0
++%define CONFIG_CYUV_DECODER 0
++%define CONFIG_DDS_DECODER 0
++%define CONFIG_DFA_DECODER 0
++%define CONFIG_DIRAC_DECODER 0
++%define CONFIG_DNXHD_DECODER 0
++%define CONFIG_DPX_DECODER 0
++%define CONFIG_DSICINVIDEO_DECODER 0
++%define CONFIG_DVAUDIO_DECODER 0
++%define CONFIG_DVVIDEO_DECODER 0
++%define CONFIG_DXA_DECODER 0
++%define CONFIG_DXTORY_DECODER 0
++%define CONFIG_DXV_DECODER 0
++%define CONFIG_EACMV_DECODER 0
++%define CONFIG_EAMAD_DECODER 0
++%define CONFIG_EATGQ_DECODER 0
++%define CONFIG_EATGV_DECODER 0
++%define CONFIG_EATQI_DECODER 0
++%define CONFIG_EIGHTBPS_DECODER 0
++%define CONFIG_EIGHTSVX_EXP_DECODER 0
++%define CONFIG_EIGHTSVX_FIB_DECODER 0
++%define CONFIG_ESCAPE124_DECODER 0
++%define CONFIG_ESCAPE130_DECODER 0
++%define CONFIG_EXR_DECODER 0
++%define CONFIG_FFV1_DECODER 0
++%define CONFIG_FFVHUFF_DECODER 0
++%define CONFIG_FIC_DECODER 0
++%define CONFIG_FITS_DECODER 0
++%define CONFIG_FLASHSV_DECODER 0
++%define CONFIG_FLASHSV2_DECODER 0
++%define CONFIG_FLIC_DECODER 0
++%define CONFIG_FLV_DECODER 0
++%define CONFIG_FMVC_DECODER 0
++%define CONFIG_FOURXM_DECODER 0
++%define CONFIG_FRAPS_DECODER 0
++%define CONFIG_FRWU_DECODER 0
++%define CONFIG_G2M_DECODER 0
++%define CONFIG_GDV_DECODER 0
++%define CONFIG_GIF_DECODER 0
++%define CONFIG_H261_DECODER 0
++%define CONFIG_H263_DECODER 0
++%define CONFIG_H263I_DECODER 0
++%define CONFIG_H263P_DECODER 0
++%define CONFIG_H263_V4L2M2M_DECODER 0
++%define CONFIG_H264_DECODER 1
++%define CONFIG_H264_CRYSTALHD_DECODER 0
++%define CONFIG_H264_V4L2M2M_DECODER 0
++%define CONFIG_H264_MEDIACODEC_DECODER 0
++%define CONFIG_H264_MMAL_DECODER 0
++%define CONFIG_H264_QSV_DECODER 0
++%define CONFIG_H264_RKMPP_DECODER 0
++%define CONFIG_HAP_DECODER 0
++%define CONFIG_HEVC_DECODER 0
++%define CONFIG_HEVC_QSV_DECODER 0
++%define CONFIG_HEVC_RKMPP_DECODER 0
++%define CONFIG_HEVC_V4L2M2M_DECODER 0
++%define CONFIG_HNM4_VIDEO_DECODER 0
++%define CONFIG_HQ_HQA_DECODER 0
++%define CONFIG_HQX_DECODER 0
++%define CONFIG_HUFFYUV_DECODER 0
++%define CONFIG_HYMT_DECODER 0
++%define CONFIG_IDCIN_DECODER 0
++%define CONFIG_IFF_ILBM_DECODER 0
++%define CONFIG_IMM4_DECODER 0
++%define CONFIG_IMM5_DECODER 0
++%define CONFIG_INDEO2_DECODER 0
++%define CONFIG_INDEO3_DECODER 0
++%define CONFIG_INDEO4_DECODER 0
++%define CONFIG_INDEO5_DECODER 0
++%define CONFIG_INTERPLAY_VIDEO_DECODER 0
++%define CONFIG_IPU_DECODER 0
++%define CONFIG_JPEG2000_DECODER 0
++%define CONFIG_JPEGLS_DECODER 0
++%define CONFIG_JV_DECODER 0
++%define CONFIG_KGV1_DECODER 0
++%define CONFIG_KMVC_DECODER 0
++%define CONFIG_LAGARITH_DECODER 0
++%define CONFIG_LOCO_DECODER 0
++%define CONFIG_LSCR_DECODER 0
++%define CONFIG_M101_DECODER 0
++%define CONFIG_MAGICYUV_DECODER 0
++%define CONFIG_MDEC_DECODER 0
++%define CONFIG_MIMIC_DECODER 0
++%define CONFIG_MJPEG_DECODER 0
++%define CONFIG_MJPEGB_DECODER 0
++%define CONFIG_MMVIDEO_DECODER 0
++%define CONFIG_MOBICLIP_DECODER 0
++%define CONFIG_MOTIONPIXELS_DECODER 0
++%define CONFIG_MPEG1VIDEO_DECODER 0
++%define CONFIG_MPEG2VIDEO_DECODER 0
++%define CONFIG_MPEG4_DECODER 0
++%define CONFIG_MPEG4_CRYSTALHD_DECODER 0
++%define CONFIG_MPEG4_V4L2M2M_DECODER 0
++%define CONFIG_MPEG4_MMAL_DECODER 0
++%define CONFIG_MPEGVIDEO_DECODER 0
++%define CONFIG_MPEG1_V4L2M2M_DECODER 0
++%define CONFIG_MPEG2_MMAL_DECODER 0
++%define CONFIG_MPEG2_CRYSTALHD_DECODER 0
++%define CONFIG_MPEG2_V4L2M2M_DECODER 0
++%define CONFIG_MPEG2_QSV_DECODER 0
++%define CONFIG_MPEG2_MEDIACODEC_DECODER 0
++%define CONFIG_MSA1_DECODER 0
++%define CONFIG_MSCC_DECODER 0
++%define CONFIG_MSMPEG4V1_DECODER 0
++%define CONFIG_MSMPEG4V2_DECODER 0
++%define CONFIG_MSMPEG4V3_DECODER 0
++%define CONFIG_MSMPEG4_CRYSTALHD_DECODER 0
++%define CONFIG_MSP2_DECODER 0
++%define CONFIG_MSRLE_DECODER 0
++%define CONFIG_MSS1_DECODER 0
++%define CONFIG_MSS2_DECODER 0
++%define CONFIG_MSVIDEO1_DECODER 0
++%define CONFIG_MSZH_DECODER 0
++%define CONFIG_MTS2_DECODER 0
++%define CONFIG_MV30_DECODER 0
++%define CONFIG_MVC1_DECODER 0
++%define CONFIG_MVC2_DECODER 0
++%define CONFIG_MVDV_DECODER 0
++%define CONFIG_MVHA_DECODER 0
++%define CONFIG_MWSC_DECODER 0
++%define CONFIG_MXPEG_DECODER 0
++%define CONFIG_NOTCHLC_DECODER 0
++%define CONFIG_NUV_DECODER 0
++%define CONFIG_PAF_VIDEO_DECODER 0
++%define CONFIG_PAM_DECODER 0
++%define CONFIG_PBM_DECODER 0
++%define CONFIG_PCX_DECODER 0
++%define CONFIG_PFM_DECODER 0
++%define CONFIG_PGM_DECODER 0
++%define CONFIG_PGMYUV_DECODER 0
++%define CONFIG_PGX_DECODER 0
++%define CONFIG_PHOTOCD_DECODER 0
++%define CONFIG_PICTOR_DECODER 0
++%define CONFIG_PIXLET_DECODER 0
++%define CONFIG_PNG_DECODER 0
++%define CONFIG_PPM_DECODER 0
++%define CONFIG_PRORES_DECODER 0
++%define CONFIG_PROSUMER_DECODER 0
++%define CONFIG_PSD_DECODER 0
++%define CONFIG_PTX_DECODER 0
++%define CONFIG_QDRAW_DECODER 0
++%define CONFIG_QPEG_DECODER 0
++%define CONFIG_QTRLE_DECODER 0
++%define CONFIG_R10K_DECODER 0
++%define CONFIG_R210_DECODER 0
++%define CONFIG_RASC_DECODER 0
++%define CONFIG_RAWVIDEO_DECODER 0
++%define CONFIG_RL2_DECODER 0
++%define CONFIG_ROQ_DECODER 0
++%define CONFIG_RPZA_DECODER 0
++%define CONFIG_RSCC_DECODER 0
++%define CONFIG_RV10_DECODER 0
++%define CONFIG_RV20_DECODER 0
++%define CONFIG_RV30_DECODER 0
++%define CONFIG_RV40_DECODER 0
++%define CONFIG_S302M_DECODER 0
++%define CONFIG_SANM_DECODER 0
++%define CONFIG_SCPR_DECODER 0
++%define CONFIG_SCREENPRESSO_DECODER 0
++%define CONFIG_SGA_DECODER 0
++%define CONFIG_SGI_DECODER 0
++%define CONFIG_SGIRLE_DECODER 0
++%define CONFIG_SHEERVIDEO_DECODER 0
++%define CONFIG_SIMBIOSIS_IMX_DECODER 0
++%define CONFIG_SMACKER_DECODER 0
++%define CONFIG_SMC_DECODER 0
++%define CONFIG_SMVJPEG_DECODER 0
++%define CONFIG_SNOW_DECODER 0
++%define CONFIG_SP5X_DECODER 0
++%define CONFIG_SPEEDHQ_DECODER 0
++%define CONFIG_SRGC_DECODER 0
++%define CONFIG_SUNRAST_DECODER 0
++%define CONFIG_SVQ1_DECODER 0
++%define CONFIG_SVQ3_DECODER 0
++%define CONFIG_TARGA_DECODER 0
++%define CONFIG_TARGA_Y216_DECODER 0
++%define CONFIG_TDSC_DECODER 0
++%define CONFIG_THEORA_DECODER 1
++%define CONFIG_THP_DECODER 0
++%define CONFIG_TIERTEXSEQVIDEO_DECODER 0
++%define CONFIG_TIFF_DECODER 0
++%define CONFIG_TMV_DECODER 0
++%define CONFIG_TRUEMOTION1_DECODER 0
++%define CONFIG_TRUEMOTION2_DECODER 0
++%define CONFIG_TRUEMOTION2RT_DECODER 0
++%define CONFIG_TSCC_DECODER 0
++%define CONFIG_TSCC2_DECODER 0
++%define CONFIG_TXD_DECODER 0
++%define CONFIG_ULTI_DECODER 0
++%define CONFIG_UTVIDEO_DECODER 0
++%define CONFIG_V210_DECODER 0
++%define CONFIG_V210X_DECODER 0
++%define CONFIG_V308_DECODER 0
++%define CONFIG_V408_DECODER 0
++%define CONFIG_V410_DECODER 0
++%define CONFIG_VB_DECODER 0
++%define CONFIG_VBLE_DECODER 0
++%define CONFIG_VC1_DECODER 0
++%define CONFIG_VC1_CRYSTALHD_DECODER 0
++%define CONFIG_VC1IMAGE_DECODER 0
++%define CONFIG_VC1_MMAL_DECODER 0
++%define CONFIG_VC1_QSV_DECODER 0
++%define CONFIG_VC1_V4L2M2M_DECODER 0
++%define CONFIG_VCR1_DECODER 0
++%define CONFIG_VMDVIDEO_DECODER 0
++%define CONFIG_VMNC_DECODER 0
++%define CONFIG_VP3_DECODER 1
++%define CONFIG_VP4_DECODER 0
++%define CONFIG_VP5_DECODER 0
++%define CONFIG_VP6_DECODER 0
++%define CONFIG_VP6A_DECODER 0
++%define CONFIG_VP6F_DECODER 0
++%define CONFIG_VP7_DECODER 0
++%define CONFIG_VP8_DECODER 1
++%define CONFIG_VP8_RKMPP_DECODER 0
++%define CONFIG_VP8_V4L2M2M_DECODER 0
++%define CONFIG_VP9_DECODER 0
++%define CONFIG_VP9_RKMPP_DECODER 0
++%define CONFIG_VP9_V4L2M2M_DECODER 0
++%define CONFIG_VQA_DECODER 0
++%define CONFIG_WEBP_DECODER 0
++%define CONFIG_WCMV_DECODER 0
++%define CONFIG_WRAPPED_AVFRAME_DECODER 0
++%define CONFIG_WMV1_DECODER 0
++%define CONFIG_WMV2_DECODER 0
++%define CONFIG_WMV3_DECODER 0
++%define CONFIG_WMV3_CRYSTALHD_DECODER 0
++%define CONFIG_WMV3IMAGE_DECODER 0
++%define CONFIG_WNV1_DECODER 0
++%define CONFIG_XAN_WC3_DECODER 0
++%define CONFIG_XAN_WC4_DECODER 0
++%define CONFIG_XBM_DECODER 0
++%define CONFIG_XFACE_DECODER 0
++%define CONFIG_XL_DECODER 0
++%define CONFIG_XPM_DECODER 0
++%define CONFIG_XWD_DECODER 0
++%define CONFIG_Y41P_DECODER 0
++%define CONFIG_YLC_DECODER 0
++%define CONFIG_YOP_DECODER 0
++%define CONFIG_YUV4_DECODER 0
++%define CONFIG_ZERO12V_DECODER 0
++%define CONFIG_ZEROCODEC_DECODER 0
++%define CONFIG_ZLIB_DECODER 0
++%define CONFIG_ZMBV_DECODER 0
++%define CONFIG_AAC_DECODER 1
++%define CONFIG_AAC_FIXED_DECODER 0
++%define CONFIG_AAC_LATM_DECODER 0
++%define CONFIG_AC3_DECODER 0
++%define CONFIG_AC3_FIXED_DECODER 0
++%define CONFIG_ACELP_KELVIN_DECODER 0
++%define CONFIG_ALAC_DECODER 0
++%define CONFIG_ALS_DECODER 0
++%define CONFIG_AMRNB_DECODER 0
++%define CONFIG_AMRWB_DECODER 0
++%define CONFIG_APE_DECODER 0
++%define CONFIG_APTX_DECODER 0
++%define CONFIG_APTX_HD_DECODER 0
++%define CONFIG_ATRAC1_DECODER 0
++%define CONFIG_ATRAC3_DECODER 0
++%define CONFIG_ATRAC3AL_DECODER 0
++%define CONFIG_ATRAC3P_DECODER 0
++%define CONFIG_ATRAC3PAL_DECODER 0
++%define CONFIG_ATRAC9_DECODER 0
++%define CONFIG_BINKAUDIO_DCT_DECODER 0
++%define CONFIG_BINKAUDIO_RDFT_DECODER 0
++%define CONFIG_BMV_AUDIO_DECODER 0
++%define CONFIG_COOK_DECODER 0
++%define CONFIG_DCA_DECODER 0
++%define CONFIG_DOLBY_E_DECODER 0
++%define CONFIG_DSD_LSBF_DECODER 0
++%define CONFIG_DSD_MSBF_DECODER 0
++%define CONFIG_DSD_LSBF_PLANAR_DECODER 0
++%define CONFIG_DSD_MSBF_PLANAR_DECODER 0
++%define CONFIG_DSICINAUDIO_DECODER 0
++%define CONFIG_DSS_SP_DECODER 0
++%define CONFIG_DST_DECODER 0
++%define CONFIG_EAC3_DECODER 0
++%define CONFIG_EVRC_DECODER 0
++%define CONFIG_FASTAUDIO_DECODER 0
++%define CONFIG_FFWAVESYNTH_DECODER 0
++%define CONFIG_FLAC_DECODER 1
++%define CONFIG_G723_1_DECODER 0
++%define CONFIG_G729_DECODER 0
++%define CONFIG_GSM_DECODER 0
++%define CONFIG_GSM_MS_DECODER 0
++%define CONFIG_HCA_DECODER 0
++%define CONFIG_HCOM_DECODER 0
++%define CONFIG_IAC_DECODER 0
++%define CONFIG_ILBC_DECODER 0
++%define CONFIG_IMC_DECODER 0
++%define CONFIG_INTERPLAY_ACM_DECODER 0
++%define CONFIG_MACE3_DECODER 0
++%define CONFIG_MACE6_DECODER 0
++%define CONFIG_METASOUND_DECODER 0
++%define CONFIG_MLP_DECODER 0
++%define CONFIG_MP1_DECODER 0
++%define CONFIG_MP1FLOAT_DECODER 0
++%define CONFIG_MP2_DECODER 0
++%define CONFIG_MP2FLOAT_DECODER 0
++%define CONFIG_MP3FLOAT_DECODER 0
++%define CONFIG_MP3_DECODER 1
++%define CONFIG_MP3ADUFLOAT_DECODER 0
++%define CONFIG_MP3ADU_DECODER 0
++%define CONFIG_MP3ON4FLOAT_DECODER 0
++%define CONFIG_MP3ON4_DECODER 0
++%define CONFIG_MPC7_DECODER 0
++%define CONFIG_MPC8_DECODER 0
++%define CONFIG_NELLYMOSER_DECODER 0
++%define CONFIG_ON2AVC_DECODER 0
++%define CONFIG_OPUS_DECODER 0
++%define CONFIG_PAF_AUDIO_DECODER 0
++%define CONFIG_QCELP_DECODER 0
++%define CONFIG_QDM2_DECODER 0
++%define CONFIG_QDMC_DECODER 0
++%define CONFIG_RA_144_DECODER 0
++%define CONFIG_RA_288_DECODER 0
++%define CONFIG_RALF_DECODER 0
++%define CONFIG_SBC_DECODER 0
++%define CONFIG_SHORTEN_DECODER 0
++%define CONFIG_SIPR_DECODER 0
++%define CONFIG_SIREN_DECODER 0
++%define CONFIG_SMACKAUD_DECODER 0
++%define CONFIG_SONIC_DECODER 0
++%define CONFIG_TAK_DECODER 0
++%define CONFIG_TRUEHD_DECODER 0
++%define CONFIG_TRUESPEECH_DECODER 0
++%define CONFIG_TTA_DECODER 0
++%define CONFIG_TWINVQ_DECODER 0
++%define CONFIG_VMDAUDIO_DECODER 0
++%define CONFIG_VORBIS_DECODER 1
++%define CONFIG_WAVPACK_DECODER 0
++%define CONFIG_WMALOSSLESS_DECODER 0
++%define CONFIG_WMAPRO_DECODER 0
++%define CONFIG_WMAV1_DECODER 0
++%define CONFIG_WMAV2_DECODER 0
++%define CONFIG_WMAVOICE_DECODER 0
++%define CONFIG_WS_SND1_DECODER 0
++%define CONFIG_XMA1_DECODER 0
++%define CONFIG_XMA2_DECODER 0
++%define CONFIG_PCM_ALAW_DECODER 1
++%define CONFIG_PCM_BLURAY_DECODER 0
++%define CONFIG_PCM_DVD_DECODER 0
++%define CONFIG_PCM_F16LE_DECODER 0
++%define CONFIG_PCM_F24LE_DECODER 0
++%define CONFIG_PCM_F32BE_DECODER 0
++%define CONFIG_PCM_F32LE_DECODER 1
++%define CONFIG_PCM_F64BE_DECODER 0
++%define CONFIG_PCM_F64LE_DECODER 0
++%define CONFIG_PCM_LXF_DECODER 0
++%define CONFIG_PCM_MULAW_DECODER 1
++%define CONFIG_PCM_S8_DECODER 0
++%define CONFIG_PCM_S8_PLANAR_DECODER 0
++%define CONFIG_PCM_S16BE_DECODER 1
++%define CONFIG_PCM_S16BE_PLANAR_DECODER 0
++%define CONFIG_PCM_S16LE_DECODER 1
++%define CONFIG_PCM_S16LE_PLANAR_DECODER 0
++%define CONFIG_PCM_S24BE_DECODER 1
++%define CONFIG_PCM_S24DAUD_DECODER 0
++%define CONFIG_PCM_S24LE_DECODER 1
++%define CONFIG_PCM_S24LE_PLANAR_DECODER 0
++%define CONFIG_PCM_S32BE_DECODER 0
++%define CONFIG_PCM_S32LE_DECODER 1
++%define CONFIG_PCM_S32LE_PLANAR_DECODER 0
++%define CONFIG_PCM_S64BE_DECODER 0
++%define CONFIG_PCM_S64LE_DECODER 0
++%define CONFIG_PCM_SGA_DECODER 0
++%define CONFIG_PCM_U8_DECODER 1
++%define CONFIG_PCM_U16BE_DECODER 0
++%define CONFIG_PCM_U16LE_DECODER 0
++%define CONFIG_PCM_U24BE_DECODER 0
++%define CONFIG_PCM_U24LE_DECODER 0
++%define CONFIG_PCM_U32BE_DECODER 0
++%define CONFIG_PCM_U32LE_DECODER 0
++%define CONFIG_PCM_VIDC_DECODER 0
++%define CONFIG_DERF_DPCM_DECODER 0
++%define CONFIG_GREMLIN_DPCM_DECODER 0
++%define CONFIG_INTERPLAY_DPCM_DECODER 0
++%define CONFIG_ROQ_DPCM_DECODER 0
++%define CONFIG_SDX2_DPCM_DECODER 0
++%define CONFIG_SOL_DPCM_DECODER 0
++%define CONFIG_XAN_DPCM_DECODER 0
++%define CONFIG_ADPCM_4XM_DECODER 0
++%define CONFIG_ADPCM_ADX_DECODER 0
++%define CONFIG_ADPCM_AFC_DECODER 0
++%define CONFIG_ADPCM_AGM_DECODER 0
++%define CONFIG_ADPCM_AICA_DECODER 0
++%define CONFIG_ADPCM_ARGO_DECODER 0
++%define CONFIG_ADPCM_CT_DECODER 0
++%define CONFIG_ADPCM_DTK_DECODER 0
++%define CONFIG_ADPCM_EA_DECODER 0
++%define CONFIG_ADPCM_EA_MAXIS_XA_DECODER 0
++%define CONFIG_ADPCM_EA_R1_DECODER 0
++%define CONFIG_ADPCM_EA_R2_DECODER 0
++%define CONFIG_ADPCM_EA_R3_DECODER 0
++%define CONFIG_ADPCM_EA_XAS_DECODER 0
++%define CONFIG_ADPCM_G722_DECODER 0
++%define CONFIG_ADPCM_G726_DECODER 0
++%define CONFIG_ADPCM_G726LE_DECODER 0
++%define CONFIG_ADPCM_IMA_AMV_DECODER 0
++%define CONFIG_ADPCM_IMA_ALP_DECODER 0
++%define CONFIG_ADPCM_IMA_APC_DECODER 0
++%define CONFIG_ADPCM_IMA_APM_DECODER 0
++%define CONFIG_ADPCM_IMA_CUNNING_DECODER 0
++%define CONFIG_ADPCM_IMA_DAT4_DECODER 0
++%define CONFIG_ADPCM_IMA_DK3_DECODER 0
++%define CONFIG_ADPCM_IMA_DK4_DECODER 0
++%define CONFIG_ADPCM_IMA_EA_EACS_DECODER 0
++%define CONFIG_ADPCM_IMA_EA_SEAD_DECODER 0
++%define CONFIG_ADPCM_IMA_ISS_DECODER 0
++%define CONFIG_ADPCM_IMA_MOFLEX_DECODER 0
++%define CONFIG_ADPCM_IMA_MTF_DECODER 0
++%define CONFIG_ADPCM_IMA_OKI_DECODER 0
++%define CONFIG_ADPCM_IMA_QT_DECODER 0
++%define CONFIG_ADPCM_IMA_RAD_DECODER 0
++%define CONFIG_ADPCM_IMA_SSI_DECODER 0
++%define CONFIG_ADPCM_IMA_SMJPEG_DECODER 0
++%define CONFIG_ADPCM_IMA_WAV_DECODER 0
++%define CONFIG_ADPCM_IMA_WS_DECODER 0
++%define CONFIG_ADPCM_MS_DECODER 0
++%define CONFIG_ADPCM_MTAF_DECODER 0
++%define CONFIG_ADPCM_PSX_DECODER 0
++%define CONFIG_ADPCM_SBPRO_2_DECODER 0
++%define CONFIG_ADPCM_SBPRO_3_DECODER 0
++%define CONFIG_ADPCM_SBPRO_4_DECODER 0
++%define CONFIG_ADPCM_SWF_DECODER 0
++%define CONFIG_ADPCM_THP_DECODER 0
++%define CONFIG_ADPCM_THP_LE_DECODER 0
++%define CONFIG_ADPCM_VIMA_DECODER 0
++%define CONFIG_ADPCM_XA_DECODER 0
++%define CONFIG_ADPCM_YAMAHA_DECODER 0
++%define CONFIG_ADPCM_ZORK_DECODER 0
++%define CONFIG_SSA_DECODER 0
++%define CONFIG_ASS_DECODER 0
++%define CONFIG_CCAPTION_DECODER 0
++%define CONFIG_DVBSUB_DECODER 0
++%define CONFIG_DVDSUB_DECODER 0
++%define CONFIG_JACOSUB_DECODER 0
++%define CONFIG_MICRODVD_DECODER 0
++%define CONFIG_MOVTEXT_DECODER 0
++%define CONFIG_MPL2_DECODER 0
++%define CONFIG_PGSSUB_DECODER 0
++%define CONFIG_PJS_DECODER 0
++%define CONFIG_REALTEXT_DECODER 0
++%define CONFIG_SAMI_DECODER 0
++%define CONFIG_SRT_DECODER 0
++%define CONFIG_STL_DECODER 0
++%define CONFIG_SUBRIP_DECODER 0
++%define CONFIG_SUBVIEWER_DECODER 0
++%define CONFIG_SUBVIEWER1_DECODER 0
++%define CONFIG_TEXT_DECODER 0
++%define CONFIG_VPLAYER_DECODER 0
++%define CONFIG_WEBVTT_DECODER 0
++%define CONFIG_XSUB_DECODER 0
++%define CONFIG_AAC_AT_DECODER 0
++%define CONFIG_AC3_AT_DECODER 0
++%define CONFIG_ADPCM_IMA_QT_AT_DECODER 0
++%define CONFIG_ALAC_AT_DECODER 0
++%define CONFIG_AMR_NB_AT_DECODER 0
++%define CONFIG_EAC3_AT_DECODER 0
++%define CONFIG_GSM_MS_AT_DECODER 0
++%define CONFIG_ILBC_AT_DECODER 0
++%define CONFIG_MP1_AT_DECODER 0
++%define CONFIG_MP2_AT_DECODER 0
++%define CONFIG_MP3_AT_DECODER 0
++%define CONFIG_PCM_ALAW_AT_DECODER 0
++%define CONFIG_PCM_MULAW_AT_DECODER 0
++%define CONFIG_QDMC_AT_DECODER 0
++%define CONFIG_QDM2_AT_DECODER 0
++%define CONFIG_LIBARIBB24_DECODER 0
++%define CONFIG_LIBCELT_DECODER 0
++%define CONFIG_LIBCODEC2_DECODER 0
++%define CONFIG_LIBDAV1D_DECODER 0
++%define CONFIG_LIBDAVS2_DECODER 0
++%define CONFIG_LIBFDK_AAC_DECODER 0
++%define CONFIG_LIBGSM_DECODER 0
++%define CONFIG_LIBGSM_MS_DECODER 0
++%define CONFIG_LIBILBC_DECODER 0
++%define CONFIG_LIBOPENCORE_AMRNB_DECODER 0
++%define CONFIG_LIBOPENCORE_AMRWB_DECODER 0
++%define CONFIG_LIBOPENJPEG_DECODER 0
++%define CONFIG_LIBOPUS_DECODER 1
++%define CONFIG_LIBRSVG_DECODER 0
++%define CONFIG_LIBSPEEX_DECODER 0
++%define CONFIG_LIBUAVS3D_DECODER 0
++%define CONFIG_LIBVORBIS_DECODER 0
++%define CONFIG_LIBVPX_VP8_DECODER 0
++%define CONFIG_LIBVPX_VP9_DECODER 0
++%define CONFIG_LIBZVBI_TELETEXT_DECODER 0
++%define CONFIG_BINTEXT_DECODER 0
++%define CONFIG_XBIN_DECODER 0
++%define CONFIG_IDF_DECODER 0
++%define CONFIG_LIBAOM_AV1_DECODER 0
++%define CONFIG_AV1_DECODER 0
++%define CONFIG_AV1_CUVID_DECODER 0
++%define CONFIG_AV1_QSV_DECODER 0
++%define CONFIG_LIBOPENH264_DECODER 0
++%define CONFIG_H264_CUVID_DECODER 0
++%define CONFIG_HEVC_CUVID_DECODER 0
++%define CONFIG_HEVC_MEDIACODEC_DECODER 0
++%define CONFIG_MJPEG_CUVID_DECODER 0
++%define CONFIG_MJPEG_QSV_DECODER 0
++%define CONFIG_MPEG1_CUVID_DECODER 0
++%define CONFIG_MPEG2_CUVID_DECODER 0
++%define CONFIG_MPEG4_CUVID_DECODER 0
++%define CONFIG_MPEG4_MEDIACODEC_DECODER 0
++%define CONFIG_VC1_CUVID_DECODER 0
++%define CONFIG_VP8_CUVID_DECODER 0
++%define CONFIG_VP8_MEDIACODEC_DECODER 0
++%define CONFIG_VP8_QSV_DECODER 0
++%define CONFIG_VP9_CUVID_DECODER 0
++%define CONFIG_VP9_MEDIACODEC_DECODER 0
++%define CONFIG_VP9_QSV_DECODER 0
++%define CONFIG_A64MULTI_ENCODER 0
++%define CONFIG_A64MULTI5_ENCODER 0
++%define CONFIG_ALIAS_PIX_ENCODER 0
++%define CONFIG_AMV_ENCODER 0
++%define CONFIG_APNG_ENCODER 0
++%define CONFIG_ASV1_ENCODER 0
++%define CONFIG_ASV2_ENCODER 0
++%define CONFIG_AVRP_ENCODER 0
++%define CONFIG_AVUI_ENCODER 0
++%define CONFIG_AYUV_ENCODER 0
++%define CONFIG_BMP_ENCODER 0
++%define CONFIG_CFHD_ENCODER 0
++%define CONFIG_CINEPAK_ENCODER 0
++%define CONFIG_CLJR_ENCODER 0
++%define CONFIG_COMFORTNOISE_ENCODER 0
++%define CONFIG_DNXHD_ENCODER 0
++%define CONFIG_DPX_ENCODER 0
++%define CONFIG_DVVIDEO_ENCODER 0
++%define CONFIG_EXR_ENCODER 0
++%define CONFIG_FFV1_ENCODER 0
++%define CONFIG_FFVHUFF_ENCODER 0
++%define CONFIG_FITS_ENCODER 0
++%define CONFIG_FLASHSV_ENCODER 0
++%define CONFIG_FLASHSV2_ENCODER 0
++%define CONFIG_FLV_ENCODER 0
++%define CONFIG_GIF_ENCODER 0
++%define CONFIG_H261_ENCODER 0
++%define CONFIG_H263_ENCODER 0
++%define CONFIG_H263P_ENCODER 0
++%define CONFIG_HAP_ENCODER 0
++%define CONFIG_HUFFYUV_ENCODER 0
++%define CONFIG_JPEG2000_ENCODER 0
++%define CONFIG_JPEGLS_ENCODER 0
++%define CONFIG_LJPEG_ENCODER 0
++%define CONFIG_MAGICYUV_ENCODER 0
++%define CONFIG_MJPEG_ENCODER 0
++%define CONFIG_MPEG1VIDEO_ENCODER 0
++%define CONFIG_MPEG2VIDEO_ENCODER 0
++%define CONFIG_MPEG4_ENCODER 0
++%define CONFIG_MSMPEG4V2_ENCODER 0
++%define CONFIG_MSMPEG4V3_ENCODER 0
++%define CONFIG_MSVIDEO1_ENCODER 0
++%define CONFIG_PAM_ENCODER 0
++%define CONFIG_PBM_ENCODER 0
++%define CONFIG_PCX_ENCODER 0
++%define CONFIG_PFM_ENCODER 0
++%define CONFIG_PGM_ENCODER 0
++%define CONFIG_PGMYUV_ENCODER 0
++%define CONFIG_PNG_ENCODER 0
++%define CONFIG_PPM_ENCODER 0
++%define CONFIG_PRORES_ENCODER 0
++%define CONFIG_PRORES_AW_ENCODER 0
++%define CONFIG_PRORES_KS_ENCODER 0
++%define CONFIG_QTRLE_ENCODER 0
++%define CONFIG_R10K_ENCODER 0
++%define CONFIG_R210_ENCODER 0
++%define CONFIG_RAWVIDEO_ENCODER 0
++%define CONFIG_ROQ_ENCODER 0
++%define CONFIG_RPZA_ENCODER 0
++%define CONFIG_RV10_ENCODER 0
++%define CONFIG_RV20_ENCODER 0
++%define CONFIG_S302M_ENCODER 0
++%define CONFIG_SGI_ENCODER 0
++%define CONFIG_SNOW_ENCODER 0
++%define CONFIG_SPEEDHQ_ENCODER 0
++%define CONFIG_SUNRAST_ENCODER 0
++%define CONFIG_SVQ1_ENCODER 0
++%define CONFIG_TARGA_ENCODER 0
++%define CONFIG_TIFF_ENCODER 0
++%define CONFIG_UTVIDEO_ENCODER 0
++%define CONFIG_V210_ENCODER 0
++%define CONFIG_V308_ENCODER 0
++%define CONFIG_V408_ENCODER 0
++%define CONFIG_V410_ENCODER 0
++%define CONFIG_VC2_ENCODER 0
++%define CONFIG_WRAPPED_AVFRAME_ENCODER 0
++%define CONFIG_WMV1_ENCODER 0
++%define CONFIG_WMV2_ENCODER 0
++%define CONFIG_XBM_ENCODER 0
++%define CONFIG_XFACE_ENCODER 0
++%define CONFIG_XWD_ENCODER 0
++%define CONFIG_Y41P_ENCODER 0
++%define CONFIG_YUV4_ENCODER 0
++%define CONFIG_ZLIB_ENCODER 0
++%define CONFIG_ZMBV_ENCODER 0
++%define CONFIG_AAC_ENCODER 0
++%define CONFIG_AC3_ENCODER 0
++%define CONFIG_AC3_FIXED_ENCODER 0
++%define CONFIG_ALAC_ENCODER 0
++%define CONFIG_APTX_ENCODER 0
++%define CONFIG_APTX_HD_ENCODER 0
++%define CONFIG_DCA_ENCODER 0
++%define CONFIG_EAC3_ENCODER 0
++%define CONFIG_FLAC_ENCODER 0
++%define CONFIG_G723_1_ENCODER 0
++%define CONFIG_MLP_ENCODER 0
++%define CONFIG_MP2_ENCODER 0
++%define CONFIG_MP2FIXED_ENCODER 0
++%define CONFIG_NELLYMOSER_ENCODER 0
++%define CONFIG_OPUS_ENCODER 0
++%define CONFIG_RA_144_ENCODER 0
++%define CONFIG_SBC_ENCODER 0
++%define CONFIG_SONIC_ENCODER 0
++%define CONFIG_SONIC_LS_ENCODER 0
++%define CONFIG_TRUEHD_ENCODER 0
++%define CONFIG_TTA_ENCODER 0
++%define CONFIG_VORBIS_ENCODER 0
++%define CONFIG_WAVPACK_ENCODER 0
++%define CONFIG_WMAV1_ENCODER 0
++%define CONFIG_WMAV2_ENCODER 0
++%define CONFIG_PCM_ALAW_ENCODER 0
++%define CONFIG_PCM_DVD_ENCODER 0
++%define CONFIG_PCM_F32BE_ENCODER 0
++%define CONFIG_PCM_F32LE_ENCODER 0
++%define CONFIG_PCM_F64BE_ENCODER 0
++%define CONFIG_PCM_F64LE_ENCODER 0
++%define CONFIG_PCM_MULAW_ENCODER 0
++%define CONFIG_PCM_S8_ENCODER 0
++%define CONFIG_PCM_S8_PLANAR_ENCODER 0
++%define CONFIG_PCM_S16BE_ENCODER 0
++%define CONFIG_PCM_S16BE_PLANAR_ENCODER 0
++%define CONFIG_PCM_S16LE_ENCODER 0
++%define CONFIG_PCM_S16LE_PLANAR_ENCODER 0
++%define CONFIG_PCM_S24BE_ENCODER 0
++%define CONFIG_PCM_S24DAUD_ENCODER 0
++%define CONFIG_PCM_S24LE_ENCODER 0
++%define CONFIG_PCM_S24LE_PLANAR_ENCODER 0
++%define CONFIG_PCM_S32BE_ENCODER 0
++%define CONFIG_PCM_S32LE_ENCODER 0
++%define CONFIG_PCM_S32LE_PLANAR_ENCODER 0
++%define CONFIG_PCM_S64BE_ENCODER 0
++%define CONFIG_PCM_S64LE_ENCODER 0
++%define CONFIG_PCM_U8_ENCODER 0
++%define CONFIG_PCM_U16BE_ENCODER 0
++%define CONFIG_PCM_U16LE_ENCODER 0
++%define CONFIG_PCM_U24BE_ENCODER 0
++%define CONFIG_PCM_U24LE_ENCODER 0
++%define CONFIG_PCM_U32BE_ENCODER 0
++%define CONFIG_PCM_U32LE_ENCODER 0
++%define CONFIG_PCM_VIDC_ENCODER 0
++%define CONFIG_ROQ_DPCM_ENCODER 0
++%define CONFIG_ADPCM_ADX_ENCODER 0
++%define CONFIG_ADPCM_ARGO_ENCODER 0
++%define CONFIG_ADPCM_G722_ENCODER 0
++%define CONFIG_ADPCM_G726_ENCODER 0
++%define CONFIG_ADPCM_G726LE_ENCODER 0
++%define CONFIG_ADPCM_IMA_AMV_ENCODER 0
++%define CONFIG_ADPCM_IMA_ALP_ENCODER 0
++%define CONFIG_ADPCM_IMA_APM_ENCODER 0
++%define CONFIG_ADPCM_IMA_QT_ENCODER 0
++%define CONFIG_ADPCM_IMA_SSI_ENCODER 0
++%define CONFIG_ADPCM_IMA_WAV_ENCODER 0
++%define CONFIG_ADPCM_MS_ENCODER 0
++%define CONFIG_ADPCM_SWF_ENCODER 0
++%define CONFIG_ADPCM_YAMAHA_ENCODER 0
++%define CONFIG_SSA_ENCODER 0
++%define CONFIG_ASS_ENCODER 0
++%define CONFIG_DVBSUB_ENCODER 0
++%define CONFIG_DVDSUB_ENCODER 0
++%define CONFIG_MOVTEXT_ENCODER 0
++%define CONFIG_SRT_ENCODER 0
++%define CONFIG_SUBRIP_ENCODER 0
++%define CONFIG_TEXT_ENCODER 0
++%define CONFIG_TTML_ENCODER 0
++%define CONFIG_WEBVTT_ENCODER 0
++%define CONFIG_XSUB_ENCODER 0
++%define CONFIG_AAC_AT_ENCODER 0
++%define CONFIG_ALAC_AT_ENCODER 0
++%define CONFIG_ILBC_AT_ENCODER 0
++%define CONFIG_PCM_ALAW_AT_ENCODER 0
++%define CONFIG_PCM_MULAW_AT_ENCODER 0
++%define CONFIG_LIBAOM_AV1_ENCODER 0
++%define CONFIG_LIBCODEC2_ENCODER 0
++%define CONFIG_LIBFDK_AAC_ENCODER 0
++%define CONFIG_LIBGSM_ENCODER 0
++%define CONFIG_LIBGSM_MS_ENCODER 0
++%define CONFIG_LIBILBC_ENCODER 0
++%define CONFIG_LIBMP3LAME_ENCODER 0
++%define CONFIG_LIBOPENCORE_AMRNB_ENCODER 0
++%define CONFIG_LIBOPENJPEG_ENCODER 0
++%define CONFIG_LIBOPUS_ENCODER 0
++%define CONFIG_LIBRAV1E_ENCODER 0
++%define CONFIG_LIBSHINE_ENCODER 0
++%define CONFIG_LIBSPEEX_ENCODER 0
++%define CONFIG_LIBSVTAV1_ENCODER 0
++%define CONFIG_LIBTHEORA_ENCODER 0
++%define CONFIG_LIBTWOLAME_ENCODER 0
++%define CONFIG_LIBVO_AMRWBENC_ENCODER 0
++%define CONFIG_LIBVORBIS_ENCODER 0
++%define CONFIG_LIBVPX_VP8_ENCODER 0
++%define CONFIG_LIBVPX_VP9_ENCODER 0
++%define CONFIG_LIBWEBP_ANIM_ENCODER 0
++%define CONFIG_LIBWEBP_ENCODER 0
++%define CONFIG_LIBX262_ENCODER 0
++%define CONFIG_LIBX264_ENCODER 0
++%define CONFIG_LIBX264RGB_ENCODER 0
++%define CONFIG_LIBX265_ENCODER 0
++%define CONFIG_LIBXAVS_ENCODER 0
++%define CONFIG_LIBXAVS2_ENCODER 0
++%define CONFIG_LIBXVID_ENCODER 0
++%define CONFIG_AAC_MF_ENCODER 0
++%define CONFIG_AC3_MF_ENCODER 0
++%define CONFIG_H263_V4L2M2M_ENCODER 0
++%define CONFIG_LIBOPENH264_ENCODER 0
++%define CONFIG_H264_AMF_ENCODER 0
++%define CONFIG_H264_MF_ENCODER 0
++%define CONFIG_H264_NVENC_ENCODER 0
++%define CONFIG_H264_OMX_ENCODER 0
++%define CONFIG_H264_QSV_ENCODER 0
++%define CONFIG_H264_V4L2M2M_ENCODER 0
++%define CONFIG_H264_VAAPI_ENCODER 0
++%define CONFIG_H264_VIDEOTOOLBOX_ENCODER 0
++%define CONFIG_NVENC_ENCODER 0
++%define CONFIG_NVENC_H264_ENCODER 0
++%define CONFIG_NVENC_HEVC_ENCODER 0
++%define CONFIG_HEVC_AMF_ENCODER 0
++%define CONFIG_HEVC_MF_ENCODER 0
++%define CONFIG_HEVC_NVENC_ENCODER 0
++%define CONFIG_HEVC_QSV_ENCODER 0
++%define CONFIG_HEVC_V4L2M2M_ENCODER 0
++%define CONFIG_HEVC_VAAPI_ENCODER 0
++%define CONFIG_HEVC_VIDEOTOOLBOX_ENCODER 0
++%define CONFIG_LIBKVAZAAR_ENCODER 0
++%define CONFIG_MJPEG_QSV_ENCODER 0
++%define CONFIG_MJPEG_VAAPI_ENCODER 0
++%define CONFIG_MP3_MF_ENCODER 0
++%define CONFIG_MPEG2_QSV_ENCODER 0
++%define CONFIG_MPEG2_VAAPI_ENCODER 0
++%define CONFIG_MPEG4_OMX_ENCODER 0
++%define CONFIG_MPEG4_V4L2M2M_ENCODER 0
++%define CONFIG_VP8_V4L2M2M_ENCODER 0
++%define CONFIG_VP8_VAAPI_ENCODER 0
++%define CONFIG_VP9_VAAPI_ENCODER 0
++%define CONFIG_VP9_QSV_ENCODER 0
++%define CONFIG_AV1_D3D11VA_HWACCEL 0
++%define CONFIG_AV1_D3D11VA2_HWACCEL 0
++%define CONFIG_AV1_DXVA2_HWACCEL 0
++%define CONFIG_AV1_NVDEC_HWACCEL 0
++%define CONFIG_AV1_VAAPI_HWACCEL 0
++%define CONFIG_H263_VAAPI_HWACCEL 0
++%define CONFIG_H263_VIDEOTOOLBOX_HWACCEL 0
++%define CONFIG_H264_D3D11VA_HWACCEL 0
++%define CONFIG_H264_D3D11VA2_HWACCEL 0
++%define CONFIG_H264_DXVA2_HWACCEL 0
++%define CONFIG_H264_NVDEC_HWACCEL 0
++%define CONFIG_H264_VAAPI_HWACCEL 0
++%define CONFIG_H264_VDPAU_HWACCEL 0
++%define CONFIG_H264_VIDEOTOOLBOX_HWACCEL 0
++%define CONFIG_HEVC_D3D11VA_HWACCEL 0
++%define CONFIG_HEVC_D3D11VA2_HWACCEL 0
++%define CONFIG_HEVC_DXVA2_HWACCEL 0
++%define CONFIG_HEVC_NVDEC_HWACCEL 0
++%define CONFIG_HEVC_VAAPI_HWACCEL 0
++%define CONFIG_HEVC_VDPAU_HWACCEL 0
++%define CONFIG_HEVC_VIDEOTOOLBOX_HWACCEL 0
++%define CONFIG_MJPEG_NVDEC_HWACCEL 0
++%define CONFIG_MJPEG_VAAPI_HWACCEL 0
++%define CONFIG_MPEG1_NVDEC_HWACCEL 0
++%define CONFIG_MPEG1_VDPAU_HWACCEL 0
++%define CONFIG_MPEG1_VIDEOTOOLBOX_HWACCEL 0
++%define CONFIG_MPEG1_XVMC_HWACCEL 0
++%define CONFIG_MPEG2_D3D11VA_HWACCEL 0
++%define CONFIG_MPEG2_D3D11VA2_HWACCEL 0
++%define CONFIG_MPEG2_NVDEC_HWACCEL 0
++%define CONFIG_MPEG2_DXVA2_HWACCEL 0
++%define CONFIG_MPEG2_VAAPI_HWACCEL 0
++%define CONFIG_MPEG2_VDPAU_HWACCEL 0
++%define CONFIG_MPEG2_VIDEOTOOLBOX_HWACCEL 0
++%define CONFIG_MPEG2_XVMC_HWACCEL 0
++%define CONFIG_MPEG4_NVDEC_HWACCEL 0
++%define CONFIG_MPEG4_VAAPI_HWACCEL 0
++%define CONFIG_MPEG4_VDPAU_HWACCEL 0
++%define CONFIG_MPEG4_VIDEOTOOLBOX_HWACCEL 0
++%define CONFIG_VC1_D3D11VA_HWACCEL 0
++%define CONFIG_VC1_D3D11VA2_HWACCEL 0
++%define CONFIG_VC1_DXVA2_HWACCEL 0
++%define CONFIG_VC1_NVDEC_HWACCEL 0
++%define CONFIG_VC1_VAAPI_HWACCEL 0
++%define CONFIG_VC1_VDPAU_HWACCEL 0
++%define CONFIG_VP8_NVDEC_HWACCEL 0
++%define CONFIG_VP8_VAAPI_HWACCEL 0
++%define CONFIG_VP9_D3D11VA_HWACCEL 0
++%define CONFIG_VP9_D3D11VA2_HWACCEL 0
++%define CONFIG_VP9_DXVA2_HWACCEL 0
++%define CONFIG_VP9_NVDEC_HWACCEL 0
++%define CONFIG_VP9_VAAPI_HWACCEL 0
++%define CONFIG_VP9_VDPAU_HWACCEL 0
++%define CONFIG_WMV3_D3D11VA_HWACCEL 0
++%define CONFIG_WMV3_D3D11VA2_HWACCEL 0
++%define CONFIG_WMV3_DXVA2_HWACCEL 0
++%define CONFIG_WMV3_NVDEC_HWACCEL 0
++%define CONFIG_WMV3_VAAPI_HWACCEL 0
++%define CONFIG_WMV3_VDPAU_HWACCEL 0
++%define CONFIG_AAC_PARSER 1
++%define CONFIG_AAC_LATM_PARSER 0
++%define CONFIG_AC3_PARSER 0
++%define CONFIG_ADX_PARSER 0
++%define CONFIG_AV1_PARSER 0
++%define CONFIG_AVS2_PARSER 0
++%define CONFIG_AVS3_PARSER 0
++%define CONFIG_BMP_PARSER 0
++%define CONFIG_CAVSVIDEO_PARSER 0
++%define CONFIG_COOK_PARSER 0
++%define CONFIG_CRI_PARSER 0
++%define CONFIG_DCA_PARSER 0
++%define CONFIG_DIRAC_PARSER 0
++%define CONFIG_DNXHD_PARSER 0
++%define CONFIG_DOLBY_E_PARSER 0
++%define CONFIG_DPX_PARSER 0
++%define CONFIG_DVAUDIO_PARSER 0
++%define CONFIG_DVBSUB_PARSER 0
++%define CONFIG_DVDSUB_PARSER 0
++%define CONFIG_DVD_NAV_PARSER 0
++%define CONFIG_FLAC_PARSER 1
++%define CONFIG_G723_1_PARSER 0
++%define CONFIG_G729_PARSER 0
++%define CONFIG_GIF_PARSER 0
++%define CONFIG_GSM_PARSER 0
++%define CONFIG_H261_PARSER 0
++%define CONFIG_H263_PARSER 0
++%define CONFIG_H264_PARSER 1
++%define CONFIG_HEVC_PARSER 0
++%define CONFIG_IPU_PARSER 0
++%define CONFIG_JPEG2000_PARSER 0
++%define CONFIG_MJPEG_PARSER 0
++%define CONFIG_MLP_PARSER 0
++%define CONFIG_MPEG4VIDEO_PARSER 0
++%define CONFIG_MPEGAUDIO_PARSER 1
++%define CONFIG_MPEGVIDEO_PARSER 0
++%define CONFIG_OPUS_PARSER 1
++%define CONFIG_PNG_PARSER 0
++%define CONFIG_PNM_PARSER 0
++%define CONFIG_RV30_PARSER 0
++%define CONFIG_RV40_PARSER 0
++%define CONFIG_SBC_PARSER 0
++%define CONFIG_SIPR_PARSER 0
++%define CONFIG_TAK_PARSER 0
++%define CONFIG_VC1_PARSER 0
++%define CONFIG_VORBIS_PARSER 1
++%define CONFIG_VP3_PARSER 1
++%define CONFIG_VP8_PARSER 1
++%define CONFIG_VP9_PARSER 1
++%define CONFIG_WEBP_PARSER 0
++%define CONFIG_XBM_PARSER 0
++%define CONFIG_XMA_PARSER 0
++%define CONFIG_ALSA_INDEV 0
++%define CONFIG_ANDROID_CAMERA_INDEV 0
++%define CONFIG_AVFOUNDATION_INDEV 0
++%define CONFIG_BKTR_INDEV 0
++%define CONFIG_DECKLINK_INDEV 0
++%define CONFIG_DSHOW_INDEV 0
++%define CONFIG_FBDEV_INDEV 0
++%define CONFIG_GDIGRAB_INDEV 0
++%define CONFIG_IEC61883_INDEV 0
++%define CONFIG_JACK_INDEV 0
++%define CONFIG_KMSGRAB_INDEV 0
++%define CONFIG_LAVFI_INDEV 0
++%define CONFIG_OPENAL_INDEV 0
++%define CONFIG_OSS_INDEV 0
++%define CONFIG_PULSE_INDEV 0
++%define CONFIG_SNDIO_INDEV 0
++%define CONFIG_V4L2_INDEV 0
++%define CONFIG_VFWCAP_INDEV 0
++%define CONFIG_XCBGRAB_INDEV 0
++%define CONFIG_LIBCDIO_INDEV 0
++%define CONFIG_LIBDC1394_INDEV 0
++%define CONFIG_ALSA_OUTDEV 0
++%define CONFIG_AUDIOTOOLBOX_OUTDEV 0
++%define CONFIG_CACA_OUTDEV 0
++%define CONFIG_DECKLINK_OUTDEV 0
++%define CONFIG_FBDEV_OUTDEV 0
++%define CONFIG_OPENGL_OUTDEV 0
++%define CONFIG_OSS_OUTDEV 0
++%define CONFIG_PULSE_OUTDEV 0
++%define CONFIG_SDL2_OUTDEV 0
++%define CONFIG_SNDIO_OUTDEV 0
++%define CONFIG_V4L2_OUTDEV 0
++%define CONFIG_XV_OUTDEV 0
++%define CONFIG_ABENCH_FILTER 0
++%define CONFIG_ACOMPRESSOR_FILTER 0
++%define CONFIG_ACONTRAST_FILTER 0
++%define CONFIG_ACOPY_FILTER 0
++%define CONFIG_ACUE_FILTER 0
++%define CONFIG_ACROSSFADE_FILTER 0
++%define CONFIG_ACROSSOVER_FILTER 0
++%define CONFIG_ACRUSHER_FILTER 0
++%define CONFIG_ADECLICK_FILTER 0
++%define CONFIG_ADECLIP_FILTER 0
++%define CONFIG_ADELAY_FILTER 0
++%define CONFIG_ADENORM_FILTER 0
++%define CONFIG_ADERIVATIVE_FILTER 0
++%define CONFIG_AECHO_FILTER 0
++%define CONFIG_AEMPHASIS_FILTER 0
++%define CONFIG_AEVAL_FILTER 0
++%define CONFIG_AEXCITER_FILTER 0
++%define CONFIG_AFADE_FILTER 0
++%define CONFIG_AFFTDN_FILTER 0
++%define CONFIG_AFFTFILT_FILTER 0
++%define CONFIG_AFIR_FILTER 0
++%define CONFIG_AFORMAT_FILTER 0
++%define CONFIG_AFREQSHIFT_FILTER 0
++%define CONFIG_AGATE_FILTER 0
++%define CONFIG_AIIR_FILTER 0
++%define CONFIG_AINTEGRAL_FILTER 0
++%define CONFIG_AINTERLEAVE_FILTER 0
++%define CONFIG_ALIMITER_FILTER 0
++%define CONFIG_ALLPASS_FILTER 0
++%define CONFIG_ALOOP_FILTER 0
++%define CONFIG_AMERGE_FILTER 0
++%define CONFIG_AMETADATA_FILTER 0
++%define CONFIG_AMIX_FILTER 0
++%define CONFIG_AMULTIPLY_FILTER 0
++%define CONFIG_ANEQUALIZER_FILTER 0
++%define CONFIG_ANLMDN_FILTER 0
++%define CONFIG_ANLMS_FILTER 0
++%define CONFIG_ANULL_FILTER 0
++%define CONFIG_APAD_FILTER 0
++%define CONFIG_APERMS_FILTER 0
++%define CONFIG_APHASER_FILTER 0
++%define CONFIG_APHASESHIFT_FILTER 0
++%define CONFIG_APULSATOR_FILTER 0
++%define CONFIG_AREALTIME_FILTER 0
++%define CONFIG_ARESAMPLE_FILTER 0
++%define CONFIG_AREVERSE_FILTER 0
++%define CONFIG_ARNNDN_FILTER 0
++%define CONFIG_ASELECT_FILTER 0
++%define CONFIG_ASENDCMD_FILTER 0
++%define CONFIG_ASETNSAMPLES_FILTER 0
++%define CONFIG_ASETPTS_FILTER 0
++%define CONFIG_ASETRATE_FILTER 0
++%define CONFIG_ASETTB_FILTER 0
++%define CONFIG_ASHOWINFO_FILTER 0
++%define CONFIG_ASIDEDATA_FILTER 0
++%define CONFIG_ASOFTCLIP_FILTER 0
++%define CONFIG_ASPLIT_FILTER 0
++%define CONFIG_ASR_FILTER 0
++%define CONFIG_ASTATS_FILTER 0
++%define CONFIG_ASTREAMSELECT_FILTER 0
++%define CONFIG_ASUBBOOST_FILTER 0
++%define CONFIG_ASUBCUT_FILTER 0
++%define CONFIG_ASUPERCUT_FILTER 0
++%define CONFIG_ASUPERPASS_FILTER 0
++%define CONFIG_ASUPERSTOP_FILTER 0
++%define CONFIG_ATEMPO_FILTER 0
++%define CONFIG_ATRIM_FILTER 0
++%define CONFIG_AXCORRELATE_FILTER 0
++%define CONFIG_AZMQ_FILTER 0
++%define CONFIG_BANDPASS_FILTER 0
++%define CONFIG_BANDREJECT_FILTER 0
++%define CONFIG_BASS_FILTER 0
++%define CONFIG_BIQUAD_FILTER 0
++%define CONFIG_BS2B_FILTER 0
++%define CONFIG_CHROMABER_VULKAN_FILTER 0
++%define CONFIG_CHANNELMAP_FILTER 0
++%define CONFIG_CHANNELSPLIT_FILTER 0
++%define CONFIG_CHORUS_FILTER 0
++%define CONFIG_COMPAND_FILTER 0
++%define CONFIG_COMPENSATIONDELAY_FILTER 0
++%define CONFIG_CROSSFEED_FILTER 0
++%define CONFIG_CRYSTALIZER_FILTER 0
++%define CONFIG_DCSHIFT_FILTER 0
++%define CONFIG_DEESSER_FILTER 0
++%define CONFIG_DRMETER_FILTER 0
++%define CONFIG_DYNAUDNORM_FILTER 0
++%define CONFIG_EARWAX_FILTER 0
++%define CONFIG_EBUR128_FILTER 0
++%define CONFIG_EQUALIZER_FILTER 0
++%define CONFIG_EXTRASTEREO_FILTER 0
++%define CONFIG_FIREQUALIZER_FILTER 0
++%define CONFIG_FLANGER_FILTER 0
++%define CONFIG_HAAS_FILTER 0
++%define CONFIG_HDCD_FILTER 0
++%define CONFIG_HEADPHONE_FILTER 0
++%define CONFIG_HIGHPASS_FILTER 0
++%define CONFIG_HIGHSHELF_FILTER 0
++%define CONFIG_JOIN_FILTER 0
++%define CONFIG_LADSPA_FILTER 0
++%define CONFIG_LOUDNORM_FILTER 0
++%define CONFIG_LOWPASS_FILTER 0
++%define CONFIG_LOWSHELF_FILTER 0
++%define CONFIG_LV2_FILTER 0
++%define CONFIG_MCOMPAND_FILTER 0
++%define CONFIG_PAN_FILTER 0
++%define CONFIG_REPLAYGAIN_FILTER 0
++%define CONFIG_RESAMPLE_FILTER 0
++%define CONFIG_RUBBERBAND_FILTER 0
++%define CONFIG_SIDECHAINCOMPRESS_FILTER 0
++%define CONFIG_SIDECHAINGATE_FILTER 0
++%define CONFIG_SILENCEDETECT_FILTER 0
++%define CONFIG_SILENCEREMOVE_FILTER 0
++%define CONFIG_SOFALIZER_FILTER 0
++%define CONFIG_SPEECHNORM_FILTER 0
++%define CONFIG_STEREOTOOLS_FILTER 0
++%define CONFIG_STEREOWIDEN_FILTER 0
++%define CONFIG_SUPEREQUALIZER_FILTER 0
++%define CONFIG_SURROUND_FILTER 0
++%define CONFIG_TREBLE_FILTER 0
++%define CONFIG_TREMOLO_FILTER 0
++%define CONFIG_VIBRATO_FILTER 0
++%define CONFIG_VOLUME_FILTER 0
++%define CONFIG_VOLUMEDETECT_FILTER 0
++%define CONFIG_AEVALSRC_FILTER 0
++%define CONFIG_AFIRSRC_FILTER 0
++%define CONFIG_ANOISESRC_FILTER 0
++%define CONFIG_ANULLSRC_FILTER 0
++%define CONFIG_FLITE_FILTER 0
++%define CONFIG_HILBERT_FILTER 0
++%define CONFIG_SINC_FILTER 0
++%define CONFIG_SINE_FILTER 0
++%define CONFIG_ANULLSINK_FILTER 0
++%define CONFIG_ADDROI_FILTER 0
++%define CONFIG_ALPHAEXTRACT_FILTER 0
++%define CONFIG_ALPHAMERGE_FILTER 0
++%define CONFIG_AMPLIFY_FILTER 0
++%define CONFIG_ASS_FILTER 0
++%define CONFIG_ATADENOISE_FILTER 0
++%define CONFIG_AVGBLUR_FILTER 0
++%define CONFIG_AVGBLUR_OPENCL_FILTER 0
++%define CONFIG_AVGBLUR_VULKAN_FILTER 0
++%define CONFIG_BBOX_FILTER 0
++%define CONFIG_BENCH_FILTER 0
++%define CONFIG_BILATERAL_FILTER 0
++%define CONFIG_BITPLANENOISE_FILTER 0
++%define CONFIG_BLACKDETECT_FILTER 0
++%define CONFIG_BLACKFRAME_FILTER 0
++%define CONFIG_BLEND_FILTER 0
++%define CONFIG_BM3D_FILTER 0
++%define CONFIG_BOXBLUR_FILTER 0
++%define CONFIG_BOXBLUR_OPENCL_FILTER 0
++%define CONFIG_BWDIF_FILTER 0
++%define CONFIG_CAS_FILTER 0
++%define CONFIG_CHROMAHOLD_FILTER 0
++%define CONFIG_CHROMAKEY_FILTER 0
++%define CONFIG_CHROMANR_FILTER 0
++%define CONFIG_CHROMASHIFT_FILTER 0
++%define CONFIG_CIESCOPE_FILTER 0
++%define CONFIG_CODECVIEW_FILTER 0
++%define CONFIG_COLORBALANCE_FILTER 0
++%define CONFIG_COLORCHANNELMIXER_FILTER 0
++%define CONFIG_COLORCONTRAST_FILTER 0
++%define CONFIG_COLORCORRECT_FILTER 0
++%define CONFIG_COLORIZE_FILTER 0
++%define CONFIG_COLORKEY_FILTER 0
++%define CONFIG_COLORKEY_OPENCL_FILTER 0
++%define CONFIG_COLORHOLD_FILTER 0
++%define CONFIG_COLORLEVELS_FILTER 0
++%define CONFIG_COLORMATRIX_FILTER 0
++%define CONFIG_COLORSPACE_FILTER 0
++%define CONFIG_COLORTEMPERATURE_FILTER 0
++%define CONFIG_CONVOLUTION_FILTER 0
++%define CONFIG_CONVOLUTION_OPENCL_FILTER 0
++%define CONFIG_CONVOLVE_FILTER 0
++%define CONFIG_COPY_FILTER 0
++%define CONFIG_COREIMAGE_FILTER 0
++%define CONFIG_COVER_RECT_FILTER 0
++%define CONFIG_CROP_FILTER 0
++%define CONFIG_CROPDETECT_FILTER 0
++%define CONFIG_CUE_FILTER 0
++%define CONFIG_CURVES_FILTER 0
++%define CONFIG_DATASCOPE_FILTER 0
++%define CONFIG_DBLUR_FILTER 0
++%define CONFIG_DCTDNOIZ_FILTER 0
++%define CONFIG_DEBAND_FILTER 0
++%define CONFIG_DEBLOCK_FILTER 0
++%define CONFIG_DECIMATE_FILTER 0
++%define CONFIG_DECONVOLVE_FILTER 0
++%define CONFIG_DEDOT_FILTER 0
++%define CONFIG_DEFLATE_FILTER 0
++%define CONFIG_DEFLICKER_FILTER 0
++%define CONFIG_DEINTERLACE_QSV_FILTER 0
++%define CONFIG_DEINTERLACE_VAAPI_FILTER 0
++%define CONFIG_DEJUDDER_FILTER 0
++%define CONFIG_DELOGO_FILTER 0
++%define CONFIG_DENOISE_VAAPI_FILTER 0
++%define CONFIG_DERAIN_FILTER 0
++%define CONFIG_DESHAKE_FILTER 0
++%define CONFIG_DESHAKE_OPENCL_FILTER 0
++%define CONFIG_DESPILL_FILTER 0
++%define CONFIG_DETELECINE_FILTER 0
++%define CONFIG_DILATION_FILTER 0
++%define CONFIG_DILATION_OPENCL_FILTER 0
++%define CONFIG_DISPLACE_FILTER 0
++%define CONFIG_DNN_PROCESSING_FILTER 0
++%define CONFIG_DOUBLEWEAVE_FILTER 0
++%define CONFIG_DRAWBOX_FILTER 0
++%define CONFIG_DRAWGRAPH_FILTER 0
++%define CONFIG_DRAWGRID_FILTER 0
++%define CONFIG_DRAWTEXT_FILTER 0
++%define CONFIG_EDGEDETECT_FILTER 0
++%define CONFIG_ELBG_FILTER 0
++%define CONFIG_ENTROPY_FILTER 0
++%define CONFIG_EPX_FILTER 0
++%define CONFIG_EQ_FILTER 0
++%define CONFIG_EROSION_FILTER 0
++%define CONFIG_EROSION_OPENCL_FILTER 0
++%define CONFIG_ESTDIF_FILTER 0
++%define CONFIG_EXPOSURE_FILTER 0
++%define CONFIG_EXTRACTPLANES_FILTER 0
++%define CONFIG_FADE_FILTER 0
++%define CONFIG_FFTDNOIZ_FILTER 0
++%define CONFIG_FFTFILT_FILTER 0
++%define CONFIG_FIELD_FILTER 0
++%define CONFIG_FIELDHINT_FILTER 0
++%define CONFIG_FIELDMATCH_FILTER 0
++%define CONFIG_FIELDORDER_FILTER 0
++%define CONFIG_FILLBORDERS_FILTER 0
++%define CONFIG_FIND_RECT_FILTER 0
++%define CONFIG_FLOODFILL_FILTER 0
++%define CONFIG_FORMAT_FILTER 0
++%define CONFIG_FPS_FILTER 0
++%define CONFIG_FRAMEPACK_FILTER 0
++%define CONFIG_FRAMERATE_FILTER 0
++%define CONFIG_FRAMESTEP_FILTER 0
++%define CONFIG_FREEZEDETECT_FILTER 0
++%define CONFIG_FREEZEFRAMES_FILTER 0
++%define CONFIG_FREI0R_FILTER 0
++%define CONFIG_FSPP_FILTER 0
++%define CONFIG_GBLUR_FILTER 0
++%define CONFIG_GEQ_FILTER 0
++%define CONFIG_GRADFUN_FILTER 0
++%define CONFIG_GRAPHMONITOR_FILTER 0
++%define CONFIG_GREYEDGE_FILTER 0
++%define CONFIG_HALDCLUT_FILTER 0
++%define CONFIG_HFLIP_FILTER 0
++%define CONFIG_HISTEQ_FILTER 0
++%define CONFIG_HISTOGRAM_FILTER 0
++%define CONFIG_HQDN3D_FILTER 0
++%define CONFIG_HQX_FILTER 0
++%define CONFIG_HSTACK_FILTER 0
++%define CONFIG_HUE_FILTER 0
++%define CONFIG_HWDOWNLOAD_FILTER 0
++%define CONFIG_HWMAP_FILTER 0
++%define CONFIG_HWUPLOAD_FILTER 0
++%define CONFIG_HWUPLOAD_CUDA_FILTER 0
++%define CONFIG_HYSTERESIS_FILTER 0
++%define CONFIG_IDENTITY_FILTER 0
++%define CONFIG_IDET_FILTER 0
++%define CONFIG_IL_FILTER 0
++%define CONFIG_INFLATE_FILTER 0
++%define CONFIG_INTERLACE_FILTER 0
++%define CONFIG_INTERLEAVE_FILTER 0
++%define CONFIG_KERNDEINT_FILTER 0
++%define CONFIG_KIRSCH_FILTER 0
++%define CONFIG_LAGFUN_FILTER 0
++%define CONFIG_LENSCORRECTION_FILTER 0
++%define CONFIG_LENSFUN_FILTER 0
++%define CONFIG_LIBVMAF_FILTER 0
++%define CONFIG_LIMITER_FILTER 0
++%define CONFIG_LOOP_FILTER 0
++%define CONFIG_LUMAKEY_FILTER 0
++%define CONFIG_LUT_FILTER 0
++%define CONFIG_LUT1D_FILTER 0
++%define CONFIG_LUT2_FILTER 0
++%define CONFIG_LUT3D_FILTER 0
++%define CONFIG_LUTRGB_FILTER 0
++%define CONFIG_LUTYUV_FILTER 0
++%define CONFIG_MASKEDCLAMP_FILTER 0
++%define CONFIG_MASKEDMAX_FILTER 0
++%define CONFIG_MASKEDMERGE_FILTER 0
++%define CONFIG_MASKEDMIN_FILTER 0
++%define CONFIG_MASKEDTHRESHOLD_FILTER 0
++%define CONFIG_MASKFUN_FILTER 0
++%define CONFIG_MCDEINT_FILTER 0
++%define CONFIG_MEDIAN_FILTER 0
++%define CONFIG_MERGEPLANES_FILTER 0
++%define CONFIG_MESTIMATE_FILTER 0
++%define CONFIG_METADATA_FILTER 0
++%define CONFIG_MIDEQUALIZER_FILTER 0
++%define CONFIG_MINTERPOLATE_FILTER 0
++%define CONFIG_MIX_FILTER 0
++%define CONFIG_MONOCHROME_FILTER 0
++%define CONFIG_MPDECIMATE_FILTER 0
++%define CONFIG_MSAD_FILTER 0
++%define CONFIG_NEGATE_FILTER 0
++%define CONFIG_NLMEANS_FILTER 0
++%define CONFIG_NLMEANS_OPENCL_FILTER 0
++%define CONFIG_NNEDI_FILTER 0
++%define CONFIG_NOFORMAT_FILTER 0
++%define CONFIG_NOISE_FILTER 0
++%define CONFIG_NORMALIZE_FILTER 0
++%define CONFIG_NULL_FILTER 0
++%define CONFIG_OCR_FILTER 0
++%define CONFIG_OCV_FILTER 0
++%define CONFIG_OSCILLOSCOPE_FILTER 0
++%define CONFIG_OVERLAY_FILTER 0
++%define CONFIG_OVERLAY_OPENCL_FILTER 0
++%define CONFIG_OVERLAY_QSV_FILTER 0
++%define CONFIG_OVERLAY_VULKAN_FILTER 0
++%define CONFIG_OVERLAY_CUDA_FILTER 0
++%define CONFIG_OWDENOISE_FILTER 0
++%define CONFIG_PAD_FILTER 0
++%define CONFIG_PAD_OPENCL_FILTER 0
++%define CONFIG_PALETTEGEN_FILTER 0
++%define CONFIG_PALETTEUSE_FILTER 0
++%define CONFIG_PERMS_FILTER 0
++%define CONFIG_PERSPECTIVE_FILTER 0
++%define CONFIG_PHASE_FILTER 0
++%define CONFIG_PHOTOSENSITIVITY_FILTER 0
++%define CONFIG_PIXDESCTEST_FILTER 0
++%define CONFIG_PIXSCOPE_FILTER 0
++%define CONFIG_PP_FILTER 0
++%define CONFIG_PP7_FILTER 0
++%define CONFIG_PREMULTIPLY_FILTER 0
++%define CONFIG_PREWITT_FILTER 0
++%define CONFIG_PREWITT_OPENCL_FILTER 0
++%define CONFIG_PROCAMP_VAAPI_FILTER 0
++%define CONFIG_PROGRAM_OPENCL_FILTER 0
++%define CONFIG_PSEUDOCOLOR_FILTER 0
++%define CONFIG_PSNR_FILTER 0
++%define CONFIG_PULLUP_FILTER 0
++%define CONFIG_QP_FILTER 0
++%define CONFIG_RANDOM_FILTER 0
++%define CONFIG_READEIA608_FILTER 0
++%define CONFIG_READVITC_FILTER 0
++%define CONFIG_REALTIME_FILTER 0
++%define CONFIG_REMAP_FILTER 0
++%define CONFIG_REMOVEGRAIN_FILTER 0
++%define CONFIG_REMOVELOGO_FILTER 0
++%define CONFIG_REPEATFIELDS_FILTER 0
++%define CONFIG_REVERSE_FILTER 0
++%define CONFIG_RGBASHIFT_FILTER 0
++%define CONFIG_ROBERTS_FILTER 0
++%define CONFIG_ROBERTS_OPENCL_FILTER 0
++%define CONFIG_ROTATE_FILTER 0
++%define CONFIG_SAB_FILTER 0
++%define CONFIG_SCALE_FILTER 0
++%define CONFIG_SCALE_CUDA_FILTER 0
++%define CONFIG_SCALE_NPP_FILTER 0
++%define CONFIG_SCALE_QSV_FILTER 0
++%define CONFIG_SCALE_VAAPI_FILTER 0
++%define CONFIG_SCALE_VULKAN_FILTER 0
++%define CONFIG_SCALE2REF_FILTER 0
++%define CONFIG_SCDET_FILTER 0
++%define CONFIG_SCROLL_FILTER 0
++%define CONFIG_SELECT_FILTER 0
++%define CONFIG_SELECTIVECOLOR_FILTER 0
++%define CONFIG_SENDCMD_FILTER 0
++%define CONFIG_SEPARATEFIELDS_FILTER 0
++%define CONFIG_SETDAR_FILTER 0
++%define CONFIG_SETFIELD_FILTER 0
++%define CONFIG_SETPARAMS_FILTER 0
++%define CONFIG_SETPTS_FILTER 0
++%define CONFIG_SETRANGE_FILTER 0
++%define CONFIG_SETSAR_FILTER 0
++%define CONFIG_SETTB_FILTER 0
++%define CONFIG_SHARPNESS_VAAPI_FILTER 0
++%define CONFIG_SHEAR_FILTER 0
++%define CONFIG_SHOWINFO_FILTER 0
++%define CONFIG_SHOWPALETTE_FILTER 0
++%define CONFIG_SHUFFLEFRAMES_FILTER 0
++%define CONFIG_SHUFFLEPIXELS_FILTER 0
++%define CONFIG_SHUFFLEPLANES_FILTER 0
++%define CONFIG_SIDEDATA_FILTER 0
++%define CONFIG_SIGNALSTATS_FILTER 0
++%define CONFIG_SIGNATURE_FILTER 0
++%define CONFIG_SMARTBLUR_FILTER 0
++%define CONFIG_SOBEL_FILTER 0
++%define CONFIG_SOBEL_OPENCL_FILTER 0
++%define CONFIG_SPLIT_FILTER 0
++%define CONFIG_SPP_FILTER 0
++%define CONFIG_SR_FILTER 0
++%define CONFIG_SSIM_FILTER 0
++%define CONFIG_STEREO3D_FILTER 0
++%define CONFIG_STREAMSELECT_FILTER 0
++%define CONFIG_SUBTITLES_FILTER 0
++%define CONFIG_SUPER2XSAI_FILTER 0
++%define CONFIG_SWAPRECT_FILTER 0
++%define CONFIG_SWAPUV_FILTER 0
++%define CONFIG_TBLEND_FILTER 0
++%define CONFIG_TELECINE_FILTER 0
++%define CONFIG_THISTOGRAM_FILTER 0
++%define CONFIG_THRESHOLD_FILTER 0
++%define CONFIG_THUMBNAIL_FILTER 0
++%define CONFIG_THUMBNAIL_CUDA_FILTER 0
++%define CONFIG_TILE_FILTER 0
++%define CONFIG_TINTERLACE_FILTER 0
++%define CONFIG_TLUT2_FILTER 0
++%define CONFIG_TMEDIAN_FILTER 0
++%define CONFIG_TMIDEQUALIZER_FILTER 0
++%define CONFIG_TMIX_FILTER 0
++%define CONFIG_TONEMAP_FILTER 0
++%define CONFIG_TONEMAP_OPENCL_FILTER 0
++%define CONFIG_TONEMAP_VAAPI_FILTER 0
++%define CONFIG_TPAD_FILTER 0
++%define CONFIG_TRANSPOSE_FILTER 0
++%define CONFIG_TRANSPOSE_NPP_FILTER 0
++%define CONFIG_TRANSPOSE_OPENCL_FILTER 0
++%define CONFIG_TRANSPOSE_VAAPI_FILTER 0
++%define CONFIG_TRIM_FILTER 0
++%define CONFIG_UNPREMULTIPLY_FILTER 0
++%define CONFIG_UNSHARP_FILTER 0
++%define CONFIG_UNSHARP_OPENCL_FILTER 0
++%define CONFIG_UNTILE_FILTER 0
++%define CONFIG_USPP_FILTER 0
++%define CONFIG_V360_FILTER 0
++%define CONFIG_VAGUEDENOISER_FILTER 0
++%define CONFIG_VECTORSCOPE_FILTER 0
++%define CONFIG_VFLIP_FILTER 0
++%define CONFIG_VFRDET_FILTER 0
++%define CONFIG_VIBRANCE_FILTER 0
++%define CONFIG_VIDSTABDETECT_FILTER 0
++%define CONFIG_VIDSTABTRANSFORM_FILTER 0
++%define CONFIG_VIF_FILTER 0
++%define CONFIG_VIGNETTE_FILTER 0
++%define CONFIG_VMAFMOTION_FILTER 0
++%define CONFIG_VPP_QSV_FILTER 0
++%define CONFIG_VSTACK_FILTER 0
++%define CONFIG_W3FDIF_FILTER 0
++%define CONFIG_WAVEFORM_FILTER 0
++%define CONFIG_WEAVE_FILTER 0
++%define CONFIG_XBR_FILTER 0
++%define CONFIG_XFADE_FILTER 0
++%define CONFIG_XFADE_OPENCL_FILTER 0
++%define CONFIG_XMEDIAN_FILTER 0
++%define CONFIG_XSTACK_FILTER 0
++%define CONFIG_YADIF_FILTER 0
++%define CONFIG_YADIF_CUDA_FILTER 0
++%define CONFIG_YAEPBLUR_FILTER 0
++%define CONFIG_ZMQ_FILTER 0
++%define CONFIG_ZOOMPAN_FILTER 0
++%define CONFIG_ZSCALE_FILTER 0
++%define CONFIG_ALLRGB_FILTER 0
++%define CONFIG_ALLYUV_FILTER 0
++%define CONFIG_CELLAUTO_FILTER 0
++%define CONFIG_COLOR_FILTER 0
++%define CONFIG_COREIMAGESRC_FILTER 0
++%define CONFIG_FREI0R_SRC_FILTER 0
++%define CONFIG_GRADIENTS_FILTER 0
++%define CONFIG_HALDCLUTSRC_FILTER 0
++%define CONFIG_LIFE_FILTER 0
++%define CONFIG_MANDELBROT_FILTER 0
++%define CONFIG_MPTESTSRC_FILTER 0
++%define CONFIG_NULLSRC_FILTER 0
++%define CONFIG_OPENCLSRC_FILTER 0
++%define CONFIG_PAL75BARS_FILTER 0
++%define CONFIG_PAL100BARS_FILTER 0
++%define CONFIG_RGBTESTSRC_FILTER 0
++%define CONFIG_SIERPINSKI_FILTER 0
++%define CONFIG_SMPTEBARS_FILTER 0
++%define CONFIG_SMPTEHDBARS_FILTER 0
++%define CONFIG_TESTSRC_FILTER 0
++%define CONFIG_TESTSRC2_FILTER 0
++%define CONFIG_YUVTESTSRC_FILTER 0
++%define CONFIG_NULLSINK_FILTER 0
++%define CONFIG_ABITSCOPE_FILTER 0
++%define CONFIG_ADRAWGRAPH_FILTER 0
++%define CONFIG_AGRAPHMONITOR_FILTER 0
++%define CONFIG_AHISTOGRAM_FILTER 0
++%define CONFIG_APHASEMETER_FILTER 0
++%define CONFIG_AVECTORSCOPE_FILTER 0
++%define CONFIG_CONCAT_FILTER 0
++%define CONFIG_SHOWCQT_FILTER 0
++%define CONFIG_SHOWFREQS_FILTER 0
++%define CONFIG_SHOWSPATIAL_FILTER 0
++%define CONFIG_SHOWSPECTRUM_FILTER 0
++%define CONFIG_SHOWSPECTRUMPIC_FILTER 0
++%define CONFIG_SHOWVOLUME_FILTER 0
++%define CONFIG_SHOWWAVES_FILTER 0
++%define CONFIG_SHOWWAVESPIC_FILTER 0
++%define CONFIG_SPECTRUMSYNTH_FILTER 0
++%define CONFIG_AMOVIE_FILTER 0
++%define CONFIG_MOVIE_FILTER 0
++%define CONFIG_AFIFO_FILTER 0
++%define CONFIG_FIFO_FILTER 0
++%define CONFIG_AA_DEMUXER 0
++%define CONFIG_AAC_DEMUXER 1
++%define CONFIG_AAX_DEMUXER 0
++%define CONFIG_AC3_DEMUXER 0
++%define CONFIG_ACE_DEMUXER 0
++%define CONFIG_ACM_DEMUXER 0
++%define CONFIG_ACT_DEMUXER 0
++%define CONFIG_ADF_DEMUXER 0
++%define CONFIG_ADP_DEMUXER 0
++%define CONFIG_ADS_DEMUXER 0
++%define CONFIG_ADX_DEMUXER 0
++%define CONFIG_AEA_DEMUXER 0
++%define CONFIG_AFC_DEMUXER 0
++%define CONFIG_AIFF_DEMUXER 0
++%define CONFIG_AIX_DEMUXER 0
++%define CONFIG_ALP_DEMUXER 0
++%define CONFIG_AMR_DEMUXER 0
++%define CONFIG_AMRNB_DEMUXER 0
++%define CONFIG_AMRWB_DEMUXER 0
++%define CONFIG_ANM_DEMUXER 0
++%define CONFIG_APC_DEMUXER 0
++%define CONFIG_APE_DEMUXER 0
++%define CONFIG_APM_DEMUXER 0
++%define CONFIG_APNG_DEMUXER 0
++%define CONFIG_APTX_DEMUXER 0
++%define CONFIG_APTX_HD_DEMUXER 0
++%define CONFIG_AQTITLE_DEMUXER 0
++%define CONFIG_ARGO_ASF_DEMUXER 0
++%define CONFIG_ARGO_BRP_DEMUXER 0
++%define CONFIG_ASF_DEMUXER 0
++%define CONFIG_ASF_O_DEMUXER 0
++%define CONFIG_ASS_DEMUXER 0
++%define CONFIG_AST_DEMUXER 0
++%define CONFIG_AU_DEMUXER 0
++%define CONFIG_AV1_DEMUXER 0
++%define CONFIG_AVI_DEMUXER 0
++%define CONFIG_AVISYNTH_DEMUXER 0
++%define CONFIG_AVR_DEMUXER 0
++%define CONFIG_AVS_DEMUXER 0
++%define CONFIG_AVS2_DEMUXER 0
++%define CONFIG_AVS3_DEMUXER 0
++%define CONFIG_BETHSOFTVID_DEMUXER 0
++%define CONFIG_BFI_DEMUXER 0
++%define CONFIG_BINTEXT_DEMUXER 0
++%define CONFIG_BINK_DEMUXER 0
++%define CONFIG_BINKA_DEMUXER 0
++%define CONFIG_BIT_DEMUXER 0
++%define CONFIG_BMV_DEMUXER 0
++%define CONFIG_BFSTM_DEMUXER 0
++%define CONFIG_BRSTM_DEMUXER 0
++%define CONFIG_BOA_DEMUXER 0
++%define CONFIG_C93_DEMUXER 0
++%define CONFIG_CAF_DEMUXER 0
++%define CONFIG_CAVSVIDEO_DEMUXER 0
++%define CONFIG_CDG_DEMUXER 0
++%define CONFIG_CDXL_DEMUXER 0
++%define CONFIG_CINE_DEMUXER 0
++%define CONFIG_CODEC2_DEMUXER 0
++%define CONFIG_CODEC2RAW_DEMUXER 0
++%define CONFIG_CONCAT_DEMUXER 0
++%define CONFIG_DASH_DEMUXER 0
++%define CONFIG_DATA_DEMUXER 0
++%define CONFIG_DAUD_DEMUXER 0
++%define CONFIG_DCSTR_DEMUXER 0
++%define CONFIG_DERF_DEMUXER 0
++%define CONFIG_DFA_DEMUXER 0
++%define CONFIG_DHAV_DEMUXER 0
++%define CONFIG_DIRAC_DEMUXER 0
++%define CONFIG_DNXHD_DEMUXER 0
++%define CONFIG_DSF_DEMUXER 0
++%define CONFIG_DSICIN_DEMUXER 0
++%define CONFIG_DSS_DEMUXER 0
++%define CONFIG_DTS_DEMUXER 0
++%define CONFIG_DTSHD_DEMUXER 0
++%define CONFIG_DV_DEMUXER 0
++%define CONFIG_DVBSUB_DEMUXER 0
++%define CONFIG_DVBTXT_DEMUXER 0
++%define CONFIG_DXA_DEMUXER 0
++%define CONFIG_EA_DEMUXER 0
++%define CONFIG_EA_CDATA_DEMUXER 0
++%define CONFIG_EAC3_DEMUXER 0
++%define CONFIG_EPAF_DEMUXER 0
++%define CONFIG_FFMETADATA_DEMUXER 0
++%define CONFIG_FILMSTRIP_DEMUXER 0
++%define CONFIG_FITS_DEMUXER 0
++%define CONFIG_FLAC_DEMUXER 1
++%define CONFIG_FLIC_DEMUXER 0
++%define CONFIG_FLV_DEMUXER 0
++%define CONFIG_LIVE_FLV_DEMUXER 0
++%define CONFIG_FOURXM_DEMUXER 0
++%define CONFIG_FRM_DEMUXER 0
++%define CONFIG_FSB_DEMUXER 0
++%define CONFIG_FWSE_DEMUXER 0
++%define CONFIG_G722_DEMUXER 0
++%define CONFIG_G723_1_DEMUXER 0
++%define CONFIG_G726_DEMUXER 0
++%define CONFIG_G726LE_DEMUXER 0
++%define CONFIG_G729_DEMUXER 0
++%define CONFIG_GDV_DEMUXER 0
++%define CONFIG_GENH_DEMUXER 0
++%define CONFIG_GIF_DEMUXER 0
++%define CONFIG_GSM_DEMUXER 0
++%define CONFIG_GXF_DEMUXER 0
++%define CONFIG_H261_DEMUXER 0
++%define CONFIG_H263_DEMUXER 0
++%define CONFIG_H264_DEMUXER 0
++%define CONFIG_HCA_DEMUXER 0
++%define CONFIG_HCOM_DEMUXER 0
++%define CONFIG_HEVC_DEMUXER 0
++%define CONFIG_HLS_DEMUXER 0
++%define CONFIG_HNM_DEMUXER 0
++%define CONFIG_ICO_DEMUXER 0
++%define CONFIG_IDCIN_DEMUXER 0
++%define CONFIG_IDF_DEMUXER 0
++%define CONFIG_IFF_DEMUXER 0
++%define CONFIG_IFV_DEMUXER 0
++%define CONFIG_ILBC_DEMUXER 0
++%define CONFIG_IMAGE2_DEMUXER 0
++%define CONFIG_IMAGE2PIPE_DEMUXER 0
++%define CONFIG_IMAGE2_ALIAS_PIX_DEMUXER 0
++%define CONFIG_IMAGE2_BRENDER_PIX_DEMUXER 0
++%define CONFIG_INGENIENT_DEMUXER 0
++%define CONFIG_IPMOVIE_DEMUXER 0
++%define CONFIG_IPU_DEMUXER 0
++%define CONFIG_IRCAM_DEMUXER 0
++%define CONFIG_ISS_DEMUXER 0
++%define CONFIG_IV8_DEMUXER 0
++%define CONFIG_IVF_DEMUXER 0
++%define CONFIG_IVR_DEMUXER 0
++%define CONFIG_JACOSUB_DEMUXER 0
++%define CONFIG_JV_DEMUXER 0
++%define CONFIG_KUX_DEMUXER 0
++%define CONFIG_KVAG_DEMUXER 0
++%define CONFIG_LMLM4_DEMUXER 0
++%define CONFIG_LOAS_DEMUXER 0
++%define CONFIG_LUODAT_DEMUXER 0
++%define CONFIG_LRC_DEMUXER 0
++%define CONFIG_LVF_DEMUXER 0
++%define CONFIG_LXF_DEMUXER 0
++%define CONFIG_M4V_DEMUXER 0
++%define CONFIG_MCA_DEMUXER 0
++%define CONFIG_MCC_DEMUXER 0
++%define CONFIG_MATROSKA_DEMUXER 1
++%define CONFIG_MGSTS_DEMUXER 0
++%define CONFIG_MICRODVD_DEMUXER 0
++%define CONFIG_MJPEG_DEMUXER 0
++%define CONFIG_MJPEG_2000_DEMUXER 0
++%define CONFIG_MLP_DEMUXER 0
++%define CONFIG_MLV_DEMUXER 0
++%define CONFIG_MM_DEMUXER 0
++%define CONFIG_MMF_DEMUXER 0
++%define CONFIG_MODS_DEMUXER 0
++%define CONFIG_MOFLEX_DEMUXER 0
++%define CONFIG_MOV_DEMUXER 1
++%define CONFIG_MP3_DEMUXER 1
++%define CONFIG_MPC_DEMUXER 0
++%define CONFIG_MPC8_DEMUXER 0
++%define CONFIG_MPEGPS_DEMUXER 0
++%define CONFIG_MPEGTS_DEMUXER 0
++%define CONFIG_MPEGTSRAW_DEMUXER 0
++%define CONFIG_MPEGVIDEO_DEMUXER 0
++%define CONFIG_MPJPEG_DEMUXER 0
++%define CONFIG_MPL2_DEMUXER 0
++%define CONFIG_MPSUB_DEMUXER 0
++%define CONFIG_MSF_DEMUXER 0
++%define CONFIG_MSNWC_TCP_DEMUXER 0
++%define CONFIG_MSP_DEMUXER 0
++%define CONFIG_MTAF_DEMUXER 0
++%define CONFIG_MTV_DEMUXER 0
++%define CONFIG_MUSX_DEMUXER 0
++%define CONFIG_MV_DEMUXER 0
++%define CONFIG_MVI_DEMUXER 0
++%define CONFIG_MXF_DEMUXER 0
++%define CONFIG_MXG_DEMUXER 0
++%define CONFIG_NC_DEMUXER 0
++%define CONFIG_NISTSPHERE_DEMUXER 0
++%define CONFIG_NSP_DEMUXER 0
++%define CONFIG_NSV_DEMUXER 0
++%define CONFIG_NUT_DEMUXER 0
++%define CONFIG_NUV_DEMUXER 0
++%define CONFIG_OBU_DEMUXER 0
++%define CONFIG_OGG_DEMUXER 1
++%define CONFIG_OMA_DEMUXER 0
++%define CONFIG_PAF_DEMUXER 0
++%define CONFIG_PCM_ALAW_DEMUXER 0
++%define CONFIG_PCM_MULAW_DEMUXER 0
++%define CONFIG_PCM_VIDC_DEMUXER 0
++%define CONFIG_PCM_F64BE_DEMUXER 0
++%define CONFIG_PCM_F64LE_DEMUXER 0
++%define CONFIG_PCM_F32BE_DEMUXER 0
++%define CONFIG_PCM_F32LE_DEMUXER 0
++%define CONFIG_PCM_S32BE_DEMUXER 0
++%define CONFIG_PCM_S32LE_DEMUXER 0
++%define CONFIG_PCM_S24BE_DEMUXER 0
++%define CONFIG_PCM_S24LE_DEMUXER 0
++%define CONFIG_PCM_S16BE_DEMUXER 0
++%define CONFIG_PCM_S16LE_DEMUXER 0
++%define CONFIG_PCM_S8_DEMUXER 0
++%define CONFIG_PCM_U32BE_DEMUXER 0
++%define CONFIG_PCM_U32LE_DEMUXER 0
++%define CONFIG_PCM_U24BE_DEMUXER 0
++%define CONFIG_PCM_U24LE_DEMUXER 0
++%define CONFIG_PCM_U16BE_DEMUXER 0
++%define CONFIG_PCM_U16LE_DEMUXER 0
++%define CONFIG_PCM_U8_DEMUXER 0
++%define CONFIG_PJS_DEMUXER 0
++%define CONFIG_PMP_DEMUXER 0
++%define CONFIG_PP_BNK_DEMUXER 0
++%define CONFIG_PVA_DEMUXER 0
++%define CONFIG_PVF_DEMUXER 0
++%define CONFIG_QCP_DEMUXER 0
++%define CONFIG_R3D_DEMUXER 0
++%define CONFIG_RAWVIDEO_DEMUXER 0
++%define CONFIG_REALTEXT_DEMUXER 0
++%define CONFIG_REDSPARK_DEMUXER 0
++%define CONFIG_RL2_DEMUXER 0
++%define CONFIG_RM_DEMUXER 0
++%define CONFIG_ROQ_DEMUXER 0
++%define CONFIG_RPL_DEMUXER 0
++%define CONFIG_RSD_DEMUXER 0
++%define CONFIG_RSO_DEMUXER 0
++%define CONFIG_RTP_DEMUXER 0
++%define CONFIG_RTSP_DEMUXER 0
++%define CONFIG_S337M_DEMUXER 0
++%define CONFIG_SAMI_DEMUXER 0
++%define CONFIG_SAP_DEMUXER 0
++%define CONFIG_SBC_DEMUXER 0
++%define CONFIG_SBG_DEMUXER 0
++%define CONFIG_SCC_DEMUXER 0
++%define CONFIG_SDP_DEMUXER 0
++%define CONFIG_SDR2_DEMUXER 0
++%define CONFIG_SDS_DEMUXER 0
++%define CONFIG_SDX_DEMUXER 0
++%define CONFIG_SEGAFILM_DEMUXER 0
++%define CONFIG_SER_DEMUXER 0
++%define CONFIG_SGA_DEMUXER 0
++%define CONFIG_SHORTEN_DEMUXER 0
++%define CONFIG_SIFF_DEMUXER 0
++%define CONFIG_SIMBIOSIS_IMX_DEMUXER 0
++%define CONFIG_SLN_DEMUXER 0
++%define CONFIG_SMACKER_DEMUXER 0
++%define CONFIG_SMJPEG_DEMUXER 0
++%define CONFIG_SMUSH_DEMUXER 0
++%define CONFIG_SOL_DEMUXER 0
++%define CONFIG_SOX_DEMUXER 0
++%define CONFIG_SPDIF_DEMUXER 0
++%define CONFIG_SRT_DEMUXER 0
++%define CONFIG_STR_DEMUXER 0
++%define CONFIG_STL_DEMUXER 0
++%define CONFIG_SUBVIEWER1_DEMUXER 0
++%define CONFIG_SUBVIEWER_DEMUXER 0
++%define CONFIG_SUP_DEMUXER 0
++%define CONFIG_SVAG_DEMUXER 0
++%define CONFIG_SVS_DEMUXER 0
++%define CONFIG_SWF_DEMUXER 0
++%define CONFIG_TAK_DEMUXER 0
++%define CONFIG_TEDCAPTIONS_DEMUXER 0
++%define CONFIG_THP_DEMUXER 0
++%define CONFIG_THREEDOSTR_DEMUXER 0
++%define CONFIG_TIERTEXSEQ_DEMUXER 0
++%define CONFIG_TMV_DEMUXER 0
++%define CONFIG_TRUEHD_DEMUXER 0
++%define CONFIG_TTA_DEMUXER 0
++%define CONFIG_TXD_DEMUXER 0
++%define CONFIG_TTY_DEMUXER 0
++%define CONFIG_TY_DEMUXER 0
++%define CONFIG_V210_DEMUXER 0
++%define CONFIG_V210X_DEMUXER 0
++%define CONFIG_VAG_DEMUXER 0
++%define CONFIG_VC1_DEMUXER 0
++%define CONFIG_VC1T_DEMUXER 0
++%define CONFIG_VIVIDAS_DEMUXER 0
++%define CONFIG_VIVO_DEMUXER 0
++%define CONFIG_VMD_DEMUXER 0
++%define CONFIG_VOBSUB_DEMUXER 0
++%define CONFIG_VOC_DEMUXER 0
++%define CONFIG_VPK_DEMUXER 0
++%define CONFIG_VPLAYER_DEMUXER 0
++%define CONFIG_VQF_DEMUXER 0
++%define CONFIG_W64_DEMUXER 0
++%define CONFIG_WAV_DEMUXER 1
++%define CONFIG_WC3_DEMUXER 0
++%define CONFIG_WEBM_DASH_MANIFEST_DEMUXER 0
++%define CONFIG_WEBVTT_DEMUXER 0
++%define CONFIG_WSAUD_DEMUXER 0
++%define CONFIG_WSD_DEMUXER 0
++%define CONFIG_WSVQA_DEMUXER 0
++%define CONFIG_WTV_DEMUXER 0
++%define CONFIG_WVE_DEMUXER 0
++%define CONFIG_WV_DEMUXER 0
++%define CONFIG_XA_DEMUXER 0
++%define CONFIG_XBIN_DEMUXER 0
++%define CONFIG_XMV_DEMUXER 0
++%define CONFIG_XVAG_DEMUXER 0
++%define CONFIG_XWMA_DEMUXER 0
++%define CONFIG_YOP_DEMUXER 0
++%define CONFIG_YUV4MPEGPIPE_DEMUXER 0
++%define CONFIG_IMAGE_BMP_PIPE_DEMUXER 0
++%define CONFIG_IMAGE_CRI_PIPE_DEMUXER 0
++%define CONFIG_IMAGE_DDS_PIPE_DEMUXER 0
++%define CONFIG_IMAGE_DPX_PIPE_DEMUXER 0
++%define CONFIG_IMAGE_EXR_PIPE_DEMUXER 0
++%define CONFIG_IMAGE_GIF_PIPE_DEMUXER 0
++%define CONFIG_IMAGE_J2K_PIPE_DEMUXER 0
++%define CONFIG_IMAGE_JPEG_PIPE_DEMUXER 0
++%define CONFIG_IMAGE_JPEGLS_PIPE_DEMUXER 0
++%define CONFIG_IMAGE_PAM_PIPE_DEMUXER 0
++%define CONFIG_IMAGE_PBM_PIPE_DEMUXER 0
++%define CONFIG_IMAGE_PCX_PIPE_DEMUXER 0
++%define CONFIG_IMAGE_PGMYUV_PIPE_DEMUXER 0
++%define CONFIG_IMAGE_PGM_PIPE_DEMUXER 0
++%define CONFIG_IMAGE_PGX_PIPE_DEMUXER 0
++%define CONFIG_IMAGE_PHOTOCD_PIPE_DEMUXER 0
++%define CONFIG_IMAGE_PICTOR_PIPE_DEMUXER 0
++%define CONFIG_IMAGE_PNG_PIPE_DEMUXER 0
++%define CONFIG_IMAGE_PPM_PIPE_DEMUXER 0
++%define CONFIG_IMAGE_PSD_PIPE_DEMUXER 0
++%define CONFIG_IMAGE_QDRAW_PIPE_DEMUXER 0
++%define CONFIG_IMAGE_SGI_PIPE_DEMUXER 0
++%define CONFIG_IMAGE_SVG_PIPE_DEMUXER 0
++%define CONFIG_IMAGE_SUNRAST_PIPE_DEMUXER 0
++%define CONFIG_IMAGE_TIFF_PIPE_DEMUXER 0
++%define CONFIG_IMAGE_WEBP_PIPE_DEMUXER 0
++%define CONFIG_IMAGE_XBM_PIPE_DEMUXER 0
++%define CONFIG_IMAGE_XPM_PIPE_DEMUXER 0
++%define CONFIG_IMAGE_XWD_PIPE_DEMUXER 0
++%define CONFIG_LIBGME_DEMUXER 0
++%define CONFIG_LIBMODPLUG_DEMUXER 0
++%define CONFIG_LIBOPENMPT_DEMUXER 0
++%define CONFIG_VAPOURSYNTH_DEMUXER 0
++%define CONFIG_A64_MUXER 0
++%define CONFIG_AC3_MUXER 0
++%define CONFIG_ADTS_MUXER 0
++%define CONFIG_ADX_MUXER 0
++%define CONFIG_AIFF_MUXER 0
++%define CONFIG_ALP_MUXER 0
++%define CONFIG_AMR_MUXER 0
++%define CONFIG_AMV_MUXER 0
++%define CONFIG_APM_MUXER 0
++%define CONFIG_APNG_MUXER 0
++%define CONFIG_APTX_MUXER 0
++%define CONFIG_APTX_HD_MUXER 0
++%define CONFIG_ARGO_ASF_MUXER 0
++%define CONFIG_ASF_MUXER 0
++%define CONFIG_ASS_MUXER 0
++%define CONFIG_AST_MUXER 0
++%define CONFIG_ASF_STREAM_MUXER 0
++%define CONFIG_AU_MUXER 0
++%define CONFIG_AVI_MUXER 0
++%define CONFIG_AVM2_MUXER 0
++%define CONFIG_AVS2_MUXER 0
++%define CONFIG_BIT_MUXER 0
++%define CONFIG_CAF_MUXER 0
++%define CONFIG_CAVSVIDEO_MUXER 0
++%define CONFIG_CODEC2_MUXER 0
++%define CONFIG_CODEC2RAW_MUXER 0
++%define CONFIG_CRC_MUXER 0
++%define CONFIG_DASH_MUXER 0
++%define CONFIG_DATA_MUXER 0
++%define CONFIG_DAUD_MUXER 0
++%define CONFIG_DIRAC_MUXER 0
++%define CONFIG_DNXHD_MUXER 0
++%define CONFIG_DTS_MUXER 0
++%define CONFIG_DV_MUXER 0
++%define CONFIG_EAC3_MUXER 0
++%define CONFIG_F4V_MUXER 0
++%define CONFIG_FFMETADATA_MUXER 0
++%define CONFIG_FIFO_MUXER 0
++%define CONFIG_FIFO_TEST_MUXER 0
++%define CONFIG_FILMSTRIP_MUXER 0
++%define CONFIG_FITS_MUXER 0
++%define CONFIG_FLAC_MUXER 0
++%define CONFIG_FLV_MUXER 0
++%define CONFIG_FRAMECRC_MUXER 0
++%define CONFIG_FRAMEHASH_MUXER 0
++%define CONFIG_FRAMEMD5_MUXER 0
++%define CONFIG_G722_MUXER 0
++%define CONFIG_G723_1_MUXER 0
++%define CONFIG_G726_MUXER 0
++%define CONFIG_G726LE_MUXER 0
++%define CONFIG_GIF_MUXER 0
++%define CONFIG_GSM_MUXER 0
++%define CONFIG_GXF_MUXER 0
++%define CONFIG_H261_MUXER 0
++%define CONFIG_H263_MUXER 0
++%define CONFIG_H264_MUXER 0
++%define CONFIG_HASH_MUXER 0
++%define CONFIG_HDS_MUXER 0
++%define CONFIG_HEVC_MUXER 0
++%define CONFIG_HLS_MUXER 0
++%define CONFIG_ICO_MUXER 0
++%define CONFIG_ILBC_MUXER 0
++%define CONFIG_IMAGE2_MUXER 0
++%define CONFIG_IMAGE2PIPE_MUXER 0
++%define CONFIG_IPOD_MUXER 0
++%define CONFIG_IRCAM_MUXER 0
++%define CONFIG_ISMV_MUXER 0
++%define CONFIG_IVF_MUXER 0
++%define CONFIG_JACOSUB_MUXER 0
++%define CONFIG_KVAG_MUXER 0
++%define CONFIG_LATM_MUXER 0
++%define CONFIG_LRC_MUXER 0
++%define CONFIG_M4V_MUXER 0
++%define CONFIG_MD5_MUXER 0
++%define CONFIG_MATROSKA_MUXER 0
++%define CONFIG_MATROSKA_AUDIO_MUXER 0
++%define CONFIG_MICRODVD_MUXER 0
++%define CONFIG_MJPEG_MUXER 0
++%define CONFIG_MLP_MUXER 0
++%define CONFIG_MMF_MUXER 0
++%define CONFIG_MOV_MUXER 0
++%define CONFIG_MP2_MUXER 0
++%define CONFIG_MP3_MUXER 0
++%define CONFIG_MP4_MUXER 0
++%define CONFIG_MPEG1SYSTEM_MUXER 0
++%define CONFIG_MPEG1VCD_MUXER 0
++%define CONFIG_MPEG1VIDEO_MUXER 0
++%define CONFIG_MPEG2DVD_MUXER 0
++%define CONFIG_MPEG2SVCD_MUXER 0
++%define CONFIG_MPEG2VIDEO_MUXER 0
++%define CONFIG_MPEG2VOB_MUXER 0
++%define CONFIG_MPEGTS_MUXER 0
++%define CONFIG_MPJPEG_MUXER 0
++%define CONFIG_MXF_MUXER 0
++%define CONFIG_MXF_D10_MUXER 0
++%define CONFIG_MXF_OPATOM_MUXER 0
++%define CONFIG_NULL_MUXER 0
++%define CONFIG_NUT_MUXER 0
++%define CONFIG_OGA_MUXER 0
++%define CONFIG_OGG_MUXER 0
++%define CONFIG_OGV_MUXER 0
++%define CONFIG_OMA_MUXER 0
++%define CONFIG_OPUS_MUXER 0
++%define CONFIG_PCM_ALAW_MUXER 0
++%define CONFIG_PCM_MULAW_MUXER 0
++%define CONFIG_PCM_VIDC_MUXER 0
++%define CONFIG_PCM_F64BE_MUXER 0
++%define CONFIG_PCM_F64LE_MUXER 0
++%define CONFIG_PCM_F32BE_MUXER 0
++%define CONFIG_PCM_F32LE_MUXER 0
++%define CONFIG_PCM_S32BE_MUXER 0
++%define CONFIG_PCM_S32LE_MUXER 0
++%define CONFIG_PCM_S24BE_MUXER 0
++%define CONFIG_PCM_S24LE_MUXER 0
++%define CONFIG_PCM_S16BE_MUXER 0
++%define CONFIG_PCM_S16LE_MUXER 0
++%define CONFIG_PCM_S8_MUXER 0
++%define CONFIG_PCM_U32BE_MUXER 0
++%define CONFIG_PCM_U32LE_MUXER 0
++%define CONFIG_PCM_U24BE_MUXER 0
++%define CONFIG_PCM_U24LE_MUXER 0
++%define CONFIG_PCM_U16BE_MUXER 0
++%define CONFIG_PCM_U16LE_MUXER 0
++%define CONFIG_PCM_U8_MUXER 0
++%define CONFIG_PSP_MUXER 0
++%define CONFIG_RAWVIDEO_MUXER 0
++%define CONFIG_RM_MUXER 0
++%define CONFIG_ROQ_MUXER 0
++%define CONFIG_RSO_MUXER 0
++%define CONFIG_RTP_MUXER 0
++%define CONFIG_RTP_MPEGTS_MUXER 0
++%define CONFIG_RTSP_MUXER 0
++%define CONFIG_SAP_MUXER 0
++%define CONFIG_SBC_MUXER 0
++%define CONFIG_SCC_MUXER 0
++%define CONFIG_SEGAFILM_MUXER 0
++%define CONFIG_SEGMENT_MUXER 0
++%define CONFIG_STREAM_SEGMENT_MUXER 0
++%define CONFIG_SINGLEJPEG_MUXER 0
++%define CONFIG_SMJPEG_MUXER 0
++%define CONFIG_SMOOTHSTREAMING_MUXER 0
++%define CONFIG_SOX_MUXER 0
++%define CONFIG_SPX_MUXER 0
++%define CONFIG_SPDIF_MUXER 0
++%define CONFIG_SRT_MUXER 0
++%define CONFIG_STREAMHASH_MUXER 0
++%define CONFIG_SUP_MUXER 0
++%define CONFIG_SWF_MUXER 0
++%define CONFIG_TEE_MUXER 0
++%define CONFIG_TG2_MUXER 0
++%define CONFIG_TGP_MUXER 0
++%define CONFIG_MKVTIMESTAMP_V2_MUXER 0
++%define CONFIG_TRUEHD_MUXER 0
++%define CONFIG_TTA_MUXER 0
++%define CONFIG_TTML_MUXER 0
++%define CONFIG_UNCODEDFRAMECRC_MUXER 0
++%define CONFIG_VC1_MUXER 0
++%define CONFIG_VC1T_MUXER 0
++%define CONFIG_VOC_MUXER 0
++%define CONFIG_W64_MUXER 0
++%define CONFIG_WAV_MUXER 0
++%define CONFIG_WEBM_MUXER 0
++%define CONFIG_WEBM_DASH_MANIFEST_MUXER 0
++%define CONFIG_WEBM_CHUNK_MUXER 0
++%define CONFIG_WEBP_MUXER 0
++%define CONFIG_WEBVTT_MUXER 0
++%define CONFIG_WTV_MUXER 0
++%define CONFIG_WV_MUXER 0
++%define CONFIG_YUV4MPEGPIPE_MUXER 0
++%define CONFIG_CHROMAPRINT_MUXER 0
++%define CONFIG_ASYNC_PROTOCOL 0
++%define CONFIG_BLURAY_PROTOCOL 0
++%define CONFIG_CACHE_PROTOCOL 0
++%define CONFIG_CONCAT_PROTOCOL 0
++%define CONFIG_CRYPTO_PROTOCOL 0
++%define CONFIG_DATA_PROTOCOL 0
++%define CONFIG_FFRTMPCRYPT_PROTOCOL 0
++%define CONFIG_FFRTMPHTTP_PROTOCOL 0
++%define CONFIG_FILE_PROTOCOL 0
++%define CONFIG_FTP_PROTOCOL 0
++%define CONFIG_GOPHER_PROTOCOL 0
++%define CONFIG_HLS_PROTOCOL 0
++%define CONFIG_HTTP_PROTOCOL 0
++%define CONFIG_HTTPPROXY_PROTOCOL 0
++%define CONFIG_HTTPS_PROTOCOL 0
++%define CONFIG_ICECAST_PROTOCOL 0
++%define CONFIG_MMSH_PROTOCOL 0
++%define CONFIG_MMST_PROTOCOL 0
++%define CONFIG_MD5_PROTOCOL 0
++%define CONFIG_PIPE_PROTOCOL 0
++%define CONFIG_PROMPEG_PROTOCOL 0
++%define CONFIG_RTMP_PROTOCOL 0
++%define CONFIG_RTMPE_PROTOCOL 0
++%define CONFIG_RTMPS_PROTOCOL 0
++%define CONFIG_RTMPT_PROTOCOL 0
++%define CONFIG_RTMPTE_PROTOCOL 0
++%define CONFIG_RTMPTS_PROTOCOL 0
++%define CONFIG_RTP_PROTOCOL 0
++%define CONFIG_SCTP_PROTOCOL 0
++%define CONFIG_SRTP_PROTOCOL 0
++%define CONFIG_SUBFILE_PROTOCOL 0
++%define CONFIG_TEE_PROTOCOL 0
++%define CONFIG_TCP_PROTOCOL 0
++%define CONFIG_TLS_PROTOCOL 0
++%define CONFIG_UDP_PROTOCOL 0
++%define CONFIG_UDPLITE_PROTOCOL 0
++%define CONFIG_UNIX_PROTOCOL 0
++%define CONFIG_LIBAMQP_PROTOCOL 0
++%define CONFIG_LIBRTMP_PROTOCOL 0
++%define CONFIG_LIBRTMPE_PROTOCOL 0
++%define CONFIG_LIBRTMPS_PROTOCOL 0
++%define CONFIG_LIBRTMPT_PROTOCOL 0
++%define CONFIG_LIBRTMPTE_PROTOCOL 0
++%define CONFIG_LIBSRT_PROTOCOL 0
++%define CONFIG_LIBSSH_PROTOCOL 0
++%define CONFIG_LIBSMBCLIENT_PROTOCOL 0
++%define CONFIG_LIBZMQ_PROTOCOL 0
diff --git a/devel/electron17/files/patch-third__party_ffmpeg_chromium_config_Chrome_openbsd_x64_config.h b/devel/electron17/files/patch-third__party_ffmpeg_chromium_config_Chrome_openbsd_x64_config.h
new file mode 100644
index 000000000000..38d6065fea51
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_ffmpeg_chromium_config_Chrome_openbsd_x64_config.h
@@ -0,0 +1,2705 @@
+--- third_party/ffmpeg/chromium/config/Chrome/openbsd/x64/config.h.orig 2022-05-13 07:20:06 UTC
++++ third_party/ffmpeg/chromium/config/Chrome/openbsd/x64/config.h
+@@ -0,0 +1,2702 @@
++/* Automatically generated by configure - do not modify! */
++#ifndef FFMPEG_CONFIG_H
++#define FFMPEG_CONFIG_H
++/* #define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-debug --disable-bzlib --disable-error-resilience --disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl2 --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-faan --disable-alsa --disable-autodetect --enable-decoder='vorbis,libopus,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,mp3' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio,vp9' --extra-cflags=-I/ssd/trunk_blink_tot/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=nasm --optflags=-O2 --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --enable-lto --enable-pic --cc=clang --cxx=clang++ --ld=clang --extra-ldflags='-fuse-ld=lld' --enable-decoder='aac,h264' --enable-demuxer=aac --enable-parser='aac,h264' --cc=clang --cxx=clang++" -- elide long configuration string from binary */
++#define FFMPEG_LICENSE "LGPL version 2.1 or later"
++#define CONFIG_THIS_YEAR 2021
++#define FFMPEG_DATADIR "/usr/local/share/ffmpeg"
++#define AVCONV_DATADIR "/usr/local/share/ffmpeg"
++#define CC_IDENT "OpenBSD clang version 10.0.1"
++#define OS_NAME openbsd
++#define av_restrict restrict
++#define EXTERN_PREFIX ""
++#define EXTERN_ASM
++#define BUILDSUF ""
++#define SLIBSUF ".so"
++#define HAVE_MMX2 HAVE_MMXEXT
++#define SWS_MAX_FILTER_SIZE 256
++#define ARCH_AARCH64 0
++#define ARCH_ALPHA 0
++#define ARCH_ARM 0
++#define ARCH_AVR32 0
++#define ARCH_AVR32_AP 0
++#define ARCH_AVR32_UC 0
++#define ARCH_BFIN 0
++#define ARCH_IA64 0
++#define ARCH_M68K 0
++#define ARCH_MIPS 0
++#define ARCH_MIPS64 0
++#define ARCH_PARISC 0
++#define ARCH_PPC 0
++#define ARCH_PPC64 0
++#define ARCH_S390 0
++#define ARCH_SH4 0
++#define ARCH_SPARC 0
++#define ARCH_SPARC64 0
++#define ARCH_TILEGX 0
++#define ARCH_TILEPRO 0
++#define ARCH_TOMI 0
++#define ARCH_X86 1
++#define ARCH_X86_32 0
++#define ARCH_X86_64 1
++#define HAVE_ARMV5TE 0
++#define HAVE_ARMV6 0
++#define HAVE_ARMV6T2 0
++#define HAVE_ARMV8 0
++#define HAVE_NEON 0
++#define HAVE_VFP 0
++#define HAVE_VFPV3 0
++#define HAVE_SETEND 0
++#define HAVE_ALTIVEC 0
++#define HAVE_DCBZL 0
++#define HAVE_LDBRX 0
++#define HAVE_POWER8 0
++#define HAVE_PPC4XX 0
++#define HAVE_VSX 0
++#define HAVE_AESNI 1
++#define HAVE_AMD3DNOW 1
++#define HAVE_AMD3DNOWEXT 1
++#define HAVE_AVX 1
++#define HAVE_AVX2 1
++#define HAVE_AVX512 1
++#define HAVE_FMA3 1
++#define HAVE_FMA4 1
++#define HAVE_MMX 1
++#define HAVE_MMXEXT 1
++#define HAVE_SSE 1
++#define HAVE_SSE2 1
++#define HAVE_SSE3 1
++#define HAVE_SSE4 1
++#define HAVE_SSE42 1
++#define HAVE_SSSE3 1
++#define HAVE_XOP 1
++#define HAVE_CPUNOP 0
++#define HAVE_I686 1
++#define HAVE_MIPSFPU 0
++#define HAVE_MIPS32R2 0
++#define HAVE_MIPS32R5 0
++#define HAVE_MIPS64R2 0
++#define HAVE_MIPS32R6 0
++#define HAVE_MIPS64R6 0
++#define HAVE_MIPSDSP 0
++#define HAVE_MIPSDSPR2 0
++#define HAVE_MSA 0
++#define HAVE_MSA2 0
++#define HAVE_LOONGSON2 0
++#define HAVE_LOONGSON3 0
++#define HAVE_MMI 0
++#define HAVE_ARMV5TE_EXTERNAL 0
++#define HAVE_ARMV6_EXTERNAL 0
++#define HAVE_ARMV6T2_EXTERNAL 0
++#define HAVE_ARMV8_EXTERNAL 0
++#define HAVE_NEON_EXTERNAL 0
++#define HAVE_VFP_EXTERNAL 0
++#define HAVE_VFPV3_EXTERNAL 0
++#define HAVE_SETEND_EXTERNAL 0
++#define HAVE_ALTIVEC_EXTERNAL 0
++#define HAVE_DCBZL_EXTERNAL 0
++#define HAVE_LDBRX_EXTERNAL 0
++#define HAVE_POWER8_EXTERNAL 0
++#define HAVE_PPC4XX_EXTERNAL 0
++#define HAVE_VSX_EXTERNAL 0
++#define HAVE_AESNI_EXTERNAL 1
++#define HAVE_AMD3DNOW_EXTERNAL 1
++#define HAVE_AMD3DNOWEXT_EXTERNAL 1
++#define HAVE_AVX_EXTERNAL 1
++#define HAVE_AVX2_EXTERNAL 1
++#define HAVE_AVX512_EXTERNAL 0
++#define HAVE_FMA3_EXTERNAL 1
++#define HAVE_FMA4_EXTERNAL 1
++#define HAVE_MMX_EXTERNAL 1
++#define HAVE_MMXEXT_EXTERNAL 1
++#define HAVE_SSE_EXTERNAL 1
++#define HAVE_SSE2_EXTERNAL 1
++#define HAVE_SSE3_EXTERNAL 1
++#define HAVE_SSE4_EXTERNAL 1
++#define HAVE_SSE42_EXTERNAL 1
++#define HAVE_SSSE3_EXTERNAL 1
++#define HAVE_XOP_EXTERNAL 1
++#define HAVE_CPUNOP_EXTERNAL 0
++#define HAVE_I686_EXTERNAL 0
++#define HAVE_MIPSFPU_EXTERNAL 0
++#define HAVE_MIPS32R2_EXTERNAL 0
++#define HAVE_MIPS32R5_EXTERNAL 0
++#define HAVE_MIPS64R2_EXTERNAL 0
++#define HAVE_MIPS32R6_EXTERNAL 0
++#define HAVE_MIPS64R6_EXTERNAL 0
++#define HAVE_MIPSDSP_EXTERNAL 0
++#define HAVE_MIPSDSPR2_EXTERNAL 0
++#define HAVE_MSA_EXTERNAL 0
++#define HAVE_MSA2_EXTERNAL 0
++#define HAVE_LOONGSON2_EXTERNAL 0
++#define HAVE_LOONGSON3_EXTERNAL 0
++#define HAVE_MMI_EXTERNAL 0
++#define HAVE_ARMV5TE_INLINE 0
++#define HAVE_ARMV6_INLINE 0
++#define HAVE_ARMV6T2_INLINE 0
++#define HAVE_ARMV8_INLINE 0
++#define HAVE_NEON_INLINE 0
++#define HAVE_VFP_INLINE 0
++#define HAVE_VFPV3_INLINE 0
++#define HAVE_SETEND_INLINE 0
++#define HAVE_ALTIVEC_INLINE 0
++#define HAVE_DCBZL_INLINE 0
++#define HAVE_LDBRX_INLINE 0
++#define HAVE_POWER8_INLINE 0
++#define HAVE_PPC4XX_INLINE 0
++#define HAVE_VSX_INLINE 0
++#define HAVE_AESNI_INLINE 1
++#define HAVE_AMD3DNOW_INLINE 1
++#define HAVE_AMD3DNOWEXT_INLINE 1
++#define HAVE_AVX_INLINE 1
++#define HAVE_AVX2_INLINE 1
++#define HAVE_AVX512_INLINE 1
++#define HAVE_FMA3_INLINE 1
++#define HAVE_FMA4_INLINE 1
++#define HAVE_MMX_INLINE 1
++#define HAVE_MMXEXT_INLINE 1
++#define HAVE_SSE_INLINE 1
++#define HAVE_SSE2_INLINE 1
++#define HAVE_SSE3_INLINE 1
++#define HAVE_SSE4_INLINE 1
++#define HAVE_SSE42_INLINE 1
++#define HAVE_SSSE3_INLINE 1
++#define HAVE_XOP_INLINE 1
++#define HAVE_CPUNOP_INLINE 0
++#define HAVE_I686_INLINE 0
++#define HAVE_MIPSFPU_INLINE 0
++#define HAVE_MIPS32R2_INLINE 0
++#define HAVE_MIPS32R5_INLINE 0
++#define HAVE_MIPS64R2_INLINE 0
++#define HAVE_MIPS32R6_INLINE 0
++#define HAVE_MIPS64R6_INLINE 0
++#define HAVE_MIPSDSP_INLINE 0
++#define HAVE_MIPSDSPR2_INLINE 0
++#define HAVE_MSA_INLINE 0
++#define HAVE_MSA2_INLINE 0
++#define HAVE_LOONGSON2_INLINE 0
++#define HAVE_LOONGSON3_INLINE 0
++#define HAVE_MMI_INLINE 0
++#define HAVE_ALIGNED_STACK 1
++#define HAVE_FAST_64BIT 1
++#define HAVE_FAST_CLZ 1
++#define HAVE_FAST_CMOV 1
++#define HAVE_LOCAL_ALIGNED 1
++#define HAVE_SIMD_ALIGN_16 1
++#define HAVE_SIMD_ALIGN_32 1
++#define HAVE_SIMD_ALIGN_64 1
++#define HAVE_ATOMIC_CAS_PTR 0
++#define HAVE_MACHINE_RW_BARRIER 0
++#define HAVE_MEMORYBARRIER 0
++#define HAVE_MM_EMPTY 1
++#define HAVE_RDTSC 0
++#define HAVE_SEM_TIMEDWAIT 1
++#define HAVE_SYNC_VAL_COMPARE_AND_SWAP 1
++#define HAVE_CABS 0
++#define HAVE_CEXP 0
++#define HAVE_INLINE_ASM 1
++#define HAVE_SYMVER 0
++#define HAVE_X86ASM 1
++#define HAVE_BIGENDIAN 0
++#define HAVE_FAST_UNALIGNED 1
++#define HAVE_ARPA_INET_H 0
++#define HAVE_ASM_TYPES_H 0
++#define HAVE_CDIO_PARANOIA_H 0
++#define HAVE_CDIO_PARANOIA_PARANOIA_H 0
++#define HAVE_CUDA_H 0
++#define HAVE_DISPATCH_DISPATCH_H 0
++#define HAVE_DEV_BKTR_IOCTL_BT848_H 0
++#define HAVE_DEV_BKTR_IOCTL_METEOR_H 0
++#define HAVE_DEV_IC_BT8XX_H 1
++#define HAVE_DEV_VIDEO_BKTR_IOCTL_BT848_H 0
++#define HAVE_DEV_VIDEO_METEOR_IOCTL_METEOR_H 0
++#define HAVE_DIRECT_H 0
++#define HAVE_DIRENT_H 1
++#define HAVE_DXGIDEBUG_H 0
++#define HAVE_DXVA_H 0
++#define HAVE_ES2_GL_H 0
++#define HAVE_GSM_H 0
++#define HAVE_IO_H 0
++#define HAVE_LINUX_DMA_BUF_H 0
++#define HAVE_LINUX_PERF_EVENT_H 0
++#define HAVE_MACHINE_IOCTL_BT848_H 0
++#define HAVE_MACHINE_IOCTL_METEOR_H 0
++#define HAVE_MALLOC_H 0
++#define HAVE_OPENCV2_CORE_CORE_C_H 0
++#define HAVE_OPENGL_GL3_H 0
++#define HAVE_POLL_H 1
++#define HAVE_SYS_PARAM_H 1
++#define HAVE_SYS_RESOURCE_H 1
++#define HAVE_SYS_SELECT_H 1
++#define HAVE_SYS_SOUNDCARD_H 0
++#define HAVE_SYS_TIME_H 1
++#define HAVE_SYS_UN_H 1
++#define HAVE_SYS_VIDEOIO_H 1
++#define HAVE_TERMIOS_H 1
++#define HAVE_UDPLITE_H 0
++#define HAVE_UNISTD_H 1
++#define HAVE_VALGRIND_VALGRIND_H 0
++#define HAVE_WINDOWS_H 0
++#define HAVE_WINSOCK2_H 0
++#define HAVE_INTRINSICS_NEON 0
++#define HAVE_ATANF 1
++#define HAVE_ATAN2F 1
++#define HAVE_CBRT 1
++#define HAVE_CBRTF 1
++#define HAVE_COPYSIGN 1
++#define HAVE_COSF 1
++#define HAVE_ERF 1
++#define HAVE_EXP2 1
++#define HAVE_EXP2F 1
++#define HAVE_EXPF 1
++#define HAVE_HYPOT 1
++#define HAVE_ISFINITE 1
++#define HAVE_ISINF 1
++#define HAVE_ISNAN 1
++#define HAVE_LDEXPF 1
++#define HAVE_LLRINT 1
++#define HAVE_LLRINTF 1
++#define HAVE_LOG2 1
++#define HAVE_LOG2F 1
++#define HAVE_LOG10F 1
++#define HAVE_LRINT 1
++#define HAVE_LRINTF 1
++#define HAVE_POWF 1
++#define HAVE_RINT 1
++#define HAVE_ROUND 1
++#define HAVE_ROUNDF 1
++#define HAVE_SINF 1
++#define HAVE_TRUNC 1
++#define HAVE_TRUNCF 1
++#define HAVE_DOS_PATHS 0
++#define HAVE_LIBC_MSVCRT 0
++#define HAVE_MMAL_PARAMETER_VIDEO_MAX_NUM_CALLBACKS 0
++#define HAVE_SECTION_DATA_REL_RO 1
++#define HAVE_THREADS 1
++#define HAVE_UWP 0
++#define HAVE_WINRT 0
++#define HAVE_ACCESS 1
++#define HAVE_ALIGNED_MALLOC 0
++#define HAVE_ARC4RANDOM 1
++#define HAVE_CLOCK_GETTIME 1
++#define HAVE_CLOSESOCKET 0
++#define HAVE_COMMANDLINETOARGVW 0
++#define HAVE_FCNTL 1
++#define HAVE_GETADDRINFO 0
++#define HAVE_GETHRTIME 0
++#define HAVE_GETOPT 1
++#define HAVE_GETMODULEHANDLE 0
++#define HAVE_GETPROCESSAFFINITYMASK 0
++#define HAVE_GETPROCESSMEMORYINFO 0
++#define HAVE_GETPROCESSTIMES 0
++#define HAVE_GETRUSAGE 1
++#define HAVE_GETSTDHANDLE 0
++#define HAVE_GETSYSTEMTIMEASFILETIME 0
++#define HAVE_GETTIMEOFDAY 1
++#define HAVE_GLOB 1
++#define HAVE_GLXGETPROCADDRESS 0
++#define HAVE_GMTIME_R 1
++#define HAVE_INET_ATON 0
++#define HAVE_ISATTY 1
++#define HAVE_KBHIT 0
++#define HAVE_LOCALTIME_R 1
++#define HAVE_LSTAT 1
++#define HAVE_LZO1X_999_COMPRESS 0
++#define HAVE_MACH_ABSOLUTE_TIME 0
++#define HAVE_MAPVIEWOFFILE 0
++#define HAVE_MEMALIGN 0
++#define HAVE_MKSTEMP 1
++#define HAVE_MMAP 1
++#define HAVE_MPROTECT 1
++#define HAVE_NANOSLEEP 1
++#define HAVE_PEEKNAMEDPIPE 0
++#define HAVE_POSIX_MEMALIGN 1
++#define HAVE_PTHREAD_CANCEL 1
++#define HAVE_SCHED_GETAFFINITY 0
++#define HAVE_SECITEMIMPORT 0
++#define HAVE_SETCONSOLETEXTATTRIBUTE 0
++#define HAVE_SETCONSOLECTRLHANDLER 0
++#define HAVE_SETDLLDIRECTORY 0
++#define HAVE_SETMODE 0
++#define HAVE_SETRLIMIT 1
++#define HAVE_SLEEP 0
++#define HAVE_STRERROR_R 1
++#define HAVE_SYSCONF 1
++#define HAVE_SYSCTL 1
++#define HAVE_USLEEP 1
++#define HAVE_UTGETOSTYPEFROMSTRING 0
++#define HAVE_VIRTUALALLOC 0
++#define HAVE_WGLGETPROCADDRESS 0
++#define HAVE_BCRYPT 0
++#define HAVE_VAAPI_DRM 0
++#define HAVE_VAAPI_X11 0
++#define HAVE_VDPAU_X11 0
++#define HAVE_PTHREADS 1
++#define HAVE_OS2THREADS 0
++#define HAVE_W32THREADS 0
++#define HAVE_AS_ARCH_DIRECTIVE 0
++#define HAVE_AS_DN_DIRECTIVE 0
++#define HAVE_AS_FPU_DIRECTIVE 0
++#define HAVE_AS_FUNC 0
++#define HAVE_AS_OBJECT_ARCH 0
++#define HAVE_ASM_MOD_Q 0
++#define HAVE_BLOCKS_EXTENSION 0
++#define HAVE_EBP_AVAILABLE 1
++#define HAVE_EBX_AVAILABLE 1
++#define HAVE_GNU_AS 0
++#define HAVE_GNU_WINDRES 0
++#define HAVE_IBM_ASM 0
++#define HAVE_INLINE_ASM_DIRECT_SYMBOL_REFS 0
++#define HAVE_INLINE_ASM_LABELS 1
++#define HAVE_INLINE_ASM_NONLOCAL_LABELS 1
++#define HAVE_PRAGMA_DEPRECATED 1
++#define HAVE_RSYNC_CONTIMEOUT 1
++#define HAVE_SYMVER_ASM_LABEL 1
++#define HAVE_SYMVER_GNU_ASM 1
++#define HAVE_VFP_ARGS 0
++#define HAVE_XFORM_ASM 0
++#define HAVE_XMM_CLOBBERS 1
++#define HAVE_KCMVIDEOCODECTYPE_HEVC 0
++#define HAVE_KCVPIXELFORMATTYPE_420YPCBCR10BIPLANARVIDEORANGE 0
++#define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_SMPTE_ST_2084_PQ 0
++#define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_ITU_R_2100_HLG 0
++#define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_LINEAR 0
++#define HAVE_SOCKLEN_T 0
++#define HAVE_STRUCT_ADDRINFO 0
++#define HAVE_STRUCT_GROUP_SOURCE_REQ 0
++#define HAVE_STRUCT_IP_MREQ_SOURCE 0
++#define HAVE_STRUCT_IPV6_MREQ 0
++#define HAVE_STRUCT_MSGHDR_MSG_FLAGS 0
++#define HAVE_STRUCT_POLLFD 0
++#define HAVE_STRUCT_RUSAGE_RU_MAXRSS 1
++#define HAVE_STRUCT_SCTP_EVENT_SUBSCRIBE 0
++#define HAVE_STRUCT_SOCKADDR_IN6 0
++#define HAVE_STRUCT_SOCKADDR_SA_LEN 0
++#define HAVE_STRUCT_SOCKADDR_STORAGE 0
++#define HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC 1
++#define HAVE_STRUCT_V4L2_FRMIVALENUM_DISCRETE 1
++#define HAVE_LIBDRM_GETFB2 0
++#define HAVE_MAKEINFO 1
++#define HAVE_MAKEINFO_HTML 0
++#define HAVE_OPENCL_D3D11 0
++#define HAVE_OPENCL_DRM_ARM 0
++#define HAVE_OPENCL_DRM_BEIGNET 0
++#define HAVE_OPENCL_DXVA2 0
++#define HAVE_OPENCL_VAAPI_BEIGNET 0
++#define HAVE_OPENCL_VAAPI_INTEL_MEDIA 0
++#define HAVE_PERL 1
++#define HAVE_POD2MAN 1
++#define HAVE_TEXI2HTML 0
++#define CONFIG_DOC 0
++#define CONFIG_HTMLPAGES 0
++#define CONFIG_MANPAGES 0
++#define CONFIG_PODPAGES 0
++#define CONFIG_TXTPAGES 0
++#define CONFIG_AVIO_LIST_DIR_EXAMPLE 1
++#define CONFIG_AVIO_READING_EXAMPLE 1
++#define CONFIG_DECODE_AUDIO_EXAMPLE 1
++#define CONFIG_DECODE_VIDEO_EXAMPLE 1
++#define CONFIG_DEMUXING_DECODING_EXAMPLE 1
++#define CONFIG_ENCODE_AUDIO_EXAMPLE 1
++#define CONFIG_ENCODE_VIDEO_EXAMPLE 1
++#define CONFIG_EXTRACT_MVS_EXAMPLE 1
++#define CONFIG_FILTER_AUDIO_EXAMPLE 0
++#define CONFIG_FILTERING_AUDIO_EXAMPLE 0
++#define CONFIG_FILTERING_VIDEO_EXAMPLE 0
++#define CONFIG_HTTP_MULTICLIENT_EXAMPLE 1
++#define CONFIG_HW_DECODE_EXAMPLE 1
++#define CONFIG_METADATA_EXAMPLE 1
++#define CONFIG_MUXING_EXAMPLE 0
++#define CONFIG_QSVDEC_EXAMPLE 0
++#define CONFIG_REMUXING_EXAMPLE 1
++#define CONFIG_RESAMPLING_AUDIO_EXAMPLE 0
++#define CONFIG_SCALING_VIDEO_EXAMPLE 0
++#define CONFIG_TRANSCODE_AAC_EXAMPLE 0
++#define CONFIG_TRANSCODING_EXAMPLE 0
++#define CONFIG_VAAPI_ENCODE_EXAMPLE 0
++#define CONFIG_VAAPI_TRANSCODE_EXAMPLE 0
++#define CONFIG_AVISYNTH 0
++#define CONFIG_FREI0R 0
++#define CONFIG_LIBCDIO 0
++#define CONFIG_LIBDAVS2 0
++#define CONFIG_LIBRUBBERBAND 0
++#define CONFIG_LIBVIDSTAB 0
++#define CONFIG_LIBX264 0
++#define CONFIG_LIBX265 0
++#define CONFIG_LIBXAVS 0
++#define CONFIG_LIBXAVS2 0
++#define CONFIG_LIBXVID 0
++#define CONFIG_DECKLINK 0
++#define CONFIG_LIBFDK_AAC 0
++#define CONFIG_OPENSSL 0
++#define CONFIG_LIBTLS 0
++#define CONFIG_GMP 0
++#define CONFIG_LIBARIBB24 0
++#define CONFIG_LIBLENSFUN 0
++#define CONFIG_LIBOPENCORE_AMRNB 0
++#define CONFIG_LIBOPENCORE_AMRWB 0
++#define CONFIG_LIBVO_AMRWBENC 0
++#define CONFIG_MBEDTLS 0
++#define CONFIG_RKMPP 0
++#define CONFIG_LIBSMBCLIENT 0
++#define CONFIG_CHROMAPRINT 0
++#define CONFIG_GCRYPT 0
++#define CONFIG_GNUTLS 0
++#define CONFIG_JNI 0
++#define CONFIG_LADSPA 0
++#define CONFIG_LIBAOM 0
++#define CONFIG_LIBASS 0
++#define CONFIG_LIBBLURAY 0
++#define CONFIG_LIBBS2B 0
++#define CONFIG_LIBCACA 0
++#define CONFIG_LIBCELT 0
++#define CONFIG_LIBCODEC2 0
++#define CONFIG_LIBDAV1D 0
++#define CONFIG_LIBDC1394 0
++#define CONFIG_LIBDRM 0
++#define CONFIG_LIBFLITE 0
++#define CONFIG_LIBFONTCONFIG 0
++#define CONFIG_LIBFREETYPE 0
++#define CONFIG_LIBFRIBIDI 0
++#define CONFIG_LIBGLSLANG 0
++#define CONFIG_LIBGME 0
++#define CONFIG_LIBGSM 0
++#define CONFIG_LIBIEC61883 0
++#define CONFIG_LIBILBC 0
++#define CONFIG_LIBJACK 0
++#define CONFIG_LIBKLVANC 0
++#define CONFIG_LIBKVAZAAR 0
++#define CONFIG_LIBMODPLUG 0
++#define CONFIG_LIBMP3LAME 0
++#define CONFIG_LIBMYSOFA 0
++#define CONFIG_LIBOPENCV 0
++#define CONFIG_LIBOPENH264 0
++#define CONFIG_LIBOPENJPEG 0
++#define CONFIG_LIBOPENMPT 0
++#define CONFIG_LIBOPENVINO 0
++#define CONFIG_LIBOPUS 1
++#define CONFIG_LIBPULSE 0
++#define CONFIG_LIBRABBITMQ 0
++#define CONFIG_LIBRAV1E 0
++#define CONFIG_LIBRSVG 0
++#define CONFIG_LIBRTMP 0
++#define CONFIG_LIBSHINE 0
++#define CONFIG_LIBSMBCLIENT 0
++#define CONFIG_LIBSNAPPY 0
++#define CONFIG_LIBSOXR 0
++#define CONFIG_LIBSPEEX 0
++#define CONFIG_LIBSRT 0
++#define CONFIG_LIBSSH 0
++#define CONFIG_LIBSVTAV1 0
++#define CONFIG_LIBTENSORFLOW 0
++#define CONFIG_LIBTESSERACT 0
++#define CONFIG_LIBTHEORA 0
++#define CONFIG_LIBTWOLAME 0
++#define CONFIG_LIBUAVS3D 0
++#define CONFIG_LIBV4L2 0
++#define CONFIG_LIBVMAF 0
++#define CONFIG_LIBVORBIS 0
++#define CONFIG_LIBVPX 0
++#define CONFIG_LIBWEBP 0
++#define CONFIG_LIBXML2 0
++#define CONFIG_LIBZIMG 0
++#define CONFIG_LIBZMQ 0
++#define CONFIG_LIBZVBI 0
++#define CONFIG_LV2 0
++#define CONFIG_MEDIACODEC 0
++#define CONFIG_OPENAL 0
++#define CONFIG_OPENGL 0
++#define CONFIG_POCKETSPHINX 0
++#define CONFIG_VAPOURSYNTH 0
++#define CONFIG_ALSA 0
++#define CONFIG_APPKIT 0
++#define CONFIG_AVFOUNDATION 0
++#define CONFIG_BZLIB 0
++#define CONFIG_COREIMAGE 0
++#define CONFIG_ICONV 0
++#define CONFIG_LIBXCB 0
++#define CONFIG_LIBXCB_SHM 0
++#define CONFIG_LIBXCB_SHAPE 0
++#define CONFIG_LIBXCB_XFIXES 0
++#define CONFIG_LZMA 0
++#define CONFIG_MEDIAFOUNDATION 0
++#define CONFIG_SCHANNEL 0
++#define CONFIG_SDL2 0
++#define CONFIG_SECURETRANSPORT 0
++#define CONFIG_SNDIO 0
++#define CONFIG_XLIB 0
++#define CONFIG_ZLIB 0
++#define CONFIG_CUDA_NVCC 0
++#define CONFIG_CUDA_SDK 0
++#define CONFIG_LIBNPP 0
++#define CONFIG_LIBMFX 0
++#define CONFIG_MMAL 0
++#define CONFIG_OMX 0
++#define CONFIG_OPENCL 0
++#define CONFIG_VULKAN 0
++#define CONFIG_AMF 0
++#define CONFIG_AUDIOTOOLBOX 0
++#define CONFIG_CRYSTALHD 0
++#define CONFIG_CUDA 0
++#define CONFIG_CUDA_LLVM 0
++#define CONFIG_CUVID 0
++#define CONFIG_D3D11VA 0
++#define CONFIG_DXVA2 0
++#define CONFIG_FFNVCODEC 0
++#define CONFIG_NVDEC 0
++#define CONFIG_NVENC 0
++#define CONFIG_VAAPI 0
++#define CONFIG_VDPAU 0
++#define CONFIG_VIDEOTOOLBOX 0
++#define CONFIG_V4L2_M2M 0
++#define CONFIG_XVMC 0
++#define CONFIG_FTRAPV 0
++#define CONFIG_GRAY 0
++#define CONFIG_HARDCODED_TABLES 0
++#define CONFIG_OMX_RPI 0
++#define CONFIG_RUNTIME_CPUDETECT 1
++#define CONFIG_SAFE_BITSTREAM_READER 1
++#define CONFIG_SHARED 0
++#define CONFIG_SMALL 0
++#define CONFIG_STATIC 1
++#define CONFIG_SWSCALE_ALPHA 1
++#define CONFIG_GPL 0
++#define CONFIG_NONFREE 0
++#define CONFIG_VERSION3 0
++#define CONFIG_AVDEVICE 0
++#define CONFIG_AVFILTER 0
++#define CONFIG_SWSCALE 0
++#define CONFIG_POSTPROC 0
++#define CONFIG_AVFORMAT 1
++#define CONFIG_AVCODEC 1
++#define CONFIG_SWRESAMPLE 0
++#define CONFIG_AVRESAMPLE 0
++#define CONFIG_AVUTIL 1
++#define CONFIG_FFPLAY 0
++#define CONFIG_FFPROBE 0
++#define CONFIG_FFMPEG 0
++#define CONFIG_DCT 1
++#define CONFIG_DWT 0
++#define CONFIG_ERROR_RESILIENCE 0
++#define CONFIG_FAAN 0
++#define CONFIG_FAST_UNALIGNED 1
++#define CONFIG_FFT 1
++#define CONFIG_LSP 0
++#define CONFIG_LZO 0
++#define CONFIG_MDCT 1
++#define CONFIG_PIXELUTILS 0
++#define CONFIG_NETWORK 0
++#define CONFIG_RDFT 1
++#define CONFIG_AUTODETECT 0
++#define CONFIG_FONTCONFIG 0
++#define CONFIG_LARGE_TESTS 1
++#define CONFIG_LINUX_PERF 0
++#define CONFIG_MEMORY_POISONING 0
++#define CONFIG_NEON_CLOBBER_TEST 0
++#define CONFIG_OSSFUZZ 0
++#define CONFIG_PIC 1
++#define CONFIG_THUMB 0
++#define CONFIG_VALGRIND_BACKTRACE 0
++#define CONFIG_XMM_CLOBBER_TEST 0
++#define CONFIG_BSFS 0
++#define CONFIG_DECODERS 1
++#define CONFIG_ENCODERS 0
++#define CONFIG_HWACCELS 0
++#define CONFIG_PARSERS 1
++#define CONFIG_INDEVS 0
++#define CONFIG_OUTDEVS 0
++#define CONFIG_FILTERS 0
++#define CONFIG_DEMUXERS 1
++#define CONFIG_MUXERS 0
++#define CONFIG_PROTOCOLS 0
++#define CONFIG_AANDCTTABLES 0
++#define CONFIG_AC3DSP 0
++#define CONFIG_ADTS_HEADER 1
++#define CONFIG_ATSC_A53 1
++#define CONFIG_AUDIO_FRAME_QUEUE 0
++#define CONFIG_AUDIODSP 0
++#define CONFIG_BLOCKDSP 0
++#define CONFIG_BSWAPDSP 0
++#define CONFIG_CABAC 1
++#define CONFIG_CBS 0
++#define CONFIG_CBS_AV1 0
++#define CONFIG_CBS_H264 0
++#define CONFIG_CBS_H265 0
++#define CONFIG_CBS_JPEG 0
++#define CONFIG_CBS_MPEG2 0
++#define CONFIG_CBS_VP9 0
++#define CONFIG_DIRAC_PARSE 1
++#define CONFIG_DNN 0
++#define CONFIG_DVPROFILE 0
++#define CONFIG_EXIF 0
++#define CONFIG_FAANDCT 0
++#define CONFIG_FAANIDCT 0
++#define CONFIG_FDCTDSP 0
++#define CONFIG_FLACDSP 1
++#define CONFIG_FMTCONVERT 0
++#define CONFIG_FRAME_THREAD_ENCODER 0
++#define CONFIG_G722DSP 0
++#define CONFIG_GOLOMB 1
++#define CONFIG_GPLV3 0
++#define CONFIG_H263DSP 0
++#define CONFIG_H264CHROMA 1
++#define CONFIG_H264DSP 1
++#define CONFIG_H264PARSE 1
++#define CONFIG_H264PRED 1
++#define CONFIG_H264QPEL 1
++#define CONFIG_HEVCPARSE 0
++#define CONFIG_HPELDSP 1
++#define CONFIG_HUFFMAN 0
++#define CONFIG_HUFFYUVDSP 0
++#define CONFIG_HUFFYUVENCDSP 0
++#define CONFIG_IDCTDSP 0
++#define CONFIG_IIRFILTER 0
++#define CONFIG_MDCT15 1
++#define CONFIG_INTRAX8 0
++#define CONFIG_ISO_MEDIA 1
++#define CONFIG_IVIDSP 0
++#define CONFIG_JPEGTABLES 0
++#define CONFIG_LGPLV3 0
++#define CONFIG_LIBX262 0
++#define CONFIG_LLAUDDSP 0
++#define CONFIG_LLVIDDSP 0
++#define CONFIG_LLVIDENCDSP 0
++#define CONFIG_LPC 0
++#define CONFIG_LZF 0
++#define CONFIG_ME_CMP 0
++#define CONFIG_MPEG_ER 0
++#define CONFIG_MPEGAUDIO 1
++#define CONFIG_MPEGAUDIODSP 1
++#define CONFIG_MPEGAUDIOHEADER 1
++#define CONFIG_MPEGVIDEO 0
++#define CONFIG_MPEGVIDEOENC 0
++#define CONFIG_MSS34DSP 0
++#define CONFIG_PIXBLOCKDSP 0
++#define CONFIG_QPELDSP 0
++#define CONFIG_QSV 0
++#define CONFIG_QSVDEC 0
++#define CONFIG_QSVENC 0
++#define CONFIG_QSVVPP 0
++#define CONFIG_RANGECODER 0
++#define CONFIG_RIFFDEC 1
++#define CONFIG_RIFFENC 0
++#define CONFIG_RTPDEC 0
++#define CONFIG_RTPENC_CHAIN 0
++#define CONFIG_RV34DSP 0
++#define CONFIG_SCENE_SAD 0
++#define CONFIG_SINEWIN 1
++#define CONFIG_SNAPPY 0
++#define CONFIG_SRTP 0
++#define CONFIG_STARTCODE 1
++#define CONFIG_TEXTUREDSP 0
++#define CONFIG_TEXTUREDSPENC 0
++#define CONFIG_TPELDSP 0
++#define CONFIG_VAAPI_1 0
++#define CONFIG_VAAPI_ENCODE 0
++#define CONFIG_VC1DSP 0
++#define CONFIG_VIDEODSP 1
++#define CONFIG_VP3DSP 1
++#define CONFIG_VP56DSP 0
++#define CONFIG_VP8DSP 1
++#define CONFIG_WMA_FREQS 0
++#define CONFIG_WMV2DSP 0
++#define CONFIG_AAC_ADTSTOASC_BSF 0
++#define CONFIG_AV1_FRAME_MERGE_BSF 0
++#define CONFIG_AV1_FRAME_SPLIT_BSF 0
++#define CONFIG_AV1_METADATA_BSF 0
++#define CONFIG_CHOMP_BSF 0
++#define CONFIG_DUMP_EXTRADATA_BSF 0
++#define CONFIG_DCA_CORE_BSF 0
++#define CONFIG_EAC3_CORE_BSF 0
++#define CONFIG_EXTRACT_EXTRADATA_BSF 0
++#define CONFIG_FILTER_UNITS_BSF 0
++#define CONFIG_H264_METADATA_BSF 0
++#define CONFIG_H264_MP4TOANNEXB_BSF 0
++#define CONFIG_H264_REDUNDANT_PPS_BSF 0
++#define CONFIG_HAPQA_EXTRACT_BSF 0
++#define CONFIG_HEVC_METADATA_BSF 0
++#define CONFIG_HEVC_MP4TOANNEXB_BSF 0
++#define CONFIG_IMX_DUMP_HEADER_BSF 0
++#define CONFIG_MJPEG2JPEG_BSF 0
++#define CONFIG_MJPEGA_DUMP_HEADER_BSF 0
++#define CONFIG_MP3_HEADER_DECOMPRESS_BSF 0
++#define CONFIG_MPEG2_METADATA_BSF 0
++#define CONFIG_MPEG4_UNPACK_BFRAMES_BSF 0
++#define CONFIG_MOV2TEXTSUB_BSF 0
++#define CONFIG_NOISE_BSF 0
++#define CONFIG_NULL_BSF 0
++#define CONFIG_OPUS_METADATA_BSF 0
++#define CONFIG_PCM_RECHUNK_BSF 0
++#define CONFIG_PRORES_METADATA_BSF 0
++#define CONFIG_REMOVE_EXTRADATA_BSF 0
++#define CONFIG_SETTS_BSF 0
++#define CONFIG_TEXT2MOVSUB_BSF 0
++#define CONFIG_TRACE_HEADERS_BSF 0
++#define CONFIG_TRUEHD_CORE_BSF 0
++#define CONFIG_VP9_METADATA_BSF 0
++#define CONFIG_VP9_RAW_REORDER_BSF 0
++#define CONFIG_VP9_SUPERFRAME_BSF 0
++#define CONFIG_VP9_SUPERFRAME_SPLIT_BSF 0
++#define CONFIG_AASC_DECODER 0
++#define CONFIG_AIC_DECODER 0
++#define CONFIG_ALIAS_PIX_DECODER 0
++#define CONFIG_AGM_DECODER 0
++#define CONFIG_AMV_DECODER 0
++#define CONFIG_ANM_DECODER 0
++#define CONFIG_ANSI_DECODER 0
++#define CONFIG_APNG_DECODER 0
++#define CONFIG_ARBC_DECODER 0
++#define CONFIG_ARGO_DECODER 0
++#define CONFIG_ASV1_DECODER 0
++#define CONFIG_ASV2_DECODER 0
++#define CONFIG_AURA_DECODER 0
++#define CONFIG_AURA2_DECODER 0
++#define CONFIG_AVRP_DECODER 0
++#define CONFIG_AVRN_DECODER 0
++#define CONFIG_AVS_DECODER 0
++#define CONFIG_AVUI_DECODER 0
++#define CONFIG_AYUV_DECODER 0
++#define CONFIG_BETHSOFTVID_DECODER 0
++#define CONFIG_BFI_DECODER 0
++#define CONFIG_BINK_DECODER 0
++#define CONFIG_BITPACKED_DECODER 0
++#define CONFIG_BMP_DECODER 0
++#define CONFIG_BMV_VIDEO_DECODER 0
++#define CONFIG_BRENDER_PIX_DECODER 0
++#define CONFIG_C93_DECODER 0
++#define CONFIG_CAVS_DECODER 0
++#define CONFIG_CDGRAPHICS_DECODER 0
++#define CONFIG_CDTOONS_DECODER 0
++#define CONFIG_CDXL_DECODER 0
++#define CONFIG_CFHD_DECODER 0
++#define CONFIG_CINEPAK_DECODER 0
++#define CONFIG_CLEARVIDEO_DECODER 0
++#define CONFIG_CLJR_DECODER 0
++#define CONFIG_CLLC_DECODER 0
++#define CONFIG_COMFORTNOISE_DECODER 0
++#define CONFIG_CPIA_DECODER 0
++#define CONFIG_CRI_DECODER 0
++#define CONFIG_CSCD_DECODER 0
++#define CONFIG_CYUV_DECODER 0
++#define CONFIG_DDS_DECODER 0
++#define CONFIG_DFA_DECODER 0
++#define CONFIG_DIRAC_DECODER 0
++#define CONFIG_DNXHD_DECODER 0
++#define CONFIG_DPX_DECODER 0
++#define CONFIG_DSICINVIDEO_DECODER 0
++#define CONFIG_DVAUDIO_DECODER 0
++#define CONFIG_DVVIDEO_DECODER 0
++#define CONFIG_DXA_DECODER 0
++#define CONFIG_DXTORY_DECODER 0
++#define CONFIG_DXV_DECODER 0
++#define CONFIG_EACMV_DECODER 0
++#define CONFIG_EAMAD_DECODER 0
++#define CONFIG_EATGQ_DECODER 0
++#define CONFIG_EATGV_DECODER 0
++#define CONFIG_EATQI_DECODER 0
++#define CONFIG_EIGHTBPS_DECODER 0
++#define CONFIG_EIGHTSVX_EXP_DECODER 0
++#define CONFIG_EIGHTSVX_FIB_DECODER 0
++#define CONFIG_ESCAPE124_DECODER 0
++#define CONFIG_ESCAPE130_DECODER 0
++#define CONFIG_EXR_DECODER 0
++#define CONFIG_FFV1_DECODER 0
++#define CONFIG_FFVHUFF_DECODER 0
++#define CONFIG_FIC_DECODER 0
++#define CONFIG_FITS_DECODER 0
++#define CONFIG_FLASHSV_DECODER 0
++#define CONFIG_FLASHSV2_DECODER 0
++#define CONFIG_FLIC_DECODER 0
++#define CONFIG_FLV_DECODER 0
++#define CONFIG_FMVC_DECODER 0
++#define CONFIG_FOURXM_DECODER 0
++#define CONFIG_FRAPS_DECODER 0
++#define CONFIG_FRWU_DECODER 0
++#define CONFIG_G2M_DECODER 0
++#define CONFIG_GDV_DECODER 0
++#define CONFIG_GIF_DECODER 0
++#define CONFIG_H261_DECODER 0
++#define CONFIG_H263_DECODER 0
++#define CONFIG_H263I_DECODER 0
++#define CONFIG_H263P_DECODER 0
++#define CONFIG_H263_V4L2M2M_DECODER 0
++#define CONFIG_H264_DECODER 1
++#define CONFIG_H264_CRYSTALHD_DECODER 0
++#define CONFIG_H264_V4L2M2M_DECODER 0
++#define CONFIG_H264_MEDIACODEC_DECODER 0
++#define CONFIG_H264_MMAL_DECODER 0
++#define CONFIG_H264_QSV_DECODER 0
++#define CONFIG_H264_RKMPP_DECODER 0
++#define CONFIG_HAP_DECODER 0
++#define CONFIG_HEVC_DECODER 0
++#define CONFIG_HEVC_QSV_DECODER 0
++#define CONFIG_HEVC_RKMPP_DECODER 0
++#define CONFIG_HEVC_V4L2M2M_DECODER 0
++#define CONFIG_HNM4_VIDEO_DECODER 0
++#define CONFIG_HQ_HQA_DECODER 0
++#define CONFIG_HQX_DECODER 0
++#define CONFIG_HUFFYUV_DECODER 0
++#define CONFIG_HYMT_DECODER 0
++#define CONFIG_IDCIN_DECODER 0
++#define CONFIG_IFF_ILBM_DECODER 0
++#define CONFIG_IMM4_DECODER 0
++#define CONFIG_IMM5_DECODER 0
++#define CONFIG_INDEO2_DECODER 0
++#define CONFIG_INDEO3_DECODER 0
++#define CONFIG_INDEO4_DECODER 0
++#define CONFIG_INDEO5_DECODER 0
++#define CONFIG_INTERPLAY_VIDEO_DECODER 0
++#define CONFIG_IPU_DECODER 0
++#define CONFIG_JPEG2000_DECODER 0
++#define CONFIG_JPEGLS_DECODER 0
++#define CONFIG_JV_DECODER 0
++#define CONFIG_KGV1_DECODER 0
++#define CONFIG_KMVC_DECODER 0
++#define CONFIG_LAGARITH_DECODER 0
++#define CONFIG_LOCO_DECODER 0
++#define CONFIG_LSCR_DECODER 0
++#define CONFIG_M101_DECODER 0
++#define CONFIG_MAGICYUV_DECODER 0
++#define CONFIG_MDEC_DECODER 0
++#define CONFIG_MIMIC_DECODER 0
++#define CONFIG_MJPEG_DECODER 0
++#define CONFIG_MJPEGB_DECODER 0
++#define CONFIG_MMVIDEO_DECODER 0
++#define CONFIG_MOBICLIP_DECODER 0
++#define CONFIG_MOTIONPIXELS_DECODER 0
++#define CONFIG_MPEG1VIDEO_DECODER 0
++#define CONFIG_MPEG2VIDEO_DECODER 0
++#define CONFIG_MPEG4_DECODER 0
++#define CONFIG_MPEG4_CRYSTALHD_DECODER 0
++#define CONFIG_MPEG4_V4L2M2M_DECODER 0
++#define CONFIG_MPEG4_MMAL_DECODER 0
++#define CONFIG_MPEGVIDEO_DECODER 0
++#define CONFIG_MPEG1_V4L2M2M_DECODER 0
++#define CONFIG_MPEG2_MMAL_DECODER 0
++#define CONFIG_MPEG2_CRYSTALHD_DECODER 0
++#define CONFIG_MPEG2_V4L2M2M_DECODER 0
++#define CONFIG_MPEG2_QSV_DECODER 0
++#define CONFIG_MPEG2_MEDIACODEC_DECODER 0
++#define CONFIG_MSA1_DECODER 0
++#define CONFIG_MSCC_DECODER 0
++#define CONFIG_MSMPEG4V1_DECODER 0
++#define CONFIG_MSMPEG4V2_DECODER 0
++#define CONFIG_MSMPEG4V3_DECODER 0
++#define CONFIG_MSMPEG4_CRYSTALHD_DECODER 0
++#define CONFIG_MSP2_DECODER 0
++#define CONFIG_MSRLE_DECODER 0
++#define CONFIG_MSS1_DECODER 0
++#define CONFIG_MSS2_DECODER 0
++#define CONFIG_MSVIDEO1_DECODER 0
++#define CONFIG_MSZH_DECODER 0
++#define CONFIG_MTS2_DECODER 0
++#define CONFIG_MV30_DECODER 0
++#define CONFIG_MVC1_DECODER 0
++#define CONFIG_MVC2_DECODER 0
++#define CONFIG_MVDV_DECODER 0
++#define CONFIG_MVHA_DECODER 0
++#define CONFIG_MWSC_DECODER 0
++#define CONFIG_MXPEG_DECODER 0
++#define CONFIG_NOTCHLC_DECODER 0
++#define CONFIG_NUV_DECODER 0
++#define CONFIG_PAF_VIDEO_DECODER 0
++#define CONFIG_PAM_DECODER 0
++#define CONFIG_PBM_DECODER 0
++#define CONFIG_PCX_DECODER 0
++#define CONFIG_PFM_DECODER 0
++#define CONFIG_PGM_DECODER 0
++#define CONFIG_PGMYUV_DECODER 0
++#define CONFIG_PGX_DECODER 0
++#define CONFIG_PHOTOCD_DECODER 0
++#define CONFIG_PICTOR_DECODER 0
++#define CONFIG_PIXLET_DECODER 0
++#define CONFIG_PNG_DECODER 0
++#define CONFIG_PPM_DECODER 0
++#define CONFIG_PRORES_DECODER 0
++#define CONFIG_PROSUMER_DECODER 0
++#define CONFIG_PSD_DECODER 0
++#define CONFIG_PTX_DECODER 0
++#define CONFIG_QDRAW_DECODER 0
++#define CONFIG_QPEG_DECODER 0
++#define CONFIG_QTRLE_DECODER 0
++#define CONFIG_R10K_DECODER 0
++#define CONFIG_R210_DECODER 0
++#define CONFIG_RASC_DECODER 0
++#define CONFIG_RAWVIDEO_DECODER 0
++#define CONFIG_RL2_DECODER 0
++#define CONFIG_ROQ_DECODER 0
++#define CONFIG_RPZA_DECODER 0
++#define CONFIG_RSCC_DECODER 0
++#define CONFIG_RV10_DECODER 0
++#define CONFIG_RV20_DECODER 0
++#define CONFIG_RV30_DECODER 0
++#define CONFIG_RV40_DECODER 0
++#define CONFIG_S302M_DECODER 0
++#define CONFIG_SANM_DECODER 0
++#define CONFIG_SCPR_DECODER 0
++#define CONFIG_SCREENPRESSO_DECODER 0
++#define CONFIG_SGA_DECODER 0
++#define CONFIG_SGI_DECODER 0
++#define CONFIG_SGIRLE_DECODER 0
++#define CONFIG_SHEERVIDEO_DECODER 0
++#define CONFIG_SIMBIOSIS_IMX_DECODER 0
++#define CONFIG_SMACKER_DECODER 0
++#define CONFIG_SMC_DECODER 0
++#define CONFIG_SMVJPEG_DECODER 0
++#define CONFIG_SNOW_DECODER 0
++#define CONFIG_SP5X_DECODER 0
++#define CONFIG_SPEEDHQ_DECODER 0
++#define CONFIG_SRGC_DECODER 0
++#define CONFIG_SUNRAST_DECODER 0
++#define CONFIG_SVQ1_DECODER 0
++#define CONFIG_SVQ3_DECODER 0
++#define CONFIG_TARGA_DECODER 0
++#define CONFIG_TARGA_Y216_DECODER 0
++#define CONFIG_TDSC_DECODER 0
++#define CONFIG_THEORA_DECODER 1
++#define CONFIG_THP_DECODER 0
++#define CONFIG_TIERTEXSEQVIDEO_DECODER 0
++#define CONFIG_TIFF_DECODER 0
++#define CONFIG_TMV_DECODER 0
++#define CONFIG_TRUEMOTION1_DECODER 0
++#define CONFIG_TRUEMOTION2_DECODER 0
++#define CONFIG_TRUEMOTION2RT_DECODER 0
++#define CONFIG_TSCC_DECODER 0
++#define CONFIG_TSCC2_DECODER 0
++#define CONFIG_TXD_DECODER 0
++#define CONFIG_ULTI_DECODER 0
++#define CONFIG_UTVIDEO_DECODER 0
++#define CONFIG_V210_DECODER 0
++#define CONFIG_V210X_DECODER 0
++#define CONFIG_V308_DECODER 0
++#define CONFIG_V408_DECODER 0
++#define CONFIG_V410_DECODER 0
++#define CONFIG_VB_DECODER 0
++#define CONFIG_VBLE_DECODER 0
++#define CONFIG_VC1_DECODER 0
++#define CONFIG_VC1_CRYSTALHD_DECODER 0
++#define CONFIG_VC1IMAGE_DECODER 0
++#define CONFIG_VC1_MMAL_DECODER 0
++#define CONFIG_VC1_QSV_DECODER 0
++#define CONFIG_VC1_V4L2M2M_DECODER 0
++#define CONFIG_VCR1_DECODER 0
++#define CONFIG_VMDVIDEO_DECODER 0
++#define CONFIG_VMNC_DECODER 0
++#define CONFIG_VP3_DECODER 1
++#define CONFIG_VP4_DECODER 0
++#define CONFIG_VP5_DECODER 0
++#define CONFIG_VP6_DECODER 0
++#define CONFIG_VP6A_DECODER 0
++#define CONFIG_VP6F_DECODER 0
++#define CONFIG_VP7_DECODER 0
++#define CONFIG_VP8_DECODER 1
++#define CONFIG_VP8_RKMPP_DECODER 0
++#define CONFIG_VP8_V4L2M2M_DECODER 0
++#define CONFIG_VP9_DECODER 0
++#define CONFIG_VP9_RKMPP_DECODER 0
++#define CONFIG_VP9_V4L2M2M_DECODER 0
++#define CONFIG_VQA_DECODER 0
++#define CONFIG_WEBP_DECODER 0
++#define CONFIG_WCMV_DECODER 0
++#define CONFIG_WRAPPED_AVFRAME_DECODER 0
++#define CONFIG_WMV1_DECODER 0
++#define CONFIG_WMV2_DECODER 0
++#define CONFIG_WMV3_DECODER 0
++#define CONFIG_WMV3_CRYSTALHD_DECODER 0
++#define CONFIG_WMV3IMAGE_DECODER 0
++#define CONFIG_WNV1_DECODER 0
++#define CONFIG_XAN_WC3_DECODER 0
++#define CONFIG_XAN_WC4_DECODER 0
++#define CONFIG_XBM_DECODER 0
++#define CONFIG_XFACE_DECODER 0
++#define CONFIG_XL_DECODER 0
++#define CONFIG_XPM_DECODER 0
++#define CONFIG_XWD_DECODER 0
++#define CONFIG_Y41P_DECODER 0
++#define CONFIG_YLC_DECODER 0
++#define CONFIG_YOP_DECODER 0
++#define CONFIG_YUV4_DECODER 0
++#define CONFIG_ZERO12V_DECODER 0
++#define CONFIG_ZEROCODEC_DECODER 0
++#define CONFIG_ZLIB_DECODER 0
++#define CONFIG_ZMBV_DECODER 0
++#define CONFIG_AAC_DECODER 1
++#define CONFIG_AAC_FIXED_DECODER 0
++#define CONFIG_AAC_LATM_DECODER 0
++#define CONFIG_AC3_DECODER 0
++#define CONFIG_AC3_FIXED_DECODER 0
++#define CONFIG_ACELP_KELVIN_DECODER 0
++#define CONFIG_ALAC_DECODER 0
++#define CONFIG_ALS_DECODER 0
++#define CONFIG_AMRNB_DECODER 0
++#define CONFIG_AMRWB_DECODER 0
++#define CONFIG_APE_DECODER 0
++#define CONFIG_APTX_DECODER 0
++#define CONFIG_APTX_HD_DECODER 0
++#define CONFIG_ATRAC1_DECODER 0
++#define CONFIG_ATRAC3_DECODER 0
++#define CONFIG_ATRAC3AL_DECODER 0
++#define CONFIG_ATRAC3P_DECODER 0
++#define CONFIG_ATRAC3PAL_DECODER 0
++#define CONFIG_ATRAC9_DECODER 0
++#define CONFIG_BINKAUDIO_DCT_DECODER 0
++#define CONFIG_BINKAUDIO_RDFT_DECODER 0
++#define CONFIG_BMV_AUDIO_DECODER 0
++#define CONFIG_COOK_DECODER 0
++#define CONFIG_DCA_DECODER 0
++#define CONFIG_DOLBY_E_DECODER 0
++#define CONFIG_DSD_LSBF_DECODER 0
++#define CONFIG_DSD_MSBF_DECODER 0
++#define CONFIG_DSD_LSBF_PLANAR_DECODER 0
++#define CONFIG_DSD_MSBF_PLANAR_DECODER 0
++#define CONFIG_DSICINAUDIO_DECODER 0
++#define CONFIG_DSS_SP_DECODER 0
++#define CONFIG_DST_DECODER 0
++#define CONFIG_EAC3_DECODER 0
++#define CONFIG_EVRC_DECODER 0
++#define CONFIG_FASTAUDIO_DECODER 0
++#define CONFIG_FFWAVESYNTH_DECODER 0
++#define CONFIG_FLAC_DECODER 1
++#define CONFIG_G723_1_DECODER 0
++#define CONFIG_G729_DECODER 0
++#define CONFIG_GSM_DECODER 0
++#define CONFIG_GSM_MS_DECODER 0
++#define CONFIG_HCA_DECODER 0
++#define CONFIG_HCOM_DECODER 0
++#define CONFIG_IAC_DECODER 0
++#define CONFIG_ILBC_DECODER 0
++#define CONFIG_IMC_DECODER 0
++#define CONFIG_INTERPLAY_ACM_DECODER 0
++#define CONFIG_MACE3_DECODER 0
++#define CONFIG_MACE6_DECODER 0
++#define CONFIG_METASOUND_DECODER 0
++#define CONFIG_MLP_DECODER 0
++#define CONFIG_MP1_DECODER 0
++#define CONFIG_MP1FLOAT_DECODER 0
++#define CONFIG_MP2_DECODER 0
++#define CONFIG_MP2FLOAT_DECODER 0
++#define CONFIG_MP3FLOAT_DECODER 0
++#define CONFIG_MP3_DECODER 1
++#define CONFIG_MP3ADUFLOAT_DECODER 0
++#define CONFIG_MP3ADU_DECODER 0
++#define CONFIG_MP3ON4FLOAT_DECODER 0
++#define CONFIG_MP3ON4_DECODER 0
++#define CONFIG_MPC7_DECODER 0
++#define CONFIG_MPC8_DECODER 0
++#define CONFIG_NELLYMOSER_DECODER 0
++#define CONFIG_ON2AVC_DECODER 0
++#define CONFIG_OPUS_DECODER 0
++#define CONFIG_PAF_AUDIO_DECODER 0
++#define CONFIG_QCELP_DECODER 0
++#define CONFIG_QDM2_DECODER 0
++#define CONFIG_QDMC_DECODER 0
++#define CONFIG_RA_144_DECODER 0
++#define CONFIG_RA_288_DECODER 0
++#define CONFIG_RALF_DECODER 0
++#define CONFIG_SBC_DECODER 0
++#define CONFIG_SHORTEN_DECODER 0
++#define CONFIG_SIPR_DECODER 0
++#define CONFIG_SIREN_DECODER 0
++#define CONFIG_SMACKAUD_DECODER 0
++#define CONFIG_SONIC_DECODER 0
++#define CONFIG_TAK_DECODER 0
++#define CONFIG_TRUEHD_DECODER 0
++#define CONFIG_TRUESPEECH_DECODER 0
++#define CONFIG_TTA_DECODER 0
++#define CONFIG_TWINVQ_DECODER 0
++#define CONFIG_VMDAUDIO_DECODER 0
++#define CONFIG_VORBIS_DECODER 1
++#define CONFIG_WAVPACK_DECODER 0
++#define CONFIG_WMALOSSLESS_DECODER 0
++#define CONFIG_WMAPRO_DECODER 0
++#define CONFIG_WMAV1_DECODER 0
++#define CONFIG_WMAV2_DECODER 0
++#define CONFIG_WMAVOICE_DECODER 0
++#define CONFIG_WS_SND1_DECODER 0
++#define CONFIG_XMA1_DECODER 0
++#define CONFIG_XMA2_DECODER 0
++#define CONFIG_PCM_ALAW_DECODER 1
++#define CONFIG_PCM_BLURAY_DECODER 0
++#define CONFIG_PCM_DVD_DECODER 0
++#define CONFIG_PCM_F16LE_DECODER 0
++#define CONFIG_PCM_F24LE_DECODER 0
++#define CONFIG_PCM_F32BE_DECODER 0
++#define CONFIG_PCM_F32LE_DECODER 1
++#define CONFIG_PCM_F64BE_DECODER 0
++#define CONFIG_PCM_F64LE_DECODER 0
++#define CONFIG_PCM_LXF_DECODER 0
++#define CONFIG_PCM_MULAW_DECODER 1
++#define CONFIG_PCM_S8_DECODER 0
++#define CONFIG_PCM_S8_PLANAR_DECODER 0
++#define CONFIG_PCM_S16BE_DECODER 1
++#define CONFIG_PCM_S16BE_PLANAR_DECODER 0
++#define CONFIG_PCM_S16LE_DECODER 1
++#define CONFIG_PCM_S16LE_PLANAR_DECODER 0
++#define CONFIG_PCM_S24BE_DECODER 1
++#define CONFIG_PCM_S24DAUD_DECODER 0
++#define CONFIG_PCM_S24LE_DECODER 1
++#define CONFIG_PCM_S24LE_PLANAR_DECODER 0
++#define CONFIG_PCM_S32BE_DECODER 0
++#define CONFIG_PCM_S32LE_DECODER 1
++#define CONFIG_PCM_S32LE_PLANAR_DECODER 0
++#define CONFIG_PCM_S64BE_DECODER 0
++#define CONFIG_PCM_S64LE_DECODER 0
++#define CONFIG_PCM_SGA_DECODER 0
++#define CONFIG_PCM_U8_DECODER 1
++#define CONFIG_PCM_U16BE_DECODER 0
++#define CONFIG_PCM_U16LE_DECODER 0
++#define CONFIG_PCM_U24BE_DECODER 0
++#define CONFIG_PCM_U24LE_DECODER 0
++#define CONFIG_PCM_U32BE_DECODER 0
++#define CONFIG_PCM_U32LE_DECODER 0
++#define CONFIG_PCM_VIDC_DECODER 0
++#define CONFIG_DERF_DPCM_DECODER 0
++#define CONFIG_GREMLIN_DPCM_DECODER 0
++#define CONFIG_INTERPLAY_DPCM_DECODER 0
++#define CONFIG_ROQ_DPCM_DECODER 0
++#define CONFIG_SDX2_DPCM_DECODER 0
++#define CONFIG_SOL_DPCM_DECODER 0
++#define CONFIG_XAN_DPCM_DECODER 0
++#define CONFIG_ADPCM_4XM_DECODER 0
++#define CONFIG_ADPCM_ADX_DECODER 0
++#define CONFIG_ADPCM_AFC_DECODER 0
++#define CONFIG_ADPCM_AGM_DECODER 0
++#define CONFIG_ADPCM_AICA_DECODER 0
++#define CONFIG_ADPCM_ARGO_DECODER 0
++#define CONFIG_ADPCM_CT_DECODER 0
++#define CONFIG_ADPCM_DTK_DECODER 0
++#define CONFIG_ADPCM_EA_DECODER 0
++#define CONFIG_ADPCM_EA_MAXIS_XA_DECODER 0
++#define CONFIG_ADPCM_EA_R1_DECODER 0
++#define CONFIG_ADPCM_EA_R2_DECODER 0
++#define CONFIG_ADPCM_EA_R3_DECODER 0
++#define CONFIG_ADPCM_EA_XAS_DECODER 0
++#define CONFIG_ADPCM_G722_DECODER 0
++#define CONFIG_ADPCM_G726_DECODER 0
++#define CONFIG_ADPCM_G726LE_DECODER 0
++#define CONFIG_ADPCM_IMA_AMV_DECODER 0
++#define CONFIG_ADPCM_IMA_ALP_DECODER 0
++#define CONFIG_ADPCM_IMA_APC_DECODER 0
++#define CONFIG_ADPCM_IMA_APM_DECODER 0
++#define CONFIG_ADPCM_IMA_CUNNING_DECODER 0
++#define CONFIG_ADPCM_IMA_DAT4_DECODER 0
++#define CONFIG_ADPCM_IMA_DK3_DECODER 0
++#define CONFIG_ADPCM_IMA_DK4_DECODER 0
++#define CONFIG_ADPCM_IMA_EA_EACS_DECODER 0
++#define CONFIG_ADPCM_IMA_EA_SEAD_DECODER 0
++#define CONFIG_ADPCM_IMA_ISS_DECODER 0
++#define CONFIG_ADPCM_IMA_MOFLEX_DECODER 0
++#define CONFIG_ADPCM_IMA_MTF_DECODER 0
++#define CONFIG_ADPCM_IMA_OKI_DECODER 0
++#define CONFIG_ADPCM_IMA_QT_DECODER 0
++#define CONFIG_ADPCM_IMA_RAD_DECODER 0
++#define CONFIG_ADPCM_IMA_SSI_DECODER 0
++#define CONFIG_ADPCM_IMA_SMJPEG_DECODER 0
++#define CONFIG_ADPCM_IMA_WAV_DECODER 0
++#define CONFIG_ADPCM_IMA_WS_DECODER 0
++#define CONFIG_ADPCM_MS_DECODER 0
++#define CONFIG_ADPCM_MTAF_DECODER 0
++#define CONFIG_ADPCM_PSX_DECODER 0
++#define CONFIG_ADPCM_SBPRO_2_DECODER 0
++#define CONFIG_ADPCM_SBPRO_3_DECODER 0
++#define CONFIG_ADPCM_SBPRO_4_DECODER 0
++#define CONFIG_ADPCM_SWF_DECODER 0
++#define CONFIG_ADPCM_THP_DECODER 0
++#define CONFIG_ADPCM_THP_LE_DECODER 0
++#define CONFIG_ADPCM_VIMA_DECODER 0
++#define CONFIG_ADPCM_XA_DECODER 0
++#define CONFIG_ADPCM_YAMAHA_DECODER 0
++#define CONFIG_ADPCM_ZORK_DECODER 0
++#define CONFIG_SSA_DECODER 0
++#define CONFIG_ASS_DECODER 0
++#define CONFIG_CCAPTION_DECODER 0
++#define CONFIG_DVBSUB_DECODER 0
++#define CONFIG_DVDSUB_DECODER 0
++#define CONFIG_JACOSUB_DECODER 0
++#define CONFIG_MICRODVD_DECODER 0
++#define CONFIG_MOVTEXT_DECODER 0
++#define CONFIG_MPL2_DECODER 0
++#define CONFIG_PGSSUB_DECODER 0
++#define CONFIG_PJS_DECODER 0
++#define CONFIG_REALTEXT_DECODER 0
++#define CONFIG_SAMI_DECODER 0
++#define CONFIG_SRT_DECODER 0
++#define CONFIG_STL_DECODER 0
++#define CONFIG_SUBRIP_DECODER 0
++#define CONFIG_SUBVIEWER_DECODER 0
++#define CONFIG_SUBVIEWER1_DECODER 0
++#define CONFIG_TEXT_DECODER 0
++#define CONFIG_VPLAYER_DECODER 0
++#define CONFIG_WEBVTT_DECODER 0
++#define CONFIG_XSUB_DECODER 0
++#define CONFIG_AAC_AT_DECODER 0
++#define CONFIG_AC3_AT_DECODER 0
++#define CONFIG_ADPCM_IMA_QT_AT_DECODER 0
++#define CONFIG_ALAC_AT_DECODER 0
++#define CONFIG_AMR_NB_AT_DECODER 0
++#define CONFIG_EAC3_AT_DECODER 0
++#define CONFIG_GSM_MS_AT_DECODER 0
++#define CONFIG_ILBC_AT_DECODER 0
++#define CONFIG_MP1_AT_DECODER 0
++#define CONFIG_MP2_AT_DECODER 0
++#define CONFIG_MP3_AT_DECODER 0
++#define CONFIG_PCM_ALAW_AT_DECODER 0
++#define CONFIG_PCM_MULAW_AT_DECODER 0
++#define CONFIG_QDMC_AT_DECODER 0
++#define CONFIG_QDM2_AT_DECODER 0
++#define CONFIG_LIBARIBB24_DECODER 0
++#define CONFIG_LIBCELT_DECODER 0
++#define CONFIG_LIBCODEC2_DECODER 0
++#define CONFIG_LIBDAV1D_DECODER 0
++#define CONFIG_LIBDAVS2_DECODER 0
++#define CONFIG_LIBFDK_AAC_DECODER 0
++#define CONFIG_LIBGSM_DECODER 0
++#define CONFIG_LIBGSM_MS_DECODER 0
++#define CONFIG_LIBILBC_DECODER 0
++#define CONFIG_LIBOPENCORE_AMRNB_DECODER 0
++#define CONFIG_LIBOPENCORE_AMRWB_DECODER 0
++#define CONFIG_LIBOPENJPEG_DECODER 0
++#define CONFIG_LIBOPUS_DECODER 1
++#define CONFIG_LIBRSVG_DECODER 0
++#define CONFIG_LIBSPEEX_DECODER 0
++#define CONFIG_LIBUAVS3D_DECODER 0
++#define CONFIG_LIBVORBIS_DECODER 0
++#define CONFIG_LIBVPX_VP8_DECODER 0
++#define CONFIG_LIBVPX_VP9_DECODER 0
++#define CONFIG_LIBZVBI_TELETEXT_DECODER 0
++#define CONFIG_BINTEXT_DECODER 0
++#define CONFIG_XBIN_DECODER 0
++#define CONFIG_IDF_DECODER 0
++#define CONFIG_LIBAOM_AV1_DECODER 0
++#define CONFIG_AV1_DECODER 0
++#define CONFIG_AV1_CUVID_DECODER 0
++#define CONFIG_AV1_QSV_DECODER 0
++#define CONFIG_LIBOPENH264_DECODER 0
++#define CONFIG_H264_CUVID_DECODER 0
++#define CONFIG_HEVC_CUVID_DECODER 0
++#define CONFIG_HEVC_MEDIACODEC_DECODER 0
++#define CONFIG_MJPEG_CUVID_DECODER 0
++#define CONFIG_MJPEG_QSV_DECODER 0
++#define CONFIG_MPEG1_CUVID_DECODER 0
++#define CONFIG_MPEG2_CUVID_DECODER 0
++#define CONFIG_MPEG4_CUVID_DECODER 0
++#define CONFIG_MPEG4_MEDIACODEC_DECODER 0
++#define CONFIG_VC1_CUVID_DECODER 0
++#define CONFIG_VP8_CUVID_DECODER 0
++#define CONFIG_VP8_MEDIACODEC_DECODER 0
++#define CONFIG_VP8_QSV_DECODER 0
++#define CONFIG_VP9_CUVID_DECODER 0
++#define CONFIG_VP9_MEDIACODEC_DECODER 0
++#define CONFIG_VP9_QSV_DECODER 0
++#define CONFIG_A64MULTI_ENCODER 0
++#define CONFIG_A64MULTI5_ENCODER 0
++#define CONFIG_ALIAS_PIX_ENCODER 0
++#define CONFIG_AMV_ENCODER 0
++#define CONFIG_APNG_ENCODER 0
++#define CONFIG_ASV1_ENCODER 0
++#define CONFIG_ASV2_ENCODER 0
++#define CONFIG_AVRP_ENCODER 0
++#define CONFIG_AVUI_ENCODER 0
++#define CONFIG_AYUV_ENCODER 0
++#define CONFIG_BMP_ENCODER 0
++#define CONFIG_CFHD_ENCODER 0
++#define CONFIG_CINEPAK_ENCODER 0
++#define CONFIG_CLJR_ENCODER 0
++#define CONFIG_COMFORTNOISE_ENCODER 0
++#define CONFIG_DNXHD_ENCODER 0
++#define CONFIG_DPX_ENCODER 0
++#define CONFIG_DVVIDEO_ENCODER 0
++#define CONFIG_EXR_ENCODER 0
++#define CONFIG_FFV1_ENCODER 0
++#define CONFIG_FFVHUFF_ENCODER 0
++#define CONFIG_FITS_ENCODER 0
++#define CONFIG_FLASHSV_ENCODER 0
++#define CONFIG_FLASHSV2_ENCODER 0
++#define CONFIG_FLV_ENCODER 0
++#define CONFIG_GIF_ENCODER 0
++#define CONFIG_H261_ENCODER 0
++#define CONFIG_H263_ENCODER 0
++#define CONFIG_H263P_ENCODER 0
++#define CONFIG_HAP_ENCODER 0
++#define CONFIG_HUFFYUV_ENCODER 0
++#define CONFIG_JPEG2000_ENCODER 0
++#define CONFIG_JPEGLS_ENCODER 0
++#define CONFIG_LJPEG_ENCODER 0
++#define CONFIG_MAGICYUV_ENCODER 0
++#define CONFIG_MJPEG_ENCODER 0
++#define CONFIG_MPEG1VIDEO_ENCODER 0
++#define CONFIG_MPEG2VIDEO_ENCODER 0
++#define CONFIG_MPEG4_ENCODER 0
++#define CONFIG_MSMPEG4V2_ENCODER 0
++#define CONFIG_MSMPEG4V3_ENCODER 0
++#define CONFIG_MSVIDEO1_ENCODER 0
++#define CONFIG_PAM_ENCODER 0
++#define CONFIG_PBM_ENCODER 0
++#define CONFIG_PCX_ENCODER 0
++#define CONFIG_PFM_ENCODER 0
++#define CONFIG_PGM_ENCODER 0
++#define CONFIG_PGMYUV_ENCODER 0
++#define CONFIG_PNG_ENCODER 0
++#define CONFIG_PPM_ENCODER 0
++#define CONFIG_PRORES_ENCODER 0
++#define CONFIG_PRORES_AW_ENCODER 0
++#define CONFIG_PRORES_KS_ENCODER 0
++#define CONFIG_QTRLE_ENCODER 0
++#define CONFIG_R10K_ENCODER 0
++#define CONFIG_R210_ENCODER 0
++#define CONFIG_RAWVIDEO_ENCODER 0
++#define CONFIG_ROQ_ENCODER 0
++#define CONFIG_RPZA_ENCODER 0
++#define CONFIG_RV10_ENCODER 0
++#define CONFIG_RV20_ENCODER 0
++#define CONFIG_S302M_ENCODER 0
++#define CONFIG_SGI_ENCODER 0
++#define CONFIG_SNOW_ENCODER 0
++#define CONFIG_SPEEDHQ_ENCODER 0
++#define CONFIG_SUNRAST_ENCODER 0
++#define CONFIG_SVQ1_ENCODER 0
++#define CONFIG_TARGA_ENCODER 0
++#define CONFIG_TIFF_ENCODER 0
++#define CONFIG_UTVIDEO_ENCODER 0
++#define CONFIG_V210_ENCODER 0
++#define CONFIG_V308_ENCODER 0
++#define CONFIG_V408_ENCODER 0
++#define CONFIG_V410_ENCODER 0
++#define CONFIG_VC2_ENCODER 0
++#define CONFIG_WRAPPED_AVFRAME_ENCODER 0
++#define CONFIG_WMV1_ENCODER 0
++#define CONFIG_WMV2_ENCODER 0
++#define CONFIG_XBM_ENCODER 0
++#define CONFIG_XFACE_ENCODER 0
++#define CONFIG_XWD_ENCODER 0
++#define CONFIG_Y41P_ENCODER 0
++#define CONFIG_YUV4_ENCODER 0
++#define CONFIG_ZLIB_ENCODER 0
++#define CONFIG_ZMBV_ENCODER 0
++#define CONFIG_AAC_ENCODER 0
++#define CONFIG_AC3_ENCODER 0
++#define CONFIG_AC3_FIXED_ENCODER 0
++#define CONFIG_ALAC_ENCODER 0
++#define CONFIG_APTX_ENCODER 0
++#define CONFIG_APTX_HD_ENCODER 0
++#define CONFIG_DCA_ENCODER 0
++#define CONFIG_EAC3_ENCODER 0
++#define CONFIG_FLAC_ENCODER 0
++#define CONFIG_G723_1_ENCODER 0
++#define CONFIG_MLP_ENCODER 0
++#define CONFIG_MP2_ENCODER 0
++#define CONFIG_MP2FIXED_ENCODER 0
++#define CONFIG_NELLYMOSER_ENCODER 0
++#define CONFIG_OPUS_ENCODER 0
++#define CONFIG_RA_144_ENCODER 0
++#define CONFIG_SBC_ENCODER 0
++#define CONFIG_SONIC_ENCODER 0
++#define CONFIG_SONIC_LS_ENCODER 0
++#define CONFIG_TRUEHD_ENCODER 0
++#define CONFIG_TTA_ENCODER 0
++#define CONFIG_VORBIS_ENCODER 0
++#define CONFIG_WAVPACK_ENCODER 0
++#define CONFIG_WMAV1_ENCODER 0
++#define CONFIG_WMAV2_ENCODER 0
++#define CONFIG_PCM_ALAW_ENCODER 0
++#define CONFIG_PCM_DVD_ENCODER 0
++#define CONFIG_PCM_F32BE_ENCODER 0
++#define CONFIG_PCM_F32LE_ENCODER 0
++#define CONFIG_PCM_F64BE_ENCODER 0
++#define CONFIG_PCM_F64LE_ENCODER 0
++#define CONFIG_PCM_MULAW_ENCODER 0
++#define CONFIG_PCM_S8_ENCODER 0
++#define CONFIG_PCM_S8_PLANAR_ENCODER 0
++#define CONFIG_PCM_S16BE_ENCODER 0
++#define CONFIG_PCM_S16BE_PLANAR_ENCODER 0
++#define CONFIG_PCM_S16LE_ENCODER 0
++#define CONFIG_PCM_S16LE_PLANAR_ENCODER 0
++#define CONFIG_PCM_S24BE_ENCODER 0
++#define CONFIG_PCM_S24DAUD_ENCODER 0
++#define CONFIG_PCM_S24LE_ENCODER 0
++#define CONFIG_PCM_S24LE_PLANAR_ENCODER 0
++#define CONFIG_PCM_S32BE_ENCODER 0
++#define CONFIG_PCM_S32LE_ENCODER 0
++#define CONFIG_PCM_S32LE_PLANAR_ENCODER 0
++#define CONFIG_PCM_S64BE_ENCODER 0
++#define CONFIG_PCM_S64LE_ENCODER 0
++#define CONFIG_PCM_U8_ENCODER 0
++#define CONFIG_PCM_U16BE_ENCODER 0
++#define CONFIG_PCM_U16LE_ENCODER 0
++#define CONFIG_PCM_U24BE_ENCODER 0
++#define CONFIG_PCM_U24LE_ENCODER 0
++#define CONFIG_PCM_U32BE_ENCODER 0
++#define CONFIG_PCM_U32LE_ENCODER 0
++#define CONFIG_PCM_VIDC_ENCODER 0
++#define CONFIG_ROQ_DPCM_ENCODER 0
++#define CONFIG_ADPCM_ADX_ENCODER 0
++#define CONFIG_ADPCM_ARGO_ENCODER 0
++#define CONFIG_ADPCM_G722_ENCODER 0
++#define CONFIG_ADPCM_G726_ENCODER 0
++#define CONFIG_ADPCM_G726LE_ENCODER 0
++#define CONFIG_ADPCM_IMA_AMV_ENCODER 0
++#define CONFIG_ADPCM_IMA_ALP_ENCODER 0
++#define CONFIG_ADPCM_IMA_APM_ENCODER 0
++#define CONFIG_ADPCM_IMA_QT_ENCODER 0
++#define CONFIG_ADPCM_IMA_SSI_ENCODER 0
++#define CONFIG_ADPCM_IMA_WAV_ENCODER 0
++#define CONFIG_ADPCM_MS_ENCODER 0
++#define CONFIG_ADPCM_SWF_ENCODER 0
++#define CONFIG_ADPCM_YAMAHA_ENCODER 0
++#define CONFIG_SSA_ENCODER 0
++#define CONFIG_ASS_ENCODER 0
++#define CONFIG_DVBSUB_ENCODER 0
++#define CONFIG_DVDSUB_ENCODER 0
++#define CONFIG_MOVTEXT_ENCODER 0
++#define CONFIG_SRT_ENCODER 0
++#define CONFIG_SUBRIP_ENCODER 0
++#define CONFIG_TEXT_ENCODER 0
++#define CONFIG_TTML_ENCODER 0
++#define CONFIG_WEBVTT_ENCODER 0
++#define CONFIG_XSUB_ENCODER 0
++#define CONFIG_AAC_AT_ENCODER 0
++#define CONFIG_ALAC_AT_ENCODER 0
++#define CONFIG_ILBC_AT_ENCODER 0
++#define CONFIG_PCM_ALAW_AT_ENCODER 0
++#define CONFIG_PCM_MULAW_AT_ENCODER 0
++#define CONFIG_LIBAOM_AV1_ENCODER 0
++#define CONFIG_LIBCODEC2_ENCODER 0
++#define CONFIG_LIBFDK_AAC_ENCODER 0
++#define CONFIG_LIBGSM_ENCODER 0
++#define CONFIG_LIBGSM_MS_ENCODER 0
++#define CONFIG_LIBILBC_ENCODER 0
++#define CONFIG_LIBMP3LAME_ENCODER 0
++#define CONFIG_LIBOPENCORE_AMRNB_ENCODER 0
++#define CONFIG_LIBOPENJPEG_ENCODER 0
++#define CONFIG_LIBOPUS_ENCODER 0
++#define CONFIG_LIBRAV1E_ENCODER 0
++#define CONFIG_LIBSHINE_ENCODER 0
++#define CONFIG_LIBSPEEX_ENCODER 0
++#define CONFIG_LIBSVTAV1_ENCODER 0
++#define CONFIG_LIBTHEORA_ENCODER 0
++#define CONFIG_LIBTWOLAME_ENCODER 0
++#define CONFIG_LIBVO_AMRWBENC_ENCODER 0
++#define CONFIG_LIBVORBIS_ENCODER 0
++#define CONFIG_LIBVPX_VP8_ENCODER 0
++#define CONFIG_LIBVPX_VP9_ENCODER 0
++#define CONFIG_LIBWEBP_ANIM_ENCODER 0
++#define CONFIG_LIBWEBP_ENCODER 0
++#define CONFIG_LIBX262_ENCODER 0
++#define CONFIG_LIBX264_ENCODER 0
++#define CONFIG_LIBX264RGB_ENCODER 0
++#define CONFIG_LIBX265_ENCODER 0
++#define CONFIG_LIBXAVS_ENCODER 0
++#define CONFIG_LIBXAVS2_ENCODER 0
++#define CONFIG_LIBXVID_ENCODER 0
++#define CONFIG_AAC_MF_ENCODER 0
++#define CONFIG_AC3_MF_ENCODER 0
++#define CONFIG_H263_V4L2M2M_ENCODER 0
++#define CONFIG_LIBOPENH264_ENCODER 0
++#define CONFIG_H264_AMF_ENCODER 0
++#define CONFIG_H264_MF_ENCODER 0
++#define CONFIG_H264_NVENC_ENCODER 0
++#define CONFIG_H264_OMX_ENCODER 0
++#define CONFIG_H264_QSV_ENCODER 0
++#define CONFIG_H264_V4L2M2M_ENCODER 0
++#define CONFIG_H264_VAAPI_ENCODER 0
++#define CONFIG_H264_VIDEOTOOLBOX_ENCODER 0
++#define CONFIG_NVENC_ENCODER 0
++#define CONFIG_NVENC_H264_ENCODER 0
++#define CONFIG_NVENC_HEVC_ENCODER 0
++#define CONFIG_HEVC_AMF_ENCODER 0
++#define CONFIG_HEVC_MF_ENCODER 0
++#define CONFIG_HEVC_NVENC_ENCODER 0
++#define CONFIG_HEVC_QSV_ENCODER 0
++#define CONFIG_HEVC_V4L2M2M_ENCODER 0
++#define CONFIG_HEVC_VAAPI_ENCODER 0
++#define CONFIG_HEVC_VIDEOTOOLBOX_ENCODER 0
++#define CONFIG_LIBKVAZAAR_ENCODER 0
++#define CONFIG_MJPEG_QSV_ENCODER 0
++#define CONFIG_MJPEG_VAAPI_ENCODER 0
++#define CONFIG_MP3_MF_ENCODER 0
++#define CONFIG_MPEG2_QSV_ENCODER 0
++#define CONFIG_MPEG2_VAAPI_ENCODER 0
++#define CONFIG_MPEG4_OMX_ENCODER 0
++#define CONFIG_MPEG4_V4L2M2M_ENCODER 0
++#define CONFIG_VP8_V4L2M2M_ENCODER 0
++#define CONFIG_VP8_VAAPI_ENCODER 0
++#define CONFIG_VP9_VAAPI_ENCODER 0
++#define CONFIG_VP9_QSV_ENCODER 0
++#define CONFIG_AV1_D3D11VA_HWACCEL 0
++#define CONFIG_AV1_D3D11VA2_HWACCEL 0
++#define CONFIG_AV1_DXVA2_HWACCEL 0
++#define CONFIG_AV1_NVDEC_HWACCEL 0
++#define CONFIG_AV1_VAAPI_HWACCEL 0
++#define CONFIG_H263_VAAPI_HWACCEL 0
++#define CONFIG_H263_VIDEOTOOLBOX_HWACCEL 0
++#define CONFIG_H264_D3D11VA_HWACCEL 0
++#define CONFIG_H264_D3D11VA2_HWACCEL 0
++#define CONFIG_H264_DXVA2_HWACCEL 0
++#define CONFIG_H264_NVDEC_HWACCEL 0
++#define CONFIG_H264_VAAPI_HWACCEL 0
++#define CONFIG_H264_VDPAU_HWACCEL 0
++#define CONFIG_H264_VIDEOTOOLBOX_HWACCEL 0
++#define CONFIG_HEVC_D3D11VA_HWACCEL 0
++#define CONFIG_HEVC_D3D11VA2_HWACCEL 0
++#define CONFIG_HEVC_DXVA2_HWACCEL 0
++#define CONFIG_HEVC_NVDEC_HWACCEL 0
++#define CONFIG_HEVC_VAAPI_HWACCEL 0
++#define CONFIG_HEVC_VDPAU_HWACCEL 0
++#define CONFIG_HEVC_VIDEOTOOLBOX_HWACCEL 0
++#define CONFIG_MJPEG_NVDEC_HWACCEL 0
++#define CONFIG_MJPEG_VAAPI_HWACCEL 0
++#define CONFIG_MPEG1_NVDEC_HWACCEL 0
++#define CONFIG_MPEG1_VDPAU_HWACCEL 0
++#define CONFIG_MPEG1_VIDEOTOOLBOX_HWACCEL 0
++#define CONFIG_MPEG1_XVMC_HWACCEL 0
++#define CONFIG_MPEG2_D3D11VA_HWACCEL 0
++#define CONFIG_MPEG2_D3D11VA2_HWACCEL 0
++#define CONFIG_MPEG2_NVDEC_HWACCEL 0
++#define CONFIG_MPEG2_DXVA2_HWACCEL 0
++#define CONFIG_MPEG2_VAAPI_HWACCEL 0
++#define CONFIG_MPEG2_VDPAU_HWACCEL 0
++#define CONFIG_MPEG2_VIDEOTOOLBOX_HWACCEL 0
++#define CONFIG_MPEG2_XVMC_HWACCEL 0
++#define CONFIG_MPEG4_NVDEC_HWACCEL 0
++#define CONFIG_MPEG4_VAAPI_HWACCEL 0
++#define CONFIG_MPEG4_VDPAU_HWACCEL 0
++#define CONFIG_MPEG4_VIDEOTOOLBOX_HWACCEL 0
++#define CONFIG_VC1_D3D11VA_HWACCEL 0
++#define CONFIG_VC1_D3D11VA2_HWACCEL 0
++#define CONFIG_VC1_DXVA2_HWACCEL 0
++#define CONFIG_VC1_NVDEC_HWACCEL 0
++#define CONFIG_VC1_VAAPI_HWACCEL 0
++#define CONFIG_VC1_VDPAU_HWACCEL 0
++#define CONFIG_VP8_NVDEC_HWACCEL 0
++#define CONFIG_VP8_VAAPI_HWACCEL 0
++#define CONFIG_VP9_D3D11VA_HWACCEL 0
++#define CONFIG_VP9_D3D11VA2_HWACCEL 0
++#define CONFIG_VP9_DXVA2_HWACCEL 0
++#define CONFIG_VP9_NVDEC_HWACCEL 0
++#define CONFIG_VP9_VAAPI_HWACCEL 0
++#define CONFIG_VP9_VDPAU_HWACCEL 0
++#define CONFIG_WMV3_D3D11VA_HWACCEL 0
++#define CONFIG_WMV3_D3D11VA2_HWACCEL 0
++#define CONFIG_WMV3_DXVA2_HWACCEL 0
++#define CONFIG_WMV3_NVDEC_HWACCEL 0
++#define CONFIG_WMV3_VAAPI_HWACCEL 0
++#define CONFIG_WMV3_VDPAU_HWACCEL 0
++#define CONFIG_AAC_PARSER 1
++#define CONFIG_AAC_LATM_PARSER 0
++#define CONFIG_AC3_PARSER 0
++#define CONFIG_ADX_PARSER 0
++#define CONFIG_AV1_PARSER 0
++#define CONFIG_AVS2_PARSER 0
++#define CONFIG_AVS3_PARSER 0
++#define CONFIG_BMP_PARSER 0
++#define CONFIG_CAVSVIDEO_PARSER 0
++#define CONFIG_COOK_PARSER 0
++#define CONFIG_CRI_PARSER 0
++#define CONFIG_DCA_PARSER 0
++#define CONFIG_DIRAC_PARSER 0
++#define CONFIG_DNXHD_PARSER 0
++#define CONFIG_DOLBY_E_PARSER 0
++#define CONFIG_DPX_PARSER 0
++#define CONFIG_DVAUDIO_PARSER 0
++#define CONFIG_DVBSUB_PARSER 0
++#define CONFIG_DVDSUB_PARSER 0
++#define CONFIG_DVD_NAV_PARSER 0
++#define CONFIG_FLAC_PARSER 1
++#define CONFIG_G723_1_PARSER 0
++#define CONFIG_G729_PARSER 0
++#define CONFIG_GIF_PARSER 0
++#define CONFIG_GSM_PARSER 0
++#define CONFIG_H261_PARSER 0
++#define CONFIG_H263_PARSER 0
++#define CONFIG_H264_PARSER 1
++#define CONFIG_HEVC_PARSER 0
++#define CONFIG_IPU_PARSER 0
++#define CONFIG_JPEG2000_PARSER 0
++#define CONFIG_MJPEG_PARSER 0
++#define CONFIG_MLP_PARSER 0
++#define CONFIG_MPEG4VIDEO_PARSER 0
++#define CONFIG_MPEGAUDIO_PARSER 1
++#define CONFIG_MPEGVIDEO_PARSER 0
++#define CONFIG_OPUS_PARSER 1
++#define CONFIG_PNG_PARSER 0
++#define CONFIG_PNM_PARSER 0
++#define CONFIG_RV30_PARSER 0
++#define CONFIG_RV40_PARSER 0
++#define CONFIG_SBC_PARSER 0
++#define CONFIG_SIPR_PARSER 0
++#define CONFIG_TAK_PARSER 0
++#define CONFIG_VC1_PARSER 0
++#define CONFIG_VORBIS_PARSER 1
++#define CONFIG_VP3_PARSER 1
++#define CONFIG_VP8_PARSER 1
++#define CONFIG_VP9_PARSER 1
++#define CONFIG_WEBP_PARSER 0
++#define CONFIG_XBM_PARSER 0
++#define CONFIG_XMA_PARSER 0
++#define CONFIG_ALSA_INDEV 0
++#define CONFIG_ANDROID_CAMERA_INDEV 0
++#define CONFIG_AVFOUNDATION_INDEV 0
++#define CONFIG_BKTR_INDEV 0
++#define CONFIG_DECKLINK_INDEV 0
++#define CONFIG_DSHOW_INDEV 0
++#define CONFIG_FBDEV_INDEV 0
++#define CONFIG_GDIGRAB_INDEV 0
++#define CONFIG_IEC61883_INDEV 0
++#define CONFIG_JACK_INDEV 0
++#define CONFIG_KMSGRAB_INDEV 0
++#define CONFIG_LAVFI_INDEV 0
++#define CONFIG_OPENAL_INDEV 0
++#define CONFIG_OSS_INDEV 0
++#define CONFIG_PULSE_INDEV 0
++#define CONFIG_SNDIO_INDEV 0
++#define CONFIG_V4L2_INDEV 0
++#define CONFIG_VFWCAP_INDEV 0
++#define CONFIG_XCBGRAB_INDEV 0
++#define CONFIG_LIBCDIO_INDEV 0
++#define CONFIG_LIBDC1394_INDEV 0
++#define CONFIG_ALSA_OUTDEV 0
++#define CONFIG_AUDIOTOOLBOX_OUTDEV 0
++#define CONFIG_CACA_OUTDEV 0
++#define CONFIG_DECKLINK_OUTDEV 0
++#define CONFIG_FBDEV_OUTDEV 0
++#define CONFIG_OPENGL_OUTDEV 0
++#define CONFIG_OSS_OUTDEV 0
++#define CONFIG_PULSE_OUTDEV 0
++#define CONFIG_SDL2_OUTDEV 0
++#define CONFIG_SNDIO_OUTDEV 0
++#define CONFIG_V4L2_OUTDEV 0
++#define CONFIG_XV_OUTDEV 0
++#define CONFIG_ABENCH_FILTER 0
++#define CONFIG_ACOMPRESSOR_FILTER 0
++#define CONFIG_ACONTRAST_FILTER 0
++#define CONFIG_ACOPY_FILTER 0
++#define CONFIG_ACUE_FILTER 0
++#define CONFIG_ACROSSFADE_FILTER 0
++#define CONFIG_ACROSSOVER_FILTER 0
++#define CONFIG_ACRUSHER_FILTER 0
++#define CONFIG_ADECLICK_FILTER 0
++#define CONFIG_ADECLIP_FILTER 0
++#define CONFIG_ADELAY_FILTER 0
++#define CONFIG_ADENORM_FILTER 0
++#define CONFIG_ADERIVATIVE_FILTER 0
++#define CONFIG_AECHO_FILTER 0
++#define CONFIG_AEMPHASIS_FILTER 0
++#define CONFIG_AEVAL_FILTER 0
++#define CONFIG_AEXCITER_FILTER 0
++#define CONFIG_AFADE_FILTER 0
++#define CONFIG_AFFTDN_FILTER 0
++#define CONFIG_AFFTFILT_FILTER 0
++#define CONFIG_AFIR_FILTER 0
++#define CONFIG_AFORMAT_FILTER 0
++#define CONFIG_AFREQSHIFT_FILTER 0
++#define CONFIG_AGATE_FILTER 0
++#define CONFIG_AIIR_FILTER 0
++#define CONFIG_AINTEGRAL_FILTER 0
++#define CONFIG_AINTERLEAVE_FILTER 0
++#define CONFIG_ALIMITER_FILTER 0
++#define CONFIG_ALLPASS_FILTER 0
++#define CONFIG_ALOOP_FILTER 0
++#define CONFIG_AMERGE_FILTER 0
++#define CONFIG_AMETADATA_FILTER 0
++#define CONFIG_AMIX_FILTER 0
++#define CONFIG_AMULTIPLY_FILTER 0
++#define CONFIG_ANEQUALIZER_FILTER 0
++#define CONFIG_ANLMDN_FILTER 0
++#define CONFIG_ANLMS_FILTER 0
++#define CONFIG_ANULL_FILTER 0
++#define CONFIG_APAD_FILTER 0
++#define CONFIG_APERMS_FILTER 0
++#define CONFIG_APHASER_FILTER 0
++#define CONFIG_APHASESHIFT_FILTER 0
++#define CONFIG_APULSATOR_FILTER 0
++#define CONFIG_AREALTIME_FILTER 0
++#define CONFIG_ARESAMPLE_FILTER 0
++#define CONFIG_AREVERSE_FILTER 0
++#define CONFIG_ARNNDN_FILTER 0
++#define CONFIG_ASELECT_FILTER 0
++#define CONFIG_ASENDCMD_FILTER 0
++#define CONFIG_ASETNSAMPLES_FILTER 0
++#define CONFIG_ASETPTS_FILTER 0
++#define CONFIG_ASETRATE_FILTER 0
++#define CONFIG_ASETTB_FILTER 0
++#define CONFIG_ASHOWINFO_FILTER 0
++#define CONFIG_ASIDEDATA_FILTER 0
++#define CONFIG_ASOFTCLIP_FILTER 0
++#define CONFIG_ASPLIT_FILTER 0
++#define CONFIG_ASR_FILTER 0
++#define CONFIG_ASTATS_FILTER 0
++#define CONFIG_ASTREAMSELECT_FILTER 0
++#define CONFIG_ASUBBOOST_FILTER 0
++#define CONFIG_ASUBCUT_FILTER 0
++#define CONFIG_ASUPERCUT_FILTER 0
++#define CONFIG_ASUPERPASS_FILTER 0
++#define CONFIG_ASUPERSTOP_FILTER 0
++#define CONFIG_ATEMPO_FILTER 0
++#define CONFIG_ATRIM_FILTER 0
++#define CONFIG_AXCORRELATE_FILTER 0
++#define CONFIG_AZMQ_FILTER 0
++#define CONFIG_BANDPASS_FILTER 0
++#define CONFIG_BANDREJECT_FILTER 0
++#define CONFIG_BASS_FILTER 0
++#define CONFIG_BIQUAD_FILTER 0
++#define CONFIG_BS2B_FILTER 0
++#define CONFIG_CHROMABER_VULKAN_FILTER 0
++#define CONFIG_CHANNELMAP_FILTER 0
++#define CONFIG_CHANNELSPLIT_FILTER 0
++#define CONFIG_CHORUS_FILTER 0
++#define CONFIG_COMPAND_FILTER 0
++#define CONFIG_COMPENSATIONDELAY_FILTER 0
++#define CONFIG_CROSSFEED_FILTER 0
++#define CONFIG_CRYSTALIZER_FILTER 0
++#define CONFIG_DCSHIFT_FILTER 0
++#define CONFIG_DEESSER_FILTER 0
++#define CONFIG_DRMETER_FILTER 0
++#define CONFIG_DYNAUDNORM_FILTER 0
++#define CONFIG_EARWAX_FILTER 0
++#define CONFIG_EBUR128_FILTER 0
++#define CONFIG_EQUALIZER_FILTER 0
++#define CONFIG_EXTRASTEREO_FILTER 0
++#define CONFIG_FIREQUALIZER_FILTER 0
++#define CONFIG_FLANGER_FILTER 0
++#define CONFIG_HAAS_FILTER 0
++#define CONFIG_HDCD_FILTER 0
++#define CONFIG_HEADPHONE_FILTER 0
++#define CONFIG_HIGHPASS_FILTER 0
++#define CONFIG_HIGHSHELF_FILTER 0
++#define CONFIG_JOIN_FILTER 0
++#define CONFIG_LADSPA_FILTER 0
++#define CONFIG_LOUDNORM_FILTER 0
++#define CONFIG_LOWPASS_FILTER 0
++#define CONFIG_LOWSHELF_FILTER 0
++#define CONFIG_LV2_FILTER 0
++#define CONFIG_MCOMPAND_FILTER 0
++#define CONFIG_PAN_FILTER 0
++#define CONFIG_REPLAYGAIN_FILTER 0
++#define CONFIG_RESAMPLE_FILTER 0
++#define CONFIG_RUBBERBAND_FILTER 0
++#define CONFIG_SIDECHAINCOMPRESS_FILTER 0
++#define CONFIG_SIDECHAINGATE_FILTER 0
++#define CONFIG_SILENCEDETECT_FILTER 0
++#define CONFIG_SILENCEREMOVE_FILTER 0
++#define CONFIG_SOFALIZER_FILTER 0
++#define CONFIG_SPEECHNORM_FILTER 0
++#define CONFIG_STEREOTOOLS_FILTER 0
++#define CONFIG_STEREOWIDEN_FILTER 0
++#define CONFIG_SUPEREQUALIZER_FILTER 0
++#define CONFIG_SURROUND_FILTER 0
++#define CONFIG_TREBLE_FILTER 0
++#define CONFIG_TREMOLO_FILTER 0
++#define CONFIG_VIBRATO_FILTER 0
++#define CONFIG_VOLUME_FILTER 0
++#define CONFIG_VOLUMEDETECT_FILTER 0
++#define CONFIG_AEVALSRC_FILTER 0
++#define CONFIG_AFIRSRC_FILTER 0
++#define CONFIG_ANOISESRC_FILTER 0
++#define CONFIG_ANULLSRC_FILTER 0
++#define CONFIG_FLITE_FILTER 0
++#define CONFIG_HILBERT_FILTER 0
++#define CONFIG_SINC_FILTER 0
++#define CONFIG_SINE_FILTER 0
++#define CONFIG_ANULLSINK_FILTER 0
++#define CONFIG_ADDROI_FILTER 0
++#define CONFIG_ALPHAEXTRACT_FILTER 0
++#define CONFIG_ALPHAMERGE_FILTER 0
++#define CONFIG_AMPLIFY_FILTER 0
++#define CONFIG_ASS_FILTER 0
++#define CONFIG_ATADENOISE_FILTER 0
++#define CONFIG_AVGBLUR_FILTER 0
++#define CONFIG_AVGBLUR_OPENCL_FILTER 0
++#define CONFIG_AVGBLUR_VULKAN_FILTER 0
++#define CONFIG_BBOX_FILTER 0
++#define CONFIG_BENCH_FILTER 0
++#define CONFIG_BILATERAL_FILTER 0
++#define CONFIG_BITPLANENOISE_FILTER 0
++#define CONFIG_BLACKDETECT_FILTER 0
++#define CONFIG_BLACKFRAME_FILTER 0
++#define CONFIG_BLEND_FILTER 0
++#define CONFIG_BM3D_FILTER 0
++#define CONFIG_BOXBLUR_FILTER 0
++#define CONFIG_BOXBLUR_OPENCL_FILTER 0
++#define CONFIG_BWDIF_FILTER 0
++#define CONFIG_CAS_FILTER 0
++#define CONFIG_CHROMAHOLD_FILTER 0
++#define CONFIG_CHROMAKEY_FILTER 0
++#define CONFIG_CHROMANR_FILTER 0
++#define CONFIG_CHROMASHIFT_FILTER 0
++#define CONFIG_CIESCOPE_FILTER 0
++#define CONFIG_CODECVIEW_FILTER 0
++#define CONFIG_COLORBALANCE_FILTER 0
++#define CONFIG_COLORCHANNELMIXER_FILTER 0
++#define CONFIG_COLORCONTRAST_FILTER 0
++#define CONFIG_COLORCORRECT_FILTER 0
++#define CONFIG_COLORIZE_FILTER 0
++#define CONFIG_COLORKEY_FILTER 0
++#define CONFIG_COLORKEY_OPENCL_FILTER 0
++#define CONFIG_COLORHOLD_FILTER 0
++#define CONFIG_COLORLEVELS_FILTER 0
++#define CONFIG_COLORMATRIX_FILTER 0
++#define CONFIG_COLORSPACE_FILTER 0
++#define CONFIG_COLORTEMPERATURE_FILTER 0
++#define CONFIG_CONVOLUTION_FILTER 0
++#define CONFIG_CONVOLUTION_OPENCL_FILTER 0
++#define CONFIG_CONVOLVE_FILTER 0
++#define CONFIG_COPY_FILTER 0
++#define CONFIG_COREIMAGE_FILTER 0
++#define CONFIG_COVER_RECT_FILTER 0
++#define CONFIG_CROP_FILTER 0
++#define CONFIG_CROPDETECT_FILTER 0
++#define CONFIG_CUE_FILTER 0
++#define CONFIG_CURVES_FILTER 0
++#define CONFIG_DATASCOPE_FILTER 0
++#define CONFIG_DBLUR_FILTER 0
++#define CONFIG_DCTDNOIZ_FILTER 0
++#define CONFIG_DEBAND_FILTER 0
++#define CONFIG_DEBLOCK_FILTER 0
++#define CONFIG_DECIMATE_FILTER 0
++#define CONFIG_DECONVOLVE_FILTER 0
++#define CONFIG_DEDOT_FILTER 0
++#define CONFIG_DEFLATE_FILTER 0
++#define CONFIG_DEFLICKER_FILTER 0
++#define CONFIG_DEINTERLACE_QSV_FILTER 0
++#define CONFIG_DEINTERLACE_VAAPI_FILTER 0
++#define CONFIG_DEJUDDER_FILTER 0
++#define CONFIG_DELOGO_FILTER 0
++#define CONFIG_DENOISE_VAAPI_FILTER 0
++#define CONFIG_DERAIN_FILTER 0
++#define CONFIG_DESHAKE_FILTER 0
++#define CONFIG_DESHAKE_OPENCL_FILTER 0
++#define CONFIG_DESPILL_FILTER 0
++#define CONFIG_DETELECINE_FILTER 0
++#define CONFIG_DILATION_FILTER 0
++#define CONFIG_DILATION_OPENCL_FILTER 0
++#define CONFIG_DISPLACE_FILTER 0
++#define CONFIG_DNN_PROCESSING_FILTER 0
++#define CONFIG_DOUBLEWEAVE_FILTER 0
++#define CONFIG_DRAWBOX_FILTER 0
++#define CONFIG_DRAWGRAPH_FILTER 0
++#define CONFIG_DRAWGRID_FILTER 0
++#define CONFIG_DRAWTEXT_FILTER 0
++#define CONFIG_EDGEDETECT_FILTER 0
++#define CONFIG_ELBG_FILTER 0
++#define CONFIG_ENTROPY_FILTER 0
++#define CONFIG_EPX_FILTER 0
++#define CONFIG_EQ_FILTER 0
++#define CONFIG_EROSION_FILTER 0
++#define CONFIG_EROSION_OPENCL_FILTER 0
++#define CONFIG_ESTDIF_FILTER 0
++#define CONFIG_EXPOSURE_FILTER 0
++#define CONFIG_EXTRACTPLANES_FILTER 0
++#define CONFIG_FADE_FILTER 0
++#define CONFIG_FFTDNOIZ_FILTER 0
++#define CONFIG_FFTFILT_FILTER 0
++#define CONFIG_FIELD_FILTER 0
++#define CONFIG_FIELDHINT_FILTER 0
++#define CONFIG_FIELDMATCH_FILTER 0
++#define CONFIG_FIELDORDER_FILTER 0
++#define CONFIG_FILLBORDERS_FILTER 0
++#define CONFIG_FIND_RECT_FILTER 0
++#define CONFIG_FLOODFILL_FILTER 0
++#define CONFIG_FORMAT_FILTER 0
++#define CONFIG_FPS_FILTER 0
++#define CONFIG_FRAMEPACK_FILTER 0
++#define CONFIG_FRAMERATE_FILTER 0
++#define CONFIG_FRAMESTEP_FILTER 0
++#define CONFIG_FREEZEDETECT_FILTER 0
++#define CONFIG_FREEZEFRAMES_FILTER 0
++#define CONFIG_FREI0R_FILTER 0
++#define CONFIG_FSPP_FILTER 0
++#define CONFIG_GBLUR_FILTER 0
++#define CONFIG_GEQ_FILTER 0
++#define CONFIG_GRADFUN_FILTER 0
++#define CONFIG_GRAPHMONITOR_FILTER 0
++#define CONFIG_GREYEDGE_FILTER 0
++#define CONFIG_HALDCLUT_FILTER 0
++#define CONFIG_HFLIP_FILTER 0
++#define CONFIG_HISTEQ_FILTER 0
++#define CONFIG_HISTOGRAM_FILTER 0
++#define CONFIG_HQDN3D_FILTER 0
++#define CONFIG_HQX_FILTER 0
++#define CONFIG_HSTACK_FILTER 0
++#define CONFIG_HUE_FILTER 0
++#define CONFIG_HWDOWNLOAD_FILTER 0
++#define CONFIG_HWMAP_FILTER 0
++#define CONFIG_HWUPLOAD_FILTER 0
++#define CONFIG_HWUPLOAD_CUDA_FILTER 0
++#define CONFIG_HYSTERESIS_FILTER 0
++#define CONFIG_IDENTITY_FILTER 0
++#define CONFIG_IDET_FILTER 0
++#define CONFIG_IL_FILTER 0
++#define CONFIG_INFLATE_FILTER 0
++#define CONFIG_INTERLACE_FILTER 0
++#define CONFIG_INTERLEAVE_FILTER 0
++#define CONFIG_KERNDEINT_FILTER 0
++#define CONFIG_KIRSCH_FILTER 0
++#define CONFIG_LAGFUN_FILTER 0
++#define CONFIG_LENSCORRECTION_FILTER 0
++#define CONFIG_LENSFUN_FILTER 0
++#define CONFIG_LIBVMAF_FILTER 0
++#define CONFIG_LIMITER_FILTER 0
++#define CONFIG_LOOP_FILTER 0
++#define CONFIG_LUMAKEY_FILTER 0
++#define CONFIG_LUT_FILTER 0
++#define CONFIG_LUT1D_FILTER 0
++#define CONFIG_LUT2_FILTER 0
++#define CONFIG_LUT3D_FILTER 0
++#define CONFIG_LUTRGB_FILTER 0
++#define CONFIG_LUTYUV_FILTER 0
++#define CONFIG_MASKEDCLAMP_FILTER 0
++#define CONFIG_MASKEDMAX_FILTER 0
++#define CONFIG_MASKEDMERGE_FILTER 0
++#define CONFIG_MASKEDMIN_FILTER 0
++#define CONFIG_MASKEDTHRESHOLD_FILTER 0
++#define CONFIG_MASKFUN_FILTER 0
++#define CONFIG_MCDEINT_FILTER 0
++#define CONFIG_MEDIAN_FILTER 0
++#define CONFIG_MERGEPLANES_FILTER 0
++#define CONFIG_MESTIMATE_FILTER 0
++#define CONFIG_METADATA_FILTER 0
++#define CONFIG_MIDEQUALIZER_FILTER 0
++#define CONFIG_MINTERPOLATE_FILTER 0
++#define CONFIG_MIX_FILTER 0
++#define CONFIG_MONOCHROME_FILTER 0
++#define CONFIG_MPDECIMATE_FILTER 0
++#define CONFIG_MSAD_FILTER 0
++#define CONFIG_NEGATE_FILTER 0
++#define CONFIG_NLMEANS_FILTER 0
++#define CONFIG_NLMEANS_OPENCL_FILTER 0
++#define CONFIG_NNEDI_FILTER 0
++#define CONFIG_NOFORMAT_FILTER 0
++#define CONFIG_NOISE_FILTER 0
++#define CONFIG_NORMALIZE_FILTER 0
++#define CONFIG_NULL_FILTER 0
++#define CONFIG_OCR_FILTER 0
++#define CONFIG_OCV_FILTER 0
++#define CONFIG_OSCILLOSCOPE_FILTER 0
++#define CONFIG_OVERLAY_FILTER 0
++#define CONFIG_OVERLAY_OPENCL_FILTER 0
++#define CONFIG_OVERLAY_QSV_FILTER 0
++#define CONFIG_OVERLAY_VULKAN_FILTER 0
++#define CONFIG_OVERLAY_CUDA_FILTER 0
++#define CONFIG_OWDENOISE_FILTER 0
++#define CONFIG_PAD_FILTER 0
++#define CONFIG_PAD_OPENCL_FILTER 0
++#define CONFIG_PALETTEGEN_FILTER 0
++#define CONFIG_PALETTEUSE_FILTER 0
++#define CONFIG_PERMS_FILTER 0
++#define CONFIG_PERSPECTIVE_FILTER 0
++#define CONFIG_PHASE_FILTER 0
++#define CONFIG_PHOTOSENSITIVITY_FILTER 0
++#define CONFIG_PIXDESCTEST_FILTER 0
++#define CONFIG_PIXSCOPE_FILTER 0
++#define CONFIG_PP_FILTER 0
++#define CONFIG_PP7_FILTER 0
++#define CONFIG_PREMULTIPLY_FILTER 0
++#define CONFIG_PREWITT_FILTER 0
++#define CONFIG_PREWITT_OPENCL_FILTER 0
++#define CONFIG_PROCAMP_VAAPI_FILTER 0
++#define CONFIG_PROGRAM_OPENCL_FILTER 0
++#define CONFIG_PSEUDOCOLOR_FILTER 0
++#define CONFIG_PSNR_FILTER 0
++#define CONFIG_PULLUP_FILTER 0
++#define CONFIG_QP_FILTER 0
++#define CONFIG_RANDOM_FILTER 0
++#define CONFIG_READEIA608_FILTER 0
++#define CONFIG_READVITC_FILTER 0
++#define CONFIG_REALTIME_FILTER 0
++#define CONFIG_REMAP_FILTER 0
++#define CONFIG_REMOVEGRAIN_FILTER 0
++#define CONFIG_REMOVELOGO_FILTER 0
++#define CONFIG_REPEATFIELDS_FILTER 0
++#define CONFIG_REVERSE_FILTER 0
++#define CONFIG_RGBASHIFT_FILTER 0
++#define CONFIG_ROBERTS_FILTER 0
++#define CONFIG_ROBERTS_OPENCL_FILTER 0
++#define CONFIG_ROTATE_FILTER 0
++#define CONFIG_SAB_FILTER 0
++#define CONFIG_SCALE_FILTER 0
++#define CONFIG_SCALE_CUDA_FILTER 0
++#define CONFIG_SCALE_NPP_FILTER 0
++#define CONFIG_SCALE_QSV_FILTER 0
++#define CONFIG_SCALE_VAAPI_FILTER 0
++#define CONFIG_SCALE_VULKAN_FILTER 0
++#define CONFIG_SCALE2REF_FILTER 0
++#define CONFIG_SCDET_FILTER 0
++#define CONFIG_SCROLL_FILTER 0
++#define CONFIG_SELECT_FILTER 0
++#define CONFIG_SELECTIVECOLOR_FILTER 0
++#define CONFIG_SENDCMD_FILTER 0
++#define CONFIG_SEPARATEFIELDS_FILTER 0
++#define CONFIG_SETDAR_FILTER 0
++#define CONFIG_SETFIELD_FILTER 0
++#define CONFIG_SETPARAMS_FILTER 0
++#define CONFIG_SETPTS_FILTER 0
++#define CONFIG_SETRANGE_FILTER 0
++#define CONFIG_SETSAR_FILTER 0
++#define CONFIG_SETTB_FILTER 0
++#define CONFIG_SHARPNESS_VAAPI_FILTER 0
++#define CONFIG_SHEAR_FILTER 0
++#define CONFIG_SHOWINFO_FILTER 0
++#define CONFIG_SHOWPALETTE_FILTER 0
++#define CONFIG_SHUFFLEFRAMES_FILTER 0
++#define CONFIG_SHUFFLEPIXELS_FILTER 0
++#define CONFIG_SHUFFLEPLANES_FILTER 0
++#define CONFIG_SIDEDATA_FILTER 0
++#define CONFIG_SIGNALSTATS_FILTER 0
++#define CONFIG_SIGNATURE_FILTER 0
++#define CONFIG_SMARTBLUR_FILTER 0
++#define CONFIG_SOBEL_FILTER 0
++#define CONFIG_SOBEL_OPENCL_FILTER 0
++#define CONFIG_SPLIT_FILTER 0
++#define CONFIG_SPP_FILTER 0
++#define CONFIG_SR_FILTER 0
++#define CONFIG_SSIM_FILTER 0
++#define CONFIG_STEREO3D_FILTER 0
++#define CONFIG_STREAMSELECT_FILTER 0
++#define CONFIG_SUBTITLES_FILTER 0
++#define CONFIG_SUPER2XSAI_FILTER 0
++#define CONFIG_SWAPRECT_FILTER 0
++#define CONFIG_SWAPUV_FILTER 0
++#define CONFIG_TBLEND_FILTER 0
++#define CONFIG_TELECINE_FILTER 0
++#define CONFIG_THISTOGRAM_FILTER 0
++#define CONFIG_THRESHOLD_FILTER 0
++#define CONFIG_THUMBNAIL_FILTER 0
++#define CONFIG_THUMBNAIL_CUDA_FILTER 0
++#define CONFIG_TILE_FILTER 0
++#define CONFIG_TINTERLACE_FILTER 0
++#define CONFIG_TLUT2_FILTER 0
++#define CONFIG_TMEDIAN_FILTER 0
++#define CONFIG_TMIDEQUALIZER_FILTER 0
++#define CONFIG_TMIX_FILTER 0
++#define CONFIG_TONEMAP_FILTER 0
++#define CONFIG_TONEMAP_OPENCL_FILTER 0
++#define CONFIG_TONEMAP_VAAPI_FILTER 0
++#define CONFIG_TPAD_FILTER 0
++#define CONFIG_TRANSPOSE_FILTER 0
++#define CONFIG_TRANSPOSE_NPP_FILTER 0
++#define CONFIG_TRANSPOSE_OPENCL_FILTER 0
++#define CONFIG_TRANSPOSE_VAAPI_FILTER 0
++#define CONFIG_TRIM_FILTER 0
++#define CONFIG_UNPREMULTIPLY_FILTER 0
++#define CONFIG_UNSHARP_FILTER 0
++#define CONFIG_UNSHARP_OPENCL_FILTER 0
++#define CONFIG_UNTILE_FILTER 0
++#define CONFIG_USPP_FILTER 0
++#define CONFIG_V360_FILTER 0
++#define CONFIG_VAGUEDENOISER_FILTER 0
++#define CONFIG_VECTORSCOPE_FILTER 0
++#define CONFIG_VFLIP_FILTER 0
++#define CONFIG_VFRDET_FILTER 0
++#define CONFIG_VIBRANCE_FILTER 0
++#define CONFIG_VIDSTABDETECT_FILTER 0
++#define CONFIG_VIDSTABTRANSFORM_FILTER 0
++#define CONFIG_VIF_FILTER 0
++#define CONFIG_VIGNETTE_FILTER 0
++#define CONFIG_VMAFMOTION_FILTER 0
++#define CONFIG_VPP_QSV_FILTER 0
++#define CONFIG_VSTACK_FILTER 0
++#define CONFIG_W3FDIF_FILTER 0
++#define CONFIG_WAVEFORM_FILTER 0
++#define CONFIG_WEAVE_FILTER 0
++#define CONFIG_XBR_FILTER 0
++#define CONFIG_XFADE_FILTER 0
++#define CONFIG_XFADE_OPENCL_FILTER 0
++#define CONFIG_XMEDIAN_FILTER 0
++#define CONFIG_XSTACK_FILTER 0
++#define CONFIG_YADIF_FILTER 0
++#define CONFIG_YADIF_CUDA_FILTER 0
++#define CONFIG_YAEPBLUR_FILTER 0
++#define CONFIG_ZMQ_FILTER 0
++#define CONFIG_ZOOMPAN_FILTER 0
++#define CONFIG_ZSCALE_FILTER 0
++#define CONFIG_ALLRGB_FILTER 0
++#define CONFIG_ALLYUV_FILTER 0
++#define CONFIG_CELLAUTO_FILTER 0
++#define CONFIG_COLOR_FILTER 0
++#define CONFIG_COREIMAGESRC_FILTER 0
++#define CONFIG_FREI0R_SRC_FILTER 0
++#define CONFIG_GRADIENTS_FILTER 0
++#define CONFIG_HALDCLUTSRC_FILTER 0
++#define CONFIG_LIFE_FILTER 0
++#define CONFIG_MANDELBROT_FILTER 0
++#define CONFIG_MPTESTSRC_FILTER 0
++#define CONFIG_NULLSRC_FILTER 0
++#define CONFIG_OPENCLSRC_FILTER 0
++#define CONFIG_PAL75BARS_FILTER 0
++#define CONFIG_PAL100BARS_FILTER 0
++#define CONFIG_RGBTESTSRC_FILTER 0
++#define CONFIG_SIERPINSKI_FILTER 0
++#define CONFIG_SMPTEBARS_FILTER 0
++#define CONFIG_SMPTEHDBARS_FILTER 0
++#define CONFIG_TESTSRC_FILTER 0
++#define CONFIG_TESTSRC2_FILTER 0
++#define CONFIG_YUVTESTSRC_FILTER 0
++#define CONFIG_NULLSINK_FILTER 0
++#define CONFIG_ABITSCOPE_FILTER 0
++#define CONFIG_ADRAWGRAPH_FILTER 0
++#define CONFIG_AGRAPHMONITOR_FILTER 0
++#define CONFIG_AHISTOGRAM_FILTER 0
++#define CONFIG_APHASEMETER_FILTER 0
++#define CONFIG_AVECTORSCOPE_FILTER 0
++#define CONFIG_CONCAT_FILTER 0
++#define CONFIG_SHOWCQT_FILTER 0
++#define CONFIG_SHOWFREQS_FILTER 0
++#define CONFIG_SHOWSPATIAL_FILTER 0
++#define CONFIG_SHOWSPECTRUM_FILTER 0
++#define CONFIG_SHOWSPECTRUMPIC_FILTER 0
++#define CONFIG_SHOWVOLUME_FILTER 0
++#define CONFIG_SHOWWAVES_FILTER 0
++#define CONFIG_SHOWWAVESPIC_FILTER 0
++#define CONFIG_SPECTRUMSYNTH_FILTER 0
++#define CONFIG_AMOVIE_FILTER 0
++#define CONFIG_MOVIE_FILTER 0
++#define CONFIG_AFIFO_FILTER 0
++#define CONFIG_FIFO_FILTER 0
++#define CONFIG_AA_DEMUXER 0
++#define CONFIG_AAC_DEMUXER 1
++#define CONFIG_AAX_DEMUXER 0
++#define CONFIG_AC3_DEMUXER 0
++#define CONFIG_ACE_DEMUXER 0
++#define CONFIG_ACM_DEMUXER 0
++#define CONFIG_ACT_DEMUXER 0
++#define CONFIG_ADF_DEMUXER 0
++#define CONFIG_ADP_DEMUXER 0
++#define CONFIG_ADS_DEMUXER 0
++#define CONFIG_ADX_DEMUXER 0
++#define CONFIG_AEA_DEMUXER 0
++#define CONFIG_AFC_DEMUXER 0
++#define CONFIG_AIFF_DEMUXER 0
++#define CONFIG_AIX_DEMUXER 0
++#define CONFIG_ALP_DEMUXER 0
++#define CONFIG_AMR_DEMUXER 0
++#define CONFIG_AMRNB_DEMUXER 0
++#define CONFIG_AMRWB_DEMUXER 0
++#define CONFIG_ANM_DEMUXER 0
++#define CONFIG_APC_DEMUXER 0
++#define CONFIG_APE_DEMUXER 0
++#define CONFIG_APM_DEMUXER 0
++#define CONFIG_APNG_DEMUXER 0
++#define CONFIG_APTX_DEMUXER 0
++#define CONFIG_APTX_HD_DEMUXER 0
++#define CONFIG_AQTITLE_DEMUXER 0
++#define CONFIG_ARGO_ASF_DEMUXER 0
++#define CONFIG_ARGO_BRP_DEMUXER 0
++#define CONFIG_ASF_DEMUXER 0
++#define CONFIG_ASF_O_DEMUXER 0
++#define CONFIG_ASS_DEMUXER 0
++#define CONFIG_AST_DEMUXER 0
++#define CONFIG_AU_DEMUXER 0
++#define CONFIG_AV1_DEMUXER 0
++#define CONFIG_AVI_DEMUXER 0
++#define CONFIG_AVISYNTH_DEMUXER 0
++#define CONFIG_AVR_DEMUXER 0
++#define CONFIG_AVS_DEMUXER 0
++#define CONFIG_AVS2_DEMUXER 0
++#define CONFIG_AVS3_DEMUXER 0
++#define CONFIG_BETHSOFTVID_DEMUXER 0
++#define CONFIG_BFI_DEMUXER 0
++#define CONFIG_BINTEXT_DEMUXER 0
++#define CONFIG_BINK_DEMUXER 0
++#define CONFIG_BINKA_DEMUXER 0
++#define CONFIG_BIT_DEMUXER 0
++#define CONFIG_BMV_DEMUXER 0
++#define CONFIG_BFSTM_DEMUXER 0
++#define CONFIG_BRSTM_DEMUXER 0
++#define CONFIG_BOA_DEMUXER 0
++#define CONFIG_C93_DEMUXER 0
++#define CONFIG_CAF_DEMUXER 0
++#define CONFIG_CAVSVIDEO_DEMUXER 0
++#define CONFIG_CDG_DEMUXER 0
++#define CONFIG_CDXL_DEMUXER 0
++#define CONFIG_CINE_DEMUXER 0
++#define CONFIG_CODEC2_DEMUXER 0
++#define CONFIG_CODEC2RAW_DEMUXER 0
++#define CONFIG_CONCAT_DEMUXER 0
++#define CONFIG_DASH_DEMUXER 0
++#define CONFIG_DATA_DEMUXER 0
++#define CONFIG_DAUD_DEMUXER 0
++#define CONFIG_DCSTR_DEMUXER 0
++#define CONFIG_DERF_DEMUXER 0
++#define CONFIG_DFA_DEMUXER 0
++#define CONFIG_DHAV_DEMUXER 0
++#define CONFIG_DIRAC_DEMUXER 0
++#define CONFIG_DNXHD_DEMUXER 0
++#define CONFIG_DSF_DEMUXER 0
++#define CONFIG_DSICIN_DEMUXER 0
++#define CONFIG_DSS_DEMUXER 0
++#define CONFIG_DTS_DEMUXER 0
++#define CONFIG_DTSHD_DEMUXER 0
++#define CONFIG_DV_DEMUXER 0
++#define CONFIG_DVBSUB_DEMUXER 0
++#define CONFIG_DVBTXT_DEMUXER 0
++#define CONFIG_DXA_DEMUXER 0
++#define CONFIG_EA_DEMUXER 0
++#define CONFIG_EA_CDATA_DEMUXER 0
++#define CONFIG_EAC3_DEMUXER 0
++#define CONFIG_EPAF_DEMUXER 0
++#define CONFIG_FFMETADATA_DEMUXER 0
++#define CONFIG_FILMSTRIP_DEMUXER 0
++#define CONFIG_FITS_DEMUXER 0
++#define CONFIG_FLAC_DEMUXER 1
++#define CONFIG_FLIC_DEMUXER 0
++#define CONFIG_FLV_DEMUXER 0
++#define CONFIG_LIVE_FLV_DEMUXER 0
++#define CONFIG_FOURXM_DEMUXER 0
++#define CONFIG_FRM_DEMUXER 0
++#define CONFIG_FSB_DEMUXER 0
++#define CONFIG_FWSE_DEMUXER 0
++#define CONFIG_G722_DEMUXER 0
++#define CONFIG_G723_1_DEMUXER 0
++#define CONFIG_G726_DEMUXER 0
++#define CONFIG_G726LE_DEMUXER 0
++#define CONFIG_G729_DEMUXER 0
++#define CONFIG_GDV_DEMUXER 0
++#define CONFIG_GENH_DEMUXER 0
++#define CONFIG_GIF_DEMUXER 0
++#define CONFIG_GSM_DEMUXER 0
++#define CONFIG_GXF_DEMUXER 0
++#define CONFIG_H261_DEMUXER 0
++#define CONFIG_H263_DEMUXER 0
++#define CONFIG_H264_DEMUXER 0
++#define CONFIG_HCA_DEMUXER 0
++#define CONFIG_HCOM_DEMUXER 0
++#define CONFIG_HEVC_DEMUXER 0
++#define CONFIG_HLS_DEMUXER 0
++#define CONFIG_HNM_DEMUXER 0
++#define CONFIG_ICO_DEMUXER 0
++#define CONFIG_IDCIN_DEMUXER 0
++#define CONFIG_IDF_DEMUXER 0
++#define CONFIG_IFF_DEMUXER 0
++#define CONFIG_IFV_DEMUXER 0
++#define CONFIG_ILBC_DEMUXER 0
++#define CONFIG_IMAGE2_DEMUXER 0
++#define CONFIG_IMAGE2PIPE_DEMUXER 0
++#define CONFIG_IMAGE2_ALIAS_PIX_DEMUXER 0
++#define CONFIG_IMAGE2_BRENDER_PIX_DEMUXER 0
++#define CONFIG_INGENIENT_DEMUXER 0
++#define CONFIG_IPMOVIE_DEMUXER 0
++#define CONFIG_IPU_DEMUXER 0
++#define CONFIG_IRCAM_DEMUXER 0
++#define CONFIG_ISS_DEMUXER 0
++#define CONFIG_IV8_DEMUXER 0
++#define CONFIG_IVF_DEMUXER 0
++#define CONFIG_IVR_DEMUXER 0
++#define CONFIG_JACOSUB_DEMUXER 0
++#define CONFIG_JV_DEMUXER 0
++#define CONFIG_KUX_DEMUXER 0
++#define CONFIG_KVAG_DEMUXER 0
++#define CONFIG_LMLM4_DEMUXER 0
++#define CONFIG_LOAS_DEMUXER 0
++#define CONFIG_LUODAT_DEMUXER 0
++#define CONFIG_LRC_DEMUXER 0
++#define CONFIG_LVF_DEMUXER 0
++#define CONFIG_LXF_DEMUXER 0
++#define CONFIG_M4V_DEMUXER 0
++#define CONFIG_MCA_DEMUXER 0
++#define CONFIG_MCC_DEMUXER 0
++#define CONFIG_MATROSKA_DEMUXER 1
++#define CONFIG_MGSTS_DEMUXER 0
++#define CONFIG_MICRODVD_DEMUXER 0
++#define CONFIG_MJPEG_DEMUXER 0
++#define CONFIG_MJPEG_2000_DEMUXER 0
++#define CONFIG_MLP_DEMUXER 0
++#define CONFIG_MLV_DEMUXER 0
++#define CONFIG_MM_DEMUXER 0
++#define CONFIG_MMF_DEMUXER 0
++#define CONFIG_MODS_DEMUXER 0
++#define CONFIG_MOFLEX_DEMUXER 0
++#define CONFIG_MOV_DEMUXER 1
++#define CONFIG_MP3_DEMUXER 1
++#define CONFIG_MPC_DEMUXER 0
++#define CONFIG_MPC8_DEMUXER 0
++#define CONFIG_MPEGPS_DEMUXER 0
++#define CONFIG_MPEGTS_DEMUXER 0
++#define CONFIG_MPEGTSRAW_DEMUXER 0
++#define CONFIG_MPEGVIDEO_DEMUXER 0
++#define CONFIG_MPJPEG_DEMUXER 0
++#define CONFIG_MPL2_DEMUXER 0
++#define CONFIG_MPSUB_DEMUXER 0
++#define CONFIG_MSF_DEMUXER 0
++#define CONFIG_MSNWC_TCP_DEMUXER 0
++#define CONFIG_MSP_DEMUXER 0
++#define CONFIG_MTAF_DEMUXER 0
++#define CONFIG_MTV_DEMUXER 0
++#define CONFIG_MUSX_DEMUXER 0
++#define CONFIG_MV_DEMUXER 0
++#define CONFIG_MVI_DEMUXER 0
++#define CONFIG_MXF_DEMUXER 0
++#define CONFIG_MXG_DEMUXER 0
++#define CONFIG_NC_DEMUXER 0
++#define CONFIG_NISTSPHERE_DEMUXER 0
++#define CONFIG_NSP_DEMUXER 0
++#define CONFIG_NSV_DEMUXER 0
++#define CONFIG_NUT_DEMUXER 0
++#define CONFIG_NUV_DEMUXER 0
++#define CONFIG_OBU_DEMUXER 0
++#define CONFIG_OGG_DEMUXER 1
++#define CONFIG_OMA_DEMUXER 0
++#define CONFIG_PAF_DEMUXER 0
++#define CONFIG_PCM_ALAW_DEMUXER 0
++#define CONFIG_PCM_MULAW_DEMUXER 0
++#define CONFIG_PCM_VIDC_DEMUXER 0
++#define CONFIG_PCM_F64BE_DEMUXER 0
++#define CONFIG_PCM_F64LE_DEMUXER 0
++#define CONFIG_PCM_F32BE_DEMUXER 0
++#define CONFIG_PCM_F32LE_DEMUXER 0
++#define CONFIG_PCM_S32BE_DEMUXER 0
++#define CONFIG_PCM_S32LE_DEMUXER 0
++#define CONFIG_PCM_S24BE_DEMUXER 0
++#define CONFIG_PCM_S24LE_DEMUXER 0
++#define CONFIG_PCM_S16BE_DEMUXER 0
++#define CONFIG_PCM_S16LE_DEMUXER 0
++#define CONFIG_PCM_S8_DEMUXER 0
++#define CONFIG_PCM_U32BE_DEMUXER 0
++#define CONFIG_PCM_U32LE_DEMUXER 0
++#define CONFIG_PCM_U24BE_DEMUXER 0
++#define CONFIG_PCM_U24LE_DEMUXER 0
++#define CONFIG_PCM_U16BE_DEMUXER 0
++#define CONFIG_PCM_U16LE_DEMUXER 0
++#define CONFIG_PCM_U8_DEMUXER 0
++#define CONFIG_PJS_DEMUXER 0
++#define CONFIG_PMP_DEMUXER 0
++#define CONFIG_PP_BNK_DEMUXER 0
++#define CONFIG_PVA_DEMUXER 0
++#define CONFIG_PVF_DEMUXER 0
++#define CONFIG_QCP_DEMUXER 0
++#define CONFIG_R3D_DEMUXER 0
++#define CONFIG_RAWVIDEO_DEMUXER 0
++#define CONFIG_REALTEXT_DEMUXER 0
++#define CONFIG_REDSPARK_DEMUXER 0
++#define CONFIG_RL2_DEMUXER 0
++#define CONFIG_RM_DEMUXER 0
++#define CONFIG_ROQ_DEMUXER 0
++#define CONFIG_RPL_DEMUXER 0
++#define CONFIG_RSD_DEMUXER 0
++#define CONFIG_RSO_DEMUXER 0
++#define CONFIG_RTP_DEMUXER 0
++#define CONFIG_RTSP_DEMUXER 0
++#define CONFIG_S337M_DEMUXER 0
++#define CONFIG_SAMI_DEMUXER 0
++#define CONFIG_SAP_DEMUXER 0
++#define CONFIG_SBC_DEMUXER 0
++#define CONFIG_SBG_DEMUXER 0
++#define CONFIG_SCC_DEMUXER 0
++#define CONFIG_SDP_DEMUXER 0
++#define CONFIG_SDR2_DEMUXER 0
++#define CONFIG_SDS_DEMUXER 0
++#define CONFIG_SDX_DEMUXER 0
++#define CONFIG_SEGAFILM_DEMUXER 0
++#define CONFIG_SER_DEMUXER 0
++#define CONFIG_SGA_DEMUXER 0
++#define CONFIG_SHORTEN_DEMUXER 0
++#define CONFIG_SIFF_DEMUXER 0
++#define CONFIG_SIMBIOSIS_IMX_DEMUXER 0
++#define CONFIG_SLN_DEMUXER 0
++#define CONFIG_SMACKER_DEMUXER 0
++#define CONFIG_SMJPEG_DEMUXER 0
++#define CONFIG_SMUSH_DEMUXER 0
++#define CONFIG_SOL_DEMUXER 0
++#define CONFIG_SOX_DEMUXER 0
++#define CONFIG_SPDIF_DEMUXER 0
++#define CONFIG_SRT_DEMUXER 0
++#define CONFIG_STR_DEMUXER 0
++#define CONFIG_STL_DEMUXER 0
++#define CONFIG_SUBVIEWER1_DEMUXER 0
++#define CONFIG_SUBVIEWER_DEMUXER 0
++#define CONFIG_SUP_DEMUXER 0
++#define CONFIG_SVAG_DEMUXER 0
++#define CONFIG_SVS_DEMUXER 0
++#define CONFIG_SWF_DEMUXER 0
++#define CONFIG_TAK_DEMUXER 0
++#define CONFIG_TEDCAPTIONS_DEMUXER 0
++#define CONFIG_THP_DEMUXER 0
++#define CONFIG_THREEDOSTR_DEMUXER 0
++#define CONFIG_TIERTEXSEQ_DEMUXER 0
++#define CONFIG_TMV_DEMUXER 0
++#define CONFIG_TRUEHD_DEMUXER 0
++#define CONFIG_TTA_DEMUXER 0
++#define CONFIG_TXD_DEMUXER 0
++#define CONFIG_TTY_DEMUXER 0
++#define CONFIG_TY_DEMUXER 0
++#define CONFIG_V210_DEMUXER 0
++#define CONFIG_V210X_DEMUXER 0
++#define CONFIG_VAG_DEMUXER 0
++#define CONFIG_VC1_DEMUXER 0
++#define CONFIG_VC1T_DEMUXER 0
++#define CONFIG_VIVIDAS_DEMUXER 0
++#define CONFIG_VIVO_DEMUXER 0
++#define CONFIG_VMD_DEMUXER 0
++#define CONFIG_VOBSUB_DEMUXER 0
++#define CONFIG_VOC_DEMUXER 0
++#define CONFIG_VPK_DEMUXER 0
++#define CONFIG_VPLAYER_DEMUXER 0
++#define CONFIG_VQF_DEMUXER 0
++#define CONFIG_W64_DEMUXER 0
++#define CONFIG_WAV_DEMUXER 1
++#define CONFIG_WC3_DEMUXER 0
++#define CONFIG_WEBM_DASH_MANIFEST_DEMUXER 0
++#define CONFIG_WEBVTT_DEMUXER 0
++#define CONFIG_WSAUD_DEMUXER 0
++#define CONFIG_WSD_DEMUXER 0
++#define CONFIG_WSVQA_DEMUXER 0
++#define CONFIG_WTV_DEMUXER 0
++#define CONFIG_WVE_DEMUXER 0
++#define CONFIG_WV_DEMUXER 0
++#define CONFIG_XA_DEMUXER 0
++#define CONFIG_XBIN_DEMUXER 0
++#define CONFIG_XMV_DEMUXER 0
++#define CONFIG_XVAG_DEMUXER 0
++#define CONFIG_XWMA_DEMUXER 0
++#define CONFIG_YOP_DEMUXER 0
++#define CONFIG_YUV4MPEGPIPE_DEMUXER 0
++#define CONFIG_IMAGE_BMP_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_CRI_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_DDS_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_DPX_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_EXR_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_GIF_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_J2K_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_JPEG_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_JPEGLS_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_PAM_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_PBM_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_PCX_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_PGMYUV_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_PGM_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_PGX_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_PHOTOCD_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_PICTOR_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_PNG_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_PPM_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_PSD_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_QDRAW_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_SGI_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_SVG_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_SUNRAST_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_TIFF_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_WEBP_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_XBM_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_XPM_PIPE_DEMUXER 0
++#define CONFIG_IMAGE_XWD_PIPE_DEMUXER 0
++#define CONFIG_LIBGME_DEMUXER 0
++#define CONFIG_LIBMODPLUG_DEMUXER 0
++#define CONFIG_LIBOPENMPT_DEMUXER 0
++#define CONFIG_VAPOURSYNTH_DEMUXER 0
++#define CONFIG_A64_MUXER 0
++#define CONFIG_AC3_MUXER 0
++#define CONFIG_ADTS_MUXER 0
++#define CONFIG_ADX_MUXER 0
++#define CONFIG_AIFF_MUXER 0
++#define CONFIG_ALP_MUXER 0
++#define CONFIG_AMR_MUXER 0
++#define CONFIG_AMV_MUXER 0
++#define CONFIG_APM_MUXER 0
++#define CONFIG_APNG_MUXER 0
++#define CONFIG_APTX_MUXER 0
++#define CONFIG_APTX_HD_MUXER 0
++#define CONFIG_ARGO_ASF_MUXER 0
++#define CONFIG_ASF_MUXER 0
++#define CONFIG_ASS_MUXER 0
++#define CONFIG_AST_MUXER 0
++#define CONFIG_ASF_STREAM_MUXER 0
++#define CONFIG_AU_MUXER 0
++#define CONFIG_AVI_MUXER 0
++#define CONFIG_AVM2_MUXER 0
++#define CONFIG_AVS2_MUXER 0
++#define CONFIG_BIT_MUXER 0
++#define CONFIG_CAF_MUXER 0
++#define CONFIG_CAVSVIDEO_MUXER 0
++#define CONFIG_CODEC2_MUXER 0
++#define CONFIG_CODEC2RAW_MUXER 0
++#define CONFIG_CRC_MUXER 0
++#define CONFIG_DASH_MUXER 0
++#define CONFIG_DATA_MUXER 0
++#define CONFIG_DAUD_MUXER 0
++#define CONFIG_DIRAC_MUXER 0
++#define CONFIG_DNXHD_MUXER 0
++#define CONFIG_DTS_MUXER 0
++#define CONFIG_DV_MUXER 0
++#define CONFIG_EAC3_MUXER 0
++#define CONFIG_F4V_MUXER 0
++#define CONFIG_FFMETADATA_MUXER 0
++#define CONFIG_FIFO_MUXER 0
++#define CONFIG_FIFO_TEST_MUXER 0
++#define CONFIG_FILMSTRIP_MUXER 0
++#define CONFIG_FITS_MUXER 0
++#define CONFIG_FLAC_MUXER 0
++#define CONFIG_FLV_MUXER 0
++#define CONFIG_FRAMECRC_MUXER 0
++#define CONFIG_FRAMEHASH_MUXER 0
++#define CONFIG_FRAMEMD5_MUXER 0
++#define CONFIG_G722_MUXER 0
++#define CONFIG_G723_1_MUXER 0
++#define CONFIG_G726_MUXER 0
++#define CONFIG_G726LE_MUXER 0
++#define CONFIG_GIF_MUXER 0
++#define CONFIG_GSM_MUXER 0
++#define CONFIG_GXF_MUXER 0
++#define CONFIG_H261_MUXER 0
++#define CONFIG_H263_MUXER 0
++#define CONFIG_H264_MUXER 0
++#define CONFIG_HASH_MUXER 0
++#define CONFIG_HDS_MUXER 0
++#define CONFIG_HEVC_MUXER 0
++#define CONFIG_HLS_MUXER 0
++#define CONFIG_ICO_MUXER 0
++#define CONFIG_ILBC_MUXER 0
++#define CONFIG_IMAGE2_MUXER 0
++#define CONFIG_IMAGE2PIPE_MUXER 0
++#define CONFIG_IPOD_MUXER 0
++#define CONFIG_IRCAM_MUXER 0
++#define CONFIG_ISMV_MUXER 0
++#define CONFIG_IVF_MUXER 0
++#define CONFIG_JACOSUB_MUXER 0
++#define CONFIG_KVAG_MUXER 0
++#define CONFIG_LATM_MUXER 0
++#define CONFIG_LRC_MUXER 0
++#define CONFIG_M4V_MUXER 0
++#define CONFIG_MD5_MUXER 0
++#define CONFIG_MATROSKA_MUXER 0
++#define CONFIG_MATROSKA_AUDIO_MUXER 0
++#define CONFIG_MICRODVD_MUXER 0
++#define CONFIG_MJPEG_MUXER 0
++#define CONFIG_MLP_MUXER 0
++#define CONFIG_MMF_MUXER 0
++#define CONFIG_MOV_MUXER 0
++#define CONFIG_MP2_MUXER 0
++#define CONFIG_MP3_MUXER 0
++#define CONFIG_MP4_MUXER 0
++#define CONFIG_MPEG1SYSTEM_MUXER 0
++#define CONFIG_MPEG1VCD_MUXER 0
++#define CONFIG_MPEG1VIDEO_MUXER 0
++#define CONFIG_MPEG2DVD_MUXER 0
++#define CONFIG_MPEG2SVCD_MUXER 0
++#define CONFIG_MPEG2VIDEO_MUXER 0
++#define CONFIG_MPEG2VOB_MUXER 0
++#define CONFIG_MPEGTS_MUXER 0
++#define CONFIG_MPJPEG_MUXER 0
++#define CONFIG_MXF_MUXER 0
++#define CONFIG_MXF_D10_MUXER 0
++#define CONFIG_MXF_OPATOM_MUXER 0
++#define CONFIG_NULL_MUXER 0
++#define CONFIG_NUT_MUXER 0
++#define CONFIG_OGA_MUXER 0
++#define CONFIG_OGG_MUXER 0
++#define CONFIG_OGV_MUXER 0
++#define CONFIG_OMA_MUXER 0
++#define CONFIG_OPUS_MUXER 0
++#define CONFIG_PCM_ALAW_MUXER 0
++#define CONFIG_PCM_MULAW_MUXER 0
++#define CONFIG_PCM_VIDC_MUXER 0
++#define CONFIG_PCM_F64BE_MUXER 0
++#define CONFIG_PCM_F64LE_MUXER 0
++#define CONFIG_PCM_F32BE_MUXER 0
++#define CONFIG_PCM_F32LE_MUXER 0
++#define CONFIG_PCM_S32BE_MUXER 0
++#define CONFIG_PCM_S32LE_MUXER 0
++#define CONFIG_PCM_S24BE_MUXER 0
++#define CONFIG_PCM_S24LE_MUXER 0
++#define CONFIG_PCM_S16BE_MUXER 0
++#define CONFIG_PCM_S16LE_MUXER 0
++#define CONFIG_PCM_S8_MUXER 0
++#define CONFIG_PCM_U32BE_MUXER 0
++#define CONFIG_PCM_U32LE_MUXER 0
++#define CONFIG_PCM_U24BE_MUXER 0
++#define CONFIG_PCM_U24LE_MUXER 0
++#define CONFIG_PCM_U16BE_MUXER 0
++#define CONFIG_PCM_U16LE_MUXER 0
++#define CONFIG_PCM_U8_MUXER 0
++#define CONFIG_PSP_MUXER 0
++#define CONFIG_RAWVIDEO_MUXER 0
++#define CONFIG_RM_MUXER 0
++#define CONFIG_ROQ_MUXER 0
++#define CONFIG_RSO_MUXER 0
++#define CONFIG_RTP_MUXER 0
++#define CONFIG_RTP_MPEGTS_MUXER 0
++#define CONFIG_RTSP_MUXER 0
++#define CONFIG_SAP_MUXER 0
++#define CONFIG_SBC_MUXER 0
++#define CONFIG_SCC_MUXER 0
++#define CONFIG_SEGAFILM_MUXER 0
++#define CONFIG_SEGMENT_MUXER 0
++#define CONFIG_STREAM_SEGMENT_MUXER 0
++#define CONFIG_SINGLEJPEG_MUXER 0
++#define CONFIG_SMJPEG_MUXER 0
++#define CONFIG_SMOOTHSTREAMING_MUXER 0
++#define CONFIG_SOX_MUXER 0
++#define CONFIG_SPX_MUXER 0
++#define CONFIG_SPDIF_MUXER 0
++#define CONFIG_SRT_MUXER 0
++#define CONFIG_STREAMHASH_MUXER 0
++#define CONFIG_SUP_MUXER 0
++#define CONFIG_SWF_MUXER 0
++#define CONFIG_TEE_MUXER 0
++#define CONFIG_TG2_MUXER 0
++#define CONFIG_TGP_MUXER 0
++#define CONFIG_MKVTIMESTAMP_V2_MUXER 0
++#define CONFIG_TRUEHD_MUXER 0
++#define CONFIG_TTA_MUXER 0
++#define CONFIG_TTML_MUXER 0
++#define CONFIG_UNCODEDFRAMECRC_MUXER 0
++#define CONFIG_VC1_MUXER 0
++#define CONFIG_VC1T_MUXER 0
++#define CONFIG_VOC_MUXER 0
++#define CONFIG_W64_MUXER 0
++#define CONFIG_WAV_MUXER 0
++#define CONFIG_WEBM_MUXER 0
++#define CONFIG_WEBM_DASH_MANIFEST_MUXER 0
++#define CONFIG_WEBM_CHUNK_MUXER 0
++#define CONFIG_WEBP_MUXER 0
++#define CONFIG_WEBVTT_MUXER 0
++#define CONFIG_WTV_MUXER 0
++#define CONFIG_WV_MUXER 0
++#define CONFIG_YUV4MPEGPIPE_MUXER 0
++#define CONFIG_CHROMAPRINT_MUXER 0
++#define CONFIG_ASYNC_PROTOCOL 0
++#define CONFIG_BLURAY_PROTOCOL 0
++#define CONFIG_CACHE_PROTOCOL 0
++#define CONFIG_CONCAT_PROTOCOL 0
++#define CONFIG_CRYPTO_PROTOCOL 0
++#define CONFIG_DATA_PROTOCOL 0
++#define CONFIG_FFRTMPCRYPT_PROTOCOL 0
++#define CONFIG_FFRTMPHTTP_PROTOCOL 0
++#define CONFIG_FILE_PROTOCOL 0
++#define CONFIG_FTP_PROTOCOL 0
++#define CONFIG_GOPHER_PROTOCOL 0
++#define CONFIG_HLS_PROTOCOL 0
++#define CONFIG_HTTP_PROTOCOL 0
++#define CONFIG_HTTPPROXY_PROTOCOL 0
++#define CONFIG_HTTPS_PROTOCOL 0
++#define CONFIG_ICECAST_PROTOCOL 0
++#define CONFIG_MMSH_PROTOCOL 0
++#define CONFIG_MMST_PROTOCOL 0
++#define CONFIG_MD5_PROTOCOL 0
++#define CONFIG_PIPE_PROTOCOL 0
++#define CONFIG_PROMPEG_PROTOCOL 0
++#define CONFIG_RTMP_PROTOCOL 0
++#define CONFIG_RTMPE_PROTOCOL 0
++#define CONFIG_RTMPS_PROTOCOL 0
++#define CONFIG_RTMPT_PROTOCOL 0
++#define CONFIG_RTMPTE_PROTOCOL 0
++#define CONFIG_RTMPTS_PROTOCOL 0
++#define CONFIG_RTP_PROTOCOL 0
++#define CONFIG_SCTP_PROTOCOL 0
++#define CONFIG_SRTP_PROTOCOL 0
++#define CONFIG_SUBFILE_PROTOCOL 0
++#define CONFIG_TEE_PROTOCOL 0
++#define CONFIG_TCP_PROTOCOL 0
++#define CONFIG_TLS_PROTOCOL 0
++#define CONFIG_UDP_PROTOCOL 0
++#define CONFIG_UDPLITE_PROTOCOL 0
++#define CONFIG_UNIX_PROTOCOL 0
++#define CONFIG_LIBAMQP_PROTOCOL 0
++#define CONFIG_LIBRTMP_PROTOCOL 0
++#define CONFIG_LIBRTMPE_PROTOCOL 0
++#define CONFIG_LIBRTMPS_PROTOCOL 0
++#define CONFIG_LIBRTMPT_PROTOCOL 0
++#define CONFIG_LIBRTMPTE_PROTOCOL 0
++#define CONFIG_LIBSRT_PROTOCOL 0
++#define CONFIG_LIBSSH_PROTOCOL 0
++#define CONFIG_LIBSMBCLIENT_PROTOCOL 0
++#define CONFIG_LIBZMQ_PROTOCOL 0
++#endif /* FFMPEG_CONFIG_H */
diff --git a/devel/electron17/files/patch-third__party_ffmpeg_libavcodec_x86_cabac.h b/devel/electron17/files/patch-third__party_ffmpeg_libavcodec_x86_cabac.h
new file mode 100644
index 000000000000..2bfc9d3e601e
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_ffmpeg_libavcodec_x86_cabac.h
@@ -0,0 +1,12 @@
+--- third_party/ffmpeg/libavcodec/x86/cabac.h.orig 2022-05-11 07:03:53 UTC
++++ third_party/ffmpeg/libavcodec/x86/cabac.h
+@@ -31,7 +31,8 @@
+
+ #if (defined(__i386) && defined(__clang__) && (__clang_major__<2 || (__clang_major__==2 && __clang_minor__<10)))\
+ || ( !defined(__clang__) && defined(__llvm__) && __GNUC__==4 && __GNUC_MINOR__==2 && __GNUC_PATCHLEVEL__<=1)\
+- || (defined(__INTEL_COMPILER) && defined(_MSC_VER))
++ || (defined(__INTEL_COMPILER) && defined(_MSC_VER)) \
++ || ((defined(__FreeBSD__) || defined(__OpenBSD__)) && defined(__i386))
+ # define BROKEN_COMPILER 1
+ #else
+ # define BROKEN_COMPILER 0
diff --git a/devel/electron17/files/patch-third__party_ffmpeg_libavutil_cpu.c b/devel/electron17/files/patch-third__party_ffmpeg_libavutil_cpu.c
new file mode 100644
index 000000000000..b0ec9b3b8169
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_ffmpeg_libavutil_cpu.c
@@ -0,0 +1,14 @@
+--- third_party/ffmpeg/libavutil/cpu.c.orig 2022-05-11 07:17:29 UTC
++++ third_party/ffmpeg/libavutil/cpu.c
+@@ -36,10 +36,7 @@
+ #if HAVE_GETPROCESSAFFINITYMASK || HAVE_WINRT
+ #include <windows.h>
+ #endif
+-#if HAVE_SYSCTL
+-#if HAVE_SYS_PARAM_H
+-#include <sys/param.h>
+-#endif
++#if HAVE_SYSCTL && !defined(__OpenBSD__)
+ #include <sys/types.h>
+ #include <sys/sysctl.h>
+ #endif
diff --git a/devel/electron17/files/patch-third__party_ffmpeg_libavutil_mem.c b/devel/electron17/files/patch-third__party_ffmpeg_libavutil_mem.c
new file mode 100644
index 000000000000..d56b95005733
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_ffmpeg_libavutil_mem.c
@@ -0,0 +1,12 @@
+--- third_party/ffmpeg/libavutil/mem.c.orig 2021-10-08 06:29:12 UTC
++++ third_party/ffmpeg/libavutil/mem.c
+@@ -33,9 +33,6 @@
+ #include <stdlib.h>
+ #include <stdatomic.h>
+ #include <string.h>
+-#if HAVE_MALLOC_H
+-#include <malloc.h>
+-#endif
+
+ #include "avutil.h"
+ #include "common.h"
diff --git a/devel/electron17/files/patch-third__party_ffmpeg_libavutil_random__seed.c b/devel/electron17/files/patch-third__party_ffmpeg_libavutil_random__seed.c
new file mode 100644
index 000000000000..788e66f8e00f
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_ffmpeg_libavutil_random__seed.c
@@ -0,0 +1,14 @@
+--- third_party/ffmpeg/libavutil/random_seed.c.orig 2022-05-11 07:03:54 UTC
++++ third_party/ffmpeg/libavutil/random_seed.c
+@@ -30,6 +30,11 @@
+ #include <windows.h>
+ #include <bcrypt.h>
+ #endif
++#if HAVE_ARC4RANDOM
++#undef __BSD_VISIBLE
++#define __BSD_VISIBLE 1
++#include <stdlib.h>
++#endif
+ #include <fcntl.h>
+ #include <math.h>
+ #include <time.h>
diff --git a/devel/electron17/files/patch-third__party_fontconfig_include_config.h b/devel/electron17/files/patch-third__party_fontconfig_include_config.h
new file mode 100644
index 000000000000..6bf264fc8d61
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_fontconfig_include_config.h
@@ -0,0 +1,89 @@
+--- third_party/fontconfig/include/config.h.orig 2022-05-11 07:01:48 UTC
++++ third_party/fontconfig/include/config.h
+@@ -18,13 +18,13 @@
+ #define ENABLE_NLS 1
+
+ /* Additional font directories */
+-#define FC_ADD_FONTS "yes"
++#define FC_ADD_FONTS "/usr/local/share/fonts"
+
+ /* Architecture prefix to use for cache file names */
+ /* #undef FC_ARCHITECTURE */
+
+ /* System font directory */
+-#define FC_DEFAULT_FONTS "/usr/share/fonts"
++#define FC_DEFAULT_FONTS "/usr/X11R6/lib/X11/fonts"
+
+ /* The type of len parameter of the gperf hash/lookup function */
+ #define FC_GPERF_SIZE_T size_t
+@@ -100,7 +100,7 @@
+ #define HAVE_GETPAGESIZE 1
+
+ /* Define to 1 if you have the `getprogname' function. */
+-/* #undef HAVE_GETPROGNAME */
++#define HAVE_GETPROGNAME 1
+
+ /* Define if the GNU gettext() function is already present or preinstalled. */
+ #define HAVE_GETTEXT 1
+@@ -142,7 +142,7 @@
+ /* #undef HAVE_NDIR_H */
+
+ /* Define to 1 if you have the 'posix_fadvise' function. */
+-#define HAVE_POSIX_FADVISE 1
++#define HAVE_POSIX_FADVISE 0
+
+ /* Have POSIX threads */
+ #define HAVE_PTHREAD 1
+@@ -157,11 +157,14 @@
+ #define HAVE_RANDOM 1
+
+ /* Define to 1 if you have the `random_r' function. */
+-#define HAVE_RANDOM_R 1
++/* #undef HAVE_RANDOM_R */
+
+ /* Define to 1 if you have the `rand_r' function. */
+ #define HAVE_RAND_R 1
+
++/* Define to 1 if you have the `arc4_random' function. */
++#define HAVE_ARC4RANDOM 1
++
+ /* Define to 1 if you have the `readlink' function. */
+ #define HAVE_READLINK 1
+
+@@ -199,7 +202,7 @@
+ #define HAVE_STRUCT_STATFS_F_FLAGS 1
+
+ /* Define to 1 if `f_fstypename' is a member of `struct statfs'. */
+-/* #undef HAVE_STRUCT_STATFS_F_FSTYPENAME */
++#define HAVE_STRUCT_STATFS_F_FSTYPENAME 1
+
+ /* Define to 1 if `f_basetype' is a member of `struct statvfs'. */
+ /* #undef HAVE_STRUCT_STATVFS_F_BASETYPE */
+@@ -225,7 +228,7 @@
+ #define HAVE_SYS_PARAM_H 1
+
+ /* Define to 1 if you have the <sys/statfs.h> header file. */
+-#define HAVE_SYS_STATFS_H 1
++/* #undef HAVE_SYS_STATFS_H */
+
+ /* Define to 1 if you have the <sys/statvfs.h> header file. */
+ #define HAVE_SYS_STATVFS_H 1
+@@ -237,7 +240,7 @@
+ #define HAVE_SYS_TYPES_H 1
+
+ /* Define to 1 if you have the <sys/vfs.h> header file. */
+-#define HAVE_SYS_VFS_H 1
++/* #undef HAVE_SYS_VFS_H */
+
+ /* Define to 1 if you have the <unistd.h> header file. */
+ #define HAVE_UNISTD_H 1
+@@ -257,7 +260,8 @@
+ /* Define to 1 if you have the `_mktemp_s' function. */
+ /* #undef HAVE__MKTEMP_S */
+
+-/* Define to the sub-directory where libtool stores uninstalled libraries. */
++/* Define to the sub-directory in which libtool stores uninstalled libraries.
++ */
+ #define LT_OBJDIR ".libs/"
+
+ /* Name of package */
diff --git a/devel/electron17/files/patch-third__party_fontconfig_src_src_fccompat.c b/devel/electron17/files/patch-third__party_fontconfig_src_src_fccompat.c
new file mode 100644
index 000000000000..86e741f355d2
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_fontconfig_src_src_fccompat.c
@@ -0,0 +1,13 @@
+--- third_party/fontconfig/src/src/fccompat.c.orig 2022-05-11 07:03:24 UTC
++++ third_party/fontconfig/src/src/fccompat.c
+@@ -169,7 +169,9 @@ FcRandom(void)
+ {
+ int32_t result;
+
+-#if HAVE_RANDOM_R
++#if HAVE_ARC4RANDOM
++ result = arc4random() & 0x7fffffff;
++#elif HAVE_RANDOM_R
+ static struct random_data fcrandbuf;
+ static char statebuf[256];
+ static FcBool initialized = FcFalse;
diff --git a/devel/electron17/files/patch-third__party_glfw_src_src_egl__context.c b/devel/electron17/files/patch-third__party_glfw_src_src_egl__context.c
new file mode 100644
index 000000000000..4513eb2a9ba1
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_glfw_src_src_egl__context.c
@@ -0,0 +1,11 @@
+--- third_party/glfw/src/src/egl_context.c.orig 2022-05-11 07:03:38 UTC
++++ third_party/glfw/src/src/egl_context.c
+@@ -712,7 +712,7 @@ GLFWbool _glfwCreateContextEGL(_GLFWwindow* window,
+ #elif defined(_GLFW_WIN32)
+ #elif defined(_GLFW_COCOA)
+ #else
+- "libGL.so.1",
++ "libGL.so",
+ #endif
+ NULL
+ };
diff --git a/devel/electron17/files/patch-third__party_leveldatabase_env__chromium.cc b/devel/electron17/files/patch-third__party_leveldatabase_env__chromium.cc
new file mode 100644
index 000000000000..5815960bf83b
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_leveldatabase_env__chromium.cc
@@ -0,0 +1,12 @@
+--- third_party/leveldatabase/env_chromium.cc.orig 2022-05-11 07:17:05 UTC
++++ third_party/leveldatabase/env_chromium.cc
+@@ -316,7 +316,8 @@ ChromiumWritableFile::ChromiumWritableFile(const std::
+
+ Status ChromiumWritableFile::SyncParent() {
+ TRACE_EVENT0("leveldb", "SyncParent");
+-#if defined(OS_POSIX) || defined(OS_FUCHSIA)
++// pledge violation (directory passed as fd)
++#if (defined(OS_POSIX) || defined(OS_FUCHSIA)) && !defined(OS_OPENBSD)
+ FilePath path = FilePath::FromUTF8Unsafe(parent_dir_);
+ FileErrorOr<base::File> result = filesystem_->OpenFile(
+ path, base::File::FLAG_OPEN | base::File::FLAG_READ);
diff --git a/devel/electron17/files/patch-third__party_libXNVCtrl_NVCtrl.c b/devel/electron17/files/patch-third__party_libXNVCtrl_NVCtrl.c
new file mode 100644
index 000000000000..e65e639140f5
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_libXNVCtrl_NVCtrl.c
@@ -0,0 +1,25 @@
+--- third_party/libXNVCtrl/NVCtrl.c.orig 2021-01-07 00:37:22 UTC
++++ third_party/libXNVCtrl/NVCtrl.c
+@@ -27,10 +27,6 @@
+ * libXNVCtrl library properly protects the Display connection.
+ */
+
+-#if !defined(XTHREADS)
+-#define XTHREADS
+-#endif /* XTHREADS */
+-
+ #define NEED_EVENTS
+ #define NEED_REPLIES
+ #include <stdint.h>
+@@ -39,6 +35,11 @@
+ #include <X11/Xutil.h>
+ #include <X11/extensions/Xext.h>
+ #include <X11/extensions/extutil.h>
++
++#if !defined(XTHREADS)
++#define XTHREADS
++#endif /* XTHREADS */
++
+ #include "NVCtrlLib.h"
+ #include "nv_control.h"
+
diff --git a/devel/electron17/files/patch-third__party_libphonenumber_dist_cpp_src_phonenumbers_base_memory_singleton.h b/devel/electron17/files/patch-third__party_libphonenumber_dist_cpp_src_phonenumbers_base_memory_singleton.h
new file mode 100644
index 000000000000..5e5d88b4a93f
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_libphonenumber_dist_cpp_src_phonenumbers_base_memory_singleton.h
@@ -0,0 +1,12 @@
+--- third_party/libphonenumber/dist/cpp/src/phonenumbers/base/memory/singleton.h.orig 2022-05-11 07:04:37 UTC
++++ third_party/libphonenumber/dist/cpp/src/phonenumbers/base/memory/singleton.h
+@@ -56,7 +56,8 @@ template <class T> boost::once_flag Singleton<T>::flag
+ #include "phonenumbers/base/logging.h"
+ #include "phonenumbers/base/thread_checker.h"
+
+-#if !defined(__linux__) && !defined(__APPLE__)
++#if !defined(__linux__) && !defined(__APPLE__) && !defined(__OpenBSD__) && \
++ !defined(__FreeBSD__)
+
+ namespace i18n {
+ namespace phonenumbers {
diff --git a/devel/electron17/files/patch-third__party_libphonenumber_dist_cpp_src_phonenumbers_base_synchronization_lock.h b/devel/electron17/files/patch-third__party_libphonenumber_dist_cpp_src_phonenumbers_base_synchronization_lock.h
new file mode 100644
index 000000000000..e78a719afcc3
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_libphonenumber_dist_cpp_src_phonenumbers_base_synchronization_lock.h
@@ -0,0 +1,12 @@
+--- third_party/libphonenumber/dist/cpp/src/phonenumbers/base/synchronization/lock.h.orig 2022-05-11 07:04:37 UTC
++++ third_party/libphonenumber/dist/cpp/src/phonenumbers/base/synchronization/lock.h
+@@ -63,7 +63,8 @@ class Lock { (private)
+ // Dummy lock implementation on non-POSIX platforms. If you are running on a
+ // different platform and care about thread-safety, please compile with
+ // -DI18N_PHONENUMBERS_USE_BOOST.
+-#elif !defined(__linux__) && !defined(__APPLE__)
++#elif !defined(__linux__) && !defined(__APPLE__) && !defined(__OpenBSD__) && \
++ !defined(__FreeBSD__)
+
+ namespace i18n {
+ namespace phonenumbers {
diff --git a/devel/electron17/files/patch-third__party_libphonenumber_dist_cpp_src_phonenumbers_base_thread__checker.h b/devel/electron17/files/patch-third__party_libphonenumber_dist_cpp_src_phonenumbers_base_thread__checker.h
new file mode 100644
index 000000000000..6d20c070637f
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_libphonenumber_dist_cpp_src_phonenumbers_base_thread__checker.h
@@ -0,0 +1,22 @@
+--- third_party/libphonenumber/dist/cpp/src/phonenumbers/base/thread_checker.h.orig 2022-05-11 07:04:37 UTC
++++ third_party/libphonenumber/dist/cpp/src/phonenumbers/base/thread_checker.h
+@@ -23,7 +23,8 @@
+ // user of the library know that it can't be used in a thread-safe manner when
+ // it is not depending on Boost.
+ #if !defined(__linux__) && !defined(__APPLE__) && \
+- !defined(I18N_PHONENUMBERS_NO_THREAD_SAFETY)
++ !defined(I18N_PHONENUMBERS_NO_THREAD_SAFETY) && !defined(__OpenBSD__) && \
++ !defined(__FreeBSD__)
+ #error Building without Boost, please provide \
+ -DI18N_PHONENUMBERS_NO_THREAD_SAFETY
+ #endif
+@@ -31,7 +32,8 @@
+ #endif
+
+ #if !defined(NDEBUG) && !defined(I18N_PHONENUMBERS_USE_BOOST) && \
+- (defined(__linux__) || defined(__apple__))
++ (defined(__linux__) || defined(__apple__) || defined(__OpenBSD__) || \
++ defined(__FreeBSD__))
+
+ #include <pthread.h>
+
diff --git a/devel/electron17/files/patch-third__party_libsync_src_include_sync_sync.h b/devel/electron17/files/patch-third__party_libsync_src_include_sync_sync.h
new file mode 100644
index 000000000000..688e9fb85f42
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_libsync_src_include_sync_sync.h
@@ -0,0 +1,12 @@
+--- third_party/libsync/src/include/sync/sync.h.orig 2022-05-11 07:04:22 UTC
++++ third_party/libsync/src/include/sync/sync.h
+@@ -22,7 +22,9 @@
+ #include <sys/cdefs.h>
+ #include <stdint.h>
+
++#if !defined(__OpenBSD__) && !defined(__FreeBSD__)
+ #include <linux/types.h>
++#endif
+
+ __BEGIN_DECLS
+
diff --git a/devel/electron17/files/patch-third__party_libsync_src_sync.c b/devel/electron17/files/patch-third__party_libsync_src_sync.c
new file mode 100644
index 000000000000..3d2bb5c1ad3e
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_libsync_src_sync.c
@@ -0,0 +1,25 @@
+--- third_party/libsync/src/sync.c.orig 2022-05-11 07:04:22 UTC
++++ third_party/libsync/src/sync.c
+@@ -17,7 +17,9 @@
+ */
+
+ #include <fcntl.h>
++#if !defined(__OpenBSD__)
+ #include <malloc.h>
++#endif
+ #include <stdint.h>
+ #include <string.h>
+ #include <errno.h>
+@@ -29,6 +31,12 @@
+
+ #include <sync/sync.h>
+
++#if defined(__OpenBSD__) || defined(__FreeBSD__)
++typedef __uint8_t __u8;
++typedef __uint32_t __u32;
++typedef __int32_t __s32;
++#define ETIME ETIMEDOUT
++#endif
+
+ struct sw_sync_create_fence_data {
+ __u32 value;
diff --git a/devel/electron17/files/patch-third__party_libusb_BUILD.gn b/devel/electron17/files/patch-third__party_libusb_BUILD.gn
new file mode 100644
index 000000000000..ed4e7464dba7
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_libusb_BUILD.gn
@@ -0,0 +1,46 @@
+--- third_party/libusb/BUILD.gn.orig 2022-05-11 07:01:53 UTC
++++ third_party/libusb/BUILD.gn
+@@ -3,7 +3,7 @@
+ # found in the LICENSE file.
+
+ # libusb is only used by //services/device/usb on macOS.
+-assert(is_mac)
++assert(is_mac || is_bsd)
+
+ import("//build/config/chromeos/ui_mode.gni")
+ import("//build/config/features.gni")
+@@ -116,7 +116,7 @@ static_library("libusb") {
+ ]
+ }
+
+- if (is_linux || is_chromeos) {
++ if ((is_linux || is_chromeos) && !is_bsd) {
+ sources += [
+ "src/libusb/os/linux_usbfs.c",
+ "src/libusb/os/linux_usbfs.h",
+@@ -127,6 +127,16 @@ static_library("libusb") {
+ ]
+ }
+
++ if (is_openbsd) {
++ sources += [
++ "src/libusb/os/openbsd_usb.c",
++ ]
++ defines += [
++ "OS_OPENBSD=1",
++ "_GNU_SOURCE=1",
++ ]
++ }
++
+ if (is_chromeos_ash) {
+ defines += [ "USBI_TIMERFD_AVAILABLE" ]
+ }
+@@ -140,7 +150,7 @@ static_library("libusb") {
+ deps += [ "//build/linux/libudev" ]
+ }
+
+- if ((is_linux || is_chromeos) && !use_udev) {
++ if ((is_linux || is_chromeos) && !use_udev && !is_bsd) {
+ sources += [ "src/libusb/os/linux_netlink.c" ]
+ defines += [ "HAVE_LINUX_NETLINK_H" ]
+ }
diff --git a/devel/electron17/files/patch-third__party_libusb_src_libusb_core.c b/devel/electron17/files/patch-third__party_libusb_src_libusb_core.c
new file mode 100644
index 000000000000..a9cde2b82275
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_libusb_src_libusb_core.c
@@ -0,0 +1,11 @@
+--- third_party/libusb/src/libusb/core.c.orig 2022-05-11 07:01:53 UTC
++++ third_party/libusb/src/libusb/core.c
+@@ -448,7 +448,7 @@ libusb_free_device_list(list, 1);
+ * which grows when required. it can be freed once discovery has completed,
+ * eliminating the need for a list node in the libusb_device structure
+ * itself. */
+-#define DISCOVERED_DEVICES_SIZE_STEP 8
++#define DISCOVERED_DEVICES_SIZE_STEP 16
+
+ static struct discovered_devs *discovered_devs_alloc(void)
+ {
diff --git a/devel/electron17/files/patch-third__party_libxml_linux_config.h b/devel/electron17/files/patch-third__party_libxml_linux_config.h
new file mode 100644
index 000000000000..23d127eb0802
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_libxml_linux_config.h
@@ -0,0 +1,12 @@
+--- third_party/libxml/linux/config.h.orig 2022-05-11 07:17:05 UTC
++++ third_party/libxml/linux/config.h
+@@ -129,6 +129,9 @@
+ /* Define to 1 if you have the `rand' function. */
+ #define HAVE_RAND 1
+
++/* Define to 1 if you have the `arc4random' function. */
++#define HAVE_ARC4RANDOM 1
++
+ /* Define to 1 if you have the `rand_r' function. */
+
+
diff --git a/devel/electron17/files/patch-third__party_libxml_src_dict.c b/devel/electron17/files/patch-third__party_libxml_src_dict.c
new file mode 100644
index 000000000000..1720907b2ff5
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_libxml_src_dict.c
@@ -0,0 +1,52 @@
+--- third_party/libxml/src/dict.c.orig 2022-05-11 07:17:05 UTC
++++ third_party/libxml/src/dict.c
+@@ -38,8 +38,8 @@
+ * list we will use the BigKey algo as soon as the hash size grows
+ * over MIN_DICT_SIZE so this actually works
+ */
+-#if defined(HAVE_RAND) && defined(HAVE_SRAND) && defined(HAVE_TIME) && \
+- !defined(FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION)
++#if (defined(HAVE_RAND) && defined(HAVE_SRAND) && defined(HAVE_TIME) && \
++ !defined(FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION)) || defined(HAVE_ARC4RANDOM)
+ #define DICT_RANDOMIZATION
+ #endif
+
+@@ -140,7 +140,7 @@ static xmlRMutexPtr xmlDictMutex = NULL;
+ static int xmlDictInitialized = 0;
+
+ #ifdef DICT_RANDOMIZATION
+-#ifdef HAVE_RAND_R
++#if defined(HAVE_RAND_R) && !defined(HAVE_ARC4RANDOM)
+ /*
+ * Internal data for random function, protected by xmlDictMutex
+ */
+@@ -181,7 +181,7 @@ int __xmlInitializeDict(void) {
+ return(0);
+ xmlRMutexLock(xmlDictMutex);
+
+-#ifdef DICT_RANDOMIZATION
++#if defined(DICT_RANDOMIZATION) && !defined(HAVE_ARC4RANDOM)
+ #ifdef HAVE_RAND_R
+ rand_seed = time(NULL);
+ rand_r(& rand_seed);
+@@ -201,13 +201,17 @@ int __xmlRandom(void) {
+ if (xmlDictInitialized == 0)
+ __xmlInitializeDict();
+
++#ifdef HAVE_ARC4RANDOM
++ ret = arc4random();
++#else
+ xmlRMutexLock(xmlDictMutex);
+-#ifdef HAVE_RAND_R
++# ifdef HAVE_RAND_R
+ ret = rand_r(& rand_seed);
+-#else
++# else
+ ret = rand();
+-#endif
++# endif
+ xmlRMutexUnlock(xmlDictMutex);
++#endif
+ return(ret);
+ }
+ #endif
diff --git a/devel/electron17/files/patch-third__party_maldoca_src_maldoca_base_get__runfiles__dir.cc b/devel/electron17/files/patch-third__party_maldoca_src_maldoca_base_get__runfiles__dir.cc
new file mode 100644
index 000000000000..c5fa332bd95d
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_maldoca_src_maldoca_base_get__runfiles__dir.cc
@@ -0,0 +1,32 @@
+--- third_party/maldoca/src/maldoca/base/get_runfiles_dir.cc.orig 2022-05-11 07:01:55 UTC
++++ third_party/maldoca/src/maldoca/base/get_runfiles_dir.cc
+@@ -24,11 +24,6 @@
+ #error "__APPLE__ not supported."
+ #endif
+
+-#if defined(__FreeBSD__)
+-// TODO(#110) FreeBSD-specific headers.
+-#error "__FreeBSD__ not supported."
+-#endif
+-
+ #if defined(_WIN32)
+ #include <windows.h>
+ #define PATH_MAX MAX_PATH
+@@ -50,8 +45,6 @@ std::string GetExecutablePath() {
+ char exe_path[PATH_MAX] = {0};
+ #ifdef __APPLE__
+ #error "__APPLE__ not supported.";
+-#elif defined(__FreeBSD__)
+-#error "__FreeBSD__ not supported.";
+ #elif defined(_WIN32)
+ HMODULE hModule = GetModuleHandleW(NULL);
+ WCHAR wc_file_path[MAX_PATH] = {0};
+@@ -97,8 +90,6 @@ std::string GetExecutablePath() {
+ absl::Status IsDirectory(const std::string& name) {
+ #ifdef __APPLE__
+ #error "__APPLE__ not supported.";
+-#elif defined(__FreeBSD__)
+-#error "__FreeBSD__ not supported.";
+ #else
+ struct stat sbuf;
+ if (stat(name.c_str(), &sbuf) != 0) {
diff --git a/devel/electron17/files/patch-third__party_maldoca_src_maldoca_service_common_process__doc__wrapper.cc b/devel/electron17/files/patch-third__party_maldoca_src_maldoca_service_common_process__doc__wrapper.cc
new file mode 100644
index 000000000000..60b14fa73bfe
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_maldoca_src_maldoca_service_common_process__doc__wrapper.cc
@@ -0,0 +1,29 @@
+--- third_party/maldoca/src/maldoca/service/common/process_doc_wrapper.cc.orig 2022-05-11 07:01:55 UTC
++++ third_party/maldoca/src/maldoca/service/common/process_doc_wrapper.cc
+@@ -7,7 +7,7 @@
+ #include "build/build_config.h"
+
+ #include "base/files/file_util.h"
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "base/strings/string_util.h"
+ #else
+ #include "base/strings/string_util_win.h"
+@@ -21,7 +21,7 @@ namespace third_party_maldoca {
+
+
+ bool ExtensionEqualInCaseSensitive(base::FilePath file_path, std::string extension){
+- #if defined(OS_LINUX)
++ #if defined(OS_LINUX) || defined(OS_BSD)
+ std::string file_extension = file_path.FinalExtension();
+ return base::CompareCaseInsensitiveASCII(file_extension, extension) == 0;
+ #else
+@@ -74,7 +74,7 @@ void AnalyzeOfficeDocument(base::File office_file,
+ maldoca::DocProcessor doc_processor(processor_config);
+
+ maldoca::ProcessDocumentRequest process_doc_request;
+- #if defined(OS_LINUX)
++ #if defined(OS_LINUX) || defined(OS_BSD)
+ const std::string file_name = file_path.BaseName().value().c_str();
+ process_doc_request.set_file_name(file_name);
+ #endif
diff --git a/devel/electron17/files/patch-third__party_nasm_BUILD.gn b/devel/electron17/files/patch-third__party_nasm_BUILD.gn
new file mode 100644
index 000000000000..485d406e48da
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_nasm_BUILD.gn
@@ -0,0 +1,16 @@
+--- third_party/nasm/BUILD.gn.orig 2022-05-11 07:04:45 UTC
++++ third_party/nasm/BUILD.gn
+@@ -59,6 +59,13 @@ config("nasm_config") {
+
+ defines = [ "HAVE_CONFIG_H" ]
+
++ _string_h_lines =
++ read_file("/usr/include/string.h", "list lines")
++ _mempcpy = filter_include(_string_h_lines, [ "*\*mempcpy*" ])
++ if (_mempcpy != []) {
++ defines += [ "HAVE_MEMPCPY=1" ]
++ }
++
+ if (is_clang) {
+ cflags = [
+ # The inline functions in NASM's headers flag this.
diff --git a/devel/electron17/files/patch-third__party_nasm_config_config-linux.h b/devel/electron17/files/patch-third__party_nasm_config_config-linux.h
new file mode 100644
index 000000000000..8f7ee4011f70
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_nasm_config_config-linux.h
@@ -0,0 +1,111 @@
+--- third_party/nasm/config/config-linux.h.orig 2022-05-11 07:04:45 UTC
++++ third_party/nasm/config/config-linux.h
+@@ -139,7 +139,7 @@
+ #define HAVE_ACCESS 1
+
+ /* Define to 1 if you have the `canonicalize_file_name' function. */
+-#define HAVE_CANONICALIZE_FILE_NAME 1
++/* #undef HAVE_CANONICALIZE_FILE_NAME */
+
+ /* Define to 1 if you have the `cpu_to_le16' intrinsic function. */
+ /* #undef HAVE_CPU_TO_LE16 */
+@@ -160,7 +160,7 @@
+
+ /* Define to 1 if you have the declaration of `strlcpy', and to 0 if you
+ don't. */
+-#define HAVE_DECL_STRLCPY 0
++#define HAVE_DECL_STRLCPY 1
+
+ /* Define to 1 if you have the declaration of `strncasecmp', and to 0 if you
+ don't. */
+@@ -183,7 +183,7 @@
+ #define HAVE_DECL_STRSEP 1
+
+ /* Define to 1 if you have the <endian.h> header file. */
+-#define HAVE_ENDIAN_H 1
++/* #undef HAVE_ENDIAN_H */
+
+ /* Define to 1 if you have the `faccessat' function. */
+ #define HAVE_FACCESSAT 1
+@@ -327,16 +327,16 @@
+ #define HAVE_ISASCII 1
+
+ /* Define to 1 if you have the `iscntrl' function. */
+-/* #undef HAVE_ISCNTRL */
++#define HAVE_ISCNTRL 1
+
+ /* Define to 1 if you have the <machine/endian.h> header file. */
+-/* #undef HAVE_MACHINE_ENDIAN_H */
++#define HAVE_MACHINE_ENDIAN_H 1
+
+ /* Define to 1 if you have the <memory.h> header file. */
+ #define HAVE_MEMORY_H 1
+
+ /* Define to 1 if you have the `mempcpy' function. */
+-#define HAVE_MEMPCPY 1
++/* #undef HAVE_MEMPCPY */
+
+ /* Define to 1 if you have a working `mmap' system call. */
+ #define HAVE_MMAP 1
+@@ -357,7 +357,7 @@
+ #define HAVE_STDARG_H 1
+
+ /* Define to 1 if stdbool.h conforms to C99. */
+-/* #undef HAVE_STDBOOL_H */
++#define HAVE_STDBOOL_H 1
+
+ /* Define to 1 if your compiler supports C99 extern inline */
+ #define HAVE_STDC_INLINE 1
+@@ -384,7 +384,7 @@
+ #define HAVE_STRING_H 1
+
+ /* Define to 1 if you have the `strlcpy' function. */
+-/* #undef HAVE_STRLCPY */
++#define HAVE_STRLCPY 1
+
+ /* Define to 1 if you have the `strncasecmp' function. */
+ #define HAVE_STRNCASECMP 1
+@@ -411,7 +411,7 @@
+ #define HAVE_SYSCONF 1
+
+ /* Define to 1 if you have the <sys/endian.h> header file. */
+-/* #undef HAVE_SYS_ENDIAN_H */
++#define HAVE_SYS_ENDIAN_H 1
+
+ /* Define to 1 if you have the <sys/mman.h> header file. */
+ #define HAVE_SYS_MMAN_H 1
+@@ -486,13 +486,13 @@
+ /* #undef HAVE__STATI64 */
+
+ /* Define to 1 if you have the `__bswap_16' intrinsic function. */
+-#define HAVE___BSWAP_16 1
++/* #undef HAVE___BSWAP_16 */
+
+ /* Define to 1 if you have the `__bswap_32' intrinsic function. */
+-#define HAVE___BSWAP_32 1
++/* #undef HAVE___BSWAP_32 */
+
+ /* Define to 1 if you have the `__bswap_64' intrinsic function. */
+-#define HAVE___BSWAP_64 1
++/* #undef HAVE___BSWAP_64 */
+
+ /* Define to 1 if you have the `__builtin_bswap16' intrinsic function. */
+ #define HAVE___BUILTIN_BSWAP16 1
+@@ -620,7 +620,7 @@
+ /* Define to the equivalent of the C99 'restrict' keyword, or to
+ nothing if this is not supported. Do not define if restrict is
+ supported directly. */
+-#define restrict __restrict
++#define restrict __restrict__
+ /* Work around a bug in Sun C++: it does not support _Restrict or
+ __restrict__, even though the corresponding Sun C compiler ends up with
+ "#define restrict _Restrict" or "#define restrict __restrict__" in the
+@@ -637,7 +637,7 @@
+ /* Define if your snprintf function is not named snprintf. */
+ /* #undef snprintf */
+
+-/* Define if your typeof operator is not named typeof. */
++/* Define if your typeof operator is not named `typeof'. */
+ #define typeof __typeof
+
+ /* Define to the type of an unsigned integer type wide enough to hold a
diff --git a/devel/electron17/files/patch-third__party_node_node.py b/devel/electron17/files/patch-third__party_node_node.py
new file mode 100644
index 000000000000..1abef8d4b08a
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_node_node.py
@@ -0,0 +1,11 @@
+--- third_party/node/node.py.orig 2022-05-11 07:01:55 UTC
++++ third_party/node/node.py
+@@ -16,6 +16,8 @@ def GetBinaryPath():
+ return os_path.join(os_path.dirname(__file__), *{
+ 'Darwin': ('mac', darwin_name, 'bin', 'node'),
+ 'Linux': ('linux', 'node-linux-x64', 'bin', 'node'),
++ 'OpenBSD': ('openbsd', 'node-openbsd', 'bin', 'node'),
++ 'FreeBSD': ('freebsd', 'node-freebsd', 'bin', 'node'),
+ 'Windows': ('win', 'node.exe'),
+ }[platform.system()])
+
diff --git a/devel/electron17/files/patch-third__party_opus_BUILD.gn b/devel/electron17/files/patch-third__party_opus_BUILD.gn
new file mode 100644
index 000000000000..4dd66e3512ea
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_opus_BUILD.gn
@@ -0,0 +1,10 @@
+--- third_party/opus/BUILD.gn.orig 2022-05-11 07:01:55 UTC
++++ third_party/opus/BUILD.gn
+@@ -41,7 +41,6 @@ config("opus_private_config") {
+ # Prefer alloca() over variable length arrays which are often inefficient;
+ # the opus code will automatically handle this correctly per-platform.
+ "USE_ALLOCA",
+- "HAVE_ALLOCA_H",
+ ]
+
+ include_dirs = [
diff --git a/devel/electron17/files/patch-third__party_pdfium_core_fxcrt_cfx__datetime.cpp b/devel/electron17/files/patch-third__party_pdfium_core_fxcrt_cfx__datetime.cpp
new file mode 100644
index 000000000000..bea298bc686b
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_pdfium_core_fxcrt_cfx__datetime.cpp
@@ -0,0 +1,11 @@
+--- third_party/pdfium/core/fxcrt/cfx_datetime.cpp.orig 2022-05-11 07:17:49 UTC
++++ third_party/pdfium/core/fxcrt/cfx_datetime.cpp
+@@ -11,7 +11,7 @@
+ #include "third_party/base/check.h"
+
+ #if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS) || \
+- defined(OS_APPLE) || defined(OS_ASMJS)
++ defined(OS_APPLE) || defined(OS_ASMJS) || defined(OS_BSD)
+ #include <sys/time.h>
+ #include <time.h>
+ #endif
diff --git a/devel/electron17/files/patch-third__party_pdfium_core_fxge_cfx__fontmapper.cpp b/devel/electron17/files/patch-third__party_pdfium_core_fxge_cfx__fontmapper.cpp
new file mode 100644
index 000000000000..3553b817837f
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_pdfium_core_fxge_cfx__fontmapper.cpp
@@ -0,0 +1,11 @@
+--- third_party/pdfium/core/fxge/cfx_fontmapper.cpp.orig 2022-05-11 07:17:49 UTC
++++ third_party/pdfium/core/fxge/cfx_fontmapper.cpp
+@@ -156,7 +156,7 @@ constexpr AltFontFamily kAltFontFamilies[] = {
+ {"ForteMT", "Forte"},
+ };
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ASMJS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ASMJS) || defined(OS_BSD)
+ const char kNarrowFamily[] = "LiberationSansNarrow";
+ #elif defined(OS_ANDROID)
+ const char kNarrowFamily[] = "RobotoCondensed";
diff --git a/devel/electron17/files/patch-third__party_pdfium_core_fxge_linux_fx__linux__impl.cpp b/devel/electron17/files/patch-third__party_pdfium_core_fxge_linux_fx__linux__impl.cpp
new file mode 100644
index 000000000000..08b052268426
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_pdfium_core_fxge_linux_fx__linux__impl.cpp
@@ -0,0 +1,23 @@
+--- third_party/pdfium/core/fxge/linux/fx_linux_impl.cpp.orig 2022-05-11 07:17:49 UTC
++++ third_party/pdfium/core/fxge/linux/fx_linux_impl.cpp
+@@ -17,7 +17,7 @@
+ #include "third_party/base/check.h"
+ #include "third_party/base/cxx17_backports.h"
+
+-#if !defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(OS_ASMJS)
++#if !defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(OS_ASMJS) && !defined(OS_BSD)
+ #error "Included on the wrong platform"
+ #endif
+
+@@ -165,9 +165,8 @@ class CLinuxPlatform : public CFX_GEModule::PlatformIf
+ std::unique_ptr<SystemFontInfoIface> CreateDefaultSystemFontInfo() override {
+ auto pInfo = std::make_unique<CFX_LinuxFontInfo>();
+ if (!pInfo->ParseFontCfg(CFX_GEModule::Get()->GetUserFontPaths())) {
+- pInfo->AddPath("/usr/share/fonts");
+- pInfo->AddPath("/usr/share/X11/fonts/Type1");
+- pInfo->AddPath("/usr/share/X11/fonts/TTF");
++ pInfo->AddPath("/usr/X11R6/lib/X11/fonts/Type1");
++ pInfo->AddPath("/usr/X11R6/lib/X11/fonts/TTF");
+ pInfo->AddPath("/usr/local/share/fonts");
+ }
+ return pInfo;
diff --git a/devel/electron17/files/patch-third__party_pdfium_fxjs_fx__date__helpers.cpp b/devel/electron17/files/patch-third__party_pdfium_fxjs_fx__date__helpers.cpp
new file mode 100644
index 000000000000..3e28e12f72fa
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_pdfium_fxjs_fx__date__helpers.cpp
@@ -0,0 +1,22 @@
+--- third_party/pdfium/fxjs/fx_date_helpers.cpp.orig 2021-01-07 00:39:34 UTC
++++ third_party/pdfium/fxjs/fx_date_helpers.cpp
+@@ -36,6 +36,11 @@ double GetLocalTZA() {
+ return 0;
+ time_t t = 0;
+ FXSYS_time(&t);
++#ifdef __FreeBSD__
++ struct tm lt;
++ localtime_r(&t, &lt);
++ return (double)(-(lt.tm_gmtoff * 1000));
++#else
+ FXSYS_localtime(&t);
+ #if defined(OS_WIN)
+ // In gcc 'timezone' is a global variable declared in time.h. In VC++, that
+@@ -44,6 +49,7 @@ double GetLocalTZA() {
+ _get_timezone(&timezone);
+ #endif
+ return (double)(-(timezone * 1000));
++#endif // __FreeBSD__
+ }
+
+ int GetDaylightSavingTA(double d) {
diff --git a/devel/electron17/files/patch-third__party_pdfium_xfa_fxfa_parser_cxfa__timezoneprovider.cpp b/devel/electron17/files/patch-third__party_pdfium_xfa_fxfa_parser_cxfa__timezoneprovider.cpp
new file mode 100644
index 000000000000..c2d5f61e51ee
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_pdfium_xfa_fxfa_parser_cxfa__timezoneprovider.cpp
@@ -0,0 +1,41 @@
+--- third_party/pdfium/xfa/fxfa/parser/cxfa_timezoneprovider.cpp.orig 2022-05-11 07:17:49 UTC
++++ third_party/pdfium/xfa/fxfa/parser/cxfa_timezoneprovider.cpp
+@@ -6,12 +6,16 @@
+
+ #include "xfa/fxfa/parser/cxfa_timezoneprovider.h"
+
++#include <stdint.h>
+ #include <stdlib.h>
+ #include <time.h>
+
+ #include "build/build_config.h"
+
+ static bool g_bProviderTimeZoneSet = false;
++#if defined(OS_FREEBSD)
++static long g_lTimeZoneOffset = 0;
++#endif
+
+ #if defined(OS_WIN)
+ #define TIMEZONE _timezone
+@@ -24,9 +28,21 @@ static bool g_bProviderTimeZoneSet = false;
+ CXFA_TimeZoneProvider::CXFA_TimeZoneProvider() {
+ if (!g_bProviderTimeZoneSet) {
+ g_bProviderTimeZoneSet = true;
++#if defined(OS_FREEBSD)
++ time_t now = time(nullptr);
++ struct tm tm = {};
++
++ localtime_r(&now, &tm);
++ g_lTimeZoneOffset = tm.tm_gmtoff;
++#else
+ TZSET();
++#endif
+ }
++#if defined(OS_FREEBSD)
++ tz_minutes_ = static_cast<int8_t>((abs(g_lTimeZoneOffset) % 3600) / 60);
++#else
+ tz_minutes_ = TIMEZONE / -60;
++#endif
+ }
+
+ CXFA_TimeZoneProvider::~CXFA_TimeZoneProvider() = default;
diff --git a/devel/electron17/files/patch-third__party_perfetto_include_perfetto_base_build__config.h b/devel/electron17/files/patch-third__party_perfetto_include_perfetto_base_build__config.h
new file mode 100644
index 000000000000..96ab60e742de
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_perfetto_include_perfetto_base_build__config.h
@@ -0,0 +1,66 @@
+--- third_party/perfetto/include/perfetto/base/build_config.h.orig 2022-05-11 07:05:12 UTC
++++ third_party/perfetto/include/perfetto/base/build_config.h
+@@ -27,6 +27,7 @@
+ #if defined(__ANDROID__)
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_ANDROID() 1
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_LINUX() 0
++#define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_BSD() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_WIN() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_APPLE() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_MAC() 0
+@@ -38,6 +39,7 @@
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_ANDROID() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_APPLE() 1
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_LINUX() 0
++#define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_BSD() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_WIN() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_WASM() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_FUCHSIA() 0
+@@ -51,9 +53,10 @@
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_MAC() 1
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_IOS() 0
+ #endif
+-#elif defined(__linux__)
++#elif defined(__linux__) || defined(__OpenBSD__) || defined(__FreeBSD__)
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_ANDROID() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_LINUX() 1
++#define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_BSD() 1
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_WIN() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_APPLE() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_MAC() 0
+@@ -64,6 +67,8 @@
+ #elif defined(_WIN32)
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_ANDROID() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_LINUX() 0
++#define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_BSD() 0
++#define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_FREEBSD() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_WIN() 1
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_APPLE() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_MAC() 0
+@@ -74,6 +79,8 @@
+ #elif defined(__EMSCRIPTEN__)
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_ANDROID() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_LINUX() 0
++#define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_BSD() 0
++#define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_FREEBSD() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_WIN() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_APPLE() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_MAC() 0
+@@ -87,6 +94,8 @@
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_MAC() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_IOS() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_LINUX() 0
++#define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_BSD() 0
++#define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_FREEBSD() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_WIN() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_WASM() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_FUCHSIA() 1
+@@ -94,6 +103,8 @@
+ #elif defined(__native_client__)
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_ANDROID() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_LINUX() 0
++#define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_BSD() 0
++#define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_FREEBSD() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_WIN() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_APPLE() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_MAC() 0
diff --git a/devel/electron17/files/patch-third__party_perfetto_include_perfetto_base_thread__utils.h b/devel/electron17/files/patch-third__party_perfetto_include_perfetto_base_thread__utils.h
new file mode 100644
index 000000000000..091b080e53de
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_perfetto_include_perfetto_base_thread__utils.h
@@ -0,0 +1,22 @@
+--- third_party/perfetto/include/perfetto/base/thread_utils.h.orig 2022-05-11 07:05:12 UTC
++++ third_party/perfetto/include/perfetto/base/thread_utils.h
+@@ -34,6 +34,7 @@ __declspec(dllimport) unsigned long __stdcall GetCurre
+ #include <sys/syscall.h>
+ #include <sys/types.h>
+ #include <unistd.h>
++#include <pthread.h>
+ #else
+ #include <pthread.h>
+ #endif
+@@ -45,6 +46,11 @@ namespace base {
+ using PlatformThreadId = pid_t;
+ inline PlatformThreadId GetThreadId() {
+ return gettid();
++}
++#elif PERFETTO_BUILDFLAG(PERFETTO_OS_BSD)
++using PlatformThreadId = uint64_t;
++inline PlatformThreadId GetThreadId() {
++ return reinterpret_cast<uint64_t>(pthread_self());
+ }
+ #elif PERFETTO_BUILDFLAG(PERFETTO_OS_LINUX)
+ using PlatformThreadId = pid_t;
diff --git a/devel/electron17/files/patch-third__party_perfetto_include_perfetto_base_time.h b/devel/electron17/files/patch-third__party_perfetto_include_perfetto_base_time.h
new file mode 100644
index 000000000000..fc86050f6c9a
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_perfetto_include_perfetto_base_time.h
@@ -0,0 +1,20 @@
+--- third_party/perfetto/include/perfetto/base/time.h.orig 2022-05-11 07:05:12 UTC
++++ third_party/perfetto/include/perfetto/base/time.h
+@@ -142,6 +142,9 @@ inline TimeNanos GetTimeInternalNs(clockid_t clk_id) {
+ // Return ns from boot. Conversely to GetWallTimeNs, this clock counts also time
+ // during suspend (when supported).
+ inline TimeNanos GetBootTimeNs() {
++#if defined(__FreeBSD__)
++ return GetTimeInternalNs(kWallTimeClockSource);
++#else
+ // Determine if CLOCK_BOOTTIME is available on the first call.
+ static const clockid_t kBootTimeClockSource = [] {
+ struct timespec ts = {};
+@@ -149,6 +152,7 @@ inline TimeNanos GetBootTimeNs() {
+ return res == 0 ? CLOCK_BOOTTIME : kWallTimeClockSource;
+ }();
+ return GetTimeInternalNs(kBootTimeClockSource);
++#endif
+ }
+
+ inline TimeNanos GetWallTimeNs() {
diff --git a/devel/electron17/files/patch-third__party_perfetto_include_perfetto_ext_base_event__fd.h b/devel/electron17/files/patch-third__party_perfetto_include_perfetto_ext_base_event__fd.h
new file mode 100644
index 000000000000..1e5c5591a22b
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_perfetto_include_perfetto_ext_base_event__fd.h
@@ -0,0 +1,11 @@
+--- third_party/perfetto/include/perfetto/ext/base/event_fd.h.orig 2022-05-11 07:05:12 UTC
++++ third_party/perfetto/include/perfetto/ext/base/event_fd.h
+@@ -55,6 +55,8 @@ class EventFd {
+ // On Mac and other non-Linux UNIX platforms a pipe-based fallback is used.
+ // The write end of the wakeup pipe.
+ ScopedFile write_fd_;
++#else
++ ScopedFile write_fd_;
+ #endif
+ };
+
diff --git a/devel/electron17/files/patch-third__party_perfetto_include_perfetto_ext_base_thread__utils.h b/devel/electron17/files/patch-third__party_perfetto_include_perfetto_ext_base_thread__utils.h
new file mode 100644
index 000000000000..b2364c2f2af7
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_perfetto_include_perfetto_ext_base_thread__utils.h
@@ -0,0 +1,15 @@
+--- third_party/perfetto/include/perfetto/ext/base/thread_utils.h.orig 2022-05-11 07:05:12 UTC
++++ third_party/perfetto/include/perfetto/ext/base/thread_utils.h
+@@ -40,9 +40,10 @@
+ namespace perfetto {
+ namespace base {
+
+-#if PERFETTO_BUILDFLAG(PERFETTO_OS_LINUX) || \
++#if (PERFETTO_BUILDFLAG(PERFETTO_OS_LINUX) || \
+ PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID) || \
+- PERFETTO_BUILDFLAG(PERFETTO_OS_APPLE)
++ PERFETTO_BUILDFLAG(PERFETTO_OS_APPLE)) && \
++ !PERFETTO_BUILDFLAG(PERFETTO_OS_BSD)
+ // Sets the "comm" of the calling thread to the first 15 chars of the given
+ // string.
+ inline bool MaybeSetThreadName(const std::string& name) {
diff --git a/devel/electron17/files/patch-third__party_perfetto_src_base_event__fd.cc b/devel/electron17/files/patch-third__party_perfetto_src_base_event__fd.cc
new file mode 100644
index 000000000000..f9db93d4ac06
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_perfetto_src_base_event__fd.cc
@@ -0,0 +1,22 @@
+--- third_party/perfetto/src/base/event_fd.cc.orig 2022-05-11 07:17:51 UTC
++++ third_party/perfetto/src/base/event_fd.cc
+@@ -22,7 +22,8 @@
+ #if PERFETTO_BUILDFLAG(PERFETTO_OS_WIN)
+ #include <Windows.h>
+ #include <synchapi.h>
+-#elif PERFETTO_BUILDFLAG(PERFETTO_OS_LINUX) || \
++#elif (PERFETTO_BUILDFLAG(PERFETTO_OS_LINUX) && \
++ !PERFETTO_BUILDFLAG(PERFETTO_OS_BSD)) || \
+ PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID)
+ #include <sys/eventfd.h>
+ #include <unistd.h>
+@@ -57,7 +58,8 @@ void EventFd::Clear() {
+ PERFETTO_DFATAL("EventFd::Clear()");
+ }
+
+-#elif PERFETTO_BUILDFLAG(PERFETTO_OS_LINUX) || \
++#elif (PERFETTO_BUILDFLAG(PERFETTO_OS_LINUX) && \
++ !PERFETTO_BUILDFLAG(PERFETTO_OS_BSD)) || \
+ PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID)
+
+ EventFd::EventFd() {
diff --git a/devel/electron17/files/patch-third__party_perfetto_src_base_periodic__task.cc b/devel/electron17/files/patch-third__party_perfetto_src_base_periodic__task.cc
new file mode 100644
index 000000000000..c648a8178452
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_perfetto_src_base_periodic__task.cc
@@ -0,0 +1,20 @@
+--- third_party/perfetto/src/base/periodic_task.cc.orig 2022-05-11 07:05:12 UTC
++++ third_party/perfetto/src/base/periodic_task.cc
+@@ -24,7 +24,7 @@
+ #include "perfetto/base/time.h"
+ #include "perfetto/ext/base/file_utils.h"
+
+-#if PERFETTO_BUILDFLAG(PERFETTO_OS_LINUX) || \
++#if (PERFETTO_BUILDFLAG(PERFETTO_OS_LINUX) && !PERFETTO_BUILDFLAG(PERFETTO_OS_BSD)) || \
+ (PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID) && __ANDROID_API__ >= 19)
+ #include <sys/timerfd.h>
+ #endif
+@@ -34,7 +34,7 @@ namespace base {
+
+ namespace {
+ base::ScopedPlatformHandle CreateTimerFd(uint32_t period_ms) {
+-#if PERFETTO_BUILDFLAG(PERFETTO_OS_LINUX) || \
++#if (PERFETTO_BUILDFLAG(PERFETTO_OS_LINUX) && !PERFETTO_BUILDFLAG(PERFETTO_OS_BSD)) || \
+ (PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID) && __ANDROID_API__ >= 19)
+ base::ScopedPlatformHandle tfd(
+ timerfd_create(CLOCK_BOOTTIME, TFD_CLOEXEC | TFD_NONBLOCK));
diff --git a/devel/electron17/files/patch-third__party_perfetto_src_base_string__utils.cc b/devel/electron17/files/patch-third__party_perfetto_src_base_string__utils.cc
new file mode 100644
index 000000000000..d0289c931532
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_perfetto_src_base_string__utils.cc
@@ -0,0 +1,15 @@
+--- third_party/perfetto/src/base/string_utils.cc.orig 2022-05-11 07:17:51 UTC
++++ third_party/perfetto/src/base/string_utils.cc
+@@ -36,9 +36,10 @@ namespace base {
+
+ // Locale-independant as possible version of strtod.
+ double StrToD(const char* nptr, char** endptr) {
+-#if PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID) || \
++#if (PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID) || \
+ PERFETTO_BUILDFLAG(PERFETTO_OS_LINUX) || \
+- PERFETTO_BUILDFLAG(PERFETTO_OS_APPLE)
++ PERFETTO_BUILDFLAG(PERFETTO_OS_APPLE)) && \
++ !PERFETTO_BUILDFLAG(PERFETTO_OS_BSD)
+ static auto c_locale = newlocale(LC_ALL, "C", nullptr);
+ return strtod_l(nptr, endptr, c_locale);
+ #else
diff --git a/devel/electron17/files/patch-third__party_perfetto_src_base_subprocess__posix.cc b/devel/electron17/files/patch-third__party_perfetto_src_base_subprocess__posix.cc
new file mode 100644
index 000000000000..93b06ef0cc10
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_perfetto_src_base_subprocess__posix.cc
@@ -0,0 +1,22 @@
+--- third_party/perfetto/src/base/subprocess_posix.cc.orig 2022-05-11 07:17:51 UTC
++++ third_party/perfetto/src/base/subprocess_posix.cc
+@@ -35,7 +35,8 @@
+ #include <thread>
+ #include <tuple>
+
+-#if PERFETTO_BUILDFLAG(PERFETTO_OS_LINUX) || \
++#if (PERFETTO_BUILDFLAG(PERFETTO_OS_LINUX) && \
++ !PERFETTO_BUILDFLAG(PERFETTO_OS_BSD)) || \
+ PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID)
+ #include <sys/prctl.h>
+ #endif
+@@ -64,7 +65,8 @@ struct ChildProcessArgs {
+ // Don't add any dynamic allocation in this function. This will be invoked
+ // under a fork(), potentially in a state where the allocator lock is held.
+ void __attribute__((noreturn)) ChildProcess(ChildProcessArgs* args) {
+-#if PERFETTO_BUILDFLAG(PERFETTO_OS_LINUX) || \
++#if (PERFETTO_BUILDFLAG(PERFETTO_OS_LINUX) && \
++ !PERFETTO_BUILDFLAG(PERFETTO_OS_BSD)) || \
+ PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID)
+ // In no case we want a child process to outlive its parent process. This is
+ // relevant for tests, so that a test failure/crash doesn't leave child
diff --git a/devel/electron17/files/patch-third__party_perfetto_src_base_thread__task__runner.cc b/devel/electron17/files/patch-third__party_perfetto_src_base_thread__task__runner.cc
new file mode 100644
index 000000000000..705637e9e3cb
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_perfetto_src_base_thread__task__runner.cc
@@ -0,0 +1,14 @@
+--- third_party/perfetto/src/base/thread_task_runner.cc.orig 2022-05-11 07:05:12 UTC
++++ third_party/perfetto/src/base/thread_task_runner.cc
+@@ -27,8 +27,9 @@
+ #include "perfetto/ext/base/thread_utils.h"
+ #include "perfetto/ext/base/unix_task_runner.h"
+
+-#if PERFETTO_BUILDFLAG(PERFETTO_OS_LINUX) || \
+- PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID)
++#if (PERFETTO_BUILDFLAG(PERFETTO_OS_LINUX) || \
++ PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID)) && \
++ !PERFETTO_BUILDFLAG(PERFETTO_OS_BSD)
+ #include <sys/prctl.h>
+ #endif
+
diff --git a/devel/electron17/files/patch-third__party_perfetto_src_base_unix__socket.cc b/devel/electron17/files/patch-third__party_perfetto_src_base_unix__socket.cc
new file mode 100644
index 000000000000..b6e8cd22f62c
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_perfetto_src_base_unix__socket.cc
@@ -0,0 +1,26 @@
+--- third_party/perfetto/src/base/unix_socket.cc.orig 2022-05-11 07:05:12 UTC
++++ third_party/perfetto/src/base/unix_socket.cc
+@@ -42,7 +42,7 @@
+ #include <unistd.h>
+ #endif
+
+-#if PERFETTO_BUILDFLAG(PERFETTO_OS_APPLE)
++#if PERFETTO_BUILDFLAG(PERFETTO_OS_APPLE) || defined(__FreeBSD__)
+ #include <sys/ucred.h>
+ #endif
+
+@@ -791,9 +791,13 @@ void UnixSocket::ReadPeerCredentialsPosix() {
+ return;
+ PERFETTO_CHECK(peer_cred_mode_ != SockPeerCredMode::kIgnore);
+
+-#if PERFETTO_BUILDFLAG(PERFETTO_OS_LINUX) || \
++#if !defined(__FreeBSD__) && PERFETTO_BUILDFLAG(PERFETTO_OS_LINUX) || \
+ PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID)
++#if PERFETTO_BUILDFLAG(PERFETTO_OS_BSD)
++ struct sockpeercred user_cred;
++#else
+ struct ucred user_cred;
++#endif
+ socklen_t len = sizeof(user_cred);
+ int fd = sock_raw_.fd();
+ int res = getsockopt(fd, SOL_SOCKET, SO_PEERCRED, &user_cred, &len);
diff --git a/devel/electron17/files/patch-third__party_perfetto_src_tracing_core_tracing__service__impl.cc b/devel/electron17/files/patch-third__party_perfetto_src_tracing_core_tracing__service__impl.cc
new file mode 100644
index 000000000000..116075151013
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_perfetto_src_tracing_core_tracing__service__impl.cc
@@ -0,0 +1,12 @@
+--- third_party/perfetto/src/tracing/core/tracing_service_impl.cc.orig 2022-05-11 07:17:51 UTC
++++ third_party/perfetto/src/tracing/core/tracing_service_impl.cc
+@@ -2990,7 +2990,8 @@ bool TracingServiceImpl::SnapshotClocks(
+
+ #if !PERFETTO_BUILDFLAG(PERFETTO_OS_APPLE) && \
+ !PERFETTO_BUILDFLAG(PERFETTO_OS_WIN) && \
+- !PERFETTO_BUILDFLAG(PERFETTO_OS_NACL)
++ !PERFETTO_BUILDFLAG(PERFETTO_OS_NACL) && \
++ !PERFETTO_BUILDFLAG(PERFETTO_OS_BSD)
+ struct {
+ clockid_t id;
+ protos::pbzero::BuiltinClock type;
diff --git a/devel/electron17/files/patch-third__party_protobuf_src_google_protobuf_stubs_platform__macros.h b/devel/electron17/files/patch-third__party_protobuf_src_google_protobuf_stubs_platform__macros.h
new file mode 100644
index 000000000000..b5df4f5e0ec0
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_protobuf_src_google_protobuf_stubs_platform__macros.h
@@ -0,0 +1,11 @@
+--- third_party/protobuf/src/google/protobuf/stubs/platform_macros.h.orig 2022-05-11 07:01:56 UTC
++++ third_party/protobuf/src/google/protobuf/stubs/platform_macros.h
+@@ -118,7 +118,7 @@ GOOGLE_PROTOBUF_PLATFORM_ERROR
+
+ #undef GOOGLE_PROTOBUF_PLATFORM_ERROR
+
+-#if defined(GOOGLE_PROTOBUF_OS_ANDROID) || defined(GOOGLE_PROTOBUF_OS_IPHONE) || defined(__OpenBSD__)
++#if defined(GOOGLE_PROTOBUF_OS_ANDROID) || defined(GOOGLE_PROTOBUF_OS_IPHONE)
+ // Android ndk does not support the __thread keyword very well yet. Here
+ // we use pthread_key_create()/pthread_getspecific()/... methods for
+ // TLS support on android.
diff --git a/devel/electron17/files/patch-third__party_protobuf_src_google_protobuf_stubs_strutil.h b/devel/electron17/files/patch-third__party_protobuf_src_google_protobuf_stubs_strutil.h
new file mode 100644
index 000000000000..1069eb9bf0e4
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_protobuf_src_google_protobuf_stubs_strutil.h
@@ -0,0 +1,18 @@
+--- third_party/protobuf/src/google/protobuf/stubs/strutil.h.orig 2022-05-11 07:01:56 UTC
++++ third_party/protobuf/src/google/protobuf/stubs/strutil.h
+@@ -373,13 +373,13 @@ inline uint32 strtou32(const char *nptr, char **endptr
+ inline int64 strto64(const char *nptr, char **endptr, int base) {
+ GOOGLE_COMPILE_ASSERT(sizeof(int64) == sizeof(long long),
+ sizeof_int64_is_not_sizeof_long_long);
+- return strtoll(nptr, endptr, base);
++ return std::strtoll(nptr, endptr, base);
+ }
+
+ inline uint64 strtou64(const char *nptr, char **endptr, int base) {
+ GOOGLE_COMPILE_ASSERT(sizeof(uint64) == sizeof(unsigned long long),
+ sizeof_uint64_is_not_sizeof_long_long);
+- return strtoull(nptr, endptr, base);
++ return std::strtoull(nptr, endptr, base);
+ }
+
+ // ----------------------------------------------------------------------
diff --git a/devel/electron17/files/patch-third__party_skia_src_gpu_GrAutoLocaleSetter.h b/devel/electron17/files/patch-third__party_skia_src_gpu_GrAutoLocaleSetter.h
new file mode 100644
index 000000000000..114a16a94582
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_skia_src_gpu_GrAutoLocaleSetter.h
@@ -0,0 +1,11 @@
+--- third_party/skia/src/gpu/GrAutoLocaleSetter.h.orig 2022-05-11 07:17:52 UTC
++++ third_party/skia/src/gpu/GrAutoLocaleSetter.h
+@@ -27,7 +27,7 @@
+ #define HAVE_XLOCALE 0
+ #endif
+
+-#if defined(SK_BUILD_FOR_ANDROID) || defined(__UCLIBC__) || defined(_NEWLIB_VERSION)
++#if defined(SK_BUILD_FOR_ANDROID) || defined(__UCLIBC__) || defined(_NEWLIB_VERSION) || defined(__OpenBSD__)
+ #define HAVE_LOCALE_T 0
+ #else
+ #define HAVE_LOCALE_T 1
diff --git a/devel/electron17/files/patch-third__party_skia_src_ports_SkOSFile__stdio.cpp b/devel/electron17/files/patch-third__party_skia_src_ports_SkOSFile__stdio.cpp
new file mode 100644
index 000000000000..4e2643fb40b2
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_skia_src_ports_SkOSFile__stdio.cpp
@@ -0,0 +1,11 @@
+--- third_party/skia/src/ports/SkOSFile_stdio.cpp.orig 2022-05-11 07:17:54 UTC
++++ third_party/skia/src/ports/SkOSFile_stdio.cpp
+@@ -130,7 +130,7 @@ void sk_fflush(FILE* f) {
+
+ void sk_fsync(FILE* f) {
+ #if !defined(_WIN32) && !defined(SK_BUILD_FOR_ANDROID) && !defined(__UCLIBC__) \
+- && !defined(_NEWLIB_VERSION)
++ && !defined(_NEWLIB_VERSION) && !defined(__OpenBSD__)
+ int fd = fileno(f);
+ fsync(fd);
+ #endif
diff --git a/devel/electron17/files/patch-third__party_sqlite_BUILD.gn b/devel/electron17/files/patch-third__party_sqlite_BUILD.gn
new file mode 100644
index 000000000000..bb0895d4522b
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_sqlite_BUILD.gn
@@ -0,0 +1,11 @@
+--- third_party/sqlite/BUILD.gn.orig 2022-05-11 07:01:57 UTC
++++ third_party/sqlite/BUILD.gn
+@@ -142,7 +142,7 @@ config("sqlite_warnings") {
+ ]
+ }
+ }
+- if (is_linux || is_chromeos) {
++ if ((is_linux || is_chromeos) && !is_bsd) {
+ cflags += [
+ # SQLite doesn't believe in compiler warnings, preferring testing.
+ # http://www.sqlite.org/faq.html#q17
diff --git a/devel/electron17/files/patch-third__party_sqlite_src_amalgamation_sqlite3.c b/devel/electron17/files/patch-third__party_sqlite_src_amalgamation_sqlite3.c
new file mode 100644
index 000000000000..4126bf48537c
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_sqlite_src_amalgamation_sqlite3.c
@@ -0,0 +1,23 @@
+--- third_party/sqlite/src/amalgamation/sqlite3.c.orig 2022-05-11 07:17:50 UTC
++++ third_party/sqlite/src/amalgamation/sqlite3.c
+@@ -40698,7 +40698,12 @@ static int unixRandomness(sqlite3_vfs *NotUsed, int nB
+ memset(zBuf, 0, nBuf);
+ randomnessPid = osGetpid(0);
+ #if !defined(SQLITE_TEST) && !defined(SQLITE_OMIT_RANDOMNESS)
++#if defined(__OpenBSD__)
+ {
++ arc4random_buf(zBuf, nBuf);
++ }
++#else
++ {
+ int fd, got;
+ fd = robust_open("/dev/urandom", O_RDONLY, 0);
+ if( fd<0 ){
+@@ -40713,6 +40718,7 @@ static int unixRandomness(sqlite3_vfs *NotUsed, int nB
+ robust_close(0, fd, __LINE__);
+ }
+ }
++#endif
+ #endif
+ return nBuf;
+ }
diff --git a/devel/electron17/files/patch-third__party_swiftshader_src_Common_Configurator.cpp b/devel/electron17/files/patch-third__party_swiftshader_src_Common_Configurator.cpp
new file mode 100644
index 000000000000..3e9ab03901ac
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_swiftshader_src_Common_Configurator.cpp
@@ -0,0 +1,13 @@
+--- third_party/swiftshader/src/Common/Configurator.cpp.orig 2022-05-11 07:17:52 UTC
++++ third_party/swiftshader/src/Common/Configurator.cpp
+@@ -42,6 +42,10 @@ namespace sw
+
+ bool Configurator::readFile()
+ {
++#if defined(__OpenBSD__) || defined(__FreeBSD__)
++ return false;
++#endif
++
+ #if defined(__unix__)
+ if(access(path.c_str(), R_OK) != 0)
+ {
diff --git a/devel/electron17/files/patch-third__party_swiftshader_src_Common_MutexLock.hpp b/devel/electron17/files/patch-third__party_swiftshader_src_Common_MutexLock.hpp
new file mode 100644
index 000000000000..7a4e0e735447
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_swiftshader_src_Common_MutexLock.hpp
@@ -0,0 +1,11 @@
+--- third_party/swiftshader/src/Common/MutexLock.hpp.orig 2022-05-11 07:17:52 UTC
++++ third_party/swiftshader/src/Common/MutexLock.hpp
+@@ -17,7 +17,7 @@
+
+ #include "Thread.hpp"
+
+-#if defined(__linux__)
++#if defined(__linux__) || defined(__OpenBSD__) || defined(__FreeBSD__)
+ // Use a pthread mutex on Linux. Since many processes may use SwiftShader
+ // at the same time it's best to just have the scheduler overhead.
+ #include <pthread.h>
diff --git a/devel/electron17/files/patch-third__party_swiftshader_src_Common_SharedLibrary.hpp b/devel/electron17/files/patch-third__party_swiftshader_src_Common_SharedLibrary.hpp
new file mode 100644
index 000000000000..d5b3e26f4590
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_swiftshader_src_Common_SharedLibrary.hpp
@@ -0,0 +1,11 @@
+--- third_party/swiftshader/src/Common/SharedLibrary.hpp.orig 2022-05-11 07:17:52 UTC
++++ third_party/swiftshader/src/Common/SharedLibrary.hpp
+@@ -97,7 +97,7 @@ void *loadLibrary(const std::string &libraryDirectory,
+
+ inline void *getLibraryHandle(const char *path)
+ {
+- #ifdef __ANDROID__
++ #if defined(__ANDROID__) || defined(__OpenBSD__) || defined(__FreeBSD__)
+ // bionic doesn't support RTLD_NOLOAD before L
+ return dlopen(path, RTLD_NOW | RTLD_LOCAL);
+ #else
diff --git a/devel/electron17/files/patch-third__party_swiftshader_src_Main_SwiftConfig.cpp b/devel/electron17/files/patch-third__party_swiftshader_src_Main_SwiftConfig.cpp
new file mode 100644
index 000000000000..b7d184a99d94
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_swiftshader_src_Main_SwiftConfig.cpp
@@ -0,0 +1,14 @@
+--- third_party/swiftshader/src/Main/SwiftConfig.cpp.orig 2022-05-11 07:17:52 UTC
++++ third_party/swiftshader/src/Main/SwiftConfig.cpp
+@@ -764,7 +764,11 @@ namespace sw
+ struct stat status;
+ int lastModified = ini.getInteger("LastModified", "Time", 0);
+
++#if !defined(__OpenBSD__) && !defined(__FreeBSD__)
+ bool noConfig = stat("SwiftShader.ini", &status) != 0;
++#else
++ bool noConfig = false;
++#endif
+ newConfig = !noConfig && abs((int)status.st_mtime - lastModified) > 1;
+
+ if(disableServerOverride)
diff --git a/devel/electron17/files/patch-third__party_swiftshader_src_OpenGL_libEGL_Display.cpp b/devel/electron17/files/patch-third__party_swiftshader_src_OpenGL_libEGL_Display.cpp
new file mode 100644
index 000000000000..a4aa1060a621
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_swiftshader_src_OpenGL_libEGL_Display.cpp
@@ -0,0 +1,20 @@
+--- third_party/swiftshader/src/OpenGL/libEGL/Display.cpp.orig 2022-05-11 07:17:52 UTC
++++ third_party/swiftshader/src/OpenGL/libEGL/Display.cpp
+@@ -677,7 +677,7 @@ bool Display::isValidWindow(EGLNativeWindowType window
+ return status != 0;
+ }
+ return false;
+- #elif defined(__linux__)
++ #elif defined(__linux__) || defined(__OpenBSD__) || defined(__FreeBSD__)
+ return false; // Non X11 linux is headless only
+ #elif defined(__APPLE__)
+ return sw::OSX::IsValidWindow(window);
+@@ -855,7 +855,7 @@ sw::Format Display::getDisplayFormat() const
+ {
+ return sw::FORMAT_X8R8G8B8;
+ }
+- #elif defined(__linux__) // Non X11 linux is headless only
++ #elif defined(__linux__) || defined(__OpenBSD__) || defined(__FreeBSD__) // Non X11 linux is headless only
+ return sw::FORMAT_A8B8G8R8;
+ #elif defined(__APPLE__)
+ return sw::FORMAT_A8B8G8R8;
diff --git a/devel/electron17/files/patch-third__party_swiftshader_src_OpenGL_libEGL_Surface.cpp b/devel/electron17/files/patch-third__party_swiftshader_src_OpenGL_libEGL_Surface.cpp
new file mode 100644
index 000000000000..be9ca7551484
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_swiftshader_src_OpenGL_libEGL_Surface.cpp
@@ -0,0 +1,11 @@
+--- third_party/swiftshader/src/OpenGL/libEGL/Surface.cpp.orig 2022-05-11 07:17:52 UTC
++++ third_party/swiftshader/src/OpenGL/libEGL/Surface.cpp
+@@ -349,7 +349,7 @@ bool WindowSurface::checkForResize()
+
+ int windowWidth = windowAttributes.width;
+ int windowHeight = windowAttributes.height;
+- #elif defined(__linux__)
++ #elif defined(__linux__) || defined(__OpenBSD__) || defined(__FreeBSD__)
+ // Non X11 linux is headless only
+ int windowWidth = 100;
+ int windowHeight = 100;
diff --git a/devel/electron17/files/patch-third__party_swiftshader_src_OpenGL_libEGL_libEGL.cpp b/devel/electron17/files/patch-third__party_swiftshader_src_OpenGL_libEGL_libEGL.cpp
new file mode 100644
index 000000000000..e88b9c9f1a75
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_swiftshader_src_OpenGL_libEGL_libEGL.cpp
@@ -0,0 +1,29 @@
+--- third_party/swiftshader/src/OpenGL/libEGL/libEGL.cpp.orig 2022-05-11 07:17:52 UTC
++++ third_party/swiftshader/src/OpenGL/libEGL/libEGL.cpp
+@@ -153,7 +153,7 @@ EGLDisplay EGLAPIENTRY GetDisplay(EGLNativeDisplayType
+ // FIXME: Check if display_id is the default display
+ }
+
+- #if defined(__linux__) && !defined(__ANDROID__)
++ #if (defined(__OpenBSD__) || defined(__linux__) || defined(__FreeBSD__)) && !defined(__ANDROID__)
+ #if defined(SWIFTSHADER_USE_X11)
+ if(!libX11)
+ #endif // Non X11 linux is headless only
+@@ -216,7 +216,7 @@ const char *EGLAPIENTRY QueryString(EGLDisplay dpy, EG
+ {
+ return success(
+ "EGL_KHR_client_get_all_proc_addresses "
+-#if defined(__linux__) && !defined(__ANDROID__)
++#if (defined(__OpenBSD__) || defined(__linux__) || defined(__FreeBSD__)) && !defined(__ANDROID__)
+ "EGL_KHR_platform_gbm "
+ #endif
+ #if defined(SWIFTSHADER_USE_X11)
+@@ -1307,7 +1307,7 @@ EGLDisplay EGLAPIENTRY GetPlatformDisplay(EGLenum plat
+ {
+ TRACE("(EGLenum platform = 0x%X, void *native_display = %p, const EGLAttrib *attrib_list = %p)", platform, native_display, attrib_list);
+
+- #if defined(__linux__) && !defined(__ANDROID__)
++ #if (defined(__OpenBSD__) || defined(__linux__) || defined(__FreeBSD__)) && !defined(__ANDROID__)
+ switch(platform)
+ {
+ #if defined(SWIFTSHADER_USE_X11)
diff --git a/devel/electron17/files/patch-third__party_swiftshader_src_OpenGL_libEGL_libEGL.hpp b/devel/electron17/files/patch-third__party_swiftshader_src_OpenGL_libEGL_libEGL.hpp
new file mode 100644
index 000000000000..d23a95d05210
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_swiftshader_src_OpenGL_libEGL_libEGL.hpp
@@ -0,0 +1,11 @@
+--- third_party/swiftshader/src/OpenGL/libEGL/libEGL.hpp.orig 2022-05-11 07:17:52 UTC
++++ third_party/swiftshader/src/OpenGL/libEGL/libEGL.hpp
+@@ -100,7 +100,7 @@ class LibEGL (private)
+ #endif
+ #elif defined(__ANDROID__)
+ const char *libEGL_lib[] = {"libEGL_swiftshader.so", "libEGL_swiftshader.so"};
+- #elif defined(__linux__)
++ #elif defined(__linux__) || defined(__OpenBSD__) || defined(__FreeBSD__)
+ #if defined(__LP64__)
+ const char *libEGL_lib[] = {"lib64EGL_translator.so", "libEGL.so.1", "libEGL.so", "libEGL_deprecated.so.1", "libEGL_deprecated.so"};
+ #else
diff --git a/devel/electron17/files/patch-third__party_swiftshader_src_OpenGL_libGLESv2_libGLESv2.hpp b/devel/electron17/files/patch-third__party_swiftshader_src_OpenGL_libGLESv2_libGLESv2.hpp
new file mode 100644
index 000000000000..2b30ceaf4978
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_swiftshader_src_OpenGL_libGLESv2_libGLESv2.hpp
@@ -0,0 +1,11 @@
+--- third_party/swiftshader/src/OpenGL/libGLESv2/libGLESv2.hpp.orig 2022-05-11 07:17:52 UTC
++++ third_party/swiftshader/src/OpenGL/libGLESv2/libGLESv2.hpp
+@@ -286,7 +286,7 @@ class LibGLESv2 (private)
+ #endif
+ #elif defined(__ANDROID__)
+ const char *libGLESv2_lib[] = {"libGLESv2_swiftshader.so", "libGLESv2_swiftshader.so"};
+- #elif defined(__linux__)
++ #elif defined(__linux__) || defined(__OpenBSD__) || defined(__FreeBSD__)
+ #if defined(__LP64__)
+ const char *libGLESv2_lib[] = {"lib64GLES_V2_translator.so", "libGLESv2.so.2", "libGLESv2.so", "libGLESv2_deprecated.so.2", "libGLESv2_deprecated.so"};
+ #else
diff --git a/devel/electron17/files/patch-third__party_swiftshader_src_Reactor_Debug.cpp b/devel/electron17/files/patch-third__party_swiftshader_src_Reactor_Debug.cpp
new file mode 100644
index 000000000000..47985a50fae7
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_swiftshader_src_Reactor_Debug.cpp
@@ -0,0 +1,11 @@
+--- third_party/swiftshader/src/Reactor/Debug.cpp.orig 2022-05-11 07:07:58 UTC
++++ third_party/swiftshader/src/Reactor/Debug.cpp
+@@ -46,7 +46,7 @@ namespace {
+
+ bool IsUnderDebugger()
+ {
+-#if defined(PTRACE) && !defined(__APPLE__) && !defined(__MACH__)
++#if defined(PTRACE) && !defined(__APPLE__) && !defined(__MACH__) && !defined(__OpenBSD__) && !defined(__FreeBSD__)
+ static bool checked = false;
+ static bool res = false;
+
diff --git a/devel/electron17/files/patch-third__party_swiftshader_src_System_SharedLibrary.hpp b/devel/electron17/files/patch-third__party_swiftshader_src_System_SharedLibrary.hpp
new file mode 100644
index 000000000000..b679f95c55e5
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_swiftshader_src_System_SharedLibrary.hpp
@@ -0,0 +1,11 @@
+--- third_party/swiftshader/src/System/SharedLibrary.hpp.orig 2022-05-11 07:07:58 UTC
++++ third_party/swiftshader/src/System/SharedLibrary.hpp
+@@ -96,7 +96,7 @@ inline void *loadLibrary(const char *path)
+
+ inline void *getLibraryHandle(const char *path)
+ {
+-# ifdef __ANDROID__
++# if defined(__ANDROID__) || defined(__OpenBSD__) || defined(__FreeBSD__)
+ // bionic doesn't support RTLD_NOLOAD before L
+ return dlopen(path, RTLD_NOW | RTLD_LOCAL);
+ # else
diff --git a/devel/electron17/files/patch-third__party_swiftshader_src_Vulkan_VkSemaphoreExternalLinux.hpp b/devel/electron17/files/patch-third__party_swiftshader_src_Vulkan_VkSemaphoreExternalLinux.hpp
new file mode 100644
index 000000000000..ac125718c6e6
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_swiftshader_src_Vulkan_VkSemaphoreExternalLinux.hpp
@@ -0,0 +1,20 @@
+--- third_party/swiftshader/src/Vulkan/VkSemaphoreExternalLinux.hpp.orig 2022-05-11 07:07:58 UTC
++++ third_party/swiftshader/src/Vulkan/VkSemaphoreExternalLinux.hpp
+@@ -49,13 +49,17 @@ class SharedSemaphore (public)
+ {
+ pthread_mutexattr_t mattr;
+ pthread_mutexattr_init(&mattr);
++#if 0
+ pthread_mutexattr_setpshared(&mattr, PTHREAD_PROCESS_SHARED);
++#endif
+ pthread_mutex_init(&mutex, &mattr);
+ pthread_mutexattr_destroy(&mattr);
+
+ pthread_condattr_t cattr;
+ pthread_condattr_init(&cattr);
++#if 0
+ pthread_condattr_setpshared(&cattr, PTHREAD_PROCESS_SHARED);
++#endif
+ pthread_cond_init(&cond, &cattr);
+ pthread_condattr_destroy(&cattr);
+ }
diff --git a/devel/electron17/files/patch-third__party_swiftshader_src_WSI_libXCB.cpp b/devel/electron17/files/patch-third__party_swiftshader_src_WSI_libXCB.cpp
new file mode 100644
index 000000000000..31a7107bca78
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_swiftshader_src_WSI_libXCB.cpp
@@ -0,0 +1,11 @@
+--- third_party/swiftshader/src/WSI/libXCB.cpp.orig 2022-05-11 07:17:52 UTC
++++ third_party/swiftshader/src/WSI/libXCB.cpp
+@@ -42,7 +42,7 @@ LibXcbExports *LibXCB::loadExports()
+ return LibXcbExports(RTLD_DEFAULT);
+ }
+
+- if(void *lib = loadLibrary("libxcb.so.1"))
++ if(void *lib = loadLibrary("libxcb.so"))
+ {
+ return LibXcbExports(lib);
+ }
diff --git a/devel/electron17/files/patch-third__party_swiftshader_third__party_llvm-10.0_configs_linux_include_llvm_Config_config.h b/devel/electron17/files/patch-third__party_swiftshader_third__party_llvm-10.0_configs_linux_include_llvm_Config_config.h
new file mode 100644
index 000000000000..2d6f493a9e6b
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_swiftshader_third__party_llvm-10.0_configs_linux_include_llvm_Config_config.h
@@ -0,0 +1,213 @@
+--- third_party/swiftshader/third_party/llvm-10.0/configs/linux/include/llvm/Config/config.h.orig 2022-05-11 07:17:57 UTC
++++ third_party/swiftshader/third_party/llvm-10.0/configs/linux/include/llvm/Config/config.h
+@@ -1,20 +1,19 @@
++/* include/llvm/Config/config.h.cmake corresponding to config.h.in. */
++
+ #ifndef CONFIG_H
+ #define CONFIG_H
+
+ /* Exported configuration */
+ #include "llvm/Config/llvm-config.h"
+
+-/* For detecting __GLIBC__ usage */
+-#include <features.h>
+-
+ /* Bug report URL. */
+ #define BUG_REPORT_URL "https://bugs.llvm.org/"
+
+ /* Define to 1 to enable backtraces, and to 0 otherwise. */
+-/* #undef ENABLE_BACKTRACES */
++#define ENABLE_BACKTRACES 1
+
+ /* Define to 1 to enable crash overrides, and to 0 otherwise. */
+-/* #undef ENABLE_CRASH_OVERRIDES */
++#define ENABLE_CRASH_OVERRIDES 1
+
+ /* Define to 1 to enable crash memory dumps, and to 0 otherwise. */
+ #define LLVM_ENABLE_CRASH_DUMPS 0
+@@ -25,14 +24,14 @@
+ /* #undef BACKTRACE_HEADER */
+
+ /* Define to 1 if you have the <CrashReporterClient.h> header file. */
+-/* #undef HAVE_CRASHREPORTERCLIENT_H */
++#undef HAVE_CRASHREPORTERCLIENT_H
+
+ /* can use __crashreporter_info__ */
+ #define HAVE_CRASHREPORTER_INFO 0
+
+ /* Define to 1 if you have the declaration of `arc4random', and to 0 if you
+ don't. */
+-#define HAVE_DECL_ARC4RANDOM 0
++#define HAVE_DECL_ARC4RANDOM 1
+
+ /* Define to 1 if you have the declaration of `FE_ALL_EXCEPT', and to 0 if you
+ don't. */
+@@ -56,7 +55,7 @@
+ #define HAVE_DLOPEN 1
+
+ /* Define if dladdr() is available on this platform. */
+-/* #undef HAVE_DLADDR */
++#define HAVE_DLADDR 1
+
+ /* Define to 1 if you have the <errno.h> header file. */
+ #define HAVE_ERRNO_H 1
+@@ -95,7 +94,7 @@
+ #define HAVE_ISATTY 1
+
+ /* Define to 1 if you have the `edit' library (-ledit). */
+-/* #undef HAVE_LIBEDIT */
++#define HAVE_LIBEDIT 1
+
+ /* Define to 1 if you have the `pfm' library (-lpfm). */
+ /* #undef HAVE_LIBPFM */
+@@ -113,13 +112,13 @@
+ /* #undef HAVE_PTHREAD_SETNAME_NP */
+
+ /* Define to 1 if you have the `z' library (-lz). */
+-/* #undef HAVE_LIBZ */
++#define HAVE_LIBZ 1
+
+ /* Define to 1 if you have the <link.h> header file. */
+-#define HAVE_LINK_H 1
++/* #undef HAVE_LINK_H */
+
+ /* Define to 1 if you have the `lseek64' function. */
+-#define HAVE_LSEEK64 1
++/* #undef HAVE_LSEEK64 */
+
+ /* Define to 1 if you have the <mach/mach.h> header file. */
+ /* #undef HAVE_MACH_MACH_H */
+@@ -127,15 +126,9 @@
+ /* Define to 1 if you have the `mallctl' function. */
+ /* #undef HAVE_MALLCTL */
+
+-/* Define to 1 if you have the `mallinfo' function. */
+-#define HAVE_MALLINFO 1
++/* Define if mallinfo() is available on this platform. */
++/* #undef HAVE_MALLINFO */
+
+-/* Some projects using SwiftShader bypass cmake (eg Chromium via gn) */
+-/* so we need to check glibc version for the new API to be safe */
+-#if defined(__GLIBC__) && __GLIBC_MINOR__ >= 33
+-#define HAVE_MALLINFO2 1
+-#endif
+-
+ /* Define to 1 if you have the <malloc/malloc.h> header file. */
+ /* #undef HAVE_MALLOC_MALLOC_H */
+
+@@ -143,10 +136,10 @@
+ /* #undef HAVE_MALLOC_ZONE_STATISTICS */
+
+ /* Define to 1 if you have the `posix_fallocate' function. */
+-#define HAVE_POSIX_FALLOCATE 1
++/* #undef HAVE_POSIX_FALLOCATE */
+
+ /* Define to 1 if you have the `posix_spawn' function. */
+-/* #undef HAVE_POSIX_SPAWN */
++#define HAVE_POSIX_SPAWN 1
+
+ /* Define to 1 if you have the `pread' function. */
+ #define HAVE_PREAD 1
+@@ -170,10 +163,10 @@
+ #define HAVE_SETENV 1
+
+ /* Define to 1 if you have the `sched_getaffinity' function. */
+-#define HAVE_SCHED_GETAFFINITY 1
++/* #undef HAVE_SCHED_GETAFFINITY */
+
+ /* Define to 1 if you have the `CPU_COUNT' macro. */
+-#define HAVE_CPU_COUNT 1
++/* #undef HAVE_CPU_COUNT */
+
+ /* Define to 1 if you have the `setrlimit' function. */
+ #define HAVE_SETRLIMIT 1
+@@ -191,7 +184,7 @@
+ #define HAVE_STRERROR_R 1
+
+ /* Define to 1 if you have the `sysconf' function. */
+-#define HAVE_SYSCONF 1
++/* #undef HAVE_SYSCONF */
+
+ /* Define to 1 if you have the <sys/ioctl.h> header file. */
+ #define HAVE_SYS_IOCTL_H 1
+@@ -218,7 +211,7 @@
+ #define HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC 1
+
+ /* Define to 1 if you have the <sys/types.h> header file. */
+-#define HAVE_SYS_TYPES_H 1
++/* #undef HAVE_SYS_TYPES_H */
+
+ /* Define if the setupterm() function is supported this platform. */
+ /* #undef HAVE_TERMINFO */
+@@ -227,16 +220,16 @@
+ /* #undef HAVE_LIBXAR */
+
+ /* Define to 1 if you have the <termios.h> header file. */
+-/* #undef HAVE_TERMIOS_H */
++#define HAVE_TERMIOS_H 1
+
+ /* Define to 1 if you have the <unistd.h> header file. */
+ #define HAVE_UNISTD_H 1
+
+ /* Define to 1 if you have the <valgrind/valgrind.h> header file. */
+-/* #undef HAVE_VALGRIND_VALGRIND_H */
++/* #define HAVE_VALGRIND_VALGRIND_H 1 */
+
+ /* Define to 1 if you have the <zlib.h> header file. */
+-/* #undef HAVE_ZLIB_H */
++#define HAVE_ZLIB_H 1
+
+ /* Have host's _alloca */
+ /* #undef HAVE__ALLOCA */
+@@ -303,26 +296,10 @@
+
+ /* Target triple LLVM will generate code for by default */
+ /* Doesn't use `cmakedefine` because it is allowed to be empty. */
+-#if defined(__x86_64__)
+-#define LLVM_DEFAULT_TARGET_TRIPLE "x86_64-unknown-linux-gnu"
+-#elif defined(__i386__)
+-#define LLVM_DEFAULT_TARGET_TRIPLE "i686-pc-linux-gnu"
+-#elif defined(__arm__)
+-#define LLVM_DEFAULT_TARGET_TRIPLE "armv7-linux-gnueabihf"
+-#elif defined(__aarch64__)
+-#define LLVM_DEFAULT_TARGET_TRIPLE "aarch64-linux-gnu"
+-#elif defined(__mips__)
+-#define LLVM_DEFAULT_TARGET_TRIPLE "mipsel-linux-gnu"
+-#elif defined(__mips64)
+-#define LLVM_DEFAULT_TARGET_TRIPLE "mips64el-linux-gnuabi64"
+-#elif defined(__powerpc64__)
+-#define LLVM_DEFAULT_TARGET_TRIPLE "powerpc64le-unknown-linux-gnu"
+-#else
+-#error "unknown architecture"
+-#endif
++/* #define LLVM_DEFAULT_TARGET_TRIPLE "amd64-unknown-openbsd6.8" */
+
+ /* Define if zlib compression is available */
+-#define LLVM_ENABLE_ZLIB 0
++/* #define LLVM_ENABLE_ZLIB 1 */
+
+ /* Define if overriding target triple is enabled */
+ /* #undef LLVM_TARGET_TRIPLE_ENV */
+@@ -346,10 +323,10 @@
+ #define PACKAGE_NAME "LLVM"
+
+ /* Define to the full name and version of this package. */
+-#define PACKAGE_STRING "LLVM 10.0.0"
++#define PACKAGE_STRING "LLVM 11.1.0"
+
+ /* Define to the version of this package. */
+-#define PACKAGE_VERSION "10.0.0"
++#define PACKAGE_VERSION "11.1.0"
+
+ /* Define to the vendor of this package. */
+ /* #undef PACKAGE_VENDOR */
+@@ -368,9 +345,6 @@
+
+ /* Whether GlobalISel rule coverage is being collected */
+ #define LLVM_GISEL_COV_ENABLED 0
+-
+-/* Define if we have z3 and want to build it */
+-#define LLVM_WITH_Z3 1
+
+ /* Define to the default GlobalISel coverage file prefix */
+ /* #undef LLVM_GISEL_COV_PREFIX */
diff --git a/devel/electron17/files/patch-third__party_swiftshader_third__party_llvm-subzero_build_Linux_include_llvm_Config_config.h b/devel/electron17/files/patch-third__party_swiftshader_third__party_llvm-subzero_build_Linux_include_llvm_Config_config.h
new file mode 100644
index 000000000000..28990155edfd
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_swiftshader_third__party_llvm-subzero_build_Linux_include_llvm_Config_config.h
@@ -0,0 +1,47 @@
+--- third_party/swiftshader/third_party/llvm-subzero/build/Linux/include/llvm/Config/config.h.orig 2022-05-11 07:08:02 UTC
++++ third_party/swiftshader/third_party/llvm-subzero/build/Linux/include/llvm/Config/config.h
+@@ -5,8 +5,6 @@
+ #include "llvm/Config/llvm-config.h"
+
+ /* For detecting __GLIBC__ usage */
+-#include <features.h>
+-
+ /* Bug report URL. */
+ #define BUG_REPORT_URL "http://llvm.org/bugs/"
+
+@@ -27,7 +25,7 @@
+
+ /* Define to 1 if you have the declaration of `arc4random', and to 0 if you
+ don't. */
+-#define HAVE_DECL_ARC4RANDOM 0
++#define HAVE_DECL_ARC4RANDOM 1
+
+ /* Define to 1 if you have the declaration of `FE_ALL_EXCEPT', and to 0 if you
+ don't. */
+@@ -124,7 +122,7 @@
+ #define HAVE_LINK_H 1
+
+ /* Define to 1 if you have the `lseek64' function. */
+-#define HAVE_LSEEK64 1
++/* #define HAVE_LSEEK64 */
+
+ /* Define to 1 if you have the <mach/mach.h> header file. */
+ /* #undef HAVE_MACH_MACH_H */
+@@ -133,7 +131,7 @@
+ /* #undef HAVE_MALLCTL */
+
+ /* Define to 1 if you have the `mallinfo' function. */
+-#define HAVE_MALLINFO 1
++/* #define HAVE_MALLINFO */
+
+ /* Some projects using SwiftShader bypass cmake (eg Chromium via gn) */
+ /* so we need to check glibc version for the new API to be safe */
+@@ -163,7 +161,7 @@
+ /* #undef HAVE_NDIR_H */
+
+ /* Define to 1 if you have the `posix_fallocate' function. */
+-#define HAVE_POSIX_FALLOCATE 1
++/* #define HAVE_POSIX_FALLOCATE */
+
+ /* Define to 1 if you have the `posix_spawn' function. */
+ #define HAVE_POSIX_SPAWN 1
diff --git a/devel/electron17/files/patch-third__party_swiftshader_third__party_marl_src_memory.cpp b/devel/electron17/files/patch-third__party_swiftshader_third__party_marl_src_memory.cpp
new file mode 100644
index 000000000000..a275aad32835
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_swiftshader_third__party_marl_src_memory.cpp
@@ -0,0 +1,11 @@
+--- third_party/swiftshader/third_party/marl/src/memory.cpp.orig 2022-05-11 07:08:02 UTC
++++ third_party/swiftshader/third_party/marl/src/memory.cpp
+@@ -19,7 +19,7 @@
+
+ #include <cstring>
+
+-#if defined(__linux__) || defined(__FreeBSD__) || defined(__APPLE__)
++#if defined(__linux__) || defined(__FreeBSD__) || defined(__APPLE__) || defined(__OpenBSD__)
+ #include <sys/mman.h>
+ #include <unistd.h>
+ namespace {
diff --git a/devel/electron17/files/patch-third__party_swiftshader_third__party_marl_src_thread.cpp b/devel/electron17/files/patch-third__party_swiftshader_third__party_marl_src_thread.cpp
new file mode 100644
index 000000000000..928dd764813a
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_swiftshader_third__party_marl_src_thread.cpp
@@ -0,0 +1,11 @@
+--- third_party/swiftshader/third_party/marl/src/thread.cpp.orig 2022-05-11 07:17:57 UTC
++++ third_party/swiftshader/third_party/marl/src/thread.cpp
+@@ -422,7 +422,7 @@ void Thread::setName(const char* fmt, ...) {
+ pthread_setname_np(name);
+ #elif defined(__FreeBSD__)
+ pthread_set_name_np(pthread_self(), name);
+-#elif !defined(__Fuchsia__)
++#elif !defined(__Fuchsia__) && !defined(__OpenBSD__) && !defined(__FreeBSD__)
+ pthread_setname_np(pthread_self(), name);
+ #endif
+
diff --git a/devel/electron17/files/patch-third__party_unrar_src_crypt.cpp b/devel/electron17/files/patch-third__party_unrar_src_crypt.cpp
new file mode 100644
index 000000000000..89fbee3195eb
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_unrar_src_crypt.cpp
@@ -0,0 +1,11 @@
+--- third_party/unrar/src/crypt.cpp.orig 2022-05-11 07:02:07 UTC
++++ third_party/unrar/src/crypt.cpp
+@@ -120,6 +120,8 @@ void GetRnd(byte *RndBuf,size_t BufSize)
+ Success=CryptGenRandom(hProvider, (DWORD)BufSize, RndBuf) == TRUE;
+ CryptReleaseContext(hProvider, 0);
+ }
++#elif defined(__OpenBSD__)
++ arc4random_buf(RndBuf, BufSize);
+ #elif defined(_UNIX)
+ FILE *rndf = fopen("/dev/urandom", "r");
+ if (rndf!=NULL)
diff --git a/devel/electron17/files/patch-third__party_usrsctp_BUILD.gn b/devel/electron17/files/patch-third__party_usrsctp_BUILD.gn
new file mode 100644
index 000000000000..89e249b4269d
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_usrsctp_BUILD.gn
@@ -0,0 +1,11 @@
+--- third_party/usrsctp/BUILD.gn.orig 2022-05-11 07:17:05 UTC
++++ third_party/usrsctp/BUILD.gn
+@@ -13,7 +13,7 @@ config("usrsctp_public_config") {
+
+ # This is part of the public config because it's used both by usrsctp and
+ # the client (WebRTC), to determine if the length field needs populating.
+- if (is_mac || is_ios || target_os == "freebsd") {
++ if (is_mac || is_ios || target_os == "freebsd" || target_os == "openbsd") {
+ defines = [ "HAVE_SCONN_LEN" ]
+ }
+ }
diff --git a/devel/electron17/files/patch-third__party_vulkan-deps_vulkan-loader_src_loader_allocation.h b/devel/electron17/files/patch-third__party_vulkan-deps_vulkan-loader_src_loader_allocation.h
new file mode 100644
index 000000000000..f0798ade19c0
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_vulkan-deps_vulkan-loader_src_loader_allocation.h
@@ -0,0 +1,14 @@
+--- third_party/vulkan-deps/vulkan-loader/src/loader/allocation.h.orig 2022-05-11 07:07:29 UTC
++++ third_party/vulkan-deps/vulkan-loader/src/loader/allocation.h
+@@ -39,8 +39,8 @@ void loader_device_heap_free(const struct loader_devic
+ void *loader_device_heap_realloc(const struct loader_device *device, void *pMemory, size_t orig_size, size_t size,
+ VkSystemAllocationScope alloc_scope);
+
+-#if defined(__linux__) || defined(__APPLE__) || defined(__Fuchsia__) || defined(__QNXNTO__) || defined(__FreeBSD__)
++#if defined(__linux__) || defined(__APPLE__) || defined(__Fuchsia__) || defined(__QNXNTO__) || defined(__FreeBSD__) || defined(__OpenBSD__)
+ #define loader_stack_alloc(size) alloca(size)
+ #elif defined(_WIN32)
+ #define loader_stack_alloc(size) _alloca(size)
+-#endif // defined(_WIN32)
+\ No newline at end of file
++#endif // defined(_WIN32)
diff --git a/devel/electron17/files/patch-third__party_vulkan-deps_vulkan-loader_src_loader_get__environment.c b/devel/electron17/files/patch-third__party_vulkan-deps_vulkan-loader_src_loader_get__environment.c
new file mode 100644
index 000000000000..aef6294b91ba
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_vulkan-deps_vulkan-loader_src_loader_get__environment.c
@@ -0,0 +1,27 @@
+--- third_party/vulkan-deps/vulkan-loader/src/loader/get_environment.c.orig 2022-05-11 07:18:05 UTC
++++ third_party/vulkan-deps/vulkan-loader/src/loader/get_environment.c
+@@ -37,7 +37,7 @@
+ #endif // !defined(VULKAN_NON_CMAKE_BUILD)
+
+ // Environment variables
+-#if defined(__linux__) || defined(__APPLE__) || defined(__Fuchsia__) || defined(__QNXNTO__) || defined(__FreeBSD__)
++#if defined(__linux__) || defined(__APPLE__) || defined(__Fuchsia__) || defined(__QNXNTO__) || defined(__FreeBSD__) || defined(__OpenBSD__)
+
+ bool is_high_integrity() { return geteuid() != getuid() || getegid() != getgid(); }
+
+@@ -49,7 +49,7 @@ char *loader_getenv(const char *name, const struct loa
+ }
+
+ char *loader_secure_getenv(const char *name, const struct loader_instance *inst) {
+-#if defined(__APPLE__) || defined(__FreeBSD__)
++#if defined(__APPLE__) || defined(__FreeBSD__) || defined(__OpenBSD__)
+ // Apple does not appear to have a secure getenv implementation.
+ // The main difference between secure getenv and getenv is that secure getenv
+ // returns NULL if the process is being run with elevated privileges by a normal user.
+@@ -169,4 +169,4 @@ void loader_free_getenv(char *val, const struct loader
+ (void)inst;
+ }
+
+-#endif
+\ No newline at end of file
++#endif
diff --git a/devel/electron17/files/patch-third__party_vulkan-deps_vulkan-loader_src_loader_get__environment.h b/devel/electron17/files/patch-third__party_vulkan-deps_vulkan-loader_src_loader_get__environment.h
new file mode 100644
index 000000000000..3bd242ab5a03
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_vulkan-deps_vulkan-loader_src_loader_get__environment.h
@@ -0,0 +1,16 @@
+--- third_party/vulkan-deps/vulkan-loader/src/loader/get_environment.h.orig 2022-05-11 07:07:29 UTC
++++ third_party/vulkan-deps/vulkan-loader/src/loader/get_environment.h
+@@ -35,10 +35,10 @@
+ char *loader_getenv(const char *name, const struct loader_instance *inst);
+ void loader_free_getenv(char *val, const struct loader_instance *inst);
+
+-#if defined(WIN32) || defined(__linux__) || defined(__APPLE__) || defined(__Fuchsia__) || defined(__QNXNTO__) || defined(__FreeBSD__)
++#if defined(WIN32) || defined(__linux__) || defined(__APPLE__) || defined(__Fuchsia__) || defined(__QNXNTO__) || defined(__FreeBSD__) || defined(__OpenBSD__)
+
+ bool is_high_integrity();
+
+ char *loader_secure_getenv(const char *name, const struct loader_instance *inst);
+
+-#endif
+\ No newline at end of file
++#endif
diff --git a/devel/electron17/files/patch-third__party_vulkan-deps_vulkan-loader_src_loader_vk__loader__platform.h b/devel/electron17/files/patch-third__party_vulkan-deps_vulkan-loader_src_loader_vk__loader__platform.h
new file mode 100644
index 000000000000..5c244d07ad0e
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_vulkan-deps_vulkan-loader_src_loader_vk__loader__platform.h
@@ -0,0 +1,29 @@
+--- third_party/vulkan-deps/vulkan-loader/src/loader/vk_loader_platform.h.orig 2022-05-11 07:18:05 UTC
++++ third_party/vulkan-deps/vulkan-loader/src/loader/vk_loader_platform.h
+@@ -42,7 +42,7 @@
+ #include "dlopen_fuchsia.h"
+ #endif // defined(__Fuchsia__)
+
+-#if defined(__linux__) || defined(__APPLE__) || defined(__Fuchsia__) || defined(__QNXNTO__) || defined(__FreeBSD__)
++#if defined(__linux__) || defined(__APPLE__) || defined(__Fuchsia__) || defined(__QNXNTO__) || defined(__FreeBSD__) || defined(__OpenBSD__)
+ #include <unistd.h>
+ // Note: The following file is for dynamic loading:
+ #include <dlfcn.h>
+@@ -102,7 +102,7 @@
+ // Override layer information
+ #define VK_OVERRIDE_LAYER_NAME "VK_LAYER_LUNARG_override"
+
+-#if defined(__linux__) || defined(__APPLE__) || defined(__Fuchsia__) || defined(__QNXNTO__) || defined(__FreeBSD__)
++#if defined(__linux__) || defined(__APPLE__) || defined(__Fuchsia__) || defined(__QNXNTO__) || defined(__FreeBSD__) || defined(__OpenBSD__)
+ /* Linux-specific common code: */
+
+ // VK Library Filenames, Paths, etc.:
+@@ -195,7 +195,7 @@ static inline char *loader_platform_executable_path(ch
+
+ return buffer;
+ }
+-#elif defined(__Fuchsia__)
++#elif defined(__Fuchsia__) || defined(__OpenBSD__) || defined(__FreeBSD__)
+ static inline char *loader_platform_executable_path(char *buffer, size_t size) { return NULL; }
+ #elif defined(__QNXNTO__)
+
diff --git a/devel/electron17/files/patch-third__party_vulkan-deps_vulkan-validation-layers_src_layers_vk__loader__platform.h b/devel/electron17/files/patch-third__party_vulkan-deps_vulkan-validation-layers_src_layers_vk__loader__platform.h
new file mode 100644
index 000000000000..1c7d7f218d2d
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_vulkan-deps_vulkan-validation-layers_src_layers_vk__loader__platform.h
@@ -0,0 +1,11 @@
+--- third_party/vulkan-deps/vulkan-validation-layers/src/layers/vk_loader_platform.h.orig 2022-05-11 07:08:01 UTC
++++ third_party/vulkan-deps/vulkan-validation-layers/src/layers/vk_loader_platform.h
+@@ -33,7 +33,7 @@
+ #undef NOMINMAX
+ #include "vulkan/vk_sdk_platform.h"
+
+-#if defined(__linux__) || defined(__APPLE__) || defined(__FreeBSD__)
++#if defined(__linux__) || defined(__APPLE__) || defined(__FreeBSD__) || defined(__OpenBSD__)
+ /* Linux-specific common code: */
+
+ // Headers:
diff --git a/devel/electron17/files/patch-third__party_vulkan-deps_vulkan-validation-layers_src_layers_vk__mem__alloc.h b/devel/electron17/files/patch-third__party_vulkan-deps_vulkan-validation-layers_src_layers_vk__mem__alloc.h
new file mode 100644
index 000000000000..3f18943d9c89
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_vulkan-deps_vulkan-validation-layers_src_layers_vk__mem__alloc.h
@@ -0,0 +1,12 @@
+--- third_party/vulkan-deps/vulkan-validation-layers/src/layers/vk_mem_alloc.h.orig 2022-05-11 07:08:01 UTC
++++ third_party/vulkan-deps/vulkan-validation-layers/src/layers/vk_mem_alloc.h
+@@ -3181,7 +3181,8 @@ void *aligned_alloc(size_t alignment, size_t size)
+
+ return memalign(alignment, size);
+ }
+-#elif defined(__APPLE__) || defined(__ANDROID__)
++#elif defined(__APPLE__) || defined(__ANDROID__) || defined(__OpenBSD__) || \
++ defined(__FreeBSD__)
+ # define ALIGNED_ALLOC_WITH_POSIX_MEMALIGN
+ #elif defined(__GNU_LIBRARY__)
+ # if !defined(__GLIBC_PREREQ) || !__GLIBC_PREREQ(2, 16)
diff --git a/devel/electron17/files/patch-third__party_vulkan__memory__allocator_include_vk__mem__alloc.h b/devel/electron17/files/patch-third__party_vulkan__memory__allocator_include_vk__mem__alloc.h
new file mode 100644
index 000000000000..319dcd922caf
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_vulkan__memory__allocator_include_vk__mem__alloc.h
@@ -0,0 +1,11 @@
+--- third_party/vulkan_memory_allocator/include/vk_mem_alloc.h.orig 2022-05-13 07:19:54 UTC
++++ third_party/vulkan_memory_allocator/include/vk_mem_alloc.h
+@@ -2503,7 +2503,7 @@ void *vma_aligned_alloc(size_t alignment, size_t size)
+
+ return memalign(alignment, size);
+ }
+-#elif defined(__APPLE__) || defined(__ANDROID__) || (defined(__linux__) && defined(__GLIBCXX__) && !defined(_GLIBCXX_HAVE_ALIGNED_ALLOC))
++#elif defined(__APPLE__) || defined(__ANDROID__) || (defined(__linux__) && defined(__GLIBCXX__) && !defined(_GLIBCXX_HAVE_ALIGNED_ALLOC)) || defined(__OpenBSD__) || defined(__FreeBSD__)
+ #include <cstdlib>
+
+ #if defined(__APPLE__)
diff --git a/devel/electron17/files/patch-third__party_webrtc_BUILD.gn b/devel/electron17/files/patch-third__party_webrtc_BUILD.gn
new file mode 100644
index 000000000000..8a742f24af6c
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_webrtc_BUILD.gn
@@ -0,0 +1,12 @@
+--- third_party/webrtc/BUILD.gn.orig 2022-05-11 07:17:58 UTC
++++ third_party/webrtc/BUILD.gn
+@@ -191,6 +191,9 @@ config("common_inherited_config") {
+ if (is_linux || is_chromeos) {
+ defines += [ "WEBRTC_LINUX" ]
+ }
++ if (is_bsd) {
++ defines += [ "WEBRTC_BSD" ]
++ }
+ if (is_mac) {
+ defines += [ "WEBRTC_MAC" ]
+ }
diff --git a/devel/electron17/files/patch-third__party_webrtc_modules_audio__device_BUILD.gn b/devel/electron17/files/patch-third__party_webrtc_modules_audio__device_BUILD.gn
new file mode 100644
index 000000000000..6630d5ed2387
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_webrtc_modules_audio__device_BUILD.gn
@@ -0,0 +1,11 @@
+--- third_party/webrtc/modules/audio_device/BUILD.gn.orig 2021-07-15 19:15:55 UTC
++++ third_party/webrtc/modules/audio_device/BUILD.gn
+@@ -264,7 +264,7 @@ rtc_library("audio_device_impl") {
+ if (rtc_use_dummy_audio_file_devices) {
+ defines += [ "WEBRTC_DUMMY_FILE_DEVICES" ]
+ } else {
+- if (is_linux || is_chromeos) {
++ if ((is_linux || is_chromeos) && !is_bsd) {
+ sources += [
+ "linux/alsasymboltable_linux.cc",
+ "linux/alsasymboltable_linux.h",
diff --git a/devel/electron17/files/patch-third__party_webrtc_modules_desktop__capture_linux_x__server__pixel__buffer.cc b/devel/electron17/files/patch-third__party_webrtc_modules_desktop__capture_linux_x__server__pixel__buffer.cc
new file mode 100644
index 000000000000..d1f954452fe0
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_webrtc_modules_desktop__capture_linux_x__server__pixel__buffer.cc
@@ -0,0 +1,16 @@
+--- third_party/webrtc/modules/desktop_capture/linux/x_server_pixel_buffer.cc.orig 2022-05-11 07:17:59 UTC
++++ third_party/webrtc/modules/desktop_capture/linux/x_server_pixel_buffer.cc
+@@ -213,6 +213,13 @@ void XServerPixelBuffer::InitShm(const XWindowAttribut
+ Visual* default_visual = attributes.visual;
+ int default_depth = attributes.depth;
+
++#if defined(__OpenBSD__)
++ // pledge(2)
++ RTC_LOG(LS_WARNING) << "Unable to use shmget(2) while using pledge(2). "
++ "Performance may be degraded.";
++ return;
++#endif
++
+ int major, minor;
+ Bool have_pixmaps;
+ if (!XShmQueryVersion(display_, &major, &minor, &have_pixmaps)) {
diff --git a/devel/electron17/files/patch-third__party_webrtc_rtc__base_BUILD.gn b/devel/electron17/files/patch-third__party_webrtc_rtc__base_BUILD.gn
new file mode 100644
index 000000000000..6258e544aab4
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_webrtc_rtc__base_BUILD.gn
@@ -0,0 +1,11 @@
+--- third_party/webrtc/rtc_base/BUILD.gn.orig 2022-05-11 07:17:59 UTC
++++ third_party/webrtc/rtc_base/BUILD.gn
+@@ -1082,7 +1082,7 @@ rtc_library("rtc_base") {
+ sources += [ "mac_ifaddrs_converter.cc" ]
+ }
+
+- if (is_linux || is_chromeos) {
++ if ((is_linux || is_chromeos) && !is_bsd) {
+ libs += [
+ "dl",
+ "rt",
diff --git a/devel/electron17/files/patch-third__party_webrtc_rtc__base_byte__order.h b/devel/electron17/files/patch-third__party_webrtc_rtc__base_byte__order.h
new file mode 100644
index 000000000000..a5ddd38e96da
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_webrtc_rtc__base_byte__order.h
@@ -0,0 +1,11 @@
+--- third_party/webrtc/rtc_base/byte_order.h.orig 2022-05-11 07:06:40 UTC
++++ third_party/webrtc/rtc_base/byte_order.h
+@@ -88,6 +88,8 @@
+ #error WEBRTC_ARCH_BIG_ENDIAN or WEBRTC_ARCH_LITTLE_ENDIAN must be defined.
+ #endif // defined(WEBRTC_ARCH_LITTLE_ENDIAN)
+
++#elif defined(WEBRTC_BSD)
++#include <sys/endian.h>
+ #elif defined(WEBRTC_POSIX)
+ #include <endian.h>
+ #else
diff --git a/devel/electron17/files/patch-third__party_webrtc_rtc__base_ip__address.cc b/devel/electron17/files/patch-third__party_webrtc_rtc__base_ip__address.cc
new file mode 100644
index 000000000000..0b34d5ee668a
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_webrtc_rtc__base_ip__address.cc
@@ -0,0 +1,12 @@
+--- third_party/webrtc/rtc_base/ip_address.cc.orig 2022-05-11 07:17:59 UTC
++++ third_party/webrtc/rtc_base/ip_address.cc
+@@ -11,7 +11,8 @@
+ #if defined(WEBRTC_POSIX)
+ #include <netinet/in.h>
+ #include <sys/socket.h>
+-#ifdef OPENBSD
++#if defined(WEBRTC_BSD)
++#include <sys/types.h>
+ #include <netinet/in_systm.h>
+ #endif
+ #ifndef __native_client__
diff --git a/devel/electron17/files/patch-third__party_webrtc_rtc__base_physical__socket__server.cc b/devel/electron17/files/patch-third__party_webrtc_rtc__base_physical__socket__server.cc
new file mode 100644
index 000000000000..80e8af852775
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_webrtc_rtc__base_physical__socket__server.cc
@@ -0,0 +1,65 @@
+--- third_party/webrtc/rtc_base/physical_socket_server.cc.orig 2022-05-11 07:06:40 UTC
++++ third_party/webrtc/rtc_base/physical_socket_server.cc
+@@ -51,7 +51,7 @@
+ #include "rtc_base/synchronization/mutex.h"
+ #include "rtc_base/time_utils.h"
+
+-#if defined(WEBRTC_LINUX)
++#if defined(WEBRTC_LINUX) && !defined(WEBRTC_BSD)
+ #include <linux/sockios.h>
+ #endif
+
+@@ -70,7 +70,7 @@ typedef void* SockOptArg;
+
+ #endif // WEBRTC_POSIX
+
+-#if defined(WEBRTC_POSIX) && !defined(WEBRTC_MAC) && !defined(__native_client__)
++#if defined(WEBRTC_POSIX) && !defined(WEBRTC_MAC) && !defined(__native_client__) && !defined(WEBRTC_BSD)
+
+ int64_t GetSocketRecvTimestamp(int socket) {
+ struct timeval tv_ioctl;
+@@ -298,7 +298,7 @@ int PhysicalSocket::GetOption(Option opt, int* value)
+ return -1;
+ }
+ if (opt == OPT_DONTFRAGMENT) {
+-#if defined(WEBRTC_LINUX) && !defined(WEBRTC_ANDROID)
++#if defined(WEBRTC_LINUX) && !defined(WEBRTC_ANDROID) && !defined(WEBRTC_BSD)
+ *value = (*value != IP_PMTUDISC_DONT) ? 1 : 0;
+ #endif
+ } else if (opt == OPT_DSCP) {
+@@ -316,7 +316,7 @@ int PhysicalSocket::SetOption(Option opt, int value) {
+ if (TranslateOption(opt, &slevel, &sopt) == -1)
+ return -1;
+ if (opt == OPT_DONTFRAGMENT) {
+-#if defined(WEBRTC_LINUX) && !defined(WEBRTC_ANDROID)
++#if defined(WEBRTC_LINUX) && !defined(WEBRTC_ANDROID) && !defined(WEBRTC_BSD)
+ value = (value) ? IP_PMTUDISC_DO : IP_PMTUDISC_DONT;
+ #endif
+ } else if (opt == OPT_DSCP) {
+@@ -344,7 +344,7 @@ int PhysicalSocket::SetOption(Option opt, int value) {
+ int PhysicalSocket::Send(const void* pv, size_t cb) {
+ int sent = DoSend(
+ s_, reinterpret_cast<const char*>(pv), static_cast<int>(cb),
+-#if defined(WEBRTC_LINUX) && !defined(WEBRTC_ANDROID)
++#if defined(WEBRTC_LINUX) && !defined(WEBRTC_ANDROID) && !defined(WEBRTC_BSD)
+ // Suppress SIGPIPE. Without this, attempting to send on a socket whose
+ // other end is closed will result in a SIGPIPE signal being raised to
+ // our process, which by default will terminate the process, which we
+@@ -373,7 +373,7 @@ int PhysicalSocket::SendTo(const void* buffer,
+ size_t len = addr.ToSockAddrStorage(&saddr);
+ int sent =
+ DoSendTo(s_, static_cast<const char*>(buffer), static_cast<int>(length),
+-#if defined(WEBRTC_LINUX) && !defined(WEBRTC_ANDROID)
++#if defined(WEBRTC_LINUX) && !defined(WEBRTC_ANDROID) && !defined(WEBRTC_BSD)
+ // Suppress SIGPIPE. See above for explanation.
+ MSG_NOSIGNAL,
+ #else
+@@ -564,7 +564,7 @@ int PhysicalSocket::TranslateOption(Option opt, int* s
+ *slevel = IPPROTO_IP;
+ *sopt = IP_DONTFRAGMENT;
+ break;
+-#elif defined(WEBRTC_MAC) || defined(BSD) || defined(__native_client__)
++#elif defined(WEBRTC_MAC) || defined(WEBRTC_BSD) || defined(__native_client__)
+ RTC_LOG(LS_WARNING) << "Socket::OPT_DONTFRAGMENT not supported.";
+ return -1;
+ #elif defined(WEBRTC_POSIX)
diff --git a/devel/electron17/files/patch-third__party_webrtc_rtc__base_physical__socket__server.h b/devel/electron17/files/patch-third__party_webrtc_rtc__base_physical__socket__server.h
new file mode 100644
index 000000000000..2bbe1d8b7d5d
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_webrtc_rtc__base_physical__socket__server.h
@@ -0,0 +1,11 @@
+--- third_party/webrtc/rtc_base/physical_socket_server.h.orig 2021-01-07 00:39:38 UTC
++++ third_party/webrtc/rtc_base/physical_socket_server.h
+@@ -11,7 +11,7 @@
+ #ifndef RTC_BASE_PHYSICAL_SOCKET_SERVER_H_
+ #define RTC_BASE_PHYSICAL_SOCKET_SERVER_H_
+
+-#if defined(WEBRTC_POSIX) && defined(WEBRTC_LINUX)
++#if defined(WEBRTC_POSIX) && defined(WEBRTC_LINUX) && !defined(WEBRTC_BSD)
+ #include <sys/epoll.h>
+ #define WEBRTC_USE_EPOLL 1
+ #endif
diff --git a/devel/electron17/files/patch-third__party_webrtc_rtc__base_platform__thread__types.cc b/devel/electron17/files/patch-third__party_webrtc_rtc__base_platform__thread__types.cc
new file mode 100644
index 000000000000..fa885df383c8
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_webrtc_rtc__base_platform__thread__types.cc
@@ -0,0 +1,40 @@
+--- third_party/webrtc/rtc_base/platform_thread_types.cc.orig 2022-05-11 07:06:40 UTC
++++ third_party/webrtc/rtc_base/platform_thread_types.cc
+@@ -11,7 +11,9 @@
+ #include "rtc_base/platform_thread_types.h"
+
+ #if defined(WEBRTC_LINUX)
++#if !defined(WEBRTC_BSD)
+ #include <sys/prctl.h>
++#endif
+ #include <sys/syscall.h>
+ #endif
+
+@@ -37,8 +39,10 @@ PlatformThreadId CurrentThreadId() {
+ return gettid();
+ #elif defined(WEBRTC_FUCHSIA)
+ return zx_thread_self();
+-#elif defined(WEBRTC_LINUX)
++#elif defined(WEBRTC_LINUX) && !defined(WEBRTC_BSD)
+ return syscall(__NR_gettid);
++#elif defined(WEBRTC_BSD)
++ return reinterpret_cast<uint64_t>(pthread_self());
+ #elif defined(__EMSCRIPTEN__)
+ return static_cast<PlatformThreadId>(pthread_self());
+ #else
+@@ -67,6 +71,7 @@ bool IsThreadRefEqual(const PlatformThreadRef& a, cons
+ }
+
+ void SetCurrentThreadName(const char* name) {
++#if !defined(WEBRTC_BSD)
+ #if defined(WEBRTC_WIN)
+ // The SetThreadDescription API works even if no debugger is attached.
+ // The names set with this API also show up in ETW traces. Very handy.
+@@ -109,6 +114,7 @@ void SetCurrentThreadName(const char* name) {
+ prctl(PR_SET_NAME, reinterpret_cast<unsigned long>(name)); // NOLINT
+ #elif defined(WEBRTC_MAC) || defined(WEBRTC_IOS)
+ pthread_setname_np(name);
++#endif
+ #endif
+ }
+
diff --git a/devel/electron17/files/patch-third__party_webrtc_rtc__base_third__party_sigslot_sigslot.h b/devel/electron17/files/patch-third__party_webrtc_rtc__base_third__party_sigslot_sigslot.h
new file mode 100644
index 000000000000..91f922fe832c
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_webrtc_rtc__base_third__party_sigslot_sigslot.h
@@ -0,0 +1,23 @@
+--- third_party/webrtc/rtc_base/third_party/sigslot/sigslot.h.orig 2022-05-11 07:06:40 UTC
++++ third_party/webrtc/rtc_base/third_party/sigslot/sigslot.h
+@@ -178,6 +178,10 @@ class multi_threaded_local {
+ #endif // _SIGSLOT_HAS_WIN32_THREADS
+
+ #ifdef _SIGSLOT_HAS_POSIX_THREADS
++#if defined(OS_FREEBSD)
++#pragma GCC diagnostic push
++#pragma GCC diagnostic ignored "-Wthread-safety-analysis"
++#endif
+ // The multi threading policies only get compiled in if they are enabled.
+ class multi_threaded_global {
+ public:
+@@ -201,6 +205,9 @@ class multi_threaded_local {
+ private:
+ pthread_mutex_t m_mutex;
+ };
++#if defined(OS_FREEBSD)
++#pragma GCC diagnostic pop
++#endif
+ #endif // _SIGSLOT_HAS_POSIX_THREADS
+
+ template <class mt_policy>
diff --git a/devel/electron17/files/patch-third__party_webrtc_system__wrappers_BUILD.gn b/devel/electron17/files/patch-third__party_webrtc_system__wrappers_BUILD.gn
new file mode 100644
index 000000000000..8c66b13b632c
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_webrtc_system__wrappers_BUILD.gn
@@ -0,0 +1,11 @@
+--- third_party/webrtc/system_wrappers/BUILD.gn.orig 2021-04-14 01:15:32 UTC
++++ third_party/webrtc/system_wrappers/BUILD.gn
+@@ -61,8 +61,6 @@ rtc_library("system_wrappers") {
+ if (!build_with_chromium) {
+ sources += [ "source/cpu_features_linux.cc" ]
+ }
+-
+- libs += [ "rt" ]
+ }
+
+ if (is_win) {
diff --git a/devel/electron17/files/patch-third__party_zlib_BUILD.gn b/devel/electron17/files/patch-third__party_zlib_BUILD.gn
new file mode 100644
index 000000000000..215c520e877a
--- /dev/null
+++ b/devel/electron17/files/patch-third__party_zlib_BUILD.gn
@@ -0,0 +1,29 @@
+--- third_party/zlib/BUILD.gn.orig 2022-05-13 07:19:54 UTC
++++ third_party/zlib/BUILD.gn
+@@ -115,7 +115,7 @@ if (use_arm_neon_optimizations) {
+ # Disabled for iPhone, as described in DDI0487C_a_armv8_arm:
+ # "All implementations of the ARMv8.1 architecture are required to
+ # implement the CRC32* instructions. These are optional in ARMv8.0."
+- if (!is_ios) {
++ if (!is_ios && !is_bsd) {
+ defines = [ "CRC32_ARMV8_CRC32" ]
+ if (is_android) {
+ defines += [ "ARMV8_OS_ANDROID" ]
+@@ -136,7 +136,7 @@ if (use_arm_neon_optimizations) {
+ source_set("zlib_arm_crc32") {
+ visibility = [ ":*" ]
+
+- if (!is_ios) {
++ if (!is_ios && !is_bsd) {
+ include_dirs = [ "." ]
+
+ if (!is_win && !is_clang) {
+@@ -400,7 +400,7 @@ static_library("minizip") {
+ ]
+ }
+
+- if (is_apple || is_android || is_nacl) {
++ if (is_apple || is_android || is_nacl || is_bsd) {
+ # Mac, Android and the BSDs don't have fopen64, ftello64, or fseeko64. We
+ # use fopen, ftell, and fseek instead on these systems.
+ defines = [ "USE_FILE32API" ]
diff --git a/devel/electron17/files/patch-tools_generate__stubs_rules.gni b/devel/electron17/files/patch-tools_generate__stubs_rules.gni
new file mode 100644
index 000000000000..cf0f7e353958
--- /dev/null
+++ b/devel/electron17/files/patch-tools_generate__stubs_rules.gni
@@ -0,0 +1,10 @@
+--- tools/generate_stubs/rules.gni.orig 2022-05-11 07:02:08 UTC
++++ tools/generate_stubs/rules.gni
+@@ -96,7 +96,6 @@ template("generate_stubs") {
+ "${target_gen_dir}/${invoker.output_name}.cc",
+ "${target_gen_dir}/${invoker.output_name}.h",
+ ]
+- libs = [ "dl" ]
+ include_dirs = [ target_gen_dir ]
+ if (defined(invoker.configs)) {
+ configs += invoker.configs
diff --git a/devel/electron17/files/patch-tools_gn_build_build__linux.ninja.template b/devel/electron17/files/patch-tools_gn_build_build__linux.ninja.template
new file mode 100644
index 000000000000..7a147b33472d
--- /dev/null
+++ b/devel/electron17/files/patch-tools_gn_build_build__linux.ninja.template
@@ -0,0 +1,11 @@
+--- tools/gn/build/build_linux.ninja.template.orig 2022-02-15 03:23:13 UTC
++++ tools/gn/build/build_linux.ninja.template
+@@ -5,7 +5,7 @@ rule cxx
+ deps = gcc
+
+ rule alink_thin
+- command = rm -f $out && $ar rcsT $out $in
++ command = rm -f $out && $ar rcs $out $in
+ description = AR $out
+
+ rule link
diff --git a/devel/electron17/files/patch-tools_gn_build_gen.py b/devel/electron17/files/patch-tools_gn_build_gen.py
new file mode 100644
index 000000000000..f56c7f059c28
--- /dev/null
+++ b/devel/electron17/files/patch-tools_gn_build_gen.py
@@ -0,0 +1,34 @@
+--- tools/gn/build/gen.py.orig 2022-02-15 03:23:13 UTC
++++ tools/gn/build/gen.py
+@@ -91,6 +91,12 @@ class Platform(object):
+ def is_solaris(self):
+ return self._platform == 'solaris'
+
++ def is_openbsd(self):
++ return self._platform == 'openbsd'
++
++ def is_freebsd(self):
++ return self._platform == 'freebsd'
++
+ def is_posix(self):
+ return self._platform in ['linux', 'freebsd', 'darwin', 'aix', 'openbsd', 'haiku', 'solaris', 'msys', 'netbsd']
+
+@@ -228,7 +234,7 @@ def WriteGenericNinja(path, static_libraries, executab
+ 'linux': 'build_linux.ninja.template',
+ 'freebsd': 'build_linux.ninja.template',
+ 'aix': 'build_aix.ninja.template',
+- 'openbsd': 'build_openbsd.ninja.template',
++ 'openbsd': 'build_linux.ninja.template',
+ 'haiku': 'build_haiku.ninja.template',
+ 'solaris': 'build_linux.ninja.template',
+ 'netbsd': 'build_linux.ninja.template',
+@@ -432,6 +438,9 @@ def WriteGNNinja(path, platform, host, options):
+
+ if platform.is_posix() and not platform.is_haiku():
+ ldflags.append('-pthread')
++
++ if platform.is_openbsd():
++ libs.append('-lkvm')
+
+ if platform.is_mingw() or platform.is_msys():
+ cflags.extend(['-DUNICODE',
diff --git a/devel/electron17/files/patch-tools_gn_src_base_files_file__posix.cc b/devel/electron17/files/patch-tools_gn_src_base_files_file__posix.cc
new file mode 100644
index 000000000000..b892517b9ad3
--- /dev/null
+++ b/devel/electron17/files/patch-tools_gn_src_base_files_file__posix.cc
@@ -0,0 +1,11 @@
+--- tools/gn/src/base/files/file_posix.cc.orig 2021-10-08 06:35:51 UTC
++++ tools/gn/src/base/files/file_posix.cc
+@@ -369,7 +369,7 @@ void File::DoInitialize(const FilePath& path, uint32_t
+ bool File::Flush() {
+ DCHECK(IsValid());
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ return !HANDLE_EINTR(fdatasync(file_.get()));
+ #else
+ return !HANDLE_EINTR(fsync(file_.get()));
diff --git a/devel/electron17/files/patch-tools_gn_src_gn_version.h b/devel/electron17/files/patch-tools_gn_src_gn_version.h
new file mode 100644
index 000000000000..a3c6f07d4a48
--- /dev/null
+++ b/devel/electron17/files/patch-tools_gn_src_gn_version.h
@@ -0,0 +1,15 @@
+--- tools/gn/src/gn/version.h.orig 2021-09-14 02:05:25 UTC
++++ tools/gn/src/gn/version.h
+@@ -22,9 +22,9 @@ class Version {
+
+ static std::optional<Version> FromString(std::string s);
+
+- int major() const { return major_; }
+- int minor() const { return minor_; }
+- int patch() const { return patch_; }
++ int gmajor() const { return major_; }
++ int gminor() const { return minor_; }
++ int gpatch() const { return patch_; }
+
+ bool operator==(const Version& other) const;
+ bool operator<(const Version& other) const;
diff --git a/devel/electron17/files/patch-tools_gn_src_util_exe__path.cc b/devel/electron17/files/patch-tools_gn_src_util_exe__path.cc
new file mode 100644
index 000000000000..5ca6d5fe162c
--- /dev/null
+++ b/devel/electron17/files/patch-tools_gn_src_util_exe__path.cc
@@ -0,0 +1,90 @@
+--- tools/gn/src/util/exe_path.cc.orig 2022-02-15 03:23:13 UTC
++++ tools/gn/src/util/exe_path.cc
+@@ -15,7 +15,7 @@
+ #include <windows.h>
+
+ #include "base/win/win_util.h"
+-#elif defined(OS_FREEBSD) || defined(OS_NETBSD)
++#elif defined(OS_FREEBSD) || defined(OS_NETBSD) || defined(OS_OPENBSD)
+ #include <limits.h>
+ #include <sys/sysctl.h>
+ #include <sys/types.h>
+@@ -26,6 +26,10 @@
+ #include <stdlib.h>
+ #endif
+
++#if defined(OS_OPENBSD)
++#include <kvm.h>
++#endif
++
+ #if defined(OS_MACOSX)
+
+ base::FilePath GetExePath() {
+@@ -102,6 +106,67 @@ base::FilePath GetExePath() {
+ return base::FilePath();
+ }
+ return base::FilePath(raw);
++}
++
++#elif defined(OS_OPENBSD)
++
++base::FilePath GetExePath() {
++ struct kinfo_file *files;
++ kvm_t *kd = NULL;
++ char errbuf[_POSIX2_LINE_MAX];
++ char **retvalargs;
++#define MAXTOKENS 2
++ char *tokens[MAXTOKENS];
++ static char retval[PATH_MAX];
++ int cnt;
++ size_t len;
++ struct stat sb;
++ pid_t cpid = getpid();
++
++ int mib[] = { CTL_KERN, KERN_PROC_ARGS, cpid, KERN_PROC_ARGV };
++
++ if (sysctl(mib, 4, NULL, &len, NULL, 0) != -1) {
++ retvalargs = static_cast<char**>(malloc(len));
++ if (!retvalargs)
++ goto out;
++
++ if (sysctl(mib, 4, retvalargs, &len, NULL, 0) < 0)
++ goto out;
++
++ char *cr = strdup(retvalargs[0]);
++ free(retvalargs);
++
++ *tokens = strtok(cr, ":");
++ if (tokens[0] == NULL)
++ goto out;
++
++ if (realpath(tokens[0], retval) == NULL)
++ goto out;
++
++ if (stat(retval, &sb) < 0)
++ goto out;
++
++ if ((kd = kvm_openfiles(NULL, NULL, NULL, KVM_NO_FILES, errbuf)) == NULL)
++ goto out;
++
++ if ((files = kvm_getfiles(kd, KERN_FILE_BYPID, cpid,
++ sizeof(struct kinfo_file), &cnt)) == NULL) {
++ kvm_close(kd);
++ goto out;
++ }
++
++ for (int i = 0; i < cnt; i++) {
++ if (files[i].fd_fd == KERN_FILE_TEXT &&
++ files[i].va_fsid == static_cast<uint32_t>(sb.st_dev) &&
++ files[i].va_fileid == sb.st_ino) {
++ kvm_close(kd);
++ return base::FilePath(retval);
++ }
++ }
++ }
++
++out:
++ return base::FilePath();
+ }
+
+ #elif defined(OS_ZOS)
diff --git a/devel/electron17/files/patch-tools_json__schema__compiler_cpp__bundle__generator.py b/devel/electron17/files/patch-tools_json__schema__compiler_cpp__bundle__generator.py
new file mode 100644
index 000000000000..62098bc09bfd
--- /dev/null
+++ b/devel/electron17/files/patch-tools_json__schema__compiler_cpp__bundle__generator.py
@@ -0,0 +1,11 @@
+--- tools/json_schema_compiler/cpp_bundle_generator.py.orig 2022-05-11 07:17:06 UTC
++++ tools/json_schema_compiler/cpp_bundle_generator.py
+@@ -154,7 +154,7 @@ class CppBundleGenerator(object):
+ # defined(OS_CHROMEOS) && BUILDFLAG(IS_CHROMEOS_LACROS).
+ ifdefs.append('BUILDFLAG(IS_CHROMEOS_LACROS)')
+ elif platform == Platforms.LINUX:
+- ifdefs.append('(defined(OS_LINUX) && !defined(OS_CHROMEOS))')
++ ifdefs.append('(defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)')
+ elif platform == Platforms.MAC:
+ ifdefs.append('defined(OS_MAC)')
+ elif platform == Platforms.WIN:
diff --git a/devel/electron17/files/patch-tools_json__schema__compiler_feature__compiler.py b/devel/electron17/files/patch-tools_json__schema__compiler_feature__compiler.py
new file mode 100644
index 000000000000..0d888ab6b0e8
--- /dev/null
+++ b/devel/electron17/files/patch-tools_json__schema__compiler_feature__compiler.py
@@ -0,0 +1,10 @@
+--- tools/json_schema_compiler/feature_compiler.py.orig 2022-05-11 07:17:06 UTC
++++ tools/json_schema_compiler/feature_compiler.py
+@@ -264,6 +264,7 @@ FEATURE_GRAMMAR = ({
+ 'mac': 'Feature::MACOSX_PLATFORM',
+ 'win': 'Feature::WIN_PLATFORM',
+ 'fuchsia': 'Feature::FUCHSIA_PLATFORM',
++ 'openbsd': 'Feature::LINUX_PLATFORM',
+ }
+ }
+ },
diff --git a/devel/electron17/files/patch-tools_perf_chrome__telemetry__build_BUILD.gn b/devel/electron17/files/patch-tools_perf_chrome__telemetry__build_BUILD.gn
new file mode 100644
index 000000000000..516bc7dceb90
--- /dev/null
+++ b/devel/electron17/files/patch-tools_perf_chrome__telemetry__build_BUILD.gn
@@ -0,0 +1,20 @@
+--- tools/perf/chrome_telemetry_build/BUILD.gn.orig 2022-05-11 07:02:08 UTC
++++ tools/perf/chrome_telemetry_build/BUILD.gn
+@@ -45,7 +45,7 @@ group("telemetry_chrome_test") {
+ data_deps += [ "//chrome:reorder_imports" ]
+ }
+
+- if (is_linux || is_chromeos) {
++ if ((is_linux || is_chromeos) && !is_bsd) {
+ data_deps += [ "//third_party/breakpad:dump_syms($host_toolchain)" ]
+
+ # CrOS currently has issues with the locally compiled version of
+@@ -212,7 +212,7 @@ group("telemetry_chrome_test_without_chrome") {
+ ]
+
+ # Cr-Fuchsia doesn't support breakpad.
+- if (!is_win && !is_fuchsia) {
++ if (!is_win && !is_fuchsia && !is_bsd) {
+ data_deps += [
+ # This is defined for Windows, but is unused by Telemetry on
+ # Windows, and including it can have issues when cross-compiling
diff --git a/devel/electron17/files/patch-tools_protoc__wrapper_protoc__wrapper.py b/devel/electron17/files/patch-tools_protoc__wrapper_protoc__wrapper.py
new file mode 100644
index 000000000000..68b693b21156
--- /dev/null
+++ b/devel/electron17/files/patch-tools_protoc__wrapper_protoc__wrapper.py
@@ -0,0 +1,15 @@
+--- tools/protoc_wrapper/protoc_wrapper.py.orig 2022-05-11 07:02:09 UTC
++++ tools/protoc_wrapper/protoc_wrapper.py
+@@ -190,7 +190,11 @@ def main(argv):
+ with open(options.descriptor_set_dependency_file, 'rb') as f:
+ dependency_file_data = f.read().decode('utf-8')
+
+- ret = subprocess.call(protoc_cmd)
++ nenv = os.environ.copy()
++ nenv["PATH"] = "${WRKOBJDIR}/bin:" + nenv["PATH"]
++ nenv["LD_LIBRARY_PATH"] = "${WRKSRC}/out/Release"
++
++ ret = subprocess.call(protoc_cmd, env=nenv)
+ if ret != 0:
+ if ret <= -100:
+ # Windows error codes such as 0xC0000005 and 0xC0000409 are much easier to
diff --git a/devel/electron17/files/patch-tools_variations_fieldtrial__to__struct.py b/devel/electron17/files/patch-tools_variations_fieldtrial__to__struct.py
new file mode 100644
index 000000000000..b94afe5f47a7
--- /dev/null
+++ b/devel/electron17/files/patch-tools_variations_fieldtrial__to__struct.py
@@ -0,0 +1,11 @@
+--- tools/variations/fieldtrial_to_struct.py.orig 2022-05-11 07:02:09 UTC
++++ tools/variations/fieldtrial_to_struct.py
+@@ -41,6 +41,8 @@ _platforms = [
+ 'linux',
+ 'mac',
+ 'windows',
++ 'openbsd',
++ 'freebsd',
+ ]
+
+ _form_factors = [
diff --git a/devel/electron17/files/patch-ui_base_clipboard_clipboard__constants.cc b/devel/electron17/files/patch-ui_base_clipboard_clipboard__constants.cc
new file mode 100644
index 000000000000..0a1e8b59af85
--- /dev/null
+++ b/devel/electron17/files/patch-ui_base_clipboard_clipboard__constants.cc
@@ -0,0 +1,11 @@
+--- ui/base/clipboard/clipboard_constants.cc.orig 2022-05-11 07:17:06 UTC
++++ ui/base/clipboard/clipboard_constants.cc
+@@ -20,7 +20,7 @@ const char kMimeTypePNG[] = "image/png";
+ // Used for image drag & drop from LaCrOS.
+ const char kMimeTypeOctetStream[] = "application/octet-stream";
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_FUCHSIA)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ const char kMimeTypeLinuxUtf8String[] = "UTF8_STRING";
+ const char kMimeTypeLinuxString[] = "STRING";
+ const char kMimeTypeLinuxText[] = "TEXT";
diff --git a/devel/electron17/files/patch-ui_base_clipboard_clipboard__constants.h b/devel/electron17/files/patch-ui_base_clipboard_clipboard__constants.h
new file mode 100644
index 000000000000..83113229c18c
--- /dev/null
+++ b/devel/electron17/files/patch-ui_base_clipboard_clipboard__constants.h
@@ -0,0 +1,11 @@
+--- ui/base/clipboard/clipboard_constants.h.orig 2022-05-11 07:17:06 UTC
++++ ui/base/clipboard/clipboard_constants.h
+@@ -38,7 +38,7 @@ COMPONENT_EXPORT(UI_BASE_CLIPBOARD_TYPES)
+ extern const char kMimeTypeOctetStream[];
+
+ // Linux-specific MIME type constants (also used in Fuchsia).
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_FUCHSIA)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ COMPONENT_EXPORT(UI_BASE_CLIPBOARD_TYPES)
+ extern const char kMimeTypeLinuxUtf8String[];
+ COMPONENT_EXPORT(UI_BASE_CLIPBOARD_TYPES)
diff --git a/devel/electron17/files/patch-ui_base_cursor_cursor__factory.cc b/devel/electron17/files/patch-ui_base_cursor_cursor__factory.cc
new file mode 100644
index 000000000000..bf115525bd9f
--- /dev/null
+++ b/devel/electron17/files/patch-ui_base_cursor_cursor__factory.cc
@@ -0,0 +1,11 @@
+--- ui/base/cursor/cursor_factory.cc.orig 2022-05-11 07:17:06 UTC
++++ ui/base/cursor/cursor_factory.cc
+@@ -80,7 +80,7 @@ void CursorFactory::ObserveThemeChanges() {
+
+ void CursorFactory::SetDeviceScaleFactor(float scale) {}
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+
+ // Returns a cursor name compatible with either X11 or the FreeDesktop.org
+ // cursor spec ([1] and [2]), followed by fallbacks that can work as
diff --git a/devel/electron17/files/patch-ui_base_cursor_cursor__factory.h b/devel/electron17/files/patch-ui_base_cursor_cursor__factory.h
new file mode 100644
index 000000000000..5d17bc07ad1f
--- /dev/null
+++ b/devel/electron17/files/patch-ui_base_cursor_cursor__factory.h
@@ -0,0 +1,11 @@
+--- ui/base/cursor/cursor_factory.h.orig 2022-05-11 07:17:06 UTC
++++ ui/base/cursor/cursor_factory.h
+@@ -81,7 +81,7 @@ class COMPONENT_EXPORT(UI_BASE_CURSOR) CursorFactory {
+ base::ObserverList<CursorFactoryObserver>::Unchecked observers_;
+ };
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ COMPONENT_EXPORT(UI_BASE_CURSOR)
+ std::vector<std::string> CursorNamesFromType(mojom::CursorType type);
+ #endif
diff --git a/devel/electron17/files/patch-ui_base_dragdrop_os__exchange__data__provider__factory.cc b/devel/electron17/files/patch-ui_base_dragdrop_os__exchange__data__provider__factory.cc
new file mode 100644
index 000000000000..7987d1c37ab2
--- /dev/null
+++ b/devel/electron17/files/patch-ui_base_dragdrop_os__exchange__data__provider__factory.cc
@@ -0,0 +1,20 @@
+--- ui/base/dragdrop/os_exchange_data_provider_factory.cc.orig 2022-05-11 07:17:06 UTC
++++ ui/base/dragdrop/os_exchange_data_provider_factory.cc
+@@ -7,7 +7,7 @@
+ #include "base/notreached.h"
+ #include "build/build_config.h"
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_FUCHSIA)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ #include "ui/base/dragdrop/os_exchange_data_provider_factory_ozone.h"
+ #include "ui/base/dragdrop/os_exchange_data_provider_non_backed.h"
+ #elif defined(OS_APPLE)
+@@ -21,7 +21,7 @@ namespace ui {
+ // static
+ std::unique_ptr<OSExchangeDataProvider>
+ OSExchangeDataProviderFactory::CreateProvider() {
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // The instance can be nullptr in tests that do not instantiate the platform,
+ // or on platforms that do not implement specific drag'n'drop. For them,
+ // falling back to the Aura provider should be fine.
diff --git a/devel/electron17/files/patch-ui_base_dragdrop_os__exchange__data__provider__non__backed.cc b/devel/electron17/files/patch-ui_base_dragdrop_os__exchange__data__provider__non__backed.cc
new file mode 100644
index 000000000000..d304e1e57500
--- /dev/null
+++ b/devel/electron17/files/patch-ui_base_dragdrop_os__exchange__data__provider__non__backed.cc
@@ -0,0 +1,11 @@
+--- ui/base/dragdrop/os_exchange_data_provider_non_backed.cc.orig 2022-05-11 07:17:06 UTC
++++ ui/base/dragdrop/os_exchange_data_provider_non_backed.cc
+@@ -85,7 +85,7 @@ void OSExchangeDataProviderNonBacked::SetPickledData(
+ }
+
+ bool OSExchangeDataProviderNonBacked::GetString(std::u16string* data) const {
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ if (HasFile()) {
+ // Various Linux file managers both pass a list of file:// URIs and set the
+ // string representation to the URI. We explicitly don't want to return use
diff --git a/devel/electron17/files/patch-ui_base_ime_dummy__text__input__client.cc b/devel/electron17/files/patch-ui_base_ime_dummy__text__input__client.cc
new file mode 100644
index 000000000000..bb0fa63c4c25
--- /dev/null
+++ b/devel/electron17/files/patch-ui_base_ime_dummy__text__input__client.cc
@@ -0,0 +1,11 @@
+--- ui/base/ime/dummy_text_input_client.cc.orig 2021-11-19 04:25:48 UTC
++++ ui/base/ime/dummy_text_input_client.cc
+@@ -155,7 +155,7 @@ bool DummyTextInputClient::ShouldDoLearning() {
+ return false;
+ }
+
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ bool DummyTextInputClient::SetCompositionFromExistingText(
+ const gfx::Range& range,
+ const std::vector<ui::ImeTextSpan>& ui_ime_text_spans) {
diff --git a/devel/electron17/files/patch-ui_base_ime_dummy__text__input__client.h b/devel/electron17/files/patch-ui_base_ime_dummy__text__input__client.h
new file mode 100644
index 000000000000..be56a3aa8f3c
--- /dev/null
+++ b/devel/electron17/files/patch-ui_base_ime_dummy__text__input__client.h
@@ -0,0 +1,11 @@
+--- ui/base/ime/dummy_text_input_client.h.orig 2022-05-11 07:17:06 UTC
++++ ui/base/ime/dummy_text_input_client.h
+@@ -63,7 +63,7 @@ class DummyTextInputClient : public TextInputClient {
+ ukm::SourceId GetClientSourceForMetrics() const override;
+ bool ShouldDoLearning() override;
+
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ bool SetCompositionFromExistingText(
+ const gfx::Range& range,
+ const std::vector<ui::ImeTextSpan>& ui_ime_text_spans) override;
diff --git a/devel/electron17/files/patch-ui_base_ime_fake__text__input__client.cc b/devel/electron17/files/patch-ui_base_ime_fake__text__input__client.cc
new file mode 100644
index 000000000000..d860d76b2d0a
--- /dev/null
+++ b/devel/electron17/files/patch-ui_base_ime_fake__text__input__client.cc
@@ -0,0 +1,11 @@
+--- ui/base/ime/fake_text_input_client.cc.orig 2021-11-19 04:25:48 UTC
++++ ui/base/ime/fake_text_input_client.cc
+@@ -160,7 +160,7 @@ bool FakeTextInputClient::ShouldDoLearning() {
+ return false;
+ }
+
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ bool FakeTextInputClient::SetCompositionFromExistingText(
+ const gfx::Range& range,
+ const std::vector<ui::ImeTextSpan>& ui_ime_text_spans) {
diff --git a/devel/electron17/files/patch-ui_base_ime_fake__text__input__client.h b/devel/electron17/files/patch-ui_base_ime_fake__text__input__client.h
new file mode 100644
index 000000000000..975ac85a973e
--- /dev/null
+++ b/devel/electron17/files/patch-ui_base_ime_fake__text__input__client.h
@@ -0,0 +1,11 @@
+--- ui/base/ime/fake_text_input_client.h.orig 2022-05-11 07:17:06 UTC
++++ ui/base/ime/fake_text_input_client.h
+@@ -69,7 +69,7 @@ class FakeTextInputClient : public TextInputClient {
+ void SetTextEditCommandForNextKeyEvent(TextEditCommand command) override;
+ ukm::SourceId GetClientSourceForMetrics() const override;
+ bool ShouldDoLearning() override;
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ bool SetCompositionFromExistingText(
+ const gfx::Range& range,
+ const std::vector<ui::ImeTextSpan>& ui_ime_text_spans) override;
diff --git a/devel/electron17/files/patch-ui_base_ime_init_input__method__initializer.cc b/devel/electron17/files/patch-ui_base_ime_init_input__method__initializer.cc
new file mode 100644
index 000000000000..c82c0440dc11
--- /dev/null
+++ b/devel/electron17/files/patch-ui_base_ime_init_input__method__initializer.cc
@@ -0,0 +1,38 @@
+--- ui/base/ime/init/input_method_initializer.cc.orig 2021-11-19 04:25:48 UTC
++++ ui/base/ime/init/input_method_initializer.cc
+@@ -11,7 +11,7 @@
+
+ #if BUILDFLAG(IS_CHROMEOS_ASH)
+ #include "ui/base/ime/ash/ime_bridge.h"
+-#elif defined(USE_AURA) && (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
++#elif defined(USE_AURA) && (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD))
+ #include "base/check.h"
+ #include "ui/base/ime/linux/fake_input_method_context_factory.h"
+ #elif defined(OS_WIN)
+@@ -21,7 +21,7 @@
+
+ namespace {
+
+-#if defined(USE_AURA) && (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
++#if defined(USE_AURA) && (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD))
+ const ui::LinuxInputMethodContextFactory*
+ g_linux_input_method_context_factory_for_testing;
+ #endif
+@@ -49,7 +49,7 @@ void ShutdownInputMethod() {
+ void InitializeInputMethodForTesting() {
+ #if BUILDFLAG(IS_CHROMEOS_ASH)
+ IMEBridge::Initialize();
+-#elif defined(USE_AURA) && (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
++#elif defined(USE_AURA) && (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD))
+ if (!g_linux_input_method_context_factory_for_testing)
+ g_linux_input_method_context_factory_for_testing =
+ new FakeInputMethodContextFactory();
+@@ -68,7 +68,7 @@ void InitializeInputMethodForTesting() {
+ void ShutdownInputMethodForTesting() {
+ #if BUILDFLAG(IS_CHROMEOS_ASH)
+ IMEBridge::Shutdown();
+-#elif defined(USE_AURA) && (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
++#elif defined(USE_AURA) && (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD))
+ const LinuxInputMethodContextFactory* factory =
+ LinuxInputMethodContextFactory::instance();
+ CHECK(!factory || factory == g_linux_input_method_context_factory_for_testing)
diff --git a/devel/electron17/files/patch-ui_base_ime_text__input__client.h b/devel/electron17/files/patch-ui_base_ime_text__input__client.h
new file mode 100644
index 000000000000..10b7ef31cb43
--- /dev/null
+++ b/devel/electron17/files/patch-ui_base_ime_text__input__client.h
@@ -0,0 +1,11 @@
+--- ui/base/ime/text_input_client.h.orig 2021-11-19 04:25:48 UTC
++++ ui/base/ime/text_input_client.h
+@@ -237,7 +237,7 @@ class COMPONENT_EXPORT(UI_BASE_IME) TextInputClient {
+ // fields that are considered 'private' (e.g. in incognito tabs).
+ virtual bool ShouldDoLearning() = 0;
+
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // Start composition over a given UTF-16 code range from existing text. This
+ // should only be used for composition scenario when IME wants to start
+ // composition on existing text. Returns whether the operation was successful.
diff --git a/devel/electron17/files/patch-ui_base_resource_resource__bundle.cc b/devel/electron17/files/patch-ui_base_resource_resource__bundle.cc
new file mode 100644
index 000000000000..9da3a4a12a2c
--- /dev/null
+++ b/devel/electron17/files/patch-ui_base_resource_resource__bundle.cc
@@ -0,0 +1,11 @@
+--- ui/base/resource/resource_bundle.cc.orig 2022-05-11 07:17:06 UTC
++++ ui/base/resource/resource_bundle.cc
+@@ -849,7 +849,7 @@ void ResourceBundle::ReloadFonts() {
+ }
+
+ ResourceScaleFactor ResourceBundle::GetMaxResourceScaleFactor() const {
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ return max_scale_factor_;
+ #else
+ return GetSupportedResourceScaleFactors().back();
diff --git a/devel/electron17/files/patch-ui_base_test_skia__gold__pixel__diff.cc b/devel/electron17/files/patch-ui_base_test_skia__gold__pixel__diff.cc
new file mode 100644
index 000000000000..268ef6855024
--- /dev/null
+++ b/devel/electron17/files/patch-ui_base_test_skia__gold__pixel__diff.cc
@@ -0,0 +1,11 @@
+--- ui/base/test/skia_gold_pixel_diff.cc.orig 2021-11-19 04:25:48 UTC
++++ ui/base/test/skia_gold_pixel_diff.cc
+@@ -146,7 +146,7 @@ std::string SkiaGoldPixelDiff::GetPlatform() {
+ return "macOS";
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#elif defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#elif defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ return "linux";
+ #endif
+ }
diff --git a/devel/electron17/files/patch-ui_base_ui__base__features.cc b/devel/electron17/files/patch-ui_base_ui__base__features.cc
new file mode 100644
index 000000000000..4dd765a99f30
--- /dev/null
+++ b/devel/electron17/files/patch-ui_base_ui__base__features.cc
@@ -0,0 +1,20 @@
+--- ui/base/ui_base_features.cc.orig 2022-05-11 07:17:06 UTC
++++ ui/base/ui_base_features.cc
+@@ -154,7 +154,7 @@ const base::Feature kExperimentalFlingAnimation {
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+ #if defined(OS_WIN) || (defined(OS_LINUX) && !BUILDFLAG(IS_CHROMEOS_ASH) && \
+- !BUILDFLAG(IS_CHROMEOS_LACROS))
++ !BUILDFLAG(IS_CHROMEOS_LACROS)) || defined(OS_BSD)
+ base::FEATURE_ENABLED_BY_DEFAULT
+ #else
+ base::FEATURE_DISABLED_BY_DEFAULT
+@@ -250,7 +250,7 @@ bool IsForcedColorsEnabled() {
+ // milestones.
+ const base::Feature kEyeDropper {
+ "EyeDropper",
+-#if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || defined(OS_BSD)
+ base::FEATURE_ENABLED_BY_DEFAULT
+ #else
+ base::FEATURE_DISABLED_BY_DEFAULT
diff --git a/devel/electron17/files/patch-ui_base_webui_web__ui__util.cc b/devel/electron17/files/patch-ui_base_webui_web__ui__util.cc
new file mode 100644
index 000000000000..305cffe19abf
--- /dev/null
+++ b/devel/electron17/files/patch-ui_base_webui_web__ui__util.cc
@@ -0,0 +1,11 @@
+--- ui/base/webui/web_ui_util.cc.orig 2021-10-08 06:26:47 UTC
++++ ui/base/webui/web_ui_util.cc
+@@ -221,7 +221,7 @@ std::string GetFontFamily() {
+
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ std::string font_name = ui::ResourceBundle::GetSharedInstance()
+ .GetFont(ui::ResourceBundle::BaseFont)
+ .GetFontName();
diff --git a/devel/electron17/files/patch-ui_base_x_x11__cursor__loader.cc b/devel/electron17/files/patch-ui_base_x_x11__cursor__loader.cc
new file mode 100644
index 000000000000..e1e70063b208
--- /dev/null
+++ b/devel/electron17/files/patch-ui_base_x_x11__cursor__loader.cc
@@ -0,0 +1,14 @@
+--- ui/base/x/x11_cursor_loader.cc.orig 2022-05-11 07:17:06 UTC
++++ ui/base/x/x11_cursor_loader.cc
+@@ -138,7 +138,11 @@ std::string CursorPathFromLibXcursor() {
+ void operator()(void* ptr) const { dlclose(ptr); }
+ };
+
++#if defined(OS_BSD)
++ std::unique_ptr<void, DlCloser> lib(dlopen("libXcursor.so", RTLD_LAZY));
++#else
+ std::unique_ptr<void, DlCloser> lib(dlopen("libXcursor.so.1", RTLD_LAZY));
++#endif
+ if (!lib)
+ return "";
+
diff --git a/devel/electron17/files/patch-ui_base_x_x11__shm__image__pool.cc b/devel/electron17/files/patch-ui_base_x_x11__shm__image__pool.cc
new file mode 100644
index 000000000000..8b3bc67f0a46
--- /dev/null
+++ b/devel/electron17/files/patch-ui_base_x_x11__shm__image__pool.cc
@@ -0,0 +1,53 @@
+--- ui/base/x/x11_shm_image_pool.cc.orig 2022-05-11 07:17:06 UTC
++++ ui/base/x/x11_shm_image_pool.cc
+@@ -16,6 +16,7 @@
+ #include "base/environment.h"
+ #include "base/location.h"
+ #include "base/strings/string_util.h"
++#include "base/system/sys_info.h"
+ #include "base/threading/thread_task_runner_handle.h"
+ #include "build/build_config.h"
+ #include "build/chromeos_buildflags.h"
+@@ -46,10 +47,14 @@ constexpr float kShmResizeShrinkThreshold =
+ 1.0f / (kShmResizeThreshold * kShmResizeThreshold);
+
+ std::size_t MaxShmSegmentSizeImpl() {
++#if defined(OS_BSD)
++ return base::SysInfo::MaxSharedMemorySize();
++#else
+ struct shminfo info;
+ if (shmctl(0, IPC_INFO, reinterpret_cast<struct shmid_ds*>(&info)) == -1)
+ return 0;
+ return info.shmmax;
++#endif
+ }
+
+ std::size_t MaxShmSegmentSize() {
+@@ -66,6 +71,9 @@ bool IsRemoteHost(const std::string& name) {
+ }
+
+ bool ShouldUseMitShm(x11::Connection* connection) {
++#if defined(OS_BSD)
++ return false;
++#endif
+ // MIT-SHM may be available on remote connetions, but it will be unusable. Do
+ // a best-effort check to see if the host is remote to disable the SHM
+ // codepath. It may be possible in contrived cases for there to be a
+@@ -184,7 +192,7 @@ bool XShmImagePool::Resize(const gfx::Size& pixel_size
+ shmctl(state.shmid, IPC_RMID, nullptr);
+ return false;
+ }
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // On Linux, a shmid can still be attached after IPC_RMID if otherwise
+ // kept alive. Detach before XShmAttach to prevent a memory leak in case
+ // the process dies.
+@@ -203,7 +211,7 @@ bool XShmImagePool::Resize(const gfx::Size& pixel_size
+ return false;
+ state.shmseg = shmseg;
+ state.shmem_attached_to_server = true;
+-#if !defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if !defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(OS_BSD)
+ // The Linux-specific shmctl behavior above may not be portable, so we're
+ // forced to do IPC_RMID after the server has attached to the segment.
+ shmctl(state.shmid, IPC_RMID, nullptr);
diff --git a/devel/electron17/files/patch-ui_compositor_compositor.cc b/devel/electron17/files/patch-ui_compositor_compositor.cc
new file mode 100644
index 000000000000..3ce625180e8d
--- /dev/null
+++ b/devel/electron17/files/patch-ui_compositor_compositor.cc
@@ -0,0 +1,11 @@
+--- ui/compositor/compositor.cc.orig 2022-05-11 07:17:07 UTC
++++ ui/compositor/compositor.cc
+@@ -839,7 +839,7 @@ void Compositor::OnResume() {
+
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ void Compositor::OnCompleteSwapWithNewSize(const gfx::Size& size) {
+ for (auto& observer : observer_list_)
+ observer.OnCompositingCompleteSwapWithNewSize(this, size);
diff --git a/devel/electron17/files/patch-ui_compositor_compositor.h b/devel/electron17/files/patch-ui_compositor_compositor.h
new file mode 100644
index 000000000000..657d398b1a05
--- /dev/null
+++ b/devel/electron17/files/patch-ui_compositor_compositor.h
@@ -0,0 +1,11 @@
+--- ui/compositor/compositor.h.orig 2022-05-13 07:19:54 UTC
++++ ui/compositor/compositor.h
+@@ -402,7 +402,7 @@ class COMPOSITOR_EXPORT Compositor : public base::Powe
+
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ void OnCompleteSwapWithNewSize(const gfx::Size& size);
+ #endif
+
diff --git a/devel/electron17/files/patch-ui_compositor_compositor__observer.h b/devel/electron17/files/patch-ui_compositor_compositor__observer.h
new file mode 100644
index 000000000000..fe0d54dfa395
--- /dev/null
+++ b/devel/electron17/files/patch-ui_compositor_compositor__observer.h
@@ -0,0 +1,11 @@
+--- ui/compositor/compositor_observer.h.orig 2022-05-11 07:17:07 UTC
++++ ui/compositor/compositor_observer.h
+@@ -48,7 +48,7 @@ class COMPOSITOR_EXPORT CompositorObserver {
+
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ // Called when a swap with new size is completed.
+ virtual void OnCompositingCompleteSwapWithNewSize(ui::Compositor* compositor,
+ const gfx::Size& size) {}
diff --git a/devel/electron17/files/patch-ui_events_devices_x11_device__data__manager__x11.cc b/devel/electron17/files/patch-ui_events_devices_x11_device__data__manager__x11.cc
new file mode 100644
index 000000000000..c376aae01d22
--- /dev/null
+++ b/devel/electron17/files/patch-ui_events_devices_x11_device__data__manager__x11.cc
@@ -0,0 +1,10 @@
+--- ui/events/devices/x11/device_data_manager_x11.cc.orig 2022-05-11 07:17:07 UTC
++++ ui/events/devices/x11/device_data_manager_x11.cc
+@@ -874,6 +874,7 @@ void DeviceDataManagerX11::SetDisabledKeyboardAllowedK
+ }
+
+ void DeviceDataManagerX11::DisableDevice(x11::Input::DeviceId deviceid) {
++ NOTIMPLEMENTED();
+ blocked_devices_.set(static_cast<uint32_t>(deviceid), true);
+ // TODO(rsadam@): Support blocking touchscreen devices.
+ std::vector<InputDevice> keyboards = GetKeyboardDevices();
diff --git a/devel/electron17/files/patch-ui_events_event.cc b/devel/electron17/files/patch-ui_events_event.cc
new file mode 100644
index 000000000000..84a87ed20de0
--- /dev/null
+++ b/devel/electron17/files/patch-ui_events_event.cc
@@ -0,0 +1,20 @@
+--- ui/events/event.cc.orig 2022-05-11 07:17:07 UTC
++++ ui/events/event.cc
+@@ -452,7 +452,7 @@ std::string LocatedEvent::ToString() const {
+ MouseEvent::MouseEvent(const PlatformEvent& native_event)
+ : LocatedEvent(native_event),
+ changed_button_flags_(GetChangedMouseButtonFlagsFromNative(native_event)),
+-#if defined(OS_CHROMEOS) || defined(OS_LINUX)
++#if defined(OS_CHROMEOS) || defined(OS_LINUX) || defined(OS_BSD)
+ movement_(GetMouseMovementFromNative(native_event)),
+ #endif
+ pointer_details_(GetMousePointerDetailsFromNative(native_event)) {
+@@ -934,7 +934,7 @@ void KeyEvent::InitializeNative() {
+ if (synthesize_key_repeat_enabled_ && IsRepeated(GetLastKeyEvent()))
+ set_flags(flags() | EF_IS_REPEAT);
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ NormalizeFlags();
+ #elif defined(OS_WIN)
+ // Only Windows has native character events.
diff --git a/devel/electron17/files/patch-ui_events_event__switches.cc b/devel/electron17/files/patch-ui_events_event__switches.cc
new file mode 100644
index 000000000000..ea090dc7bc02
--- /dev/null
+++ b/devel/electron17/files/patch-ui_events_event__switches.cc
@@ -0,0 +1,11 @@
+--- ui/events/event_switches.cc.orig 2021-01-07 00:37:28 UTC
++++ ui/events/event_switches.cc
+@@ -14,7 +14,7 @@ namespace switches {
+ const char kCompensateForUnstablePinchZoom[] =
+ "compensate-for-unstable-pinch-zoom";
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // Tells chrome to interpret events from these devices as touch events. Only
+ // available with XInput 2 (i.e. X server 1.8 or above). The id's of the
+ // devices can be retrieved from 'xinput list'.
diff --git a/devel/electron17/files/patch-ui_events_event__switches.h b/devel/electron17/files/patch-ui_events_event__switches.h
new file mode 100644
index 000000000000..cd06af3392ea
--- /dev/null
+++ b/devel/electron17/files/patch-ui_events_event__switches.h
@@ -0,0 +1,11 @@
+--- ui/events/event_switches.h.orig 2022-05-11 07:17:07 UTC
++++ ui/events/event_switches.h
+@@ -12,7 +12,7 @@ namespace switches {
+
+ EVENTS_BASE_EXPORT extern const char kCompensateForUnstablePinchZoom[];
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ EVENTS_BASE_EXPORT extern const char kTouchDevices[];
+ EVENTS_BASE_EXPORT extern const char kPenDevices[];
+ #endif
diff --git a/devel/electron17/files/patch-ui_events_keycodes_dom_keycode__converter.cc b/devel/electron17/files/patch-ui_events_keycodes_dom_keycode__converter.cc
new file mode 100644
index 000000000000..e5887da8326b
--- /dev/null
+++ b/devel/electron17/files/patch-ui_events_keycodes_dom_keycode__converter.cc
@@ -0,0 +1,11 @@
+--- ui/events/keycodes/dom/keycode_converter.cc.orig 2022-05-11 07:17:07 UTC
++++ ui/events/keycodes/dom/keycode_converter.cc
+@@ -24,7 +24,7 @@ namespace {
+ #if defined(OS_WIN)
+ #define DOM_CODE(usb, evdev, xkb, win, mac, code, id) \
+ { usb, win, code }
+-#elif defined(OS_LINUX) || defined(OS_CHROMEOS)
++#elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ #define DOM_CODE(usb, evdev, xkb, win, mac, code, id) \
+ { usb, xkb, code }
+ #elif defined(OS_APPLE)
diff --git a/devel/electron17/files/patch-ui_gfx_BUILD.gn b/devel/electron17/files/patch-ui_gfx_BUILD.gn
new file mode 100644
index 000000000000..522900ab66ba
--- /dev/null
+++ b/devel/electron17/files/patch-ui_gfx_BUILD.gn
@@ -0,0 +1,11 @@
+--- ui/gfx/BUILD.gn.orig 2022-05-11 07:17:07 UTC
++++ ui/gfx/BUILD.gn
+@@ -583,7 +583,7 @@ source_set("memory_buffer_sources") {
+ deps += [ "//build/config/linux/libdrm" ]
+ }
+
+- if (is_linux || is_chromeos || is_android) {
++ if ((is_linux || is_chromeos || is_android) && !is_bsd) {
+ deps += [ "//third_party/libsync" ]
+ }
+
diff --git a/devel/electron17/files/patch-ui_gfx_canvas__skia.cc b/devel/electron17/files/patch-ui_gfx_canvas__skia.cc
new file mode 100644
index 000000000000..ca7fb2736b38
--- /dev/null
+++ b/devel/electron17/files/patch-ui_gfx_canvas__skia.cc
@@ -0,0 +1,11 @@
+--- ui/gfx/canvas_skia.cc.orig 2021-04-14 01:09:39 UTC
++++ ui/gfx/canvas_skia.cc
+@@ -209,7 +209,7 @@ void Canvas::DrawStringRectWithFlags(const base::strin
+ Range range = StripAcceleratorChars(flags, &adjusted_text);
+ bool elide_text = ((flags & NO_ELLIPSIS) == 0);
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // On Linux, eliding really means fading the end of the string. But only
+ // for LTR text. RTL text is still elided (on the left) with "...".
+ if (elide_text) {
diff --git a/devel/electron17/files/patch-ui_gfx_codec_png__codec.cc b/devel/electron17/files/patch-ui_gfx_codec_png__codec.cc
new file mode 100644
index 000000000000..e3fc0b524a8a
--- /dev/null
+++ b/devel/electron17/files/patch-ui_gfx_codec_png__codec.cc
@@ -0,0 +1,11 @@
+--- ui/gfx/codec/png_codec.cc.orig 2022-05-11 07:17:07 UTC
++++ ui/gfx/codec/png_codec.cc
+@@ -10,7 +10,7 @@
+ #include "base/memory/raw_ptr.h"
+ #include "base/notreached.h"
+ #include "base/strings/string_util.h"
+-#include "third_party/libpng/png.h"
++#include <png.h>
+ #include "third_party/skia/include/core/SkBitmap.h"
+ #include "third_party/skia/include/core/SkColorPriv.h"
+ #include "third_party/skia/include/core/SkUnPreMultiply.h"
diff --git a/devel/electron17/files/patch-ui_gfx_font__fallback__linux.cc b/devel/electron17/files/patch-ui_gfx_font__fallback__linux.cc
new file mode 100644
index 000000000000..c27900b7be41
--- /dev/null
+++ b/devel/electron17/files/patch-ui_gfx_font__fallback__linux.cc
@@ -0,0 +1,11 @@
+--- ui/gfx/font_fallback_linux.cc.orig 2022-05-11 07:17:07 UTC
++++ ui/gfx/font_fallback_linux.cc
+@@ -24,6 +24,8 @@
+ #include "ui/gfx/linux/fontconfig_util.h"
+ #include "ui/gfx/platform_font.h"
+
++#include <unistd.h>
++
+ namespace gfx {
+
+ namespace {
diff --git a/devel/electron17/files/patch-ui_gfx_font__list.cc b/devel/electron17/files/patch-ui_gfx_font__list.cc
new file mode 100644
index 000000000000..9ff161b60716
--- /dev/null
+++ b/devel/electron17/files/patch-ui_gfx_font__list.cc
@@ -0,0 +1,11 @@
+--- ui/gfx/font_list.cc.orig 2022-05-11 07:17:07 UTC
++++ ui/gfx/font_list.cc
+@@ -27,7 +27,7 @@ base::LazyInstance<scoped_refptr<gfx::FontListImpl>>::
+ bool g_default_impl_initialized = false;
+
+ bool IsFontFamilyAvailable(const std::string& family, SkFontMgr* fontManager) {
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ return !!fontManager->legacyMakeTypeface(family.c_str(), SkFontStyle());
+ #else
+ sk_sp<SkFontStyleSet> set(fontManager->matchFamily(family.c_str()));
diff --git a/devel/electron17/files/patch-ui_gfx_font__render__params.h b/devel/electron17/files/patch-ui_gfx_font__render__params.h
new file mode 100644
index 000000000000..14126b42638e
--- /dev/null
+++ b/devel/electron17/files/patch-ui_gfx_font__render__params.h
@@ -0,0 +1,20 @@
+--- ui/gfx/font_render_params.h.orig 2022-05-11 07:17:07 UTC
++++ ui/gfx/font_render_params.h
+@@ -109,7 +109,7 @@ GFX_EXPORT FontRenderParams GetFontRenderParams(
+ const FontRenderParamsQuery& query,
+ std::string* family_out);
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // Clears GetFontRenderParams()'s cache. Intended to be called by tests that are
+ // changing Fontconfig's configuration.
+ GFX_EXPORT void ClearFontRenderParamsCacheForTest();
+@@ -119,7 +119,7 @@ GFX_EXPORT void ClearFontRenderParamsCacheForTest();
+ GFX_EXPORT float GetFontRenderParamsDeviceScaleFactor();
+
+ #if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) || \
+- defined(OS_ANDROID) || defined(OS_FUCHSIA)
++ defined(OS_ANDROID) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ // Sets the device scale factor for FontRenderParams to decide
+ // if it should enable subpixel positioning.
+ GFX_EXPORT void SetFontRenderParamsDeviceScaleFactor(
diff --git a/devel/electron17/files/patch-ui_gfx_font__util.cc b/devel/electron17/files/patch-ui_gfx_font__util.cc
new file mode 100644
index 000000000000..29b1691d3af4
--- /dev/null
+++ b/devel/electron17/files/patch-ui_gfx_font__util.cc
@@ -0,0 +1,20 @@
+--- ui/gfx/font_util.cc.orig 2022-05-11 07:17:07 UTC
++++ ui/gfx/font_util.cc
+@@ -6,7 +6,7 @@
+
+ #include "build/build_config.h"
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ #include <fontconfig/fontconfig.h>
+ #include "ui/gfx/linux/fontconfig_util.h"
+ #endif
+@@ -24,7 +24,7 @@ void InitializeFonts() {
+ // background (resources have not yet been granted to cast) since it prevents
+ // the long delay the user would have seen on first rendering.
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // Ensures the config is created on this thread.
+ FcConfig* config = GetGlobalFontConfig();
+ DCHECK(config);
diff --git a/devel/electron17/files/patch-ui_gfx_gpu__memory__buffer.cc b/devel/electron17/files/patch-ui_gfx_gpu__memory__buffer.cc
new file mode 100644
index 000000000000..521822a29005
--- /dev/null
+++ b/devel/electron17/files/patch-ui_gfx_gpu__memory__buffer.cc
@@ -0,0 +1,11 @@
+--- ui/gfx/gpu_memory_buffer.cc.orig 2021-07-15 19:14:08 UTC
++++ ui/gfx/gpu_memory_buffer.cc
+@@ -53,7 +53,7 @@ GpuMemoryBufferHandle GpuMemoryBufferHandle::Clone() c
+ handle.region = region.Duplicate();
+ handle.offset = offset;
+ handle.stride = stride;
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_FUCHSIA)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ handle.native_pixmap_handle = CloneHandleForIPC(native_pixmap_handle);
+ #elif defined(OS_MAC)
+ handle.io_surface = io_surface;
diff --git a/devel/electron17/files/patch-ui_gfx_gpu__memory__buffer.h b/devel/electron17/files/patch-ui_gfx_gpu__memory__buffer.h
new file mode 100644
index 000000000000..f2dd071aeac0
--- /dev/null
+++ b/devel/electron17/files/patch-ui_gfx_gpu__memory__buffer.h
@@ -0,0 +1,20 @@
+--- ui/gfx/gpu_memory_buffer.h.orig 2022-05-11 07:17:07 UTC
++++ ui/gfx/gpu_memory_buffer.h
+@@ -16,7 +16,7 @@
+ #include "ui/gfx/gfx_export.h"
+ #include "ui/gfx/hdr_metadata.h"
+
+-#if defined(USE_OZONE) || defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(USE_OZONE) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ #include "ui/gfx/native_pixmap_handle.h"
+ #elif defined(OS_MAC)
+ #include "ui/gfx/mac/io_surface.h"
+@@ -76,7 +76,7 @@ struct GFX_EXPORT GpuMemoryBufferHandle {
+ base::UnsafeSharedMemoryRegion region;
+ uint32_t offset = 0;
+ int32_t stride = 0;
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_FUCHSIA)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ NativePixmapHandle native_pixmap_handle;
+ #elif defined(OS_MAC)
+ ScopedIOSurface io_surface;
diff --git a/devel/electron17/files/patch-ui_gfx_ipc_gfx__param__traits__macros.h b/devel/electron17/files/patch-ui_gfx_ipc_gfx__param__traits__macros.h
new file mode 100644
index 000000000000..7e997a505170
--- /dev/null
+++ b/devel/electron17/files/patch-ui_gfx_ipc_gfx__param__traits__macros.h
@@ -0,0 +1,44 @@
+--- ui/gfx/ipc/gfx_param_traits_macros.h.orig 2021-04-14 01:09:39 UTC
++++ ui/gfx/ipc/gfx_param_traits_macros.h
+@@ -18,7 +18,7 @@
+ #include "ui/gfx/selection_bound.h"
+ #include "ui/gfx/swap_result.h"
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ #include "ui/gfx/native_pixmap_handle.h"
+ #endif
+
+@@ -48,7 +48,7 @@ IPC_STRUCT_TRAITS_BEGIN(gfx::GpuMemoryBufferHandle)
+ IPC_STRUCT_TRAITS_MEMBER(region)
+ IPC_STRUCT_TRAITS_MEMBER(offset)
+ IPC_STRUCT_TRAITS_MEMBER(stride)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_FUCHSIA)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ IPC_STRUCT_TRAITS_MEMBER(native_pixmap_handle)
+ #elif defined(OS_APPLE)
+ IPC_STRUCT_TRAITS_MEMBER(io_surface)
+@@ -63,12 +63,12 @@ IPC_STRUCT_TRAITS_BEGIN(gfx::GpuMemoryBufferId)
+ IPC_STRUCT_TRAITS_MEMBER(id)
+ IPC_STRUCT_TRAITS_END()
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_FUCHSIA)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ IPC_STRUCT_TRAITS_BEGIN(gfx::NativePixmapPlane)
+ IPC_STRUCT_TRAITS_MEMBER(stride)
+ IPC_STRUCT_TRAITS_MEMBER(offset)
+ IPC_STRUCT_TRAITS_MEMBER(size)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ IPC_STRUCT_TRAITS_MEMBER(fd)
+ #elif defined(OS_FUCHSIA)
+ IPC_STRUCT_TRAITS_MEMBER(vmo)
+@@ -77,7 +77,7 @@ IPC_STRUCT_TRAITS_END()
+
+ IPC_STRUCT_TRAITS_BEGIN(gfx::NativePixmapHandle)
+ IPC_STRUCT_TRAITS_MEMBER(planes)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ IPC_STRUCT_TRAITS_MEMBER(modifier)
+ #endif
+ #if defined(OS_FUCHSIA)
diff --git a/devel/electron17/files/patch-ui_gfx_linux_client__native__pixmap__dmabuf.cc b/devel/electron17/files/patch-ui_gfx_linux_client__native__pixmap__dmabuf.cc
new file mode 100644
index 000000000000..21b41c9feff2
--- /dev/null
+++ b/devel/electron17/files/patch-ui_gfx_linux_client__native__pixmap__dmabuf.cc
@@ -0,0 +1,25 @@
+--- ui/gfx/linux/client_native_pixmap_dmabuf.cc.orig 2022-05-11 07:02:11 UTC
++++ ui/gfx/linux/client_native_pixmap_dmabuf.cc
+@@ -5,7 +5,9 @@
+ #include "ui/gfx/linux/client_native_pixmap_dmabuf.h"
+
+ #include <fcntl.h>
++#if !defined(__OpenBSD__) && !defined(__FreeBSD__)
+ #include <linux/version.h>
++#endif
+ #include <stddef.h>
+ #include <sys/ioctl.h>
+ #include <sys/mman.h>
+@@ -27,11 +29,7 @@
+ #include "ui/gfx/buffer_format_util.h"
+ #include "ui/gfx/switches.h"
+
+-#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 11, 0)
+-#include <linux/dma-buf.h>
+-#else
+-#include <linux/types.h>
+-
++#if defined(__OpenBSD__) || defined(__FreeBSD__)
+ struct dma_buf_sync {
+ __u64 flags;
+ };
diff --git a/devel/electron17/files/patch-ui_gfx_mojom_buffer__types__mojom__traits.cc b/devel/electron17/files/patch-ui_gfx_mojom_buffer__types__mojom__traits.cc
new file mode 100644
index 000000000000..45a36d9d7f14
--- /dev/null
+++ b/devel/electron17/files/patch-ui_gfx_mojom_buffer__types__mojom__traits.cc
@@ -0,0 +1,20 @@
+--- ui/gfx/mojom/buffer_types_mojom_traits.cc.orig 2022-05-11 07:17:07 UTC
++++ ui/gfx/mojom/buffer_types_mojom_traits.cc
+@@ -33,7 +33,7 @@ gfx::mojom::GpuMemoryBufferPlatformHandlePtr StructTra
+ return gfx::mojom::GpuMemoryBufferPlatformHandle::NewSharedMemoryHandle(
+ std::move(handle.region));
+ case gfx::NATIVE_PIXMAP:
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(USE_OZONE)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(USE_OZONE) || defined(OS_BSD)
+ return gfx::mojom::GpuMemoryBufferPlatformHandle::NewNativePixmapHandle(
+ std::move(handle.native_pixmap_handle));
+ #else
+@@ -115,7 +115,7 @@ bool StructTraits<gfx::mojom::GpuMemoryBufferHandleDat
+ out->type = gfx::SHARED_MEMORY_BUFFER;
+ out->region = std::move(platform_handle->get_shared_memory_handle());
+ return true;
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(USE_OZONE)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(USE_OZONE) || defined(OS_BSD)
+ case gfx::mojom::GpuMemoryBufferPlatformHandleDataView::Tag::
+ NATIVE_PIXMAP_HANDLE:
+ out->type = gfx::NATIVE_PIXMAP;
diff --git a/devel/electron17/files/patch-ui_gfx_mojom_native__handle__types__mojom__traits.cc b/devel/electron17/files/patch-ui_gfx_mojom_native__handle__types__mojom__traits.cc
new file mode 100644
index 000000000000..8bc924dfca90
--- /dev/null
+++ b/devel/electron17/files/patch-ui_gfx_mojom_native__handle__types__mojom__traits.cc
@@ -0,0 +1,34 @@
+--- ui/gfx/mojom/native_handle_types_mojom_traits.cc.orig 2022-05-11 07:17:07 UTC
++++ ui/gfx/mojom/native_handle_types_mojom_traits.cc
+@@ -8,11 +8,11 @@
+
+ namespace mojo {
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(USE_OZONE)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(USE_OZONE) || defined(OS_BSD)
+ mojo::PlatformHandle StructTraits<
+ gfx::mojom::NativePixmapPlaneDataView,
+ gfx::NativePixmapPlane>::buffer_handle(gfx::NativePixmapPlane& plane) {
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ return mojo::PlatformHandle(std::move(plane.fd));
+ #elif defined(OS_FUCHSIA)
+ return mojo::PlatformHandle(std::move(plane.vmo));
+@@ -28,7 +28,7 @@ bool StructTraits<
+ out->size = data.size();
+
+ mojo::PlatformHandle handle = data.TakeBufferHandle();
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ if (!handle.is_fd())
+ return false;
+ out->fd = handle.TakeFD();
+@@ -45,7 +45,7 @@ bool StructTraits<
+ gfx::mojom::NativePixmapHandleDataView,
+ gfx::NativePixmapHandle>::Read(gfx::mojom::NativePixmapHandleDataView data,
+ gfx::NativePixmapHandle* out) {
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ out->modifier = data.modifier();
+ #endif
+
diff --git a/devel/electron17/files/patch-ui_gfx_mojom_native__handle__types__mojom__traits.h b/devel/electron17/files/patch-ui_gfx_mojom_native__handle__types__mojom__traits.h
new file mode 100644
index 000000000000..2d2da5c65a89
--- /dev/null
+++ b/devel/electron17/files/patch-ui_gfx_mojom_native__handle__types__mojom__traits.h
@@ -0,0 +1,29 @@
+--- ui/gfx/mojom/native_handle_types_mojom_traits.h.orig 2022-05-11 07:17:07 UTC
++++ ui/gfx/mojom/native_handle_types_mojom_traits.h
+@@ -15,7 +15,7 @@
+ #include "third_party/abseil-cpp/absl/types/optional.h"
+ #include "ui/gfx/mojom/native_handle_types.mojom-shared.h"
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(USE_OZONE)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(USE_OZONE) || defined(OS_BSD)
+ #include "ui/gfx/native_pixmap_handle.h"
+ #endif
+
+@@ -25,7 +25,7 @@
+
+ namespace mojo {
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(USE_OZONE)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(USE_OZONE) || defined(OS_BSD)
+ template <>
+ struct COMPONENT_EXPORT(GFX_NATIVE_HANDLE_TYPES_SHARED_MOJOM_TRAITS)
+ StructTraits<gfx::mojom::NativePixmapPlaneDataView,
+@@ -53,7 +53,7 @@ struct COMPONENT_EXPORT(GFX_NATIVE_HANDLE_TYPES_SHARED
+ return pixmap_handle.planes;
+ }
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ static uint64_t modifier(const gfx::NativePixmapHandle& pixmap_handle) {
+ return pixmap_handle.modifier;
+ }
diff --git a/devel/electron17/files/patch-ui_gfx_native__pixmap__handle.cc b/devel/electron17/files/patch-ui_gfx_native__pixmap__handle.cc
new file mode 100644
index 000000000000..ecdacc105278
--- /dev/null
+++ b/devel/electron17/files/patch-ui_gfx_native__pixmap__handle.cc
@@ -0,0 +1,62 @@
+--- ui/gfx/native_pixmap_handle.cc.orig 2022-05-11 07:17:07 UTC
++++ ui/gfx/native_pixmap_handle.cc
+@@ -9,7 +9,7 @@
+ #include "base/logging.h"
+ #include "build/build_config.h"
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ #include <drm_fourcc.h>
+ #include "base/posix/eintr_wrapper.h"
+ #endif
+@@ -19,9 +19,13 @@
+ #include "base/fuchsia/fuchsia_logging.h"
+ #endif
+
++#if defined(OS_BSD)
++#include <unistd.h>
++#endif
++
+ namespace gfx {
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ static_assert(NativePixmapHandle::kNoModifier == DRM_FORMAT_MOD_INVALID,
+ "gfx::NativePixmapHandle::kNoModifier should be an alias for"
+ "DRM_FORMAT_MOD_INVALID");
+@@ -32,7 +36,7 @@ NativePixmapPlane::NativePixmapPlane() : stride(0), of
+ NativePixmapPlane::NativePixmapPlane(int stride,
+ int offset,
+ uint64_t size
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ ,
+ base::ScopedFD fd
+ #elif defined(OS_FUCHSIA)
+@@ -43,7 +47,7 @@ NativePixmapPlane::NativePixmapPlane(int stride,
+ : stride(stride),
+ offset(offset),
+ size(size)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ ,
+ fd(std::move(fd))
+ #elif defined(OS_FUCHSIA)
+@@ -71,7 +75,7 @@ NativePixmapHandle& NativePixmapHandle::operator=(Nati
+ NativePixmapHandle CloneHandleForIPC(const NativePixmapHandle& handle) {
+ NativePixmapHandle clone;
+ for (auto& plane : handle.planes) {
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ DCHECK(plane.fd.is_valid());
+ base::ScopedFD fd_dup(HANDLE_EINTR(dup(plane.fd.get())));
+ if (!fd_dup.is_valid()) {
+@@ -97,7 +101,7 @@ NativePixmapHandle CloneHandleForIPC(const NativePixma
+ #endif
+ }
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ clone.modifier = handle.modifier;
+ #endif
+
diff --git a/devel/electron17/files/patch-ui_gfx_native__pixmap__handle.h b/devel/electron17/files/patch-ui_gfx_native__pixmap__handle.h
new file mode 100644
index 000000000000..35e56959e1d6
--- /dev/null
+++ b/devel/electron17/files/patch-ui_gfx_native__pixmap__handle.h
@@ -0,0 +1,38 @@
+--- ui/gfx/native_pixmap_handle.h.orig 2021-09-14 01:52:23 UTC
++++ ui/gfx/native_pixmap_handle.h
+@@ -15,7 +15,7 @@
+ #include "third_party/abseil-cpp/absl/types/optional.h"
+ #include "ui/gfx/gfx_export.h"
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ #include "base/files/scoped_file.h"
+ #endif
+
+@@ -32,7 +32,7 @@ struct GFX_EXPORT NativePixmapPlane {
+ NativePixmapPlane(int stride,
+ int offset,
+ uint64_t size
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ ,
+ base::ScopedFD fd
+ #elif defined(OS_FUCHSIA)
+@@ -53,7 +53,7 @@ struct GFX_EXPORT NativePixmapPlane {
+ // This is necessary to map the buffers.
+ uint64_t size;
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // File descriptor for the underlying memory object (usually dmabuf).
+ base::ScopedFD fd;
+ #elif defined(OS_FUCHSIA)
+@@ -82,7 +82,7 @@ struct GFX_EXPORT NativePixmapHandle {
+
+ std::vector<NativePixmapPlane> planes;
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // The modifier is retrieved from GBM library and passed to EGL driver.
+ // Generally it's platform specific, and we don't need to modify it in
+ // Chromium code. Also one per plane per entry.
diff --git a/devel/electron17/files/patch-ui_gfx_native__widget__types.h b/devel/electron17/files/patch-ui_gfx_native__widget__types.h
new file mode 100644
index 000000000000..007c96466ba8
--- /dev/null
+++ b/devel/electron17/files/patch-ui_gfx_native__widget__types.h
@@ -0,0 +1,20 @@
+--- ui/gfx/native_widget_types.h.orig 2021-04-14 01:09:39 UTC
++++ ui/gfx/native_widget_types.h
+@@ -106,7 +106,7 @@ class SkBitmap;
+
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ extern "C" {
+ struct _AtkObject;
+ typedef struct _AtkObject AtkObject;
+@@ -209,7 +209,7 @@ typedef NSFont* NativeFont;
+ typedef id NativeViewAccessible;
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#elif defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#elif defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ // Linux doesn't have a native font type.
+ typedef AtkObject* NativeViewAccessible;
+ #else
diff --git a/devel/electron17/files/patch-ui_gfx_render__text__api__fuzzer.cc b/devel/electron17/files/patch-ui_gfx_render__text__api__fuzzer.cc
new file mode 100644
index 000000000000..ff95b6773edc
--- /dev/null
+++ b/devel/electron17/files/patch-ui_gfx_render__text__api__fuzzer.cc
@@ -0,0 +1,29 @@
+--- ui/gfx/render_text_api_fuzzer.cc.orig 2022-05-11 07:17:07 UTC
++++ ui/gfx/render_text_api_fuzzer.cc
+@@ -20,7 +20,7 @@
+
+ // TODO(crbug.com/1052397): Revisit once build flag switch of lacros-chrome is
+ // complete.
+-#if defined(OS_ANDROID) || (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
++#if defined(OS_ANDROID) || (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD))
+ #include "base/test/test_discardable_memory_allocator.h"
+ #endif
+
+@@ -42,7 +42,7 @@ struct Environment {
+ logging::SetMinLogLevel(logging::LOG_FATAL);
+ // TODO(crbug.com/1052397): Revisit once build flag switch of lacros-chrome is
+ // complete.
+-#if defined(OS_ANDROID) || (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
++#if defined(OS_ANDROID) || (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD))
+ // Some platforms require discardable memory to use bitmap fonts.
+ base::DiscardableMemoryAllocator::SetInstance(
+ &discardable_memory_allocator);
+@@ -53,7 +53,7 @@ struct Environment {
+
+ // TODO(crbug.com/1052397): Revisit once build flag switch of lacros-chrome is
+ // complete.
+-#if defined(OS_ANDROID) || (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
++#if defined(OS_ANDROID) || (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD))
+ base::TestDiscardableMemoryAllocator discardable_memory_allocator;
+ #endif
+
diff --git a/devel/electron17/files/patch-ui_gfx_switches.cc b/devel/electron17/files/patch-ui_gfx_switches.cc
new file mode 100644
index 000000000000..28dc7a35a212
--- /dev/null
+++ b/devel/electron17/files/patch-ui_gfx_switches.cc
@@ -0,0 +1,11 @@
+--- ui/gfx/switches.cc.orig 2022-05-13 07:19:54 UTC
++++ ui/gfx/switches.cc
+@@ -27,7 +27,7 @@ const char kForcePrefersReducedMotion[] = "force-prefe
+ // Run in headless mode, i.e., without a UI or display server dependencies.
+ const char kHeadless[] = "headless";
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // Which X11 display to connect to. Emulates the GTK+ "--display=" command line
+ // argument. In use only with Ozone/X11.
+ const char kX11Display[] = "display";
diff --git a/devel/electron17/files/patch-ui_gfx_switches.h b/devel/electron17/files/patch-ui_gfx_switches.h
new file mode 100644
index 000000000000..88c90cd0f5c1
--- /dev/null
+++ b/devel/electron17/files/patch-ui_gfx_switches.h
@@ -0,0 +1,11 @@
+--- ui/gfx/switches.h.orig 2022-05-13 07:19:54 UTC
++++ ui/gfx/switches.h
+@@ -19,7 +19,7 @@ GFX_SWITCHES_EXPORT extern const char kEnableNativeGpu
+ GFX_SWITCHES_EXPORT extern const char kForcePrefersReducedMotion[];
+ GFX_SWITCHES_EXPORT extern const char kHeadless[];
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ GFX_SWITCHES_EXPORT extern const char kX11Display[];
+ GFX_SWITCHES_EXPORT extern const char kNoXshm[];
+ #endif
diff --git a/devel/electron17/files/patch-ui_gfx_x_generated__protos_dri3.cc b/devel/electron17/files/patch-ui_gfx_x_generated__protos_dri3.cc
new file mode 100644
index 000000000000..1044d22c9f6b
--- /dev/null
+++ b/devel/electron17/files/patch-ui_gfx_x_generated__protos_dri3.cc
@@ -0,0 +1,11 @@
+--- ui/gfx/x/generated_protos/dri3.cc.orig 2021-09-14 01:52:23 UTC
++++ ui/gfx/x/generated_protos/dri3.cc
+@@ -43,6 +43,8 @@
+ #include <xcb/xcb.h>
+ #include <xcb/xcbext.h>
+
++#include <unistd.h>
++
+ #include "base/logging.h"
+ #include "base/posix/eintr_wrapper.h"
+ #include "ui/gfx/x/xproto_internal.h"
diff --git a/devel/electron17/files/patch-ui_gfx_x_generated__protos_shm.cc b/devel/electron17/files/patch-ui_gfx_x_generated__protos_shm.cc
new file mode 100644
index 000000000000..458f3da09928
--- /dev/null
+++ b/devel/electron17/files/patch-ui_gfx_x_generated__protos_shm.cc
@@ -0,0 +1,11 @@
+--- ui/gfx/x/generated_protos/shm.cc.orig 2021-09-14 01:52:23 UTC
++++ ui/gfx/x/generated_protos/shm.cc
+@@ -43,6 +43,8 @@
+ #include <xcb/xcb.h>
+ #include <xcb/xcbext.h>
+
++#include <unistd.h>
++
+ #include "base/logging.h"
+ #include "base/posix/eintr_wrapper.h"
+ #include "ui/gfx/x/xproto_internal.h"
diff --git a/devel/electron17/files/patch-ui_gfx_x_xlib__support.cc b/devel/electron17/files/patch-ui_gfx_x_xlib__support.cc
new file mode 100644
index 000000000000..05305c7ba5c1
--- /dev/null
+++ b/devel/electron17/files/patch-ui_gfx_x_xlib__support.cc
@@ -0,0 +1,21 @@
+--- ui/gfx/x/xlib_support.cc.orig 2022-05-11 07:02:11 UTC
++++ ui/gfx/x/xlib_support.cc
+@@ -38,10 +38,18 @@ void InitXlib() {
+ if (xlib_loader->loaded())
+ return;
+
++#if defined(OS_BSD)
++ CHECK(xlib_loader->Load("libX11.so"));
++#else
+ CHECK(xlib_loader->Load("libX11.so.6"));
++#endif
+
+ auto* xlib_xcb_loader = GetXlibXcbLoader();
++#if defined(OS_BSD)
++ CHECK(xlib_xcb_loader->Load("libX11-xcb.so"));
++#else
+ CHECK(xlib_xcb_loader->Load("libX11-xcb.so.1"));
++#endif
+
+ CHECK(xlib_loader->XInitThreads());
+
diff --git a/devel/electron17/files/patch-ui_gl_BUILD.gn b/devel/electron17/files/patch-ui_gl_BUILD.gn
new file mode 100644
index 000000000000..a008103323d7
--- /dev/null
+++ b/devel/electron17/files/patch-ui_gl_BUILD.gn
@@ -0,0 +1,36 @@
+--- ui/gl/BUILD.gn.orig 2022-05-11 07:17:07 UTC
++++ ui/gl/BUILD.gn
+@@ -162,8 +162,6 @@ component("gl") {
+ defines += [ "GPU_ENABLE_SERVICE_LOGGING" ]
+ }
+
+- include_dirs = [ "//third_party/mesa_headers" ]
+-
+ all_dependent_configs = [ ":gl_config" ]
+
+ public_configs = [ "//third_party/khronos:khronos_headers" ]
+@@ -180,7 +178,6 @@ component("gl") {
+ ]
+ public_deps = [
+ "//base",
+- "//third_party/mesa_headers",
+ "//ui/events/platform",
+ "//ui/gfx",
+ "//ui/gfx/geometry",
+@@ -409,7 +406,6 @@ component("gl") {
+ data_deps += [
+ "//third_party/angle:libEGL",
+ "//third_party/angle:libGLESv2",
+- "//third_party/mesa_headers",
+ ]
+ if (enable_swiftshader) {
+ data_deps += [ "//third_party/swiftshader" ]
+@@ -636,8 +632,6 @@ test("gl_unittests") {
+ "//ui/platform_window",
+ "//ui/platform_window:platform_impls",
+ ]
+-
+- data_deps = [ "//third_party/mesa_headers" ]
+
+ # TODO(https://crbug.com/789065): this must be moved to Ozone.
+ if (ozone_platform_x11) {
diff --git a/devel/electron17/files/patch-ui_gl_generate__bindings.py b/devel/electron17/files/patch-ui_gl_generate__bindings.py
new file mode 100644
index 000000000000..8f85f265a571
--- /dev/null
+++ b/devel/electron17/files/patch-ui_gl_generate__bindings.py
@@ -0,0 +1,12 @@
+--- ui/gl/generate_bindings.py.orig 2022-05-11 07:17:07 UTC
++++ ui/gl/generate_bindings.py
+@@ -2868,6 +2868,9 @@ GLX_FUNCTIONS = [
+ 'arguments':
+ 'Display* dpy, GLXDrawable drawable, int32_t* numerator, '
+ 'int32_t* denominator' },
++{ 'return_type': '__GLXextFuncPtr',
++ 'names': ['glXGetProcAddressARB'],
++ 'arguments': 'const GLubyte* procName', },
+ { 'return_type': 'void',
+ 'names': ['glXGetSelectedEvent'],
+ 'arguments': 'Display* dpy, GLXDrawable drawable, unsigned long* mask', },
diff --git a/devel/electron17/files/patch-ui_gl_gl__bindings__api__autogen__glx.h b/devel/electron17/files/patch-ui_gl_gl__bindings__api__autogen__glx.h
new file mode 100644
index 000000000000..87d64deb195f
--- /dev/null
+++ b/devel/electron17/files/patch-ui_gl_gl__bindings__api__autogen__glx.h
@@ -0,0 +1,10 @@
+--- ui/gl/gl_bindings_api_autogen_glx.h.orig 2021-01-07 00:37:29 UTC
++++ ui/gl/gl_bindings_api_autogen_glx.h
+@@ -88,6 +88,7 @@ bool glXGetMscRateOMLFn(Display* dpy,
+ GLXDrawable drawable,
+ int32_t* numerator,
+ int32_t* denominator) override;
++__GLXextFuncPtr glXGetProcAddressARBFn(const GLubyte* procName) override;
+ void glXGetSelectedEventFn(Display* dpy,
+ GLXDrawable drawable,
+ unsigned long* mask) override;
diff --git a/devel/electron17/files/patch-ui_gl_gl__bindings__autogen__glx.cc b/devel/electron17/files/patch-ui_gl_gl__bindings__autogen__glx.cc
new file mode 100644
index 000000000000..64d7773c406d
--- /dev/null
+++ b/devel/electron17/files/patch-ui_gl_gl__bindings__autogen__glx.cc
@@ -0,0 +1,61 @@
+--- ui/gl/gl_bindings_autogen_glx.cc.orig 2022-05-11 07:17:07 UTC
++++ ui/gl/gl_bindings_autogen_glx.cc
+@@ -115,6 +115,8 @@ void DriverGLX::InitializeExtensionBindings() {
+
+ ext.b_GLX_ARB_create_context =
+ gfx::HasExtension(extensions, "GLX_ARB_create_context");
++ ext.b_GLX_ARB_get_proc_address =
++ gfx::HasExtension(extensions, "GLX_ARB_get_proc_address");
+ ext.b_GLX_EXT_swap_control =
+ gfx::HasExtension(extensions, "GLX_EXT_swap_control");
+ ext.b_GLX_EXT_texture_from_pixmap =
+@@ -156,6 +158,11 @@ void DriverGLX::InitializeExtensionBindings() {
+ GetGLProcAddress("glXGetMscRateOML"));
+ }
+
++ if (ext.b_GLX_ARB_get_proc_address) {
++ fn.glXGetProcAddressARBFn = reinterpret_cast<glXGetProcAddressARBProc>(
++ GetGLProcAddress("glXGetProcAddressARB"));
++ }
++
+ if (ext.b_GLX_OML_sync_control) {
+ fn.glXGetSyncValuesOMLFn = reinterpret_cast<glXGetSyncValuesOMLProc>(
+ GetGLProcAddress("glXGetSyncValuesOML"));
+@@ -346,6 +353,10 @@ bool GLXApiBase::glXGetMscRateOMLFn(Display* dpy,
+ return driver_->fn.glXGetMscRateOMLFn(dpy, drawable, numerator, denominator);
+ }
+
++__GLXextFuncPtr GLXApiBase::glXGetProcAddressARBFn(const GLubyte* procName) {
++ return driver_->fn.glXGetProcAddressARBFn(procName);
++}
++
+ void GLXApiBase::glXGetSelectedEventFn(Display* dpy,
+ GLXDrawable drawable,
+ unsigned long* mask) {
+@@ -648,6 +659,11 @@ bool TraceGLXApi::glXGetMscRateOMLFn(Display* dpy,
+ return glx_api_->glXGetMscRateOMLFn(dpy, drawable, numerator, denominator);
+ }
+
++__GLXextFuncPtr TraceGLXApi::glXGetProcAddressARBFn(const GLubyte* procName) {
++ TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLXAPI::glXGetProcAddressARB")
++ return glx_api_->glXGetProcAddressARBFn(procName);
++}
++
+ void TraceGLXApi::glXGetSelectedEventFn(Display* dpy,
+ GLXDrawable drawable,
+ unsigned long* mask) {
+@@ -1069,6 +1085,14 @@ bool LogGLXApi::glXGetMscRateOMLFn(Display* dpy,
+ << static_cast<const void*>(denominator) << ")");
+ bool result =
+ glx_api_->glXGetMscRateOMLFn(dpy, drawable, numerator, denominator);
++ GL_SERVICE_LOG("GL_RESULT: " << result);
++ return result;
++}
++
++__GLXextFuncPtr LogGLXApi::glXGetProcAddressARBFn(const GLubyte* procName) {
++ GL_SERVICE_LOG("glXGetProcAddressARB"
++ << "(" << static_cast<const void*>(procName) << ")");
++ __GLXextFuncPtr result = glx_api_->glXGetProcAddressARBFn(procName);
+ GL_SERVICE_LOG("GL_RESULT: " << result);
+ return result;
+ }
diff --git a/devel/electron17/files/patch-ui_gl_gl__bindings__autogen__glx.h b/devel/electron17/files/patch-ui_gl_gl__bindings__autogen__glx.h
new file mode 100644
index 000000000000..e30a72f39e11
--- /dev/null
+++ b/devel/electron17/files/patch-ui_gl_gl__bindings__autogen__glx.h
@@ -0,0 +1,43 @@
+--- ui/gl/gl_bindings_autogen_glx.h.orig 2021-01-07 00:37:29 UTC
++++ ui/gl/gl_bindings_autogen_glx.h
+@@ -104,6 +104,8 @@ typedef bool(GL_BINDING_CALL* glXGetMscRateOMLProc)(Di
+ GLXDrawable drawable,
+ int32_t* numerator,
+ int32_t* denominator);
++typedef __GLXextFuncPtr(GL_BINDING_CALL* glXGetProcAddressARBProc)(
++ const GLubyte* procName);
+ typedef void(GL_BINDING_CALL* glXGetSelectedEventProc)(Display* dpy,
+ GLXDrawable drawable,
+ unsigned long* mask);
+@@ -166,6 +168,7 @@ typedef void(GL_BINDING_CALL* glXWaitXProc)(void);
+
+ struct ExtensionsGLX {
+ bool b_GLX_ARB_create_context;
++ bool b_GLX_ARB_get_proc_address;
+ bool b_GLX_EXT_swap_control;
+ bool b_GLX_EXT_texture_from_pixmap;
+ bool b_GLX_MESA_copy_sub_buffer;
+@@ -203,6 +206,7 @@ struct ProcsGLX {
+ glXGetFBConfigFromVisualSGIXProc glXGetFBConfigFromVisualSGIXFn;
+ glXGetFBConfigsProc glXGetFBConfigsFn;
+ glXGetMscRateOMLProc glXGetMscRateOMLFn;
++ glXGetProcAddressARBProc glXGetProcAddressARBFn;
+ glXGetSelectedEventProc glXGetSelectedEventFn;
+ glXGetSyncValuesOMLProc glXGetSyncValuesOMLFn;
+ glXGetVisualFromFBConfigProc glXGetVisualFromFBConfigFn;
+@@ -310,6 +314,7 @@ class GL_EXPORT GLXApi {
+ GLXDrawable drawable,
+ int32_t* numerator,
+ int32_t* denominator) = 0;
++ virtual __GLXextFuncPtr glXGetProcAddressARBFn(const GLubyte* procName) = 0;
+ virtual void glXGetSelectedEventFn(Display* dpy,
+ GLXDrawable drawable,
+ unsigned long* mask) = 0;
+@@ -394,6 +399,7 @@ class GL_EXPORT GLXApi {
+ ::gl::g_current_glx_context->glXGetFBConfigFromVisualSGIXFn
+ #define glXGetFBConfigs ::gl::g_current_glx_context->glXGetFBConfigsFn
+ #define glXGetMscRateOML ::gl::g_current_glx_context->glXGetMscRateOMLFn
++#define glXGetProcAddressARB ::gl::g_current_glx_context->glXGetProcAddressARBFn
+ #define glXGetSelectedEvent ::gl::g_current_glx_context->glXGetSelectedEventFn
+ #define glXGetSyncValuesOML ::gl::g_current_glx_context->glXGetSyncValuesOMLFn
+ #define glXGetVisualFromFBConfig \
diff --git a/devel/electron17/files/patch-ui_gl_gl__features.cc b/devel/electron17/files/patch-ui_gl_gl__features.cc
new file mode 100644
index 000000000000..240435687450
--- /dev/null
+++ b/devel/electron17/files/patch-ui_gl_gl__features.cc
@@ -0,0 +1,11 @@
+--- ui/gl/gl_features.cc.orig 2022-05-11 07:17:07 UTC
++++ ui/gl/gl_features.cc
+@@ -72,7 +72,7 @@ bool IsDeviceBlocked(const char* field, const std::str
+ const base::Feature kDefaultPassthroughCommandDecoder {
+ "DefaultPassthroughCommandDecoder",
+ #if defined(OS_WIN) || defined(OS_FUCHSIA) || \
+- ((defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) && \
++ ((defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)) && \
+ !defined(CHROMECAST_BUILD))
+ base::FEATURE_ENABLED_BY_DEFAULT
+ #else
diff --git a/devel/electron17/files/patch-ui_gl_gl__image__glx__native__pixmap.cc b/devel/electron17/files/patch-ui_gl_gl__image__glx__native__pixmap.cc
new file mode 100644
index 000000000000..4db0a79d3139
--- /dev/null
+++ b/devel/electron17/files/patch-ui_gl_gl__image__glx__native__pixmap.cc
@@ -0,0 +1,11 @@
+--- ui/gl/gl_image_glx_native_pixmap.cc.orig 2022-05-11 07:17:07 UTC
++++ ui/gl/gl_image_glx_native_pixmap.cc
+@@ -14,6 +14,8 @@
+ #include "ui/gl/buffer_format_utils.h"
+ #include "ui/gl/gl_bindings.h"
+
++#include <unistd.h>
++
+ namespace gl {
+
+ namespace {
diff --git a/devel/electron17/files/patch-ui_gl_init_gl__factory.cc b/devel/electron17/files/patch-ui_gl_init_gl__factory.cc
new file mode 100644
index 000000000000..96df9a8b4b3b
--- /dev/null
+++ b/devel/electron17/files/patch-ui_gl_init_gl__factory.cc
@@ -0,0 +1,11 @@
+--- ui/gl/init/gl_factory.cc.orig 2022-05-11 07:17:07 UTC
++++ ui/gl/init/gl_factory.cc
+@@ -171,7 +171,7 @@ bool InitializeGLOneOffPlatformHelper(bool init_extens
+ } // namespace
+
+ GLImplementationParts GetSoftwareGLImplementationForPlatform() {
+-#if defined(OS_WIN) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)
+ return GetSoftwareGLImplementation();
+ #else
+ return GetLegacySoftwareGLImplementation();
diff --git a/devel/electron17/files/patch-ui_gl_sync__control__vsync__provider.cc b/devel/electron17/files/patch-ui_gl_sync__control__vsync__provider.cc
new file mode 100644
index 000000000000..d9d738b34208
--- /dev/null
+++ b/devel/electron17/files/patch-ui_gl_sync__control__vsync__provider.cc
@@ -0,0 +1,38 @@
+--- ui/gl/sync_control_vsync_provider.cc.orig 2022-05-11 07:17:07 UTC
++++ ui/gl/sync_control_vsync_provider.cc
+@@ -11,7 +11,7 @@
+ #include "base/trace_event/trace_event.h"
+ #include "build/build_config.h"
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // These constants define a reasonable range for a calculated refresh interval.
+ // Calculating refreshes out of this range will be considered a fatal error.
+ const int64_t kMinVsyncIntervalUs = base::Time::kMicrosecondsPerSecond / 400;
+@@ -26,7 +26,7 @@ const double kRelativeIntervalDifferenceThreshold = 0.
+ namespace gl {
+
+ SyncControlVSyncProvider::SyncControlVSyncProvider() : gfx::VSyncProvider() {
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // On platforms where we can't get an accurate reading on the refresh
+ // rate we fall back to the assumption that we're displaying 60 frames
+ // per second.
+@@ -48,7 +48,7 @@ bool SyncControlVSyncProvider::GetVSyncParametersIfAva
+ base::TimeTicks* timebase_out,
+ base::TimeDelta* interval_out) {
+ TRACE_EVENT0("gpu", "SyncControlVSyncProvider::GetVSyncParameters");
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // The actual clock used for the system time returned by glXGetSyncValuesOML
+ // is unspecified. In practice, the clock used is likely to be either
+ // CLOCK_REALTIME or CLOCK_MONOTONIC, so we compare the returned time to the
+@@ -159,7 +159,7 @@ bool SyncControlVSyncProvider::GetVSyncParametersIfAva
+ }
+
+ bool SyncControlVSyncProvider::SupportGetVSyncParametersIfAvailable() const {
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ return true;
+ #else
+ return false;
diff --git a/devel/electron17/files/patch-ui_gl_sync__control__vsync__provider.h b/devel/electron17/files/patch-ui_gl_sync__control__vsync__provider.h
new file mode 100644
index 000000000000..45f0c8d4a2a0
--- /dev/null
+++ b/devel/electron17/files/patch-ui_gl_sync__control__vsync__provider.h
@@ -0,0 +1,20 @@
+--- ui/gl/sync_control_vsync_provider.h.orig 2022-05-11 07:17:07 UTC
++++ ui/gl/sync_control_vsync_provider.h
+@@ -30,7 +30,7 @@ class SyncControlVSyncProvider : public gfx::VSyncProv
+ bool SupportGetVSyncParametersIfAvailable() const override;
+
+ static constexpr bool IsSupported() {
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ return true;
+ #else
+ return false;
+@@ -45,7 +45,7 @@ class SyncControlVSyncProvider : public gfx::VSyncProv
+ virtual bool GetMscRate(int32_t* numerator, int32_t* denominator) = 0;
+
+ private:
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ base::TimeTicks last_timebase_;
+ uint64_t last_media_stream_counter_ = 0;
+ base::TimeDelta last_good_interval_;
diff --git a/devel/electron17/files/patch-ui_gtk_gtk__compat.cc b/devel/electron17/files/patch-ui_gtk_gtk__compat.cc
new file mode 100644
index 000000000000..1d46f621a215
--- /dev/null
+++ b/devel/electron17/files/patch-ui_gtk_gtk__compat.cc
@@ -0,0 +1,50 @@
+--- ui/gtk/gtk_compat.cc.orig 2022-05-11 07:17:07 UTC
++++ ui/gtk/gtk_compat.cc
+@@ -62,27 +62,47 @@ auto DlCast(void* symbol) {
+ }
+
+ void* GetLibGio() {
++#if defined(OS_BSD)
++ static void* libgio = DlOpen("libgio-2.0.so");
++#else
+ static void* libgio = DlOpen("libgio-2.0.so.0");
++#endif
+ return libgio;
+ }
+
+ void* GetLibGdkPixbuf() {
++#if defined(OS_BSD)
++ static void* libgdk_pixbuf = DlOpen("libgdk_pixbuf-2.0.so");
++#else
+ static void* libgdk_pixbuf = DlOpen("libgdk_pixbuf-2.0.so.0");
++#endif
+ return libgdk_pixbuf;
+ }
+
+ void* GetLibGdk3() {
++#if defined(OS_BSD)
++ static void* libgdk3 = DlOpen("libgdk-3.so");
++#else
+ static void* libgdk3 = DlOpen("libgdk-3.so.0");
++#endif
+ return libgdk3;
+ }
+
+ void* GetLibGtk3(bool check = true) {
++#if defined(OS_BSD)
++ static void* libgtk3 = DlOpen("libgtk-3.so", check);
++#else
+ static void* libgtk3 = DlOpen("libgtk-3.so.0", check);
++#endif
+ return libgtk3;
+ }
+
+ void* GetLibGtk4(bool check = true) {
++#if defined(OS_BSD)
++ static void* libgtk4 = DlOpen("libgtk-4.so", check);
++#else
+ static void* libgtk4 = DlOpen("libgtk-4.so.1", check);
++#endif
+ return libgtk4;
+ }
+
diff --git a/devel/electron17/files/patch-ui_gtk_printing_print__dialog__gtk.cc b/devel/electron17/files/patch-ui_gtk_printing_print__dialog__gtk.cc
new file mode 100644
index 000000000000..7ee9b937a082
--- /dev/null
+++ b/devel/electron17/files/patch-ui_gtk_printing_print__dialog__gtk.cc
@@ -0,0 +1,11 @@
+--- ui/gtk/printing/print_dialog_gtk.cc.orig 2022-05-13 07:19:54 UTC
++++ ui/gtk/printing/print_dialog_gtk.cc
+@@ -413,7 +413,7 @@ void PrintDialogGtk::ShowDialog(
+ GtkPrintCapabilities cap = static_cast<GtkPrintCapabilities>(
+ GTK_PRINT_CAPABILITY_GENERATE_PDF | GTK_PRINT_CAPABILITY_PAGE_SET |
+ GTK_PRINT_CAPABILITY_COPIES | GTK_PRINT_CAPABILITY_COLLATE |
+- GTK_PRINT_CAPABILITY_REVERSE);
++ GTK_PRINT_CAPABILITY_REVERSE | GTK_PRINT_CAPABILITY_GENERATE_PS);
+ gtk_print_unix_dialog_set_manual_capabilities(GTK_PRINT_UNIX_DIALOG(dialog_),
+ cap);
+ gtk_print_unix_dialog_set_embed_page_setup(GTK_PRINT_UNIX_DIALOG(dialog_),
diff --git a/devel/electron17/files/patch-ui_message__center_views_message__popup__view.cc b/devel/electron17/files/patch-ui_message__center_views_message__popup__view.cc
new file mode 100644
index 000000000000..befbbe4a0d9b
--- /dev/null
+++ b/devel/electron17/files/patch-ui_message__center_views_message__popup__view.cc
@@ -0,0 +1,11 @@
+--- ui/message_center/views/message_popup_view.cc.orig 2021-11-19 04:25:48 UTC
++++ ui/message_center/views/message_popup_view.cc
+@@ -123,7 +123,7 @@ void MessagePopupView::Show() {
+ params.z_order = ui::ZOrderLevel::kFloatingWindow;
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ // Make the widget explicitly activatable as TYPE_POPUP is not activatable by
+ // default but we need focus for the inline reply textarea.
+ params.activatable = views::Widget::InitParams::Activatable::kYes;
diff --git a/devel/electron17/files/patch-ui_native__theme_native__theme.h b/devel/electron17/files/patch-ui_native__theme_native__theme.h
new file mode 100644
index 000000000000..de485ae474c1
--- /dev/null
+++ b/devel/electron17/files/patch-ui_native__theme_native__theme.h
@@ -0,0 +1,11 @@
+--- ui/native_theme/native_theme.h.orig 2022-05-13 07:19:54 UTC
++++ ui/native_theme/native_theme.h
+@@ -57,7 +57,7 @@ class NATIVE_THEME_EXPORT NativeTheme {
+ kCheckbox,
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ kFrameTopArea,
+ #endif
+ kInnerSpinButton,
diff --git a/devel/electron17/files/patch-ui_native__theme_native__theme__base.cc b/devel/electron17/files/patch-ui_native__theme_native__theme__base.cc
new file mode 100644
index 000000000000..c41c365c195c
--- /dev/null
+++ b/devel/electron17/files/patch-ui_native__theme_native__theme__base.cc
@@ -0,0 +1,11 @@
+--- ui/native_theme/native_theme_base.cc.orig 2021-10-08 06:26:48 UTC
++++ ui/native_theme/native_theme_base.cc
+@@ -267,7 +267,7 @@ void NativeThemeBase::Paint(cc::PaintCanvas* canvas,
+ break;
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ case kFrameTopArea:
+ PaintFrameTopArea(canvas, state, rect, extra.frame_top_area,
+ color_scheme);
diff --git a/devel/electron17/files/patch-ui_ozone_common_egl__util.cc b/devel/electron17/files/patch-ui_ozone_common_egl__util.cc
new file mode 100644
index 000000000000..4ccc345e21e0
--- /dev/null
+++ b/devel/electron17/files/patch-ui_ozone_common_egl__util.cc
@@ -0,0 +1,14 @@
+--- ui/ozone/common/egl_util.cc.orig 2022-05-11 07:17:07 UTC
++++ ui/ozone/common/egl_util.cc
+@@ -36,9 +36,9 @@ const base::FilePath::CharType kDefaultGlesSoname[] =
+ FILE_PATH_LITERAL("libGLESv2.so");
+ #else // !defined(OS_FUCHSIA)
+ const base::FilePath::CharType kDefaultEglSoname[] =
+- FILE_PATH_LITERAL("libEGL.so.1");
++ FILE_PATH_LITERAL("libEGL.so");
+ const base::FilePath::CharType kDefaultGlesSoname[] =
+- FILE_PATH_LITERAL("libGLESv2.so.2");
++ FILE_PATH_LITERAL("libGLESv2.so");
+ #endif
+ const base::FilePath::CharType kAngleEglSoname[] =
+ FILE_PATH_LITERAL("libEGL.so");
diff --git a/devel/electron17/files/patch-ui_ozone_platform_x11_ozone__platform__x11.cc b/devel/electron17/files/patch-ui_ozone_platform_x11_ozone__platform__x11.cc
new file mode 100644
index 000000000000..a7f7bac5b549
--- /dev/null
+++ b/devel/electron17/files/patch-ui_ozone_platform_x11_ozone__platform__x11.cc
@@ -0,0 +1,11 @@
+--- ui/ozone/platform/x11/ozone_platform_x11.cc.orig 2022-05-13 07:19:54 UTC
++++ ui/ozone/platform/x11/ozone_platform_x11.cc
+@@ -205,7 +205,7 @@ class OzonePlatformX11 : public OzonePlatform,
+ properties->supports_global_application_menus = true;
+ properties->app_modal_dialogs_use_event_blocker = true;
+ properties->fetch_buffer_formats_for_gmb_on_gpu = true;
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ properties->supports_vaapi = true;
+ #endif
+
diff --git a/devel/electron17/files/patch-ui_ozone_public_ozone__platform.h b/devel/electron17/files/patch-ui_ozone_public_ozone__platform.h
new file mode 100644
index 000000000000..cd1474dc2cf7
--- /dev/null
+++ b/devel/electron17/files/patch-ui_ozone_public_ozone__platform.h
@@ -0,0 +1,11 @@
+--- ui/ozone/public/ozone_platform.h.orig 2022-05-13 07:19:54 UTC
++++ ui/ozone/public/ozone_platform.h
+@@ -159,7 +159,7 @@ class COMPONENT_EXPORT(OZONE) OzonePlatform {
+ // back via gpu extra info.
+ bool fetch_buffer_formats_for_gmb_on_gpu = false;
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // TODO(crbug.com/1116701): add vaapi support for other Ozone platforms on
+ // Linux. At the moment, VA-API Linux implementation supports only X11
+ // backend. This implementation must be refactored to support Ozone
diff --git a/devel/electron17/files/patch-ui_platform__window_platform__window__init__properties.h b/devel/electron17/files/patch-ui_platform__window_platform__window__init__properties.h
new file mode 100644
index 000000000000..a41d0ce30f4f
--- /dev/null
+++ b/devel/electron17/files/patch-ui_platform__window_platform__window__init__properties.h
@@ -0,0 +1,20 @@
+--- ui/platform_window/platform_window_init_properties.h.orig 2022-05-11 07:17:07 UTC
++++ ui/platform_window/platform_window_init_properties.h
+@@ -53,7 +53,7 @@ class WorkspaceExtensionDelegate;
+ class ScenicWindowDelegate;
+ #endif
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ class X11ExtensionDelegate;
+ #endif
+
+@@ -112,7 +112,7 @@ struct COMPONENT_EXPORT(PLATFORM_WINDOW) PlatformWindo
+
+ PlatformWindowShadowType shadow_type = PlatformWindowShadowType::kDefault;
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ bool prefer_dark_theme = false;
+ gfx::ImageSkia* icon = nullptr;
+ absl::optional<int> background_color;
diff --git a/devel/electron17/files/patch-ui_strings_app__locale__settings.grd b/devel/electron17/files/patch-ui_strings_app__locale__settings.grd
new file mode 100644
index 000000000000..325e70e73484
--- /dev/null
+++ b/devel/electron17/files/patch-ui_strings_app__locale__settings.grd
@@ -0,0 +1,11 @@
+--- ui/strings/app_locale_settings.grd.orig 2022-05-11 07:17:07 UTC
++++ ui/strings/app_locale_settings.grd
+@@ -223,7 +223,7 @@
+ 75%
+ </message>
+ </if>
+- <if expr="(is_linux or is_android or is_bsd or is_fuchsia) and not (chromeos or lacros)">
++ <if expr="(is_posix or is_android or is_bsd or is_fuchsia) and not (chromeos or lacros)">
+ <!-- The font used in Web UI (e.g. History). Note that these are only
+ backups. We try to use the system font if possible. -->
+ <message name="IDS_WEB_FONT_FAMILY" use_name_for_id="true">
diff --git a/devel/electron17/files/patch-ui_views_controls_prefix__selector.cc b/devel/electron17/files/patch-ui_views_controls_prefix__selector.cc
new file mode 100644
index 000000000000..a3e48c64f561
--- /dev/null
+++ b/devel/electron17/files/patch-ui_views_controls_prefix__selector.cc
@@ -0,0 +1,11 @@
+--- ui/views/controls/prefix_selector.cc.orig 2021-11-19 04:25:48 UTC
++++ ui/views/controls/prefix_selector.cc
+@@ -171,7 +171,7 @@ bool PrefixSelector::ShouldDoLearning() {
+ return false;
+ }
+
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ bool PrefixSelector::SetCompositionFromExistingText(
+ const gfx::Range& range,
+ const std::vector<ui::ImeTextSpan>& ui_ime_text_spans) {
diff --git a/devel/electron17/files/patch-ui_views_controls_prefix__selector.h b/devel/electron17/files/patch-ui_views_controls_prefix__selector.h
new file mode 100644
index 000000000000..540100749072
--- /dev/null
+++ b/devel/electron17/files/patch-ui_views_controls_prefix__selector.h
@@ -0,0 +1,11 @@
+--- ui/views/controls/prefix_selector.h.orig 2021-11-19 04:25:48 UTC
++++ ui/views/controls/prefix_selector.h
+@@ -81,7 +81,7 @@ class VIEWS_EXPORT PrefixSelector : public ui::TextInp
+ ukm::SourceId GetClientSourceForMetrics() const override;
+ bool ShouldDoLearning() override;
+
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ bool SetCompositionFromExistingText(
+ const gfx::Range& range,
+ const std::vector<ui::ImeTextSpan>& ui_ime_text_spans) override;
diff --git a/devel/electron17/files/patch-ui_views_controls_textfield_textfield.cc b/devel/electron17/files/patch-ui_views_controls_textfield_textfield.cc
new file mode 100644
index 000000000000..be1b12d147ea
--- /dev/null
+++ b/devel/electron17/files/patch-ui_views_controls_textfield_textfield.cc
@@ -0,0 +1,64 @@
+--- ui/views/controls/textfield/textfield.cc.orig 2022-05-11 07:17:07 UTC
++++ ui/views/controls/textfield/textfield.cc
+@@ -73,7 +73,7 @@
+
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ #include "ui/base/ime/linux/text_edit_command_auralinux.h"
+ #include "ui/base/ime/linux/text_edit_key_bindings_delegate_auralinux.h"
+ #endif
+@@ -166,7 +166,7 @@ bool IsControlKeyModifier(int flags) {
+ // Control-modified key combination, but we cannot extend it to other platforms
+ // as Control has different meanings and behaviors.
+ // https://crrev.com/2580483002/#msg46
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ return flags & ui::EF_CONTROL_DOWN;
+ #else
+ return false;
+@@ -713,7 +713,7 @@ bool Textfield::OnKeyPressed(const ui::KeyEvent& event
+
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ ui::TextEditKeyBindingsDelegateAuraLinux* delegate =
+ ui::GetTextEditKeyBindingsDelegate();
+ std::vector<ui::TextEditCommandAuraLinux> commands;
+@@ -859,7 +859,7 @@ void Textfield::AboutToRequestFocusFromTabTraversal(bo
+ bool Textfield::SkipDefaultKeyEventProcessing(const ui::KeyEvent& event) {
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ // Skip any accelerator handling that conflicts with custom keybindings.
+ ui::TextEditKeyBindingsDelegateAuraLinux* delegate =
+ ui::GetTextEditKeyBindingsDelegate();
+@@ -1722,7 +1722,7 @@ bool Textfield::ShouldDoLearning() {
+ return false;
+ }
+
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // TODO(https://crbug.com/952355): Implement this method to support Korean IME
+ // reconversion feature on native text fields (e.g. find bar).
+ bool Textfield::SetCompositionFromExistingText(
+@@ -2222,14 +2222,14 @@ ui::TextEditCommand Textfield::GetCommandForKeyEvent(
+ #endif
+ return ui::TextEditCommand::DELETE_BACKWARD;
+ }
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // Only erase by line break on Linux and ChromeOS.
+ if (shift)
+ return ui::TextEditCommand::DELETE_TO_BEGINNING_OF_LINE;
+ #endif
+ return ui::TextEditCommand::DELETE_WORD_BACKWARD;
+ case ui::VKEY_DELETE:
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // Only erase by line break on Linux and ChromeOS.
+ if (shift && control)
+ return ui::TextEditCommand::DELETE_TO_END_OF_LINE;
diff --git a/devel/electron17/files/patch-ui_views_controls_textfield_textfield.h b/devel/electron17/files/patch-ui_views_controls_textfield_textfield.h
new file mode 100644
index 000000000000..8f6ad25277e7
--- /dev/null
+++ b/devel/electron17/files/patch-ui_views_controls_textfield_textfield.h
@@ -0,0 +1,11 @@
+--- ui/views/controls/textfield/textfield.h.orig 2022-05-11 07:17:07 UTC
++++ ui/views/controls/textfield/textfield.h
+@@ -443,7 +443,7 @@ class VIEWS_EXPORT Textfield : public View,
+ // Set whether the text should be used to improve typing suggestions.
+ void SetShouldDoLearning(bool value) { should_do_learning_ = value; }
+
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ bool SetCompositionFromExistingText(
+ const gfx::Range& range,
+ const std::vector<ui::ImeTextSpan>& ui_ime_text_spans) override;
diff --git a/devel/electron17/files/patch-ui_views_corewm_tooltip__aura.cc b/devel/electron17/files/patch-ui_views_corewm_tooltip__aura.cc
new file mode 100644
index 000000000000..406150e72eab
--- /dev/null
+++ b/devel/electron17/files/patch-ui_views_corewm_tooltip__aura.cc
@@ -0,0 +1,11 @@
+--- ui/views/corewm/tooltip_aura.cc.orig 2021-11-19 04:25:48 UTC
++++ ui/views/corewm/tooltip_aura.cc
+@@ -50,7 +50,7 @@ constexpr int kVerticalPaddingBottom = 5;
+ bool CanUseTranslucentTooltipWidget() {
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) || defined(OS_WIN)
++#if (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) || defined(OS_WIN) || defined(OS_BSD)
+ return false;
+ #else
+ return true;
diff --git a/devel/electron17/files/patch-ui_views_examples_widget__example.cc b/devel/electron17/files/patch-ui_views_examples_widget__example.cc
new file mode 100644
index 000000000000..d22f1c98437a
--- /dev/null
+++ b/devel/electron17/files/patch-ui_views_examples_widget__example.cc
@@ -0,0 +1,11 @@
+--- ui/views/examples/widget_example.cc.orig 2022-05-11 07:17:07 UTC
++++ ui/views/examples/widget_example.cc
+@@ -49,7 +49,7 @@ void WidgetExample::CreateExampleView(View* container)
+ modal_button->SetCallback(
+ base::BindRepeating(&WidgetExample::CreateDialogWidget,
+ base::Unretained(this), modal_button, true));
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // Windows does not support TYPE_CONTROL top-level widgets.
+ LabelButton* control_button = BuildButton(
+ container, GetStringUTF16(IDS_WIDGET_CHILD_WIDGET_BUTTON_LABEL));
diff --git a/devel/electron17/files/patch-ui_views_focus_focus__manager.cc b/devel/electron17/files/patch-ui_views_focus_focus__manager.cc
new file mode 100644
index 000000000000..97eb9031c4a6
--- /dev/null
+++ b/devel/electron17/files/patch-ui_views_focus_focus__manager.cc
@@ -0,0 +1,20 @@
+--- ui/views/focus/focus_manager.cc.orig 2021-11-19 04:25:48 UTC
++++ ui/views/focus/focus_manager.cc
+@@ -634,7 +634,7 @@ bool FocusManager::RedirectAcceleratorToBubbleAnchorWi
+
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ // Processing an accelerator can delete things. Because we
+ // need these objects afterwards on Linux, save widget_ as weak pointer and
+ // save the close_on_deactivate property value of widget_delegate in a
+@@ -651,7 +651,7 @@ bool FocusManager::RedirectAcceleratorToBubbleAnchorWi
+
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ // Need to manually close the bubble widget on Linux. On Linux when the
+ // bubble is shown, the main widget remains active. Because of that when
+ // focus is set to the main widget to process accelerator, the main widget
diff --git a/devel/electron17/files/patch-ui_views_style_platform__style.cc b/devel/electron17/files/patch-ui_views_style_platform__style.cc
new file mode 100644
index 000000000000..8a1bf634720a
--- /dev/null
+++ b/devel/electron17/files/patch-ui_views_style_platform__style.cc
@@ -0,0 +1,20 @@
+--- ui/views/style/platform_style.cc.orig 2021-10-08 06:26:48 UTC
++++ ui/views/style/platform_style.cc
+@@ -52,7 +52,7 @@ const View::FocusBehavior PlatformStyle::kDefaultFocus
+ const bool PlatformStyle::kAdjustBubbleIfOffscreen =
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ false;
+ #else
+ true;
+@@ -82,7 +82,7 @@ gfx::Range PlatformStyle::RangeToDeleteBackwards(const
+ #endif // OS_MAC
+
+ #if !BUILDFLAG(ENABLE_DESKTOP_AURA) || \
+- (!defined(OS_LINUX) && !defined(OS_CHROMEOS))
++ (!defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(OS_BSD))
+ // static
+ std::unique_ptr<Border> PlatformStyle::CreateThemedLabelButtonBorder(
+ LabelButton* button) {
diff --git a/devel/electron17/files/patch-ui_views_views__delegate.cc b/devel/electron17/files/patch-ui_views_views__delegate.cc
new file mode 100644
index 000000000000..b2464f9bd68c
--- /dev/null
+++ b/devel/electron17/files/patch-ui_views_views__delegate.cc
@@ -0,0 +1,11 @@
+--- ui/views/views_delegate.cc.orig 2021-11-19 04:25:48 UTC
++++ ui/views/views_delegate.cc
+@@ -95,7 +95,7 @@ bool ViewsDelegate::IsWindowInMetro(gfx::NativeWindow
+ return false;
+ }
+ #elif BUILDFLAG(ENABLE_DESKTOP_AURA) && \
+- (defined(OS_LINUX) || defined(OS_CHROMEOS))
++ (defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD))
+ gfx::ImageSkia* ViewsDelegate::GetDefaultWindowIcon() const {
+ return nullptr;
+ }
diff --git a/devel/electron17/files/patch-ui_views_views__delegate.h b/devel/electron17/files/patch-ui_views_views__delegate.h
new file mode 100644
index 000000000000..7bdcd30f0453
--- /dev/null
+++ b/devel/electron17/files/patch-ui_views_views__delegate.h
@@ -0,0 +1,11 @@
+--- ui/views/views_delegate.h.orig 2022-05-11 07:17:07 UTC
++++ ui/views/views_delegate.h
+@@ -139,7 +139,7 @@ class VIEWS_EXPORT ViewsDelegate {
+ // environment.
+ virtual bool IsWindowInMetro(gfx::NativeWindow window) const;
+ #elif BUILDFLAG(ENABLE_DESKTOP_AURA) && \
+- (defined(OS_LINUX) || defined(OS_CHROMEOS))
++ (defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD))
+ virtual gfx::ImageSkia* GetDefaultWindowIcon() const;
+ #endif
+
diff --git a/devel/electron17/files/patch-ui_views_widget_desktop__aura_desktop__screen__ozone.cc b/devel/electron17/files/patch-ui_views_widget_desktop__aura_desktop__screen__ozone.cc
new file mode 100644
index 000000000000..0bd3211d8ecd
--- /dev/null
+++ b/devel/electron17/files/patch-ui_views_widget_desktop__aura_desktop__screen__ozone.cc
@@ -0,0 +1,11 @@
+--- ui/views/widget/desktop_aura/desktop_screen_ozone.cc.orig 2021-11-19 04:25:48 UTC
++++ ui/views/widget/desktop_aura/desktop_screen_ozone.cc
+@@ -25,7 +25,7 @@ gfx::NativeWindow DesktopScreenOzone::GetNativeWindowF
+ widget);
+ }
+
+-#if !defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if !defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(OS_BSD)
+ std::unique_ptr<display::Screen> CreateDesktopScreen() {
+ auto screen = std::make_unique<aura::ScreenOzone>();
+ screen->Initialize();
diff --git a/devel/electron17/files/patch-ui_views_widget_desktop__aura_desktop__window__tree__host__platform.cc b/devel/electron17/files/patch-ui_views_widget_desktop__aura_desktop__window__tree__host__platform.cc
new file mode 100644
index 000000000000..4246f12bf8db
--- /dev/null
+++ b/devel/electron17/files/patch-ui_views_widget_desktop__aura_desktop__window__tree__host__platform.cc
@@ -0,0 +1,11 @@
+--- ui/views/widget/desktop_aura/desktop_window_tree_host_platform.cc.orig 2021-11-19 04:25:48 UTC
++++ ui/views/widget/desktop_aura/desktop_window_tree_host_platform.cc
+@@ -910,7 +910,7 @@ display::Display DesktopWindowTreeHostPlatform::GetDis
+ // DesktopWindowTreeHost:
+
+ // Linux subclasses this host and adds some Linux specific bits.
+-#if !defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if !defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(OS_BSD)
+ // static
+ DesktopWindowTreeHost* DesktopWindowTreeHost::Create(
+ internal::NativeWidgetDelegate* native_widget_delegate,
diff --git a/devel/electron17/files/patch-ui_views_widget_native__widget__aura.cc b/devel/electron17/files/patch-ui_views_widget_native__widget__aura.cc
new file mode 100644
index 000000000000..c77e8dca7b5f
--- /dev/null
+++ b/devel/electron17/files/patch-ui_views_widget_native__widget__aura.cc
@@ -0,0 +1,29 @@
+--- ui/views/widget/native_widget_aura.cc.orig 2022-05-11 07:17:07 UTC
++++ ui/views/widget/native_widget_aura.cc
+@@ -69,7 +69,7 @@
+ #endif
+
+ #if BUILDFLAG(ENABLE_DESKTOP_AURA) && \
+- (defined(OS_LINUX) || defined(OS_CHROMEOS))
++ (defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD))
+ #include "ui/views/widget/desktop_aura/desktop_window_tree_host_linux.h"
+ #endif
+
+@@ -1159,7 +1159,7 @@ void NativeWidgetAura::SetInitialFocus(ui::WindowShowS
+
+ namespace {
+ #if BUILDFLAG(ENABLE_DESKTOP_AURA) && \
+- (defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS))
++ (defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD))
+ void CloseWindow(aura::Window* window) {
+ if (window) {
+ Widget* widget = Widget::GetWidgetForNativeView(window);
+@@ -1190,7 +1190,7 @@ void Widget::CloseAllSecondaryWidgets() {
+ #endif
+
+ #if BUILDFLAG(ENABLE_DESKTOP_AURA) && \
+- (defined(OS_LINUX) || defined(OS_CHROMEOS))
++ (defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD))
+ DesktopWindowTreeHostLinux::CleanUpWindowList(CloseWindow);
+ #endif
+ }
diff --git a/devel/electron17/files/patch-ui_views_widget_widget.cc b/devel/electron17/files/patch-ui_views_widget_widget.cc
new file mode 100644
index 000000000000..840e24bb42b7
--- /dev/null
+++ b/devel/electron17/files/patch-ui_views_widget_widget.cc
@@ -0,0 +1,20 @@
+--- ui/views/widget/widget.cc.orig 2022-05-11 07:17:07 UTC
++++ ui/views/widget/widget.cc
+@@ -50,7 +50,7 @@
+ #include "ui/views/window/custom_frame_view.h"
+ #include "ui/views/window/dialog_delegate.h"
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "ui/views/linux_ui/linux_ui.h"
+ #endif
+
+@@ -1780,7 +1780,7 @@ const ui::NativeTheme* Widget::GetNativeTheme() const
+ parent_)
+ return parent_->GetNativeTheme();
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ if (const views::LinuxUI* linux_ui = views::LinuxUI::instance()) {
+ if (auto* native_theme = linux_ui->GetNativeTheme(GetNativeWindow()))
+ return native_theme;
diff --git a/devel/electron17/files/patch-ui_views_window_custom__frame__view.cc b/devel/electron17/files/patch-ui_views_window_custom__frame__view.cc
new file mode 100644
index 000000000000..5908ce57e8eb
--- /dev/null
+++ b/devel/electron17/files/patch-ui_views_window_custom__frame__view.cc
@@ -0,0 +1,11 @@
+--- ui/views/window/custom_frame_view.cc.orig 2021-11-19 04:25:48 UTC
++++ ui/views/window/custom_frame_view.cc
+@@ -265,7 +265,7 @@ int CustomFrameView::CaptionButtonY() const {
+ // drawn flush with the screen edge, they still obey Fitts' Law.
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ return FrameBorderThickness();
+ #else
+ return frame_->IsMaximized() ? FrameBorderThickness() : kFrameShadowThickness;
diff --git a/devel/electron17/files/patch-ui_views_window_dialog__delegate.cc b/devel/electron17/files/patch-ui_views_window_dialog__delegate.cc
new file mode 100644
index 000000000000..3026adde9165
--- /dev/null
+++ b/devel/electron17/files/patch-ui_views_window_dialog__delegate.cc
@@ -0,0 +1,11 @@
+--- ui/views/window/dialog_delegate.cc.orig 2021-09-14 01:52:23 UTC
++++ ui/views/window/dialog_delegate.cc
+@@ -78,7 +78,7 @@ Widget* DialogDelegate::CreateDialogWidget(
+
+ // static
+ bool DialogDelegate::CanSupportCustomFrame(gfx::NativeView parent) {
+-#if (defined(OS_LINUX) || defined(OS_CHROMEOS)) && \
++#if (defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)) && \
+ BUILDFLAG(ENABLE_DESKTOP_AURA)
+ // The new style doesn't support unparented dialogs on Linux desktop.
+ return parent != nullptr;
diff --git a/devel/electron17/files/patch-ui_views_window_frame__background.cc b/devel/electron17/files/patch-ui_views_window_frame__background.cc
new file mode 100644
index 000000000000..51f1e9705a5e
--- /dev/null
+++ b/devel/electron17/files/patch-ui_views_window_frame__background.cc
@@ -0,0 +1,11 @@
+--- ui/views/window/frame_background.cc.orig 2021-09-14 01:52:23 UTC
++++ ui/views/window/frame_background.cc
+@@ -109,7 +109,7 @@ void FrameBackground::PaintMaximized(gfx::Canvas* canv
+ int width) const {
+ // Fill the top with the frame color first so we have a constant background
+ // for areas not covered by the theme image.
+-#if (defined(OS_LINUX) || defined(OS_CHROMEOS)) && \
++#if (defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)) && \
+ BUILDFLAG(ENABLE_DESKTOP_AURA)
+ ui::NativeTheme::ExtraParams params;
+ params.frame_top_area.use_custom_frame = use_custom_frame_;
diff --git a/devel/electron17/files/patch-ui_webui_resources_js_cr.js b/devel/electron17/files/patch-ui_webui_resources_js_cr.js
new file mode 100644
index 000000000000..04b13f3b0fde
--- /dev/null
+++ b/devel/electron17/files/patch-ui_webui_resources_js_cr.js
@@ -0,0 +1,14 @@
+--- ui/webui/resources/js/cr.js.orig 2022-05-11 07:17:08 UTC
++++ ui/webui/resources/js/cr.js
+@@ -441,6 +441,11 @@ var cr = cr || function(global) {
+ return returnValue;
+ },
+
++ /** Whether this is on *BSD. */
++ get isBSD() {
++ return /BSD/.test(navigator.userAgent);
++ },
++
+ /** Whether this is on vanilla Linux (not chromeOS). */
+ get isLinux() {
+ return /Linux/.test(navigator.userAgent);
diff --git a/devel/electron17/files/patch-v8_BUILD.gn b/devel/electron17/files/patch-v8_BUILD.gn
new file mode 100644
index 000000000000..be28701cd3e0
--- /dev/null
+++ b/devel/electron17/files/patch-v8_BUILD.gn
@@ -0,0 +1,45 @@
+--- v8/BUILD.gn.orig 2022-05-13 07:19:54 UTC
++++ v8/BUILD.gn
+@@ -1185,6 +1185,14 @@ config("toolchain") {
+ } else if (target_os == "win") {
+ defines += [ "V8_HAVE_TARGET_OS" ]
+ defines += [ "V8_TARGET_OS_WIN" ]
++ } else if (target_os == "openbsd") {
++ defines += [ "V8_HAVE_TARGET_OS" ]
++ defines += [ "V8_TARGET_OS_OPENBSD" ]
++ defines += [ "V8_TARGET_OS_BSD" ]
++ } else if (target_os == "freebsd") {
++ defines += [ "V8_HAVE_TARGET_OS" ]
++ defines += [ "V8_TARGET_OS_FREEBSD" ]
++ defines += [ "V8_TARGET_OS_BSD" ]
+ }
+
+ # TODO(jochen): Support v8_enable_prof on Windows.
+@@ -5098,7 +5106,7 @@ v8_component("v8_libbase") {
+ }
+ }
+
+- if (is_linux || is_chromeos) {
++ if ((is_linux || is_chromeos) && !is_bsd) {
+ sources += [
+ "src/base/debug/stack_trace_posix.cc",
+ "src/base/platform/platform-linux.cc",
+@@ -5108,6 +5116,18 @@ v8_component("v8_libbase") {
+ "dl",
+ "rt",
+ ]
++ } else if (is_openbsd) {
++ sources += [
++ "src/base/debug/stack_trace_posix.cc",
++ "src/base/platform/platform-openbsd.cc",
++ ]
++ libs = [ "execinfo" ]
++ } else if (is_freebsd) {
++ sources += [
++ "src/base/debug/stack_trace_posix.cc",
++ "src/base/platform/platform-freebsd.cc",
++ ]
++ libs = [ "execinfo" ]
+ } else if (current_os == "aix") {
+ sources += [
+ "src/base/debug/stack_trace_posix.cc",
diff --git a/devel/electron17/files/patch-v8_include_v8config.h b/devel/electron17/files/patch-v8_include_v8config.h
new file mode 100644
index 000000000000..9bede52e7046
--- /dev/null
+++ b/devel/electron17/files/patch-v8_include_v8config.h
@@ -0,0 +1,37 @@
+--- v8/include/v8config.h.orig 2022-05-13 07:19:54 UTC
++++ v8/include/v8config.h
+@@ -181,6 +181,8 @@ path. Add it with -I<path> to the command line
+ && !defined(V8_TARGET_OS_FUCHSIA) \
+ && !defined(V8_TARGET_OS_IOS) \
+ && !defined(V8_TARGET_OS_LINUX) \
++ && !defined(V8_TARGET_OS_OPENBSD) \
++ && !defined(V8_TARGET_OS_FREEBSD) \
+ && !defined(V8_TARGET_OS_MACOSX) \
+ && !defined(V8_TARGET_OS_WIN)
+ # error No known target OS defined.
+@@ -192,6 +194,8 @@ path. Add it with -I<path> to the command line
+ || defined(V8_TARGET_OS_FUCHSIA) \
+ || defined(V8_TARGET_OS_IOS) \
+ || defined(V8_TARGET_OS_LINUX) \
++ || defined(V8_TARGET_OS_OPENBSD) \
++ || defined(V8_TARGET_OS_FREEBSD) \
+ || defined(V8_TARGET_OS_MACOSX) \
+ || defined(V8_TARGET_OS_WIN)
+ # error A target OS is defined but V8_HAVE_TARGET_OS is unset.
+@@ -212,6 +216,16 @@ path. Add it with -I<path> to the command line
+
+ #ifdef V8_OS_LINUX
+ # define V8_TARGET_OS_LINUX
++#endif
++
++#ifdef V8_OS_OPENBSD
++# define V8_TARGET_OS_OPENBSD
++# define V8_TARGET_OS_BSD
++#endif
++
++#ifdef V8_OS_FREEBSD
++# define V8_TARGET_OS_OPENBSD
++# define V8_TARGET_OS_BSD
+ #endif
+
+ #ifdef V8_OS_MACOSX
diff --git a/devel/electron17/files/patch-v8_src_api_api.cc b/devel/electron17/files/patch-v8_src_api_api.cc
new file mode 100644
index 000000000000..a0cf39ccfcc0
--- /dev/null
+++ b/devel/electron17/files/patch-v8_src_api_api.cc
@@ -0,0 +1,20 @@
+--- v8/src/api/api.cc.orig 2022-05-13 07:19:54 UTC
++++ v8/src/api/api.cc
+@@ -140,7 +140,7 @@
+ #include "src/wasm/wasm-serialization.h"
+ #endif // V8_ENABLE_WEBASSEMBLY
+
+-#if V8_OS_LINUX || V8_OS_MACOSX || V8_OS_FREEBSD
++#if V8_OS_LINUX || V8_OS_MACOSX || V8_OS_FREEBSD || V8_OS_OPENBSD
+ #include <signal.h>
+ #include "include/v8-wasm-trap-handler-posix.h"
+ #include "src/trap-handler/handler-inside-posix.h"
+@@ -6126,7 +6126,7 @@ bool v8::V8::Initialize(const int build_config) {
+ return true;
+ }
+
+-#if V8_OS_LINUX || V8_OS_MACOSX
++#if V8_OS_LINUX || V8_OS_MACOSX || V8_OS_FREEBSD || V8_OS_OPENBSD
+ bool TryHandleWebAssemblyTrapPosix(int sig_code, siginfo_t* info,
+ void* context) {
+ #if V8_ENABLE_WEBASSEMBLY && V8_TRAP_HANDLER_SUPPORTED
diff --git a/devel/electron17/files/patch-v8_src_base_atomicops.h b/devel/electron17/files/patch-v8_src_base_atomicops.h
new file mode 100644
index 000000000000..184f841ca807
--- /dev/null
+++ b/devel/electron17/files/patch-v8_src_base_atomicops.h
@@ -0,0 +1,33 @@
+--- v8/src/base/atomicops.h.orig 2022-05-11 07:18:04 UTC
++++ v8/src/base/atomicops.h
+@@ -57,10 +57,10 @@ using Atomic64 = SbAtomic64;
+ using Atomic8 = char;
+ using Atomic16 = int16_t;
+ using Atomic32 = int32_t;
+-#if defined(V8_HOST_ARCH_64_BIT)
++#if defined(V8_HOST_ARCH_64_BIT) || defined(V8_OS_OPENBSD)
+ // We need to be able to go between Atomic64 and AtomicWord implicitly. This
+ // means Atomic64 and AtomicWord should be the same type on 64-bit.
+-#if defined(__ILP32__)
++#if defined(__ILP32__) && !defined(V8_OS_OPENBSD)
+ using Atomic64 = int64_t;
+ #else
+ using Atomic64 = intptr_t;
+@@ -241,7 +241,7 @@ inline Atomic32 Acquire_Load(volatile const Atomic32*
+ std::memory_order_acquire);
+ }
+
+-#if defined(V8_HOST_ARCH_64_BIT)
++#if defined(V8_HOST_ARCH_64_BIT) || defined(V8_OS_OPENBSD)
+
+ inline Atomic64 Relaxed_CompareAndSwap(volatile Atomic64* ptr,
+ Atomic64 old_value, Atomic64 new_value) {
+@@ -441,7 +441,7 @@ inline int Relaxed_Memcmp(volatile const Atomic8* s1,
+
+ // On some platforms we need additional declarations to make
+ // AtomicWord compatible with our other Atomic* types.
+-#if defined(V8_OS_MACOSX) || defined(V8_OS_OPENBSD) || defined(V8_OS_AIX)
++#if defined(V8_OS_MACOSX) || defined(V8_OS_AIX)
+ #include "src/base/atomicops_internals_atomicword_compat.h"
+ #endif
+
diff --git a/devel/electron17/files/patch-v8_src_base_platform_platform-freebsd.cc b/devel/electron17/files/patch-v8_src_base_platform_platform-freebsd.cc
new file mode 100644
index 000000000000..43a6fe33253a
--- /dev/null
+++ b/devel/electron17/files/patch-v8_src_base_platform_platform-freebsd.cc
@@ -0,0 +1,32 @@
+--- v8/src/base/platform/platform-freebsd.cc.orig 2022-05-11 07:09:01 UTC
++++ v8/src/base/platform/platform-freebsd.cc
+@@ -43,14 +43,10 @@ TimezoneCache* OS::CreateTimezoneCache() {
+ return new PosixDefaultTimezoneCache();
+ }
+
+-static unsigned StringToLong(char* buffer) {
+- return static_cast<unsigned>(strtol(buffer, nullptr, 16));
+-}
+-
+ std::vector<OS::SharedLibraryAddress> OS::GetSharedLibraryAddresses() {
+ std::vector<SharedLibraryAddress> result;
+ int mib[4] = {CTL_KERN, KERN_PROC, KERN_PROC_VMMAP, getpid()};
+- size_t miblen = sizeof(mib) / sizeof(mib[0]);
++ unsigned int miblen = sizeof(mib) / sizeof(mib[0]);
+ size_t buffer_size;
+ if (sysctl(mib, miblen, nullptr, &buffer_size, nullptr, 0) == 0) {
+ // Overallocate the buffer by 1/3 to account for concurrent
+@@ -82,8 +78,13 @@ std::vector<OS::SharedLibraryAddress> OS::GetSharedLib
+ lib_name = std::string(path);
+ }
+ result.push_back(SharedLibraryAddress(
++#if defined(__i386__) || defined(OS_FREEBSD)
++ lib_name, static_cast<uintptr_t>(map->kve_start),
++ static_cast<uintptr_t>(map->kve_end)));
++#else
+ lib_name, reinterpret_cast<uintptr_t>(map->kve_start),
+ reinterpret_cast<uintptr_t>(map->kve_end)));
++#endif
+ }
+
+ start += ssize;
diff --git a/devel/electron17/files/patch-v8_src_base_platform_platform-openbsd.cc b/devel/electron17/files/patch-v8_src_base_platform_platform-openbsd.cc
new file mode 100644
index 000000000000..6d9d800001c7
--- /dev/null
+++ b/devel/electron17/files/patch-v8_src_base_platform_platform-openbsd.cc
@@ -0,0 +1,28 @@
+--- v8/src/base/platform/platform-openbsd.cc.orig 2022-05-11 07:18:04 UTC
++++ v8/src/base/platform/platform-openbsd.cc
+@@ -6,6 +6,7 @@
+ // POSIX-compatible parts, the implementation is in platform-posix.cc.
+
+ #include <pthread.h>
++#include <pthread_np.h>
+ #include <semaphore.h>
+ #include <signal.h>
+ #include <stdlib.h>
+@@ -121,6 +122,17 @@ void OS::SignalCodeMovingGC() {
+ }
+
+ void OS::AdjustSchedulingParams() {}
++
++// static
++Stack::StackSlot Stack::GetStackStart() {
++ stack_t ss;
++ void *base;
++ if (pthread_stackseg_np(pthread_self(), &ss) != 0)
++ return nullptr;
++
++ base = (void*)((size_t) ss.ss_sp - ss.ss_size);
++ return reinterpret_cast<uint8_t*>(base) + ss.ss_size;
++}
+
+ std::vector<OS::MemoryRange> OS::GetFreeMemoryRangesWithin(
+ OS::Address boundary_start, OS::Address boundary_end, size_t minimum_size,
diff --git a/devel/electron17/files/patch-v8_src_base_platform_platform-posix.cc b/devel/electron17/files/patch-v8_src_base_platform_platform-posix.cc
new file mode 100644
index 000000000000..6c3c15d52369
--- /dev/null
+++ b/devel/electron17/files/patch-v8_src_base_platform_platform-posix.cc
@@ -0,0 +1,53 @@
+--- v8/src/base/platform/platform-posix.cc.orig 2022-05-11 07:18:04 UTC
++++ v8/src/base/platform/platform-posix.cc
+@@ -65,7 +65,7 @@
+ #include <sys/syscall.h>
+ #endif
+
+-#if V8_OS_FREEBSD || V8_OS_MACOSX || V8_OS_OPENBSD || V8_OS_SOLARIS
++#if V8_OS_FREEBSD || V8_OS_MACOSX || V8_OS_BSD || V8_OS_SOLARIS
+ #define MAP_ANONYMOUS MAP_ANON
+ #endif
+
+@@ -285,8 +285,15 @@ void OS::SetRandomMmapSeed(int64_t seed) {
+ }
+ }
+
++#if V8_OS_OPENBSD
++// Allow OpenBSD's mmap to select a random address on OpenBSD
+ // static
+ void* OS::GetRandomMmapAddr() {
++ return nullptr;
++}
++#else
++// static
++void* OS::GetRandomMmapAddr() {
+ uintptr_t raw_addr;
+ {
+ MutexGuard guard(rng_mutex.Pointer());
+@@ -377,6 +384,7 @@ void* OS::GetRandomMmapAddr() {
+ #endif
+ return reinterpret_cast<void*>(raw_addr);
+ }
++#endif
+
+ // TODO(bbudge) Move Cygwin and Fuchsia stuff into platform-specific files.
+ #if !V8_OS_CYGWIN && !V8_OS_FUCHSIA
+@@ -547,7 +555,7 @@ bool OS::FreeAddressSpaceReservation(AddressSpaceReser
+
+ // static
+ bool OS::HasLazyCommits() {
+-#if V8_OS_AIX || V8_OS_LINUX || V8_OS_MACOSX
++#if V8_OS_AIX || V8_OS_LINUX || V8_OS_MACOSX || V8_OS_BSD
+ return true;
+ #else
+ // TODO(bbudge) Return true for all POSIX platforms.
+@@ -1140,7 +1148,7 @@ void Thread::SetThreadLocal(LocalStorageKey key, void*
+ // keep this version in POSIX as most Linux-compatible derivatives will
+ // support it. MacOS and FreeBSD are different here.
+ #if !defined(V8_OS_FREEBSD) && !defined(V8_OS_MACOSX) && !defined(_AIX) && \
+- !defined(V8_OS_SOLARIS)
++ !defined(V8_OS_SOLARIS) && !defined(V8_OS_OPENBSD)
+
+ // static
+ Stack::StackSlot Stack::GetStackStart() {
diff --git a/devel/electron17/files/patch-v8_src_base_sys-info.cc b/devel/electron17/files/patch-v8_src_base_sys-info.cc
new file mode 100644
index 000000000000..81b719c2a493
--- /dev/null
+++ b/devel/electron17/files/patch-v8_src_base_sys-info.cc
@@ -0,0 +1,11 @@
+--- v8/src/base/sys-info.cc.orig 2022-05-11 07:18:04 UTC
++++ v8/src/base/sys-info.cc
+@@ -38,7 +38,7 @@ namespace base {
+ // static
+ int SysInfo::NumberOfProcessors() {
+ #if V8_OS_OPENBSD
+- int mib[2] = {CTL_HW, HW_NCPU};
++ int mib[2] = {CTL_HW, HW_NCPUONLINE};
+ int ncpu = 0;
+ size_t len = sizeof(ncpu);
+ if (sysctl(mib, arraysize(mib), &ncpu, &len, nullptr, 0) != 0) {
diff --git a/devel/electron17/files/patch-v8_src_compiler_backend_ia32_instruction-selector-ia32.cc b/devel/electron17/files/patch-v8_src_compiler_backend_ia32_instruction-selector-ia32.cc
new file mode 100644
index 000000000000..9f4f54a78d1d
--- /dev/null
+++ b/devel/electron17/files/patch-v8_src_compiler_backend_ia32_instruction-selector-ia32.cc
@@ -0,0 +1,20 @@
+--- v8/src/compiler/backend/ia32/instruction-selector-ia32.cc.orig 2022-05-11 07:18:04 UTC
++++ v8/src/compiler/backend/ia32/instruction-selector-ia32.cc
+@@ -3019,6 +3019,7 @@ void InstructionSelector::VisitI8x16Shuffle(Node* node
+ Emit(opcode, 1, &dst, input_count, inputs, temp_count, temps);
+ }
+
++#if V8_ENABLE_WEBASSEMBLY
+ void InstructionSelector::VisitI8x16Swizzle(Node* node) {
+ InstructionCode op = kIA32I8x16Swizzle;
+
+@@ -3072,6 +3073,9 @@ void VisitMinOrMax(InstructionSelector* selector, Node
+ void InstructionSelector::VisitF32x4Pmin(Node* node) {
+ VisitMinOrMax(this, node, kIA32Minps, true);
+ }
++#else
++void InstructionSelector::VisitI8x16Swizzle(Node* node) { UNREACHABLE(); }
++#endif // V8_ENABLE_WEBASSEMBLY
+
+ void InstructionSelector::VisitF32x4Pmax(Node* node) {
+ VisitMinOrMax(this, node, kIA32Maxps, true);
diff --git a/devel/electron17/files/patch-v8_src_diagnostics_perf-jit.cc b/devel/electron17/files/patch-v8_src_diagnostics_perf-jit.cc
new file mode 100644
index 000000000000..5ad78f28f238
--- /dev/null
+++ b/devel/electron17/files/patch-v8_src_diagnostics_perf-jit.cc
@@ -0,0 +1,11 @@
+--- v8/src/diagnostics/perf-jit.cc.orig 2022-05-11 07:18:04 UTC
++++ v8/src/diagnostics/perf-jit.cc
+@@ -30,7 +30,7 @@
+ #include "src/common/assert-scope.h"
+
+ // Only compile the {PerfJitLogger} on Linux.
+-#if V8_OS_LINUX
++#if defined(V8_OS_LINUX) || defined(V8_OS_BSD)
+
+ #include <fcntl.h>
+ #include <sys/mman.h>
diff --git a/devel/electron17/files/patch-v8_src_diagnostics_perf-jit.h b/devel/electron17/files/patch-v8_src_diagnostics_perf-jit.h
new file mode 100644
index 000000000000..478b6adfd261
--- /dev/null
+++ b/devel/electron17/files/patch-v8_src_diagnostics_perf-jit.h
@@ -0,0 +1,11 @@
+--- v8/src/diagnostics/perf-jit.h.orig 2022-05-11 07:18:04 UTC
++++ v8/src/diagnostics/perf-jit.h
+@@ -31,7 +31,7 @@
+ #include "include/v8config.h"
+
+ // {PerfJitLogger} is only implemented on Linux.
+-#if V8_OS_LINUX
++#if defined(V8_OS_LINUX) || defined(V8_OS_BSD)
+
+ #include "src/logging/log.h"
+
diff --git a/devel/electron17/files/patch-v8_src_trap-handler_handler-inside-posix.cc b/devel/electron17/files/patch-v8_src_trap-handler_handler-inside-posix.cc
new file mode 100644
index 000000000000..c19815360b56
--- /dev/null
+++ b/devel/electron17/files/patch-v8_src_trap-handler_handler-inside-posix.cc
@@ -0,0 +1,26 @@
+--- v8/src/trap-handler/handler-inside-posix.cc.orig 2022-05-11 07:18:05 UTC
++++ v8/src/trap-handler/handler-inside-posix.cc
+@@ -53,6 +53,8 @@ namespace trap_handler {
+ #define CONTEXT_REG(reg, REG) &uc->uc_mcontext->__ss.__##reg
+ #elif V8_OS_FREEBSD
+ #define CONTEXT_REG(reg, REG) &uc->uc_mcontext.mc_##reg
++#elif V8_OS_OPENBSD
++#define CONTEXT_REG(reg, REG) &uc->sc_##reg
+ #else
+ #error "Unsupported platform."
+ #endif
+@@ -62,8 +64,12 @@ bool IsKernelGeneratedSignal(siginfo_t* info) {
+ // si_code at its default of 0 for signals that don’t originate in hardware.
+ // The other conditions are only relevant for Linux.
+ return info->si_code > 0 && info->si_code != SI_USER &&
+- info->si_code != SI_QUEUE && info->si_code != SI_TIMER &&
+- info->si_code != SI_ASYNCIO && info->si_code != SI_MESGQ;
++ info->si_code != SI_QUEUE && info->si_code != SI_TIMER
++#ifdef V8_OS_OPENBSD
++ ;
++#else
++ && info->si_code != SI_ASYNCIO && info->si_code != SI_MESGQ;
++#endif
+ }
+
+ class UnmaskOobSignalScope {
diff --git a/devel/electron17/files/patch-v8_src_trap-handler_handler-inside-posix.h b/devel/electron17/files/patch-v8_src_trap-handler_handler-inside-posix.h
new file mode 100644
index 000000000000..74da685ab62c
--- /dev/null
+++ b/devel/electron17/files/patch-v8_src_trap-handler_handler-inside-posix.h
@@ -0,0 +1,11 @@
+--- v8/src/trap-handler/handler-inside-posix.h.orig 2022-05-11 07:18:05 UTC
++++ v8/src/trap-handler/handler-inside-posix.h
+@@ -13,7 +13,7 @@ namespace v8 {
+ namespace internal {
+ namespace trap_handler {
+
+-#if V8_OS_LINUX || V8_OS_FREEBSD
++#if V8_OS_LINUX || V8_OS_FREEBSD || V8_OS_OPENBSD
+ constexpr int kOobSignal = SIGSEGV;
+ #elif V8_OS_MACOSX
+ constexpr int kOobSignal = SIGBUS;
diff --git a/devel/electron17/files/patch-v8_src_trap-handler_trap-handler.h b/devel/electron17/files/patch-v8_src_trap-handler_trap-handler.h
new file mode 100644
index 000000000000..7524bdce85a1
--- /dev/null
+++ b/devel/electron17/files/patch-v8_src_trap-handler_trap-handler.h
@@ -0,0 +1,11 @@
+--- v8/src/trap-handler/trap-handler.h.orig 2022-05-11 07:18:05 UTC
++++ v8/src/trap-handler/trap-handler.h
+@@ -20,7 +20,7 @@ namespace trap_handler {
+ // X64 on Linux, Windows, MacOS, FreeBSD.
+ #if V8_HOST_ARCH_X64 && V8_TARGET_ARCH_X64 && \
+ ((V8_OS_LINUX && !V8_OS_ANDROID) || V8_OS_WIN || V8_OS_MACOSX || \
+- V8_OS_FREEBSD)
++ V8_OS_FREEBSD || V8_OS_OPENBSD)
+ #define V8_TRAP_HANDLER_SUPPORTED true
+ // Arm64 (non-simulator) on Mac.
+ #elif V8_TARGET_ARCH_ARM64 && V8_HOST_ARCH_ARM64 && V8_OS_MACOSX
diff --git a/devel/electron17/files/patch-v8_src_wasm_baseline_ia32_liftoff-assembler-ia32.h b/devel/electron17/files/patch-v8_src_wasm_baseline_ia32_liftoff-assembler-ia32.h
new file mode 100644
index 000000000000..53af6cee551a
--- /dev/null
+++ b/devel/electron17/files/patch-v8_src_wasm_baseline_ia32_liftoff-assembler-ia32.h
@@ -0,0 +1,101 @@
+--- v8/src/wasm/baseline/ia32/liftoff-assembler-ia32.h.orig 2022-05-11 07:18:05 UTC
++++ v8/src/wasm/baseline/ia32/liftoff-assembler-ia32.h
+@@ -433,7 +433,7 @@ void LiftoffAssembler::StoreTaggedPointer(Register dst
+ }
+
+ void LiftoffAssembler::Load(LiftoffRegister dst, Register src_addr,
+- Register offset_reg, uint32_t offset_imm,
++ Register offset_reg, uintptr_t offset_imm,
+ LoadType type, LiftoffRegList pinned,
+ uint32_t* protected_load_pc, bool is_load_mem,
+ bool i64_offset) {
+@@ -510,7 +510,7 @@ void LiftoffAssembler::Load(LiftoffRegister dst, Regis
+ }
+
+ void LiftoffAssembler::Store(Register dst_addr, Register offset_reg,
+- uint32_t offset_imm, LiftoffRegister src,
++ uintptr_t offset_imm, LiftoffRegister src,
+ StoreType type, LiftoffRegList pinned,
+ uint32_t* protected_store_pc, bool is_store_mem) {
+ DCHECK_EQ(type.value_type() == kWasmI64, src.is_gp_pair());
+@@ -578,7 +578,7 @@ void LiftoffAssembler::Store(Register dst_addr, Regist
+ }
+
+ void LiftoffAssembler::AtomicLoad(LiftoffRegister dst, Register src_addr,
+- Register offset_reg, uint32_t offset_imm,
++ Register offset_reg, uintptr_t offset_imm,
+ LoadType type, LiftoffRegList pinned) {
+ if (type.value() != LoadType::kI64Load) {
+ Load(dst, src_addr, offset_reg, offset_imm, type, pinned, nullptr, true);
+@@ -597,7 +597,7 @@ void LiftoffAssembler::AtomicLoad(LiftoffRegister dst,
+ }
+
+ void LiftoffAssembler::AtomicStore(Register dst_addr, Register offset_reg,
+- uint32_t offset_imm, LiftoffRegister src,
++ uintptr_t offset_imm, LiftoffRegister src,
+ StoreType type, LiftoffRegList pinned) {
+ DCHECK_NE(offset_reg, no_reg);
+ DCHECK_LE(offset_imm, std::numeric_limits<int32_t>::max());
+@@ -939,7 +939,7 @@ inline void AtomicBinop64(LiftoffAssembler* lasm, Bino
+ } // namespace liftoff
+
+ void LiftoffAssembler::AtomicAdd(Register dst_addr, Register offset_reg,
+- uint32_t offset_imm, LiftoffRegister value,
++ uintptr_t offset_imm, LiftoffRegister value,
+ LiftoffRegister result, StoreType type) {
+ if (type.value() == StoreType::kI64Store) {
+ liftoff::AtomicBinop64(this, liftoff::kAdd, dst_addr, offset_reg,
+@@ -952,7 +952,7 @@ void LiftoffAssembler::AtomicAdd(Register dst_addr, Re
+ }
+
+ void LiftoffAssembler::AtomicSub(Register dst_addr, Register offset_reg,
+- uint32_t offset_imm, LiftoffRegister value,
++ uintptr_t offset_imm, LiftoffRegister value,
+ LiftoffRegister result, StoreType type) {
+ if (type.value() == StoreType::kI64Store) {
+ liftoff::AtomicBinop64(this, liftoff::kSub, dst_addr, offset_reg,
+@@ -964,7 +964,7 @@ void LiftoffAssembler::AtomicSub(Register dst_addr, Re
+ }
+
+ void LiftoffAssembler::AtomicAnd(Register dst_addr, Register offset_reg,
+- uint32_t offset_imm, LiftoffRegister value,
++ uintptr_t offset_imm, LiftoffRegister value,
+ LiftoffRegister result, StoreType type) {
+ if (type.value() == StoreType::kI64Store) {
+ liftoff::AtomicBinop64(this, liftoff::kAnd, dst_addr, offset_reg,
+@@ -977,7 +977,7 @@ void LiftoffAssembler::AtomicAnd(Register dst_addr, Re
+ }
+
+ void LiftoffAssembler::AtomicOr(Register dst_addr, Register offset_reg,
+- uint32_t offset_imm, LiftoffRegister value,
++ uintptr_t offset_imm, LiftoffRegister value,
+ LiftoffRegister result, StoreType type) {
+ if (type.value() == StoreType::kI64Store) {
+ liftoff::AtomicBinop64(this, liftoff::kOr, dst_addr, offset_reg, offset_imm,
+@@ -990,7 +990,7 @@ void LiftoffAssembler::AtomicOr(Register dst_addr, Reg
+ }
+
+ void LiftoffAssembler::AtomicXor(Register dst_addr, Register offset_reg,
+- uint32_t offset_imm, LiftoffRegister value,
++ uintptr_t offset_imm, LiftoffRegister value,
+ LiftoffRegister result, StoreType type) {
+ if (type.value() == StoreType::kI64Store) {
+ liftoff::AtomicBinop64(this, liftoff::kXor, dst_addr, offset_reg,
+@@ -1003,7 +1003,7 @@ void LiftoffAssembler::AtomicXor(Register dst_addr, Re
+ }
+
+ void LiftoffAssembler::AtomicExchange(Register dst_addr, Register offset_reg,
+- uint32_t offset_imm,
++ uintptr_t offset_imm,
+ LiftoffRegister value,
+ LiftoffRegister result, StoreType type) {
+ if (type.value() == StoreType::kI64Store) {
+@@ -1017,7 +1017,7 @@ void LiftoffAssembler::AtomicExchange(Register dst_add
+ }
+
+ void LiftoffAssembler::AtomicCompareExchange(
+- Register dst_addr, Register offset_reg, uint32_t offset_imm,
++ Register dst_addr, Register offset_reg, uintptr_t offset_imm,
+ LiftoffRegister expected, LiftoffRegister new_value, LiftoffRegister result,
+ StoreType type) {
+ // We expect that the offset has already been added to {dst_addr}, and no
diff --git a/devel/electron17/files/patch-v8_tools_run.py b/devel/electron17/files/patch-v8_tools_run.py
new file mode 100644
index 000000000000..9b8795273c47
--- /dev/null
+++ b/devel/electron17/files/patch-v8_tools_run.py
@@ -0,0 +1,11 @@
+--- v8/tools/run.py.orig 2022-05-11 07:18:05 UTC
++++ v8/tools/run.py
+@@ -11,7 +11,7 @@ from __future__ import print_function
+ import subprocess
+ import sys
+
+-result = subprocess.call(sys.argv[1:])
++sys.exit(subprocess.call(sys.argv[1:], env={"LD_LIBRARY_PATH":"${WRKSRC}/out/Release"}))
+ if result != 0:
+ # Windows error codes such as 0xC0000005 and 0xC0000409 are much easier
+ # to recognize and differentiate in hex.
diff --git a/devel/electron17/files/patch-weblayer_browser_browser__main__parts__impl.cc b/devel/electron17/files/patch-weblayer_browser_browser__main__parts__impl.cc
new file mode 100644
index 000000000000..1ca36d357bbd
--- /dev/null
+++ b/devel/electron17/files/patch-weblayer_browser_browser__main__parts__impl.cc
@@ -0,0 +1,20 @@
+--- weblayer/browser/browser_main_parts_impl.cc.orig 2021-11-19 04:25:48 UTC
++++ weblayer/browser/browser_main_parts_impl.cc
+@@ -77,7 +77,7 @@
+
+ // TODO(crbug.com/1052397): Revisit once build flag switch of lacros-chrome is
+ // complete.
+-#if defined(USE_AURA) && (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
++#if defined(USE_AURA) && (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD))
+ #include "ui/base/ime/init/input_method_initializer.h"
+ #endif
+
+@@ -195,7 +195,7 @@ int BrowserMainPartsImpl::PreEarlyInitialization() {
+
+ // TODO(crbug.com/1052397): Revisit once build flag switch of lacros-chrome is
+ // complete.
+-#if defined(USE_AURA) && (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
++#if defined(USE_AURA) && (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD))
+ ui::InitializeInputMethodForTesting();
+ #endif
+ #if defined(OS_ANDROID)
diff --git a/devel/electron17/files/patch-weblayer_browser_content__browser__client__impl.cc b/devel/electron17/files/patch-weblayer_browser_content__browser__client__impl.cc
new file mode 100644
index 000000000000..b6ed5cb36b93
--- /dev/null
+++ b/devel/electron17/files/patch-weblayer_browser_content__browser__client__impl.cc
@@ -0,0 +1,29 @@
+--- weblayer/browser/content_browser_client_impl.cc.orig 2022-05-11 07:17:08 UTC
++++ weblayer/browser/content_browser_client_impl.cc
+@@ -152,7 +152,7 @@
+
+ // TODO(crbug.com/1052397): Revisit once build flag switch of lacros-chrome is
+ // complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_ANDROID) || defined(OS_BSD)
+ #include "content/public/common/content_descriptors.h"
+ #endif
+
+@@ -492,7 +492,7 @@ void ContentBrowserClientImpl::OnNetworkServiceCreated
+ embedder_support::GetUserAgent());
+ // TODO(crbug.com/1052397): Revisit once build flag switch of lacros-chrome is
+ // complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ network::mojom::CryptConfigPtr config = network::mojom::CryptConfig::New();
+ content::GetNetworkService()->SetCryptConfig(std::move(config));
+ #endif
+@@ -998,7 +998,7 @@ SafeBrowsingService* ContentBrowserClientImpl::GetSafe
+
+ // TODO(crbug.com/1052397): Revisit once build flag switch of lacros-chrome is
+ // complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_ANDROID) || defined(OS_BSD)
+ void ContentBrowserClientImpl::GetAdditionalMappedFilesForChildProcess(
+ const base::CommandLine& command_line,
+ int child_process_id,
diff --git a/devel/electron17/files/patch-weblayer_browser_content__browser__client__impl.h b/devel/electron17/files/patch-weblayer_browser_content__browser__client__impl.h
new file mode 100644
index 000000000000..1f1f7c6adb0d
--- /dev/null
+++ b/devel/electron17/files/patch-weblayer_browser_content__browser__client__impl.h
@@ -0,0 +1,11 @@
+--- weblayer/browser/content_browser_client_impl.h.orig 2022-05-11 07:17:08 UTC
++++ weblayer/browser/content_browser_client_impl.h
+@@ -178,7 +178,7 @@ class ContentBrowserClientImpl : public content::Conte
+ override;
+ // TODO(crbug.com/1052397): Revisit once build flag switch of lacros-chrome is
+ // complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_ANDROID) || defined(OS_BSD)
+ void GetAdditionalMappedFilesForChildProcess(
+ const base::CommandLine& command_line,
+ int child_process_id,
diff --git a/devel/electron17/files/patch-weblayer_browser_system__network__context__manager.cc b/devel/electron17/files/patch-weblayer_browser_system__network__context__manager.cc
new file mode 100644
index 000000000000..36f997444597
--- /dev/null
+++ b/devel/electron17/files/patch-weblayer_browser_system__network__context__manager.cc
@@ -0,0 +1,11 @@
+--- weblayer/browser/system_network_context_manager.cc.orig 2022-05-11 07:17:08 UTC
++++ weblayer/browser/system_network_context_manager.cc
+@@ -69,7 +69,7 @@ void SystemNetworkContextManager::ConfigureDefaultNetw
+ network_context_params->user_agent = user_agent;
+ // TODO(crbug.com/1052397): Revisit once build flag switch of lacros-chrome is
+ // complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_WIN)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_WIN) || defined(OS_BSD)
+ // We're not configuring the cookie encryption on these platforms yet.
+ network_context_params->enable_encrypted_cookies = false;
+ #endif // (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) ||
diff --git a/devel/electron17/files/patch-weblayer_common_weblayer__paths.cc b/devel/electron17/files/patch-weblayer_common_weblayer__paths.cc
new file mode 100644
index 000000000000..276d1ef11508
--- /dev/null
+++ b/devel/electron17/files/patch-weblayer_common_weblayer__paths.cc
@@ -0,0 +1,20 @@
+--- weblayer/common/weblayer_paths.cc.orig 2021-07-15 19:14:09 UTC
++++ weblayer/common/weblayer_paths.cc
+@@ -18,7 +18,7 @@
+
+ #if defined(OS_WIN)
+ #include "base/base_paths_win.h"
+-#elif defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#elif defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ #include "base/nix/xdg_util.h"
+ #endif
+
+@@ -36,7 +36,7 @@ bool GetDefaultUserDataDirectory(base::FilePath* resul
+ return false;
+ *result = result->AppendASCII("weblayer");
+ return true;
+-#elif defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#elif defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ std::unique_ptr<base::Environment> env(base::Environment::Create());
+ base::FilePath config_dir(base::nix::GetXDGDirectory(
+ env.get(), base::nix::kXdgConfigHomeEnvVar, base::nix::kDotConfigDir));
diff --git a/devel/electron17/files/yarn.lock b/devel/electron17/files/yarn.lock
new file mode 100644
index 000000000000..131b6a320001
--- /dev/null
+++ b/devel/electron17/files/yarn.lock
@@ -0,0 +1,8333 @@
+# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
+# yarn lockfile v1
+
+
+"@azure/abort-controller@^1.0.0":
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/@azure/abort-controller/-/abort-controller-1.0.4.tgz#fd3c4d46c8ed67aace42498c8e2270960250eafd"
+ integrity sha512-lNUmDRVGpanCsiUN3NWxFTdwmdFI53xwhkTFfHDGTYk46ca7Ind3nanJc+U6Zj9Tv+9nTCWRBscWEW1DyKOpTw==
+ dependencies:
+ tslib "^2.0.0"
+
+"@azure/core-asynciterator-polyfill@^1.0.0":
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/@azure/core-asynciterator-polyfill/-/core-asynciterator-polyfill-1.0.2.tgz#0dd3849fb8d97f062a39db0e5cadc9ffaf861fec"
+ integrity sha512-3rkP4LnnlWawl0LZptJOdXNrT/fHp2eQMadoasa6afspXdpGrtPZuAQc2PD0cpgyuoXtUWyC3tv7xfntjGS5Dw==
+
+"@azure/core-auth@^1.3.0":
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/@azure/core-auth/-/core-auth-1.3.2.tgz#6a2c248576c26df365f6c7881ca04b7f6d08e3d0"
+ integrity sha512-7CU6DmCHIZp5ZPiZ9r3J17lTKMmYsm/zGvNkjArQwPkrLlZ1TZ+EUYfGgh2X31OLMVAQCTJZW4cXHJi02EbJnA==
+ dependencies:
+ "@azure/abort-controller" "^1.0.0"
+ tslib "^2.2.0"
+
+"@azure/core-http@^2.0.0":
+ version "2.2.4"
+ resolved "https://registry.yarnpkg.com/@azure/core-http/-/core-http-2.2.4.tgz#df5a5b4138dbbc4299879f2fc6f257d0a5f0401e"
+ integrity sha512-QmmJmexXKtPyc3/rsZR/YTLDvMatzbzAypJmLzvlfxgz/SkgnqV/D4f6F2LsK6tBj1qhyp8BoXiOebiej0zz3A==
+ dependencies:
+ "@azure/abort-controller" "^1.0.0"
+ "@azure/core-asynciterator-polyfill" "^1.0.0"
+ "@azure/core-auth" "^1.3.0"
+ "@azure/core-tracing" "1.0.0-preview.13"
+ "@azure/logger" "^1.0.0"
+ "@types/node-fetch" "^2.5.0"
+ "@types/tunnel" "^0.0.3"
+ form-data "^4.0.0"
+ node-fetch "^2.6.7"
+ process "^0.11.10"
+ tough-cookie "^4.0.0"
+ tslib "^2.2.0"
+ tunnel "^0.0.6"
+ uuid "^8.3.0"
+ xml2js "^0.4.19"
+
+"@azure/core-lro@^2.2.0":
+ version "2.2.4"
+ resolved "https://registry.yarnpkg.com/@azure/core-lro/-/core-lro-2.2.4.tgz#42fbf4ae98093c59005206a4437ddcd057c57ca1"
+ integrity sha512-e1I2v2CZM0mQo8+RSix0x091Av493e4bnT22ds2fcQGslTHzM2oTbswkB65nP4iEpCxBrFxOSDPKExmTmjCVtQ==
+ dependencies:
+ "@azure/abort-controller" "^1.0.0"
+ "@azure/core-tracing" "1.0.0-preview.13"
+ "@azure/logger" "^1.0.0"
+ tslib "^2.2.0"
+
+"@azure/core-paging@^1.1.1":
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/@azure/core-paging/-/core-paging-1.2.1.tgz#1b884f563b6e49971e9a922da3c7a20931867b54"
+ integrity sha512-UtH5iMlYsvg+nQYIl4UHlvvSrsBjOlRF4fs0j7mxd3rWdAStrKYrh2durOpHs5C9yZbVhsVDaisoyaf/lL1EVA==
+ dependencies:
+ "@azure/core-asynciterator-polyfill" "^1.0.0"
+ tslib "^2.2.0"
+
+"@azure/core-tracing@1.0.0-preview.13":
+ version "1.0.0-preview.13"
+ resolved "https://registry.yarnpkg.com/@azure/core-tracing/-/core-tracing-1.0.0-preview.13.tgz#55883d40ae2042f6f1e12b17dd0c0d34c536d644"
+ integrity sha512-KxDlhXyMlh2Jhj2ykX6vNEU0Vou4nHr025KoSEiz7cS3BNiHNaZcdECk/DmLkEB0as5T7b/TpRcehJ5yV6NeXQ==
+ dependencies:
+ "@opentelemetry/api" "^1.0.1"
+ tslib "^2.2.0"
+
+"@azure/logger@^1.0.0":
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/@azure/logger/-/logger-1.0.3.tgz#6e36704aa51be7d4a1bae24731ea580836293c96"
+ integrity sha512-aK4s3Xxjrx3daZr3VylxejK3vG5ExXck5WOHDJ8in/k9AqlfIyFMMT1uG7u8mNjX+QRILTIn0/Xgschfh/dQ9g==
+ dependencies:
+ tslib "^2.2.0"
+
+"@azure/storage-blob@^12.9.0":
+ version "12.9.0"
+ resolved "https://registry.yarnpkg.com/@azure/storage-blob/-/storage-blob-12.9.0.tgz#4cbd8b4c7a47dd064867430db892f4ef2d8f17ab"
+ integrity sha512-ank38FdCLfJ+EoeMzCz3hkYJuZAd63ARvDKkxZYRDb+beBYf+/+gx8jNTqkq/hfyUl4dJQ/a7tECU0Y0F98CHg==
+ dependencies:
+ "@azure/abort-controller" "^1.0.0"
+ "@azure/core-http" "^2.0.0"
+ "@azure/core-lro" "^2.2.0"
+ "@azure/core-paging" "^1.1.1"
+ "@azure/core-tracing" "1.0.0-preview.13"
+ "@azure/logger" "^1.0.0"
+ events "^3.0.0"
+ tslib "^2.2.0"
+
+"@babel/code-frame@^7.0.0":
+ version "7.5.5"
+ resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.5.5.tgz#bc0782f6d69f7b7d49531219699b988f669a8f9d"
+ integrity sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==
+ dependencies:
+ "@babel/highlight" "^7.0.0"
+
+"@babel/highlight@^7.0.0":
+ version "7.5.0"
+ resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.5.0.tgz#56d11312bd9248fa619591d02472be6e8cb32540"
+ integrity sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ==
+ dependencies:
+ chalk "^2.0.0"
+ esutils "^2.0.2"
+ js-tokens "^4.0.0"
+
+"@electron/docs-parser@^0.12.3":
+ version "0.12.3"
+ resolved "https://registry.yarnpkg.com/@electron/docs-parser/-/docs-parser-0.12.3.tgz#a984c5ebc60348683b2acdbb0ebb73414b6763fd"
+ integrity sha512-e7OKn/NNAHMZ4Pw1702MHd2VE3Z5NKdXIIDxg9nWsDBUuSCuOKRCb4i0Ev8Eev0V0nKLaH+NMz6yzovpx0PrHg==
+ dependencies:
+ "@types/markdown-it" "^10.0.0"
+ chai "^4.2.0"
+ chalk "^3.0.0"
+ fs-extra "^8.1.0"
+ lodash.camelcase "^4.3.0"
+ markdown-it "^10.0.0"
+ minimist "^1.2.0"
+ ora "^4.0.3"
+ pretty-ms "^5.1.0"
+
+"@electron/typescript-definitions@^8.9.5":
+ version "8.9.5"
+ resolved "https://registry.yarnpkg.com/@electron/typescript-definitions/-/typescript-definitions-8.9.5.tgz#e6cb08e0e7c9656e178b892eab50866a8a80bf7a"
+ integrity sha512-xDLFl6joGpA8c9cGSPWC3DFHyIGf9+OWZmDrPbGJW1URt6C1ukdQWKSmjb1Rttb94QQxBrGuUlSyz27IQgLFsw==
+ dependencies:
+ "@types/node" "^11.13.7"
+ chalk "^2.4.2"
+ colors "^1.1.2"
+ debug "^4.1.1"
+ fs-extra "^7.0.1"
+ lodash "^4.17.11"
+ minimist "^1.2.0"
+ mkdirp "^0.5.1"
+ ora "^3.4.0"
+ pretty-ms "^5.0.0"
+
+"@nodelib/fs.scandir@2.1.3":
+ version "2.1.3"
+ resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz#3a582bdb53804c6ba6d146579c46e52130cf4a3b"
+ integrity sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw==
+ dependencies:
+ "@nodelib/fs.stat" "2.0.3"
+ run-parallel "^1.1.9"
+
+"@nodelib/fs.stat@2.0.3", "@nodelib/fs.stat@^2.0.2":
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz#34dc5f4cabbc720f4e60f75a747e7ecd6c175bd3"
+ integrity sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA==
+
+"@nodelib/fs.walk@^1.2.3":
+ version "1.2.4"
+ resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz#011b9202a70a6366e436ca5c065844528ab04976"
+ integrity sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ==
+ dependencies:
+ "@nodelib/fs.scandir" "2.1.3"
+ fastq "^1.6.0"
+
+"@octokit/auth-app@^2.10.0":
+ version "2.10.0"
+ resolved "https://registry.yarnpkg.com/@octokit/auth-app/-/auth-app-2.10.0.tgz#ad79369fca1cc3035859f797310d5e81cc6e49c4"
+ integrity sha512-mKFU7O5wI651iWgecs4fmJ2aLqOM3sWD1FJsUTm7nx21I4ePDhS+rGQmS5TZk5yz75Va6wEXesxUNFzuqCbP2A==
+ dependencies:
+ "@octokit/request" "^5.3.0"
+ "@octokit/request-error" "^2.0.0"
+ "@octokit/types" "^5.0.0"
+ "@types/lru-cache" "^5.1.0"
+ deprecation "^2.3.1"
+ lru-cache "^6.0.0"
+ universal-github-app-jwt "^1.0.1"
+ universal-user-agent "^6.0.0"
+
+"@octokit/auth-token@^2.4.0":
+ version "2.4.2"
+ resolved "https://registry.yarnpkg.com/@octokit/auth-token/-/auth-token-2.4.2.tgz#10d0ae979b100fa6b72fa0e8e63e27e6d0dbff8a"
+ integrity sha512-jE/lE/IKIz2v1+/P0u4fJqv0kYwXOTujKemJMFr6FeopsxlIK3+wKDCJGnysg81XID5TgZQbIfuJ5J0lnTiuyQ==
+ dependencies:
+ "@octokit/types" "^5.0.0"
+
+"@octokit/core@^3.0.0":
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/@octokit/core/-/core-3.1.1.tgz#1856745aa8fb154cf1544a2a1b82586c809c5e66"
+ integrity sha512-cQ2HGrtyNJ1IBxpTP1U5m/FkMAJvgw7d2j1q3c9P0XUuYilEgF6e4naTpsgm4iVcQeOnccZlw7XHRIUBy0ymcg==
+ dependencies:
+ "@octokit/auth-token" "^2.4.0"
+ "@octokit/graphql" "^4.3.1"
+ "@octokit/request" "^5.4.0"
+ "@octokit/types" "^5.0.0"
+ before-after-hook "^2.1.0"
+ universal-user-agent "^6.0.0"
+
+"@octokit/endpoint@^6.0.1":
+ version "6.0.5"
+ resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-6.0.5.tgz#43a6adee813c5ffd2f719e20cfd14a1fee7c193a"
+ integrity sha512-70K5u6zd45ItOny6aHQAsea8HHQjlQq85yqOMe+Aj8dkhN2qSJ9T+Q3YjUjEYfPRBcuUWNgMn62DQnP/4LAIiQ==
+ dependencies:
+ "@octokit/types" "^5.0.0"
+ is-plain-object "^4.0.0"
+ universal-user-agent "^6.0.0"
+
+"@octokit/graphql@^4.3.1":
+ version "4.5.3"
+ resolved "https://registry.yarnpkg.com/@octokit/graphql/-/graphql-4.5.3.tgz#d5ff0d4a8a33e98614a2a7359dac98bc285e062f"
+ integrity sha512-JyYvi3j2tOb5ofASEpcg1Advs07H+Ag+I+ez7buuZfNVAmh1IYcDTuxd4gnYH8S2PSGu+f5IdDGxMmkK+5zsdA==
+ dependencies:
+ "@octokit/request" "^5.3.0"
+ "@octokit/types" "^5.0.0"
+ universal-user-agent "^6.0.0"
+
+"@octokit/plugin-paginate-rest@^2.2.0":
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.3.0.tgz#7d1073e56cfd15d3f99dcfe81fa5d2b466f3a6f6"
+ integrity sha512-Ye2ZJreP0ZlqJQz8fz+hXvrEAEYK4ay7br1eDpWzr6j76VXs/gKqxFcH8qRzkB3fo/2xh4Vy9VtGii4ZDc9qlA==
+ dependencies:
+ "@octokit/types" "^5.2.0"
+
+"@octokit/plugin-request-log@^1.0.0":
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/@octokit/plugin-request-log/-/plugin-request-log-1.0.0.tgz#eef87a431300f6148c39a7f75f8cfeb218b2547e"
+ integrity sha512-ywoxP68aOT3zHCLgWZgwUJatiENeHE7xJzYjfz8WI0goynp96wETBF+d95b8g/uL4QmS6owPVlaxiz3wyMAzcw==
+
+"@octokit/plugin-rest-endpoint-methods@4.1.2":
+ version "4.1.2"
+ resolved "https://registry.yarnpkg.com/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-4.1.2.tgz#546a8f3e0b514f434a4ad4ef926005f1c81a5a5a"
+ integrity sha512-PTI7wpbGEZ2IR87TVh+TNWaLcgX/RsZQalFbQCq8XxYUrQ36RHyERrHSNXFy5gkWpspUAOYRSV707JJv6BhqJA==
+ dependencies:
+ "@octokit/types" "^5.1.1"
+ deprecation "^2.3.1"
+
+"@octokit/request-error@^2.0.0":
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-2.0.2.tgz#0e76b83f5d8fdda1db99027ea5f617c2e6ba9ed0"
+ integrity sha512-2BrmnvVSV1MXQvEkrb9zwzP0wXFNbPJij922kYBTLIlIafukrGOb+ABBT2+c6wZiuyWDH1K1zmjGQ0toN/wMWw==
+ dependencies:
+ "@octokit/types" "^5.0.1"
+ deprecation "^2.0.0"
+ once "^1.4.0"
+
+"@octokit/request@^5.3.0", "@octokit/request@^5.4.0":
+ version "5.4.7"
+ resolved "https://registry.yarnpkg.com/@octokit/request/-/request-5.4.7.tgz#fd703ee092e0463ceba49ff7a3e61cb4cf8a0fde"
+ integrity sha512-FN22xUDP0i0uF38YMbOfx6TotpcENP5W8yJM1e/LieGXn6IoRxDMnBf7tx5RKSW4xuUZ/1P04NFZy5iY3Rax1A==
+ dependencies:
+ "@octokit/endpoint" "^6.0.1"
+ "@octokit/request-error" "^2.0.0"
+ "@octokit/types" "^5.0.0"
+ deprecation "^2.0.0"
+ is-plain-object "^4.0.0"
+ node-fetch "^2.3.0"
+ once "^1.4.0"
+ universal-user-agent "^6.0.0"
+
+"@octokit/rest@^18.0.3":
+ version "18.0.3"
+ resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-18.0.3.tgz#96a15ddb3a38dca5de9d75121378d6aa4a234fa5"
+ integrity sha512-GubgemnLvUJlkhouTM2BtX+g/voYT/Mqh0SASGwTnLvSkW1irjt14N911/ABb6m1Hru0TwScOgFgMFggp3igfQ==
+ dependencies:
+ "@octokit/core" "^3.0.0"
+ "@octokit/plugin-paginate-rest" "^2.2.0"
+ "@octokit/plugin-request-log" "^1.0.0"
+ "@octokit/plugin-rest-endpoint-methods" "4.1.2"
+
+"@octokit/types@^5.0.0", "@octokit/types@^5.0.1", "@octokit/types@^5.1.1", "@octokit/types@^5.2.0":
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/@octokit/types/-/types-5.2.0.tgz#d075dc23bf293f540739250b6879e2c1be2fc20c"
+ integrity sha512-XjOk9y4m8xTLIKPe1NFxNWBdzA2/z3PFFA/bwf4EoH6oS8hM0Y46mEa4Cb+KCyj/tFDznJFahzQ0Aj3o1FYq4A==
+ dependencies:
+ "@types/node" ">= 8"
+
+"@opentelemetry/api@^1.0.1":
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/@opentelemetry/api/-/api-1.0.4.tgz#a167e46c10d05a07ab299fc518793b0cff8f6924"
+ integrity sha512-BuJuXRSJNQ3QoKA6GWWDyuLpOUck+9hAXNMCnrloc1aWVoy6Xq6t9PUV08aBZ4Lutqq2LEHM486bpZqoViScog==
+
+"@primer/octicons@^10.0.0":
+ version "10.0.0"
+ resolved "https://registry.yarnpkg.com/@primer/octicons/-/octicons-10.0.0.tgz#81e94ed32545dfd3472c8625a5b345f3ea4c153d"
+ integrity sha512-iuQubq62zXZjPmaqrsfsCZUqIJgZhmA6W0tKzIKGRbkoLnff4TFFCL87hfIRATZ5qZPM4m8ioT8/bXI7WVa9WQ==
+ dependencies:
+ object-assign "^4.1.1"
+
+"@sindresorhus/is@^0.14.0":
+ version "0.14.0"
+ resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea"
+ integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==
+
+"@szmarczak/http-timer@^1.1.2":
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-1.1.2.tgz#b1665e2c461a2cd92f4c1bbf50d5454de0d4b421"
+ integrity sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==
+ dependencies:
+ defer-to-connect "^1.0.1"
+
+"@types/anymatch@*":
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/@types/anymatch/-/anymatch-1.3.1.tgz#336badc1beecb9dacc38bea2cf32adf627a8421a"
+ integrity sha512-/+CRPXpBDpo2RK9C68N3b2cOvO0Cf5B9aPijHsoDQTHivnGSObdOF2BRQOYjojWTDy6nQvMjmqRXIxH55VjxxA==
+
+"@types/basic-auth@^1.1.3":
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/@types/basic-auth/-/basic-auth-1.1.3.tgz#a787ede8310804174fbbf3d6c623ab1ccedb02cd"
+ integrity sha512-W3rv6J0IGlxqgE2eQ2pTb0gBjaGtejQpJ6uaCjz3UQ65+TFTPC5/lAE+POfx1YLdjtxvejJzsIAfd3MxWiVmfg==
+ dependencies:
+ "@types/node" "*"
+
+"@types/body-parser@*":
+ version "1.19.0"
+ resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.0.tgz#0685b3c47eb3006ffed117cdd55164b61f80538f"
+ integrity sha512-W98JrE0j2K78swW4ukqMleo8R7h/pFETjM2DQ90MF6XK2i4LO4W3gQ71Lt4w3bfm2EvVSyWHplECvB5sK22yFQ==
+ dependencies:
+ "@types/connect" "*"
+ "@types/node" "*"
+
+"@types/busboy@^0.2.3":
+ version "0.2.3"
+ resolved "https://registry.yarnpkg.com/@types/busboy/-/busboy-0.2.3.tgz#6697ad29873246c530f09a3ff5a40861824230d5"
+ integrity sha1-ZpetKYcyRsUw8Jo/9aQIYYJCMNU=
+ dependencies:
+ "@types/node" "*"
+
+"@types/chai-as-promised@*":
+ version "7.1.1"
+ resolved "https://registry.yarnpkg.com/@types/chai-as-promised/-/chai-as-promised-7.1.1.tgz#004c27a4ac640e9590e25d8b0980cb0a6609bfd8"
+ integrity sha512-dberBxQW/XWv6BMj0su1lV9/C9AUx5Hqu2pisuS6S4YK/Qt6vurcj/BmcbEsobIWWCQzhesNY8k73kIxx4X7Mg==
+ dependencies:
+ "@types/chai" "*"
+
+"@types/chai-as-promised@^7.1.3":
+ version "7.1.3"
+ resolved "https://registry.yarnpkg.com/@types/chai-as-promised/-/chai-as-promised-7.1.3.tgz#779166b90fda611963a3adbfd00b339d03b747bd"
+ integrity sha512-FQnh1ohPXJELpKhzjuDkPLR2BZCAqed+a6xV4MI/T3XzHfd2FlarfUGUdZYgqYe8oxkYn0fchHEeHfHqdZ96sg==
+ dependencies:
+ "@types/chai" "*"
+
+"@types/chai@*":
+ version "4.1.7"
+ resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.1.7.tgz#1b8e33b61a8c09cbe1f85133071baa0dbf9fa71a"
+ integrity sha512-2Y8uPt0/jwjhQ6EiluT0XCri1Dbplr0ZxfFXUz+ye13gaqE8u5gL5ppao1JrUYr9cIip5S6MvQzBS7Kke7U9VA==
+
+"@types/chai@^4.2.12":
+ version "4.2.12"
+ resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.2.12.tgz#6160ae454cd89dae05adc3bb97997f488b608201"
+ integrity sha512-aN5IAC8QNtSUdQzxu7lGBgYAOuU1tmRU4c9dIq5OKGf/SBVjXo+ffM2wEjudAWbgpOhy60nLoAGH1xm8fpCKFQ==
+
+"@types/color-name@^1.1.1":
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0"
+ integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==
+
+"@types/concat-stream@^1.0.0":
+ version "1.6.1"
+ resolved "https://registry.yarnpkg.com/@types/concat-stream/-/concat-stream-1.6.1.tgz#24bcfc101ecf68e886aaedce60dfd74b632a1b74"
+ integrity sha512-eHE4cQPoj6ngxBZMvVf6Hw7Mh4jMW4U9lpGmS5GBPB9RYxlFg+CHaVN7ErNY4W9XfLIEn20b4VDYaIrbq0q4uA==
+ dependencies:
+ "@types/node" "*"
+
+"@types/connect@*":
+ version "3.4.33"
+ resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.33.tgz#31610c901eca573b8713c3330abc6e6b9f588546"
+ integrity sha512-2+FrkXY4zllzTNfJth7jOqEHC+enpLeGslEhpnTAkg21GkRrWV4SsAtqchtT4YS9/nODBU2/ZfsBY2X4J/dX7A==
+ dependencies:
+ "@types/node" "*"
+
+"@types/debug@^4.0.0":
+ version "4.1.7"
+ resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.7.tgz#7cc0ea761509124709b8b2d1090d8f6c17aadb82"
+ integrity sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==
+ dependencies:
+ "@types/ms" "*"
+
+"@types/dirty-chai@^2.0.2":
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/@types/dirty-chai/-/dirty-chai-2.0.2.tgz#eeac4802329a41ed7815ac0c1a6360335bf77d0c"
+ integrity sha512-BruwIN/UQEU0ePghxEX+OyjngpOfOUKJQh3cmfeq2h2Su/g001iljVi3+Y2y2EFp3IPgjf4sMrRU33Hxv1FUqw==
+ dependencies:
+ "@types/chai" "*"
+ "@types/chai-as-promised" "*"
+
+"@types/events@*":
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/@types/events/-/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7"
+ integrity sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==
+
+"@types/express-serve-static-core@*":
+ version "4.17.8"
+ resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.8.tgz#b8f7b714138536742da222839892e203df569d1c"
+ integrity sha512-1SJZ+R3Q/7mLkOD9ewCBDYD2k0WyZQtWYqF/2VvoNN2/uhI49J9CDN4OAm+wGMA0DbArA4ef27xl4+JwMtGggw==
+ dependencies:
+ "@types/node" "*"
+ "@types/qs" "*"
+ "@types/range-parser" "*"
+
+"@types/express@^4.17.7":
+ version "4.17.7"
+ resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.7.tgz#42045be6475636d9801369cd4418ef65cdb0dd59"
+ integrity sha512-dCOT5lcmV/uC2J9k0rPafATeeyz+99xTt54ReX11/LObZgfzJqZNcW27zGhYyX+9iSEGXGt5qLPwRSvBZcLvtQ==
+ dependencies:
+ "@types/body-parser" "*"
+ "@types/express-serve-static-core" "*"
+ "@types/qs" "*"
+ "@types/serve-static" "*"
+
+"@types/fs-extra@^9.0.1":
+ version "9.0.1"
+ resolved "https://registry.yarnpkg.com/@types/fs-extra/-/fs-extra-9.0.1.tgz#91c8fc4c51f6d5dbe44c2ca9ab09310bd00c7918"
+ integrity sha512-B42Sxuaz09MhC3DDeW5kubRcQ5by4iuVQ0cRRWM2lggLzAa/KVom0Aft/208NgMvNQQZ86s5rVcqDdn/SH0/mg==
+ dependencies:
+ "@types/node" "*"
+
+"@types/glob@^7.1.1":
+ version "7.1.1"
+ resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.1.tgz#aa59a1c6e3fbc421e07ccd31a944c30eba521575"
+ integrity sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w==
+ dependencies:
+ "@types/events" "*"
+ "@types/minimatch" "*"
+ "@types/node" "*"
+
+"@types/highlight.js@^9.7.0":
+ version "9.12.4"
+ resolved "https://registry.yarnpkg.com/@types/highlight.js/-/highlight.js-9.12.4.tgz#8c3496bd1b50cc04aeefd691140aa571d4dbfa34"
+ integrity sha512-t2szdkwmg2JJyuCM20e8kR2X59WCE5Zkl4bzm1u1Oukjm79zpbiAv+QjnwLnuuV0WHEcX2NgUItu0pAMKuOPww==
+
+"@types/is-empty@^1.0.0":
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/@types/is-empty/-/is-empty-1.2.0.tgz#16bc578060c9b0b6953339eea906c255a375bf86"
+ integrity sha512-brJKf2boFhUxTDxlpI7cstwiUtA2ovm38UzFTi9aZI6//ARncaV+Q5ALjCaJqXaMtdZk/oPTJnSutugsZR6h8A==
+
+"@types/js-yaml@^4.0.0":
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/@types/js-yaml/-/js-yaml-4.0.2.tgz#4117a7a378593a218e9d6f0ef44ce6d5d9edf7fa"
+ integrity sha512-KbeHS/Y4R+k+5sWXEYzAZKuB1yQlZtEghuhRxrVRLaqhtoG5+26JwQsa4HyS3AWX8v1Uwukma5HheduUDskasA==
+
+"@types/json-schema@^7.0.3":
+ version "7.0.3"
+ resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.3.tgz#bdfd69d61e464dcc81b25159c270d75a73c1a636"
+ integrity sha512-Il2DtDVRGDcqjDtE+rF8iqg1CArehSK84HZJCT7AMITlyXRBpuPhqGLDQMowraqqu1coEaimg4ZOqggt6L6L+A==
+
+"@types/json-schema@^7.0.4":
+ version "7.0.4"
+ resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.4.tgz#38fd73ddfd9b55abb1e1b2ed578cb55bd7b7d339"
+ integrity sha512-8+KAKzEvSUdeo+kmqnKrqgeE+LcA0tjYWFY7RPProVYwnqDjukzO+3b6dLD56rYX5TdWejnEOLJYOIeh4CXKuA==
+
+"@types/json5@^0.0.29":
+ version "0.0.29"
+ resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee"
+ integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4=
+
+"@types/jsonwebtoken@^8.3.3":
+ version "8.5.0"
+ resolved "https://registry.yarnpkg.com/@types/jsonwebtoken/-/jsonwebtoken-8.5.0.tgz#2531d5e300803aa63279b232c014acf780c981c5"
+ integrity sha512-9bVao7LvyorRGZCw0VmH/dr7Og+NdjYSsKAxB43OQoComFbBgsEpoR9JW6+qSq/ogwVBg8GI2MfAlk4SYI4OLg==
+ dependencies:
+ "@types/node" "*"
+
+"@types/klaw@^3.0.1":
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/@types/klaw/-/klaw-3.0.1.tgz#29f90021c0234976aa4eb97efced9cb6db9fa8b3"
+ integrity sha512-acnF3n9mYOr1aFJKFyvfNX0am9EtPUsYPq22QUCGdJE+MVt6UyAN1jwo+PmOPqXD4K7ZS9MtxDEp/un0lxFccA==
+ dependencies:
+ "@types/node" "*"
+
+"@types/linkify-it@*":
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/@types/linkify-it/-/linkify-it-2.1.0.tgz#ea3dd64c4805597311790b61e872cbd1ed2cd806"
+ integrity sha512-Q7DYAOi9O/+cLLhdaSvKdaumWyHbm7HAk/bFwwyTuU0arR5yyCeW5GOoqt4tJTpDRxhpx9Q8kQL6vMpuw9hDSw==
+
+"@types/lru-cache@^5.1.0":
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/@types/lru-cache/-/lru-cache-5.1.0.tgz#57f228f2b80c046b4a1bd5cac031f81f207f4f03"
+ integrity sha512-RaE0B+14ToE4l6UqdarKPnXwVDuigfFv+5j9Dze/Nqr23yyuqdNvzcZi3xB+3Agvi5R4EOgAksfv3lXX4vBt9w==
+
+"@types/markdown-it@^10.0.0":
+ version "10.0.3"
+ resolved "https://registry.yarnpkg.com/@types/markdown-it/-/markdown-it-10.0.3.tgz#a9800d14b112c17f1de76ec33eff864a4815eec7"
+ integrity sha512-daHJk22isOUvNssVGF2zDnnSyxHhFYhtjeX4oQaKD6QzL3ZR1QSgiD1g+Q6/WSWYVogNXYDXODtbgW/WiFCtyw==
+ dependencies:
+ "@types/highlight.js" "^9.7.0"
+ "@types/linkify-it" "*"
+ "@types/mdurl" "*"
+ highlight.js "^9.7.0"
+
+"@types/mdast@^3.0.0":
+ version "3.0.7"
+ resolved "https://registry.yarnpkg.com/@types/mdast/-/mdast-3.0.7.tgz#cba63d0cc11eb1605cea5c0ad76e02684394166b"
+ integrity sha512-YwR7OK8aPmaBvMMUi+pZXBNoW2unbVbfok4YRqGMJBe1dpDlzpRkJrYEYmvjxgs5JhuQmKfDexrN98u941Zasg==
+ dependencies:
+ "@types/unist" "*"
+
+"@types/mdurl@*":
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/@types/mdurl/-/mdurl-1.0.2.tgz#e2ce9d83a613bacf284c7be7d491945e39e1f8e9"
+ integrity sha512-eC4U9MlIcu2q0KQmXszyn5Akca/0jrQmwDRgpAMJai7qBWq4amIQhZyNau4VYGtCeALvW1/NtjzJJ567aZxfKA==
+
+"@types/mime@*":
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/@types/mime/-/mime-2.0.1.tgz#dc488842312a7f075149312905b5e3c0b054c79d"
+ integrity sha512-FwI9gX75FgVBJ7ywgnq/P7tw+/o1GUbtP0KzbtusLigAOgIgNISRK0ZPl4qertvXSIE8YbsVJueQ90cDt9YYyw==
+
+"@types/minimatch@*":
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d"
+ integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==
+
+"@types/minimist@^1.2.0":
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.0.tgz#69a23a3ad29caf0097f06eda59b361ee2f0639f6"
+ integrity sha1-aaI6OtKcrwCX8G7aWbNh7i8GOfY=
+
+"@types/mocha@^7.0.2":
+ version "7.0.2"
+ resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-7.0.2.tgz#b17f16cf933597e10d6d78eae3251e692ce8b0ce"
+ integrity sha512-ZvO2tAcjmMi8V/5Z3JsyofMe3hasRcaw88cto5etSVMwVQfeivGAlEYmaQgceUSVYFofVjT+ioHsATjdWcFt1w==
+
+"@types/ms@*":
+ version "0.7.31"
+ resolved "https://registry.yarnpkg.com/@types/ms/-/ms-0.7.31.tgz#31b7ca6407128a3d2bbc27fe2d21b345397f6197"
+ integrity sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==
+
+"@types/node-fetch@^2.5.0":
+ version "2.6.1"
+ resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.6.1.tgz#8f127c50481db65886800ef496f20bbf15518975"
+ integrity sha512-oMqjURCaxoSIsHSr1E47QHzbmzNR5rK8McHuNb11BOM9cHcIK3Avy0s/b2JlXHoQGTYS3NsvWzV1M0iK7l0wbA==
+ dependencies:
+ "@types/node" "*"
+ form-data "^3.0.0"
+
+"@types/node@*":
+ version "12.6.1"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-12.6.1.tgz#d5544f6de0aae03eefbb63d5120f6c8be0691946"
+ integrity sha512-rp7La3m845mSESCgsJePNL/JQyhkOJA6G4vcwvVgkDAwHhGdq5GCumxmPjEk1MZf+8p5ZQAUE7tqgQRQTXN7uQ==
+
+"@types/node@>= 8":
+ version "14.0.27"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-14.0.27.tgz#a151873af5a5e851b51b3b065c9e63390a9e0eb1"
+ integrity sha512-kVrqXhbclHNHGu9ztnAwSncIgJv/FaxmzXJvGXNdcCpV1b8u1/Mi6z6m0vwy0LzKeXFTPLH0NzwmoJ3fNCIq0g==
+
+"@types/node@^11.13.7":
+ version "11.13.22"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-11.13.22.tgz#91ee88ebfa25072433497f6f3150f84fa8c3a91b"
+ integrity sha512-rOsaPRUGTOXbRBOKToy4cgZXY4Y+QSVhxcLwdEveozbk7yuudhWMpxxcaXqYizLMP3VY7OcWCFtx9lGFh5j5kg==
+
+"@types/node@^14.6.2":
+ version "14.6.3"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-14.6.3.tgz#cc4f979548ca4d8e7b90bc0180052ab99ee64224"
+ integrity sha512-pC/hkcREG6YfDfui1FBmj8e20jFU5Exjw4NYDm8kEdrW+mOh0T1Zve8DWKnS7ZIZvgncrctcNCXF4Q2I+loyww==
+
+"@types/node@^16.0.0":
+ version "16.4.13"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-16.4.13.tgz#7dfd9c14661edc65cccd43a29eb454174642370d"
+ integrity sha512-bLL69sKtd25w7p1nvg9pigE4gtKVpGTPojBFLMkGHXuUgap2sLqQt2qUnqmVCDfzGUL0DRNZP+1prIZJbMeAXg==
+
+"@types/parse-json@^4.0.0":
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0"
+ integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==
+
+"@types/qs@*":
+ version "6.9.3"
+ resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.3.tgz#b755a0934564a200d3efdf88546ec93c369abd03"
+ integrity sha512-7s9EQWupR1fTc2pSMtXRQ9w9gLOcrJn+h7HOXw4evxyvVqMi4f+q7d2tnFe3ng3SNHjtK+0EzGMGFUQX4/AQRA==
+
+"@types/range-parser@*":
+ version "1.2.3"
+ resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.3.tgz#7ee330ba7caafb98090bece86a5ee44115904c2c"
+ integrity sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA==
+
+"@types/repeat-string@^1.0.0":
+ version "1.6.1"
+ resolved "https://registry.yarnpkg.com/@types/repeat-string/-/repeat-string-1.6.1.tgz#8bb5686e662ce1d962271b0b043623bf51404cdc"
+ integrity sha512-vdna8kjLGljgtPnYN6MBD2UwX62QE0EFLj9QlLXvg6dEu66NksXB900BNguBCMZZY2D9SSqncUskM23vT3uvWQ==
+
+"@types/semver@^7.3.3":
+ version "7.3.3"
+ resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.3.3.tgz#3ad6ed949e7487e7bda6f886b4a2434a2c3d7b1a"
+ integrity sha512-jQxClWFzv9IXdLdhSaTf16XI3NYe6zrEbckSpb5xhKfPbWgIyAY0AFyWWWfaiDcBuj3UHmMkCIwSRqpKMTZL2Q==
+
+"@types/send@^0.14.5":
+ version "0.14.5"
+ resolved "https://registry.yarnpkg.com/@types/send/-/send-0.14.5.tgz#653f7d25b93c3f7f51a8994addaf8a229de022a7"
+ integrity sha512-0mwoiK3DXXBu0GIfo+jBv4Wo5s1AcsxdpdwNUtflKm99VEMvmBPJ+/NBNRZy2R5JEYfWL/u4nAHuTUTA3wFecQ==
+ dependencies:
+ "@types/mime" "*"
+ "@types/node" "*"
+
+"@types/serve-static@*":
+ version "1.13.4"
+ resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.13.4.tgz#6662a93583e5a6cabca1b23592eb91e12fa80e7c"
+ integrity sha512-jTDt0o/YbpNwZbQmE/+2e+lfjJEJJR0I3OFaKQKPWkASkCoW3i6fsUnqudSMcNAfbtmADGu8f4MV4q+GqULmug==
+ dependencies:
+ "@types/express-serve-static-core" "*"
+ "@types/mime" "*"
+
+"@types/source-list-map@*":
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/@types/source-list-map/-/source-list-map-0.1.2.tgz#0078836063ffaf17412349bba364087e0ac02ec9"
+ integrity sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA==
+
+"@types/split@^1.0.0":
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/@types/split/-/split-1.0.0.tgz#24f7c35707450b002f203383228f5a2bc1e6c228"
+ integrity sha512-pm9S1mkr+av0j7D6pFyqhBxXDbnbO9gqj4nb8DtGtCewvj0XhIv089SSwXrjrIizT1UquO8/h83hCut0pa3u8A==
+ dependencies:
+ "@types/node" "*"
+ "@types/through" "*"
+
+"@types/stream-chain@*":
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/@types/stream-chain/-/stream-chain-2.0.0.tgz#aed7fc21ac3686bc721aebbbd971f5a857e567e4"
+ integrity sha512-O3IRJcZi4YddlS8jgasH87l+rdNmad9uPAMmMZCfRVhumbWMX6lkBWnIqr9kokO5sx8LHp8peQ1ELhMZHbR0Gg==
+ dependencies:
+ "@types/node" "*"
+
+"@types/stream-json@^1.5.1":
+ version "1.5.1"
+ resolved "https://registry.yarnpkg.com/@types/stream-json/-/stream-json-1.5.1.tgz#ae8d1133f9f920e18c6e94b233cb57d014a47b8d"
+ integrity sha512-Blg6GJbKVEB1J/y/2Tv+WrYiMzPTIqyuZ+zWDJtAF8Mo8A2XQh/lkSX4EYiM+qtS+GY8ThdGi6gGA9h4sjvL+g==
+ dependencies:
+ "@types/node" "*"
+ "@types/stream-chain" "*"
+
+"@types/supports-color@^8.0.0":
+ version "8.1.1"
+ resolved "https://registry.yarnpkg.com/@types/supports-color/-/supports-color-8.1.1.tgz#1b44b1b096479273adf7f93c75fc4ecc40a61ee4"
+ integrity sha512-dPWnWsf+kzIG140B8z2w3fr5D03TLWbOAFQl45xUpI3vcizeXriNR5VYkWZ+WTMsUHqZ9Xlt3hrxGNANFyNQfw==
+
+"@types/tapable@*":
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/@types/tapable/-/tapable-1.0.4.tgz#b4ffc7dc97b498c969b360a41eee247f82616370"
+ integrity sha512-78AdXtlhpCHT0K3EytMpn4JNxaf5tbqbLcbIRoQIHzpTIyjpxLQKRoxU55ujBXAtg3Nl2h/XWvfDa9dsMOd0pQ==
+
+"@types/temp@^0.8.34":
+ version "0.8.34"
+ resolved "https://registry.yarnpkg.com/@types/temp/-/temp-0.8.34.tgz#03e4b3cb67cbb48c425bbf54b12230fef85540ac"
+ integrity sha512-oLa9c5LHXgS6UimpEVp08De7QvZ+Dfu5bMQuWyMhf92Z26Q10ubEMOWy9OEfUdzW7Y/sDWVHmUaLFtmnX/2j0w==
+ dependencies:
+ "@types/node" "*"
+
+"@types/text-table@^0.2.0":
+ version "0.2.2"
+ resolved "https://registry.yarnpkg.com/@types/text-table/-/text-table-0.2.2.tgz#774c90cfcfbc8b4b0ebb00fecbe861dc8b1e8e26"
+ integrity sha512-dGoI5Af7To0R2XE8wJuc6vwlavWARsCh3UKJPjWs1YEqGUqfgBI/j/4GX0yf19/DsDPPf0YAXWAp8psNeIehLg==
+
+"@types/through@*":
+ version "0.0.29"
+ resolved "https://registry.yarnpkg.com/@types/through/-/through-0.0.29.tgz#72943aac922e179339c651fa34a4428a4d722f93"
+ integrity sha512-9a7C5VHh+1BKblaYiq+7Tfc+EOmjMdZaD1MYtkQjSoxgB69tBjW98ry6SKsi4zEIWztLOMRuL87A3bdT/Fc/4w==
+ dependencies:
+ "@types/node" "*"
+
+"@types/tunnel@^0.0.3":
+ version "0.0.3"
+ resolved "https://registry.yarnpkg.com/@types/tunnel/-/tunnel-0.0.3.tgz#f109e730b072b3136347561fc558c9358bb8c6e9"
+ integrity sha512-sOUTGn6h1SfQ+gbgqC364jLFBw2lnFqkgF3q0WovEHRLMrVD1sd5aufqi/aJObLekJO+Aq5z646U4Oxy6shXMA==
+ dependencies:
+ "@types/node" "*"
+
+"@types/uglify-js@*":
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/@types/uglify-js/-/uglify-js-3.0.4.tgz#96beae23df6f561862a830b4288a49e86baac082"
+ integrity sha512-SudIN9TRJ+v8g5pTG8RRCqfqTMNqgWCKKd3vtynhGzkIIjxaicNAMuY5TRadJ6tzDu3Dotf3ngaMILtmOdmWEQ==
+ dependencies:
+ source-map "^0.6.1"
+
+"@types/unist@*", "@types/unist@^2.0.0":
+ version "2.0.6"
+ resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.6.tgz#250a7b16c3b91f672a24552ec64678eeb1d3a08d"
+ integrity sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==
+
+"@types/unist@^2.0.2":
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.3.tgz#9c088679876f374eb5983f150d4787aa6fb32d7e"
+ integrity sha512-FvUupuM3rlRsRtCN+fDudtmytGO6iHJuuRKS1Ss0pG5z8oX0diNEw94UEL7hgDbpN94rgaK5R7sWm6RrSkZuAQ==
+
+"@types/uuid@^3.4.6":
+ version "3.4.6"
+ resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-3.4.6.tgz#d2c4c48eb85a757bf2927f75f939942d521e3016"
+ integrity sha512-cCdlC/1kGEZdEglzOieLDYBxHsvEOIg7kp/2FYyVR9Pxakq+Qf/inL3RKQ+PA8gOlI/NnL+fXmQH12nwcGzsHw==
+ dependencies:
+ "@types/node" "*"
+
+"@types/webpack-env@^1.15.2":
+ version "1.15.2"
+ resolved "https://registry.yarnpkg.com/@types/webpack-env/-/webpack-env-1.15.2.tgz#927997342bb9f4a5185a86e6579a0a18afc33b0a"
+ integrity sha512-67ZgZpAlhIICIdfQrB5fnDvaKFcDxpKibxznfYRVAT4mQE41Dido/3Ty+E3xGBmTogc5+0Qb8tWhna+5B8z1iQ==
+
+"@types/webpack-sources@*":
+ version "0.1.6"
+ resolved "https://registry.yarnpkg.com/@types/webpack-sources/-/webpack-sources-0.1.6.tgz#3d21dfc2ec0ad0c77758e79362426a9ba7d7cbcb"
+ integrity sha512-FtAWR7wR5ocJ9+nP137DV81tveD/ZgB1sadnJ/axUGM3BUVfRPx8oQNMtv3JNfTeHx3VP7cXiyfR/jmtEsVHsQ==
+ dependencies:
+ "@types/node" "*"
+ "@types/source-list-map" "*"
+ source-map "^0.6.1"
+
+"@types/webpack@^4.41.21":
+ version "4.41.21"
+ resolved "https://registry.yarnpkg.com/@types/webpack/-/webpack-4.41.21.tgz#cc685b332c33f153bb2f5fc1fa3ac8adeb592dee"
+ integrity sha512-2j9WVnNrr/8PLAB5csW44xzQSJwS26aOnICsP3pSGCEdsu6KYtfQ6QJsVUKHWRnm1bL7HziJsfh5fHqth87yKA==
+ dependencies:
+ "@types/anymatch" "*"
+ "@types/node" "*"
+ "@types/tapable" "*"
+ "@types/uglify-js" "*"
+ "@types/webpack-sources" "*"
+ source-map "^0.6.0"
+
+"@typescript-eslint/eslint-plugin@^4.4.1":
+ version "4.4.1"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.4.1.tgz#b8acea0373bd2a388ac47df44652f00bf8b368f5"
+ integrity sha512-O+8Utz8pb4OmcA+Nfi5THQnQpHSD2sDUNw9AxNHpuYOo326HZTtG8gsfT+EAYuVrFNaLyNb2QnUNkmTRDskuRA==
+ dependencies:
+ "@typescript-eslint/experimental-utils" "4.4.1"
+ "@typescript-eslint/scope-manager" "4.4.1"
+ debug "^4.1.1"
+ functional-red-black-tree "^1.0.1"
+ regexpp "^3.0.0"
+ semver "^7.3.2"
+ tsutils "^3.17.1"
+
+"@typescript-eslint/experimental-utils@4.4.1":
+ version "4.4.1"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.4.1.tgz#40613b9757fa0170de3e0043254dbb077cafac0c"
+ integrity sha512-Nt4EVlb1mqExW9cWhpV6pd1a3DkUbX9DeyYsdoeziKOpIJ04S2KMVDO+SEidsXRH/XHDpbzXykKcMTLdTXH6cQ==
+ dependencies:
+ "@types/json-schema" "^7.0.3"
+ "@typescript-eslint/scope-manager" "4.4.1"
+ "@typescript-eslint/types" "4.4.1"
+ "@typescript-eslint/typescript-estree" "4.4.1"
+ eslint-scope "^5.0.0"
+ eslint-utils "^2.0.0"
+
+"@typescript-eslint/parser@^4.4.1":
+ version "4.4.1"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.4.1.tgz#25fde9c080611f303f2f33cedb145d2c59915b80"
+ integrity sha512-S0fuX5lDku28Au9REYUsV+hdJpW/rNW0gWlc4SXzF/kdrRaAVX9YCxKpziH7djeWT/HFAjLZcnY7NJD8xTeUEg==
+ dependencies:
+ "@typescript-eslint/scope-manager" "4.4.1"
+ "@typescript-eslint/types" "4.4.1"
+ "@typescript-eslint/typescript-estree" "4.4.1"
+ debug "^4.1.1"
+
+"@typescript-eslint/scope-manager@4.4.1":
+ version "4.4.1"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.4.1.tgz#d19447e60db2ce9c425898d62fa03b2cce8ea3f9"
+ integrity sha512-2oD/ZqD4Gj41UdFeWZxegH3cVEEH/Z6Bhr/XvwTtGv66737XkR4C9IqEkebCuqArqBJQSj4AgNHHiN1okzD/wQ==
+ dependencies:
+ "@typescript-eslint/types" "4.4.1"
+ "@typescript-eslint/visitor-keys" "4.4.1"
+
+"@typescript-eslint/types@4.4.1":
+ version "4.4.1"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.4.1.tgz#c507b35cf523bc7ba00aae5f75ee9b810cdabbc1"
+ integrity sha512-KNDfH2bCyax5db+KKIZT4rfA8rEk5N0EJ8P0T5AJjo5xrV26UAzaiqoJCxeaibqc0c/IvZxp7v2g3difn2Pn3w==
+
+"@typescript-eslint/typescript-estree@4.4.1":
+ version "4.4.1"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.4.1.tgz#598f6de488106c2587d47ca2462c60f6e2797cb8"
+ integrity sha512-wP/V7ScKzgSdtcY1a0pZYBoCxrCstLrgRQ2O9MmCUZDtmgxCO/TCqOTGRVwpP4/2hVfqMz/Vw1ZYrG8cVxvN3g==
+ dependencies:
+ "@typescript-eslint/types" "4.4.1"
+ "@typescript-eslint/visitor-keys" "4.4.1"
+ debug "^4.1.1"
+ globby "^11.0.1"
+ is-glob "^4.0.1"
+ lodash "^4.17.15"
+ semver "^7.3.2"
+ tsutils "^3.17.1"
+
+"@typescript-eslint/visitor-keys@4.4.1":
+ version "4.4.1"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.4.1.tgz#1769dc7a9e2d7d2cfd3318b77ed8249187aed5c3"
+ integrity sha512-H2JMWhLaJNeaylSnMSQFEhT/S/FsJbebQALmoJxMPMxLtlVAMy2uJP/Z543n9IizhjRayLSqoInehCeNW9rWcw==
+ dependencies:
+ "@typescript-eslint/types" "4.4.1"
+ eslint-visitor-keys "^2.0.0"
+
+"@webassemblyjs/ast@1.9.0":
+ version "1.9.0"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.9.0.tgz#bd850604b4042459a5a41cd7d338cbed695ed964"
+ integrity sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==
+ dependencies:
+ "@webassemblyjs/helper-module-context" "1.9.0"
+ "@webassemblyjs/helper-wasm-bytecode" "1.9.0"
+ "@webassemblyjs/wast-parser" "1.9.0"
+
+"@webassemblyjs/floating-point-hex-parser@1.9.0":
+ version "1.9.0"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz#3c3d3b271bddfc84deb00f71344438311d52ffb4"
+ integrity sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==
+
+"@webassemblyjs/helper-api-error@1.9.0":
+ version "1.9.0"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz#203f676e333b96c9da2eeab3ccef33c45928b6a2"
+ integrity sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==
+
+"@webassemblyjs/helper-buffer@1.9.0":
+ version "1.9.0"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz#a1442d269c5feb23fcbc9ef759dac3547f29de00"
+ integrity sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==
+
+"@webassemblyjs/helper-code-frame@1.9.0":
+ version "1.9.0"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz#647f8892cd2043a82ac0c8c5e75c36f1d9159f27"
+ integrity sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==
+ dependencies:
+ "@webassemblyjs/wast-printer" "1.9.0"
+
+"@webassemblyjs/helper-fsm@1.9.0":
+ version "1.9.0"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz#c05256b71244214671f4b08ec108ad63b70eddb8"
+ integrity sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==
+
+"@webassemblyjs/helper-module-context@1.9.0":
+ version "1.9.0"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz#25d8884b76839871a08a6c6f806c3979ef712f07"
+ integrity sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==
+ dependencies:
+ "@webassemblyjs/ast" "1.9.0"
+
+"@webassemblyjs/helper-wasm-bytecode@1.9.0":
+ version "1.9.0"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz#4fed8beac9b8c14f8c58b70d124d549dd1fe5790"
+ integrity sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==
+
+"@webassemblyjs/helper-wasm-section@1.9.0":
+ version "1.9.0"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz#5a4138d5a6292ba18b04c5ae49717e4167965346"
+ integrity sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==
+ dependencies:
+ "@webassemblyjs/ast" "1.9.0"
+ "@webassemblyjs/helper-buffer" "1.9.0"
+ "@webassemblyjs/helper-wasm-bytecode" "1.9.0"
+ "@webassemblyjs/wasm-gen" "1.9.0"
+
+"@webassemblyjs/ieee754@1.9.0":
+ version "1.9.0"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz#15c7a0fbaae83fb26143bbacf6d6df1702ad39e4"
+ integrity sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==
+ dependencies:
+ "@xtuc/ieee754" "^1.2.0"
+
+"@webassemblyjs/leb128@1.9.0":
+ version "1.9.0"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.9.0.tgz#f19ca0b76a6dc55623a09cffa769e838fa1e1c95"
+ integrity sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==
+ dependencies:
+ "@xtuc/long" "4.2.2"
+
+"@webassemblyjs/utf8@1.9.0":
+ version "1.9.0"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.9.0.tgz#04d33b636f78e6a6813227e82402f7637b6229ab"
+ integrity sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==
+
+"@webassemblyjs/wasm-edit@1.9.0":
+ version "1.9.0"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz#3fe6d79d3f0f922183aa86002c42dd256cfee9cf"
+ integrity sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==
+ dependencies:
+ "@webassemblyjs/ast" "1.9.0"
+ "@webassemblyjs/helper-buffer" "1.9.0"
+ "@webassemblyjs/helper-wasm-bytecode" "1.9.0"
+ "@webassemblyjs/helper-wasm-section" "1.9.0"
+ "@webassemblyjs/wasm-gen" "1.9.0"
+ "@webassemblyjs/wasm-opt" "1.9.0"
+ "@webassemblyjs/wasm-parser" "1.9.0"
+ "@webassemblyjs/wast-printer" "1.9.0"
+
+"@webassemblyjs/wasm-gen@1.9.0":
+ version "1.9.0"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz#50bc70ec68ded8e2763b01a1418bf43491a7a49c"
+ integrity sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==
+ dependencies:
+ "@webassemblyjs/ast" "1.9.0"
+ "@webassemblyjs/helper-wasm-bytecode" "1.9.0"
+ "@webassemblyjs/ieee754" "1.9.0"
+ "@webassemblyjs/leb128" "1.9.0"
+ "@webassemblyjs/utf8" "1.9.0"
+
+"@webassemblyjs/wasm-opt@1.9.0":
+ version "1.9.0"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz#2211181e5b31326443cc8112eb9f0b9028721a61"
+ integrity sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==
+ dependencies:
+ "@webassemblyjs/ast" "1.9.0"
+ "@webassemblyjs/helper-buffer" "1.9.0"
+ "@webassemblyjs/wasm-gen" "1.9.0"
+ "@webassemblyjs/wasm-parser" "1.9.0"
+
+"@webassemblyjs/wasm-parser@1.9.0":
+ version "1.9.0"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz#9d48e44826df4a6598294aa6c87469d642fff65e"
+ integrity sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==
+ dependencies:
+ "@webassemblyjs/ast" "1.9.0"
+ "@webassemblyjs/helper-api-error" "1.9.0"
+ "@webassemblyjs/helper-wasm-bytecode" "1.9.0"
+ "@webassemblyjs/ieee754" "1.9.0"
+ "@webassemblyjs/leb128" "1.9.0"
+ "@webassemblyjs/utf8" "1.9.0"
+
+"@webassemblyjs/wast-parser@1.9.0":
+ version "1.9.0"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz#3031115d79ac5bd261556cecc3fa90a3ef451914"
+ integrity sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==
+ dependencies:
+ "@webassemblyjs/ast" "1.9.0"
+ "@webassemblyjs/floating-point-hex-parser" "1.9.0"
+ "@webassemblyjs/helper-api-error" "1.9.0"
+ "@webassemblyjs/helper-code-frame" "1.9.0"
+ "@webassemblyjs/helper-fsm" "1.9.0"
+ "@xtuc/long" "4.2.2"
+
+"@webassemblyjs/wast-printer@1.9.0":
+ version "1.9.0"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz#4935d54c85fef637b00ce9f52377451d00d47899"
+ integrity sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==
+ dependencies:
+ "@webassemblyjs/ast" "1.9.0"
+ "@webassemblyjs/wast-parser" "1.9.0"
+ "@xtuc/long" "4.2.2"
+
+"@xtuc/ieee754@^1.2.0":
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790"
+ integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==
+
+"@xtuc/long@4.2.2":
+ version "4.2.2"
+ resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d"
+ integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==
+
+abbrev@1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8"
+ integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==
+
+accepts@~1.3.7:
+ version "1.3.7"
+ resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd"
+ integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==
+ dependencies:
+ mime-types "~2.1.24"
+ negotiator "0.6.2"
+
+acorn-jsx@^5.2.0:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.2.0.tgz#4c66069173d6fdd68ed85239fc256226182b2ebe"
+ integrity sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ==
+
+acorn@^6.4.1:
+ version "6.4.1"
+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.1.tgz#531e58ba3f51b9dacb9a6646ca4debf5b14ca474"
+ integrity sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==
+
+acorn@^7.1.1, acorn@^7.2.0:
+ version "7.3.1"
+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.3.1.tgz#85010754db53c3fbaf3b9ea3e083aa5c5d147ffd"
+ integrity sha512-tLc0wSnatxAQHVHUapaHdz72pi9KUyHjq5KyHjGg9Y8Ifdc79pTh2XvI6I1/chZbnM7QtNKzh66ooDogPZSleA==
+
+aggregate-error@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.0.1.tgz#db2fe7246e536f40d9b5442a39e117d7dd6a24e0"
+ integrity sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA==
+ dependencies:
+ clean-stack "^2.0.0"
+ indent-string "^4.0.0"
+
+ajv-errors@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d"
+ integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==
+
+ajv-keywords@^3.1.0, ajv-keywords@^3.4.1:
+ version "3.4.1"
+ resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.4.1.tgz#ef916e271c64ac12171fd8384eaae6b2345854da"
+ integrity sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ==
+
+ajv@^6.1.0:
+ version "6.10.1"
+ resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.10.1.tgz#ebf8d3af22552df9dd049bfbe50cc2390e823593"
+ integrity sha512-w1YQaVGNC6t2UCPjEawK/vo/dG8OOrVtUmhBT1uJJYxbl5kU2Tj3v6LGqBcsysN1yhuCStJCCA3GqdvKY8sqXQ==
+ dependencies:
+ fast-deep-equal "^2.0.1"
+ fast-json-stable-stringify "^2.0.0"
+ json-schema-traverse "^0.4.1"
+ uri-js "^4.2.2"
+
+ajv@^6.10.0:
+ version "6.12.3"
+ resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.3.tgz#18c5af38a111ddeb4f2697bd78d68abc1cabd706"
+ integrity sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA==
+ dependencies:
+ fast-deep-equal "^3.1.1"
+ fast-json-stable-stringify "^2.0.0"
+ json-schema-traverse "^0.4.1"
+ uri-js "^4.2.2"
+
+ajv@^6.10.2:
+ version "6.10.2"
+ resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.10.2.tgz#d3cea04d6b017b2894ad69040fec8b623eb4bd52"
+ integrity sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==
+ dependencies:
+ fast-deep-equal "^2.0.1"
+ fast-json-stable-stringify "^2.0.0"
+ json-schema-traverse "^0.4.1"
+ uri-js "^4.2.2"
+
+ajv@^6.12.2:
+ version "6.12.2"
+ resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.2.tgz#c629c5eced17baf314437918d2da88c99d5958cd"
+ integrity sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==
+ dependencies:
+ fast-deep-equal "^3.1.1"
+ fast-json-stable-stringify "^2.0.0"
+ json-schema-traverse "^0.4.1"
+ uri-js "^4.2.2"
+
+ansi-colors@^4.1.1:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348"
+ integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==
+
+ansi-escapes@^4.2.1, ansi-escapes@^4.3.0:
+ version "4.3.1"
+ resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.1.tgz#a5c47cc43181f1f38ffd7076837700d395522a61"
+ integrity sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==
+ dependencies:
+ type-fest "^0.11.0"
+
+ansi-regex@^2.0.0:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
+ integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8=
+
+ansi-regex@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998"
+ integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=
+
+ansi-regex@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997"
+ integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==
+
+ansi-regex@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75"
+ integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==
+
+ansi-regex@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.0.tgz#ecc7f5933cbe5ac7b33e209a5ff409ab1669c6b2"
+ integrity sha512-tAaOSrWCHF+1Ear1Z4wnJCXA9GGox4K6Ic85a5qalES2aeEwQGr7UC93mwef49536PkCYjzkp0zIxfFvexJ6zQ==
+
+ansi-styles@^3.2.0, ansi-styles@^3.2.1:
+ version "3.2.1"
+ resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
+ integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==
+ dependencies:
+ color-convert "^1.9.0"
+
+ansi-styles@^4.0.0, ansi-styles@^4.1.0:
+ version "4.2.1"
+ resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359"
+ integrity sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==
+ dependencies:
+ "@types/color-name" "^1.1.1"
+ color-convert "^2.0.1"
+
+anymatch@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb"
+ integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==
+ dependencies:
+ micromatch "^3.1.4"
+ normalize-path "^2.1.1"
+
+anymatch@^3.0.2:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.0.3.tgz#2fb624fe0e84bccab00afee3d0006ed310f22f09"
+ integrity sha512-c6IvoeBECQlMVuYUjSwimnhmztImpErfxJzWZhIQinIvQWoGOnB0dLIgifbPHQt5heS6mNlaZG16f06H3C8t1g==
+ dependencies:
+ normalize-path "^3.0.0"
+ picomatch "^2.0.4"
+
+anymatch@~3.1.1:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142"
+ integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==
+ dependencies:
+ normalize-path "^3.0.0"
+ picomatch "^2.0.4"
+
+anymatch@~3.1.2:
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716"
+ integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==
+ dependencies:
+ normalize-path "^3.0.0"
+ picomatch "^2.0.4"
+
+aproba@^1.0.3, aproba@^1.1.1:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a"
+ integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==
+
+are-we-there-yet@~1.1.2:
+ version "1.1.5"
+ resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21"
+ integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==
+ dependencies:
+ delegates "^1.0.0"
+ readable-stream "^2.0.6"
+
+argparse@^1.0.7:
+ version "1.0.10"
+ resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911"
+ integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==
+ dependencies:
+ sprintf-js "~1.0.2"
+
+argparse@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38"
+ integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==
+
+arr-diff@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520"
+ integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=
+
+arr-flatten@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1"
+ integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==
+
+arr-union@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4"
+ integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=
+
+array-flatten@1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2"
+ integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=
+
+array-includes@^3.0.3:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.0.3.tgz#184b48f62d92d7452bb31b323165c7f8bd02266d"
+ integrity sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0=
+ dependencies:
+ define-properties "^1.1.2"
+ es-abstract "^1.7.0"
+
+array-includes@^3.1.1:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.1.tgz#cdd67e6852bdf9c1215460786732255ed2459348"
+ integrity sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ==
+ dependencies:
+ define-properties "^1.1.3"
+ es-abstract "^1.17.0"
+ is-string "^1.0.5"
+
+array-union@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d"
+ integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==
+
+array-unique@^0.3.2:
+ version "0.3.2"
+ resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428"
+ integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=
+
+array.prototype.flat@^1.2.3:
+ version "1.2.3"
+ resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.3.tgz#0de82b426b0318dbfdb940089e38b043d37f6c7b"
+ integrity sha512-gBlRZV0VSmfPIeWfuuy56XZMvbVfbEUnOXUvt3F/eUUUSyzlgLxhEX4YAEpxNAogRGehPSnfXyPtYyKAhkzQhQ==
+ dependencies:
+ define-properties "^1.1.3"
+ es-abstract "^1.17.0-next.1"
+
+arrify@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d"
+ integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=
+
+asar@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/asar/-/asar-3.1.0.tgz#70b0509449fe3daccc63beb4d3c7d2e24d3c6473"
+ integrity sha512-vyxPxP5arcAqN4F/ebHd/HhwnAiZtwhglvdmc7BR2f0ywbVNTOpSeyhLDbGXtE/y58hv1oC75TaNIXutnsOZsQ==
+ dependencies:
+ chromium-pickle-js "^0.2.0"
+ commander "^5.0.0"
+ glob "^7.1.6"
+ minimatch "^3.0.4"
+ optionalDependencies:
+ "@types/glob" "^7.1.1"
+
+asn1.js@^4.0.0:
+ version "4.10.1"
+ resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0"
+ integrity sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==
+ dependencies:
+ bn.js "^4.0.0"
+ inherits "^2.0.1"
+ minimalistic-assert "^1.0.0"
+
+assert@^1.1.1:
+ version "1.5.0"
+ resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb"
+ integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==
+ dependencies:
+ object-assign "^4.1.1"
+ util "0.10.3"
+
+assertion-error@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b"
+ integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==
+
+assign-symbols@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367"
+ integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=
+
+astral-regex@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9"
+ integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==
+
+astral-regex@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31"
+ integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==
+
+async-each@^1.0.1:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf"
+ integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==
+
+asynckit@^0.4.0:
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
+ integrity sha1-x57Zf380y48robyXkLzDZkdLS3k=
+
+at-least-node@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2"
+ integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==
+
+atob@^2.1.1:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9"
+ integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==
+
+aws-sdk@^2.727.1:
+ version "2.727.1"
+ resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.727.1.tgz#bde7a4b57b6c5b34370ad20963472ea7d24a9351"
+ integrity sha512-K+XdN11os6hvI9DgWEK9m/fPKHuDDVZalFWPouwqSk0phEdDCJ/K8InHUFL9DMvE4bxyWRuqI9dzNfdmxX0sxQ==
+ dependencies:
+ buffer "4.9.2"
+ events "1.1.1"
+ ieee754 "1.1.13"
+ jmespath "0.15.0"
+ querystring "0.2.0"
+ sax "1.2.1"
+ url "0.10.3"
+ uuid "3.3.2"
+ xml2js "0.4.19"
+
+bail@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/bail/-/bail-2.0.1.tgz#d676736373a374058a935aec81b94c12ba815771"
+ integrity sha512-d5FoTAr2S5DSUPKl85WNm2yUwsINN8eidIdIwsOge2t33DaOfOdSmmsI11jMN3GmALCXaw+Y6HMVHDzePshFAA==
+
+balanced-match@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
+ integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c=
+
+base64-js@^1.0.2:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.0.tgz#cab1e6118f051095e58b5281aea8c1cd22bfc0e3"
+ integrity sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==
+
+base@^0.11.1:
+ version "0.11.2"
+ resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f"
+ integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==
+ dependencies:
+ cache-base "^1.0.1"
+ class-utils "^0.3.5"
+ component-emitter "^1.2.1"
+ define-property "^1.0.0"
+ isobject "^3.0.1"
+ mixin-deep "^1.2.0"
+ pascalcase "^0.1.1"
+
+before-after-hook@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-2.1.0.tgz#b6c03487f44e24200dd30ca5e6a1979c5d2fb635"
+ integrity sha512-IWIbu7pMqyw3EAJHzzHbWa85b6oud/yfKYg5rqB5hNE8CeMi3nX+2C2sj0HswfblST86hpVEOAb9x34NZd6P7A==
+
+big.js@^5.2.2:
+ version "5.2.2"
+ resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328"
+ integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==
+
+binary-extensions@^1.0.0:
+ version "1.13.1"
+ resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65"
+ integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==
+
+binary-extensions@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.1.0.tgz#30fa40c9e7fe07dbc895678cd287024dea241dd9"
+ integrity sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==
+
+bluebird@^3.5.5:
+ version "3.5.5"
+ resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.5.tgz#a8d0afd73251effbbd5fe384a77d73003c17a71f"
+ integrity sha512-5am6HnnfN+urzt4yfg7IgTbotDjIT/u8AJpEt0sIU9FtXfVeezXAPKswrG+xKUCOYAINpSdgZVDU6QFh+cuH3w==
+
+bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.11.9:
+ version "4.12.0"
+ resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88"
+ integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==
+
+body-parser@1.19.0:
+ version "1.19.0"
+ resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a"
+ integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==
+ dependencies:
+ bytes "3.1.0"
+ content-type "~1.0.4"
+ debug "2.6.9"
+ depd "~1.1.2"
+ http-errors "1.7.2"
+ iconv-lite "0.4.24"
+ on-finished "~2.3.0"
+ qs "6.7.0"
+ raw-body "2.4.0"
+ type-is "~1.6.17"
+
+brace-expansion@^1.1.7:
+ version "1.1.11"
+ resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
+ integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
+ dependencies:
+ balanced-match "^1.0.0"
+ concat-map "0.0.1"
+
+braces@^2.3.1, braces@^2.3.2:
+ version "2.3.2"
+ resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729"
+ integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==
+ dependencies:
+ arr-flatten "^1.1.0"
+ array-unique "^0.3.2"
+ extend-shallow "^2.0.1"
+ fill-range "^4.0.0"
+ isobject "^3.0.1"
+ repeat-element "^1.1.2"
+ snapdragon "^0.8.1"
+ snapdragon-node "^2.0.1"
+ split-string "^3.0.2"
+ to-regex "^3.0.1"
+
+braces@^3.0.1, braces@~3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
+ integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
+ dependencies:
+ fill-range "^7.0.1"
+
+brorand@^1.0.1, brorand@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f"
+ integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=
+
+browserify-aes@^1.0.0, browserify-aes@^1.0.4:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48"
+ integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==
+ dependencies:
+ buffer-xor "^1.0.3"
+ cipher-base "^1.0.0"
+ create-hash "^1.1.0"
+ evp_bytestokey "^1.0.3"
+ inherits "^2.0.1"
+ safe-buffer "^5.0.1"
+
+browserify-cipher@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0"
+ integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==
+ dependencies:
+ browserify-aes "^1.0.4"
+ browserify-des "^1.0.0"
+ evp_bytestokey "^1.0.0"
+
+browserify-des@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c"
+ integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==
+ dependencies:
+ cipher-base "^1.0.1"
+ des.js "^1.0.0"
+ inherits "^2.0.1"
+ safe-buffer "^5.1.2"
+
+browserify-rsa@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524"
+ integrity sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=
+ dependencies:
+ bn.js "^4.1.0"
+ randombytes "^2.0.1"
+
+browserify-sign@^4.0.0:
+ version "4.0.4"
+ resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.0.4.tgz#aa4eb68e5d7b658baa6bf6a57e630cbd7a93d298"
+ integrity sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=
+ dependencies:
+ bn.js "^4.1.1"
+ browserify-rsa "^4.0.0"
+ create-hash "^1.1.0"
+ create-hmac "^1.1.2"
+ elliptic "^6.0.0"
+ inherits "^2.0.1"
+ parse-asn1 "^5.0.0"
+
+browserify-zlib@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f"
+ integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==
+ dependencies:
+ pako "~1.0.5"
+
+buffer-equal-constant-time@1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz#f8e71132f7ffe6e01a5c9697a4c6f3e48d5cc819"
+ integrity sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=
+
+buffer-from@^1.0.0, buffer-from@^1.1.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef"
+ integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==
+
+buffer-xor@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9"
+ integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=
+
+buffer@4.9.2:
+ version "4.9.2"
+ resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8"
+ integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==
+ dependencies:
+ base64-js "^1.0.2"
+ ieee754 "^1.1.4"
+ isarray "^1.0.0"
+
+buffer@^4.3.0:
+ version "4.9.1"
+ resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298"
+ integrity sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=
+ dependencies:
+ base64-js "^1.0.2"
+ ieee754 "^1.1.4"
+ isarray "^1.0.0"
+
+builtin-status-codes@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8"
+ integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=
+
+builtins@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/builtins/-/builtins-4.0.0.tgz#a8345420de82068fdc4d6559d0456403a8fb1905"
+ integrity sha512-qC0E2Dxgou1IHhvJSLwGDSTvokbRovU5zZFuDY6oY8Y2lF3nGt5Ad8YZK7GMtqzY84Wu7pXTPeHQeHcXSXsRhw==
+ dependencies:
+ semver "^7.0.0"
+
+bytes@3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6"
+ integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==
+
+cacache@^12.0.2:
+ version "12.0.3"
+ resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.3.tgz#be99abba4e1bf5df461cd5a2c1071fc432573390"
+ integrity sha512-kqdmfXEGFepesTuROHMs3MpFLWrPkSSpRqOw80RCflZXy/khxaArvFrQ7uJxSUduzAufc6G0g1VUCOZXxWavPw==
+ dependencies:
+ bluebird "^3.5.5"
+ chownr "^1.1.1"
+ figgy-pudding "^3.5.1"
+ glob "^7.1.4"
+ graceful-fs "^4.1.15"
+ infer-owner "^1.0.3"
+ lru-cache "^5.1.1"
+ mississippi "^3.0.0"
+ mkdirp "^0.5.1"
+ move-concurrently "^1.0.1"
+ promise-inflight "^1.0.1"
+ rimraf "^2.6.3"
+ ssri "^6.0.1"
+ unique-filename "^1.1.1"
+ y18n "^4.0.0"
+
+cache-base@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2"
+ integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==
+ dependencies:
+ collection-visit "^1.0.0"
+ component-emitter "^1.2.1"
+ get-value "^2.0.6"
+ has-value "^1.0.0"
+ isobject "^3.0.1"
+ set-value "^2.0.0"
+ to-object-path "^0.3.0"
+ union-value "^1.0.0"
+ unset-value "^1.0.0"
+
+cacheable-request@^6.0.0:
+ version "6.1.0"
+ resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-6.1.0.tgz#20ffb8bd162ba4be11e9567d823db651052ca912"
+ integrity sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==
+ dependencies:
+ clone-response "^1.0.2"
+ get-stream "^5.1.0"
+ http-cache-semantics "^4.0.0"
+ keyv "^3.0.0"
+ lowercase-keys "^2.0.0"
+ normalize-url "^4.1.0"
+ responselike "^1.0.2"
+
+callsites@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73"
+ integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==
+
+camelcase@^5.0.0:
+ version "5.3.1"
+ resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320"
+ integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==
+
+camelcase@^6.0.0:
+ version "6.2.0"
+ resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809"
+ integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==
+
+capture-stack-trace@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz#a6c0bbe1f38f3aa0b92238ecb6ff42c344d4135d"
+ integrity sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw==
+
+chai@^4.2.0:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/chai/-/chai-4.2.0.tgz#760aa72cf20e3795e84b12877ce0e83737aa29e5"
+ integrity sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw==
+ dependencies:
+ assertion-error "^1.1.0"
+ check-error "^1.0.2"
+ deep-eql "^3.0.1"
+ get-func-name "^2.0.0"
+ pathval "^1.1.0"
+ type-detect "^4.0.5"
+
+chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.4.2:
+ version "2.4.2"
+ resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
+ integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
+ dependencies:
+ ansi-styles "^3.2.1"
+ escape-string-regexp "^1.0.5"
+ supports-color "^5.3.0"
+
+chalk@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4"
+ integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==
+ dependencies:
+ ansi-styles "^4.1.0"
+ supports-color "^7.1.0"
+
+chalk@^4.0.0, chalk@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a"
+ integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==
+ dependencies:
+ ansi-styles "^4.1.0"
+ supports-color "^7.1.0"
+
+character-entities-legacy@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/character-entities-legacy/-/character-entities-legacy-2.0.0.tgz#57f4d00974c696e8f74e9f493e7fcb75b44d7ee7"
+ integrity sha512-YwaEtEvWLpFa6Wh3uVLrvirA/ahr9fki/NUd/Bd4OR6EdJ8D22hovYQEOUCBfQfcqnC4IAMGMsHXY1eXgL4ZZA==
+
+character-entities@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/character-entities/-/character-entities-2.0.0.tgz#508355fcc8c73893e0909efc1a44d28da2b6fdf3"
+ integrity sha512-oHqMj3eAuJ77/P5PaIRcqk+C3hdfNwyCD2DAUcD5gyXkegAuF2USC40CEqPscDk4I8FRGMTojGJQkXDsN5QlJA==
+
+character-reference-invalid@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/character-reference-invalid/-/character-reference-invalid-2.0.0.tgz#a0bdeb89c051fe7ed5d3158b2f06af06984f2813"
+ integrity sha512-pE3Z15lLRxDzWJy7bBHBopRwfI20sbrMVLQTC7xsPglCHf4Wv1e167OgYAFP78co2XlhojDyAqA+IAJse27//g==
+
+chardet@^0.7.0:
+ version "0.7.0"
+ resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e"
+ integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==
+
+check-error@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82"
+ integrity sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=
+
+check-for-leaks@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/check-for-leaks/-/check-for-leaks-1.2.1.tgz#4ac108ee3f8e6b99f5ad36f6b98cba1d7f4816d0"
+ integrity sha512-9OdOSRZY6N0w5JCdJpqsC5MkD6EPGYpHmhtf4l5nl3DRETDZshP6C1EGN/vVhHDTY6AsOK3NhdFfrMe3NWZl7g==
+ dependencies:
+ anymatch "^3.0.2"
+ minimist "^1.2.0"
+ parse-gitignore "^0.4.0"
+ walk-sync "^0.3.2"
+
+checksum@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/checksum/-/checksum-0.1.1.tgz#dc6527d4c90be8560dbd1ed4cecf3297d528e9e9"
+ integrity sha1-3GUn1MkL6FYNvR7Uzs8yl9Uo6ek=
+ dependencies:
+ optimist "~0.3.5"
+
+chokidar@^2.1.8:
+ version "2.1.8"
+ resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917"
+ integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==
+ dependencies:
+ anymatch "^2.0.0"
+ async-each "^1.0.1"
+ braces "^2.3.2"
+ glob-parent "^3.1.0"
+ inherits "^2.0.3"
+ is-binary-path "^1.0.0"
+ is-glob "^4.0.0"
+ normalize-path "^3.0.0"
+ path-is-absolute "^1.0.0"
+ readdirp "^2.2.1"
+ upath "^1.1.1"
+ optionalDependencies:
+ fsevents "^1.2.7"
+
+chokidar@^3.0.0:
+ version "3.5.2"
+ resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.2.tgz#dba3976fcadb016f66fd365021d91600d01c1e75"
+ integrity sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==
+ dependencies:
+ anymatch "~3.1.2"
+ braces "~3.0.2"
+ glob-parent "~5.1.2"
+ is-binary-path "~2.1.0"
+ is-glob "~4.0.1"
+ normalize-path "~3.0.0"
+ readdirp "~3.6.0"
+ optionalDependencies:
+ fsevents "~2.3.2"
+
+chokidar@^3.4.0:
+ version "3.4.0"
+ resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.4.0.tgz#b30611423ce376357c765b9b8f904b9fba3c0be8"
+ integrity sha512-aXAaho2VJtisB/1fg1+3nlLJqGOuewTzQpd/Tz0yTg2R0e4IGtshYvtjowyEumcBv2z+y4+kc75Mz7j5xJskcQ==
+ dependencies:
+ anymatch "~3.1.1"
+ braces "~3.0.2"
+ glob-parent "~5.1.0"
+ is-binary-path "~2.1.0"
+ is-glob "~4.0.1"
+ normalize-path "~3.0.0"
+ readdirp "~3.4.0"
+ optionalDependencies:
+ fsevents "~2.1.2"
+
+chownr@^1.1.1, chownr@^1.1.4:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b"
+ integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==
+
+chrome-trace-event@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz#234090ee97c7d4ad1a2c4beae27505deffc608a4"
+ integrity sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==
+ dependencies:
+ tslib "^1.9.0"
+
+chromium-pickle-js@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz#04a106672c18b085ab774d983dfa3ea138f22205"
+ integrity sha1-BKEGZywYsIWrd02YPfo+oTjyIgU=
+
+cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de"
+ integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==
+ dependencies:
+ inherits "^2.0.1"
+ safe-buffer "^5.0.1"
+
+class-utils@^0.3.5:
+ version "0.3.6"
+ resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463"
+ integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==
+ dependencies:
+ arr-union "^3.1.0"
+ define-property "^0.2.5"
+ isobject "^3.0.0"
+ static-extend "^0.1.1"
+
+clean-stack@^2.0.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b"
+ integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==
+
+cli-cursor@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5"
+ integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=
+ dependencies:
+ restore-cursor "^2.0.0"
+
+cli-cursor@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307"
+ integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==
+ dependencies:
+ restore-cursor "^3.1.0"
+
+cli-spinners@^2.0.0, cli-spinners@^2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.2.0.tgz#e8b988d9206c692302d8ee834e7a85c0144d8f77"
+ integrity sha512-tgU3fKwzYjiLEQgPMD9Jt+JjHVL9kW93FiIMX/l7rivvOD4/LL0Mf7gda3+4U2KJBloybwgj5KEoQgGRioMiKQ==
+
+cli-truncate@2.1.0, cli-truncate@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-2.1.0.tgz#c39e28bf05edcde5be3b98992a22deed5a2b93c7"
+ integrity sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==
+ dependencies:
+ slice-ansi "^3.0.0"
+ string-width "^4.2.0"
+
+cli-width@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6"
+ integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==
+
+cliui@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5"
+ integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==
+ dependencies:
+ string-width "^3.1.0"
+ strip-ansi "^5.2.0"
+ wrap-ansi "^5.1.0"
+
+clone-response@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b"
+ integrity sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=
+ dependencies:
+ mimic-response "^1.0.0"
+
+clone@^1.0.2:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e"
+ integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4=
+
+co@3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/co/-/co-3.1.0.tgz#4ea54ea5a08938153185e15210c68d9092bc1b78"
+ integrity sha1-TqVOpaCJOBUxheFSEMaNkJK8G3g=
+
+code-point-at@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77"
+ integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=
+
+collection-visit@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0"
+ integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=
+ dependencies:
+ map-visit "^1.0.0"
+ object-visit "^1.0.0"
+
+color-convert@^1.9.0:
+ version "1.9.3"
+ resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
+ integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
+ dependencies:
+ color-name "1.1.3"
+
+color-convert@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3"
+ integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==
+ dependencies:
+ color-name "~1.1.4"
+
+color-name@1.1.3:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
+ integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=
+
+color-name@~1.1.4:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
+ integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
+
+colors@1.4.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78"
+ integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==
+
+colors@^1.1.2:
+ version "1.3.3"
+ resolved "https://registry.yarnpkg.com/colors/-/colors-1.3.3.tgz#39e005d546afe01e01f9c4ca8fa50f686a01205d"
+ integrity sha512-mmGt/1pZqYRjMxB1axhTo16/snVZ5krrKkcmMeVKxzECMMXoCgnvTPp10QgHfcbQZw8Dq2jMNG6je4JlWU0gWg==
+
+combined-stream@^1.0.8:
+ version "1.0.8"
+ resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f"
+ integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==
+ dependencies:
+ delayed-stream "~1.0.0"
+
+commander@^2.20.0, commander@^2.9.0:
+ version "2.20.0"
+ resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422"
+ integrity sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==
+
+commander@^4.1.0:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068"
+ integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==
+
+commander@^5.0.0, commander@^5.1.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae"
+ integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==
+
+commander@~6.2.0:
+ version "6.2.0"
+ resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.0.tgz#b990bfb8ac030aedc6d11bc04d1488ffef56db75"
+ integrity sha512-zP4jEKbe8SHzKJYQmq8Y9gYjtO/POJLgIdKgV7B9qNmABVFVc+ctqSX6iXh4mCpJfRBOabiZ2YKPg8ciDw6C+Q==
+
+commondir@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b"
+ integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=
+
+component-emitter@^1.2.1:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0"
+ integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==
+
+concat-map@0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
+ integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
+
+concat-stream@^1.5.0:
+ version "1.6.2"
+ resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34"
+ integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==
+ dependencies:
+ buffer-from "^1.0.0"
+ inherits "^2.0.3"
+ readable-stream "^2.2.2"
+ typedarray "^0.0.6"
+
+concat-stream@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-2.0.0.tgz#414cf5af790a48c60ab9be4527d56d5e41133cb1"
+ integrity sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==
+ dependencies:
+ buffer-from "^1.0.0"
+ inherits "^2.0.3"
+ readable-stream "^3.0.2"
+ typedarray "^0.0.6"
+
+console-browserify@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10"
+ integrity sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=
+ dependencies:
+ date-now "^0.1.4"
+
+console-control-strings@^1.0.0, console-control-strings@~1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e"
+ integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=
+
+constants-browserify@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75"
+ integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=
+
+contains-path@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a"
+ integrity sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=
+
+content-disposition@0.5.3:
+ version "0.5.3"
+ resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd"
+ integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==
+ dependencies:
+ safe-buffer "5.1.2"
+
+content-type@~1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b"
+ integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==
+
+cookie-signature@1.0.6:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c"
+ integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw=
+
+cookie@0.4.0:
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba"
+ integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==
+
+copy-concurrently@^1.0.0:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0"
+ integrity sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==
+ dependencies:
+ aproba "^1.1.1"
+ fs-write-stream-atomic "^1.0.8"
+ iferr "^0.1.5"
+ mkdirp "^0.5.1"
+ rimraf "^2.5.4"
+ run-queue "^1.0.0"
+
+copy-descriptor@^0.1.0:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d"
+ integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=
+
+core-util-is@~1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
+ integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=
+
+cosmiconfig@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz#da4fee853c52f6b1e6935f41c1a2fc50bd4a9982"
+ integrity sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==
+ dependencies:
+ "@types/parse-json" "^4.0.0"
+ import-fresh "^3.1.0"
+ parse-json "^5.0.0"
+ path-type "^4.0.0"
+ yaml "^1.7.2"
+
+create-ecdh@^4.0.0:
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.3.tgz#c9111b6f33045c4697f144787f9254cdc77c45ff"
+ integrity sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==
+ dependencies:
+ bn.js "^4.1.0"
+ elliptic "^6.0.0"
+
+create-error-class@^3.0.0:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/create-error-class/-/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6"
+ integrity sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=
+ dependencies:
+ capture-stack-trace "^1.0.0"
+
+create-hash@^1.1.0, create-hash@^1.1.2:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196"
+ integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==
+ dependencies:
+ cipher-base "^1.0.1"
+ inherits "^2.0.1"
+ md5.js "^1.3.4"
+ ripemd160 "^2.0.1"
+ sha.js "^2.4.0"
+
+create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4:
+ version "1.1.7"
+ resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff"
+ integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==
+ dependencies:
+ cipher-base "^1.0.3"
+ create-hash "^1.1.0"
+ inherits "^2.0.1"
+ ripemd160 "^2.0.0"
+ safe-buffer "^5.0.1"
+ sha.js "^2.4.8"
+
+cross-spawn@^6.0.5:
+ version "6.0.5"
+ resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4"
+ integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==
+ dependencies:
+ nice-try "^1.0.4"
+ path-key "^2.0.1"
+ semver "^5.5.0"
+ shebang-command "^1.2.0"
+ which "^1.2.9"
+
+cross-spawn@^7.0.0, cross-spawn@^7.0.2:
+ version "7.0.3"
+ resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6"
+ integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==
+ dependencies:
+ path-key "^3.1.0"
+ shebang-command "^2.0.0"
+ which "^2.0.1"
+
+crypto-browserify@^3.11.0:
+ version "3.12.0"
+ resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec"
+ integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==
+ dependencies:
+ browserify-cipher "^1.0.0"
+ browserify-sign "^4.0.0"
+ create-ecdh "^4.0.0"
+ create-hash "^1.1.0"
+ create-hmac "^1.1.0"
+ diffie-hellman "^5.0.0"
+ inherits "^2.0.1"
+ pbkdf2 "^3.0.3"
+ public-encrypt "^4.0.0"
+ randombytes "^2.0.0"
+ randomfill "^1.0.3"
+
+cyclist@~0.2.2:
+ version "0.2.2"
+ resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-0.2.2.tgz#1b33792e11e914a2fd6d6ed6447464444e5fa640"
+ integrity sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=
+
+date-now@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b"
+ integrity sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=
+
+debug-log@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/debug-log/-/debug-log-1.0.1.tgz#2307632d4c04382b8df8a32f70b895046d52745f"
+ integrity sha1-IwdjLUwEOCuN+KMvcLiVBG1SdF8=
+
+debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.9:
+ version "2.6.9"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
+ integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
+ dependencies:
+ ms "2.0.0"
+
+debug@^3.1.0, debug@^3.2.6:
+ version "3.2.6"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b"
+ integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==
+ dependencies:
+ ms "^2.1.1"
+
+debug@^4.0.0:
+ version "4.3.2"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b"
+ integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==
+ dependencies:
+ ms "2.1.2"
+
+debug@^4.0.1, debug@^4.1.1:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791"
+ integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==
+ dependencies:
+ ms "^2.1.1"
+
+decamelize@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
+ integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=
+
+decode-uri-component@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545"
+ integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=
+
+decompress-response@^3.3.0:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3"
+ integrity sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=
+ dependencies:
+ mimic-response "^1.0.0"
+
+dedent@^0.7.0:
+ version "0.7.0"
+ resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c"
+ integrity sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=
+
+deep-eql@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-3.0.1.tgz#dfc9404400ad1c8fe023e7da1df1c147c4b444df"
+ integrity sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==
+ dependencies:
+ type-detect "^4.0.0"
+
+deep-extend@^0.6.0, deep-extend@~0.6.0:
+ version "0.6.0"
+ resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac"
+ integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==
+
+deep-is@^0.1.3, deep-is@~0.1.3:
+ version "0.1.3"
+ resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34"
+ integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=
+
+defaults@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d"
+ integrity sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=
+ dependencies:
+ clone "^1.0.2"
+
+defer-to-connect@^1.0.1:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.3.tgz#331ae050c08dcf789f8c83a7b81f0ed94f4ac591"
+ integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==
+
+define-properties@^1.1.2, define-properties@^1.1.3:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1"
+ integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==
+ dependencies:
+ object-keys "^1.0.12"
+
+define-property@^0.2.5:
+ version "0.2.5"
+ resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116"
+ integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=
+ dependencies:
+ is-descriptor "^0.1.0"
+
+define-property@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6"
+ integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY=
+ dependencies:
+ is-descriptor "^1.0.0"
+
+define-property@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d"
+ integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==
+ dependencies:
+ is-descriptor "^1.0.2"
+ isobject "^3.0.1"
+
+deglob@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/deglob/-/deglob-4.0.1.tgz#0685c6383992fd6009be10653a2b1116696fad55"
+ integrity sha512-/g+RDZ7yf2HvoW+E5Cy+K94YhgcFgr6C8LuHZD1O5HoNPkf3KY6RfXJ0DBGlB/NkLi5gml+G9zqRzk9S0mHZCg==
+ dependencies:
+ find-root "^1.0.0"
+ glob "^7.0.5"
+ ignore "^5.0.0"
+ pkg-config "^1.1.0"
+ run-parallel "^1.1.2"
+ uniq "^1.0.1"
+
+delayed-stream@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
+ integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk=
+
+delegates@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a"
+ integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=
+
+depd@~1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9"
+ integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=
+
+deprecation@^2.0.0, deprecation@^2.3.1:
+ version "2.3.1"
+ resolved "https://registry.yarnpkg.com/deprecation/-/deprecation-2.3.1.tgz#6368cbdb40abf3373b525ac87e4a260c3a700919"
+ integrity sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==
+
+des.js@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc"
+ integrity sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=
+ dependencies:
+ inherits "^2.0.1"
+ minimalistic-assert "^1.0.0"
+
+destroy@~1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80"
+ integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=
+
+detect-file@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7"
+ integrity sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=
+
+detect-libc@^1.0.2:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b"
+ integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=
+
+diff@^3.1.0:
+ version "3.5.0"
+ resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12"
+ integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==
+
+diffie-hellman@^5.0.0:
+ version "5.0.3"
+ resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875"
+ integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==
+ dependencies:
+ bn.js "^4.1.0"
+ miller-rabin "^4.0.0"
+ randombytes "^2.0.0"
+
+dir-glob@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f"
+ integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==
+ dependencies:
+ path-type "^4.0.0"
+
+doctrine@1.5.0:
+ version "1.5.0"
+ resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa"
+ integrity sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=
+ dependencies:
+ esutils "^2.0.2"
+ isarray "^1.0.0"
+
+doctrine@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d"
+ integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==
+ dependencies:
+ esutils "^2.0.2"
+
+doctrine@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961"
+ integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==
+ dependencies:
+ esutils "^2.0.2"
+
+domain-browser@^1.1.1:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda"
+ integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==
+
+dotenv-safe@^4.0.4:
+ version "4.0.4"
+ resolved "https://registry.yarnpkg.com/dotenv-safe/-/dotenv-safe-4.0.4.tgz#8b0e7ced8e70b1d3c5d874ef9420e406f39425b3"
+ integrity sha1-iw587Y5wsdPF2HTvlCDkBvOUJbM=
+ dependencies:
+ dotenv "^4.0.0"
+
+dotenv@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-4.0.0.tgz#864ef1379aced55ce6f95debecdce179f7a0cd1d"
+ integrity sha1-hk7xN5rO1Vzm+V3r7NzhefegzR0=
+
+dugite@^1.103.0:
+ version "1.103.0"
+ resolved "https://registry.yarnpkg.com/dugite/-/dugite-1.103.0.tgz#2229c83790782116f96b87763d9ea1a0f2a55842"
+ integrity sha512-8rKO/jQX2HKfSd5wNG/l3HnUfQPKqyC3+D+3CR5Go4+BJOyCPScQwiAVW+eeKLqHFOvjq/w67+ymMyPGxUqhIA==
+ dependencies:
+ checksum "^0.1.1"
+ got "^9.6.0"
+ mkdirp "^0.5.1"
+ progress "^2.0.3"
+ rimraf "^2.5.4"
+ tar "^4.4.7"
+
+duplexer3@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2"
+ integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=
+
+duplexer@~0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1"
+ integrity sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=
+
+duplexify@^3.4.2, duplexify@^3.6.0:
+ version "3.7.1"
+ resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309"
+ integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==
+ dependencies:
+ end-of-stream "^1.0.0"
+ inherits "^2.0.1"
+ readable-stream "^2.0.0"
+ stream-shift "^1.0.0"
+
+ecdsa-sig-formatter@1.0.11:
+ version "1.0.11"
+ resolved "https://registry.yarnpkg.com/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz#ae0f0fa2d85045ef14a817daa3ce9acd0489e5bf"
+ integrity sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==
+ dependencies:
+ safe-buffer "^5.0.1"
+
+ee-first@1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
+ integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=
+
+elliptic@^6.0.0:
+ version "6.5.4"
+ resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb"
+ integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==
+ dependencies:
+ bn.js "^4.11.9"
+ brorand "^1.1.0"
+ hash.js "^1.0.0"
+ hmac-drbg "^1.0.1"
+ inherits "^2.0.4"
+ minimalistic-assert "^1.0.1"
+ minimalistic-crypto-utils "^1.0.1"
+
+emoji-regex@^7.0.1:
+ version "7.0.3"
+ resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156"
+ integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==
+
+emoji-regex@^8.0.0:
+ version "8.0.0"
+ resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37"
+ integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==
+
+emoji-regex@^9.2.2:
+ version "9.2.2"
+ resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72"
+ integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==
+
+emojis-list@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389"
+ integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k=
+
+emojis-list@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78"
+ integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==
+
+encodeurl@~1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
+ integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=
+
+end-of-stream@^1.0.0, end-of-stream@^1.1.0:
+ version "1.4.4"
+ resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0"
+ integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==
+ dependencies:
+ once "^1.4.0"
+
+enhanced-resolve@^4.0.0, enhanced-resolve@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz#41c7e0bfdfe74ac1ffe1e57ad6a5c6c9f3742a7f"
+ integrity sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng==
+ dependencies:
+ graceful-fs "^4.1.2"
+ memory-fs "^0.4.0"
+ tapable "^1.0.0"
+
+enhanced-resolve@^4.1.1:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.2.0.tgz#5d43bda4a0fd447cb0ebbe71bef8deff8805ad0d"
+ integrity sha512-S7eiFb/erugyd1rLb6mQ3Vuq+EXHv5cpCkNqqIkYkBgN2QdFnyCZzFBleqwGEx4lgNGYij81BWnCrFNK7vxvjQ==
+ dependencies:
+ graceful-fs "^4.1.2"
+ memory-fs "^0.5.0"
+ tapable "^1.0.0"
+
+enquirer@^2.3.5:
+ version "2.3.6"
+ resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d"
+ integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==
+ dependencies:
+ ansi-colors "^4.1.1"
+
+ensure-posix-path@^1.0.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/ensure-posix-path/-/ensure-posix-path-1.1.1.tgz#3c62bdb19fa4681544289edb2b382adc029179ce"
+ integrity sha512-VWU0/zXzVbeJNXvME/5EmLuEj2TauvoaTz6aFYK1Z92JCBlDlZ3Gu0tuGR42kpW1754ywTs+QB0g5TP0oj9Zaw==
+
+entities@~2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/entities/-/entities-2.0.0.tgz#68d6084cab1b079767540d80e56a39b423e4abf4"
+ integrity sha512-D9f7V0JSRwIxlRI2mjMqufDrRDnx8p+eEOz7aUM9SuvF8gsBzra0/6tbjl1m8eQHrZlYj6PxqE00hZ1SAIKPLw==
+
+errno@^0.1.3, errno@~0.1.7:
+ version "0.1.7"
+ resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618"
+ integrity sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==
+ dependencies:
+ prr "~1.0.1"
+
+error-ex@^1.2.0, error-ex@^1.3.1:
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf"
+ integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==
+ dependencies:
+ is-arrayish "^0.2.1"
+
+es-abstract@^1.17.0, es-abstract@^1.17.0-next.1, es-abstract@^1.17.5:
+ version "1.17.6"
+ resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.6.tgz#9142071707857b2cacc7b89ecb670316c3e2d52a"
+ integrity sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==
+ dependencies:
+ es-to-primitive "^1.2.1"
+ function-bind "^1.1.1"
+ has "^1.0.3"
+ has-symbols "^1.0.1"
+ is-callable "^1.2.0"
+ is-regex "^1.1.0"
+ object-inspect "^1.7.0"
+ object-keys "^1.1.1"
+ object.assign "^4.1.0"
+ string.prototype.trimend "^1.0.1"
+ string.prototype.trimstart "^1.0.1"
+
+es-abstract@^1.7.0:
+ version "1.13.0"
+ resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.13.0.tgz#ac86145fdd5099d8dd49558ccba2eaf9b88e24e9"
+ integrity sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==
+ dependencies:
+ es-to-primitive "^1.2.0"
+ function-bind "^1.1.1"
+ has "^1.0.3"
+ is-callable "^1.1.4"
+ is-regex "^1.0.4"
+ object-keys "^1.0.12"
+
+es-to-primitive@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.0.tgz#edf72478033456e8dda8ef09e00ad9650707f377"
+ integrity sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==
+ dependencies:
+ is-callable "^1.1.4"
+ is-date-object "^1.0.1"
+ is-symbol "^1.0.2"
+
+es-to-primitive@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a"
+ integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==
+ dependencies:
+ is-callable "^1.1.4"
+ is-date-object "^1.0.1"
+ is-symbol "^1.0.2"
+
+es6-object-assign@^1.0.3:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/es6-object-assign/-/es6-object-assign-1.1.0.tgz#c2c3582656247c39ea107cb1e6652b6f9f24523c"
+ integrity sha1-wsNYJlYkfDnqEHyx5mUrb58kUjw=
+
+escape-html@~1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
+ integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=
+
+escape-string-regexp@^1.0.5:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
+ integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
+
+eslint-config-standard-jsx@8.1.0:
+ version "8.1.0"
+ resolved "https://registry.yarnpkg.com/eslint-config-standard-jsx/-/eslint-config-standard-jsx-8.1.0.tgz#314c62a0e6f51f75547f89aade059bec140edfc7"
+ integrity sha512-ULVC8qH8qCqbU792ZOO6DaiaZyHNS/5CZt3hKqHkEhVlhPEPN3nfBqqxJCyp59XrjIBZPu1chMYe9T2DXZ7TMw==
+
+eslint-config-standard@14.1.1, eslint-config-standard@^14.1.1:
+ version "14.1.1"
+ resolved "https://registry.yarnpkg.com/eslint-config-standard/-/eslint-config-standard-14.1.1.tgz#830a8e44e7aef7de67464979ad06b406026c56ea"
+ integrity sha512-Z9B+VR+JIXRxz21udPTL9HpFMyoMUEeX1G251EQ6e05WD9aPVtVBn09XUmZ259wCMlCDmYDSZG62Hhm+ZTJcUg==
+
+eslint-import-resolver-node@^0.3.2, eslint-import-resolver-node@^0.3.3:
+ version "0.3.4"
+ resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz#85ffa81942c25012d8231096ddf679c03042c717"
+ integrity sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA==
+ dependencies:
+ debug "^2.6.9"
+ resolve "^1.13.1"
+
+eslint-module-utils@^2.4.0, eslint-module-utils@^2.6.0:
+ version "2.6.0"
+ resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz#579ebd094f56af7797d19c9866c9c9486629bfa6"
+ integrity sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA==
+ dependencies:
+ debug "^2.6.9"
+ pkg-dir "^2.0.0"
+
+eslint-plugin-es@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-es/-/eslint-plugin-es-2.0.0.tgz#0f5f5da5f18aa21989feebe8a73eadefb3432976"
+ integrity sha512-f6fceVtg27BR02EYnBhgWLFQfK6bN4Ll0nQFrBHOlCsAyxeZkn0NHns5O0YZOPrV1B3ramd6cgFwaoFLcSkwEQ==
+ dependencies:
+ eslint-utils "^1.4.2"
+ regexpp "^3.0.0"
+
+eslint-plugin-es@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz#75a7cdfdccddc0589934aeeb384175f221c57893"
+ integrity sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==
+ dependencies:
+ eslint-utils "^2.0.0"
+ regexpp "^3.0.0"
+
+eslint-plugin-import@^2.22.0:
+ version "2.22.0"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.22.0.tgz#92f7736fe1fde3e2de77623c838dd992ff5ffb7e"
+ integrity sha512-66Fpf1Ln6aIS5Gr/55ts19eUuoDhAbZgnr6UxK5hbDx6l/QgQgx61AePq+BV4PP2uXQFClgMVzep5zZ94qqsxg==
+ dependencies:
+ array-includes "^3.1.1"
+ array.prototype.flat "^1.2.3"
+ contains-path "^0.1.0"
+ debug "^2.6.9"
+ doctrine "1.5.0"
+ eslint-import-resolver-node "^0.3.3"
+ eslint-module-utils "^2.6.0"
+ has "^1.0.3"
+ minimatch "^3.0.4"
+ object.values "^1.1.1"
+ read-pkg-up "^2.0.0"
+ resolve "^1.17.0"
+ tsconfig-paths "^3.9.0"
+
+eslint-plugin-import@~2.18.0:
+ version "2.18.2"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.18.2.tgz#02f1180b90b077b33d447a17a2326ceb400aceb6"
+ integrity sha512-5ohpsHAiUBRNaBWAF08izwUGlbrJoJJ+W9/TBwsGoR1MnlgfwMIKrFeSjWbt6moabiXW9xNvtFz+97KHRfI4HQ==
+ dependencies:
+ array-includes "^3.0.3"
+ contains-path "^0.1.0"
+ debug "^2.6.9"
+ doctrine "1.5.0"
+ eslint-import-resolver-node "^0.3.2"
+ eslint-module-utils "^2.4.0"
+ has "^1.0.3"
+ minimatch "^3.0.4"
+ object.values "^1.1.0"
+ read-pkg-up "^2.0.0"
+ resolve "^1.11.0"
+
+eslint-plugin-mocha@^7.0.1:
+ version "7.0.1"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-mocha/-/eslint-plugin-mocha-7.0.1.tgz#b2e9e8ebef7836f999a83f8bab25d0e0c05f0d28"
+ integrity sha512-zkQRW9UigRaayGm/pK9TD5RjccKXSgQksNtpsXbG9b6L5I+jNx7m98VUbZ4w1H1ArlNA+K7IOH+z8TscN6sOYg==
+ dependencies:
+ eslint-utils "^2.0.0"
+ ramda "^0.27.0"
+
+eslint-plugin-node@^11.1.0:
+ version "11.1.0"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz#c95544416ee4ada26740a30474eefc5402dc671d"
+ integrity sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==
+ dependencies:
+ eslint-plugin-es "^3.0.0"
+ eslint-utils "^2.0.0"
+ ignore "^5.1.1"
+ minimatch "^3.0.4"
+ resolve "^1.10.1"
+ semver "^6.1.0"
+
+eslint-plugin-node@~10.0.0:
+ version "10.0.0"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-node/-/eslint-plugin-node-10.0.0.tgz#fd1adbc7a300cf7eb6ac55cf4b0b6fc6e577f5a6"
+ integrity sha512-1CSyM/QCjs6PXaT18+zuAXsjXGIGo5Rw630rSKwokSs2jrYURQc4R5JZpoanNCqwNmepg+0eZ9L7YiRUJb8jiQ==
+ dependencies:
+ eslint-plugin-es "^2.0.0"
+ eslint-utils "^1.4.2"
+ ignore "^5.1.1"
+ minimatch "^3.0.4"
+ resolve "^1.10.1"
+ semver "^6.1.0"
+
+eslint-plugin-promise@~4.2.1:
+ version "4.2.1"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-4.2.1.tgz#845fd8b2260ad8f82564c1222fce44ad71d9418a"
+ integrity sha512-VoM09vT7bfA7D+upt+FjeBO5eHIJQBUWki1aPvB+vbNiHS3+oGIJGIeyBtKQTME6UPXXy3vV07OL1tHd3ANuDw==
+
+eslint-plugin-react@~7.14.2:
+ version "7.14.3"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.14.3.tgz#911030dd7e98ba49e1b2208599571846a66bdf13"
+ integrity sha512-EzdyyBWC4Uz2hPYBiEJrKCUi2Fn+BJ9B/pJQcjw5X+x/H2Nm59S4MJIvL4O5NEE0+WbnQwEBxWY03oUk+Bc3FA==
+ dependencies:
+ array-includes "^3.0.3"
+ doctrine "^2.1.0"
+ has "^1.0.3"
+ jsx-ast-utils "^2.1.0"
+ object.entries "^1.1.0"
+ object.fromentries "^2.0.0"
+ object.values "^1.1.0"
+ prop-types "^15.7.2"
+ resolve "^1.10.1"
+
+eslint-plugin-standard@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-standard/-/eslint-plugin-standard-4.0.1.tgz#ff0519f7ffaff114f76d1bd7c3996eef0f6e20b4"
+ integrity sha512-v/KBnfyaOMPmZc/dmc6ozOdWqekGp7bBGq4jLAecEfPGmfKiWS4sA8sC0LqiV9w5qmXAtXVn4M3p1jSyhY85SQ==
+
+eslint-plugin-standard@~4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-standard/-/eslint-plugin-standard-4.0.0.tgz#f845b45109c99cd90e77796940a344546c8f6b5c"
+ integrity sha512-OwxJkR6TQiYMmt1EsNRMe5qG3GsbjlcOhbGUBY4LtavF9DsLaTcoR+j2Tdjqi23oUwKNUqX7qcn5fPStafMdlA==
+
+eslint-plugin-typescript@^0.14.0:
+ version "0.14.0"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-typescript/-/eslint-plugin-typescript-0.14.0.tgz#068549c3f4c7f3f85d88d398c29fa96bf500884c"
+ integrity sha512-2u1WnnDF2mkWWgU1lFQ2RjypUlmRoBEvQN02y9u+IL12mjWlkKFGEBnVsjs9Y8190bfPQCvWly1c2rYYUSOxWw==
+ dependencies:
+ requireindex "~1.1.0"
+
+eslint-scope@^4.0.3:
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848"
+ integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==
+ dependencies:
+ esrecurse "^4.1.0"
+ estraverse "^4.1.1"
+
+eslint-scope@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.0.0.tgz#e87c8887c73e8d1ec84f1ca591645c358bfc8fb9"
+ integrity sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw==
+ dependencies:
+ esrecurse "^4.1.0"
+ estraverse "^4.1.1"
+
+eslint-scope@^5.1.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.0.tgz#d0f971dfe59c69e0cada684b23d49dbf82600ce5"
+ integrity sha512-iiGRvtxWqgtx5m8EyQUJihBloE4EnYeGE/bz1wSPwJE6tZuJUtHlhqDM4Xj2ukE8Dyy1+HCZ4hE0fzIVMzb58w==
+ dependencies:
+ esrecurse "^4.1.0"
+ estraverse "^4.1.1"
+
+eslint-utils@^1.4.2, eslint-utils@^1.4.3:
+ version "1.4.3"
+ resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.3.tgz#74fec7c54d0776b6f67e0251040b5806564e981f"
+ integrity sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==
+ dependencies:
+ eslint-visitor-keys "^1.1.0"
+
+eslint-utils@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27"
+ integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==
+ dependencies:
+ eslint-visitor-keys "^1.1.0"
+
+eslint-visitor-keys@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz#e2a82cea84ff246ad6fb57f9bde5b46621459ec2"
+ integrity sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==
+
+eslint-visitor-keys@^1.2.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e"
+ integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==
+
+eslint-visitor-keys@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz#21fdc8fbcd9c795cc0321f0563702095751511a8"
+ integrity sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ==
+
+eslint@^7.4.0:
+ version "7.4.0"
+ resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.4.0.tgz#4e35a2697e6c1972f9d6ef2b690ad319f80f206f"
+ integrity sha512-gU+lxhlPHu45H3JkEGgYhWhkR9wLHHEXC9FbWFnTlEkbKyZKWgWRLgf61E8zWmBuI6g5xKBph9ltg3NtZMVF8g==
+ dependencies:
+ "@babel/code-frame" "^7.0.0"
+ ajv "^6.10.0"
+ chalk "^4.0.0"
+ cross-spawn "^7.0.2"
+ debug "^4.0.1"
+ doctrine "^3.0.0"
+ enquirer "^2.3.5"
+ eslint-scope "^5.1.0"
+ eslint-utils "^2.0.0"
+ eslint-visitor-keys "^1.2.0"
+ espree "^7.1.0"
+ esquery "^1.2.0"
+ esutils "^2.0.2"
+ file-entry-cache "^5.0.1"
+ functional-red-black-tree "^1.0.1"
+ glob-parent "^5.0.0"
+ globals "^12.1.0"
+ ignore "^4.0.6"
+ import-fresh "^3.0.0"
+ imurmurhash "^0.1.4"
+ is-glob "^4.0.0"
+ js-yaml "^3.13.1"
+ json-stable-stringify-without-jsonify "^1.0.1"
+ levn "^0.4.1"
+ lodash "^4.17.14"
+ minimatch "^3.0.4"
+ natural-compare "^1.4.0"
+ optionator "^0.9.1"
+ progress "^2.0.0"
+ regexpp "^3.1.0"
+ semver "^7.2.1"
+ strip-ansi "^6.0.0"
+ strip-json-comments "^3.1.0"
+ table "^5.2.3"
+ text-table "^0.2.0"
+ v8-compile-cache "^2.0.3"
+
+eslint@~6.8.0:
+ version "6.8.0"
+ resolved "https://registry.yarnpkg.com/eslint/-/eslint-6.8.0.tgz#62262d6729739f9275723824302fb227c8c93ffb"
+ integrity sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==
+ dependencies:
+ "@babel/code-frame" "^7.0.0"
+ ajv "^6.10.0"
+ chalk "^2.1.0"
+ cross-spawn "^6.0.5"
+ debug "^4.0.1"
+ doctrine "^3.0.0"
+ eslint-scope "^5.0.0"
+ eslint-utils "^1.4.3"
+ eslint-visitor-keys "^1.1.0"
+ espree "^6.1.2"
+ esquery "^1.0.1"
+ esutils "^2.0.2"
+ file-entry-cache "^5.0.1"
+ functional-red-black-tree "^1.0.1"
+ glob-parent "^5.0.0"
+ globals "^12.1.0"
+ ignore "^4.0.6"
+ import-fresh "^3.0.0"
+ imurmurhash "^0.1.4"
+ inquirer "^7.0.0"
+ is-glob "^4.0.0"
+ js-yaml "^3.13.1"
+ json-stable-stringify-without-jsonify "^1.0.1"
+ levn "^0.3.0"
+ lodash "^4.17.14"
+ minimatch "^3.0.4"
+ mkdirp "^0.5.1"
+ natural-compare "^1.4.0"
+ optionator "^0.8.3"
+ progress "^2.0.0"
+ regexpp "^2.0.1"
+ semver "^6.1.2"
+ strip-ansi "^5.2.0"
+ strip-json-comments "^3.0.1"
+ table "^5.2.3"
+ text-table "^0.2.0"
+ v8-compile-cache "^2.0.3"
+
+espree@^6.1.2:
+ version "6.2.1"
+ resolved "https://registry.yarnpkg.com/espree/-/espree-6.2.1.tgz#77fc72e1fd744a2052c20f38a5b575832e82734a"
+ integrity sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==
+ dependencies:
+ acorn "^7.1.1"
+ acorn-jsx "^5.2.0"
+ eslint-visitor-keys "^1.1.0"
+
+espree@^7.1.0:
+ version "7.1.0"
+ resolved "https://registry.yarnpkg.com/espree/-/espree-7.1.0.tgz#a9c7f18a752056735bf1ba14cb1b70adc3a5ce1c"
+ integrity sha512-dcorZSyfmm4WTuTnE5Y7MEN1DyoPYy1ZR783QW1FJoenn7RailyWFsq/UL6ZAAA7uXurN9FIpYyUs3OfiIW+Qw==
+ dependencies:
+ acorn "^7.2.0"
+ acorn-jsx "^5.2.0"
+ eslint-visitor-keys "^1.2.0"
+
+esprima@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
+ integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
+
+esquery@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.1.tgz#406c51658b1f5991a5f9b62b1dc25b00e3e5c708"
+ integrity sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==
+ dependencies:
+ estraverse "^4.0.0"
+
+esquery@^1.2.0:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.3.1.tgz#b78b5828aa8e214e29fb74c4d5b752e1c033da57"
+ integrity sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==
+ dependencies:
+ estraverse "^5.1.0"
+
+esrecurse@^4.1.0:
+ version "4.2.1"
+ resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf"
+ integrity sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==
+ dependencies:
+ estraverse "^4.1.0"
+
+estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1:
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d"
+ integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==
+
+estraverse@^5.1.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.1.0.tgz#374309d39fd935ae500e7b92e8a6b4c720e59642"
+ integrity sha512-FyohXK+R0vE+y1nHLoBM7ZTyqRpqAlhdZHCWIWEviFLiGB8b04H6bQs8G+XTthacvT8VuwvteiP7RJSxMs8UEw==
+
+esutils@^2.0.2:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64"
+ integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==
+
+etag@~1.8.1:
+ version "1.8.1"
+ resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887"
+ integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=
+
+events-to-array@^1.0.1:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/events-to-array/-/events-to-array-1.1.2.tgz#2d41f563e1fe400ed4962fe1a4d5c6a7539df7f6"
+ integrity sha1-LUH1Y+H+QA7Uli/hpNXGp1Od9/Y=
+
+events@1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924"
+ integrity sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=
+
+events@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/events/-/events-3.0.0.tgz#9a0a0dfaf62893d92b875b8f2698ca4114973e88"
+ integrity sha512-Dc381HFWJzEOhQ+d8pkNon++bk9h6cdAoAj4iE6Q4y6xgTzySWXlKn05/TVNpjnfRqi/X0EpJEJohPjNI3zpVA==
+
+evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02"
+ integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==
+ dependencies:
+ md5.js "^1.3.4"
+ safe-buffer "^5.1.1"
+
+execa@^4.0.1:
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/execa/-/execa-4.0.3.tgz#0a34dabbad6d66100bd6f2c576c8669403f317f2"
+ integrity sha512-WFDXGHckXPWZX19t1kCsXzOpqX9LWYNqn4C+HqZlk/V0imTkzJZqf87ZBhvpHaftERYknpk0fjSylnXVlVgI0A==
+ dependencies:
+ cross-spawn "^7.0.0"
+ get-stream "^5.0.0"
+ human-signals "^1.1.1"
+ is-stream "^2.0.0"
+ merge-stream "^2.0.0"
+ npm-run-path "^4.0.0"
+ onetime "^5.1.0"
+ signal-exit "^3.0.2"
+ strip-final-newline "^2.0.0"
+
+expand-brackets@^2.1.4:
+ version "2.1.4"
+ resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622"
+ integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI=
+ dependencies:
+ debug "^2.3.3"
+ define-property "^0.2.5"
+ extend-shallow "^2.0.1"
+ posix-character-classes "^0.1.0"
+ regex-not "^1.0.0"
+ snapdragon "^0.8.1"
+ to-regex "^3.0.1"
+
+expand-tilde@^2.0.0, expand-tilde@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502"
+ integrity sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=
+ dependencies:
+ homedir-polyfill "^1.0.1"
+
+express@^4.16.4:
+ version "4.17.1"
+ resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134"
+ integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==
+ dependencies:
+ accepts "~1.3.7"
+ array-flatten "1.1.1"
+ body-parser "1.19.0"
+ content-disposition "0.5.3"
+ content-type "~1.0.4"
+ cookie "0.4.0"
+ cookie-signature "1.0.6"
+ debug "2.6.9"
+ depd "~1.1.2"
+ encodeurl "~1.0.2"
+ escape-html "~1.0.3"
+ etag "~1.8.1"
+ finalhandler "~1.1.2"
+ fresh "0.5.2"
+ merge-descriptors "1.0.1"
+ methods "~1.1.2"
+ on-finished "~2.3.0"
+ parseurl "~1.3.3"
+ path-to-regexp "0.1.7"
+ proxy-addr "~2.0.5"
+ qs "6.7.0"
+ range-parser "~1.2.1"
+ safe-buffer "5.1.2"
+ send "0.17.1"
+ serve-static "1.14.1"
+ setprototypeof "1.1.1"
+ statuses "~1.5.0"
+ type-is "~1.6.18"
+ utils-merge "1.0.1"
+ vary "~1.1.2"
+
+extend-shallow@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f"
+ integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=
+ dependencies:
+ is-extendable "^0.1.0"
+
+extend-shallow@^3.0.0, extend-shallow@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8"
+ integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=
+ dependencies:
+ assign-symbols "^1.0.0"
+ is-extendable "^1.0.1"
+
+extend@^3.0.0:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa"
+ integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==
+
+external-editor@^3.0.3:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495"
+ integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==
+ dependencies:
+ chardet "^0.7.0"
+ iconv-lite "^0.4.24"
+ tmp "^0.0.33"
+
+extglob@^2.0.4:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543"
+ integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==
+ dependencies:
+ array-unique "^0.3.2"
+ define-property "^1.0.0"
+ expand-brackets "^2.1.4"
+ extend-shallow "^2.0.1"
+ fragment-cache "^0.2.1"
+ regex-not "^1.0.0"
+ snapdragon "^0.8.1"
+ to-regex "^3.0.1"
+
+fast-deep-equal@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49"
+ integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=
+
+fast-deep-equal@^3.1.1:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz#545145077c501491e33b15ec408c294376e94ae4"
+ integrity sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==
+
+fast-glob@^3.1.1:
+ version "3.2.4"
+ resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.4.tgz#d20aefbf99579383e7f3cc66529158c9b98554d3"
+ integrity sha512-kr/Oo6PX51265qeuCYsyGypiO5uJFgBS0jksyG7FUeCyQzNwYnzrNIMR1NXfkZXsMYXYLRAHgISHBz8gQcxKHQ==
+ dependencies:
+ "@nodelib/fs.stat" "^2.0.2"
+ "@nodelib/fs.walk" "^1.2.3"
+ glob-parent "^5.1.0"
+ merge2 "^1.3.0"
+ micromatch "^4.0.2"
+ picomatch "^2.2.1"
+
+fast-json-stable-stringify@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2"
+ integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I=
+
+fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6:
+ version "2.0.6"
+ resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
+ integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=
+
+fastq@^1.6.0:
+ version "1.8.0"
+ resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.8.0.tgz#550e1f9f59bbc65fe185cb6a9b4d95357107f481"
+ integrity sha512-SMIZoZdLh/fgofivvIkmknUXyPnvxRE3DhtZ5Me3Mrsk5gyPL42F0xr51TdRXskBxHfMp+07bcYzfsYEsSQA9Q==
+ dependencies:
+ reusify "^1.0.4"
+
+fault@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/fault/-/fault-2.0.0.tgz#ad2198a6e28e344dcda76a7b32406b1039f0b707"
+ integrity sha512-JsDj9LFcoC+4ChII1QpXPA7YIaY8zmqPYw7h9j5n7St7a0BBKfNnwEBAUQRBx70o2q4rs+BeSNHk8Exm6xE7fQ==
+ dependencies:
+ format "^0.2.0"
+
+figgy-pudding@^3.5.1:
+ version "3.5.2"
+ resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e"
+ integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==
+
+figures@^3.0.0, figures@^3.2.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af"
+ integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==
+ dependencies:
+ escape-string-regexp "^1.0.5"
+
+file-entry-cache@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c"
+ integrity sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==
+ dependencies:
+ flat-cache "^2.0.1"
+
+fill-range@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7"
+ integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=
+ dependencies:
+ extend-shallow "^2.0.1"
+ is-number "^3.0.0"
+ repeat-string "^1.6.1"
+ to-regex-range "^2.1.0"
+
+fill-range@^7.0.1:
+ version "7.0.1"
+ resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40"
+ integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==
+ dependencies:
+ to-regex-range "^5.0.1"
+
+finalhandler@~1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d"
+ integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==
+ dependencies:
+ debug "2.6.9"
+ encodeurl "~1.0.2"
+ escape-html "~1.0.3"
+ on-finished "~2.3.0"
+ parseurl "~1.3.3"
+ statuses "~1.5.0"
+ unpipe "~1.0.0"
+
+find-cache-dir@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7"
+ integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==
+ dependencies:
+ commondir "^1.0.1"
+ make-dir "^2.0.0"
+ pkg-dir "^3.0.0"
+
+find-root@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4"
+ integrity sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==
+
+find-up@^2.0.0, find-up@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7"
+ integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c=
+ dependencies:
+ locate-path "^2.0.0"
+
+find-up@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73"
+ integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==
+ dependencies:
+ locate-path "^3.0.0"
+
+findup-sync@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-3.0.0.tgz#17b108f9ee512dfb7a5c7f3c8b27ea9e1a9c08d1"
+ integrity sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==
+ dependencies:
+ detect-file "^1.0.0"
+ is-glob "^4.0.0"
+ micromatch "^3.0.4"
+ resolve-dir "^1.0.1"
+
+flat-cache@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0"
+ integrity sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==
+ dependencies:
+ flatted "^2.0.0"
+ rimraf "2.6.3"
+ write "1.0.3"
+
+flatted@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.1.tgz#69e57caa8f0eacbc281d2e2cb458d46fdb449e08"
+ integrity sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==
+
+flush-write-stream@^1.0.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8"
+ integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==
+ dependencies:
+ inherits "^2.0.3"
+ readable-stream "^2.3.6"
+
+folder-hash@^2.1.1:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/folder-hash/-/folder-hash-2.1.2.tgz#7109f9cd0cbca271936d1b5544b156d6571e6cfd"
+ integrity sha512-PmMwEZyNN96EMshf7sek4OIB7ADNsHOJ7VIw7pO0PBI0BNfEsi7U8U56TBjjqqwQ0WuBv8se0HEfmbw5b/Rk+w==
+ dependencies:
+ debug "^3.1.0"
+ graceful-fs "~4.1.11"
+ minimatch "~3.0.4"
+
+for-in@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
+ integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=
+
+form-data@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f"
+ integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==
+ dependencies:
+ asynckit "^0.4.0"
+ combined-stream "^1.0.8"
+ mime-types "^2.1.12"
+
+form-data@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452"
+ integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==
+ dependencies:
+ asynckit "^0.4.0"
+ combined-stream "^1.0.8"
+ mime-types "^2.1.12"
+
+format@^0.2.0:
+ version "0.2.2"
+ resolved "https://registry.yarnpkg.com/format/-/format-0.2.2.tgz#d6170107e9efdc4ed30c9dc39016df942b5cb58b"
+ integrity sha1-1hcBB+nv3E7TDJ3DkBbflCtctYs=
+
+forwarded@~0.1.2:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84"
+ integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=
+
+fragment-cache@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19"
+ integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=
+ dependencies:
+ map-cache "^0.2.2"
+
+fresh@0.5.2:
+ version "0.5.2"
+ resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7"
+ integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=
+
+from2@^2.1.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af"
+ integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=
+ dependencies:
+ inherits "^2.0.1"
+ readable-stream "^2.0.0"
+
+fs-extra@^7.0.1:
+ version "7.0.1"
+ resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9"
+ integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==
+ dependencies:
+ graceful-fs "^4.1.2"
+ jsonfile "^4.0.0"
+ universalify "^0.1.0"
+
+fs-extra@^8.1.0:
+ version "8.1.0"
+ resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0"
+ integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==
+ dependencies:
+ graceful-fs "^4.2.0"
+ jsonfile "^4.0.0"
+ universalify "^0.1.0"
+
+fs-extra@^9.0.1:
+ version "9.0.1"
+ resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.0.1.tgz#910da0062437ba4c39fedd863f1675ccfefcb9fc"
+ integrity sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ==
+ dependencies:
+ at-least-node "^1.0.0"
+ graceful-fs "^4.2.0"
+ jsonfile "^6.0.1"
+ universalify "^1.0.0"
+
+fs-minipass@^1.2.7:
+ version "1.2.7"
+ resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7"
+ integrity sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==
+ dependencies:
+ minipass "^2.6.0"
+
+fs-write-stream-atomic@^1.0.8:
+ version "1.0.10"
+ resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9"
+ integrity sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=
+ dependencies:
+ graceful-fs "^4.1.2"
+ iferr "^0.1.5"
+ imurmurhash "^0.1.4"
+ readable-stream "1 || 2"
+
+fs.realpath@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
+ integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
+
+fsevents@^1.2.7:
+ version "1.2.9"
+ resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.9.tgz#3f5ed66583ccd6f400b5a00db6f7e861363e388f"
+ integrity sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw==
+ dependencies:
+ nan "^2.12.1"
+ node-pre-gyp "^0.12.0"
+
+fsevents@~2.1.2:
+ version "2.1.3"
+ resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e"
+ integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==
+
+fsevents@~2.3.2:
+ version "2.3.2"
+ resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a"
+ integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==
+
+function-bind@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
+ integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
+
+functional-red-black-tree@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327"
+ integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=
+
+gauge@~2.7.3:
+ version "2.7.4"
+ resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7"
+ integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=
+ dependencies:
+ aproba "^1.0.3"
+ console-control-strings "^1.0.0"
+ has-unicode "^2.0.0"
+ object-assign "^4.1.0"
+ signal-exit "^3.0.0"
+ string-width "^1.0.1"
+ strip-ansi "^3.0.1"
+ wide-align "^1.1.0"
+
+get-caller-file@^2.0.1:
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e"
+ integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
+
+get-func-name@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41"
+ integrity sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=
+
+get-own-enumerable-property-symbols@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.0.tgz#b877b49a5c16aefac3655f2ed2ea5b684df8d203"
+ integrity sha512-CIJYJC4GGF06TakLg8z4GQKvDsx9EMspVxOYih7LerEL/WosUnFIww45CGfxfeKHqlg3twgUrYRT1O3WQqjGCg==
+
+get-stdin@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-7.0.0.tgz#8d5de98f15171a125c5e516643c7a6d0ea8a96f6"
+ integrity sha512-zRKcywvrXlXsA0v0i9Io4KDRaAw7+a1ZpjRwl9Wox8PFlVCCHra7E9c4kqXCoCM9nR5tBkaTTZRBoCm60bFqTQ==
+
+get-stdin@~8.0.0:
+ version "8.0.0"
+ resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-8.0.0.tgz#cbad6a73feb75f6eeb22ba9e01f89aa28aa97a53"
+ integrity sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==
+
+get-stream@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14"
+ integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=
+
+get-stream@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5"
+ integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==
+ dependencies:
+ pump "^3.0.0"
+
+get-stream@^5.0.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.1.0.tgz#01203cdc92597f9b909067c3e656cc1f4d3c4dc9"
+ integrity sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw==
+ dependencies:
+ pump "^3.0.0"
+
+get-stream@^5.1.0:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3"
+ integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==
+ dependencies:
+ pump "^3.0.0"
+
+get-value@^2.0.3, get-value@^2.0.6:
+ version "2.0.6"
+ resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28"
+ integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=
+
+glob-parent@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae"
+ integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=
+ dependencies:
+ is-glob "^3.1.0"
+ path-dirname "^1.0.0"
+
+glob-parent@^5.0.0, glob-parent@^5.1.0, glob-parent@~5.1.0:
+ version "5.1.1"
+ resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229"
+ integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==
+ dependencies:
+ is-glob "^4.0.1"
+
+glob-parent@~5.1.2:
+ version "5.1.2"
+ resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
+ integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
+ dependencies:
+ is-glob "^4.0.1"
+
+glob@^7.0.0, glob@^7.0.5, glob@^7.1.4:
+ version "7.1.4"
+ resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255"
+ integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==
+ dependencies:
+ fs.realpath "^1.0.0"
+ inflight "^1.0.4"
+ inherits "2"
+ minimatch "^3.0.4"
+ once "^1.3.0"
+ path-is-absolute "^1.0.0"
+
+glob@^7.1.3:
+ version "7.1.5"
+ resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.5.tgz#6714c69bee20f3c3e64c4dd905553e532b40cdc0"
+ integrity sha512-J9dlskqUXK1OeTOYBEn5s8aMukWMwWfs+rPTn/jn50Ux4MNXVhubL1wu/j2t+H4NVI+cXEcCaYellqaPVGXNqQ==
+ dependencies:
+ fs.realpath "^1.0.0"
+ inflight "^1.0.4"
+ inherits "2"
+ minimatch "^3.0.4"
+ once "^1.3.0"
+ path-is-absolute "^1.0.0"
+
+glob@^7.1.6, glob@~7.1.6:
+ version "7.1.6"
+ resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6"
+ integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==
+ dependencies:
+ fs.realpath "^1.0.0"
+ inflight "^1.0.4"
+ inherits "2"
+ minimatch "^3.0.4"
+ once "^1.3.0"
+ path-is-absolute "^1.0.0"
+
+global-modules@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea"
+ integrity sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==
+ dependencies:
+ global-prefix "^1.0.1"
+ is-windows "^1.0.1"
+ resolve-dir "^1.0.0"
+
+global-modules@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780"
+ integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==
+ dependencies:
+ global-prefix "^3.0.0"
+
+global-prefix@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe"
+ integrity sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=
+ dependencies:
+ expand-tilde "^2.0.2"
+ homedir-polyfill "^1.0.1"
+ ini "^1.3.4"
+ is-windows "^1.0.1"
+ which "^1.2.14"
+
+global-prefix@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-3.0.0.tgz#fc85f73064df69f50421f47f883fe5b913ba9b97"
+ integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==
+ dependencies:
+ ini "^1.3.5"
+ kind-of "^6.0.2"
+ which "^1.3.1"
+
+globals@^12.1.0:
+ version "12.4.0"
+ resolved "https://registry.yarnpkg.com/globals/-/globals-12.4.0.tgz#a18813576a41b00a24a97e7f815918c2e19925f8"
+ integrity sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==
+ dependencies:
+ type-fest "^0.8.1"
+
+globby@^11.0.0, globby@^11.0.1:
+ version "11.0.1"
+ resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.1.tgz#9a2bf107a068f3ffeabc49ad702c79ede8cfd357"
+ integrity sha512-iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ==
+ dependencies:
+ array-union "^2.1.0"
+ dir-glob "^3.0.1"
+ fast-glob "^3.1.1"
+ ignore "^5.1.4"
+ merge2 "^1.3.0"
+ slash "^3.0.0"
+
+got@^6.3.0:
+ version "6.7.1"
+ resolved "https://registry.yarnpkg.com/got/-/got-6.7.1.tgz#240cd05785a9a18e561dc1b44b41c763ef1e8db0"
+ integrity sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=
+ dependencies:
+ create-error-class "^3.0.0"
+ duplexer3 "^0.1.4"
+ get-stream "^3.0.0"
+ is-redirect "^1.0.0"
+ is-retry-allowed "^1.0.0"
+ is-stream "^1.0.0"
+ lowercase-keys "^1.0.0"
+ safe-buffer "^5.0.1"
+ timed-out "^4.0.0"
+ unzip-response "^2.0.1"
+ url-parse-lax "^1.0.0"
+
+got@^9.6.0:
+ version "9.6.0"
+ resolved "https://registry.yarnpkg.com/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85"
+ integrity sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==
+ dependencies:
+ "@sindresorhus/is" "^0.14.0"
+ "@szmarczak/http-timer" "^1.1.2"
+ cacheable-request "^6.0.0"
+ decompress-response "^3.3.0"
+ duplexer3 "^0.1.4"
+ get-stream "^4.1.0"
+ lowercase-keys "^1.0.1"
+ mimic-response "^1.0.1"
+ p-cancelable "^1.0.0"
+ to-readable-stream "^1.0.0"
+ url-parse-lax "^3.0.0"
+
+graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.9:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.0.tgz#8d8fdc73977cb04104721cb53666c1ca64cd328b"
+ integrity sha512-jpSvDPV4Cq/bgtpndIWbI5hmYxhQGHPC4d4cqBPb4DLniCfhJokdXhwhaDuLBGLQdvvRum/UiX6ECVIPvDXqdg==
+
+graceful-fs@^4.1.6, graceful-fs@^4.2.0:
+ version "4.2.3"
+ resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423"
+ integrity sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==
+
+graceful-fs@~4.1.11:
+ version "4.1.15"
+ resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00"
+ integrity sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==
+
+has-flag@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
+ integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0=
+
+has-flag@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
+ integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
+
+has-flag@^5.0.0:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-5.0.1.tgz#5483db2ae02a472d1d0691462fc587d1843cd940"
+ integrity sha512-CsNUt5x9LUdx6hnk/E2SZLsDyvfqANZSUq4+D3D8RzDJ2M+HDTIkF60ibS1vHaK55vzgiZw1bEPFG9yH7l33wA==
+
+has-symbols@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44"
+ integrity sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=
+
+has-symbols@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8"
+ integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==
+
+has-unicode@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9"
+ integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=
+
+has-value@^0.3.1:
+ version "0.3.1"
+ resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f"
+ integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=
+ dependencies:
+ get-value "^2.0.3"
+ has-values "^0.1.4"
+ isobject "^2.0.0"
+
+has-value@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177"
+ integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=
+ dependencies:
+ get-value "^2.0.6"
+ has-values "^1.0.0"
+ isobject "^3.0.0"
+
+has-values@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771"
+ integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E=
+
+has-values@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f"
+ integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=
+ dependencies:
+ is-number "^3.0.0"
+ kind-of "^4.0.0"
+
+has@^1.0.1, has@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
+ integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==
+ dependencies:
+ function-bind "^1.1.1"
+
+hash-base@^3.0.0:
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918"
+ integrity sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=
+ dependencies:
+ inherits "^2.0.1"
+ safe-buffer "^5.0.1"
+
+hash.js@^1.0.0, hash.js@^1.0.3:
+ version "1.1.7"
+ resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42"
+ integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==
+ dependencies:
+ inherits "^2.0.3"
+ minimalistic-assert "^1.0.1"
+
+highlight.js@^9.7.0:
+ version "9.18.5"
+ resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-9.18.5.tgz#d18a359867f378c138d6819edfc2a8acd5f29825"
+ integrity sha512-a5bFyofd/BHCX52/8i8uJkjr9DYwXIPnM/plwI6W7ezItLGqzt7X2G2nXuYSfsIJdkwwj/g9DG1LkcGJI/dDoA==
+
+hmac-drbg@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1"
+ integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=
+ dependencies:
+ hash.js "^1.0.3"
+ minimalistic-assert "^1.0.0"
+ minimalistic-crypto-utils "^1.0.1"
+
+homedir-polyfill@^1.0.1:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8"
+ integrity sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==
+ dependencies:
+ parse-passwd "^1.0.0"
+
+hosted-git-info@^2.1.4:
+ version "2.8.9"
+ resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9"
+ integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==
+
+http-cache-semantics@^4.0.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390"
+ integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==
+
+http-errors@1.7.2:
+ version "1.7.2"
+ resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f"
+ integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==
+ dependencies:
+ depd "~1.1.2"
+ inherits "2.0.3"
+ setprototypeof "1.1.1"
+ statuses ">= 1.5.0 < 2"
+ toidentifier "1.0.0"
+
+http-errors@~1.7.2:
+ version "1.7.3"
+ resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06"
+ integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==
+ dependencies:
+ depd "~1.1.2"
+ inherits "2.0.4"
+ setprototypeof "1.1.1"
+ statuses ">= 1.5.0 < 2"
+ toidentifier "1.0.0"
+
+https-browserify@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73"
+ integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=
+
+human-signals@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3"
+ integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==
+
+husky@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/husky/-/husky-6.0.0.tgz#810f11869adf51604c32ea577edbc377d7f9319e"
+ integrity sha512-SQS2gDTB7tBN486QSoKPKQItZw97BMOd+Kdb6ghfpBc0yXyzrddI0oDV5MkDAbuB4X2mO3/nj60TRMcYxwzZeQ==
+
+iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@^0.4.4:
+ version "0.4.24"
+ resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
+ integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
+ dependencies:
+ safer-buffer ">= 2.1.2 < 3"
+
+ieee754@1.1.13, ieee754@^1.1.4:
+ version "1.1.13"
+ resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84"
+ integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==
+
+iferr@^0.1.5:
+ version "0.1.5"
+ resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501"
+ integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE=
+
+ignore-walk@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.1.tgz#a83e62e7d272ac0e3b551aaa82831a19b69f82f8"
+ integrity sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==
+ dependencies:
+ minimatch "^3.0.4"
+
+ignore@^4.0.6:
+ version "4.0.6"
+ resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc"
+ integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==
+
+ignore@^5.0.0, ignore@^5.1.1, ignore@^5.1.4, ignore@~5.1.8:
+ version "5.1.8"
+ resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57"
+ integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==
+
+import-fresh@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.1.0.tgz#6d33fa1dcef6df930fae003446f33415af905118"
+ integrity sha512-PpuksHKGt8rXfWEr9m9EHIpgyyaltBy8+eF6GJM0QCAxMgxCfucMF3mjecK2QsJr0amJW7gTqh5/wht0z2UhEQ==
+ dependencies:
+ parent-module "^1.0.0"
+ resolve-from "^4.0.0"
+
+import-fresh@^3.1.0:
+ version "3.2.1"
+ resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66"
+ integrity sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==
+ dependencies:
+ parent-module "^1.0.0"
+ resolve-from "^4.0.0"
+
+import-local@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d"
+ integrity sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==
+ dependencies:
+ pkg-dir "^3.0.0"
+ resolve-cwd "^2.0.0"
+
+import-meta-resolve@^1.0.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/import-meta-resolve/-/import-meta-resolve-1.1.1.tgz#244fd542fd1fae73550d4f8b3cde3bba1d7b2b18"
+ integrity sha512-JiTuIvVyPaUg11eTrNDx5bgQ/yMKMZffc7YSjvQeSMXy58DO2SQ8BtAf3xteZvmzvjYh14wnqNjL8XVeDy2o9A==
+ dependencies:
+ builtins "^4.0.0"
+
+imurmurhash@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
+ integrity sha1-khi5srkoojixPcT7a21XbyMUU+o=
+
+indent-string@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251"
+ integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==
+
+infer-owner@^1.0.3:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467"
+ integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==
+
+inflight@^1.0.4:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
+ integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=
+ dependencies:
+ once "^1.3.0"
+ wrappy "1"
+
+inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
+ integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
+
+inherits@2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1"
+ integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=
+
+inherits@2.0.3:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
+ integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=
+
+ini@^1.3.4, ini@^1.3.5, ini@~1.3.0:
+ version "1.3.7"
+ resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.7.tgz#a09363e1911972ea16d7a8851005d84cf09a9a84"
+ integrity sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ==
+
+inquirer@^7.0.0:
+ version "7.3.0"
+ resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.3.0.tgz#aa3e7cb0c18a410c3c16cdd2bc9dcbe83c4d333e"
+ integrity sha512-K+LZp6L/6eE5swqIcVXrxl21aGDU4S50gKH0/d96OMQnSBCyGyZl/oZhbkVmdp5sBoINHd4xZvFSARh2dk6DWA==
+ dependencies:
+ ansi-escapes "^4.2.1"
+ chalk "^4.1.0"
+ cli-cursor "^3.1.0"
+ cli-width "^3.0.0"
+ external-editor "^3.0.3"
+ figures "^3.0.0"
+ lodash "^4.17.15"
+ mute-stream "0.0.8"
+ run-async "^2.4.0"
+ rxjs "^6.6.0"
+ string-width "^4.1.0"
+ strip-ansi "^6.0.0"
+ through "^2.3.6"
+
+interpret@^1.0.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.2.0.tgz#d5061a6224be58e8083985f5014d844359576296"
+ integrity sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==
+
+interpret@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e"
+ integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==
+
+ipaddr.js@1.9.0:
+ version "1.9.0"
+ resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.0.tgz#37df74e430a0e47550fe54a2defe30d8acd95f65"
+ integrity sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA==
+
+is-accessor-descriptor@^0.1.6:
+ version "0.1.6"
+ resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6"
+ integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=
+ dependencies:
+ kind-of "^3.0.2"
+
+is-accessor-descriptor@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656"
+ integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==
+ dependencies:
+ kind-of "^6.0.0"
+
+is-alphabetical@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/is-alphabetical/-/is-alphabetical-2.0.0.tgz#ef6e2caea57c63450fffc7abb6cbdafc5eb96e96"
+ integrity sha512-5OV8Toyq3oh4eq6sbWTYzlGdnMT/DPI5I0zxUBxjiigQsZycpkKF3kskkao3JyYGuYDHvhgJF+DrjMQp9SX86w==
+
+is-alphanumerical@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/is-alphanumerical/-/is-alphanumerical-2.0.0.tgz#0fbfeb6a72d21d91143b3d182bf6cf5909ee66f6"
+ integrity sha512-t+2GlJ+hO9yagJ+jU3+HSh80VKvz/3cG2cxbGGm4S0hjKuhWQXgPVUVOZz3tqZzMjhmphZ+1TIJTlRZRoe6GCQ==
+ dependencies:
+ is-alphabetical "^2.0.0"
+ is-decimal "^2.0.0"
+
+is-arrayish@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
+ integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=
+
+is-binary-path@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898"
+ integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=
+ dependencies:
+ binary-extensions "^1.0.0"
+
+is-binary-path@~2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09"
+ integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==
+ dependencies:
+ binary-extensions "^2.0.0"
+
+is-buffer@^1.1.5:
+ version "1.1.6"
+ resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
+ integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==
+
+is-buffer@^2.0.0:
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191"
+ integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==
+
+is-callable@^1.1.4:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75"
+ integrity sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==
+
+is-callable@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.0.tgz#83336560b54a38e35e3a2df7afd0454d691468bb"
+ integrity sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==
+
+is-data-descriptor@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56"
+ integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=
+ dependencies:
+ kind-of "^3.0.2"
+
+is-data-descriptor@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7"
+ integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==
+ dependencies:
+ kind-of "^6.0.0"
+
+is-date-object@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16"
+ integrity sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=
+
+is-decimal@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/is-decimal/-/is-decimal-2.0.0.tgz#db1140337809fd043a056ae40a9bd1cdc563034c"
+ integrity sha512-QfrfjQV0LjoWQ1K1XSoEZkTAzSa14RKVMa5zg3SdAfzEmQzRM4+tbSFWb78creCeA9rNBzaZal92opi1TwPWZw==
+
+is-descriptor@^0.1.0:
+ version "0.1.6"
+ resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca"
+ integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==
+ dependencies:
+ is-accessor-descriptor "^0.1.6"
+ is-data-descriptor "^0.1.4"
+ kind-of "^5.0.0"
+
+is-descriptor@^1.0.0, is-descriptor@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec"
+ integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==
+ dependencies:
+ is-accessor-descriptor "^1.0.0"
+ is-data-descriptor "^1.0.0"
+ kind-of "^6.0.2"
+
+is-empty@^1.0.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/is-empty/-/is-empty-1.2.0.tgz#de9bb5b278738a05a0b09a57e1fb4d4a341a9f6b"
+ integrity sha1-3pu1snhzigWgsJpX4ftNSjQan2s=
+
+is-extendable@^0.1.0, is-extendable@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89"
+ integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=
+
+is-extendable@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4"
+ integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==
+ dependencies:
+ is-plain-object "^2.0.4"
+
+is-extglob@^2.1.0, is-extglob@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
+ integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=
+
+is-fullwidth-code-point@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb"
+ integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs=
+ dependencies:
+ number-is-nan "^1.0.0"
+
+is-fullwidth-code-point@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f"
+ integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=
+
+is-fullwidth-code-point@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d"
+ integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==
+
+is-fullwidth-code-point@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz#fae3167c729e7463f8461ce512b080a49268aa88"
+ integrity sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==
+
+is-glob@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a"
+ integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=
+ dependencies:
+ is-extglob "^2.1.0"
+
+is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc"
+ integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==
+ dependencies:
+ is-extglob "^2.1.1"
+
+is-hexadecimal@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/is-hexadecimal/-/is-hexadecimal-2.0.0.tgz#8e1ec9f48fe3eabd90161109856a23e0907a65d5"
+ integrity sha512-vGOtYkiaxwIiR0+Ng/zNId+ZZehGfINwTzdrDqc6iubbnQWhnPuYymOzOKUDqa2cSl59yHnEh2h6MvRLQsyNug==
+
+is-interactive@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e"
+ integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==
+
+is-number@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195"
+ integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=
+ dependencies:
+ kind-of "^3.0.2"
+
+is-number@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
+ integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
+
+is-obj@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f"
+ integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8=
+
+is-plain-obj@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-4.0.0.tgz#06c0999fd7574edf5a906ba5644ad0feb3a84d22"
+ integrity sha512-NXRbBtUdBioI73y/HmOhogw/U5msYPC9DAtGkJXeFcFWSFZw0mCUsPxk/snTuJHzNKA8kLBK4rH97RMB1BfCXw==
+
+is-plain-object@^2.0.3, is-plain-object@^2.0.4:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677"
+ integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==
+ dependencies:
+ isobject "^3.0.1"
+
+is-plain-object@^4.0.0:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-4.1.1.tgz#1a14d6452cbd50790edc7fdaa0aed5a40a35ebb5"
+ integrity sha512-5Aw8LLVsDlZsETVMhoMXzqsXwQqr/0vlnBYzIXJbYo2F4yYlhLHs+Ez7Bod7IIQKWkJbJfxrWD7pA1Dw1TKrwA==
+
+is-redirect@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24"
+ integrity sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=
+
+is-regex@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491"
+ integrity sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=
+ dependencies:
+ has "^1.0.1"
+
+is-regex@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.0.tgz#ece38e389e490df0dc21caea2bd596f987f767ff"
+ integrity sha512-iI97M8KTWID2la5uYXlkbSDQIg4F6o1sYboZKKTDpnDQMLtUL86zxhgDet3Q2SriaYsyGqZ6Mn2SjbRKeLHdqw==
+ dependencies:
+ has-symbols "^1.0.1"
+
+is-regexp@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069"
+ integrity sha1-/S2INUXEa6xaYz57mgnof6LLUGk=
+
+is-retry-allowed@^1.0.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz#d778488bd0a4666a3be8a1482b9f2baafedea8b4"
+ integrity sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==
+
+is-stream@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
+ integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ=
+
+is-stream@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3"
+ integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==
+
+is-string@^1.0.5:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6"
+ integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==
+
+is-symbol@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.2.tgz#a055f6ae57192caee329e7a860118b497a950f38"
+ integrity sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==
+ dependencies:
+ has-symbols "^1.0.0"
+
+is-windows@^1.0.1, is-windows@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d"
+ integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==
+
+is-wsl@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d"
+ integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=
+
+isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
+ integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=
+
+isexe@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
+ integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=
+
+isobject@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89"
+ integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=
+ dependencies:
+ isarray "1.0.0"
+
+isobject@^3.0.0, isobject@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df"
+ integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8=
+
+jmespath@0.15.0:
+ version "0.15.0"
+ resolved "https://registry.yarnpkg.com/jmespath/-/jmespath-0.15.0.tgz#a3f222a9aae9f966f5d27c796510e28091764217"
+ integrity sha1-o/Iiqarp+Wb10nx5ZRDigJF2Qhc=
+
+"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
+ integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
+
+js-yaml@^3.13.1, js-yaml@^3.2.7:
+ version "3.13.1"
+ resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847"
+ integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==
+ dependencies:
+ argparse "^1.0.7"
+ esprima "^4.0.0"
+
+js-yaml@^4.0.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602"
+ integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==
+ dependencies:
+ argparse "^2.0.1"
+
+js-yaml@~3.14.0:
+ version "3.14.0"
+ resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.0.tgz#a7a34170f26a21bb162424d8adacb4113a69e482"
+ integrity sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==
+ dependencies:
+ argparse "^1.0.7"
+ esprima "^4.0.0"
+
+json-buffer@3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898"
+ integrity sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=
+
+json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9"
+ integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==
+
+json-schema-traverse@^0.4.1:
+ version "0.4.1"
+ resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660"
+ integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==
+
+json-stable-stringify-without-jsonify@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651"
+ integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=
+
+json5@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe"
+ integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==
+ dependencies:
+ minimist "^1.2.0"
+
+json5@^2.0.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3"
+ integrity sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==
+ dependencies:
+ minimist "^1.2.5"
+
+json5@^2.1.2:
+ version "2.1.3"
+ resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.3.tgz#c9b0f7fa9233bfe5807fe66fcf3a5617ed597d43"
+ integrity sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==
+ dependencies:
+ minimist "^1.2.5"
+
+jsonc-parser@~2.3.1:
+ version "2.3.1"
+ resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-2.3.1.tgz#59549150b133f2efacca48fe9ce1ec0659af2342"
+ integrity sha512-H8jvkz1O50L3dMZCsLqiuB2tA7muqbSg1AtGEkN0leAqGjsUzDJir3Zwr02BhqdcITPg3ei3mZ+HjMocAknhhg==
+
+jsonfile@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb"
+ integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=
+ optionalDependencies:
+ graceful-fs "^4.1.6"
+
+jsonfile@^6.0.1:
+ version "6.0.1"
+ resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.0.1.tgz#98966cba214378c8c84b82e085907b40bf614179"
+ integrity sha512-jR2b5v7d2vIOust+w3wtFKZIfpC2pnRmFAhAC/BuweZFQR8qZzxH1OyrQ10HmdVYiXWkYUqPVsz91cG7EL2FBg==
+ dependencies:
+ universalify "^1.0.0"
+ optionalDependencies:
+ graceful-fs "^4.1.6"
+
+jsonwebtoken@^8.5.1:
+ version "8.5.1"
+ resolved "https://registry.yarnpkg.com/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz#00e71e0b8df54c2121a1f26137df2280673bcc0d"
+ integrity sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==
+ dependencies:
+ jws "^3.2.2"
+ lodash.includes "^4.3.0"
+ lodash.isboolean "^3.0.3"
+ lodash.isinteger "^4.0.4"
+ lodash.isnumber "^3.0.3"
+ lodash.isplainobject "^4.0.6"
+ lodash.isstring "^4.0.1"
+ lodash.once "^4.0.0"
+ ms "^2.1.1"
+ semver "^5.6.0"
+
+jsx-ast-utils@^2.1.0:
+ version "2.4.1"
+ resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-2.4.1.tgz#1114a4c1209481db06c690c2b4f488cc665f657e"
+ integrity sha512-z1xSldJ6imESSzOjd3NNkieVJKRlKYSOtMG8SFyCj2FIrvSaSuli/WjpBkEzCBoR9bYYYFgqJw61Xhu7Lcgk+w==
+ dependencies:
+ array-includes "^3.1.1"
+ object.assign "^4.1.0"
+
+jwa@^1.4.1:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/jwa/-/jwa-1.4.1.tgz#743c32985cb9e98655530d53641b66c8645b039a"
+ integrity sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==
+ dependencies:
+ buffer-equal-constant-time "1.0.1"
+ ecdsa-sig-formatter "1.0.11"
+ safe-buffer "^5.0.1"
+
+jws@^3.2.2:
+ version "3.2.2"
+ resolved "https://registry.yarnpkg.com/jws/-/jws-3.2.2.tgz#001099f3639468c9414000e99995fa52fb478304"
+ integrity sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==
+ dependencies:
+ jwa "^1.4.1"
+ safe-buffer "^5.0.1"
+
+keyv@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9"
+ integrity sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==
+ dependencies:
+ json-buffer "3.0.0"
+
+kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0:
+ version "3.2.2"
+ resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64"
+ integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=
+ dependencies:
+ is-buffer "^1.1.5"
+
+kind-of@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57"
+ integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc=
+ dependencies:
+ is-buffer "^1.1.5"
+
+kind-of@^5.0.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d"
+ integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==
+
+kind-of@^6.0.0, kind-of@^6.0.2:
+ version "6.0.2"
+ resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051"
+ integrity sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==
+
+klaw@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/klaw/-/klaw-3.0.0.tgz#b11bec9cf2492f06756d6e809ab73a2910259146"
+ integrity sha512-0Fo5oir+O9jnXu5EefYbVK+mHMBeEVEy2cmctR1O1NECcCkPRreJKrS6Qt/j3KC2C148Dfo9i3pCmCMsdqGr0g==
+ dependencies:
+ graceful-fs "^4.1.9"
+
+levn@^0.3.0, levn@~0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee"
+ integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=
+ dependencies:
+ prelude-ls "~1.1.2"
+ type-check "~0.3.2"
+
+levn@^0.4.1:
+ version "0.4.1"
+ resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade"
+ integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==
+ dependencies:
+ prelude-ls "^1.2.1"
+ type-check "~0.4.0"
+
+libnpmconfig@^1.0.0:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/libnpmconfig/-/libnpmconfig-1.2.1.tgz#c0c2f793a74e67d4825e5039e7a02a0044dfcbc0"
+ integrity sha512-9esX8rTQAHqarx6qeZqmGQKBNZR5OIbl/Ayr0qQDy3oXja2iFVQQI81R6GZ2a02bSNZ9p3YOGX1O6HHCb1X7kA==
+ dependencies:
+ figgy-pudding "^3.5.1"
+ find-up "^3.0.0"
+ ini "^1.3.5"
+
+lines-and-columns@^1.1.6:
+ version "1.1.6"
+ resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00"
+ integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=
+
+linkify-it@^2.0.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-2.2.0.tgz#e3b54697e78bf915c70a38acd78fd09e0058b1cf"
+ integrity sha512-GnAl/knGn+i1U/wjBz3akz2stz+HrHLsxMwHQGofCDfPvlf+gDKN58UtfmUquTY4/MXeE2x7k19KQmeoZi94Iw==
+ dependencies:
+ uc.micro "^1.0.1"
+
+linkify-it@^3.0.1:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-3.0.2.tgz#f55eeb8bc1d3ae754049e124ab3bb56d97797fb8"
+ integrity sha512-gDBO4aHNZS6coiZCKVhSNh43F9ioIL4JwRjLZPkoLIY4yZFwg264Y5lu2x6rb1Js42Gh6Yqm2f6L2AJcnkzinQ==
+ dependencies:
+ uc.micro "^1.0.1"
+
+lint-staged@^10.2.11:
+ version "10.2.11"
+ resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-10.2.11.tgz#713c80877f2dc8b609b05bc59020234e766c9720"
+ integrity sha512-LRRrSogzbixYaZItE2APaS4l2eJMjjf5MbclRZpLJtcQJShcvUzKXsNeZgsLIZ0H0+fg2tL4B59fU9wHIHtFIA==
+ dependencies:
+ chalk "^4.0.0"
+ cli-truncate "2.1.0"
+ commander "^5.1.0"
+ cosmiconfig "^6.0.0"
+ debug "^4.1.1"
+ dedent "^0.7.0"
+ enquirer "^2.3.5"
+ execa "^4.0.1"
+ listr2 "^2.1.0"
+ log-symbols "^4.0.0"
+ micromatch "^4.0.2"
+ normalize-path "^3.0.0"
+ please-upgrade-node "^3.2.0"
+ string-argv "0.3.1"
+ stringify-object "^3.3.0"
+
+lint@^1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/lint/-/lint-1.1.2.tgz#35ed064f322547c331358d899868664968ba371f"
+ integrity sha1-Ne0GTzIlR8MxNY2JmGhmSWi6Nx8=
+
+listr2@^2.1.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/listr2/-/listr2-2.2.0.tgz#cb88631258abc578c7fb64e590fe5742f28e4aac"
+ integrity sha512-Q8qbd7rgmEwDo1nSyHaWQeztfGsdL6rb4uh7BA+Q80AZiDET5rVntiU1+13mu2ZTDVaBVbvAD1Db11rnu3l9sg==
+ dependencies:
+ chalk "^4.0.0"
+ cli-truncate "^2.1.0"
+ figures "^3.2.0"
+ indent-string "^4.0.0"
+ log-update "^4.0.0"
+ p-map "^4.0.0"
+ rxjs "^6.5.5"
+ through "^2.3.8"
+
+load-json-file@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8"
+ integrity sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=
+ dependencies:
+ graceful-fs "^4.1.2"
+ parse-json "^2.2.0"
+ pify "^2.0.0"
+ strip-bom "^3.0.0"
+
+load-json-file@^5.2.0:
+ version "5.3.0"
+ resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-5.3.0.tgz#4d3c1e01fa1c03ea78a60ac7af932c9ce53403f3"
+ integrity sha512-cJGP40Jc/VXUsp8/OrnyKyTZ1y6v/dphm3bioS+RrKXjK2BB6wHUd6JptZEFDGgGahMT+InnZO5i1Ei9mpC8Bw==
+ dependencies:
+ graceful-fs "^4.1.15"
+ parse-json "^4.0.0"
+ pify "^4.0.1"
+ strip-bom "^3.0.0"
+ type-fest "^0.3.0"
+
+load-plugin@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/load-plugin/-/load-plugin-4.0.1.tgz#9a239b0337064c9b8aac82b0c9f89b067db487c5"
+ integrity sha512-4kMi+mOSn/TR51pDo4tgxROHfBHXsrcyEYSGHcJ1o6TtRaP2PsRM5EwmYbj1uiLDvbfA/ohwuSWZJzqGiai8Dw==
+ dependencies:
+ import-meta-resolve "^1.0.0"
+ libnpmconfig "^1.0.0"
+
+loader-runner@^2.4.0:
+ version "2.4.0"
+ resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357"
+ integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==
+
+loader-utils@^1.0.2, loader-utils@^1.2.3:
+ version "1.2.3"
+ resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.2.3.tgz#1ff5dc6911c9f0a062531a4c04b609406108c2c7"
+ integrity sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==
+ dependencies:
+ big.js "^5.2.2"
+ emojis-list "^2.0.0"
+ json5 "^1.0.1"
+
+loader-utils@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613"
+ integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==
+ dependencies:
+ big.js "^5.2.2"
+ emojis-list "^3.0.0"
+ json5 "^1.0.1"
+
+loader-utils@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.0.tgz#e4cace5b816d425a166b5f097e10cd12b36064b0"
+ integrity sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==
+ dependencies:
+ big.js "^5.2.2"
+ emojis-list "^3.0.0"
+ json5 "^2.1.2"
+
+locate-path@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e"
+ integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=
+ dependencies:
+ p-locate "^2.0.0"
+ path-exists "^3.0.0"
+
+locate-path@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e"
+ integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==
+ dependencies:
+ p-locate "^3.0.0"
+ path-exists "^3.0.0"
+
+lodash.camelcase@^4.3.0:
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6"
+ integrity sha1-soqmKIorn8ZRA1x3EfZathkDMaY=
+
+lodash.differencewith@~4.5.0:
+ version "4.5.0"
+ resolved "https://registry.yarnpkg.com/lodash.differencewith/-/lodash.differencewith-4.5.0.tgz#bafafbc918b55154e179176a00bb0aefaac854b7"
+ integrity sha1-uvr7yRi1UVTheRdqALsK76rIVLc=
+
+lodash.flatten@^4.4.0, lodash.flatten@~4.4.0:
+ version "4.4.0"
+ resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f"
+ integrity sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=
+
+lodash.includes@^4.3.0:
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/lodash.includes/-/lodash.includes-4.3.0.tgz#60bb98a87cb923c68ca1e51325483314849f553f"
+ integrity sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8=
+
+lodash.isboolean@^3.0.3:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz#6c2e171db2a257cd96802fd43b01b20d5f5870f6"
+ integrity sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY=
+
+lodash.isinteger@^4.0.4:
+ version "4.0.4"
+ resolved "https://registry.yarnpkg.com/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz#619c0af3d03f8b04c31f5882840b77b11cd68343"
+ integrity sha1-YZwK89A/iwTDH1iChAt3sRzWg0M=
+
+lodash.isnumber@^3.0.3:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz#3ce76810c5928d03352301ac287317f11c0b1ffc"
+ integrity sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w=
+
+lodash.isplainobject@^4.0.6:
+ version "4.0.6"
+ resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb"
+ integrity sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=
+
+lodash.isstring@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/lodash.isstring/-/lodash.isstring-4.0.1.tgz#d527dfb5456eca7cc9bb95d5daeaf88ba54a5451"
+ integrity sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=
+
+lodash.once@^4.0.0:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac"
+ integrity sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=
+
+lodash.range@^3.2.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/lodash.range/-/lodash.range-3.2.0.tgz#f461e588f66683f7eadeade513e38a69a565a15d"
+ integrity sha1-9GHliPZmg/fq3q3lE+OKaaVloV0=
+
+lodash@^4.0.0, lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15:
+ version "4.17.21"
+ resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
+ integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
+
+log-symbols@^2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a"
+ integrity sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==
+ dependencies:
+ chalk "^2.0.1"
+
+log-symbols@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-3.0.0.tgz#f3a08516a5dea893336a7dee14d18a1cfdab77c4"
+ integrity sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==
+ dependencies:
+ chalk "^2.4.2"
+
+log-symbols@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.0.0.tgz#69b3cc46d20f448eccdb75ea1fa733d9e821c920"
+ integrity sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA==
+ dependencies:
+ chalk "^4.0.0"
+
+log-update@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/log-update/-/log-update-4.0.0.tgz#589ecd352471f2a1c0c570287543a64dfd20e0a1"
+ integrity sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==
+ dependencies:
+ ansi-escapes "^4.3.0"
+ cli-cursor "^3.1.0"
+ slice-ansi "^4.0.0"
+ wrap-ansi "^6.2.0"
+
+longest-streak@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/longest-streak/-/longest-streak-3.0.0.tgz#f127e2bded83caa6a35ac5f7a2f2b2f94b36f3dc"
+ integrity sha512-XhUjWR5CFaQ03JOP+iSDS9koy8T5jfoImCZ4XprElw3BXsSk4MpVYOLw/6LTDKZhO13PlAXnB5gS4MHQTpkSOw==
+
+loose-envify@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf"
+ integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==
+ dependencies:
+ js-tokens "^3.0.0 || ^4.0.0"
+
+lowercase-keys@^1.0.0, lowercase-keys@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f"
+ integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==
+
+lowercase-keys@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479"
+ integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==
+
+lru-cache@^5.1.1:
+ version "5.1.1"
+ resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920"
+ integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==
+ dependencies:
+ yallist "^3.0.2"
+
+lru-cache@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94"
+ integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==
+ dependencies:
+ yallist "^4.0.0"
+
+make-dir@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5"
+ integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==
+ dependencies:
+ pify "^4.0.1"
+ semver "^5.6.0"
+
+make-error@^1.1.1:
+ version "1.3.5"
+ resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.5.tgz#efe4e81f6db28cadd605c70f29c831b58ef776c8"
+ integrity sha512-c3sIjNUow0+8swNwVpqoH4YCShKNFkMaw6oH1mNS2haDZQqkeZFlHS3dhoeEbKKmJB4vXpJucU6oH75aDYeE9g==
+
+map-cache@^0.2.2:
+ version "0.2.2"
+ resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf"
+ integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=
+
+map-visit@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f"
+ integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=
+ dependencies:
+ object-visit "^1.0.0"
+
+markdown-it@11.0.0:
+ version "11.0.0"
+ resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-11.0.0.tgz#dbfc30363e43d756ebc52c38586b91b90046b876"
+ integrity sha512-+CvOnmbSubmQFSA9dKz1BRiaSMV7rhexl3sngKqFyXSagoA3fBdJQ8oZWtRy2knXdpDXaBw44euz37DeJQ9asg==
+ dependencies:
+ argparse "^1.0.7"
+ entities "~2.0.0"
+ linkify-it "^3.0.1"
+ mdurl "^1.0.1"
+ uc.micro "^1.0.5"
+
+markdown-it@^10.0.0:
+ version "10.0.0"
+ resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-10.0.0.tgz#abfc64f141b1722d663402044e43927f1f50a8dc"
+ integrity sha512-YWOP1j7UbDNz+TumYP1kpwnP0aEa711cJjrAQrzd0UXlbJfc5aAq0F/PZHjiioqDC1NKgvIMX+o+9Bk7yuM2dg==
+ dependencies:
+ argparse "^1.0.7"
+ entities "~2.0.0"
+ linkify-it "^2.0.0"
+ mdurl "^1.0.1"
+ uc.micro "^1.0.5"
+
+markdownlint-cli@^0.25.0:
+ version "0.25.0"
+ resolved "https://registry.yarnpkg.com/markdownlint-cli/-/markdownlint-cli-0.25.0.tgz#806b2c234259fa621af27673644506d447bdb6a1"
+ integrity sha512-pmiXJgPQtAx6YOMXPCCO3AudMWv8Gnhfrprn0raqevofOhO95nJZ6bTEXkUVbzEwvYhvGxE0Yl888aZwuRGMGw==
+ dependencies:
+ commander "~6.2.0"
+ deep-extend "~0.6.0"
+ get-stdin "~8.0.0"
+ glob "~7.1.6"
+ ignore "~5.1.8"
+ js-yaml "~3.14.0"
+ jsonc-parser "~2.3.1"
+ lodash.differencewith "~4.5.0"
+ lodash.flatten "~4.4.0"
+ markdownlint "~0.21.1"
+ markdownlint-rule-helpers "~0.12.0"
+ minimatch "~3.0.4"
+ minimist "~1.2.5"
+ rc "~1.2.8"
+
+markdownlint-rule-helpers@~0.12.0:
+ version "0.12.0"
+ resolved "https://registry.yarnpkg.com/markdownlint-rule-helpers/-/markdownlint-rule-helpers-0.12.0.tgz#c41d9b990c50911572e8eb2fba3e6975a5514b7e"
+ integrity sha512-Q7qfAk+AJvx82ZY52OByC4yjoQYryOZt6D8TKrZJIwCfhZvcj8vCQNuwDqILushtDBTvGFmUPq+uhOb1KIMi6A==
+
+markdownlint@^0.21.1, markdownlint@~0.21.1:
+ version "0.21.1"
+ resolved "https://registry.yarnpkg.com/markdownlint/-/markdownlint-0.21.1.tgz#9442afcf12bf65ce9d613212028cf85741677421"
+ integrity sha512-8kc88w5dyEzlmOWIElp8J17qBgzouOQfJ0LhCcpBFrwgyYK6JTKvILsk4FCEkiNqHkTxwxopT2RS2DYb/10qqg==
+ dependencies:
+ markdown-it "11.0.0"
+
+matcher-collection@^1.0.0:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/matcher-collection/-/matcher-collection-1.1.2.tgz#1076f506f10ca85897b53d14ef54f90a5c426838"
+ integrity sha512-YQ/teqaOIIfUHedRam08PB3NK7Mjct6BvzRnJmpGDm8uFXpNr1sbY4yuflI5JcEs6COpYA0FpRQhSDBf1tT95g==
+ dependencies:
+ minimatch "^3.0.2"
+
+md5.js@^1.3.4:
+ version "1.3.5"
+ resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f"
+ integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==
+ dependencies:
+ hash-base "^3.0.0"
+ inherits "^2.0.1"
+ safe-buffer "^5.1.2"
+
+mdast-comment-marker@^1.0.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/mdast-comment-marker/-/mdast-comment-marker-1.1.1.tgz#9c9c18e1ed57feafc1965d92b028f37c3c8da70d"
+ integrity sha512-TWZDaUtPLwKX1pzDIY48MkSUQRDwX/HqbTB4m3iYdL/zosi/Z6Xqfdv0C0hNVKvzrPjZENrpWDt4p4odeVO0Iw==
+
+mdast-util-from-markdown@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/mdast-util-from-markdown/-/mdast-util-from-markdown-1.0.0.tgz#c517313cd999ec2b8f6d447b438c5a9d500b89c9"
+ integrity sha512-uj2G60sb7z1PNOeElFwCC9b/Se/lFXuLhVKFOAY2EHz/VvgbupTQRNXPoZl7rGpXYL6BNZgcgaybrlSWbo7n/g==
+ dependencies:
+ "@types/mdast" "^3.0.0"
+ "@types/unist" "^2.0.0"
+ mdast-util-to-string "^3.0.0"
+ micromark "^3.0.0"
+ micromark-util-decode-numeric-character-reference "^1.0.0"
+ micromark-util-normalize-identifier "^1.0.0"
+ micromark-util-symbol "^1.0.0"
+ micromark-util-types "^1.0.0"
+ parse-entities "^3.0.0"
+ unist-util-stringify-position "^3.0.0"
+
+mdast-util-heading-style@^1.0.2:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/mdast-util-heading-style/-/mdast-util-heading-style-1.0.5.tgz#81b2e60d76754198687db0e8f044e42376db0426"
+ integrity sha512-8zQkb3IUwiwOdUw6jIhnwM6DPyib+mgzQuHAe7j2Hy1rIarU4VUxe472bp9oktqULW3xqZE+Kz6OD4Gi7IA3vw==
+
+mdast-util-to-markdown@^1.0.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/mdast-util-to-markdown/-/mdast-util-to-markdown-1.1.1.tgz#545ccc4dcc6672614b84fd1064482320dd689b12"
+ integrity sha512-4puev/CxuxVdlsx5lVmuzgdqfjkkJJLS1Zm/MnejQ8I7BLeeBlbkwp6WOGJypEcN8g56LbVbhNmn84MvvcAvSQ==
+ dependencies:
+ "@types/mdast" "^3.0.0"
+ "@types/unist" "^2.0.0"
+ longest-streak "^3.0.0"
+ mdast-util-to-string "^3.0.0"
+ parse-entities "^3.0.0"
+ zwitch "^2.0.0"
+
+mdast-util-to-string@^1.0.2:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/mdast-util-to-string/-/mdast-util-to-string-1.0.6.tgz#7d85421021343b33de1552fc71cb8e5b4ae7536d"
+ integrity sha512-868pp48gUPmZIhfKrLbaDneuzGiw3OTDjHc5M1kAepR2CWBJ+HpEsm252K4aXdiP5coVZaJPOqGtVU6Po8xnXg==
+
+mdast-util-to-string@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/mdast-util-to-string/-/mdast-util-to-string-3.1.0.tgz#56c506d065fbf769515235e577b5a261552d56e9"
+ integrity sha512-n4Vypz/DZgwo0iMHLQL49dJzlp7YtAJP+N07MZHpjPf/5XJuHUWstviF4Mn2jEiR/GNmtnRRqnwsXExk3igfFA==
+
+mdurl@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e"
+ integrity sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=
+
+media-typer@0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748"
+ integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=
+
+memory-fs@^0.4.0, memory-fs@^0.4.1:
+ version "0.4.1"
+ resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552"
+ integrity sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=
+ dependencies:
+ errno "^0.1.3"
+ readable-stream "^2.0.1"
+
+memory-fs@^0.5.0:
+ version "0.5.0"
+ resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.5.0.tgz#324c01288b88652966d161db77838720845a8e3c"
+ integrity sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==
+ dependencies:
+ errno "^0.1.3"
+ readable-stream "^2.0.1"
+
+merge-descriptors@1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61"
+ integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=
+
+merge-stream@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60"
+ integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==
+
+merge2@^1.3.0:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae"
+ integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==
+
+methods@~1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee"
+ integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=
+
+micromark-core-commonmark@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/micromark-core-commonmark/-/micromark-core-commonmark-1.0.0.tgz#b767fa7687c205c224175bf067796360a3830350"
+ integrity sha512-y9g7zymcKRBHM/aNBekstvs/Grpf+y4OEBULUTYvGZcusnp+JeOxmilJY4GMpo2/xY7iHQL9fjz5pD9pSAud9A==
+ dependencies:
+ micromark-factory-destination "^1.0.0"
+ micromark-factory-label "^1.0.0"
+ micromark-factory-space "^1.0.0"
+ micromark-factory-title "^1.0.0"
+ micromark-factory-whitespace "^1.0.0"
+ micromark-util-character "^1.0.0"
+ micromark-util-chunked "^1.0.0"
+ micromark-util-classify-character "^1.0.0"
+ micromark-util-html-tag-name "^1.0.0"
+ micromark-util-normalize-identifier "^1.0.0"
+ micromark-util-resolve-all "^1.0.0"
+ micromark-util-subtokenize "^1.0.0"
+ micromark-util-symbol "^1.0.0"
+ micromark-util-types "^1.0.0"
+ parse-entities "^3.0.0"
+
+micromark-factory-destination@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/micromark-factory-destination/-/micromark-factory-destination-1.0.0.tgz#fef1cb59ad4997c496f887b6977aa3034a5a277e"
+ integrity sha512-eUBA7Rs1/xtTVun9TmV3gjfPz2wEwgK5R5xcbIM5ZYAtvGF6JkyaDsj0agx8urXnO31tEO6Ug83iVH3tdedLnw==
+ dependencies:
+ micromark-util-character "^1.0.0"
+ micromark-util-symbol "^1.0.0"
+ micromark-util-types "^1.0.0"
+
+micromark-factory-label@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/micromark-factory-label/-/micromark-factory-label-1.0.0.tgz#b316ec479b474232973ff13b49b576f84a6f2cbb"
+ integrity sha512-XWEucVZb+qBCe2jmlOnWr6sWSY6NHx+wtpgYFsm4G+dufOf6tTQRRo0bdO7XSlGPu5fyjpJenth6Ksnc5Mwfww==
+ dependencies:
+ micromark-util-character "^1.0.0"
+ micromark-util-symbol "^1.0.0"
+ micromark-util-types "^1.0.0"
+
+micromark-factory-space@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/micromark-factory-space/-/micromark-factory-space-1.0.0.tgz#cebff49968f2b9616c0fcb239e96685cb9497633"
+ integrity sha512-qUmqs4kj9a5yBnk3JMLyjtWYN6Mzfcx8uJfi5XAveBniDevmZasdGBba5b4QsvRcAkmvGo5ACmSUmyGiKTLZew==
+ dependencies:
+ micromark-util-character "^1.0.0"
+ micromark-util-types "^1.0.0"
+
+micromark-factory-title@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/micromark-factory-title/-/micromark-factory-title-1.0.0.tgz#708f7a8044f34a898c0efdb4f55e4da66b537273"
+ integrity sha512-flvC7Gx0dWVWorXuBl09Cr3wB5FTuYec8pMGVySIp2ZlqTcIjN/lFohZcP0EG//krTptm34kozHk7aK/CleCfA==
+ dependencies:
+ micromark-factory-space "^1.0.0"
+ micromark-util-character "^1.0.0"
+ micromark-util-symbol "^1.0.0"
+ micromark-util-types "^1.0.0"
+
+micromark-factory-whitespace@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/micromark-factory-whitespace/-/micromark-factory-whitespace-1.0.0.tgz#e991e043ad376c1ba52f4e49858ce0794678621c"
+ integrity sha512-Qx7uEyahU1lt1RnsECBiuEbfr9INjQTGa6Err+gF3g0Tx4YEviPbqqGKNv/NrBaE7dVHdn1bVZKM/n5I/Bak7A==
+ dependencies:
+ micromark-factory-space "^1.0.0"
+ micromark-util-character "^1.0.0"
+ micromark-util-symbol "^1.0.0"
+ micromark-util-types "^1.0.0"
+
+micromark-util-character@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/micromark-util-character/-/micromark-util-character-1.1.0.tgz#d97c54d5742a0d9611a68ca0cd4124331f264d86"
+ integrity sha512-agJ5B3unGNJ9rJvADMJ5ZiYjBRyDpzKAOk01Kpi1TKhlT1APx3XZk6eN7RtSz1erbWHC2L8T3xLZ81wdtGRZzg==
+ dependencies:
+ micromark-util-symbol "^1.0.0"
+ micromark-util-types "^1.0.0"
+
+micromark-util-chunked@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/micromark-util-chunked/-/micromark-util-chunked-1.0.0.tgz#5b40d83f3d53b84c4c6bce30ed4257e9a4c79d06"
+ integrity sha512-5e8xTis5tEZKgesfbQMKRCyzvffRRUX+lK/y+DvsMFdabAicPkkZV6gO+FEWi9RfuKKoxxPwNL+dFF0SMImc1g==
+ dependencies:
+ micromark-util-symbol "^1.0.0"
+
+micromark-util-classify-character@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/micromark-util-classify-character/-/micromark-util-classify-character-1.0.0.tgz#cbd7b447cb79ee6997dd274a46fc4eb806460a20"
+ integrity sha512-F8oW2KKrQRb3vS5ud5HIqBVkCqQi224Nm55o5wYLzY/9PwHGXC01tr3d7+TqHHz6zrKQ72Okwtvm/xQm6OVNZA==
+ dependencies:
+ micromark-util-character "^1.0.0"
+ micromark-util-symbol "^1.0.0"
+ micromark-util-types "^1.0.0"
+
+micromark-util-combine-extensions@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/micromark-util-combine-extensions/-/micromark-util-combine-extensions-1.0.0.tgz#91418e1e74fb893e3628b8d496085639124ff3d5"
+ integrity sha512-J8H058vFBdo/6+AsjHp2NF7AJ02SZtWaVUjsayNFeAiydTxUwViQPxN0Hf8dp4FmCQi0UUFovFsEyRSUmFH3MA==
+ dependencies:
+ micromark-util-chunked "^1.0.0"
+ micromark-util-types "^1.0.0"
+
+micromark-util-decode-numeric-character-reference@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-1.0.0.tgz#dcc85f13b5bd93ff8d2868c3dba28039d490b946"
+ integrity sha512-OzO9AI5VUtrTD7KSdagf4MWgHMtET17Ua1fIpXTpuhclCqD8egFWo85GxSGvxgkGS74bEahvtM0WP0HjvV0e4w==
+ dependencies:
+ micromark-util-symbol "^1.0.0"
+
+micromark-util-encode@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/micromark-util-encode/-/micromark-util-encode-1.0.0.tgz#c409ecf751a28aa9564b599db35640fccec4c068"
+ integrity sha512-cJpFVM768h6zkd8qJ1LNRrITfY4gwFt+tziPcIf71Ui8yFzY9wG3snZQqiWVq93PG4Sw6YOtcNiKJfVIs9qfGg==
+
+micromark-util-html-tag-name@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/micromark-util-html-tag-name/-/micromark-util-html-tag-name-1.0.0.tgz#75737e92fef50af0c6212bd309bc5cb8dbd489ed"
+ integrity sha512-NenEKIshW2ZI/ERv9HtFNsrn3llSPZtY337LID/24WeLqMzeZhBEE6BQ0vS2ZBjshm5n40chKtJ3qjAbVV8S0g==
+
+micromark-util-normalize-identifier@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-1.0.0.tgz#4a3539cb8db954bbec5203952bfe8cedadae7828"
+ integrity sha512-yg+zrL14bBTFrQ7n35CmByWUTFsgst5JhA4gJYoty4Dqzj4Z4Fr/DHekSS5aLfH9bdlfnSvKAWsAgJhIbogyBg==
+ dependencies:
+ micromark-util-symbol "^1.0.0"
+
+micromark-util-resolve-all@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/micromark-util-resolve-all/-/micromark-util-resolve-all-1.0.0.tgz#a7c363f49a0162e931960c44f3127ab58f031d88"
+ integrity sha512-CB/AGk98u50k42kvgaMM94wzBqozSzDDaonKU7P7jwQIuH2RU0TeBqGYJz2WY1UdihhjweivStrJ2JdkdEmcfw==
+ dependencies:
+ micromark-util-types "^1.0.0"
+
+micromark-util-sanitize-uri@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-1.0.0.tgz#27dc875397cd15102274c6c6da5585d34d4f12b2"
+ integrity sha512-cCxvBKlmac4rxCGx6ejlIviRaMKZc0fWm5HdCHEeDWRSkn44l6NdYVRyU+0nT1XC72EQJMZV8IPHF+jTr56lAg==
+ dependencies:
+ micromark-util-character "^1.0.0"
+ micromark-util-encode "^1.0.0"
+ micromark-util-symbol "^1.0.0"
+
+micromark-util-subtokenize@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/micromark-util-subtokenize/-/micromark-util-subtokenize-1.0.0.tgz#6f006fa719af92776c75a264daaede0fb3943c6a"
+ integrity sha512-EsnG2qscmcN5XhkqQBZni/4oQbLFjz9yk3ZM/P8a3YUjwV6+6On2wehr1ALx0MxK3+XXXLTzuBKHDFeDFYRdgQ==
+ dependencies:
+ micromark-util-chunked "^1.0.0"
+ micromark-util-symbol "^1.0.0"
+ micromark-util-types "^1.0.0"
+
+micromark-util-symbol@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/micromark-util-symbol/-/micromark-util-symbol-1.0.0.tgz#91cdbcc9b2a827c0129a177d36241bcd3ccaa34d"
+ integrity sha512-NZA01jHRNCt4KlOROn8/bGi6vvpEmlXld7EHcRH+aYWUfL3Wc8JLUNNlqUMKa0hhz6GrpUWsHtzPmKof57v0gQ==
+
+micromark-util-types@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/micromark-util-types/-/micromark-util-types-1.0.0.tgz#0ebdfaea3fa7c15fc82b1e06ea1ef0152d0fb2f0"
+ integrity sha512-psf1WAaP1B77WpW4mBGDkTr+3RsPuDAgsvlP47GJzbH1jmjH8xjOx7Z6kp84L8oqHmy5pYO3Ev46odosZV+3AA==
+
+micromark@^3.0.0:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/micromark/-/micromark-3.0.3.tgz#4c9f76fce8ba68eddf8730bb4fee2041d699d5b7"
+ integrity sha512-fWuHx+JKV4zA8WfCFor2DWP9XmsZkIiyWRGofr7P7IGfpRIlb7/C5wwusGsNyr1D8HI5arghZDG1Ikc0FBwS5Q==
+ dependencies:
+ "@types/debug" "^4.0.0"
+ debug "^4.0.0"
+ micromark-core-commonmark "^1.0.0"
+ micromark-factory-space "^1.0.0"
+ micromark-util-character "^1.0.0"
+ micromark-util-chunked "^1.0.0"
+ micromark-util-combine-extensions "^1.0.0"
+ micromark-util-decode-numeric-character-reference "^1.0.0"
+ micromark-util-encode "^1.0.0"
+ micromark-util-normalize-identifier "^1.0.0"
+ micromark-util-resolve-all "^1.0.0"
+ micromark-util-sanitize-uri "^1.0.0"
+ micromark-util-subtokenize "^1.0.0"
+ micromark-util-symbol "^1.0.0"
+ micromark-util-types "^1.0.0"
+ parse-entities "^3.0.0"
+
+micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4:
+ version "3.1.10"
+ resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23"
+ integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==
+ dependencies:
+ arr-diff "^4.0.0"
+ array-unique "^0.3.2"
+ braces "^2.3.1"
+ define-property "^2.0.2"
+ extend-shallow "^3.0.2"
+ extglob "^2.0.4"
+ fragment-cache "^0.2.1"
+ kind-of "^6.0.2"
+ nanomatch "^1.2.9"
+ object.pick "^1.3.0"
+ regex-not "^1.0.0"
+ snapdragon "^0.8.1"
+ to-regex "^3.0.2"
+
+micromatch@^4.0.0, micromatch@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.2.tgz#4fcb0999bf9fbc2fcbdd212f6d629b9a56c39259"
+ integrity sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==
+ dependencies:
+ braces "^3.0.1"
+ picomatch "^2.0.5"
+
+miller-rabin@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d"
+ integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==
+ dependencies:
+ bn.js "^4.0.0"
+ brorand "^1.0.1"
+
+mime-db@1.40.0:
+ version "1.40.0"
+ resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.40.0.tgz#a65057e998db090f732a68f6c276d387d4126c32"
+ integrity sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==
+
+mime-db@1.52.0:
+ version "1.52.0"
+ resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70"
+ integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==
+
+mime-types@^2.1.12:
+ version "2.1.35"
+ resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a"
+ integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==
+ dependencies:
+ mime-db "1.52.0"
+
+mime-types@~2.1.24:
+ version "2.1.24"
+ resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.24.tgz#b6f8d0b3e951efb77dedeca194cff6d16f676f81"
+ integrity sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==
+ dependencies:
+ mime-db "1.40.0"
+
+mime@1.6.0:
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1"
+ integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==
+
+mimic-fn@^1.0.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022"
+ integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==
+
+mimic-fn@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b"
+ integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==
+
+mimic-response@^1.0.0, mimic-response@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b"
+ integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==
+
+minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7"
+ integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==
+
+minimalistic-crypto-utils@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a"
+ integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=
+
+minimatch@^3.0.2, minimatch@^3.0.4, minimatch@~3.0.4:
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
+ integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==
+ dependencies:
+ brace-expansion "^1.1.7"
+
+minimist@^1.0.0, minimist@^1.2.5, minimist@~1.2.5:
+ version "1.2.5"
+ resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602"
+ integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==
+
+minimist@^1.2.0, minimist@~1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
+ integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=
+
+minipass@^2.6.0, minipass@^2.9.0:
+ version "2.9.0"
+ resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6"
+ integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==
+ dependencies:
+ safe-buffer "^5.1.2"
+ yallist "^3.0.0"
+
+minizlib@^1.3.3:
+ version "1.3.3"
+ resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d"
+ integrity sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==
+ dependencies:
+ minipass "^2.9.0"
+
+mississippi@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022"
+ integrity sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==
+ dependencies:
+ concat-stream "^1.5.0"
+ duplexify "^3.4.2"
+ end-of-stream "^1.1.0"
+ flush-write-stream "^1.0.0"
+ from2 "^2.1.0"
+ parallel-transform "^1.1.0"
+ pump "^3.0.0"
+ pumpify "^1.3.3"
+ stream-each "^1.1.0"
+ through2 "^2.0.0"
+
+mixin-deep@^1.2.0:
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566"
+ integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==
+ dependencies:
+ for-in "^1.0.2"
+ is-extendable "^1.0.1"
+
+mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@^0.5.5:
+ version "0.5.5"
+ resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def"
+ integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==
+ dependencies:
+ minimist "^1.2.5"
+
+move-concurrently@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92"
+ integrity sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=
+ dependencies:
+ aproba "^1.1.1"
+ copy-concurrently "^1.0.0"
+ fs-write-stream-atomic "^1.0.8"
+ mkdirp "^0.5.1"
+ rimraf "^2.5.4"
+ run-queue "^1.0.3"
+
+ms@2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
+ integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=
+
+ms@2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a"
+ integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==
+
+ms@2.1.2, ms@^2.1.1:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
+ integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
+
+mute-stream@0.0.8:
+ version "0.0.8"
+ resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d"
+ integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==
+
+nan@^2.12.1:
+ version "2.14.0"
+ resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c"
+ integrity sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==
+
+nanomatch@^1.2.9:
+ version "1.2.13"
+ resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119"
+ integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==
+ dependencies:
+ arr-diff "^4.0.0"
+ array-unique "^0.3.2"
+ define-property "^2.0.2"
+ extend-shallow "^3.0.2"
+ fragment-cache "^0.2.1"
+ is-windows "^1.0.2"
+ kind-of "^6.0.2"
+ object.pick "^1.3.0"
+ regex-not "^1.0.0"
+ snapdragon "^0.8.1"
+ to-regex "^3.0.1"
+
+natural-compare@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
+ integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=
+
+needle@^2.2.1:
+ version "2.4.0"
+ resolved "https://registry.yarnpkg.com/needle/-/needle-2.4.0.tgz#6833e74975c444642590e15a750288c5f939b57c"
+ integrity sha512-4Hnwzr3mi5L97hMYeNl8wRW/Onhy4nUKR/lVemJ8gJedxxUyBLm9kkrDColJvoSfwi0jCNhD+xCdOtiGDQiRZg==
+ dependencies:
+ debug "^3.2.6"
+ iconv-lite "^0.4.4"
+ sax "^1.2.4"
+
+negotiator@0.6.2:
+ version "0.6.2"
+ resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb"
+ integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==
+
+neo-async@^2.5.0, neo-async@^2.6.1:
+ version "2.6.1"
+ resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c"
+ integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==
+
+nice-try@^1.0.4:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366"
+ integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==
+
+node-fetch@^2.3.0, node-fetch@^2.6.7:
+ version "2.6.7"
+ resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad"
+ integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==
+ dependencies:
+ whatwg-url "^5.0.0"
+
+node-libs-browser@^2.2.1:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425"
+ integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==
+ dependencies:
+ assert "^1.1.1"
+ browserify-zlib "^0.2.0"
+ buffer "^4.3.0"
+ console-browserify "^1.1.0"
+ constants-browserify "^1.0.0"
+ crypto-browserify "^3.11.0"
+ domain-browser "^1.1.1"
+ events "^3.0.0"
+ https-browserify "^1.0.0"
+ os-browserify "^0.3.0"
+ path-browserify "0.0.1"
+ process "^0.11.10"
+ punycode "^1.2.4"
+ querystring-es3 "^0.2.0"
+ readable-stream "^2.3.3"
+ stream-browserify "^2.0.1"
+ stream-http "^2.7.2"
+ string_decoder "^1.0.0"
+ timers-browserify "^2.0.4"
+ tty-browserify "0.0.0"
+ url "^0.11.0"
+ util "^0.11.0"
+ vm-browserify "^1.0.1"
+
+node-pre-gyp@^0.12.0:
+ version "0.12.0"
+ resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.12.0.tgz#39ba4bb1439da030295f899e3b520b7785766149"
+ integrity sha512-4KghwV8vH5k+g2ylT+sLTjy5wmUOb9vPhnM8NHvRf9dHmnW/CndrFXy2aRPaPST6dugXSdHXfeaHQm77PIz/1A==
+ dependencies:
+ detect-libc "^1.0.2"
+ mkdirp "^0.5.1"
+ needle "^2.2.1"
+ nopt "^4.0.1"
+ npm-packlist "^1.1.6"
+ npmlog "^4.0.2"
+ rc "^1.2.7"
+ rimraf "^2.6.1"
+ semver "^5.3.0"
+ tar "^4"
+
+nopt@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d"
+ integrity sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=
+ dependencies:
+ abbrev "1"
+ osenv "^0.1.4"
+
+normalize-package-data@^2.3.2:
+ version "2.5.0"
+ resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8"
+ integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==
+ dependencies:
+ hosted-git-info "^2.1.4"
+ resolve "^1.10.0"
+ semver "2 || 3 || 4 || 5"
+ validate-npm-package-license "^3.0.1"
+
+normalize-path@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9"
+ integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=
+ dependencies:
+ remove-trailing-separator "^1.0.1"
+
+normalize-path@^3.0.0, normalize-path@~3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
+ integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
+
+normalize-url@^4.1.0:
+ version "4.5.1"
+ resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.1.tgz#0dd90cf1288ee1d1313b87081c9a5932ee48518a"
+ integrity sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==
+
+npm-bundled@^1.0.1:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.6.tgz#e7ba9aadcef962bb61248f91721cd932b3fe6bdd"
+ integrity sha512-8/JCaftHwbd//k6y2rEWp6k1wxVfpFzB6t1p825+cUb7Ym2XQfhwIC5KwhrvzZRJu+LtDE585zVaS32+CGtf0g==
+
+npm-packlist@^1.1.6:
+ version "1.4.4"
+ resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.4.tgz#866224233850ac534b63d1a6e76050092b5d2f44"
+ integrity sha512-zTLo8UcVYtDU3gdeaFu2Xu0n0EvelfHDGuqtNIn5RO7yQj4H1TqNdBc/yZjxnWA0PVB8D3Woyp0i5B43JwQ6Vw==
+ dependencies:
+ ignore-walk "^3.0.1"
+ npm-bundled "^1.0.1"
+
+npm-run-path@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea"
+ integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==
+ dependencies:
+ path-key "^3.0.0"
+
+npmlog@^4.0.2:
+ version "4.1.2"
+ resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b"
+ integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==
+ dependencies:
+ are-we-there-yet "~1.1.2"
+ console-control-strings "~1.1.0"
+ gauge "~2.7.3"
+ set-blocking "~2.0.0"
+
+null-loader@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/null-loader/-/null-loader-4.0.0.tgz#8e491b253cd87341d82c0e84b66980d806dfbd04"
+ integrity sha512-vSoBF6M08/RHwc6r0gvB/xBJBtmbvvEkf6+IiadUCoNYchjxE8lwzCGFg0Qp2D25xPiJxUBh2iNWzlzGMILp7Q==
+ dependencies:
+ loader-utils "^2.0.0"
+ schema-utils "^2.6.5"
+
+number-is-nan@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
+ integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=
+
+object-assign@^4.1.0, object-assign@^4.1.1:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
+ integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=
+
+object-copy@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c"
+ integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw=
+ dependencies:
+ copy-descriptor "^0.1.0"
+ define-property "^0.2.5"
+ kind-of "^3.0.3"
+
+object-inspect@^1.7.0:
+ version "1.8.0"
+ resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.8.0.tgz#df807e5ecf53a609cc6bfe93eac3cc7be5b3a9d0"
+ integrity sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==
+
+object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e"
+ integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==
+
+object-visit@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb"
+ integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=
+ dependencies:
+ isobject "^3.0.0"
+
+object.assign@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da"
+ integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==
+ dependencies:
+ define-properties "^1.1.2"
+ function-bind "^1.1.1"
+ has-symbols "^1.0.0"
+ object-keys "^1.0.11"
+
+object.entries@^1.1.0:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.2.tgz#bc73f00acb6b6bb16c203434b10f9a7e797d3add"
+ integrity sha512-BQdB9qKmb/HyNdMNWVr7O3+z5MUIx3aiegEIJqjMBbBf0YT9RRxTJSim4mzFqtyr7PDAHigq0N9dO0m0tRakQA==
+ dependencies:
+ define-properties "^1.1.3"
+ es-abstract "^1.17.5"
+ has "^1.0.3"
+
+object.fromentries@^2.0.0:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.2.tgz#4a09c9b9bb3843dd0f89acdb517a794d4f355ac9"
+ integrity sha512-r3ZiBH7MQppDJVLx6fhD618GKNG40CZYH9wgwdhKxBDDbQgjeWGGd4AtkZad84d291YxvWe7bJGuE65Anh0dxQ==
+ dependencies:
+ define-properties "^1.1.3"
+ es-abstract "^1.17.0-next.1"
+ function-bind "^1.1.1"
+ has "^1.0.3"
+
+object.pick@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747"
+ integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=
+ dependencies:
+ isobject "^3.0.1"
+
+object.values@^1.1.0, object.values@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.1.tgz#68a99ecde356b7e9295a3c5e0ce31dc8c953de5e"
+ integrity sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA==
+ dependencies:
+ define-properties "^1.1.3"
+ es-abstract "^1.17.0-next.1"
+ function-bind "^1.1.1"
+ has "^1.0.3"
+
+on-finished@~2.3.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947"
+ integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=
+ dependencies:
+ ee-first "1.1.1"
+
+once@^1.3.0, once@^1.3.1, once@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
+ integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=
+ dependencies:
+ wrappy "1"
+
+onetime@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4"
+ integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=
+ dependencies:
+ mimic-fn "^1.0.0"
+
+onetime@^5.1.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.0.tgz#fff0f3c91617fe62bb50189636e99ac8a6df7be5"
+ integrity sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==
+ dependencies:
+ mimic-fn "^2.1.0"
+
+optimist@~0.3.5:
+ version "0.3.7"
+ resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.3.7.tgz#c90941ad59e4273328923074d2cf2e7cbc6ec0d9"
+ integrity sha1-yQlBrVnkJzMokjB00s8ufLxuwNk=
+ dependencies:
+ wordwrap "~0.0.2"
+
+optionator@^0.8.3:
+ version "0.8.3"
+ resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495"
+ integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==
+ dependencies:
+ deep-is "~0.1.3"
+ fast-levenshtein "~2.0.6"
+ levn "~0.3.0"
+ prelude-ls "~1.1.2"
+ type-check "~0.3.2"
+ word-wrap "~1.2.3"
+
+optionator@^0.9.1:
+ version "0.9.1"
+ resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499"
+ integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==
+ dependencies:
+ deep-is "^0.1.3"
+ fast-levenshtein "^2.0.6"
+ levn "^0.4.1"
+ prelude-ls "^1.2.1"
+ type-check "^0.4.0"
+ word-wrap "^1.2.3"
+
+ora@^3.4.0:
+ version "3.4.0"
+ resolved "https://registry.yarnpkg.com/ora/-/ora-3.4.0.tgz#bf0752491059a3ef3ed4c85097531de9fdbcd318"
+ integrity sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==
+ dependencies:
+ chalk "^2.4.2"
+ cli-cursor "^2.1.0"
+ cli-spinners "^2.0.0"
+ log-symbols "^2.2.0"
+ strip-ansi "^5.2.0"
+ wcwidth "^1.0.1"
+
+ora@^4.0.3:
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/ora/-/ora-4.0.3.tgz#752a1b7b4be4825546a7a3d59256fa523b6b6d05"
+ integrity sha512-fnDebVFyz309A73cqCipVL1fBZewq4vwgSHfxh43vVy31mbyoQ8sCH3Oeaog/owYOs/lLlGVPCISQonTneg6Pg==
+ dependencies:
+ chalk "^3.0.0"
+ cli-cursor "^3.1.0"
+ cli-spinners "^2.2.0"
+ is-interactive "^1.0.0"
+ log-symbols "^3.0.0"
+ mute-stream "0.0.8"
+ strip-ansi "^6.0.0"
+ wcwidth "^1.0.1"
+
+os-browserify@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27"
+ integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=
+
+os-homedir@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3"
+ integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M=
+
+os-tmpdir@^1.0.0, os-tmpdir@~1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
+ integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=
+
+osenv@^0.1.4:
+ version "0.1.5"
+ resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410"
+ integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==
+ dependencies:
+ os-homedir "^1.0.0"
+ os-tmpdir "^1.0.0"
+
+p-cancelable@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc"
+ integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==
+
+p-limit@^1.1.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8"
+ integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==
+ dependencies:
+ p-try "^1.0.0"
+
+p-limit@^2.0.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.0.tgz#417c9941e6027a9abcba5092dd2904e255b5fbc2"
+ integrity sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==
+ dependencies:
+ p-try "^2.0.0"
+
+p-locate@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43"
+ integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=
+ dependencies:
+ p-limit "^1.1.0"
+
+p-locate@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4"
+ integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==
+ dependencies:
+ p-limit "^2.0.0"
+
+p-map@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b"
+ integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==
+ dependencies:
+ aggregate-error "^3.0.0"
+
+p-try@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3"
+ integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=
+
+p-try@^2.0.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6"
+ integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==
+
+pako@~1.0.5:
+ version "1.0.10"
+ resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.10.tgz#4328badb5086a426aa90f541977d4955da5c9732"
+ integrity sha512-0DTvPVU3ed8+HNXOu5Bs+o//Mbdj9VNQMUOe9oKCwh8l0GNwpTDMKCWbRjgtD291AWnkAgkqA/LOnQS8AmS1tw==
+
+parallel-transform@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.1.0.tgz#d410f065b05da23081fcd10f28854c29bda33b06"
+ integrity sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=
+ dependencies:
+ cyclist "~0.2.2"
+ inherits "^2.0.3"
+ readable-stream "^2.1.5"
+
+parent-module@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2"
+ integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==
+ dependencies:
+ callsites "^3.0.0"
+
+parse-asn1@^5.0.0:
+ version "5.1.4"
+ resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.4.tgz#37f6628f823fbdeb2273b4d540434a22f3ef1fcc"
+ integrity sha512-Qs5duJcuvNExRfFZ99HDD3z4mAi3r9Wl/FOjEOijlxwCZs7E7mW2vjTpgQ4J8LpTF8x5v+1Vn5UQFejmWT11aw==
+ dependencies:
+ asn1.js "^4.0.0"
+ browserify-aes "^1.0.0"
+ create-hash "^1.1.0"
+ evp_bytestokey "^1.0.0"
+ pbkdf2 "^3.0.3"
+ safe-buffer "^5.1.1"
+
+parse-entities@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/parse-entities/-/parse-entities-3.0.0.tgz#9ed6d6569b6cfc95ade058d683ddef239dad60dc"
+ integrity sha512-AJlcIFDNPEP33KyJLguv0xJc83BNvjxwpuUIcetyXUsLpVXAUCePJ5kIoYtEN2R1ac0cYaRu/vk9dVFkewHQhQ==
+ dependencies:
+ character-entities "^2.0.0"
+ character-entities-legacy "^2.0.0"
+ character-reference-invalid "^2.0.0"
+ is-alphanumerical "^2.0.0"
+ is-decimal "^2.0.0"
+ is-hexadecimal "^2.0.0"
+
+parse-gitignore@^0.4.0:
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/parse-gitignore/-/parse-gitignore-0.4.0.tgz#abf702e4b900524fff7902b683862857b63f93fe"
+ integrity sha1-q/cC5LkAUk//eQK2g4YoV7Y/k/4=
+ dependencies:
+ array-unique "^0.3.2"
+ is-glob "^3.1.0"
+
+parse-json@^2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9"
+ integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=
+ dependencies:
+ error-ex "^1.2.0"
+
+parse-json@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0"
+ integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=
+ dependencies:
+ error-ex "^1.3.1"
+ json-parse-better-errors "^1.0.1"
+
+parse-json@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.0.0.tgz#73e5114c986d143efa3712d4ea24db9a4266f60f"
+ integrity sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw==
+ dependencies:
+ "@babel/code-frame" "^7.0.0"
+ error-ex "^1.3.1"
+ json-parse-better-errors "^1.0.1"
+ lines-and-columns "^1.1.6"
+
+parse-ms@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/parse-ms/-/parse-ms-2.1.0.tgz#348565a753d4391fa524029956b172cb7753097d"
+ integrity sha512-kHt7kzLoS9VBZfUsiKjv43mr91ea+U05EyKkEtqp7vNbHxmaVuEqN7XxeEVnGrMtYOAxGrDElSi96K7EgO1zCA==
+
+parse-passwd@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6"
+ integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=
+
+parseurl@~1.3.3:
+ version "1.3.3"
+ resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4"
+ integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==
+
+pascalcase@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14"
+ integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=
+
+path-browserify@0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a"
+ integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==
+
+path-dirname@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0"
+ integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=
+
+path-exists@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515"
+ integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=
+
+path-is-absolute@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
+ integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
+
+path-key@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40"
+ integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=
+
+path-key@^3.0.0, path-key@^3.1.0:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375"
+ integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==
+
+path-parse@^1.0.6:
+ version "1.0.7"
+ resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735"
+ integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
+
+path-to-regexp@0.1.7:
+ version "0.1.7"
+ resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c"
+ integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=
+
+path-type@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73"
+ integrity sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=
+ dependencies:
+ pify "^2.0.0"
+
+path-type@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b"
+ integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==
+
+pathval@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.0.tgz#b942e6d4bde653005ef6b71361def8727d0645e0"
+ integrity sha1-uULm1L3mUwBe9rcTYd74cn0GReA=
+
+pbkdf2@^3.0.3:
+ version "3.0.17"
+ resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.17.tgz#976c206530617b14ebb32114239f7b09336e93a6"
+ integrity sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==
+ dependencies:
+ create-hash "^1.1.2"
+ create-hmac "^1.1.4"
+ ripemd160 "^2.0.1"
+ safe-buffer "^5.0.1"
+ sha.js "^2.4.8"
+
+picomatch@^2.0.4, picomatch@^2.0.5:
+ version "2.0.7"
+ resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.0.7.tgz#514169d8c7cd0bdbeecc8a2609e34a7163de69f6"
+ integrity sha512-oLHIdio3tZ0qH76NybpeneBhYVj0QFTfXEFTc/B3zKQspYfYYkWYgFsmzo+4kvId/bQRcNkVeguI3y+CD22BtA==
+
+picomatch@^2.2.1:
+ version "2.2.2"
+ resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad"
+ integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==
+
+pify@^2.0.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
+ integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw=
+
+pify@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231"
+ integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==
+
+pkg-conf@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/pkg-conf/-/pkg-conf-3.1.0.tgz#d9f9c75ea1bae0e77938cde045b276dac7cc69ae"
+ integrity sha512-m0OTbR/5VPNPqO1ph6Fqbj7Hv6QU7gR/tQW40ZqrL1rjgCU85W6C1bJn0BItuJqnR98PWzw7Z8hHeChD1WrgdQ==
+ dependencies:
+ find-up "^3.0.0"
+ load-json-file "^5.2.0"
+
+pkg-config@^1.1.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/pkg-config/-/pkg-config-1.1.1.tgz#557ef22d73da3c8837107766c52eadabde298fe4"
+ integrity sha1-VX7yLXPaPIg3EHdmxS6tq94pj+Q=
+ dependencies:
+ debug-log "^1.0.0"
+ find-root "^1.0.0"
+ xtend "^4.0.1"
+
+pkg-dir@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b"
+ integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=
+ dependencies:
+ find-up "^2.1.0"
+
+pkg-dir@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3"
+ integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==
+ dependencies:
+ find-up "^3.0.0"
+
+please-upgrade-node@^3.2.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz#aeddd3f994c933e4ad98b99d9a556efa0e2fe942"
+ integrity sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==
+ dependencies:
+ semver-compare "^1.0.0"
+
+pluralize@^8.0.0:
+ version "8.0.0"
+ resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-8.0.0.tgz#1a6fa16a38d12a1901e0320fa017051c539ce3b1"
+ integrity sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==
+
+posix-character-classes@^0.1.0:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab"
+ integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=
+
+pre-flight@^1.1.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/pre-flight/-/pre-flight-1.1.1.tgz#482fb1649fb400616a86b2706b11591f5cc8402d"
+ integrity sha512-glqyc2Hh3K+sYeSsVs+HhjyUVf8j6xwuFej0yjYjRYfSnOK8P3Na9GznkoPn48fR+9kTOfkocYIWrtWktp4AqA==
+ dependencies:
+ colors "^1.1.2"
+ commander "^2.9.0"
+ semver "^5.1.0"
+
+prelude-ls@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396"
+ integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==
+
+prelude-ls@~1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54"
+ integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=
+
+prepend-http@^1.0.1:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc"
+ integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=
+
+prepend-http@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897"
+ integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=
+
+pretty-ms@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/pretty-ms/-/pretty-ms-5.0.0.tgz#6133a8f55804b208e4728f6aa7bf01085e951e24"
+ integrity sha512-94VRYjL9k33RzfKiGokPBPpsmloBYSf5Ri+Pq19zlsEcUKFob+admeXr5eFDRuPjFmEOcjJvPGdillYOJyvZ7Q==
+ dependencies:
+ parse-ms "^2.1.0"
+
+pretty-ms@^5.1.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/pretty-ms/-/pretty-ms-5.1.0.tgz#b906bdd1ec9e9799995c372e2b1c34f073f95384"
+ integrity sha512-4gaK1skD2gwscCfkswYQRmddUb2GJZtzDGRjHWadVHtK/DIKFufa12MvES6/xu1tVbUYeia5bmLcwJtZJQUqnw==
+ dependencies:
+ parse-ms "^2.1.0"
+
+process-nextick-args@~2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2"
+ integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==
+
+process@^0.11.10, process@~0.11.0:
+ version "0.11.10"
+ resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182"
+ integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI=
+
+progress@^2.0.0, progress@^2.0.3:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8"
+ integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==
+
+promise-inflight@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3"
+ integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM=
+
+prop-types@^15.7.2:
+ version "15.7.2"
+ resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5"
+ integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==
+ dependencies:
+ loose-envify "^1.4.0"
+ object-assign "^4.1.1"
+ react-is "^16.8.1"
+
+proxy-addr@~2.0.5:
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.5.tgz#34cbd64a2d81f4b1fd21e76f9f06c8a45299ee34"
+ integrity sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ==
+ dependencies:
+ forwarded "~0.1.2"
+ ipaddr.js "1.9.0"
+
+prr@~1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476"
+ integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY=
+
+psl@^1.1.33:
+ version "1.8.0"
+ resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24"
+ integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==
+
+public-encrypt@^4.0.0:
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0"
+ integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==
+ dependencies:
+ bn.js "^4.1.0"
+ browserify-rsa "^4.0.0"
+ create-hash "^1.1.0"
+ parse-asn1 "^5.0.0"
+ randombytes "^2.0.1"
+ safe-buffer "^5.1.2"
+
+pump@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909"
+ integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==
+ dependencies:
+ end-of-stream "^1.1.0"
+ once "^1.3.1"
+
+pump@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64"
+ integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==
+ dependencies:
+ end-of-stream "^1.1.0"
+ once "^1.3.1"
+
+pumpify@^1.3.3:
+ version "1.5.1"
+ resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce"
+ integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==
+ dependencies:
+ duplexify "^3.6.0"
+ inherits "^2.0.3"
+ pump "^2.0.0"
+
+punycode@1.3.2:
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d"
+ integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=
+
+punycode@^1.2.4:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"
+ integrity sha1-wNWmOycYgArY4esPpSachN1BhF4=
+
+punycode@^2.1.0, punycode@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
+ integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
+
+qs@6.7.0:
+ version "6.7.0"
+ resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc"
+ integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==
+
+querystring-es3@^0.2.0:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73"
+ integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=
+
+querystring@0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620"
+ integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=
+
+ramda@^0.27.0:
+ version "0.27.0"
+ resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.27.0.tgz#915dc29865c0800bf3f69b8fd6c279898b59de43"
+ integrity sha512-pVzZdDpWwWqEVVLshWUHjNwuVP7SfcmPraYuqocJp1yo2U1R7P+5QAfDhdItkuoGqIBnBYrtPp7rEPqDn9HlZA==
+
+randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a"
+ integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==
+ dependencies:
+ safe-buffer "^5.1.0"
+
+randomfill@^1.0.3:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458"
+ integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==
+ dependencies:
+ randombytes "^2.0.5"
+ safe-buffer "^5.1.0"
+
+range-parser@~1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031"
+ integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==
+
+raw-body@2.4.0:
+ version "2.4.0"
+ resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332"
+ integrity sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==
+ dependencies:
+ bytes "3.1.0"
+ http-errors "1.7.2"
+ iconv-lite "0.4.24"
+ unpipe "1.0.0"
+
+rc@^1.2.7, rc@~1.2.8:
+ version "1.2.8"
+ resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed"
+ integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==
+ dependencies:
+ deep-extend "^0.6.0"
+ ini "~1.3.0"
+ minimist "^1.2.0"
+ strip-json-comments "~2.0.1"
+
+react-is@^16.8.1:
+ version "16.8.6"
+ resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.8.6.tgz#5bbc1e2d29141c9fbdfed456343fe2bc430a6a16"
+ integrity sha512-aUk3bHfZ2bRSVFFbbeVS4i+lNPZr3/WM5jT2J5omUVV1zzcs1nAaf3l51ctA5FFvCRbhrH0bdAsRRQddFJZPtA==
+
+read-pkg-up@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be"
+ integrity sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=
+ dependencies:
+ find-up "^2.0.0"
+ read-pkg "^2.0.0"
+
+read-pkg@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8"
+ integrity sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=
+ dependencies:
+ load-json-file "^2.0.0"
+ normalize-package-data "^2.3.2"
+ path-type "^2.0.0"
+
+"readable-stream@1 || 2", readable-stream@^2, readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6:
+ version "2.3.6"
+ resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf"
+ integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==
+ dependencies:
+ core-util-is "~1.0.0"
+ inherits "~2.0.3"
+ isarray "~1.0.0"
+ process-nextick-args "~2.0.0"
+ safe-buffer "~5.1.1"
+ string_decoder "~1.1.1"
+ util-deprecate "~1.0.1"
+
+readable-stream@^3.0.2:
+ version "3.6.0"
+ resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198"
+ integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==
+ dependencies:
+ inherits "^2.0.3"
+ string_decoder "^1.1.1"
+ util-deprecate "^1.0.1"
+
+readdirp@^2.2.1:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525"
+ integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==
+ dependencies:
+ graceful-fs "^4.1.11"
+ micromatch "^3.1.10"
+ readable-stream "^2.0.2"
+
+readdirp@~3.4.0:
+ version "3.4.0"
+ resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.4.0.tgz#9fdccdf9e9155805449221ac645e8303ab5b9ada"
+ integrity sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ==
+ dependencies:
+ picomatch "^2.2.1"
+
+readdirp@~3.6.0:
+ version "3.6.0"
+ resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7"
+ integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==
+ dependencies:
+ picomatch "^2.2.1"
+
+rechoir@^0.6.2:
+ version "0.6.2"
+ resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384"
+ integrity sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=
+ dependencies:
+ resolve "^1.1.6"
+
+regex-not@^1.0.0, regex-not@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c"
+ integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==
+ dependencies:
+ extend-shallow "^3.0.2"
+ safe-regex "^1.1.0"
+
+regexpp@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f"
+ integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==
+
+regexpp@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.0.0.tgz#dd63982ee3300e67b41c1956f850aa680d9d330e"
+ integrity sha512-Z+hNr7RAVWxznLPuA7DIh8UNX1j9CDrUQxskw9IrBE1Dxue2lyXT+shqEIeLUjrokxIP8CMy1WkjgG3rTsd5/g==
+
+regexpp@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2"
+ integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==
+
+remark-cli@^10.0.0:
+ version "10.0.0"
+ resolved "https://registry.yarnpkg.com/remark-cli/-/remark-cli-10.0.0.tgz#3b0e20f2ad3909f35c7a6fb3f721c82f6ff5beac"
+ integrity sha512-Yc5kLsJ5vgiQJl6xMLLJHqPac6OSAC5DOqKQrtmzJxSdJby2Jgr+OpIAkWQYwvbNHEspNagyoQnuwK2UCWg73g==
+ dependencies:
+ remark "^14.0.0"
+ unified-args "^9.0.0"
+
+remark-lint-blockquote-indentation@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/remark-lint-blockquote-indentation/-/remark-lint-blockquote-indentation-2.0.1.tgz#27347959acf42a6c3e401488d8210e973576b254"
+ integrity sha512-uJ9az/Ms9AapnkWpLSCJfawBfnBI2Tn1yUsPNqIFv6YM98ymetItUMyP6ng9NFPqDvTQBbiarulkgoEo0wcafQ==
+ dependencies:
+ mdast-util-to-string "^1.0.2"
+ pluralize "^8.0.0"
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-position "^3.0.0"
+ unist-util-visit "^2.0.0"
+
+remark-lint-code-block-style@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/remark-lint-code-block-style/-/remark-lint-code-block-style-2.0.1.tgz#448b0f2660acfcdfff2138d125ff5b1c1279c0cb"
+ integrity sha512-eRhmnColmSxJhO61GHZkvO67SpHDshVxs2j3+Zoc5Y1a4zQT2133ZAij04XKaBFfsVLjhbY/+YOWxgvtjx2nmA==
+ dependencies:
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-position "^3.0.0"
+ unist-util-visit "^2.0.0"
+
+remark-lint-definition-case@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/remark-lint-definition-case/-/remark-lint-definition-case-2.0.1.tgz#10340eb2f87acff41140d52ad7e5b40b47e6690a"
+ integrity sha512-M+XlThtQwEJLQnQb5Gi6xZdkw92rGp7m2ux58WMw/Qlcg02WgHR/O0OcHPe5VO5hMJrtI+cGG5T0svsCgRZd3w==
+ dependencies:
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-position "^3.0.0"
+ unist-util-visit "^2.0.0"
+
+remark-lint-definition-spacing@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/remark-lint-definition-spacing/-/remark-lint-definition-spacing-2.0.1.tgz#97f01bf9bf77a7bdf8013b124b7157dd90b07c64"
+ integrity sha512-xK9DOQO5MudITD189VyUiMHBIKltW1oc55L7Fti3i9DedXoBG7Phm+V9Mm7IdWzCVkquZVgVk63xQdqzSQRrSQ==
+ dependencies:
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-position "^3.0.0"
+ unist-util-visit "^2.0.0"
+
+remark-lint-emphasis-marker@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/remark-lint-emphasis-marker/-/remark-lint-emphasis-marker-2.0.1.tgz#1d5ca2070d4798d16c23120726158157796dc317"
+ integrity sha512-7mpbAUrSnHiWRyGkbXRL5kfSKY9Cs8cdob7Fw+Z02/pufXMF4yRWaegJ5NTUu1RE+SKlF44wtWWjvcIoyY6/aw==
+ dependencies:
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-position "^3.0.0"
+ unist-util-visit "^2.0.0"
+
+remark-lint-fenced-code-flag@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/remark-lint-fenced-code-flag/-/remark-lint-fenced-code-flag-2.0.1.tgz#2cb3ddb1157082c45760c7d01ca08e13376aaf62"
+ integrity sha512-+COnWHlS/h02FMxoZWxNlZW3Y8M0cQQpmx3aNCbG7xkyMyCKsMLg9EmRvYHHIbxQCuF3JT0WWx5AySqlc7d+NA==
+ dependencies:
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-position "^3.0.0"
+ unist-util-visit "^2.0.0"
+
+remark-lint-fenced-code-marker@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/remark-lint-fenced-code-marker/-/remark-lint-fenced-code-marker-2.0.1.tgz#7bbeb0fb45b0818a3c8a2d232cf0c723ade58ecf"
+ integrity sha512-lujpjm04enn3ma6lITlttadld6eQ1OWAEcT3qZzvFHp+zPraC0yr0eXlvtDN/0UH8mrln/QmGiZp3i8IdbucZg==
+ dependencies:
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-position "^3.0.0"
+ unist-util-visit "^2.0.0"
+
+remark-lint-file-extension@^1.0.0:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/remark-lint-file-extension/-/remark-lint-file-extension-1.0.3.tgz#a7fc78fbf041e513c618b2cca0f2160ee37daa13"
+ integrity sha512-P5gzsxKmuAVPN7Kq1W0f8Ss0cFKfu+OlezYJWXf+5qOa+9Y5GqHEUOobPnsmNFZrVMiM7JoqJN2C9ZjrUx3N6Q==
+ dependencies:
+ unified-lint-rule "^1.0.0"
+
+remark-lint-final-definition@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/remark-lint-final-definition/-/remark-lint-final-definition-2.1.0.tgz#b6e654c01ebcb1afc936d7b9cd74db8ec273e0bb"
+ integrity sha512-83K7n2icOHPfBzbR5Mr1o7cu8gOjD8FwJkFx/ly+rW+8SHfjCj4D3WOFGQ1xVdmHjfomBDXXDSNo2oiacADVXQ==
+ dependencies:
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-position "^3.0.0"
+ unist-util-visit "^2.0.0"
+
+remark-lint-hard-break-spaces@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/remark-lint-hard-break-spaces/-/remark-lint-hard-break-spaces-2.0.1.tgz#2149b55cda17604562d040c525a2a0d26aeb0f0f"
+ integrity sha512-Qfn/BMQFamHhtbfLrL8Co/dbYJFLRL4PGVXZ5wumkUO5f9FkZC2RsV+MD9lisvGTkJK0ZEJrVVeaPbUIFM0OAw==
+ dependencies:
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-position "^3.0.0"
+ unist-util-visit "^2.0.0"
+
+remark-lint-heading-increment@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/remark-lint-heading-increment/-/remark-lint-heading-increment-2.0.1.tgz#b578f251508a05d79bc2d1ae941e0620e23bf1d3"
+ integrity sha512-bYDRmv/lk3nuWXs2VSD1B4FneGT6v7a74FuVmb305hyEMmFSnneJvVgnOJxyKlbNlz12pq1IQ6MhlJBda/SFtQ==
+ dependencies:
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-visit "^2.0.0"
+
+remark-lint-heading-style@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/remark-lint-heading-style/-/remark-lint-heading-style-2.0.1.tgz#8216fca67d97bbbeec8a19b6c71bfefc16549f72"
+ integrity sha512-IrFLNs0M5Vbn9qg51AYhGUfzgLAcDOjh2hFGMz3mx664dV6zLcNZOPSdJBBJq3JQR4gKpoXcNwN1+FFaIATj+A==
+ dependencies:
+ mdast-util-heading-style "^1.0.2"
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-visit "^2.0.0"
+
+remark-lint-link-title-style@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/remark-lint-link-title-style/-/remark-lint-link-title-style-2.0.1.tgz#51a595c69fcfa73a245a030dfaa3504938a1173a"
+ integrity sha512-+Q7Ew8qpOQzjqbDF6sUHmn9mKgje+m2Ho8Xz7cEnGIRaKJgtJzkn/dZqQM/az0gn3zaN6rOuwTwqw4EsT5EsIg==
+ dependencies:
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-position "^3.0.0"
+ unist-util-visit "^2.0.0"
+ vfile-location "^3.0.0"
+
+remark-lint-list-item-content-indent@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/remark-lint-list-item-content-indent/-/remark-lint-list-item-content-indent-2.0.1.tgz#96387459440dcd61e522ab02bff138b32bfaa63a"
+ integrity sha512-OzUMqavxyptAdG7vWvBSMc9mLW9ZlTjbW4XGayzczd3KIr6Uwp3NEFXKx6MLtYIM/vwBqMrPQUrObOC7A2uBpQ==
+ dependencies:
+ pluralize "^8.0.0"
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-position "^3.0.0"
+ unist-util-visit "^2.0.0"
+
+remark-lint-list-item-indent@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/remark-lint-list-item-indent/-/remark-lint-list-item-indent-2.0.1.tgz#c6472514e17bc02136ca87936260407ada90bf8d"
+ integrity sha512-4IKbA9GA14Q9PzKSQI6KEHU/UGO36CSQEjaDIhmb9UOhyhuzz4vWhnSIsxyI73n9nl9GGRAMNUSGzr4pQUFwTA==
+ dependencies:
+ pluralize "^8.0.0"
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-position "^3.0.0"
+ unist-util-visit "^2.0.0"
+
+remark-lint-list-item-spacing@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/remark-lint-list-item-spacing/-/remark-lint-list-item-spacing-3.0.0.tgz#14c18fe8c0f19231edb5cf94abda748bb773110b"
+ integrity sha512-SRUVonwdN3GOSFb6oIYs4IfJxIVR+rD0nynkX66qEO49/qDDT1PPvkndis6Nyew5+t+2V/Db9vqllL6SWbnEtw==
+ dependencies:
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-position "^3.0.0"
+ unist-util-visit "^2.0.0"
+
+remark-lint-maximum-heading-length@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/remark-lint-maximum-heading-length/-/remark-lint-maximum-heading-length-2.0.1.tgz#56f240707a75b59bce3384ccc9da94548affa98f"
+ integrity sha512-1CjJ71YDqEpoOjUnc4wrwZV8ZGXWUIYRYeGoarAy3QKHepJL9M+zkdbOxZDfhc3tjVoDW/LWcgsW+DEpczgiMA==
+ dependencies:
+ mdast-util-to-string "^1.0.2"
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-visit "^2.0.0"
+
+remark-lint-maximum-line-length@^2.0.0:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/remark-lint-maximum-line-length/-/remark-lint-maximum-line-length-2.0.3.tgz#d0d15410637d61b031a83d7c78022ec46d6c858a"
+ integrity sha512-zyWHBFh1oPAy+gkaVFXiTHYP2WwriIeBtaarDqkweytw0+qmuikjVMJTWbQ3+XfYBreD7KKDM9SI79nkp0/IZQ==
+ dependencies:
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-position "^3.0.0"
+ unist-util-visit "^2.0.0"
+
+remark-lint-no-auto-link-without-protocol@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/remark-lint-no-auto-link-without-protocol/-/remark-lint-no-auto-link-without-protocol-2.0.1.tgz#f75e5c24adb42385593e0d75ca39987edb70b6c4"
+ integrity sha512-TFcXxzucsfBb/5uMqGF1rQA+WJJqm1ZlYQXyvJEXigEZ8EAxsxZGPb/gOQARHl/y0vymAuYxMTaChavPKaBqpQ==
+ dependencies:
+ mdast-util-to-string "^1.0.2"
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-position "^3.0.0"
+ unist-util-visit "^2.0.0"
+
+remark-lint-no-blockquote-without-marker@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/remark-lint-no-blockquote-without-marker/-/remark-lint-no-blockquote-without-marker-4.0.0.tgz#856fb64dd038fa8fc27928163caa24a30ff4d790"
+ integrity sha512-Y59fMqdygRVFLk1gpx2Qhhaw5IKOR9T38Wf7pjR07bEFBGUNfcoNVIFMd1TCJfCPQxUyJzzSqfZz/KT7KdUuiQ==
+ dependencies:
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.0.0"
+ unist-util-position "^3.0.0"
+ unist-util-visit "^2.0.0"
+ vfile-location "^3.0.0"
+
+remark-lint-no-consecutive-blank-lines@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/remark-lint-no-consecutive-blank-lines/-/remark-lint-no-consecutive-blank-lines-3.0.0.tgz#c8fe11095b8f031a1406da273722bd4a9174bf41"
+ integrity sha512-kmzLlOLrapBKEngwYFTdCZDmeOaze6adFPB7G0EdymD9V1mpAlnneINuOshRLEDKK5fAhXKiZXxdGIaMPkiXrA==
+ dependencies:
+ pluralize "^8.0.0"
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-position "^3.0.0"
+ unist-util-visit "^2.0.0"
+
+remark-lint-no-duplicate-headings@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/remark-lint-no-duplicate-headings/-/remark-lint-no-duplicate-headings-2.0.1.tgz#4a4b70e029155ebcfc03d8b2358c427b69a87576"
+ integrity sha512-F6AP0FJcHIlkmq0pHX0J5EGvLA9LfhuYTvnNO8y3kvflHeRjFkDyt2foz/taXR8OcLQR51n/jIJiwrrSMbiauw==
+ dependencies:
+ mdast-util-to-string "^1.0.2"
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-position "^3.0.0"
+ unist-util-stringify-position "^2.0.0"
+ unist-util-visit "^2.0.0"
+
+remark-lint-no-emphasis-as-heading@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/remark-lint-no-emphasis-as-heading/-/remark-lint-no-emphasis-as-heading-2.0.1.tgz#fcc064133fe00745943c334080fed822f72711ea"
+ integrity sha512-z86+yWtVivtuGIxIC4g9RuATbgZgOgyLcnaleonJ7/HdGTYssjJNyqCJweaWSLoaI0akBQdDwmtJahW5iuX3/g==
+ dependencies:
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-visit "^2.0.0"
+
+remark-lint-no-file-name-articles@^1.0.0:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/remark-lint-no-file-name-articles/-/remark-lint-no-file-name-articles-1.0.3.tgz#c712d06a24e24b0c4c3666cf3084a0052a2c2c17"
+ integrity sha512-YZDJDKUWZEmhrO6tHB0u0K0K2qJKxyg/kryr14OaRMvWLS62RgMn97sXPZ38XOSN7mOcCnl0k7/bClghJXx0sg==
+ dependencies:
+ unified-lint-rule "^1.0.0"
+
+remark-lint-no-file-name-consecutive-dashes@^1.0.0:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/remark-lint-no-file-name-consecutive-dashes/-/remark-lint-no-file-name-consecutive-dashes-1.0.3.tgz#6a96ddf60e18dcdb004533733f3ccbfd8ab076ae"
+ integrity sha512-7f4vyXn/ca5lAguWWC3eu5hi8oZ7etX7aQlnTSgQZeslnJCbVJm6V6prFJKAzrqbBzMicUXr5pZLBDoXyTvHHw==
+ dependencies:
+ unified-lint-rule "^1.0.0"
+
+remark-lint-no-file-name-irregular-characters@^1.0.0:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/remark-lint-no-file-name-irregular-characters/-/remark-lint-no-file-name-irregular-characters-1.0.3.tgz#6dcd8b51e00e10094585918cb8e7fc999df776c3"
+ integrity sha512-b4xIy1Yi8qZpM2vnMN+6gEujagPGxUBAs1judv6xJQngkl5d5zT8VQZsYsTGHku4NWHjjh3b7vK5mr0/yp4JSg==
+ dependencies:
+ unified-lint-rule "^1.0.0"
+
+remark-lint-no-file-name-mixed-case@^1.0.0:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/remark-lint-no-file-name-mixed-case/-/remark-lint-no-file-name-mixed-case-1.0.3.tgz#0ebe5eedd0191507d27ad6ac5eed1778cb33c2de"
+ integrity sha512-d7rJ4c8CzDbEbGafw2lllOY8k7pvnsO77t8cV4PHFylwQ3hmCdTHLuDvK87G3DaWCeKclp0PMyamfOgJWKMkPA==
+ dependencies:
+ unified-lint-rule "^1.0.0"
+
+remark-lint-no-file-name-outer-dashes@^1.0.0:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/remark-lint-no-file-name-outer-dashes/-/remark-lint-no-file-name-outer-dashes-1.0.4.tgz#c6e22a5cc64df4e12fc31712a927e8039854a666"
+ integrity sha512-+bZvvme2Bm3Vp5L2iKuvGHYVmHKrTkkRt8JqJPGepuhvBvT4Q7+CgfKyMtC/hIjyl+IcuJQ2H0qPRzdicjy1wQ==
+ dependencies:
+ unified-lint-rule "^1.0.0"
+
+remark-lint-no-heading-punctuation@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/remark-lint-no-heading-punctuation/-/remark-lint-no-heading-punctuation-2.0.1.tgz#face59f9a95c8aa278a8ee0c728bc44cd53ea9ed"
+ integrity sha512-lY/eF6GbMeGu4cSuxfGHyvaQQBIq/6T/o+HvAR5UfxSTxmxZFwbZneAI2lbeR1zPcqOU87NsZ5ZZzWVwdLpPBw==
+ dependencies:
+ mdast-util-to-string "^1.0.2"
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-visit "^2.0.0"
+
+remark-lint-no-inline-padding@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/remark-lint-no-inline-padding/-/remark-lint-no-inline-padding-3.0.0.tgz#14c2722bcddc648297a54298107a922171faf6eb"
+ integrity sha512-3s9uW3Yux9RFC0xV81MQX3bsYs+UY7nPnRuMxeIxgcVwxQ4E/mTJd9QjXUwBhU9kdPtJ5AalngdmOW2Tgar8Cg==
+ dependencies:
+ mdast-util-to-string "^1.0.2"
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-visit "^2.0.0"
+
+remark-lint-no-literal-urls@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/remark-lint-no-literal-urls/-/remark-lint-no-literal-urls-2.0.1.tgz#731908f9866c1880e6024dcee1269fb0f40335d6"
+ integrity sha512-IDdKtWOMuKVQIlb1CnsgBoyoTcXU3LppelDFAIZePbRPySVHklTtuK57kacgU5grc7gPM04bZV96eliGrRU7Iw==
+ dependencies:
+ mdast-util-to-string "^1.0.2"
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-position "^3.0.0"
+ unist-util-visit "^2.0.0"
+
+remark-lint-no-multiple-toplevel-headings@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/remark-lint-no-multiple-toplevel-headings/-/remark-lint-no-multiple-toplevel-headings-2.0.1.tgz#3ff2b505adf720f4ff2ad2b1021f8cfd50ad8635"
+ integrity sha512-VKSItR6c+u3OsE5pUiSmNusERNyQS9Nnji26ezoQ1uvy06k3RypIjmzQqJ/hCkSiF+hoyC3ibtrrGT8gorzCmQ==
+ dependencies:
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-position "^3.0.0"
+ unist-util-stringify-position "^2.0.0"
+ unist-util-visit "^2.0.0"
+
+remark-lint-no-shell-dollars@^2.0.0:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/remark-lint-no-shell-dollars/-/remark-lint-no-shell-dollars-2.0.2.tgz#b2c6c3ed95e5615f8e5f031c7d271a18dc17618e"
+ integrity sha512-zhkHZOuyaD3r/TUUkkVqW0OxsR9fnSrAnHIF63nfJoAAUezPOu8D1NBsni6rX8H2DqGbPYkoeWrNsTwiKP0yow==
+ dependencies:
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-visit "^2.0.0"
+
+remark-lint-no-shortcut-reference-image@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/remark-lint-no-shortcut-reference-image/-/remark-lint-no-shortcut-reference-image-2.0.1.tgz#d174d12a57e8307caf6232f61a795bc1d64afeaa"
+ integrity sha512-2jcZBdnN6ecP7u87gkOVFrvICLXIU5OsdWbo160FvS/2v3qqqwF2e/n/e7D9Jd+KTq1mR1gEVVuTqkWWuh3cig==
+ dependencies:
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-visit "^2.0.0"
+
+remark-lint-no-shortcut-reference-link@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/remark-lint-no-shortcut-reference-link/-/remark-lint-no-shortcut-reference-link-2.0.1.tgz#8f963f81036e45cfb7061b3639e9c6952308bc94"
+ integrity sha512-pTZbslG412rrwwGQkIboA8wpBvcjmGFmvugIA+UQR+GfFysKtJ5OZMPGJ98/9CYWjw9Z5m0/EktplZ5TjFjqwA==
+ dependencies:
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-visit "^2.0.0"
+
+remark-lint-no-table-indentation@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/remark-lint-no-table-indentation/-/remark-lint-no-table-indentation-3.0.0.tgz#f3c3fc24375069ec8e510f43050600fb22436731"
+ integrity sha512-+l7GovI6T+3LhnTtz/SmSRyOb6Fxy6tmaObKHrwb/GAebI/4MhFS1LVo3vbiP/RpPYtyQoFbbuXI55hqBG4ibQ==
+ dependencies:
+ unified-lint-rule "^1.0.0"
+ unist-util-position "^3.0.0"
+ unist-util-visit "^2.0.0"
+ vfile-location "^3.0.0"
+
+remark-lint-ordered-list-marker-style@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/remark-lint-ordered-list-marker-style/-/remark-lint-ordered-list-marker-style-2.0.1.tgz#183c31967e6f2ae8ef00effad03633f7fd00ffaa"
+ integrity sha512-Cnpw1Dn9CHn+wBjlyf4qhPciiJroFOEGmyfX008sQ8uGoPZsoBVIJx76usnHklojSONbpjEDcJCjnOvfAcWW1A==
+ dependencies:
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-position "^3.0.0"
+ unist-util-visit "^2.0.0"
+
+remark-lint-ordered-list-marker-value@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/remark-lint-ordered-list-marker-value/-/remark-lint-ordered-list-marker-value-2.0.1.tgz#0de343de2efb41f01eae9f0f7e7d30fe43db5595"
+ integrity sha512-blt9rS7OKxZ2NW8tqojELeyNEwPhhTJGVa+YpUkdEH+KnrdcD7Nzhnj6zfLWOx6jFNZk3jpq5nvLFAPteHaNKg==
+ dependencies:
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-position "^3.0.0"
+ unist-util-visit "^2.0.0"
+
+remark-lint-rule-style@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/remark-lint-rule-style/-/remark-lint-rule-style-2.0.1.tgz#f59bd82e75d3eaabd0eee1c8c0f5513372eb553c"
+ integrity sha512-hz4Ff9UdlYmtO6Czz99WJavCjqCer7Cav4VopXt+yVIikObw96G5bAuLYcVS7hvMUGqC9ZuM02/Y/iq9n8pkAg==
+ dependencies:
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-position "^3.0.0"
+ unist-util-visit "^2.0.0"
+
+remark-lint-strong-marker@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/remark-lint-strong-marker/-/remark-lint-strong-marker-2.0.1.tgz#1ad8f190c6ac0f8138b638965ccf3bcd18f6d4e4"
+ integrity sha512-8X2IsW1jZ5FmW9PLfQjkL0OVy/J3xdXLcZrG1GTeQKQ91BrPFyEZqUM2oM6Y4S6LGtxWer+neZkPZNroZoRPBQ==
+ dependencies:
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-position "^3.0.0"
+ unist-util-visit "^2.0.0"
+
+remark-lint-table-cell-padding@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/remark-lint-table-cell-padding/-/remark-lint-table-cell-padding-3.0.0.tgz#a769ba1999984ff5f90294fb6ccb8aead7e8a12f"
+ integrity sha512-sEKrbyFZPZpxI39R8/r+CwUrin9YtyRwVn0SQkNQEZWZcIpylK+bvoKIldvLIXQPob+ZxklL0GPVRzotQMwuWQ==
+ dependencies:
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-position "^3.0.0"
+ unist-util-visit "^2.0.0"
+
+remark-lint-table-pipe-alignment@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/remark-lint-table-pipe-alignment/-/remark-lint-table-pipe-alignment-2.0.1.tgz#12b7e4c54473d69c9866cb33439c718d09cffcc5"
+ integrity sha512-O89U7bp0ja6uQkT2uQrNB76GaPvFabrHiUGhqEUnld21yEdyj7rgS57kn84lZNSuuvN1Oor6bDyCwWQGzzpoOQ==
+ dependencies:
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-position "^3.0.0"
+ unist-util-visit "^2.0.0"
+
+remark-lint-table-pipes@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/remark-lint-table-pipes/-/remark-lint-table-pipes-3.0.0.tgz#b30b055d594cae782667eec91c6c5b35928ab259"
+ integrity sha512-QPokSazEdl0Y8ayUV9UB0Ggn3Jos/RAQwIo0z1KDGnJlGDiF80Jc6iU9RgDNUOjlpQffSLIfSVxH5VVYF/K3uQ==
+ dependencies:
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-position "^3.0.0"
+ unist-util-visit "^2.0.0"
+
+remark-lint-unordered-list-marker-style@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/remark-lint-unordered-list-marker-style/-/remark-lint-unordered-list-marker-style-2.0.1.tgz#e64692aa9594dbe7e945ae76ab2218949cd92477"
+ integrity sha512-8KIDJNDtgbymEvl3LkrXgdxPMTOndcux3BHhNGB2lU4UnxSpYeHsxcDgirbgU6dqCAfQfvMjPvfYk19QTF9WZA==
+ dependencies:
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-position "^3.0.0"
+ unist-util-visit "^2.0.0"
+
+remark-lint@^8.0.0:
+ version "8.0.0"
+ resolved "https://registry.yarnpkg.com/remark-lint/-/remark-lint-8.0.0.tgz#6e40894f4a39eaea31fc4dd45abfaba948bf9a09"
+ integrity sha512-ESI8qJQ/TIRjABDnqoFsTiZntu+FRifZ5fJ77yX63eIDijl/arvmDvT+tAf75/Nm5BFL4R2JFUtkHRGVjzYUsg==
+ dependencies:
+ remark-message-control "^6.0.0"
+
+remark-message-control@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/remark-message-control/-/remark-message-control-6.0.0.tgz#955b054b38c197c9f2e35b1d88a4912949db7fc5"
+ integrity sha512-k9bt7BYc3G7YBdmeAhvd3VavrPa/XlKWR3CyHjr4sLO9xJyly8WHHT3Sp+8HPR8lEUv+/sZaffL7IjMLV0f6BA==
+ dependencies:
+ mdast-comment-marker "^1.0.0"
+ unified-message-control "^3.0.0"
+
+remark-parse@^10.0.0:
+ version "10.0.0"
+ resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-10.0.0.tgz#65e2b2b34d8581d36b97f12a2926bb2126961cb4"
+ integrity sha512-07ei47p2Xl7Bqbn9H2VYQYirnAFJPwdMuypdozWsSbnmrkgA2e2sZLZdnDNrrsxR4onmIzH/J6KXqKxCuqHtPQ==
+ dependencies:
+ "@types/mdast" "^3.0.0"
+ mdast-util-from-markdown "^1.0.0"
+ unified "^10.0.0"
+
+remark-preset-lint-markdown-style-guide@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/remark-preset-lint-markdown-style-guide/-/remark-preset-lint-markdown-style-guide-4.0.0.tgz#976b6ffd7f37aa90868e081a69241fcde3a297d4"
+ integrity sha512-gczDlfZ28Fz0IN/oddy0AH4CiTu9S8d3pJWUsrnwFiafjhJjPGobGE1OD3bksi53md1Bp4K0fzo99YYfvB4Sjw==
+ dependencies:
+ remark-lint "^8.0.0"
+ remark-lint-blockquote-indentation "^2.0.0"
+ remark-lint-code-block-style "^2.0.0"
+ remark-lint-definition-case "^2.0.0"
+ remark-lint-definition-spacing "^2.0.0"
+ remark-lint-emphasis-marker "^2.0.0"
+ remark-lint-fenced-code-flag "^2.0.0"
+ remark-lint-fenced-code-marker "^2.0.0"
+ remark-lint-file-extension "^1.0.0"
+ remark-lint-final-definition "^2.0.0"
+ remark-lint-hard-break-spaces "^2.0.0"
+ remark-lint-heading-increment "^2.0.0"
+ remark-lint-heading-style "^2.0.0"
+ remark-lint-link-title-style "^2.0.0"
+ remark-lint-list-item-content-indent "^2.0.0"
+ remark-lint-list-item-indent "^2.0.0"
+ remark-lint-list-item-spacing "^3.0.0"
+ remark-lint-maximum-heading-length "^2.0.0"
+ remark-lint-maximum-line-length "^2.0.0"
+ remark-lint-no-auto-link-without-protocol "^2.0.0"
+ remark-lint-no-blockquote-without-marker "^4.0.0"
+ remark-lint-no-consecutive-blank-lines "^3.0.0"
+ remark-lint-no-duplicate-headings "^2.0.0"
+ remark-lint-no-emphasis-as-heading "^2.0.0"
+ remark-lint-no-file-name-articles "^1.0.0"
+ remark-lint-no-file-name-consecutive-dashes "^1.0.0"
+ remark-lint-no-file-name-irregular-characters "^1.0.0"
+ remark-lint-no-file-name-mixed-case "^1.0.0"
+ remark-lint-no-file-name-outer-dashes "^1.0.0"
+ remark-lint-no-heading-punctuation "^2.0.0"
+ remark-lint-no-inline-padding "^3.0.0"
+ remark-lint-no-literal-urls "^2.0.0"
+ remark-lint-no-multiple-toplevel-headings "^2.0.0"
+ remark-lint-no-shell-dollars "^2.0.0"
+ remark-lint-no-shortcut-reference-image "^2.0.0"
+ remark-lint-no-shortcut-reference-link "^2.0.0"
+ remark-lint-no-table-indentation "^3.0.0"
+ remark-lint-ordered-list-marker-style "^2.0.0"
+ remark-lint-ordered-list-marker-value "^2.0.0"
+ remark-lint-rule-style "^2.0.0"
+ remark-lint-strong-marker "^2.0.0"
+ remark-lint-table-cell-padding "^3.0.0"
+ remark-lint-table-pipe-alignment "^2.0.0"
+ remark-lint-table-pipes "^3.0.0"
+ remark-lint-unordered-list-marker-style "^2.0.0"
+
+remark-stringify@^10.0.0:
+ version "10.0.0"
+ resolved "https://registry.yarnpkg.com/remark-stringify/-/remark-stringify-10.0.0.tgz#7f23659d92b2d5da489e3c858656d7bbe045f161"
+ integrity sha512-3LAQqJ/qiUxkWc7fUcVuB7RtIT38rvmxfmJG8z1TiE/D8zi3JGQ2tTcTJu9Tptdpb7gFwU0whRi5q1FbFOb9yA==
+ dependencies:
+ "@types/mdast" "^3.0.0"
+ mdast-util-to-markdown "^1.0.0"
+ unified "^10.0.0"
+
+remark@^14.0.0:
+ version "14.0.1"
+ resolved "https://registry.yarnpkg.com/remark/-/remark-14.0.1.tgz#a97280d4f2a3010a7d81e6c292a310dcd5554d80"
+ integrity sha512-7zLG3u8EUjOGuaAS9gUNJPD2j+SqDqAFHv2g6WMpE5CU9rZ6e3IKDM12KHZ3x+YNje+NMAuN55yx8S5msGSx7Q==
+ dependencies:
+ "@types/mdast" "^3.0.0"
+ remark-parse "^10.0.0"
+ remark-stringify "^10.0.0"
+ unified "^10.0.0"
+
+remove-trailing-separator@^1.0.1:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef"
+ integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8=
+
+repeat-element@^1.1.2:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce"
+ integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==
+
+repeat-string@^1.0.0, repeat-string@^1.6.1:
+ version "1.6.1"
+ resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637"
+ integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc=
+
+require-directory@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
+ integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I=
+
+require-main-filename@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b"
+ integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==
+
+requireindex@~1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/requireindex/-/requireindex-1.1.0.tgz#e5404b81557ef75db6e49c5a72004893fe03e162"
+ integrity sha1-5UBLgVV+91225JxacgBIk/4D4WI=
+
+resolve-cwd@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a"
+ integrity sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=
+ dependencies:
+ resolve-from "^3.0.0"
+
+resolve-dir@^1.0.0, resolve-dir@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43"
+ integrity sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=
+ dependencies:
+ expand-tilde "^2.0.0"
+ global-modules "^1.0.0"
+
+resolve-from@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748"
+ integrity sha1-six699nWiBvItuZTM17rywoYh0g=
+
+resolve-from@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6"
+ integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==
+
+resolve-url@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a"
+ integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=
+
+resolve@^1.1.6, resolve@^1.10.0:
+ version "1.11.1"
+ resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.11.1.tgz#ea10d8110376982fef578df8fc30b9ac30a07a3e"
+ integrity sha512-vIpgF6wfuJOZI7KKKSP+HmiKggadPQAdsp5HiC1mvqnfp0gF1vdwgBWZIdrVft9pgqoMFQN+R7BSWZiBxx+BBw==
+ dependencies:
+ path-parse "^1.0.6"
+
+resolve@^1.10.1, resolve@^1.11.0, resolve@^1.13.1, resolve@^1.17.0:
+ version "1.17.0"
+ resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444"
+ integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==
+ dependencies:
+ path-parse "^1.0.6"
+
+responselike@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7"
+ integrity sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=
+ dependencies:
+ lowercase-keys "^1.0.0"
+
+restore-cursor@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf"
+ integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368=
+ dependencies:
+ onetime "^2.0.0"
+ signal-exit "^3.0.2"
+
+restore-cursor@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e"
+ integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==
+ dependencies:
+ onetime "^5.1.0"
+ signal-exit "^3.0.2"
+
+ret@~0.1.10:
+ version "0.1.15"
+ resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc"
+ integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==
+
+reusify@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76"
+ integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==
+
+rimraf@2.6.3, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.3:
+ version "2.6.3"
+ resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab"
+ integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==
+ dependencies:
+ glob "^7.1.3"
+
+rimraf@~2.2.6:
+ version "2.2.8"
+ resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.2.8.tgz#e439be2aaee327321952730f99a8929e4fc50582"
+ integrity sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI=
+
+ripemd160@^2.0.0, ripemd160@^2.0.1:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c"
+ integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==
+ dependencies:
+ hash-base "^3.0.0"
+ inherits "^2.0.1"
+
+run-async@^2.4.0:
+ version "2.4.1"
+ resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455"
+ integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==
+
+run-parallel@^1.1.2, run-parallel@^1.1.9:
+ version "1.1.9"
+ resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.1.9.tgz#c9dd3a7cf9f4b2c4b6244e173a6ed866e61dd679"
+ integrity sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q==
+
+run-queue@^1.0.0, run-queue@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47"
+ integrity sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=
+ dependencies:
+ aproba "^1.1.1"
+
+rxjs@^6.5.5, rxjs@^6.6.0:
+ version "6.6.0"
+ resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.0.tgz#af2901eedf02e3a83ffa7f886240ff9018bbec84"
+ integrity sha512-3HMA8z/Oz61DUHe+SdOiQyzIf4tOx5oQHmMir7IZEu6TMqCLHT4LRcmNaUS0NwOz8VLvmmBduMsoaUvMaIiqzg==
+ dependencies:
+ tslib "^1.9.0"
+
+safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
+ version "5.1.2"
+ resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
+ integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
+
+safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.1, safe-buffer@~5.2.0:
+ version "5.2.1"
+ resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
+ integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
+
+safe-regex@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e"
+ integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4=
+ dependencies:
+ ret "~0.1.10"
+
+"safer-buffer@>= 2.1.2 < 3":
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
+ integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
+
+sax@1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.1.tgz#7b8e656190b228e81a66aea748480d828cd2d37a"
+ integrity sha1-e45lYZCyKOgaZq6nSEgNgozS03o=
+
+sax@>=0.6.0, sax@^1.2.4:
+ version "1.2.4"
+ resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
+ integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==
+
+schema-utils@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770"
+ integrity sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==
+ dependencies:
+ ajv "^6.1.0"
+ ajv-errors "^1.0.0"
+ ajv-keywords "^3.1.0"
+
+schema-utils@^2.6.5:
+ version "2.7.0"
+ resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.0.tgz#17151f76d8eae67fbbf77960c33c676ad9f4efc7"
+ integrity sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==
+ dependencies:
+ "@types/json-schema" "^7.0.4"
+ ajv "^6.12.2"
+ ajv-keywords "^3.4.1"
+
+semver-compare@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc"
+ integrity sha1-De4hahyUGrN+nvsXiPavxf9VN/w=
+
+"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.6.0:
+ version "5.7.0"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.0.tgz#790a7cf6fea5459bac96110b29b60412dc8ff96b"
+ integrity sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==
+
+semver@^5.1.0, semver@^5.5.0:
+ version "5.7.1"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
+ integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
+
+semver@^6.0.0:
+ version "6.2.0"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-6.2.0.tgz#4d813d9590aaf8a9192693d6c85b9344de5901db"
+ integrity sha512-jdFC1VdUGT/2Scgbimf7FSx9iJLXoqfglSF+gJeuNWVpiE37OIbc1jywR/GJyFdz3mnkz2/id0L0J/cr0izR5A==
+
+semver@^6.1.0, semver@^6.1.2:
+ version "6.3.0"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
+ integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
+
+semver@^7.0.0:
+ version "7.3.5"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7"
+ integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==
+ dependencies:
+ lru-cache "^6.0.0"
+
+semver@^7.2.1, semver@^7.3.2:
+ version "7.3.2"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938"
+ integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==
+
+send@0.17.1:
+ version "0.17.1"
+ resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8"
+ integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==
+ dependencies:
+ debug "2.6.9"
+ depd "~1.1.2"
+ destroy "~1.0.4"
+ encodeurl "~1.0.2"
+ escape-html "~1.0.3"
+ etag "~1.8.1"
+ fresh "0.5.2"
+ http-errors "~1.7.2"
+ mime "1.6.0"
+ ms "2.1.1"
+ on-finished "~2.3.0"
+ range-parser "~1.2.1"
+ statuses "~1.5.0"
+
+serialize-javascript@^2.1.2:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-2.1.2.tgz#ecec53b0e0317bdc95ef76ab7074b7384785fa61"
+ integrity sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ==
+
+serve-static@1.14.1:
+ version "1.14.1"
+ resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9"
+ integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==
+ dependencies:
+ encodeurl "~1.0.2"
+ escape-html "~1.0.3"
+ parseurl "~1.3.3"
+ send "0.17.1"
+
+set-blocking@^2.0.0, set-blocking@~2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
+ integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc=
+
+set-value@^2.0.0, set-value@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b"
+ integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==
+ dependencies:
+ extend-shallow "^2.0.1"
+ is-extendable "^0.1.1"
+ is-plain-object "^2.0.3"
+ split-string "^3.0.1"
+
+setimmediate@^1.0.4:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285"
+ integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=
+
+setprototypeof@1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683"
+ integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==
+
+sha.js@^2.4.0, sha.js@^2.4.8:
+ version "2.4.11"
+ resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7"
+ integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==
+ dependencies:
+ inherits "^2.0.1"
+ safe-buffer "^5.0.1"
+
+shebang-command@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea"
+ integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=
+ dependencies:
+ shebang-regex "^1.0.0"
+
+shebang-command@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea"
+ integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==
+ dependencies:
+ shebang-regex "^3.0.0"
+
+shebang-regex@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3"
+ integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=
+
+shebang-regex@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172"
+ integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==
+
+shelljs@^0.8.1:
+ version "0.8.3"
+ resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.3.tgz#a7f3319520ebf09ee81275b2368adb286659b097"
+ integrity sha512-fc0BKlAWiLpwZljmOvAOTE/gXawtCoNrP5oaY7KIaQbbyHeQVg01pSEuEGvGh3HEdBU4baCD7wQBwADmM/7f7A==
+ dependencies:
+ glob "^7.0.0"
+ interpret "^1.0.0"
+ rechoir "^0.6.2"
+
+shx@^0.3.2:
+ version "0.3.2"
+ resolved "https://registry.yarnpkg.com/shx/-/shx-0.3.2.tgz#40501ce14eb5e0cbcac7ddbd4b325563aad8c123"
+ integrity sha512-aS0mWtW3T2sHAenrSrip2XGv39O9dXIFUqxAEWHEOS1ePtGIBavdPJY1kE2IHl14V/4iCbUiNDPGdyYTtmhSoA==
+ dependencies:
+ es6-object-assign "^1.0.3"
+ minimist "^1.2.0"
+ shelljs "^0.8.1"
+
+signal-exit@^3.0.0:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
+ integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=
+
+signal-exit@^3.0.2:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c"
+ integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==
+
+slash@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634"
+ integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==
+
+slice-ansi@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636"
+ integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==
+ dependencies:
+ ansi-styles "^3.2.0"
+ astral-regex "^1.0.0"
+ is-fullwidth-code-point "^2.0.0"
+
+slice-ansi@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-3.0.0.tgz#31ddc10930a1b7e0b67b08c96c2f49b77a789787"
+ integrity sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==
+ dependencies:
+ ansi-styles "^4.0.0"
+ astral-regex "^2.0.0"
+ is-fullwidth-code-point "^3.0.0"
+
+slice-ansi@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b"
+ integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==
+ dependencies:
+ ansi-styles "^4.0.0"
+ astral-regex "^2.0.0"
+ is-fullwidth-code-point "^3.0.0"
+
+sliced@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/sliced/-/sliced-1.0.1.tgz#0b3a662b5d04c3177b1926bea82b03f837a2ef41"
+ integrity sha1-CzpmK10Ewxd7GSa+qCsD+Dei70E=
+
+snapdragon-node@^2.0.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b"
+ integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==
+ dependencies:
+ define-property "^1.0.0"
+ isobject "^3.0.0"
+ snapdragon-util "^3.0.1"
+
+snapdragon-util@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2"
+ integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==
+ dependencies:
+ kind-of "^3.2.0"
+
+snapdragon@^0.8.1:
+ version "0.8.2"
+ resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d"
+ integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==
+ dependencies:
+ base "^0.11.1"
+ debug "^2.2.0"
+ define-property "^0.2.5"
+ extend-shallow "^2.0.1"
+ map-cache "^0.2.2"
+ source-map "^0.5.6"
+ source-map-resolve "^0.5.0"
+ use "^3.1.0"
+
+source-list-map@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34"
+ integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==
+
+source-map-resolve@^0.5.0:
+ version "0.5.2"
+ resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.2.tgz#72e2cc34095543e43b2c62b2c4c10d4a9054f259"
+ integrity sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==
+ dependencies:
+ atob "^2.1.1"
+ decode-uri-component "^0.2.0"
+ resolve-url "^0.2.1"
+ source-map-url "^0.4.0"
+ urix "^0.1.0"
+
+source-map-support@^0.5.6:
+ version "0.5.19"
+ resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61"
+ integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==
+ dependencies:
+ buffer-from "^1.0.0"
+ source-map "^0.6.0"
+
+source-map-support@~0.5.12:
+ version "0.5.12"
+ resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.12.tgz#b4f3b10d51857a5af0138d3ce8003b201613d599"
+ integrity sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ==
+ dependencies:
+ buffer-from "^1.0.0"
+ source-map "^0.6.0"
+
+source-map-url@^0.4.0:
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3"
+ integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=
+
+source-map@^0.5.6:
+ version "0.5.7"
+ resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
+ integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=
+
+source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1:
+ version "0.6.1"
+ resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
+ integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
+
+spdx-correct@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4"
+ integrity sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==
+ dependencies:
+ spdx-expression-parse "^3.0.0"
+ spdx-license-ids "^3.0.0"
+
+spdx-exceptions@^2.1.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz#2ea450aee74f2a89bfb94519c07fcd6f41322977"
+ integrity sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==
+
+spdx-expression-parse@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0"
+ integrity sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==
+ dependencies:
+ spdx-exceptions "^2.1.0"
+ spdx-license-ids "^3.0.0"
+
+spdx-license-ids@^3.0.0:
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.4.tgz#75ecd1a88de8c184ef015eafb51b5b48bfd11bb1"
+ integrity sha512-7j8LYJLeY/Yb6ACbQ7F76qy5jHkp0U6jgBfJsk97bwWlVUnUWsAgpyaCvo17h0/RQGnQ036tVDomiwoI4pDkQA==
+
+split-string@^3.0.1, split-string@^3.0.2:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2"
+ integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==
+ dependencies:
+ extend-shallow "^3.0.0"
+
+sprintf-js@~1.0.2:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
+ integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=
+
+ssri@^6.0.1:
+ version "6.0.2"
+ resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.2.tgz#157939134f20464e7301ddba3e90ffa8f7728ac5"
+ integrity sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==
+ dependencies:
+ figgy-pudding "^3.5.1"
+
+standard-engine@^12.0.0:
+ version "12.1.0"
+ resolved "https://registry.yarnpkg.com/standard-engine/-/standard-engine-12.1.0.tgz#b13dbae583de54c06805207b991ef48a582c0e62"
+ integrity sha512-DVJnWM1CGkag4ucFLGdiYWa5/kJURPONmMmk17p8FT5NE4UnPZB1vxWnXnRo2sPSL78pWJG8xEM+1Tu19z0deg==
+ dependencies:
+ deglob "^4.0.1"
+ get-stdin "^7.0.0"
+ minimist "^1.2.5"
+ pkg-conf "^3.1.0"
+
+standard-markdown@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/standard-markdown/-/standard-markdown-6.0.0.tgz#bb7519a86275900eaa7a951d98937723c7010ed6"
+ integrity sha512-9lQs4ZfGukyalFVputnN4IxfbMIAECjf+BqC4gvY8eBUvYcotYIWj4MZyMiXBkN/OJwmMi5jVSnzIexKZQqQYA==
+ dependencies:
+ commander "^4.1.0"
+ globby "^11.0.0"
+ lodash.flatten "^4.4.0"
+ lodash.range "^3.2.0"
+ ora "^4.0.3"
+ standard "^14.3.1"
+
+standard@^14.3.1:
+ version "14.3.4"
+ resolved "https://registry.yarnpkg.com/standard/-/standard-14.3.4.tgz#748e80e8cd7b535844a85a12f337755a7e3a0f6e"
+ integrity sha512-+lpOkFssMkljJ6eaILmqxHQ2n4csuEABmcubLTb9almFi1ElDzXb1819fjf/5ygSyePCq4kU2wMdb2fBfb9P9Q==
+ dependencies:
+ eslint "~6.8.0"
+ eslint-config-standard "14.1.1"
+ eslint-config-standard-jsx "8.1.0"
+ eslint-plugin-import "~2.18.0"
+ eslint-plugin-node "~10.0.0"
+ eslint-plugin-promise "~4.2.1"
+ eslint-plugin-react "~7.14.2"
+ eslint-plugin-standard "~4.0.0"
+ standard-engine "^12.0.0"
+
+static-extend@^0.1.1:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6"
+ integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=
+ dependencies:
+ define-property "^0.2.5"
+ object-copy "^0.1.0"
+
+"statuses@>= 1.5.0 < 2", statuses@~1.5.0:
+ version "1.5.0"
+ resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c"
+ integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=
+
+stream-browserify@^2.0.1:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b"
+ integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==
+ dependencies:
+ inherits "~2.0.1"
+ readable-stream "^2.0.2"
+
+stream-chain@^2.2.3:
+ version "2.2.3"
+ resolved "https://registry.yarnpkg.com/stream-chain/-/stream-chain-2.2.3.tgz#44cfa21ab673e53a3f1691b3d1665c3aceb1983b"
+ integrity sha512-w+WgmCZ6BItPAD3/4HD1eDiDHRLhjSSyIV+F0kcmmRyz8Uv9hvQF22KyaiAUmOlmX3pJ6F95h+C191UbS8Oe/g==
+
+stream-each@^1.1.0:
+ version "1.2.3"
+ resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae"
+ integrity sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==
+ dependencies:
+ end-of-stream "^1.1.0"
+ stream-shift "^1.0.0"
+
+stream-http@^2.7.2:
+ version "2.8.3"
+ resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc"
+ integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==
+ dependencies:
+ builtin-status-codes "^3.0.0"
+ inherits "^2.0.1"
+ readable-stream "^2.3.6"
+ to-arraybuffer "^1.0.0"
+ xtend "^4.0.0"
+
+stream-json@^1.7.1:
+ version "1.7.1"
+ resolved "https://registry.yarnpkg.com/stream-json/-/stream-json-1.7.1.tgz#ec7e414c2eba456c89a4b4e5223794eabc3860c4"
+ integrity sha512-I7g0IDqvdJXbJ279/D3ZoTx0VMhmKnEF7u38CffeWdF8bfpMPsLo+5fWnkNjO2GU/JjWaRjdH+zmH03q+XGXFw==
+ dependencies:
+ stream-chain "^2.2.3"
+
+stream-shift@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952"
+ integrity sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=
+
+string-argv@0.3.1:
+ version "0.3.1"
+ resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.1.tgz#95e2fbec0427ae19184935f816d74aaa4c5c19da"
+ integrity sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==
+
+string-width@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3"
+ integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=
+ dependencies:
+ code-point-at "^1.0.0"
+ is-fullwidth-code-point "^1.0.0"
+ strip-ansi "^3.0.0"
+
+"string-width@^1.0.2 || 2":
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e"
+ integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==
+ dependencies:
+ is-fullwidth-code-point "^2.0.0"
+ strip-ansi "^4.0.0"
+
+string-width@^3.0.0, string-width@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961"
+ integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==
+ dependencies:
+ emoji-regex "^7.0.1"
+ is-fullwidth-code-point "^2.0.0"
+ strip-ansi "^5.1.0"
+
+string-width@^4.1.0, string-width@^4.2.0:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5"
+ integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==
+ dependencies:
+ emoji-regex "^8.0.0"
+ is-fullwidth-code-point "^3.0.0"
+ strip-ansi "^6.0.0"
+
+string-width@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.0.0.tgz#19191f152f937b96f4ec54ba0986a5656660c5a2"
+ integrity sha512-zwXcRmLUdiWhMPrHz6EXITuyTgcEnUqDzspTkCLhQovxywWz6NP9VHgqfVg20V/1mUg0B95AKbXxNT+ALRmqCw==
+ dependencies:
+ emoji-regex "^9.2.2"
+ is-fullwidth-code-point "^4.0.0"
+ strip-ansi "^7.0.0"
+
+string.prototype.trimend@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz#85812a6b847ac002270f5808146064c995fb6913"
+ integrity sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==
+ dependencies:
+ define-properties "^1.1.3"
+ es-abstract "^1.17.5"
+
+string.prototype.trimstart@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz#14af6d9f34b053f7cfc89b72f8f2ee14b9039a54"
+ integrity sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==
+ dependencies:
+ define-properties "^1.1.3"
+ es-abstract "^1.17.5"
+
+string_decoder@^1.0.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.2.0.tgz#fe86e738b19544afe70469243b2a1ee9240eae8d"
+ integrity sha512-6YqyX6ZWEYguAxgZzHGL7SsCeGx3V2TtOTqZz1xSTSWnqsbWwbptafNyvf/ACquZUXV3DANr5BDIwNYe1mN42w==
+ dependencies:
+ safe-buffer "~5.1.0"
+
+string_decoder@^1.1.1:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e"
+ integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==
+ dependencies:
+ safe-buffer "~5.2.0"
+
+string_decoder@~1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8"
+ integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==
+ dependencies:
+ safe-buffer "~5.1.0"
+
+stringify-object@^3.3.0:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629"
+ integrity sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==
+ dependencies:
+ get-own-enumerable-property-symbols "^3.0.0"
+ is-obj "^1.0.1"
+ is-regexp "^1.0.0"
+
+strip-ansi@^3.0.0, strip-ansi@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"
+ integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=
+ dependencies:
+ ansi-regex "^2.0.0"
+
+strip-ansi@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f"
+ integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8=
+ dependencies:
+ ansi-regex "^3.0.0"
+
+strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae"
+ integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==
+ dependencies:
+ ansi-regex "^4.1.0"
+
+strip-ansi@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532"
+ integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==
+ dependencies:
+ ansi-regex "^5.0.0"
+
+strip-ansi@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.0.0.tgz#1dc49b980c3a4100366617adac59327eefdefcb0"
+ integrity sha512-UhDTSnGF1dc0DRbUqr1aXwNoY3RgVkSWG8BrpnuFIxhP57IqbS7IRta2Gfiavds4yCxc5+fEAVVOgBZWnYkvzg==
+ dependencies:
+ ansi-regex "^6.0.0"
+
+strip-bom@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3"
+ integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=
+
+strip-final-newline@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad"
+ integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==
+
+strip-json-comments@^3.0.1, strip-json-comments@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.0.tgz#7638d31422129ecf4457440009fba03f9f9ac180"
+ integrity sha512-e6/d0eBu7gHtdCqFt0xJr642LdToM5/cN4Qb9DbHjVx1CP5RyeM+zH7pbecEmDv/lBqb0QH+6Uqq75rxFPkM0w==
+
+strip-json-comments@~2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
+ integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo=
+
+supports-color@^5.3.0:
+ version "5.5.0"
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
+ integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==
+ dependencies:
+ has-flag "^3.0.0"
+
+supports-color@^6.1.0:
+ version "6.1.0"
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3"
+ integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==
+ dependencies:
+ has-flag "^3.0.0"
+
+supports-color@^7.1.0:
+ version "7.1.0"
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.1.0.tgz#68e32591df73e25ad1c4b49108a2ec507962bfd1"
+ integrity sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==
+ dependencies:
+ has-flag "^4.0.0"
+
+supports-color@^9.0.0:
+ version "9.0.2"
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-9.0.2.tgz#50f082888e4b0a4e2ccd2d0b4f9ef4efcd332485"
+ integrity sha512-ii6tc8ImGFrgMPYq7RVAMKkhPo9vk8uA+D3oKbJq/3Pk2YSMv1+9dUAesa9UxMbxBTvxwKTQffBahNVNxEvM8Q==
+ dependencies:
+ has-flag "^5.0.0"
+
+table@^5.2.3:
+ version "5.4.6"
+ resolved "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e"
+ integrity sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==
+ dependencies:
+ ajv "^6.10.2"
+ lodash "^4.17.14"
+ slice-ansi "^2.1.0"
+ string-width "^3.0.0"
+
+tap-parser@~1.2.2:
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/tap-parser/-/tap-parser-1.2.2.tgz#5e2f6970611f079c7cf857de1dc7aa1b480de7a5"
+ integrity sha1-Xi9pcGEfB5x8+FfeHceqG0gN56U=
+ dependencies:
+ events-to-array "^1.0.1"
+ inherits "~2.0.1"
+ js-yaml "^3.2.7"
+ optionalDependencies:
+ readable-stream "^2"
+
+tap-xunit@^2.4.1:
+ version "2.4.1"
+ resolved "https://registry.yarnpkg.com/tap-xunit/-/tap-xunit-2.4.1.tgz#9823797b676ae5017f4e380bd70abb893b8e120e"
+ integrity sha512-qcZStDtjjYjMKAo7QNiCtOW256g3tuSyCSe5kNJniG1Q2oeOExJq4vm8CwboHZURpkXAHvtqMl4TVL7mcbMVVA==
+ dependencies:
+ duplexer "~0.1.1"
+ minimist "~1.2.0"
+ tap-parser "~1.2.2"
+ through2 "~2.0.0"
+ xmlbuilder "~4.2.0"
+ xtend "~4.0.0"
+
+tapable@^1.0.0, tapable@^1.1.3:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2"
+ integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==
+
+tar@^4, tar@^4.4.7:
+ version "4.4.19"
+ resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.19.tgz#2e4d7263df26f2b914dee10c825ab132123742f3"
+ integrity sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA==
+ dependencies:
+ chownr "^1.1.4"
+ fs-minipass "^1.2.7"
+ minipass "^2.9.0"
+ minizlib "^1.3.3"
+ mkdirp "^0.5.5"
+ safe-buffer "^5.2.1"
+ yallist "^3.1.1"
+
+temp@^0.8.3:
+ version "0.8.3"
+ resolved "https://registry.yarnpkg.com/temp/-/temp-0.8.3.tgz#e0c6bc4d26b903124410e4fed81103014dfc1f59"
+ integrity sha1-4Ma8TSa5AxJEEOT+2BEDAU38H1k=
+ dependencies:
+ os-tmpdir "^1.0.0"
+ rimraf "~2.2.6"
+
+terser-webpack-plugin@^1.4.3:
+ version "1.4.3"
+ resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.3.tgz#5ecaf2dbdc5fb99745fd06791f46fc9ddb1c9a7c"
+ integrity sha512-QMxecFz/gHQwteWwSo5nTc6UaICqN1bMedC5sMtUc7y3Ha3Q8y6ZO0iCR8pq4RJC8Hjf0FEPEHZqcMB/+DFCrA==
+ dependencies:
+ cacache "^12.0.2"
+ find-cache-dir "^2.1.0"
+ is-wsl "^1.1.0"
+ schema-utils "^1.0.0"
+ serialize-javascript "^2.1.2"
+ source-map "^0.6.1"
+ terser "^4.1.2"
+ webpack-sources "^1.4.0"
+ worker-farm "^1.7.0"
+
+terser@^4.1.2:
+ version "4.6.7"
+ resolved "https://registry.yarnpkg.com/terser/-/terser-4.6.7.tgz#478d7f9394ec1907f0e488c5f6a6a9a2bad55e72"
+ integrity sha512-fmr7M1f7DBly5cX2+rFDvmGBAaaZyPrHYK4mMdHEDAdNTqXSZgSOfqsfGq2HqPGT/1V0foZZuCZFx8CHKgAk3g==
+ dependencies:
+ commander "^2.20.0"
+ source-map "~0.6.1"
+ source-map-support "~0.5.12"
+
+text-table@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
+ integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=
+
+through2@^2.0.0, through2@~2.0.0:
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd"
+ integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==
+ dependencies:
+ readable-stream "~2.3.6"
+ xtend "~4.0.1"
+
+through@^2.3.6, through@^2.3.8:
+ version "2.3.8"
+ resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
+ integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=
+
+timed-out@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f"
+ integrity sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=
+
+timers-browserify@1.4.2:
+ version "1.4.2"
+ resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-1.4.2.tgz#c9c58b575be8407375cb5e2462dacee74359f41d"
+ integrity sha1-ycWLV1voQHN1y14kYtrO50NZ9B0=
+ dependencies:
+ process "~0.11.0"
+
+timers-browserify@^2.0.4:
+ version "2.0.10"
+ resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.10.tgz#1d28e3d2aadf1d5a5996c4e9f95601cd053480ae"
+ integrity sha512-YvC1SV1XdOUaL6gx5CoGroT3Gu49pK9+TZ38ErPldOWW4j49GI1HKs9DV+KGq/w6y+LZ72W1c8cKz2vzY+qpzg==
+ dependencies:
+ setimmediate "^1.0.4"
+
+tmp@^0.0.33:
+ version "0.0.33"
+ resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9"
+ integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==
+ dependencies:
+ os-tmpdir "~1.0.2"
+
+to-arraybuffer@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43"
+ integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=
+
+to-object-path@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af"
+ integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=
+ dependencies:
+ kind-of "^3.0.2"
+
+to-readable-stream@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/to-readable-stream/-/to-readable-stream-1.0.0.tgz#ce0aa0c2f3df6adf852efb404a783e77c0475771"
+ integrity sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==
+
+to-regex-range@^2.1.0:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38"
+ integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=
+ dependencies:
+ is-number "^3.0.0"
+ repeat-string "^1.6.1"
+
+to-regex-range@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
+ integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
+ dependencies:
+ is-number "^7.0.0"
+
+to-regex@^3.0.1, to-regex@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce"
+ integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==
+ dependencies:
+ define-property "^2.0.2"
+ extend-shallow "^3.0.2"
+ regex-not "^1.0.2"
+ safe-regex "^1.1.0"
+
+to-vfile@^7.0.0:
+ version "7.2.1"
+ resolved "https://registry.yarnpkg.com/to-vfile/-/to-vfile-7.2.1.tgz#fe42892024f724177ba81076f98ee74b0888c293"
+ integrity sha512-biljADNq2n+AZn/zX+/87zStnIqctKr/q5OaOD8+qSKINokUGPbWBShvxa1iLUgHz6dGGjVnQPNoFRtVBzMkVg==
+ dependencies:
+ is-buffer "^2.0.0"
+ vfile "^5.0.0"
+
+toidentifier@1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553"
+ integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==
+
+tough-cookie@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.0.0.tgz#d822234eeca882f991f0f908824ad2622ddbece4"
+ integrity sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==
+ dependencies:
+ psl "^1.1.33"
+ punycode "^2.1.1"
+ universalify "^0.1.2"
+
+tr46@~0.0.3:
+ version "0.0.3"
+ resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a"
+ integrity sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=
+
+trough@^2.0.0:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/trough/-/trough-2.0.2.tgz#94a3aa9d5ce379fc561f6244905b3f36b7458d96"
+ integrity sha512-FnHq5sTMxC0sk957wHDzRnemFnNBvt/gSY99HzK8F7UP5WAbvP70yX5bd7CjEQkN+TjdxwI7g7lJ6podqrG2/w==
+
+ts-loader@^8.0.2:
+ version "8.0.2"
+ resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-8.0.2.tgz#ee73ca9350f745799396fff8578ba29b1e95616b"
+ integrity sha512-oYT7wOTUawYXQ8XIDsRhziyW0KUEV38jISYlE+9adP6tDtG+O5GkRe4QKQXrHVH4mJJ88DysvEtvGP65wMLlhg==
+ dependencies:
+ chalk "^2.3.0"
+ enhanced-resolve "^4.0.0"
+ loader-utils "^1.0.2"
+ micromatch "^4.0.0"
+ semver "^6.0.0"
+
+ts-node@6.2.0:
+ version "6.2.0"
+ resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-6.2.0.tgz#65a0ae2acce319ea4fd7ac8d7c9f1f90c5da6baf"
+ integrity sha512-ZNT+OEGfUNVMGkpIaDJJ44Zq3Yr0bkU/ugN1PHbU+/01Z7UV1fsELRiTx1KuQNvQ1A3pGh3y25iYF6jXgxV21A==
+ dependencies:
+ arrify "^1.0.0"
+ buffer-from "^1.1.0"
+ diff "^3.1.0"
+ make-error "^1.1.1"
+ minimist "^1.2.0"
+ mkdirp "^0.5.1"
+ source-map-support "^0.5.6"
+ yn "^2.0.0"
+
+tsconfig-paths@^3.9.0:
+ version "3.9.0"
+ resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz#098547a6c4448807e8fcb8eae081064ee9a3c90b"
+ integrity sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw==
+ dependencies:
+ "@types/json5" "^0.0.29"
+ json5 "^1.0.1"
+ minimist "^1.2.0"
+ strip-bom "^3.0.0"
+
+tslib@^1.8.1, tslib@^1.9.0:
+ version "1.10.0"
+ resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a"
+ integrity sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==
+
+tslib@^2.0.0, tslib@^2.2.0:
+ version "2.3.1"
+ resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01"
+ integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==
+
+tsutils@^3.17.1:
+ version "3.17.1"
+ resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.17.1.tgz#ed719917f11ca0dee586272b2ac49e015a2dd759"
+ integrity sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g==
+ dependencies:
+ tslib "^1.8.1"
+
+tty-browserify@0.0.0:
+ version "0.0.0"
+ resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6"
+ integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=
+
+tunnel@^0.0.6:
+ version "0.0.6"
+ resolved "https://registry.yarnpkg.com/tunnel/-/tunnel-0.0.6.tgz#72f1314b34a5b192db012324df2cc587ca47f92c"
+ integrity sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==
+
+type-check@^0.4.0, type-check@~0.4.0:
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1"
+ integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==
+ dependencies:
+ prelude-ls "^1.2.1"
+
+type-check@~0.3.2:
+ version "0.3.2"
+ resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72"
+ integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=
+ dependencies:
+ prelude-ls "~1.1.2"
+
+type-detect@^4.0.0, type-detect@^4.0.5:
+ version "4.0.8"
+ resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c"
+ integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==
+
+type-fest@^0.11.0:
+ version "0.11.0"
+ resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1"
+ integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==
+
+type-fest@^0.3.0:
+ version "0.3.1"
+ resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.3.1.tgz#63d00d204e059474fe5e1b7c011112bbd1dc29e1"
+ integrity sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==
+
+type-fest@^0.8.1:
+ version "0.8.1"
+ resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d"
+ integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==
+
+type-is@~1.6.17, type-is@~1.6.18:
+ version "1.6.18"
+ resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131"
+ integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==
+ dependencies:
+ media-typer "0.3.0"
+ mime-types "~2.1.24"
+
+typedarray@^0.0.6:
+ version "0.0.6"
+ resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
+ integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=
+
+typescript@^4.1.3:
+ version "4.1.3"
+ resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.1.3.tgz#519d582bd94cba0cf8934c7d8e8467e473f53bb7"
+ integrity sha512-B3ZIOf1IKeH2ixgHhj6la6xdwR9QrLC5d1VKeCSY4tvkqhF2eqd9O7txNlS0PO3GrBAFIdr3L1ndNwteUbZLYg==
+
+uc.micro@^1.0.1, uc.micro@^1.0.5:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.6.tgz#9c411a802a409a91fc6cf74081baba34b24499ac"
+ integrity sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==
+
+unified-args@^9.0.0:
+ version "9.0.2"
+ resolved "https://registry.yarnpkg.com/unified-args/-/unified-args-9.0.2.tgz#0c14f555e73ee29c23f9a567942e29069f56e5a2"
+ integrity sha512-qSqryjoqfJSII4E4Z2Jx7MhXX2MuUIn6DsrlmL8UnWFdGtrWvEtvm7Rx5fKT5TPUz7q/Fb4oxwIHLCttvAuRLQ==
+ dependencies:
+ "@types/text-table" "^0.2.0"
+ camelcase "^6.0.0"
+ chalk "^4.0.0"
+ chokidar "^3.0.0"
+ fault "^2.0.0"
+ json5 "^2.0.0"
+ minimist "^1.0.0"
+ text-table "^0.2.0"
+ unified-engine "^9.0.0"
+
+unified-engine@^9.0.0:
+ version "9.0.3"
+ resolved "https://registry.yarnpkg.com/unified-engine/-/unified-engine-9.0.3.tgz#c1d57e67d94f234296cbfa9364f43e0696dae016"
+ integrity sha512-SgzREcCM2IpUy3JMFUcPRZQ2Py6IwvJ2KIrg2AiI7LnGge6E6OPFWpcabHrEXG0IvO2OI3afiD9DOcQvvZfXDQ==
+ dependencies:
+ "@types/concat-stream" "^1.0.0"
+ "@types/debug" "^4.0.0"
+ "@types/is-empty" "^1.0.0"
+ "@types/js-yaml" "^4.0.0"
+ "@types/node" "^16.0.0"
+ "@types/unist" "^2.0.0"
+ concat-stream "^2.0.0"
+ debug "^4.0.0"
+ fault "^2.0.0"
+ glob "^7.0.0"
+ ignore "^5.0.0"
+ is-buffer "^2.0.0"
+ is-empty "^1.0.0"
+ is-plain-obj "^4.0.0"
+ js-yaml "^4.0.0"
+ load-plugin "^4.0.0"
+ parse-json "^5.0.0"
+ to-vfile "^7.0.0"
+ trough "^2.0.0"
+ unist-util-inspect "^7.0.0"
+ vfile-message "^3.0.0"
+ vfile-reporter "^7.0.0"
+ vfile-statistics "^2.0.0"
+
+unified-lint-rule@^1.0.0:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/unified-lint-rule/-/unified-lint-rule-1.0.4.tgz#be432d316db7ad801166041727b023ba18963e24"
+ integrity sha512-q9wY6S+d38xRAuWQVOMjBQYi7zGyKkY23ciNafB8JFVmDroyKjtytXHCg94JnhBCXrNqpfojo3+8D+gmF4zxJQ==
+ dependencies:
+ wrapped "^1.0.1"
+
+unified-message-control@^3.0.0:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/unified-message-control/-/unified-message-control-3.0.3.tgz#d08c4564092a507668de71451a33c0d80e734bbd"
+ integrity sha512-oY5z2n8ugjpNHXOmcgrw0pQeJzavHS0VjPBP21tOcm7rc2C+5Q+kW9j5+gqtf8vfW/8sabbsK5+P+9QPwwEHDA==
+ dependencies:
+ unist-util-visit "^2.0.0"
+ vfile-location "^3.0.0"
+
+unified@^10.0.0:
+ version "10.1.0"
+ resolved "https://registry.yarnpkg.com/unified/-/unified-10.1.0.tgz#4e65eb38fc2448b1c5ee573a472340f52b9346fe"
+ integrity sha512-4U3ru/BRXYYhKbwXV6lU6bufLikoAavTwev89H5UxY8enDFaAT2VXmIXYNm6hb5oHPng/EXr77PVyDFcptbk5g==
+ dependencies:
+ "@types/unist" "^2.0.0"
+ bail "^2.0.0"
+ extend "^3.0.0"
+ is-buffer "^2.0.0"
+ is-plain-obj "^4.0.0"
+ trough "^2.0.0"
+ vfile "^5.0.0"
+
+union-value@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847"
+ integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==
+ dependencies:
+ arr-union "^3.1.0"
+ get-value "^2.0.6"
+ is-extendable "^0.1.1"
+ set-value "^2.0.1"
+
+uniq@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff"
+ integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=
+
+unique-filename@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230"
+ integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==
+ dependencies:
+ unique-slug "^2.0.0"
+
+unique-slug@^2.0.0:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c"
+ integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==
+ dependencies:
+ imurmurhash "^0.1.4"
+
+unist-util-generated@^1.0.0:
+ version "1.1.6"
+ resolved "https://registry.yarnpkg.com/unist-util-generated/-/unist-util-generated-1.1.6.tgz#5ab51f689e2992a472beb1b35f2ce7ff2f324d4b"
+ integrity sha512-cln2Mm1/CZzN5ttGK7vkoGw+RZ8VcUH6BtGbq98DDtRGquAAOXig1mrBQYelOwMXYS8rK+vZDyyojSjp7JX+Lg==
+
+unist-util-generated@^1.1.0:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/unist-util-generated/-/unist-util-generated-1.1.4.tgz#2261c033d9fc23fae41872cdb7663746e972c1a7"
+ integrity sha512-SA7Sys3h3X4AlVnxHdvN/qYdr4R38HzihoEVY2Q2BZu8NHWDnw5OGcC/tXWjQfd4iG+M6qRFNIRGqJmp2ez4Ww==
+
+unist-util-inspect@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/unist-util-inspect/-/unist-util-inspect-7.0.0.tgz#98426f0219e24d011a27e32539be0693d9eb973e"
+ integrity sha512-2Utgv78I7PUu461Y9cdo+IUiiKSKpDV5CE/XD6vTj849a3xlpDAScvSJ6cQmtFBGgAmCn2wR7jLuXhpg1XLlJw==
+ dependencies:
+ "@types/unist" "^2.0.0"
+
+unist-util-is@^4.0.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-4.1.0.tgz#976e5f462a7a5de73d94b706bac1b90671b57797"
+ integrity sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==
+
+unist-util-position@^3.0.0:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/unist-util-position/-/unist-util-position-3.0.3.tgz#fff942b879538b242096c148153826664b1ca373"
+ integrity sha512-28EpCBYFvnMeq9y/4w6pbnFmCUfzlsc41NJui5c51hOFjBA1fejcwc+5W4z2+0ECVbScG3dURS3JTVqwenzqZw==
+
+unist-util-stringify-position@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-2.0.1.tgz#de2a2bc8d3febfa606652673a91455b6a36fb9f3"
+ integrity sha512-Zqlf6+FRI39Bah8Q6ZnNGrEHUhwJOkHde2MHVk96lLyftfJJckaPslKgzhVcviXj8KcE9UJM9F+a4JEiBUTYgA==
+ dependencies:
+ "@types/unist" "^2.0.2"
+
+unist-util-stringify-position@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-3.0.0.tgz#d517d2883d74d0daa0b565adc3d10a02b4a8cde9"
+ integrity sha512-SdfAl8fsDclywZpfMDTVDxA2V7LjtRDTOFd44wUJamgl6OlVngsqWjxvermMYf60elWHbxhuRCZml7AnuXCaSA==
+ dependencies:
+ "@types/unist" "^2.0.0"
+
+unist-util-visit-parents@^3.0.0:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz#65a6ce698f78a6b0f56aa0e88f13801886cdaef6"
+ integrity sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==
+ dependencies:
+ "@types/unist" "^2.0.0"
+ unist-util-is "^4.0.0"
+
+unist-util-visit@^2.0.0:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-2.0.3.tgz#c3703893146df47203bb8a9795af47d7b971208c"
+ integrity sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==
+ dependencies:
+ "@types/unist" "^2.0.0"
+ unist-util-is "^4.0.0"
+ unist-util-visit-parents "^3.0.0"
+
+universal-github-app-jwt@^1.0.1:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/universal-github-app-jwt/-/universal-github-app-jwt-1.1.0.tgz#0abaa876101cdf1d3e4c546be2768841c0c1b514"
+ integrity sha512-3b+ocAjjz4JTyqaOT+NNBd5BtTuvJTxWElIoeHSVelUV9J3Jp7avmQTdLKCaoqi/5Ox2o/q+VK19TJ233rVXVQ==
+ dependencies:
+ "@types/jsonwebtoken" "^8.3.3"
+ jsonwebtoken "^8.5.1"
+
+universal-user-agent@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-6.0.0.tgz#3381f8503b251c0d9cd21bc1de939ec9df5480ee"
+ integrity sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==
+
+universalify@^0.1.0, universalify@^0.1.2:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66"
+ integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==
+
+universalify@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/universalify/-/universalify-1.0.0.tgz#b61a1da173e8435b2fe3c67d29b9adf8594bd16d"
+ integrity sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==
+
+unpipe@1.0.0, unpipe@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
+ integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=
+
+unset-value@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559"
+ integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=
+ dependencies:
+ has-value "^0.3.1"
+ isobject "^3.0.0"
+
+unzip-response@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-2.0.1.tgz#d2f0f737d16b0615e72a6935ed04214572d56f97"
+ integrity sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=
+
+upath@^1.1.1:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/upath/-/upath-1.1.2.tgz#3db658600edaeeccbe6db5e684d67ee8c2acd068"
+ integrity sha512-kXpym8nmDmlCBr7nKdIx8P2jNBa+pBpIUFRnKJ4dr8htyYGJFokkr2ZvERRtUN+9SY+JqXouNgUPtv6JQva/2Q==
+
+uri-js@^4.2.2:
+ version "4.2.2"
+ resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0"
+ integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==
+ dependencies:
+ punycode "^2.1.0"
+
+urix@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72"
+ integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=
+
+url-parse-lax@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73"
+ integrity sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=
+ dependencies:
+ prepend-http "^1.0.1"
+
+url-parse-lax@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c"
+ integrity sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=
+ dependencies:
+ prepend-http "^2.0.0"
+
+url@0.10.3:
+ version "0.10.3"
+ resolved "https://registry.yarnpkg.com/url/-/url-0.10.3.tgz#021e4d9c7705f21bbf37d03ceb58767402774c64"
+ integrity sha1-Ah5NnHcF8hu/N9A861h2dAJ3TGQ=
+ dependencies:
+ punycode "1.3.2"
+ querystring "0.2.0"
+
+url@^0.11.0:
+ version "0.11.0"
+ resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1"
+ integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=
+ dependencies:
+ punycode "1.3.2"
+ querystring "0.2.0"
+
+use@^3.1.0:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f"
+ integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==
+
+util-deprecate@^1.0.1, util-deprecate@~1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
+ integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=
+
+util@0.10.3:
+ version "0.10.3"
+ resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9"
+ integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk=
+ dependencies:
+ inherits "2.0.1"
+
+util@^0.11.0:
+ version "0.11.1"
+ resolved "https://registry.yarnpkg.com/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61"
+ integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==
+ dependencies:
+ inherits "2.0.3"
+
+utils-merge@1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713"
+ integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=
+
+uuid@3.3.2:
+ version "3.3.2"
+ resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131"
+ integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==
+
+uuid@^8.3.0:
+ version "8.3.2"
+ resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2"
+ integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==
+
+v8-compile-cache@^2.0.3, v8-compile-cache@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz#54bc3cdd43317bca91e35dcaf305b1a7237de745"
+ integrity sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ==
+
+validate-npm-package-license@^3.0.1:
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a"
+ integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==
+ dependencies:
+ spdx-correct "^3.0.0"
+ spdx-expression-parse "^3.0.0"
+
+vary@~1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"
+ integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=
+
+vfile-location@^3.0.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/vfile-location/-/vfile-location-3.2.0.tgz#d8e41fbcbd406063669ebf6c33d56ae8721d0f3c"
+ integrity sha512-aLEIZKv/oxuCDZ8lkJGhuhztf/BW4M+iHdCwglA/eWc+vtuRFJj8EtgceYFX4LRjOhCAAiNHsKGssC6onJ+jbA==
+
+vfile-message@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-3.0.1.tgz#b9bcf87cb5525e61777e0c6df07e816a577588a3"
+ integrity sha512-gYmSHcZZUEtYpTmaWaFJwsuUD70/rTY4v09COp8TGtOkix6gGxb/a8iTQByIY9ciTk9GwAwIXd/J9OPfM4Bvaw==
+ dependencies:
+ "@types/unist" "^2.0.0"
+ unist-util-stringify-position "^3.0.0"
+
+vfile-reporter@^7.0.0:
+ version "7.0.1"
+ resolved "https://registry.yarnpkg.com/vfile-reporter/-/vfile-reporter-7.0.1.tgz#759bfebb995f3dc8c644284cb88ac4b310ebd168"
+ integrity sha512-pof+cQSJCUNmHG6zoBOJfErb6syIWHWM14CwKjsugCixxl4CZdrgzgxwLBW8lIB6czkzX0Agnnhj33YpKyLvmA==
+ dependencies:
+ "@types/repeat-string" "^1.0.0"
+ "@types/supports-color" "^8.0.0"
+ repeat-string "^1.0.0"
+ string-width "^5.0.0"
+ supports-color "^9.0.0"
+ unist-util-stringify-position "^3.0.0"
+ vfile-sort "^3.0.0"
+ vfile-statistics "^2.0.0"
+
+vfile-sort@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/vfile-sort/-/vfile-sort-3.0.0.tgz#ee13d3eaac0446200a2047a3b45d78fad6b106e6"
+ integrity sha512-fJNctnuMi3l4ikTVcKpxTbzHeCgvDhnI44amA3NVDvA6rTC6oKCFpCVyT5n2fFMr3ebfr+WVQZedOCd73rzSxg==
+ dependencies:
+ vfile-message "^3.0.0"
+
+vfile-statistics@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/vfile-statistics/-/vfile-statistics-2.0.0.tgz#f04ee3e3c666809a3c10c06021becd41ea9c8037"
+ integrity sha512-foOWtcnJhKN9M2+20AOTlWi2dxNfAoeNIoxD5GXcO182UJyId4QrXa41fWrgcfV3FWTjdEDy3I4cpLVcQscIMA==
+ dependencies:
+ vfile-message "^3.0.0"
+
+vfile@^5.0.0:
+ version "5.0.2"
+ resolved "https://registry.yarnpkg.com/vfile/-/vfile-5.0.2.tgz#57773d1d91478b027632c23afab58ec3590344f0"
+ integrity sha512-5cV+K7tX83MT3bievROc+7AvHv0GXDB0zqbrTjbOe+HRbkzvY4EP+wS3IR77kUBCoWFMdG9py18t0sesPtQ1Rw==
+ dependencies:
+ "@types/unist" "^2.0.0"
+ is-buffer "^2.0.0"
+ unist-util-stringify-position "^3.0.0"
+ vfile-message "^3.0.0"
+
+vm-browserify@^1.0.1:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.0.tgz#bd76d6a23323e2ca8ffa12028dc04559c75f9019"
+ integrity sha512-iq+S7vZJE60yejDYM0ek6zg308+UZsdtPExWP9VZoCFCz1zkJoXFnAX7aZfd/ZwrkidzdUZL0C/ryW+JwAiIGw==
+
+walk-sync@^0.3.2:
+ version "0.3.4"
+ resolved "https://registry.yarnpkg.com/walk-sync/-/walk-sync-0.3.4.tgz#cf78486cc567d3a96b5b2237c6108017a5ffb9a4"
+ integrity sha512-ttGcuHA/OBnN2pcM6johpYlEms7XpO5/fyKIr48541xXedan4roO8cS1Q2S/zbbjGH/BarYDAMeS2Mi9HE5Tig==
+ dependencies:
+ ensure-posix-path "^1.0.0"
+ matcher-collection "^1.0.0"
+
+watchpack-chokidar2@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/watchpack-chokidar2/-/watchpack-chokidar2-2.0.0.tgz#9948a1866cbbd6cb824dea13a7ed691f6c8ddff0"
+ integrity sha512-9TyfOyN/zLUbA288wZ8IsMZ+6cbzvsNyEzSBp6e/zkifi6xxbl8SmQ/CxQq32k8NNqrdVEVUVSEf56L4rQ/ZxA==
+ dependencies:
+ chokidar "^2.1.8"
+
+watchpack@^1.6.1:
+ version "1.7.2"
+ resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.7.2.tgz#c02e4d4d49913c3e7e122c3325365af9d331e9aa"
+ integrity sha512-ymVbbQP40MFTp+cNMvpyBpBtygHnPzPkHqoIwRRj/0B8KhqQwV8LaKjtbaxF2lK4vl8zN9wCxS46IFCU5K4W0g==
+ dependencies:
+ graceful-fs "^4.1.2"
+ neo-async "^2.5.0"
+ optionalDependencies:
+ chokidar "^3.4.0"
+ watchpack-chokidar2 "^2.0.0"
+
+wcwidth@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8"
+ integrity sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=
+ dependencies:
+ defaults "^1.0.3"
+
+webidl-conversions@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871"
+ integrity sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=
+
+webpack-cli@^3.3.12:
+ version "3.3.12"
+ resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-3.3.12.tgz#94e9ada081453cd0aa609c99e500012fd3ad2d4a"
+ integrity sha512-NVWBaz9k839ZH/sinurM+HcDvJOTXwSjYp1ku+5XKeOC03z8v5QitnK/x+lAxGXFyhdayoIf/GOpv85z3/xPag==
+ dependencies:
+ chalk "^2.4.2"
+ cross-spawn "^6.0.5"
+ enhanced-resolve "^4.1.1"
+ findup-sync "^3.0.0"
+ global-modules "^2.0.0"
+ import-local "^2.0.0"
+ interpret "^1.4.0"
+ loader-utils "^1.4.0"
+ supports-color "^6.1.0"
+ v8-compile-cache "^2.1.1"
+ yargs "^13.3.2"
+
+webpack-sources@^1.1.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1:
+ version "1.4.3"
+ resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933"
+ integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==
+ dependencies:
+ source-list-map "^2.0.0"
+ source-map "~0.6.1"
+
+webpack@^4.43.0:
+ version "4.43.0"
+ resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.43.0.tgz#c48547b11d563224c561dad1172c8aa0b8a678e6"
+ integrity sha512-GW1LjnPipFW2Y78OOab8NJlCflB7EFskMih2AHdvjbpKMeDJqEgSx24cXXXiPS65+WSwVyxtDsJH6jGX2czy+g==
+ dependencies:
+ "@webassemblyjs/ast" "1.9.0"
+ "@webassemblyjs/helper-module-context" "1.9.0"
+ "@webassemblyjs/wasm-edit" "1.9.0"
+ "@webassemblyjs/wasm-parser" "1.9.0"
+ acorn "^6.4.1"
+ ajv "^6.10.2"
+ ajv-keywords "^3.4.1"
+ chrome-trace-event "^1.0.2"
+ enhanced-resolve "^4.1.0"
+ eslint-scope "^4.0.3"
+ json-parse-better-errors "^1.0.2"
+ loader-runner "^2.4.0"
+ loader-utils "^1.2.3"
+ memory-fs "^0.4.1"
+ micromatch "^3.1.10"
+ mkdirp "^0.5.3"
+ neo-async "^2.6.1"
+ node-libs-browser "^2.2.1"
+ schema-utils "^1.0.0"
+ tapable "^1.1.3"
+ terser-webpack-plugin "^1.4.3"
+ watchpack "^1.6.1"
+ webpack-sources "^1.4.1"
+
+whatwg-url@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d"
+ integrity sha1-lmRU6HZUYuN2RNNib2dCzotwll0=
+ dependencies:
+ tr46 "~0.0.3"
+ webidl-conversions "^3.0.0"
+
+which-module@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a"
+ integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=
+
+which@^1.2.14, which@^1.2.9, which@^1.3.1:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
+ integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==
+ dependencies:
+ isexe "^2.0.0"
+
+which@^2.0.1:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1"
+ integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==
+ dependencies:
+ isexe "^2.0.0"
+
+wide-align@^1.1.0:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457"
+ integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==
+ dependencies:
+ string-width "^1.0.2 || 2"
+
+word-wrap@^1.2.3, word-wrap@~1.2.3:
+ version "1.2.3"
+ resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c"
+ integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==
+
+wordwrap@~0.0.2:
+ version "0.0.3"
+ resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107"
+ integrity sha1-o9XabNXAvAAI03I0u68b7WMFkQc=
+
+worker-farm@^1.7.0:
+ version "1.7.0"
+ resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8"
+ integrity sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==
+ dependencies:
+ errno "~0.1.7"
+
+wrap-ansi@^5.1.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09"
+ integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==
+ dependencies:
+ ansi-styles "^3.2.0"
+ string-width "^3.0.0"
+ strip-ansi "^5.0.0"
+
+wrap-ansi@^6.2.0:
+ version "6.2.0"
+ resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53"
+ integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==
+ dependencies:
+ ansi-styles "^4.0.0"
+ string-width "^4.1.0"
+ strip-ansi "^6.0.0"
+
+wrapped@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/wrapped/-/wrapped-1.0.1.tgz#c783d9d807b273e9b01e851680a938c87c907242"
+ integrity sha1-x4PZ2Aeyc+mwHoUWgKk4yHyQckI=
+ dependencies:
+ co "3.1.0"
+ sliced "^1.0.1"
+
+wrapper-webpack-plugin@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/wrapper-webpack-plugin/-/wrapper-webpack-plugin-2.1.0.tgz#2b5d80f46af84c9eeb707d08796a115e233adeac"
+ integrity sha512-e+2FhSYGCxhDq3PcUw5mRhH+8vcYa+9d9AuLChJUZ9ZbUPhQOHZ/O2dnN98iTqeUuvrzSSOv13+x/NhrAm5JEg==
+ dependencies:
+ webpack-sources "^1.1.0"
+
+wrappy@1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
+ integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
+
+write@1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3"
+ integrity sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==
+ dependencies:
+ mkdirp "^0.5.1"
+
+xml2js@0.4.19:
+ version "0.4.19"
+ resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.19.tgz#686c20f213209e94abf0d1bcf1efaa291c7827a7"
+ integrity sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==
+ dependencies:
+ sax ">=0.6.0"
+ xmlbuilder "~9.0.1"
+
+xml2js@^0.4.19:
+ version "0.4.23"
+ resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.23.tgz#a0c69516752421eb2ac758ee4d4ccf58843eac66"
+ integrity sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==
+ dependencies:
+ sax ">=0.6.0"
+ xmlbuilder "~11.0.0"
+
+xmlbuilder@~11.0.0:
+ version "11.0.1"
+ resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-11.0.1.tgz#be9bae1c8a046e76b31127726347d0ad7002beb3"
+ integrity sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==
+
+xmlbuilder@~4.2.0:
+ version "4.2.1"
+ resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-4.2.1.tgz#aa58a3041a066f90eaa16c2f5389ff19f3f461a5"
+ integrity sha1-qlijBBoGb5DqoWwvU4n/GfP0YaU=
+ dependencies:
+ lodash "^4.0.0"
+
+xmlbuilder@~9.0.1:
+ version "9.0.7"
+ resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-9.0.7.tgz#132ee63d2ec5565c557e20f4c22df9aca686b10d"
+ integrity sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=
+
+xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.0, xtend@~4.0.1:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54"
+ integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==
+
+y18n@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.1.tgz#8db2b83c31c5d75099bb890b23f3094891e247d4"
+ integrity sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ==
+
+yallist@^3.0.0, yallist@^3.0.2, yallist@^3.1.1:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd"
+ integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==
+
+yallist@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"
+ integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==
+
+yaml@^1.7.2:
+ version "1.10.0"
+ resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.0.tgz#3b593add944876077d4d683fee01081bd9fff31e"
+ integrity sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg==
+
+yargs-parser@^13.1.2:
+ version "13.1.2"
+ resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38"
+ integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==
+ dependencies:
+ camelcase "^5.0.0"
+ decamelize "^1.2.0"
+
+yargs@^13.3.2:
+ version "13.3.2"
+ resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd"
+ integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==
+ dependencies:
+ cliui "^5.0.0"
+ find-up "^3.0.0"
+ get-caller-file "^2.0.1"
+ require-directory "^2.1.1"
+ require-main-filename "^2.0.0"
+ set-blocking "^2.0.0"
+ string-width "^3.0.0"
+ which-module "^2.0.0"
+ y18n "^4.0.0"
+ yargs-parser "^13.1.2"
+
+yn@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/yn/-/yn-2.0.0.tgz#e5adabc8acf408f6385fc76495684c88e6af689a"
+ integrity sha1-5a2ryKz0CPY4X8dklWhMiOavaJo=
+
+zwitch@^2.0.0:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/zwitch/-/zwitch-2.0.2.tgz#91f8d0e901ffa3d66599756dde7f57b17c95dce1"
+ integrity sha512-JZxotl7SxAJH0j7dN4pxsTV6ZLXoLdGME+PsjkL/DaBrVryK9kTGq06GfKrwcSOqypP+fdXGoCHE36b99fWVoA==
diff --git a/devel/electron17/pkg-descr b/devel/electron17/pkg-descr
new file mode 100644
index 000000000000..bb5485e9e735
--- /dev/null
+++ b/devel/electron17/pkg-descr
@@ -0,0 +1,10 @@
+Build cross platform desktop apps with JavaScript, HTML, and CSS.
+
+It's easier than you think.
+
+If you can build a website, you can build a desktop app. Electron is a
+framework for creating native applications with web technologies like
+JavaScript, HTML, and CSS. It takes care of the hard parts so you can
+focus on the core of your application.
+
+WWW: https://electronjs.org/
diff --git a/devel/electron17/pkg-plist b/devel/electron17/pkg-plist
new file mode 100644
index 000000000000..31e7f70077df
--- /dev/null
+++ b/devel/electron17/pkg-plist
@@ -0,0 +1,177 @@
+bin/electron%%ELECTRON_VER_MAJOR%%
+%%DATADIR%%/LICENSE
+%%DATADIR%%/LICENSES.chromium.html
+%%DATADIR%%/chrome_100_percent.pak
+%%DATADIR%%/chrome_200_percent.pak
+%%DRIVER%%%%DATADIR%%/chromedriver
+%%DATADIR%%/electron
+%%DATADIR%%/gen/electron/buildflags/buildflags.h
+%%DATADIR%%/gen/v8/embedded.S
+%%DATADIR%%/icudtl.dat
+%%DATADIR%%/libEGL.so
+%%DATADIR%%/libGLESv2.so
+%%DATADIR%%/libffmpeg.so
+%%DATADIR%%/libvk_swiftshader.so
+%%DATADIR%%/libvulkan.so.1
+%%DATADIR%%/locales/am.pak
+%%DATADIR%%/locales/ar.pak
+%%DATADIR%%/locales/bg.pak
+%%DATADIR%%/locales/bn.pak
+%%DATADIR%%/locales/ca.pak
+%%DATADIR%%/locales/cs.pak
+%%DATADIR%%/locales/da.pak
+%%DATADIR%%/locales/de.pak
+%%DATADIR%%/locales/el.pak
+%%DATADIR%%/locales/en-GB.pak
+%%DATADIR%%/locales/en-US.pak
+%%DATADIR%%/locales/es-419.pak
+%%DATADIR%%/locales/es.pak
+%%DATADIR%%/locales/et.pak
+%%DATADIR%%/locales/fa.pak
+%%DATADIR%%/locales/fi.pak
+%%DATADIR%%/locales/fil.pak
+%%DATADIR%%/locales/fr.pak
+%%DATADIR%%/locales/gu.pak
+%%DATADIR%%/locales/he.pak
+%%DATADIR%%/locales/hi.pak
+%%DATADIR%%/locales/hr.pak
+%%DATADIR%%/locales/hu.pak
+%%DATADIR%%/locales/id.pak
+%%DATADIR%%/locales/it.pak
+%%DATADIR%%/locales/ja.pak
+%%DATADIR%%/locales/kn.pak
+%%DATADIR%%/locales/ko.pak
+%%DATADIR%%/locales/lt.pak
+%%DATADIR%%/locales/lv.pak
+%%DATADIR%%/locales/ml.pak
+%%DATADIR%%/locales/mr.pak
+%%DATADIR%%/locales/ms.pak
+%%DATADIR%%/locales/nb.pak
+%%DATADIR%%/locales/nl.pak
+%%DATADIR%%/locales/pl.pak
+%%DATADIR%%/locales/pt-BR.pak
+%%DATADIR%%/locales/pt-PT.pak
+%%DATADIR%%/locales/ro.pak
+%%DATADIR%%/locales/ru.pak
+%%DATADIR%%/locales/sk.pak
+%%DATADIR%%/locales/sl.pak
+%%DATADIR%%/locales/sr.pak
+%%DATADIR%%/locales/sv.pak
+%%DATADIR%%/locales/sw.pak
+%%DATADIR%%/locales/ta.pak
+%%DATADIR%%/locales/te.pak
+%%DATADIR%%/locales/th.pak
+%%DATADIR%%/locales/tr.pak
+%%DATADIR%%/locales/uk.pak
+%%DATADIR%%/locales/vi.pak
+%%DATADIR%%/locales/zh-CN.pak
+%%DATADIR%%/locales/zh-TW.pak
+%%DATADIR%%/mksnapshot
+%%DATADIR%%/node_headers/include/node/common.gypi
+%%DATADIR%%/node_headers/include/node/config.gypi
+%%DATADIR%%/node_headers/include/node/cppgc/common.h
+%%DATADIR%%/node_headers/include/node/js_native_api.h
+%%DATADIR%%/node_headers/include/node/js_native_api_types.h
+%%DATADIR%%/node_headers/include/node/libplatform/libplatform-export.h
+%%DATADIR%%/node_headers/include/node/libplatform/libplatform.h
+%%DATADIR%%/node_headers/include/node/libplatform/v8-tracing.h
+%%DATADIR%%/node_headers/include/node/node.h
+%%DATADIR%%/node_headers/include/node/node_api.h
+%%DATADIR%%/node_headers/include/node/node_api_types.h
+%%DATADIR%%/node_headers/include/node/node_buffer.h
+%%DATADIR%%/node_headers/include/node/node_object_wrap.h
+%%DATADIR%%/node_headers/include/node/node_version.h
+%%DATADIR%%/node_headers/include/node/uv.h
+%%DATADIR%%/node_headers/include/node/uv/aix.h
+%%DATADIR%%/node_headers/include/node/uv/android-ifaddrs.h
+%%DATADIR%%/node_headers/include/node/uv/bsd.h
+%%DATADIR%%/node_headers/include/node/uv/darwin.h
+%%DATADIR%%/node_headers/include/node/uv/errno.h
+%%DATADIR%%/node_headers/include/node/uv/linux.h
+%%DATADIR%%/node_headers/include/node/uv/os390.h
+%%DATADIR%%/node_headers/include/node/uv/posix.h
+%%DATADIR%%/node_headers/include/node/uv/stdint-msvc2008.h
+%%DATADIR%%/node_headers/include/node/uv/sunos.h
+%%DATADIR%%/node_headers/include/node/uv/threadpool.h
+%%DATADIR%%/node_headers/include/node/uv/tree.h
+%%DATADIR%%/node_headers/include/node/uv/unix.h
+%%DATADIR%%/node_headers/include/node/uv/version.h
+%%DATADIR%%/node_headers/include/node/uv/win.h
+%%DATADIR%%/node_headers/include/node/v8-array-buffer.h
+%%DATADIR%%/node_headers/include/node/v8-callbacks.h
+%%DATADIR%%/node_headers/include/node/v8-container.h
+%%DATADIR%%/node_headers/include/node/v8-context.h
+%%DATADIR%%/node_headers/include/node/v8-cppgc.h
+%%DATADIR%%/node_headers/include/node/v8-data.h
+%%DATADIR%%/node_headers/include/node/v8-date.h
+%%DATADIR%%/node_headers/include/node/v8-debug.h
+%%DATADIR%%/node_headers/include/node/v8-embedder-heap.h
+%%DATADIR%%/node_headers/include/node/v8-embedder-state-scope.h
+%%DATADIR%%/node_headers/include/node/v8-exception.h
+%%DATADIR%%/node_headers/include/node/v8-extension.h
+%%DATADIR%%/node_headers/include/node/v8-external.h
+%%DATADIR%%/node_headers/include/node/v8-fast-api-calls.h
+%%DATADIR%%/node_headers/include/node/v8-forward.h
+%%DATADIR%%/node_headers/include/node/v8-function-callback.h
+%%DATADIR%%/node_headers/include/node/v8-function.h
+%%DATADIR%%/node_headers/include/node/v8-initialization.h
+%%DATADIR%%/node_headers/include/node/v8-inspector-protocol.h
+%%DATADIR%%/node_headers/include/node/v8-inspector.h
+%%DATADIR%%/node_headers/include/node/v8-internal.h
+%%DATADIR%%/node_headers/include/node/v8-isolate.h
+%%DATADIR%%/node_headers/include/node/v8-json.h
+%%DATADIR%%/node_headers/include/node/v8-local-handle.h
+%%DATADIR%%/node_headers/include/node/v8-locker.h
+%%DATADIR%%/node_headers/include/node/v8-maybe.h
+%%DATADIR%%/node_headers/include/node/v8-memory-span.h
+%%DATADIR%%/node_headers/include/node/v8-message.h
+%%DATADIR%%/node_headers/include/node/v8-metrics.h
+%%DATADIR%%/node_headers/include/node/v8-microtask-queue.h
+%%DATADIR%%/node_headers/include/node/v8-microtask.h
+%%DATADIR%%/node_headers/include/node/v8-object.h
+%%DATADIR%%/node_headers/include/node/v8-persistent-handle.h
+%%DATADIR%%/node_headers/include/node/v8-platform.h
+%%DATADIR%%/node_headers/include/node/v8-primitive-object.h
+%%DATADIR%%/node_headers/include/node/v8-primitive.h
+%%DATADIR%%/node_headers/include/node/v8-profiler.h
+%%DATADIR%%/node_headers/include/node/v8-promise.h
+%%DATADIR%%/node_headers/include/node/v8-proxy.h
+%%DATADIR%%/node_headers/include/node/v8-regexp.h
+%%DATADIR%%/node_headers/include/node/v8-script.h
+%%DATADIR%%/node_headers/include/node/v8-snapshot.h
+%%DATADIR%%/node_headers/include/node/v8-statistics.h
+%%DATADIR%%/node_headers/include/node/v8-template.h
+%%DATADIR%%/node_headers/include/node/v8-traced-handle.h
+%%DATADIR%%/node_headers/include/node/v8-typed-array.h
+%%DATADIR%%/node_headers/include/node/v8-unwinder-state.h
+%%DATADIR%%/node_headers/include/node/v8-unwinder.h
+%%DATADIR%%/node_headers/include/node/v8-util.h
+%%DATADIR%%/node_headers/include/node/v8-value-serializer-version.h
+%%DATADIR%%/node_headers/include/node/v8-value-serializer.h
+%%DATADIR%%/node_headers/include/node/v8-value.h
+%%DATADIR%%/node_headers/include/node/v8-version-string.h
+%%DATADIR%%/node_headers/include/node/v8-version.h
+%%DATADIR%%/node_headers/include/node/v8-wasm-trap-handler-posix.h
+%%DATADIR%%/node_headers/include/node/v8-wasm-trap-handler-win.h
+%%DATADIR%%/node_headers/include/node/v8-wasm.h
+%%DATADIR%%/node_headers/include/node/v8-weak-callback-info.h
+%%DATADIR%%/node_headers/include/node/v8.h
+%%DATADIR%%/node_headers/include/node/v8config.h
+%%DATADIR%%/node_headers/include/node/zconf.h
+%%DATADIR%%/node_headers/include/node/zlib.h
+%%DIST%%%%DATADIR%%/releases/SHASUMS256.txt
+%%DIST%%%%AMD64%%%%DATADIR%%/releases/chromedriver-v%%ELECTRON_VER%%-freebsd-x64.zip
+%%DIST%%%%I386%%%%DATADIR%%/releases/chromedriver-v%%ELECTRON_VER%%-freebsd-ia32.zip
+%%DIST%%%%AMD64%%%%DATADIR%%/releases/electron-v%%ELECTRON_VER%%-freebsd-x64.zip
+%%DIST%%%%I386%%%%DATADIR%%/releases/electron-v%%ELECTRON_VER%%-freebsd-ia32.zip
+%%DIST%%%%AMD64%%%%DATADIR%%/releases/mksnapshot-v%%ELECTRON_VER%%-freebsd-x64.zip
+%%DIST%%%%I386%%%%DATADIR%%/releases/mksnapshot-v%%ELECTRON_VER%%-freebsd-ia32.zip
+%%DATADIR%%/resources.pak
+%%DATADIR%%/resources/default_app.asar
+%%DATADIR%%/snapshot_blob.bin
+%%DATADIR%%/swiftshader/libEGL.so
+%%DATADIR%%/swiftshader/libGLESv2.so
+%%DATADIR%%/v8_context_snapshot.bin
+%%DATADIR%%/v8_context_snapshot_generator
+%%DATADIR%%/version
+%%DATADIR%%/vk_swiftshader_icd.json