CINXE.COM
Wiki search results · GitHub
<!DOCTYPE html> <html lang="en" data-color-mode="auto" data-light-theme="light" data-dark-theme="dark" data-a11y-animated-images="system" data-a11y-link-underlines="true" > <head> <meta charset="utf-8"> <link rel="dns-prefetch" href="https://github.githubassets.com"> <link rel="dns-prefetch" href="https://avatars.githubusercontent.com"> <link rel="dns-prefetch" href="https://github-cloud.s3.amazonaws.com"> <link rel="dns-prefetch" href="https://user-images.githubusercontent.com/"> <link rel="preconnect" href="https://github.githubassets.com" crossorigin> <link rel="preconnect" href="https://avatars.githubusercontent.com"> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/light-3e154969b9f9.css" /><link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/dark-9c5b7a476542.css" /><link data-color-theme="dark_dimmed" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_dimmed-afda8eb0fb33.css" /><link data-color-theme="dark_high_contrast" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_high_contrast-2494e44ccdc5.css" /><link data-color-theme="dark_colorblind" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_colorblind-56fff47acadc.css" /><link data-color-theme="light_colorblind" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light_colorblind-71cd4cc132ec.css" /><link data-color-theme="light_high_contrast" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light_high_contrast-fd5499848985.css" /><link data-color-theme="light_tritanopia" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light_tritanopia-31d17ba3e139.css" /><link data-color-theme="dark_tritanopia" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_tritanopia-68d6b2c79663.css" /> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-primitives-4cf0d59ab51a.css" /> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-af846850481e.css" /> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/global-e41ff91f8baa.css" /> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/github-d3b66f11d613.css" /> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/search-2a3fe1ce5c41.css" /> <script type="application/json" id="client-env">{"locale":"en","featureFlags":["copilot_new_references_ui","copilot_beta_features_opt_in","copilot_chat_static_thread_suggestions","copilot_conversational_ux_history_refs","copilot_implicit_context","copilot_smell_icebreaker_ux","experimentation_azure_variant_endpoint","failbot_handle_non_errors","geojson_azure_maps","ghost_pilot_confidence_truncation_25","ghost_pilot_confidence_truncation_40","hovercard_accessibility","issues_react_new_timeline","issues_react_avatar_refactor","issues_react_remove_placeholders","issues_react_cache_fix_workaround","issues_react_blur_item_picker_on_close","marketing_pages_search_explore_provider","remove_child_patch","sample_network_conn_type","site_metered_billing_update","issues_react_first_time_contribution_banner","jk_navigation_in_list_view","ui_commands_respect_modals","lifecycle_label_name_updates"]}</script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/wp-runtime-118ecaabd77e.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_dompurify_dist_purify_js-b73fdff77a4e.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_oddbird_popover-polyfill_dist_popover_js-aff936e590ed.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_arianotify-polyfill_ariaNotify-polyfill_js-node_modules_github_mi-247092-740e4ddd559d.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/ui_packages_failbot_failbot_ts-a46544e9ee5e.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/environment-cd35650c2e9c.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_primer_behaviors_dist_esm_index_mjs-4aa4b0e95669.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_selector-observer_dist_index_esm_js-f690fd9ae3d5.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_relative-time-element_dist_index_js-6d3967acd51c.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_combobox-nav_dist_index_js-node_modules_github_g-emoji-element_di-6ce195-53781cbc550f.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_auto-complete-element_dist_index_js-node_modules_github_catalyst_-6afc16-3cdfa69a0406.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_text-expander-element_dist_index_js-f5498b8d4e5d.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_filter-input-element_dist_index_js-node_modules_github_remote-inp-b5f1d7-492b5042c841.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_mini-throttle_dist_index_js-node_modules_stacktrace-parser_dist_s-1f651a-1e3d784c897c.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_file-attachment-element_dist_index_js-node_modules_primer_view-co-7671f1-dc6cac136d88.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/github-elements-71486356f507.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/element-registry-e3ab8405ef80.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_braintree_browser-detection_dist_browser-detection_js-node_modules_githu-bb80ec-634de60bacfa.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_lit-html_lit-html_js-ce7225a304c5.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_hydro-analytics-client_dist_analytics-client_js-node_modules_gith-f3aee1-e6893db9c19e.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_mini-throttle_dist_index_js-node_modules_morphdom_dist_morphdom-e-7c534c-f8a5485c982a.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_turbo_dist_turbo_es2017-esm_js-858e043fcf76.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_remote-form_dist_index_js-node_modules_delegated-events_dist_inde-893f9f-6cf3320416b8.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_scroll-anchoring_dist_scroll-anchoring_esm_js-node_modules_stacktrace-pa-a71630-6f3c4f0189d8.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_color-convert_index_js-0e07cc183eed.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_quote-selection_dist_index_js-node_modules_github_session-resume_-0b5e12-889cec8cf448.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/ui_packages_updatable-content_updatable-content_ts-eae9df0dd562.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/app_assets_modules_github_behaviors_task-list_ts-app_assets_modules_github_sso_ts-ui_packages-900dde-18d1c91a7872.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/app_assets_modules_github_sticky-scroll-into-view_ts-7cbef09a422c.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/app_assets_modules_github_behaviors_ajax-error_ts-app_assets_modules_github_behaviors_include-d0d0a6-0e9fa537dc4f.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/app_assets_modules_github_behaviors_commenting_edit_ts-app_assets_modules_github_behaviors_ht-83c235-c89801ebbe15.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/behaviors-93287f4de493.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_delegated-events_dist_index_js-node_modules_github_catalyst_lib_index_js-f6223d90c7ba.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/notifications-global-3366f6b6298e.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/search-e560394dd529.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/primer-react-765944243383.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/react-core-cd0a67881543.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/react-lib-7b7b5264f6c1.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/octicons-react-45c3a19dd792.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_emotion_is-prop-valid_dist_emotion-is-prop-valid_esm_js-node_modules_emo-62da9f-54c0c921f04b.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_mini-throttle_dist_index_js-node_modules_stacktrace-parser_dist_s-e7dcdd-285fc29e9fa5.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_oddbird_popover-polyfill_dist_popover-fn_js-4896ddd4b7bb.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_blackbird-parser_dist_blackbird_js-2f98a86e6f32.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_hydro-analytics-client_dist_analytics-client_js-node_modules_gith-2e1ea7-8196844a73fd.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/ui_packages_aria-live_aria-live_ts-ui_packages_promise-with-resolvers-polyfill_promise-with-r-014121-e1792bd5a31e.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/ui_packages_paths_index_ts-193243317670.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/ui_packages_document-metadata_document-metadata_ts-ui_packages_use-analytics_use-analytics_ts-a5b770-dc7b660e6943.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/blackbird-search-834c07c9774a.js"></script> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-react.9fa170e9435ed4b922b9.module.css" /> <title>Wiki search results · GitHub</title> <meta name="route-pattern" content="/search(.:format)" data-turbo-transient> <meta name="route-controller" content="codesearch" data-turbo-transient> <meta name="route-action" content="index" data-turbo-transient> <meta name="current-catalog-service-hash" content="845fcfebf72213b93a13dc2de7ea6169521dc228307a81cbb8b73c46027e6dae"> <meta name="request-id" content="D888:1187EB:1BEE33:20ECBC:6743B7B3" data-pjax-transient="true"/><meta name="html-safe-nonce" content="4285ed9ff56bc2ece4426bf4232d2d44599bdd2565b9bc5e3474aed5e0e1bd62" data-pjax-transient="true"/><meta name="visitor-payload" content="eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJEODg4OjExODdFQjoxQkVFMzM6MjBFQ0JDOjY3NDNCN0IzIiwidmlzaXRvcl9pZCI6IjQ1NDkxNzE2NDE1OTAyMDAyNDMiLCJyZWdpb25fZWRnZSI6InNvdXRoZWFzdGFzaWEiLCJyZWdpb25fcmVuZGVyIjoic291dGhlYXN0YXNpYSJ9" data-pjax-transient="true"/><meta name="visitor-hmac" content="9a202e63b0f97bafabf0780c5f43a4f3068ad63f22193a106e7dbc84ef18b726" data-pjax-transient="true"/> <meta name="github-keyboard-shortcuts" content="copilot" data-turbo-transient="true" /> <meta name="selected-link" value="/search" data-turbo-transient> <link rel="assets" href="https://github.githubassets.com/"> <meta name="google-site-verification" content="Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I"> <meta name="octolytics-url" content="https://collector.github.com/github/collect" /> <meta name="user-login" content=""> <meta name="viewport" content="width=device-width"> <meta name="description" content="GitHub is where people build software. More than 100 million people use GitHub to discover, fork, and contribute to over 420 million projects."> <link rel="search" type="application/opensearchdescription+xml" href="/opensearch.xml" title="GitHub"> <link rel="fluid-icon" href="https://github.com/fluidicon.png" title="GitHub"> <meta property="fb:app_id" content="1401488693436528"> <meta name="apple-itunes-app" content="app-id=1477376905, app-argument=https://github.com/search?q=repo%3Awren-lang%2Fwren++language%3ADart&type=wikis" /> <meta property="og:url" content="https://github.com"> <meta property="og:site_name" content="GitHub"> <meta property="og:title" content="Build software better, together"> <meta property="og:description" content="GitHub is where people build software. More than 100 million people use GitHub to discover, fork, and contribute to over 420 million projects."> <meta property="og:image" content="https://github.githubassets.com/assets/github-logo-55c5b9a1fe52.png"> <meta property="og:image:type" content="image/png"> <meta property="og:image:width" content="1200"> <meta property="og:image:height" content="1200"> <meta property="og:image" content="https://github.githubassets.com/assets/github-mark-57519b92ca4e.png"> <meta property="og:image:type" content="image/png"> <meta property="og:image:width" content="1200"> <meta property="og:image:height" content="620"> <meta property="og:image" content="https://github.githubassets.com/assets/github-octocat-13c86b8b336d.png"> <meta property="og:image:type" content="image/png"> <meta property="og:image:width" content="1200"> <meta property="og:image:height" content="620"> <meta property="twitter:site" content="github"> <meta property="twitter:site:id" content="13334762"> <meta property="twitter:creator" content="github"> <meta property="twitter:creator:id" content="13334762"> <meta property="twitter:card" content="summary_large_image"> <meta property="twitter:title" content="GitHub"> <meta property="twitter:description" content="GitHub is where people build software. More than 100 million people use GitHub to discover, fork, and contribute to over 420 million projects."> <meta property="twitter:image" content="https://github.githubassets.com/assets/github-logo-55c5b9a1fe52.png"> <meta property="twitter:image:width" content="1200"> <meta property="twitter:image:height" content="1200"> <meta name="hostname" content="github.com"> <meta name="expected-hostname" content="github.com"> <meta http-equiv="x-pjax-version" content="272935131c2027f789efabd5bf30904ffaea35908a22afd03d8f75128cee7e1b" data-turbo-track="reload"> <meta http-equiv="x-pjax-csp-version" content="ace39c3b6632770952207593607e6e0be0db363435a8b877b1f96abe6430f345" data-turbo-track="reload"> <meta http-equiv="x-pjax-css-version" content="8968ee26e93ec8c6d3c4e91c77fb9d206091689d451ebbcddeca3832587a5b30" data-turbo-track="reload"> <meta http-equiv="x-pjax-js-version" content="c4972ae1cf5d4607c47252349fc1b47a24ff0ea303e5a8fbbe18ec27725a87ee" data-turbo-track="reload"> <meta name="turbo-cache-control" content="no-preview" data-turbo-transient=""> <meta name="turbo-cache-control" content="no-cache" data-turbo-transient> <meta name="turbo-body-classes" content="logged-out env-production page-responsive"> <meta name="browser-stats-url" content="https://api.github.com/_private/browser/stats"> <meta name="browser-errors-url" content="https://api.github.com/_private/browser/errors"> <link rel="mask-icon" href="https://github.githubassets.com/assets/pinned-octocat-093da3e6fa40.svg" color="#000000"> <link rel="alternate icon" class="js-site-favicon" type="image/png" href="https://github.githubassets.com/favicons/favicon.png"> <link rel="icon" class="js-site-favicon" type="image/svg+xml" href="https://github.githubassets.com/favicons/favicon.svg" data-base-href="https://github.githubassets.com/favicons/favicon"> <meta name="theme-color" content="#1e2327"> <meta name="color-scheme" content="light dark" /> <link rel="manifest" href="/manifest.json" crossOrigin="use-credentials"> </head> <body class="logged-out env-production page-responsive" style="word-wrap: break-word;"> <div data-turbo-body class="logged-out env-production page-responsive" style="word-wrap: break-word;"> <div class="position-relative header-wrapper js-header-wrapper "> <a href="#start-of-content" data-skip-target-assigned="false" class="px-2 py-4 color-bg-accent-emphasis color-fg-on-emphasis show-on-focus js-skip-to-content">Skip to content</a> <span data-view-component="true" class="progress-pjax-loader Progress position-fixed width-full"> <span style="width: 0%;" data-view-component="true" class="Progress-item progress-pjax-loader-bar left-0 top-0 color-bg-accent-emphasis"></span> </span> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/ui_packages_ui-commands_ui-commands_ts-d25fac54a6bc.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/keyboard-shortcuts-dialog-ed30662f9578.js"></script> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-react.9fa170e9435ed4b922b9.module.css" /> <react-partial partial-name="keyboard-shortcuts-dialog" data-ssr="false" data-attempted-ssr="false" > <script type="application/json" data-target="react-partial.embeddedData">{"props":{"docsUrl":"https://docs.github.com/get-started/accessibility/keyboard-shortcuts"}}</script> <div data-target="react-partial.reactRoot"></div> </react-partial> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_remote-form_dist_index_js-node_modules_delegated-events_dist_inde-94fd67-cf3dd69d89eb.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/sessions-8fa3b694f335.js"></script> <header class="HeaderMktg header-logged-out js-details-container js-header Details f4 py-3" role="banner" data-is-top="true" data-color-mode=light data-light-theme=light data-dark-theme=dark> <h2 class="sr-only">Navigation Menu</h2> <button type="button" class="HeaderMktg-backdrop d-lg-none border-0 position-fixed top-0 left-0 width-full height-full js-details-target" aria-label="Toggle navigation"> <span class="d-none">Toggle navigation</span> </button> <div class="d-flex flex-column flex-lg-row flex-items-center px-3 px-md-4 px-lg-5 height-full position-relative z-1"> <div class="d-flex flex-justify-between flex-items-center width-full width-lg-auto"> <div class="flex-1"> <button aria-label="Toggle navigation" aria-expanded="false" type="button" data-view-component="true" class="js-details-target js-nav-padding-recalculate js-header-menu-toggle Button--link Button--medium Button d-lg-none color-fg-inherit p-1"> <span class="Button-content"> <span class="Button-label"><div class="HeaderMenu-toggle-bar rounded my-1"></div> <div class="HeaderMenu-toggle-bar rounded my-1"></div> <div class="HeaderMenu-toggle-bar rounded my-1"></div></span> </span> </button> </div> <a class="mr-lg-3 color-fg-inherit flex-order-2 js-prevent-focus-on-mobile-nav" href="/" aria-label="Homepage" data-analytics-event="{"category":"Marketing nav","action":"click to go to homepage","label":"ref_page:Marketing;ref_cta:Logomark;ref_loc:Header"}"> <svg height="32" aria-hidden="true" viewBox="0 0 24 24" version="1.1" width="32" data-view-component="true" class="octicon octicon-mark-github"> <path d="M12.5.75C6.146.75 1 5.896 1 12.25c0 5.089 3.292 9.387 7.863 10.91.575.101.79-.244.79-.546 0-.273-.014-1.178-.014-2.142-2.889.532-3.636-.704-3.866-1.35-.13-.331-.69-1.352-1.18-1.625-.402-.216-.977-.748-.014-.762.906-.014 1.553.834 1.769 1.179 1.035 1.74 2.688 1.25 3.349.948.1-.747.402-1.25.733-1.538-2.559-.287-5.232-1.279-5.232-5.678 0-1.25.445-2.285 1.178-3.09-.115-.288-.517-1.467.115-3.048 0 0 .963-.302 3.163 1.179.92-.259 1.897-.388 2.875-.388.977 0 1.955.13 2.875.388 2.2-1.495 3.162-1.179 3.162-1.179.633 1.581.23 2.76.115 3.048.733.805 1.179 1.825 1.179 3.09 0 4.413-2.688 5.39-5.247 5.678.417.36.776 1.05.776 2.128 0 1.538-.014 2.774-.014 3.162 0 .302.216.662.79.547C20.709 21.637 24 17.324 24 12.25 24 5.896 18.854.75 12.5.75Z"></path> </svg> </a> <div class="flex-1 flex-order-2 text-right"> <a href="/login?return_to=https%3A%2F%2Fgithub.com%2Fsearch%3Fq%3Drepo%253Awren-lang%252Fwren%2B%2Blanguage%253ADart%26type%3Dwikis" class="HeaderMenu-link HeaderMenu-button d-inline-flex d-lg-none flex-order-1 f5 no-underline border color-border-default rounded-2 px-2 py-1 color-fg-inherit js-prevent-focus-on-mobile-nav" data-hydro-click="{"event_type":"authentication.click","payload":{"location_in_page":"site header menu","repository_id":null,"auth_type":"SIGN_UP","originating_url":"https://github.com/search?q=repo%3Awren-lang%2Fwren++language%3ADart&type=wikis","user_id":null}}" data-hydro-click-hmac="56a9802f8fa73d5eaeae9027274bd71cb2f6eb321fd2d5c92441f90f86984f00" data-analytics-event="{"category":"Marketing nav","action":"click to Sign in","label":"ref_page:Marketing;ref_cta:Sign in;ref_loc:Header"}" > Sign in </a> </div> </div> <div class="HeaderMenu js-header-menu height-fit position-lg-relative d-lg-flex flex-column flex-auto top-0"> <div class="HeaderMenu-wrapper d-flex flex-column flex-self-start flex-lg-row flex-auto rounded rounded-lg-0"> <nav class="HeaderMenu-nav" aria-label="Global"> <ul class="d-lg-flex list-style-none"> <li class="HeaderMenu-item position-relative flex-wrap flex-justify-between flex-items-center d-block d-lg-flex flex-lg-nowrap flex-lg-items-center js-details-container js-header-menu-item"> <button type="button" class="HeaderMenu-link border-0 width-full width-lg-auto px-0 px-lg-2 py-lg-2 no-wrap d-flex flex-items-center flex-justify-between js-details-target" aria-expanded="false"> Product <svg opacity="0.5" aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-chevron-down HeaderMenu-icon ml-1"> <path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path> </svg> </button> <div class="HeaderMenu-dropdown dropdown-menu rounded m-0 p-0 pt-2 pt-lg-4 position-relative position-lg-absolute left-0 left-lg-n3 pb-2 pb-lg-4 d-lg-flex flex-wrap dropdown-menu-wide"> <div class="HeaderMenu-column px-lg-4 border-lg-right mb-4 mb-lg-0 pr-lg-7"> <div class="border-bottom pb-3 pb-lg-0 border-lg-bottom-0"> <ul class="list-style-none f5" > <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3" data-analytics-event="{"location":"navbar","action":"github_copilot","context":"product","tag":"link","label":"github_copilot_link_product_navbar"}" href="https://github.com/features/copilot"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-copilot color-fg-subtle mr-3"> <path d="M23.922 16.992c-.861 1.495-5.859 5.023-11.922 5.023-6.063 0-11.061-3.528-11.922-5.023A.641.641 0 0 1 0 16.736v-2.869a.841.841 0 0 1 .053-.22c.372-.935 1.347-2.292 2.605-2.656.167-.429.414-1.055.644-1.517a10.195 10.195 0 0 1-.052-1.086c0-1.331.282-2.499 1.132-3.368.397-.406.89-.717 1.474-.952 1.399-1.136 3.392-2.093 6.122-2.093 2.731 0 4.767.957 6.166 2.093.584.235 1.077.546 1.474.952.85.869 1.132 2.037 1.132 3.368 0 .368-.014.733-.052 1.086.23.462.477 1.088.644 1.517 1.258.364 2.233 1.721 2.605 2.656a.832.832 0 0 1 .053.22v2.869a.641.641 0 0 1-.078.256ZM12.172 11h-.344a4.323 4.323 0 0 1-.355.508C10.703 12.455 9.555 13 7.965 13c-1.725 0-2.989-.359-3.782-1.259a2.005 2.005 0 0 1-.085-.104L4 11.741v6.585c1.435.779 4.514 2.179 8 2.179 3.486 0 6.565-1.4 8-2.179v-6.585l-.098-.104s-.033.045-.085.104c-.793.9-2.057 1.259-3.782 1.259-1.59 0-2.738-.545-3.508-1.492a4.323 4.323 0 0 1-.355-.508h-.016.016Zm.641-2.935c.136 1.057.403 1.913.878 2.497.442.544 1.134.938 2.344.938 1.573 0 2.292-.337 2.657-.751.384-.435.558-1.15.558-2.361 0-1.14-.243-1.847-.705-2.319-.477-.488-1.319-.862-2.824-1.025-1.487-.161-2.192.138-2.533.529-.269.307-.437.808-.438 1.578v.021c0 .265.021.562.063.893Zm-1.626 0c.042-.331.063-.628.063-.894v-.02c-.001-.77-.169-1.271-.438-1.578-.341-.391-1.046-.69-2.533-.529-1.505.163-2.347.537-2.824 1.025-.462.472-.705 1.179-.705 2.319 0 1.211.175 1.926.558 2.361.365.414 1.084.751 2.657.751 1.21 0 1.902-.394 2.344-.938.475-.584.742-1.44.878-2.497Z"></path><path d="M14.5 14.25a1 1 0 0 1 1 1v2a1 1 0 0 1-2 0v-2a1 1 0 0 1 1-1Zm-5 0a1 1 0 0 1 1 1v2a1 1 0 0 1-2 0v-2a1 1 0 0 1 1-1Z"></path> </svg> <div> <div class="color-fg-default h4">GitHub Copilot</div> Write better code with AI </div> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3" data-analytics-event="{"location":"navbar","action":"security","context":"product","tag":"link","label":"security_link_product_navbar"}" href="https://github.com/features/security"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-shield-check color-fg-subtle mr-3"> <path d="M16.53 9.78a.75.75 0 0 0-1.06-1.06L11 13.19l-1.97-1.97a.75.75 0 0 0-1.06 1.06l2.5 2.5a.75.75 0 0 0 1.06 0l5-5Z"></path><path d="m12.54.637 8.25 2.675A1.75 1.75 0 0 1 22 4.976V10c0 6.19-3.771 10.704-9.401 12.83a1.704 1.704 0 0 1-1.198 0C5.77 20.705 2 16.19 2 10V4.976c0-.758.489-1.43 1.21-1.664L11.46.637a1.748 1.748 0 0 1 1.08 0Zm-.617 1.426-8.25 2.676a.249.249 0 0 0-.173.237V10c0 5.46 3.28 9.483 8.43 11.426a.199.199 0 0 0 .14 0C17.22 19.483 20.5 15.461 20.5 10V4.976a.25.25 0 0 0-.173-.237l-8.25-2.676a.253.253 0 0 0-.154 0Z"></path> </svg> <div> <div class="color-fg-default h4">Security</div> Find and fix vulnerabilities </div> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3" data-analytics-event="{"location":"navbar","action":"actions","context":"product","tag":"link","label":"actions_link_product_navbar"}" href="https://github.com/features/actions"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-workflow color-fg-subtle mr-3"> <path d="M1 3a2 2 0 0 1 2-2h6.5a2 2 0 0 1 2 2v6.5a2 2 0 0 1-2 2H7v4.063C7 16.355 7.644 17 8.438 17H12.5v-2.5a2 2 0 0 1 2-2H21a2 2 0 0 1 2 2V21a2 2 0 0 1-2 2h-6.5a2 2 0 0 1-2-2v-2.5H8.437A2.939 2.939 0 0 1 5.5 15.562V11.5H3a2 2 0 0 1-2-2Zm2-.5a.5.5 0 0 0-.5.5v6.5a.5.5 0 0 0 .5.5h6.5a.5.5 0 0 0 .5-.5V3a.5.5 0 0 0-.5-.5ZM14.5 14a.5.5 0 0 0-.5.5V21a.5.5 0 0 0 .5.5H21a.5.5 0 0 0 .5-.5v-6.5a.5.5 0 0 0-.5-.5Z"></path> </svg> <div> <div class="color-fg-default h4">Actions</div> Automate any workflow </div> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3" data-analytics-event="{"location":"navbar","action":"codespaces","context":"product","tag":"link","label":"codespaces_link_product_navbar"}" href="https://github.com/features/codespaces"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-codespaces color-fg-subtle mr-3"> <path d="M3.5 3.75C3.5 2.784 4.284 2 5.25 2h13.5c.966 0 1.75.784 1.75 1.75v7.5A1.75 1.75 0 0 1 18.75 13H5.25a1.75 1.75 0 0 1-1.75-1.75Zm-2 12c0-.966.784-1.75 1.75-1.75h17.5c.966 0 1.75.784 1.75 1.75v4a1.75 1.75 0 0 1-1.75 1.75H3.25a1.75 1.75 0 0 1-1.75-1.75ZM5.25 3.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h13.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Zm-2 12a.25.25 0 0 0-.25.25v4c0 .138.112.25.25.25h17.5a.25.25 0 0 0 .25-.25v-4a.25.25 0 0 0-.25-.25Z"></path><path d="M10 17.75a.75.75 0 0 1 .75-.75h6.5a.75.75 0 0 1 0 1.5h-6.5a.75.75 0 0 1-.75-.75Zm-4 0a.75.75 0 0 1 .75-.75h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1-.75-.75Z"></path> </svg> <div> <div class="color-fg-default h4">Codespaces</div> Instant dev environments </div> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3" data-analytics-event="{"location":"navbar","action":"issues","context":"product","tag":"link","label":"issues_link_product_navbar"}" href="https://github.com/features/issues"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-issue-opened color-fg-subtle mr-3"> <path d="M12 1c6.075 0 11 4.925 11 11s-4.925 11-11 11S1 18.075 1 12 5.925 1 12 1ZM2.5 12a9.5 9.5 0 0 0 9.5 9.5 9.5 9.5 0 0 0 9.5-9.5A9.5 9.5 0 0 0 12 2.5 9.5 9.5 0 0 0 2.5 12Zm9.5 2a2 2 0 1 1-.001-3.999A2 2 0 0 1 12 14Z"></path> </svg> <div> <div class="color-fg-default h4">Issues</div> Plan and track work </div> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3" data-analytics-event="{"location":"navbar","action":"code_review","context":"product","tag":"link","label":"code_review_link_product_navbar"}" href="https://github.com/features/code-review"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-code-review color-fg-subtle mr-3"> <path d="M10.3 6.74a.75.75 0 0 1-.04 1.06l-2.908 2.7 2.908 2.7a.75.75 0 1 1-1.02 1.1l-3.5-3.25a.75.75 0 0 1 0-1.1l3.5-3.25a.75.75 0 0 1 1.06.04Zm3.44 1.06a.75.75 0 1 1 1.02-1.1l3.5 3.25a.75.75 0 0 1 0 1.1l-3.5 3.25a.75.75 0 1 1-1.02-1.1l2.908-2.7-2.908-2.7Z"></path><path d="M1.5 4.25c0-.966.784-1.75 1.75-1.75h17.5c.966 0 1.75.784 1.75 1.75v12.5a1.75 1.75 0 0 1-1.75 1.75h-9.69l-3.573 3.573A1.458 1.458 0 0 1 5 21.043V18.5H3.25a1.75 1.75 0 0 1-1.75-1.75ZM3.25 4a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h2.5a.75.75 0 0 1 .75.75v3.19l3.72-3.72a.749.749 0 0 1 .53-.22h10a.25.25 0 0 0 .25-.25V4.25a.25.25 0 0 0-.25-.25Z"></path> </svg> <div> <div class="color-fg-default h4">Code Review</div> Manage code changes </div> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3" data-analytics-event="{"location":"navbar","action":"discussions","context":"product","tag":"link","label":"discussions_link_product_navbar"}" href="https://github.com/features/discussions"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-comment-discussion color-fg-subtle mr-3"> <path d="M1.75 1h12.5c.966 0 1.75.784 1.75 1.75v9.5A1.75 1.75 0 0 1 14.25 14H8.061l-2.574 2.573A1.458 1.458 0 0 1 3 15.543V14H1.75A1.75 1.75 0 0 1 0 12.25v-9.5C0 1.784.784 1 1.75 1ZM1.5 2.75v9.5c0 .138.112.25.25.25h2a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h6.5a.25.25 0 0 0 .25-.25v-9.5a.25.25 0 0 0-.25-.25H1.75a.25.25 0 0 0-.25.25Z"></path><path d="M22.5 8.75a.25.25 0 0 0-.25-.25h-3.5a.75.75 0 0 1 0-1.5h3.5c.966 0 1.75.784 1.75 1.75v9.5A1.75 1.75 0 0 1 22.25 20H21v1.543a1.457 1.457 0 0 1-2.487 1.03L15.939 20H10.75A1.75 1.75 0 0 1 9 18.25v-1.465a.75.75 0 0 1 1.5 0v1.465c0 .138.112.25.25.25h5.5a.75.75 0 0 1 .53.22l2.72 2.72v-2.19a.75.75 0 0 1 .75-.75h2a.25.25 0 0 0 .25-.25v-9.5Z"></path> </svg> <div> <div class="color-fg-default h4">Discussions</div> Collaborate outside of code </div> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description" data-analytics-event="{"location":"navbar","action":"code_search","context":"product","tag":"link","label":"code_search_link_product_navbar"}" href="https://github.com/features/code-search"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-code-square color-fg-subtle mr-3"> <path d="M10.3 8.24a.75.75 0 0 1-.04 1.06L7.352 12l2.908 2.7a.75.75 0 1 1-1.02 1.1l-3.5-3.25a.75.75 0 0 1 0-1.1l3.5-3.25a.75.75 0 0 1 1.06.04Zm3.44 1.06a.75.75 0 1 1 1.02-1.1l3.5 3.25a.75.75 0 0 1 0 1.1l-3.5 3.25a.75.75 0 1 1-1.02-1.1l2.908-2.7-2.908-2.7Z"></path><path d="M2 3.75C2 2.784 2.784 2 3.75 2h16.5c.966 0 1.75.784 1.75 1.75v16.5A1.75 1.75 0 0 1 20.25 22H3.75A1.75 1.75 0 0 1 2 20.25Zm1.75-.25a.25.25 0 0 0-.25.25v16.5c0 .138.112.25.25.25h16.5a.25.25 0 0 0 .25-.25V3.75a.25.25 0 0 0-.25-.25Z"></path> </svg> <div> <div class="color-fg-default h4">Code Search</div> Find more, search less </div> </a></li> </ul> </div> </div> <div class="HeaderMenu-column px-lg-4"> <div class="border-bottom pb-3 pb-lg-0 border-lg-bottom-0 border-bottom-0"> <span class="d-block h4 color-fg-default my-1" id="product-explore-heading">Explore</span> <ul class="list-style-none f5" aria-labelledby="product-explore-heading"> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"all_features","context":"product","tag":"link","label":"all_features_link_product_navbar"}" href="https://github.com/features"> All features </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary Link--external" target="_blank" data-analytics-event="{"location":"navbar","action":"documentation","context":"product","tag":"link","label":"documentation_link_product_navbar"}" href="https://docs.github.com"> Documentation <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-link-external HeaderMenu-external-icon color-fg-subtle"> <path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path> </svg> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary Link--external" target="_blank" data-analytics-event="{"location":"navbar","action":"github_skills","context":"product","tag":"link","label":"github_skills_link_product_navbar"}" href="https://skills.github.com"> GitHub Skills <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-link-external HeaderMenu-external-icon color-fg-subtle"> <path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path> </svg> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary Link--external" target="_blank" data-analytics-event="{"location":"navbar","action":"blog","context":"product","tag":"link","label":"blog_link_product_navbar"}" href="https://github.blog"> Blog <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-link-external HeaderMenu-external-icon color-fg-subtle"> <path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path> </svg> </a></li> </ul> </div> </div> </div> </li> <li class="HeaderMenu-item position-relative flex-wrap flex-justify-between flex-items-center d-block d-lg-flex flex-lg-nowrap flex-lg-items-center js-details-container js-header-menu-item"> <button type="button" class="HeaderMenu-link border-0 width-full width-lg-auto px-0 px-lg-2 py-lg-2 no-wrap d-flex flex-items-center flex-justify-between js-details-target" aria-expanded="false"> Solutions <svg opacity="0.5" aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-chevron-down HeaderMenu-icon ml-1"> <path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path> </svg> </button> <div class="HeaderMenu-dropdown dropdown-menu rounded m-0 p-0 pt-2 pt-lg-4 position-relative position-lg-absolute left-0 left-lg-n3 d-lg-flex flex-wrap dropdown-menu-wide"> <div class="HeaderMenu-column px-lg-4 border-lg-right mb-4 mb-lg-0 pr-lg-7"> <div class="border-bottom pb-3 pb-lg-0 border-lg-bottom-0 pb-lg-3 mb-3 mb-lg-0"> <span class="d-block h4 color-fg-default my-1" id="solutions-by-company-size-heading">By company size</span> <ul class="list-style-none f5" aria-labelledby="solutions-by-company-size-heading"> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"enterprises","context":"solutions","tag":"link","label":"enterprises_link_solutions_navbar"}" href="https://github.com/enterprise"> Enterprises </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"small_and_medium_teams","context":"solutions","tag":"link","label":"small_and_medium_teams_link_solutions_navbar"}" href="https://github.com/team"> Small and medium teams </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"startups","context":"solutions","tag":"link","label":"startups_link_solutions_navbar"}" href="https://github.com/enterprise/startups"> Startups </a></li> </ul> </div> <div class="border-bottom pb-3 pb-lg-0 border-lg-bottom-0"> <span class="d-block h4 color-fg-default my-1" id="solutions-by-use-case-heading">By use case</span> <ul class="list-style-none f5" aria-labelledby="solutions-by-use-case-heading"> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"devsecops","context":"solutions","tag":"link","label":"devsecops_link_solutions_navbar"}" href="/solutions/use-case/devsecops"> DevSecOps </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"devops","context":"solutions","tag":"link","label":"devops_link_solutions_navbar"}" href="/solutions/use-case/devops"> DevOps </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"ci_cd","context":"solutions","tag":"link","label":"ci_cd_link_solutions_navbar"}" href="/solutions/use-case/ci-cd"> CI/CD </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"view_all_use_cases","context":"solutions","tag":"link","label":"view_all_use_cases_link_solutions_navbar"}" href="/solutions/use-case"> View all use cases </a></li> </ul> </div> </div> <div class="HeaderMenu-column px-lg-4"> <div class="border-bottom pb-3 pb-lg-0 border-lg-bottom-0"> <span class="d-block h4 color-fg-default my-1" id="solutions-by-industry-heading">By industry</span> <ul class="list-style-none f5" aria-labelledby="solutions-by-industry-heading"> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"healthcare","context":"solutions","tag":"link","label":"healthcare_link_solutions_navbar"}" href="/solutions/industry/healthcare"> Healthcare </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"financial_services","context":"solutions","tag":"link","label":"financial_services_link_solutions_navbar"}" href="/solutions/industry/financial-services"> Financial services </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"manufacturing","context":"solutions","tag":"link","label":"manufacturing_link_solutions_navbar"}" href="/solutions/industry/manufacturing"> Manufacturing </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"government","context":"solutions","tag":"link","label":"government_link_solutions_navbar"}" href="/solutions/industry/government"> Government </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"view_all_industries","context":"solutions","tag":"link","label":"view_all_industries_link_solutions_navbar"}" href="/solutions/industry"> View all industries </a></li> </ul> </div> </div> <div class="HeaderMenu-trailing-link rounded-bottom-2 flex-shrink-0 mt-lg-4 px-lg-4 py-4 py-lg-3 f5 text-semibold"> <a href="/solutions"> View all solutions <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-chevron-right HeaderMenu-trailing-link-icon"> <path d="M6.22 3.22a.75.75 0 0 1 1.06 0l4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L9.94 8 6.22 4.28a.75.75 0 0 1 0-1.06Z"></path> </svg> </a> </div> </div> </li> <li class="HeaderMenu-item position-relative flex-wrap flex-justify-between flex-items-center d-block d-lg-flex flex-lg-nowrap flex-lg-items-center js-details-container js-header-menu-item"> <button type="button" class="HeaderMenu-link border-0 width-full width-lg-auto px-0 px-lg-2 py-lg-2 no-wrap d-flex flex-items-center flex-justify-between js-details-target" aria-expanded="false"> Resources <svg opacity="0.5" aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-chevron-down HeaderMenu-icon ml-1"> <path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path> </svg> </button> <div class="HeaderMenu-dropdown dropdown-menu rounded m-0 p-0 pt-2 pt-lg-4 position-relative position-lg-absolute left-0 left-lg-n3 pb-2 pb-lg-4 d-lg-flex flex-wrap dropdown-menu-wide"> <div class="HeaderMenu-column px-lg-4 border-lg-right mb-4 mb-lg-0 pr-lg-7"> <div class="border-bottom pb-3 pb-lg-0 border-lg-bottom-0"> <span class="d-block h4 color-fg-default my-1" id="resources-topics-heading">Topics</span> <ul class="list-style-none f5" aria-labelledby="resources-topics-heading"> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"ai","context":"resources","tag":"link","label":"ai_link_resources_navbar"}" href="/resources/articles/ai"> AI </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"devops","context":"resources","tag":"link","label":"devops_link_resources_navbar"}" href="/resources/articles/devops"> DevOps </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"security","context":"resources","tag":"link","label":"security_link_resources_navbar"}" href="/resources/articles/security"> Security </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"software_development","context":"resources","tag":"link","label":"software_development_link_resources_navbar"}" href="/resources/articles/software-development"> Software Development </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"view_all","context":"resources","tag":"link","label":"view_all_link_resources_navbar"}" href="/resources/articles"> View all </a></li> </ul> </div> </div> <div class="HeaderMenu-column px-lg-4"> <div class="border-bottom pb-3 pb-lg-0 border-lg-bottom-0 border-bottom-0"> <span class="d-block h4 color-fg-default my-1" id="resources-explore-heading">Explore</span> <ul class="list-style-none f5" aria-labelledby="resources-explore-heading"> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary Link--external" target="_blank" data-analytics-event="{"location":"navbar","action":"learning_pathways","context":"resources","tag":"link","label":"learning_pathways_link_resources_navbar"}" href="https://resources.github.com/learn/pathways"> Learning Pathways <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-link-external HeaderMenu-external-icon color-fg-subtle"> <path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path> </svg> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary Link--external" target="_blank" data-analytics-event="{"location":"navbar","action":"white_papers_ebooks_webinars","context":"resources","tag":"link","label":"white_papers_ebooks_webinars_link_resources_navbar"}" href="https://resources.github.com"> White papers, Ebooks, Webinars <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-link-external HeaderMenu-external-icon color-fg-subtle"> <path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path> </svg> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"customer_stories","context":"resources","tag":"link","label":"customer_stories_link_resources_navbar"}" href="https://github.com/customer-stories"> Customer Stories </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary Link--external" target="_blank" data-analytics-event="{"location":"navbar","action":"partners","context":"resources","tag":"link","label":"partners_link_resources_navbar"}" href="https://partner.github.com"> Partners <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-link-external HeaderMenu-external-icon color-fg-subtle"> <path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path> </svg> </a></li> </ul> </div> </div> </div> </li> <li class="HeaderMenu-item position-relative flex-wrap flex-justify-between flex-items-center d-block d-lg-flex flex-lg-nowrap flex-lg-items-center js-details-container js-header-menu-item"> <button type="button" class="HeaderMenu-link border-0 width-full width-lg-auto px-0 px-lg-2 py-lg-2 no-wrap d-flex flex-items-center flex-justify-between js-details-target" aria-expanded="false"> Open Source <svg opacity="0.5" aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-chevron-down HeaderMenu-icon ml-1"> <path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path> </svg> </button> <div class="HeaderMenu-dropdown dropdown-menu rounded m-0 p-0 pt-2 pt-lg-4 position-relative position-lg-absolute left-0 left-lg-n3 pb-2 pb-lg-4 px-lg-4"> <div class="HeaderMenu-column"> <div class="border-bottom pb-3 pb-lg-0 pb-lg-3 mb-3 mb-lg-0 mb-lg-3"> <ul class="list-style-none f5" > <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description" data-analytics-event="{"location":"navbar","action":"github_sponsors","context":"open_source","tag":"link","label":"github_sponsors_link_open_source_navbar"}" href="/sponsors"> <div> <div class="color-fg-default h4">GitHub Sponsors</div> Fund open source developers </div> </a></li> </ul> </div> <div class="border-bottom pb-3 pb-lg-0 pb-lg-3 mb-3 mb-lg-0 mb-lg-3"> <ul class="list-style-none f5" > <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description" data-analytics-event="{"location":"navbar","action":"the_readme_project","context":"open_source","tag":"link","label":"the_readme_project_link_open_source_navbar"}" href="https://github.com/readme"> <div> <div class="color-fg-default h4">The ReadME Project</div> GitHub community articles </div> </a></li> </ul> </div> <div class="border-bottom pb-3 pb-lg-0 border-bottom-0"> <span class="d-block h4 color-fg-default my-1" id="open-source-repositories-heading">Repositories</span> <ul class="list-style-none f5" aria-labelledby="open-source-repositories-heading"> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"topics","context":"open_source","tag":"link","label":"topics_link_open_source_navbar"}" href="https://github.com/topics"> Topics </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"trending","context":"open_source","tag":"link","label":"trending_link_open_source_navbar"}" href="https://github.com/trending"> Trending </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"collections","context":"open_source","tag":"link","label":"collections_link_open_source_navbar"}" href="https://github.com/collections"> Collections </a></li> </ul> </div> </div> </div> </li> <li class="HeaderMenu-item position-relative flex-wrap flex-justify-between flex-items-center d-block d-lg-flex flex-lg-nowrap flex-lg-items-center js-details-container js-header-menu-item"> <button type="button" class="HeaderMenu-link border-0 width-full width-lg-auto px-0 px-lg-2 py-lg-2 no-wrap d-flex flex-items-center flex-justify-between js-details-target" aria-expanded="false"> Enterprise <svg opacity="0.5" aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-chevron-down HeaderMenu-icon ml-1"> <path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path> </svg> </button> <div class="HeaderMenu-dropdown dropdown-menu rounded m-0 p-0 pt-2 pt-lg-4 position-relative position-lg-absolute left-0 left-lg-n3 pb-2 pb-lg-4 px-lg-4"> <div class="HeaderMenu-column"> <div class="border-bottom pb-3 pb-lg-0 pb-lg-3 mb-3 mb-lg-0 mb-lg-3"> <ul class="list-style-none f5" > <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description" data-analytics-event="{"location":"navbar","action":"enterprise_platform","context":"enterprise","tag":"link","label":"enterprise_platform_link_enterprise_navbar"}" href="/enterprise"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-stack color-fg-subtle mr-3"> <path d="M11.063 1.456a1.749 1.749 0 0 1 1.874 0l8.383 5.316a1.751 1.751 0 0 1 0 2.956l-8.383 5.316a1.749 1.749 0 0 1-1.874 0L2.68 9.728a1.751 1.751 0 0 1 0-2.956Zm1.071 1.267a.25.25 0 0 0-.268 0L3.483 8.039a.25.25 0 0 0 0 .422l8.383 5.316a.25.25 0 0 0 .268 0l8.383-5.316a.25.25 0 0 0 0-.422Z"></path><path d="M1.867 12.324a.75.75 0 0 1 1.035-.232l8.964 5.685a.25.25 0 0 0 .268 0l8.964-5.685a.75.75 0 0 1 .804 1.267l-8.965 5.685a1.749 1.749 0 0 1-1.874 0l-8.965-5.685a.75.75 0 0 1-.231-1.035Z"></path><path d="M1.867 16.324a.75.75 0 0 1 1.035-.232l8.964 5.685a.25.25 0 0 0 .268 0l8.964-5.685a.75.75 0 0 1 .804 1.267l-8.965 5.685a1.749 1.749 0 0 1-1.874 0l-8.965-5.685a.75.75 0 0 1-.231-1.035Z"></path> </svg> <div> <div class="color-fg-default h4">Enterprise platform</div> AI-powered developer platform </div> </a></li> </ul> </div> <div class="border-bottom pb-3 pb-lg-0 border-bottom-0"> <span class="d-block h4 color-fg-default my-1" id="enterprise-available-add-ons-heading">Available add-ons</span> <ul class="list-style-none f5" aria-labelledby="enterprise-available-add-ons-heading"> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3" data-analytics-event="{"location":"navbar","action":"advanced_security","context":"enterprise","tag":"link","label":"advanced_security_link_enterprise_navbar"}" href="https://github.com/enterprise/advanced-security"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-shield-check color-fg-subtle mr-3"> <path d="M16.53 9.78a.75.75 0 0 0-1.06-1.06L11 13.19l-1.97-1.97a.75.75 0 0 0-1.06 1.06l2.5 2.5a.75.75 0 0 0 1.06 0l5-5Z"></path><path d="m12.54.637 8.25 2.675A1.75 1.75 0 0 1 22 4.976V10c0 6.19-3.771 10.704-9.401 12.83a1.704 1.704 0 0 1-1.198 0C5.77 20.705 2 16.19 2 10V4.976c0-.758.489-1.43 1.21-1.664L11.46.637a1.748 1.748 0 0 1 1.08 0Zm-.617 1.426-8.25 2.676a.249.249 0 0 0-.173.237V10c0 5.46 3.28 9.483 8.43 11.426a.199.199 0 0 0 .14 0C17.22 19.483 20.5 15.461 20.5 10V4.976a.25.25 0 0 0-.173-.237l-8.25-2.676a.253.253 0 0 0-.154 0Z"></path> </svg> <div> <div class="color-fg-default h4">Advanced Security</div> Enterprise-grade security features </div> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3" data-analytics-event="{"location":"navbar","action":"github_copilot","context":"enterprise","tag":"link","label":"github_copilot_link_enterprise_navbar"}" href="/features/copilot#enterprise"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-copilot color-fg-subtle mr-3"> <path d="M23.922 16.992c-.861 1.495-5.859 5.023-11.922 5.023-6.063 0-11.061-3.528-11.922-5.023A.641.641 0 0 1 0 16.736v-2.869a.841.841 0 0 1 .053-.22c.372-.935 1.347-2.292 2.605-2.656.167-.429.414-1.055.644-1.517a10.195 10.195 0 0 1-.052-1.086c0-1.331.282-2.499 1.132-3.368.397-.406.89-.717 1.474-.952 1.399-1.136 3.392-2.093 6.122-2.093 2.731 0 4.767.957 6.166 2.093.584.235 1.077.546 1.474.952.85.869 1.132 2.037 1.132 3.368 0 .368-.014.733-.052 1.086.23.462.477 1.088.644 1.517 1.258.364 2.233 1.721 2.605 2.656a.832.832 0 0 1 .053.22v2.869a.641.641 0 0 1-.078.256ZM12.172 11h-.344a4.323 4.323 0 0 1-.355.508C10.703 12.455 9.555 13 7.965 13c-1.725 0-2.989-.359-3.782-1.259a2.005 2.005 0 0 1-.085-.104L4 11.741v6.585c1.435.779 4.514 2.179 8 2.179 3.486 0 6.565-1.4 8-2.179v-6.585l-.098-.104s-.033.045-.085.104c-.793.9-2.057 1.259-3.782 1.259-1.59 0-2.738-.545-3.508-1.492a4.323 4.323 0 0 1-.355-.508h-.016.016Zm.641-2.935c.136 1.057.403 1.913.878 2.497.442.544 1.134.938 2.344.938 1.573 0 2.292-.337 2.657-.751.384-.435.558-1.15.558-2.361 0-1.14-.243-1.847-.705-2.319-.477-.488-1.319-.862-2.824-1.025-1.487-.161-2.192.138-2.533.529-.269.307-.437.808-.438 1.578v.021c0 .265.021.562.063.893Zm-1.626 0c.042-.331.063-.628.063-.894v-.02c-.001-.77-.169-1.271-.438-1.578-.341-.391-1.046-.69-2.533-.529-1.505.163-2.347.537-2.824 1.025-.462.472-.705 1.179-.705 2.319 0 1.211.175 1.926.558 2.361.365.414 1.084.751 2.657.751 1.21 0 1.902-.394 2.344-.938.475-.584.742-1.44.878-2.497Z"></path><path d="M14.5 14.25a1 1 0 0 1 1 1v2a1 1 0 0 1-2 0v-2a1 1 0 0 1 1-1Zm-5 0a1 1 0 0 1 1 1v2a1 1 0 0 1-2 0v-2a1 1 0 0 1 1-1Z"></path> </svg> <div> <div class="color-fg-default h4">GitHub Copilot</div> Enterprise-grade AI features </div> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description" data-analytics-event="{"location":"navbar","action":"premium_support","context":"enterprise","tag":"link","label":"premium_support_link_enterprise_navbar"}" href="/premium-support"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-comment-discussion color-fg-subtle mr-3"> <path d="M1.75 1h12.5c.966 0 1.75.784 1.75 1.75v9.5A1.75 1.75 0 0 1 14.25 14H8.061l-2.574 2.573A1.458 1.458 0 0 1 3 15.543V14H1.75A1.75 1.75 0 0 1 0 12.25v-9.5C0 1.784.784 1 1.75 1ZM1.5 2.75v9.5c0 .138.112.25.25.25h2a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h6.5a.25.25 0 0 0 .25-.25v-9.5a.25.25 0 0 0-.25-.25H1.75a.25.25 0 0 0-.25.25Z"></path><path d="M22.5 8.75a.25.25 0 0 0-.25-.25h-3.5a.75.75 0 0 1 0-1.5h3.5c.966 0 1.75.784 1.75 1.75v9.5A1.75 1.75 0 0 1 22.25 20H21v1.543a1.457 1.457 0 0 1-2.487 1.03L15.939 20H10.75A1.75 1.75 0 0 1 9 18.25v-1.465a.75.75 0 0 1 1.5 0v1.465c0 .138.112.25.25.25h5.5a.75.75 0 0 1 .53.22l2.72 2.72v-2.19a.75.75 0 0 1 .75-.75h2a.25.25 0 0 0 .25-.25v-9.5Z"></path> </svg> <div> <div class="color-fg-default h4">Premium Support</div> Enterprise-grade 24/7 support </div> </a></li> </ul> </div> </div> </div> </li> <li class="HeaderMenu-item position-relative flex-wrap flex-justify-between flex-items-center d-block d-lg-flex flex-lg-nowrap flex-lg-items-center js-details-container js-header-menu-item"> <a class="HeaderMenu-link no-underline px-0 px-lg-2 py-3 py-lg-2 d-block d-lg-inline-block" data-analytics-event="{"location":"navbar","action":"pricing","context":"global","tag":"link","label":"pricing_link_global_navbar"}" href="https://github.com/pricing">Pricing</a> </li> </ul> </nav> <div class="d-flex flex-column flex-lg-row width-full flex-justify-end flex-lg-items-center text-center mt-3 mt-lg-0 text-lg-left ml-lg-3"> <qbsearch-input class="search-input" data-scope="" data-custom-scopes-path="/search/custom_scopes" data-delete-custom-scopes-csrf="H4lPYf8sUVC45gGWvB6W0iSUe1ZxCRgtz1ulD4jtD4GltIjSgUp6t1psnEbrIxf3Ghpd9qjb1ExiLXRXt321VQ" data-max-custom-scopes="10" data-header-redesign-enabled="false" data-initial-value="repo:wren-lang/wren language:Dart" data-blackbird-suggestions-path="/search/suggestions" data-jump-to-suggestions-path="/_graphql/GetSuggestedNavigationDestinations" data-current-repository="" data-current-org="" data-current-owner="" data-logged-in="false" data-copilot-chat-enabled="false" data-nl-search-enabled="false" data-retain-scroll-position="true"> <div class="search-input-container search-with-dialog position-relative d-flex flex-row flex-items-center mr-4 rounded" data-action="click:qbsearch-input#searchInputContainerClicked" > <button type="button" class="header-search-button input-button form-control d-flex flex-1 flex-self-stretch flex-items-center no-wrap width-full py-0 pl-2 pr-0 text-left border-0 box-shadow-none" data-target="qbsearch-input.inputButton" aria-label="Search or jump to…" aria-haspopup="dialog" placeholder="Search or jump to..." data-hotkey=s,/ autocapitalize="off" data-analytics-event="{"location":"navbar","action":"searchbar","context":"global","tag":"input","label":"searchbar_input_global_navbar"}" data-action="click:qbsearch-input#handleExpand" > <div class="mr-2 color-fg-muted"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-search"> <path d="M10.68 11.74a6 6 0 0 1-7.922-8.982 6 6 0 0 1 8.982 7.922l3.04 3.04a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215ZM11.5 7a4.499 4.499 0 1 0-8.997 0A4.499 4.499 0 0 0 11.5 7Z"></path> </svg> </div> <span class="flex-1" data-target="qbsearch-input.inputButtonText">repo:wren-lang/wren language:Dart</span> <div class="d-flex" data-target="qbsearch-input.hotkeyIndicator"> <svg xmlns="http://www.w3.org/2000/svg" width="22" height="20" aria-hidden="true" class="mr-1"><path fill="none" stroke="#979A9C" opacity=".4" d="M3.5.5h12c1.7 0 3 1.3 3 3v13c0 1.7-1.3 3-3 3h-12c-1.7 0-3-1.3-3-3v-13c0-1.7 1.3-3 3-3z"></path><path fill="#979A9C" d="M11.8 6L8 15.1h-.9L10.8 6h1z"></path></svg> </div> </button> <input type="hidden" name="type" class="js-site-search-type-field"> <div class="Overlay--hidden " data-modal-dialog-overlay> <modal-dialog data-action="close:qbsearch-input#handleClose cancel:qbsearch-input#handleClose" data-target="qbsearch-input.searchSuggestionsDialog" role="dialog" id="search-suggestions-dialog" aria-modal="true" aria-labelledby="search-suggestions-dialog-header" data-view-component="true" class="Overlay Overlay--width-large Overlay--height-auto"> <h1 id="search-suggestions-dialog-header" class="sr-only">Search code, repositories, users, issues, pull requests...</h1> <div class="Overlay-body Overlay-body--paddingNone"> <div data-view-component="true"> <div class="search-suggestions position-fixed width-full color-shadow-large border color-fg-default color-bg-default overflow-hidden d-flex flex-column query-builder-container" style="border-radius: 12px;" data-target="qbsearch-input.queryBuilderContainer" hidden > <!-- '"` --><!-- </textarea></xmp> --></option></form><form id="query-builder-test-form" action="" accept-charset="UTF-8" method="get"> <query-builder data-target="qbsearch-input.queryBuilder" id="query-builder-query-builder-test" data-filter-key=":" data-view-component="true" class="QueryBuilder search-query-builder"> <div class="FormControl FormControl--fullWidth"> <label id="query-builder-test-label" for="query-builder-test" class="FormControl-label sr-only"> Search </label> <div class="QueryBuilder-StyledInput width-fit " data-target="query-builder.styledInput" > <span id="query-builder-test-leadingvisual-wrap" class="FormControl-input-leadingVisualWrap QueryBuilder-leadingVisualWrap"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-search FormControl-input-leadingVisual"> <path d="M10.68 11.74a6 6 0 0 1-7.922-8.982 6 6 0 0 1 8.982 7.922l3.04 3.04a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215ZM11.5 7a4.499 4.499 0 1 0-8.997 0A4.499 4.499 0 0 0 11.5 7Z"></path> </svg> </span> <div data-target="query-builder.styledInputContainer" class="QueryBuilder-StyledInputContainer"> <div aria-hidden="true" class="QueryBuilder-StyledInputContent" data-target="query-builder.styledInputContent" ></div> <div class="QueryBuilder-InputWrapper"> <div aria-hidden="true" class="QueryBuilder-Sizer" data-target="query-builder.sizer"></div> <input id="query-builder-test" name="query-builder-test" value="" autocomplete="off" type="text" role="combobox" spellcheck="false" aria-expanded="false" aria-describedby="validation-6c0984b7-0167-4205-97d1-3bae4ddbc2f9" data-target="query-builder.input" data-action=" input:query-builder#inputChange blur:query-builder#inputBlur keydown:query-builder#inputKeydown focus:query-builder#inputFocus " data-view-component="true" class="FormControl-input QueryBuilder-Input FormControl-medium" /> </div> </div> <span class="sr-only" id="query-builder-test-clear">Clear</span> <button role="button" id="query-builder-test-clear-button" aria-labelledby="query-builder-test-clear query-builder-test-label" data-target="query-builder.clearButton" data-action=" click:query-builder#clear focus:query-builder#clearButtonFocus blur:query-builder#clearButtonBlur " variant="small" hidden="hidden" type="button" data-view-component="true" class="Button Button--iconOnly Button--invisible Button--medium mr-1 px-2 py-0 d-flex flex-items-center rounded-1 color-fg-muted"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x-circle-fill Button-visual"> <path d="M2.343 13.657A8 8 0 1 1 13.658 2.343 8 8 0 0 1 2.343 13.657ZM6.03 4.97a.751.751 0 0 0-1.042.018.751.751 0 0 0-.018 1.042L6.94 8 4.97 9.97a.749.749 0 0 0 .326 1.275.749.749 0 0 0 .734-.215L8 9.06l1.97 1.97a.749.749 0 0 0 1.275-.326.749.749 0 0 0-.215-.734L9.06 8l1.97-1.97a.749.749 0 0 0-.326-1.275.749.749 0 0 0-.734.215L8 6.94Z"></path> </svg> </button> </div> <template id="search-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-search"> <path d="M10.68 11.74a6 6 0 0 1-7.922-8.982 6 6 0 0 1 8.982 7.922l3.04 3.04a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215ZM11.5 7a4.499 4.499 0 1 0-8.997 0A4.499 4.499 0 0 0 11.5 7Z"></path> </svg> </template> <template id="code-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code"> <path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path> </svg> </template> <template id="file-code-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-file-code"> <path d="M4 1.75C4 .784 4.784 0 5.75 0h5.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v8.586A1.75 1.75 0 0 1 14.25 15h-9a.75.75 0 0 1 0-1.5h9a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 10 4.25V1.5H5.75a.25.25 0 0 0-.25.25v2.5a.75.75 0 0 1-1.5 0Zm1.72 4.97a.75.75 0 0 1 1.06 0l2 2a.75.75 0 0 1 0 1.06l-2 2a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734l1.47-1.47-1.47-1.47a.75.75 0 0 1 0-1.06ZM3.28 7.78 1.81 9.25l1.47 1.47a.751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018l-2-2a.75.75 0 0 1 0-1.06l2-2a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Zm8.22-6.218V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z"></path> </svg> </template> <template id="history-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-history"> <path d="m.427 1.927 1.215 1.215a8.002 8.002 0 1 1-1.6 5.685.75.75 0 1 1 1.493-.154 6.5 6.5 0 1 0 1.18-4.458l1.358 1.358A.25.25 0 0 1 3.896 6H.25A.25.25 0 0 1 0 5.75V2.104a.25.25 0 0 1 .427-.177ZM7.75 4a.75.75 0 0 1 .75.75v2.992l2.028.812a.75.75 0 0 1-.557 1.392l-2.5-1A.751.751 0 0 1 7 8.25v-3.5A.75.75 0 0 1 7.75 4Z"></path> </svg> </template> <template id="repo-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo"> <path d="M2 2.5A2.5 2.5 0 0 1 4.5 0h8.75a.75.75 0 0 1 .75.75v12.5a.75.75 0 0 1-.75.75h-2.5a.75.75 0 0 1 0-1.5h1.75v-2h-8a1 1 0 0 0-.714 1.7.75.75 0 1 1-1.072 1.05A2.495 2.495 0 0 1 2 11.5Zm10.5-1h-8a1 1 0 0 0-1 1v6.708A2.486 2.486 0 0 1 4.5 9h8ZM5 12.25a.25.25 0 0 1 .25-.25h3.5a.25.25 0 0 1 .25.25v3.25a.25.25 0 0 1-.4.2l-1.45-1.087a.249.249 0 0 0-.3 0L5.4 15.7a.25.25 0 0 1-.4-.2Z"></path> </svg> </template> <template id="bookmark-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-bookmark"> <path d="M3 2.75C3 1.784 3.784 1 4.75 1h6.5c.966 0 1.75.784 1.75 1.75v11.5a.75.75 0 0 1-1.227.579L8 11.722l-3.773 3.107A.751.751 0 0 1 3 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v9.91l3.023-2.489a.75.75 0 0 1 .954 0l3.023 2.49V2.75a.25.25 0 0 0-.25-.25Z"></path> </svg> </template> <template id="plus-circle-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-plus-circle"> <path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Zm7.25-3.25v2.5h2.5a.75.75 0 0 1 0 1.5h-2.5v2.5a.75.75 0 0 1-1.5 0v-2.5h-2.5a.75.75 0 0 1 0-1.5h2.5v-2.5a.75.75 0 0 1 1.5 0Z"></path> </svg> </template> <template id="circle-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-dot-fill"> <path d="M8 4a4 4 0 1 1 0 8 4 4 0 0 1 0-8Z"></path> </svg> </template> <template id="trash-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-trash"> <path d="M11 1.75V3h2.25a.75.75 0 0 1 0 1.5H2.75a.75.75 0 0 1 0-1.5H5V1.75C5 .784 5.784 0 6.75 0h2.5C10.216 0 11 .784 11 1.75ZM4.496 6.675l.66 6.6a.25.25 0 0 0 .249.225h5.19a.25.25 0 0 0 .249-.225l.66-6.6a.75.75 0 0 1 1.492.149l-.66 6.6A1.748 1.748 0 0 1 10.595 15h-5.19a1.75 1.75 0 0 1-1.741-1.575l-.66-6.6a.75.75 0 1 1 1.492-.15ZM6.5 1.75V3h3V1.75a.25.25 0 0 0-.25-.25h-2.5a.25.25 0 0 0-.25.25Z"></path> </svg> </template> <template id="team-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-people"> <path d="M2 5.5a3.5 3.5 0 1 1 5.898 2.549 5.508 5.508 0 0 1 3.034 4.084.75.75 0 1 1-1.482.235 4 4 0 0 0-7.9 0 .75.75 0 0 1-1.482-.236A5.507 5.507 0 0 1 3.102 8.05 3.493 3.493 0 0 1 2 5.5ZM11 4a3.001 3.001 0 0 1 2.22 5.018 5.01 5.01 0 0 1 2.56 3.012.749.749 0 0 1-.885.954.752.752 0 0 1-.549-.514 3.507 3.507 0 0 0-2.522-2.372.75.75 0 0 1-.574-.73v-.352a.75.75 0 0 1 .416-.672A1.5 1.5 0 0 0 11 5.5.75.75 0 0 1 11 4Zm-5.5-.5a2 2 0 1 0-.001 3.999A2 2 0 0 0 5.5 3.5Z"></path> </svg> </template> <template id="project-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-project"> <path d="M1.75 0h12.5C15.216 0 16 .784 16 1.75v12.5A1.75 1.75 0 0 1 14.25 16H1.75A1.75 1.75 0 0 1 0 14.25V1.75C0 .784.784 0 1.75 0ZM1.5 1.75v12.5c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25V1.75a.25.25 0 0 0-.25-.25H1.75a.25.25 0 0 0-.25.25ZM11.75 3a.75.75 0 0 1 .75.75v7.5a.75.75 0 0 1-1.5 0v-7.5a.75.75 0 0 1 .75-.75Zm-8.25.75a.75.75 0 0 1 1.5 0v5.5a.75.75 0 0 1-1.5 0ZM8 3a.75.75 0 0 1 .75.75v3.5a.75.75 0 0 1-1.5 0v-3.5A.75.75 0 0 1 8 3Z"></path> </svg> </template> <template id="pencil-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-pencil"> <path d="M11.013 1.427a1.75 1.75 0 0 1 2.474 0l1.086 1.086a1.75 1.75 0 0 1 0 2.474l-8.61 8.61c-.21.21-.47.364-.756.445l-3.251.93a.75.75 0 0 1-.927-.928l.929-3.25c.081-.286.235-.547.445-.758l8.61-8.61Zm.176 4.823L9.75 4.81l-6.286 6.287a.253.253 0 0 0-.064.108l-.558 1.953 1.953-.558a.253.253 0 0 0 .108-.064Zm1.238-3.763a.25.25 0 0 0-.354 0L10.811 3.75l1.439 1.44 1.263-1.263a.25.25 0 0 0 0-.354Z"></path> </svg> </template> <template id="copilot-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-copilot"> <path d="M7.998 15.035c-4.562 0-7.873-2.914-7.998-3.749V9.338c.085-.628.677-1.686 1.588-2.065.013-.07.024-.143.036-.218.029-.183.06-.384.126-.612-.201-.508-.254-1.084-.254-1.656 0-.87.128-1.769.693-2.484.579-.733 1.494-1.124 2.724-1.261 1.206-.134 2.262.034 2.944.765.05.053.096.108.139.165.044-.057.094-.112.143-.165.682-.731 1.738-.899 2.944-.765 1.23.137 2.145.528 2.724 1.261.566.715.693 1.614.693 2.484 0 .572-.053 1.148-.254 1.656.066.228.098.429.126.612.012.076.024.148.037.218.924.385 1.522 1.471 1.591 2.095v1.872c0 .766-3.351 3.795-8.002 3.795Zm0-1.485c2.28 0 4.584-1.11 5.002-1.433V7.862l-.023-.116c-.49.21-1.075.291-1.727.291-1.146 0-2.059-.327-2.71-.991A3.222 3.222 0 0 1 8 6.303a3.24 3.24 0 0 1-.544.743c-.65.664-1.563.991-2.71.991-.652 0-1.236-.081-1.727-.291l-.023.116v4.255c.419.323 2.722 1.433 5.002 1.433ZM6.762 2.83c-.193-.206-.637-.413-1.682-.297-1.019.113-1.479.404-1.713.7-.247.312-.369.789-.369 1.554 0 .793.129 1.171.308 1.371.162.181.519.379 1.442.379.853 0 1.339-.235 1.638-.54.315-.322.527-.827.617-1.553.117-.935-.037-1.395-.241-1.614Zm4.155-.297c-1.044-.116-1.488.091-1.681.297-.204.219-.359.679-.242 1.614.091.726.303 1.231.618 1.553.299.305.784.54 1.638.54.922 0 1.28-.198 1.442-.379.179-.2.308-.578.308-1.371 0-.765-.123-1.242-.37-1.554-.233-.296-.693-.587-1.713-.7Z"></path><path d="M6.25 9.037a.75.75 0 0 1 .75.75v1.501a.75.75 0 0 1-1.5 0V9.787a.75.75 0 0 1 .75-.75Zm4.25.75v1.501a.75.75 0 0 1-1.5 0V9.787a.75.75 0 0 1 1.5 0Z"></path> </svg> </template> <template id="copilot-error-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-copilot-error"> <path d="M16 11.24c0 .112-.072.274-.21.467L13 9.688V7.862l-.023-.116c-.49.21-1.075.291-1.727.291-.198 0-.388-.009-.571-.029L6.833 5.226a4.01 4.01 0 0 0 .17-.782c.117-.935-.037-1.395-.241-1.614-.193-.206-.637-.413-1.682-.297-.683.076-1.115.231-1.395.415l-1.257-.91c.579-.564 1.413-.877 2.485-.996 1.206-.134 2.262.034 2.944.765.05.053.096.108.139.165.044-.057.094-.112.143-.165.682-.731 1.738-.899 2.944-.765 1.23.137 2.145.528 2.724 1.261.566.715.693 1.614.693 2.484 0 .572-.053 1.148-.254 1.656.066.228.098.429.126.612.012.076.024.148.037.218.924.385 1.522 1.471 1.591 2.095Zm-5.083-8.707c-1.044-.116-1.488.091-1.681.297-.204.219-.359.679-.242 1.614.091.726.303 1.231.618 1.553.299.305.784.54 1.638.54.922 0 1.28-.198 1.442-.379.179-.2.308-.578.308-1.371 0-.765-.123-1.242-.37-1.554-.233-.296-.693-.587-1.713-.7Zm2.511 11.074c-1.393.776-3.272 1.428-5.43 1.428-4.562 0-7.873-2.914-7.998-3.749V9.338c.085-.628.677-1.686 1.588-2.065.013-.07.024-.143.036-.218.029-.183.06-.384.126-.612-.18-.455-.241-.963-.252-1.475L.31 4.107A.747.747 0 0 1 0 3.509V3.49a.748.748 0 0 1 .625-.73c.156-.026.306.047.435.139l14.667 10.578a.592.592 0 0 1 .227.264.752.752 0 0 1 .046.249v.022a.75.75 0 0 1-1.19.596Zm-1.367-.991L5.635 7.964a5.128 5.128 0 0 1-.889.073c-.652 0-1.236-.081-1.727-.291l-.023.116v4.255c.419.323 2.722 1.433 5.002 1.433 1.539 0 3.089-.505 4.063-.934Z"></path> </svg> </template> <template id="workflow-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-workflow"> <path d="M0 1.75C0 .784.784 0 1.75 0h3.5C6.216 0 7 .784 7 1.75v3.5A1.75 1.75 0 0 1 5.25 7H4v4a1 1 0 0 0 1 1h4v-1.25C9 9.784 9.784 9 10.75 9h3.5c.966 0 1.75.784 1.75 1.75v3.5A1.75 1.75 0 0 1 14.25 16h-3.5A1.75 1.75 0 0 1 9 14.25v-.75H5A2.5 2.5 0 0 1 2.5 11V7h-.75A1.75 1.75 0 0 1 0 5.25Zm1.75-.25a.25.25 0 0 0-.25.25v3.5c0 .138.112.25.25.25h3.5a.25.25 0 0 0 .25-.25v-3.5a.25.25 0 0 0-.25-.25Zm9 9a.25.25 0 0 0-.25.25v3.5c0 .138.112.25.25.25h3.5a.25.25 0 0 0 .25-.25v-3.5a.25.25 0 0 0-.25-.25Z"></path> </svg> </template> <template id="book-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-book"> <path d="M0 1.75A.75.75 0 0 1 .75 1h4.253c1.227 0 2.317.59 3 1.501A3.743 3.743 0 0 1 11.006 1h4.245a.75.75 0 0 1 .75.75v10.5a.75.75 0 0 1-.75.75h-4.507a2.25 2.25 0 0 0-1.591.659l-.622.621a.75.75 0 0 1-1.06 0l-.622-.621A2.25 2.25 0 0 0 5.258 13H.75a.75.75 0 0 1-.75-.75Zm7.251 10.324.004-5.073-.002-2.253A2.25 2.25 0 0 0 5.003 2.5H1.5v9h3.757a3.75 3.75 0 0 1 1.994.574ZM8.755 4.75l-.004 7.322a3.752 3.752 0 0 1 1.992-.572H14.5v-9h-3.495a2.25 2.25 0 0 0-2.25 2.25Z"></path> </svg> </template> <template id="code-review-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code-review"> <path d="M1.75 1h12.5c.966 0 1.75.784 1.75 1.75v8.5A1.75 1.75 0 0 1 14.25 13H8.061l-2.574 2.573A1.458 1.458 0 0 1 3 14.543V13H1.75A1.75 1.75 0 0 1 0 11.25v-8.5C0 1.784.784 1 1.75 1ZM1.5 2.75v8.5c0 .138.112.25.25.25h2a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h6.5a.25.25 0 0 0 .25-.25v-8.5a.25.25 0 0 0-.25-.25H1.75a.25.25 0 0 0-.25.25Zm5.28 1.72a.75.75 0 0 1 0 1.06L5.31 7l1.47 1.47a.751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018l-2-2a.75.75 0 0 1 0-1.06l2-2a.75.75 0 0 1 1.06 0Zm2.44 0a.75.75 0 0 1 1.06 0l2 2a.75.75 0 0 1 0 1.06l-2 2a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L10.69 7 9.22 5.53a.75.75 0 0 1 0-1.06Z"></path> </svg> </template> <template id="codespaces-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-codespaces"> <path d="M0 11.25c0-.966.784-1.75 1.75-1.75h12.5c.966 0 1.75.784 1.75 1.75v3A1.75 1.75 0 0 1 14.25 16H1.75A1.75 1.75 0 0 1 0 14.25Zm2-9.5C2 .784 2.784 0 3.75 0h8.5C13.216 0 14 .784 14 1.75v5a1.75 1.75 0 0 1-1.75 1.75h-8.5A1.75 1.75 0 0 1 2 6.75Zm1.75-.25a.25.25 0 0 0-.25.25v5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-5a.25.25 0 0 0-.25-.25Zm-2 9.5a.25.25 0 0 0-.25.25v3c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25v-3a.25.25 0 0 0-.25-.25Z"></path><path d="M7 12.75a.75.75 0 0 1 .75-.75h4.5a.75.75 0 0 1 0 1.5h-4.5a.75.75 0 0 1-.75-.75Zm-4 0a.75.75 0 0 1 .75-.75h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1-.75-.75Z"></path> </svg> </template> <template id="comment-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-comment"> <path d="M1 2.75C1 1.784 1.784 1 2.75 1h10.5c.966 0 1.75.784 1.75 1.75v7.5A1.75 1.75 0 0 1 13.25 12H9.06l-2.573 2.573A1.458 1.458 0 0 1 4 13.543V12H2.75A1.75 1.75 0 0 1 1 10.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h2a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h4.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path> </svg> </template> <template id="comment-discussion-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-comment-discussion"> <path d="M1.75 1h8.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 10.25 10H7.061l-2.574 2.573A1.458 1.458 0 0 1 2 11.543V10h-.25A1.75 1.75 0 0 1 0 8.25v-5.5C0 1.784.784 1 1.75 1ZM1.5 2.75v5.5c0 .138.112.25.25.25h1a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h3.5a.25.25 0 0 0 .25-.25v-5.5a.25.25 0 0 0-.25-.25h-8.5a.25.25 0 0 0-.25.25Zm13 2a.25.25 0 0 0-.25-.25h-.5a.75.75 0 0 1 0-1.5h.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 14.25 12H14v1.543a1.458 1.458 0 0 1-2.487 1.03L9.22 12.28a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215l2.22 2.22v-2.19a.75.75 0 0 1 .75-.75h1a.25.25 0 0 0 .25-.25Z"></path> </svg> </template> <template id="organization-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-organization"> <path d="M1.75 16A1.75 1.75 0 0 1 0 14.25V1.75C0 .784.784 0 1.75 0h8.5C11.216 0 12 .784 12 1.75v12.5c0 .085-.006.168-.018.25h2.268a.25.25 0 0 0 .25-.25V8.285a.25.25 0 0 0-.111-.208l-1.055-.703a.749.749 0 1 1 .832-1.248l1.055.703c.487.325.779.871.779 1.456v5.965A1.75 1.75 0 0 1 14.25 16h-3.5a.766.766 0 0 1-.197-.026c-.099.017-.2.026-.303.026h-3a.75.75 0 0 1-.75-.75V14h-1v1.25a.75.75 0 0 1-.75.75Zm-.25-1.75c0 .138.112.25.25.25H4v-1.25a.75.75 0 0 1 .75-.75h2.5a.75.75 0 0 1 .75.75v1.25h2.25a.25.25 0 0 0 .25-.25V1.75a.25.25 0 0 0-.25-.25h-8.5a.25.25 0 0 0-.25.25ZM3.75 6h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1 0-1.5ZM3 3.75A.75.75 0 0 1 3.75 3h.5a.75.75 0 0 1 0 1.5h-.5A.75.75 0 0 1 3 3.75Zm4 3A.75.75 0 0 1 7.75 6h.5a.75.75 0 0 1 0 1.5h-.5A.75.75 0 0 1 7 6.75ZM7.75 3h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1 0-1.5ZM3 9.75A.75.75 0 0 1 3.75 9h.5a.75.75 0 0 1 0 1.5h-.5A.75.75 0 0 1 3 9.75ZM7.75 9h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1 0-1.5Z"></path> </svg> </template> <template id="rocket-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-rocket"> <path d="M14.064 0h.186C15.216 0 16 .784 16 1.75v.186a8.752 8.752 0 0 1-2.564 6.186l-.458.459c-.314.314-.641.616-.979.904v3.207c0 .608-.315 1.172-.833 1.49l-2.774 1.707a.749.749 0 0 1-1.11-.418l-.954-3.102a1.214 1.214 0 0 1-.145-.125L3.754 9.816a1.218 1.218 0 0 1-.124-.145L.528 8.717a.749.749 0 0 1-.418-1.11l1.71-2.774A1.748 1.748 0 0 1 3.31 4h3.204c.288-.338.59-.665.904-.979l.459-.458A8.749 8.749 0 0 1 14.064 0ZM8.938 3.623h-.002l-.458.458c-.76.76-1.437 1.598-2.02 2.5l-1.5 2.317 2.143 2.143 2.317-1.5c.902-.583 1.74-1.26 2.499-2.02l.459-.458a7.25 7.25 0 0 0 2.123-5.127V1.75a.25.25 0 0 0-.25-.25h-.186a7.249 7.249 0 0 0-5.125 2.123ZM3.56 14.56c-.732.732-2.334 1.045-3.005 1.148a.234.234 0 0 1-.201-.064.234.234 0 0 1-.064-.201c.103-.671.416-2.273 1.15-3.003a1.502 1.502 0 1 1 2.12 2.12Zm6.94-3.935c-.088.06-.177.118-.266.175l-2.35 1.521.548 1.783 1.949-1.2a.25.25 0 0 0 .119-.213ZM3.678 8.116 5.2 5.766c.058-.09.117-.178.176-.266H3.309a.25.25 0 0 0-.213.119l-1.2 1.95ZM12 5a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> </template> <template id="shield-check-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-shield-check"> <path d="m8.533.133 5.25 1.68A1.75 1.75 0 0 1 15 3.48V7c0 1.566-.32 3.182-1.303 4.682-.983 1.498-2.585 2.813-5.032 3.855a1.697 1.697 0 0 1-1.33 0c-2.447-1.042-4.049-2.357-5.032-3.855C1.32 10.182 1 8.566 1 7V3.48a1.75 1.75 0 0 1 1.217-1.667l5.25-1.68a1.748 1.748 0 0 1 1.066 0Zm-.61 1.429.001.001-5.25 1.68a.251.251 0 0 0-.174.237V7c0 1.36.275 2.666 1.057 3.859.784 1.194 2.121 2.342 4.366 3.298a.196.196 0 0 0 .154 0c2.245-.957 3.582-2.103 4.366-3.297C13.225 9.666 13.5 8.358 13.5 7V3.48a.25.25 0 0 0-.174-.238l-5.25-1.68a.25.25 0 0 0-.153 0ZM11.28 6.28l-3.5 3.5a.75.75 0 0 1-1.06 0l-1.5-1.5a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215l.97.97 2.97-2.97a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Z"></path> </svg> </template> <template id="heart-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-heart"> <path d="m8 14.25.345.666a.75.75 0 0 1-.69 0l-.008-.004-.018-.01a7.152 7.152 0 0 1-.31-.17 22.055 22.055 0 0 1-3.434-2.414C2.045 10.731 0 8.35 0 5.5 0 2.836 2.086 1 4.25 1 5.797 1 7.153 1.802 8 3.02 8.847 1.802 10.203 1 11.75 1 13.914 1 16 2.836 16 5.5c0 2.85-2.045 5.231-3.885 6.818a22.066 22.066 0 0 1-3.744 2.584l-.018.01-.006.003h-.002ZM4.25 2.5c-1.336 0-2.75 1.164-2.75 3 0 2.15 1.58 4.144 3.365 5.682A20.58 20.58 0 0 0 8 13.393a20.58 20.58 0 0 0 3.135-2.211C12.92 9.644 14.5 7.65 14.5 5.5c0-1.836-1.414-3-2.75-3-1.373 0-2.609.986-3.029 2.456a.749.749 0 0 1-1.442 0C6.859 3.486 5.623 2.5 4.25 2.5Z"></path> </svg> </template> <template id="server-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-server"> <path d="M1.75 1h12.5c.966 0 1.75.784 1.75 1.75v4c0 .372-.116.717-.314 1 .198.283.314.628.314 1v4a1.75 1.75 0 0 1-1.75 1.75H1.75A1.75 1.75 0 0 1 0 12.75v-4c0-.358.109-.707.314-1a1.739 1.739 0 0 1-.314-1v-4C0 1.784.784 1 1.75 1ZM1.5 2.75v4c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25v-4a.25.25 0 0 0-.25-.25H1.75a.25.25 0 0 0-.25.25Zm.25 5.75a.25.25 0 0 0-.25.25v4c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25v-4a.25.25 0 0 0-.25-.25ZM7 4.75A.75.75 0 0 1 7.75 4h4.5a.75.75 0 0 1 0 1.5h-4.5A.75.75 0 0 1 7 4.75ZM7.75 10h4.5a.75.75 0 0 1 0 1.5h-4.5a.75.75 0 0 1 0-1.5ZM3 4.75A.75.75 0 0 1 3.75 4h.5a.75.75 0 0 1 0 1.5h-.5A.75.75 0 0 1 3 4.75ZM3.75 10h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1 0-1.5Z"></path> </svg> </template> <template id="globe-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-globe"> <path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM5.78 8.75a9.64 9.64 0 0 0 1.363 4.177c.255.426.542.832.857 1.215.245-.296.551-.705.857-1.215A9.64 9.64 0 0 0 10.22 8.75Zm4.44-1.5a9.64 9.64 0 0 0-1.363-4.177c-.307-.51-.612-.919-.857-1.215a9.927 9.927 0 0 0-.857 1.215A9.64 9.64 0 0 0 5.78 7.25Zm-5.944 1.5H1.543a6.507 6.507 0 0 0 4.666 5.5c-.123-.181-.24-.365-.352-.552-.715-1.192-1.437-2.874-1.581-4.948Zm-2.733-1.5h2.733c.144-2.074.866-3.756 1.58-4.948.12-.197.237-.381.353-.552a6.507 6.507 0 0 0-4.666 5.5Zm10.181 1.5c-.144 2.074-.866 3.756-1.58 4.948-.12.197-.237.381-.353.552a6.507 6.507 0 0 0 4.666-5.5Zm2.733-1.5a6.507 6.507 0 0 0-4.666-5.5c.123.181.24.365.353.552.714 1.192 1.436 2.874 1.58 4.948Z"></path> </svg> </template> <template id="issue-opened-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-issue-opened"> <path d="M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Z"></path> </svg> </template> <template id="device-mobile-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-device-mobile"> <path d="M3.75 0h8.5C13.216 0 14 .784 14 1.75v12.5A1.75 1.75 0 0 1 12.25 16h-8.5A1.75 1.75 0 0 1 2 14.25V1.75C2 .784 2.784 0 3.75 0ZM3.5 1.75v12.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25V1.75a.25.25 0 0 0-.25-.25h-8.5a.25.25 0 0 0-.25.25ZM8 13a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z"></path> </svg> </template> <template id="package-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-package"> <path d="m8.878.392 5.25 3.045c.54.314.872.89.872 1.514v6.098a1.75 1.75 0 0 1-.872 1.514l-5.25 3.045a1.75 1.75 0 0 1-1.756 0l-5.25-3.045A1.75 1.75 0 0 1 1 11.049V4.951c0-.624.332-1.201.872-1.514L7.122.392a1.75 1.75 0 0 1 1.756 0ZM7.875 1.69l-4.63 2.685L8 7.133l4.755-2.758-4.63-2.685a.248.248 0 0 0-.25 0ZM2.5 5.677v5.372c0 .09.047.171.125.216l4.625 2.683V8.432Zm6.25 8.271 4.625-2.683a.25.25 0 0 0 .125-.216V5.677L8.75 8.432Z"></path> </svg> </template> <template id="credit-card-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-credit-card"> <path d="M10.75 9a.75.75 0 0 0 0 1.5h1.5a.75.75 0 0 0 0-1.5h-1.5Z"></path><path d="M0 3.75C0 2.784.784 2 1.75 2h12.5c.966 0 1.75.784 1.75 1.75v8.5A1.75 1.75 0 0 1 14.25 14H1.75A1.75 1.75 0 0 1 0 12.25ZM14.5 6.5h-13v5.75c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25Zm0-2.75a.25.25 0 0 0-.25-.25H1.75a.25.25 0 0 0-.25.25V5h13Z"></path> </svg> </template> <template id="play-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-play"> <path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Zm4.879-2.773 4.264 2.559a.25.25 0 0 1 0 .428l-4.264 2.559A.25.25 0 0 1 6 10.559V5.442a.25.25 0 0 1 .379-.215Z"></path> </svg> </template> <template id="gift-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-gift"> <path d="M2 2.75A2.75 2.75 0 0 1 4.75 0c.983 0 1.873.42 2.57 1.232.268.318.497.668.68 1.042.183-.375.411-.725.68-1.044C9.376.42 10.266 0 11.25 0a2.75 2.75 0 0 1 2.45 4h.55c.966 0 1.75.784 1.75 1.75v2c0 .698-.409 1.301-1 1.582v4.918A1.75 1.75 0 0 1 13.25 16H2.75A1.75 1.75 0 0 1 1 14.25V9.332C.409 9.05 0 8.448 0 7.75v-2C0 4.784.784 4 1.75 4h.55c-.192-.375-.3-.8-.3-1.25ZM7.25 9.5H2.5v4.75c0 .138.112.25.25.25h4.5Zm1.5 0v5h4.5a.25.25 0 0 0 .25-.25V9.5Zm0-4V8h5.5a.25.25 0 0 0 .25-.25v-2a.25.25 0 0 0-.25-.25Zm-7 0a.25.25 0 0 0-.25.25v2c0 .138.112.25.25.25h5.5V5.5h-5.5Zm3-4a1.25 1.25 0 0 0 0 2.5h2.309c-.233-.818-.542-1.401-.878-1.793-.43-.502-.915-.707-1.431-.707ZM8.941 4h2.309a1.25 1.25 0 0 0 0-2.5c-.516 0-1 .205-1.43.707-.337.392-.646.975-.879 1.793Z"></path> </svg> </template> <template id="code-square-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code-square"> <path d="M0 1.75C0 .784.784 0 1.75 0h12.5C15.216 0 16 .784 16 1.75v12.5A1.75 1.75 0 0 1 14.25 16H1.75A1.75 1.75 0 0 1 0 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25V1.75a.25.25 0 0 0-.25-.25Zm7.47 3.97a.75.75 0 0 1 1.06 0l2 2a.75.75 0 0 1 0 1.06l-2 2a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L10.69 8 9.22 6.53a.75.75 0 0 1 0-1.06ZM6.78 6.53 5.31 8l1.47 1.47a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215l-2-2a.75.75 0 0 1 0-1.06l2-2a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Z"></path> </svg> </template> <template id="device-desktop-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-device-desktop"> <path d="M14.25 1c.966 0 1.75.784 1.75 1.75v7.5A1.75 1.75 0 0 1 14.25 12h-3.727c.099 1.041.52 1.872 1.292 2.757A.752.752 0 0 1 11.25 16h-6.5a.75.75 0 0 1-.565-1.243c.772-.885 1.192-1.716 1.292-2.757H1.75A1.75 1.75 0 0 1 0 10.25v-7.5C0 1.784.784 1 1.75 1ZM1.75 2.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25ZM9.018 12H6.982a5.72 5.72 0 0 1-.765 2.5h3.566a5.72 5.72 0 0 1-.765-2.5Z"></path> </svg> </template> <div class="position-relative"> <ul role="listbox" class="ActionListWrap QueryBuilder-ListWrap" aria-label="Suggestions" data-action=" combobox-commit:query-builder#comboboxCommit mousedown:query-builder#resultsMousedown " data-target="query-builder.resultsList" data-persist-list=false id="query-builder-test-results" ></ul> </div> <div class="FormControl-inlineValidation" id="validation-6c0984b7-0167-4205-97d1-3bae4ddbc2f9" hidden="hidden"> <span class="FormControl-inlineValidation--visual"> <svg aria-hidden="true" height="12" viewBox="0 0 12 12" version="1.1" width="12" data-view-component="true" class="octicon octicon-alert-fill"> <path d="M4.855.708c.5-.896 1.79-.896 2.29 0l4.675 8.351a1.312 1.312 0 0 1-1.146 1.954H1.33A1.313 1.313 0 0 1 .183 9.058ZM7 7V3H5v4Zm-1 3a1 1 0 1 0 0-2 1 1 0 0 0 0 2Z"></path> </svg> </span> <span></span> </div> </div> <div data-target="query-builder.screenReaderFeedback" aria-live="polite" aria-atomic="true" class="sr-only"></div> </query-builder></form> <div class="d-flex flex-row color-fg-muted px-3 text-small color-bg-default search-feedback-prompt"> <a target="_blank" href="https://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax" data-view-component="true" class="Link color-fg-accent text-normal ml-2"> Search syntax tips </a> <div class="d-flex flex-1"></div> </div> </div> </div> </div> </modal-dialog></div> </div> <div data-action="click:qbsearch-input#retract" class="dark-backdrop position-fixed" hidden data-target="qbsearch-input.darkBackdrop"></div> <div class="color-fg-default"> <dialog-helper> <dialog data-target="qbsearch-input.feedbackDialog" data-action="close:qbsearch-input#handleDialogClose cancel:qbsearch-input#handleDialogClose" id="feedback-dialog" aria-modal="true" aria-labelledby="feedback-dialog-title" aria-describedby="feedback-dialog-description" data-view-component="true" class="Overlay Overlay-whenNarrow Overlay--size-medium Overlay--motion-scaleFade Overlay--disableScroll"> <div data-view-component="true" class="Overlay-header"> <div class="Overlay-headerContentWrap"> <div class="Overlay-titleWrap"> <h1 class="Overlay-title " id="feedback-dialog-title"> Provide feedback </h1> </div> <div class="Overlay-actionWrap"> <button data-close-dialog-id="feedback-dialog" aria-label="Close" type="button" data-view-component="true" class="close-button Overlay-closeButton"><svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x"> <path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path> </svg></button> </div> </div> </div> <scrollable-region data-labelled-by="feedback-dialog-title"> <div data-view-component="true" class="Overlay-body"> <!-- '"` --><!-- </textarea></xmp> --></option></form><form id="code-search-feedback-form" data-turbo="false" action="/search/feedback" accept-charset="UTF-8" method="post"><input type="hidden" data-csrf="true" name="authenticity_token" value="ZElO5L0KSVEK3YkNXqZcUAzoBauMCHhGPC+QYi++Iq3721Knb+e95c1uQF7Y+V8GcIftZegGewkMBO4Ls9uxDw==" /> <p>We read every piece of feedback, and take your input very seriously.</p> <textarea name="feedback" class="form-control width-full mb-2" style="height: 120px" id="feedback"></textarea> <input name="include_email" id="include_email" aria-label="Include my email address so I can be contacted" class="form-control mr-2" type="checkbox"> <label for="include_email" style="font-weight: normal">Include my email address so I can be contacted</label> </form></div> </scrollable-region> <div data-view-component="true" class="Overlay-footer Overlay-footer--alignEnd"> <button data-close-dialog-id="feedback-dialog" type="button" data-view-component="true" class="btn"> Cancel </button> <button form="code-search-feedback-form" data-action="click:qbsearch-input#submitFeedback" type="submit" data-view-component="true" class="btn-primary btn"> Submit feedback </button> </div> </dialog></dialog-helper> <custom-scopes data-target="qbsearch-input.customScopesManager"> <dialog-helper> <dialog data-target="custom-scopes.customScopesModalDialog" data-action="close:qbsearch-input#handleDialogClose cancel:qbsearch-input#handleDialogClose" id="custom-scopes-dialog" aria-modal="true" aria-labelledby="custom-scopes-dialog-title" aria-describedby="custom-scopes-dialog-description" data-view-component="true" class="Overlay Overlay-whenNarrow Overlay--size-medium Overlay--motion-scaleFade Overlay--disableScroll"> <div data-view-component="true" class="Overlay-header Overlay-header--divided"> <div class="Overlay-headerContentWrap"> <div class="Overlay-titleWrap"> <h1 class="Overlay-title " id="custom-scopes-dialog-title"> Saved searches </h1> <h2 id="custom-scopes-dialog-description" class="Overlay-description">Use saved searches to filter your results more quickly</h2> </div> <div class="Overlay-actionWrap"> <button data-close-dialog-id="custom-scopes-dialog" aria-label="Close" type="button" data-view-component="true" class="close-button Overlay-closeButton"><svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x"> <path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path> </svg></button> </div> </div> </div> <scrollable-region data-labelled-by="custom-scopes-dialog-title"> <div data-view-component="true" class="Overlay-body"> <div data-target="custom-scopes.customScopesModalDialogFlash"></div> <div hidden class="create-custom-scope-form" data-target="custom-scopes.createCustomScopeForm"> <!-- '"` --><!-- </textarea></xmp> --></option></form><form id="custom-scopes-dialog-form" data-turbo="false" action="/search/custom_scopes" accept-charset="UTF-8" method="post"><input type="hidden" data-csrf="true" name="authenticity_token" value="WPVG7qPk+2QLlk/Zmc9aznwH7lPhUGVO/md8PhhJq0X31GG/Jt7oiclBXbdMuSGflvameuLpXrMUHMEzyFz7zA==" /> <div data-target="custom-scopes.customScopesModalDialogFlash"></div> <input type="hidden" id="custom_scope_id" name="custom_scope_id" data-target="custom-scopes.customScopesIdField"> <div class="form-group"> <label for="custom_scope_name">Name</label> <auto-check src="/search/custom_scopes/check_name" required> <input type="text" name="custom_scope_name" id="custom_scope_name" data-target="custom-scopes.customScopesNameField" class="form-control" autocomplete="off" placeholder="github-ruby" required maxlength="50"> <input type="hidden" data-csrf="true" value="0QlLG7lNZJpJrf1JiK8WkUp5l49wVX8kvLINgUa4uZRQYFClqfzUWlxL9qPuuXp+uk9PC+zDOxEubXiMtNvwgQ==" /> </auto-check> </div> <div class="form-group"> <label for="custom_scope_query">Query</label> <input type="text" name="custom_scope_query" id="custom_scope_query" data-target="custom-scopes.customScopesQueryField" class="form-control" autocomplete="off" placeholder="(repo:mona/a OR repo:mona/b) AND lang:python" required maxlength="500"> </div> <p class="text-small color-fg-muted"> To see all available qualifiers, see our <a class="Link--inTextBlock" href="https://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax">documentation</a>. </p> </form> </div> <div data-target="custom-scopes.manageCustomScopesForm"> <div data-target="custom-scopes.list"></div> </div> </div> </scrollable-region> <div data-view-component="true" class="Overlay-footer Overlay-footer--alignEnd Overlay-footer--divided"> <button data-action="click:custom-scopes#customScopesCancel" type="button" data-view-component="true" class="btn"> Cancel </button> <button form="custom-scopes-dialog-form" data-action="click:custom-scopes#customScopesSubmit" data-target="custom-scopes.customScopesSubmitButton" type="submit" data-view-component="true" class="btn-primary btn"> Create saved search </button> </div> </dialog></dialog-helper> </custom-scopes> </div> </qbsearch-input> <div class="position-relative HeaderMenu-link-wrap d-lg-inline-block"> <a href="/login?return_to=https%3A%2F%2Fgithub.com%2Fsearch%3Fq%3Drepo%253Awren-lang%252Fwren%2B%2Blanguage%253ADart%26type%3Dwikis" class="HeaderMenu-link HeaderMenu-link--sign-in HeaderMenu-button flex-shrink-0 no-underline d-none d-lg-inline-flex border border-lg-0 rounded rounded-lg-0 px-2 py-1" style="margin-left: 12px;" data-hydro-click="{"event_type":"authentication.click","payload":{"location_in_page":"site header menu","repository_id":null,"auth_type":"SIGN_UP","originating_url":"https://github.com/search?q=repo%3Awren-lang%2Fwren++language%3ADart&type=wikis","user_id":null}}" data-hydro-click-hmac="56a9802f8fa73d5eaeae9027274bd71cb2f6eb321fd2d5c92441f90f86984f00" data-analytics-event="{"category":"Marketing nav","action":"click to go to homepage","label":"ref_page:Marketing;ref_cta:Sign in;ref_loc:Header"}" > Sign in </a> </div> <a href="/signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2Fsearch&source=header" class="HeaderMenu-link HeaderMenu-link--sign-up HeaderMenu-button flex-shrink-0 d-flex d-lg-inline-flex no-underline border color-border-default rounded px-2 py-1" data-hydro-click="{"event_type":"authentication.click","payload":{"location_in_page":"site header menu","repository_id":null,"auth_type":"SIGN_UP","originating_url":"https://github.com/search?q=repo%3Awren-lang%2Fwren++language%3ADart&type=wikis","user_id":null}}" data-hydro-click-hmac="56a9802f8fa73d5eaeae9027274bd71cb2f6eb321fd2d5c92441f90f86984f00" data-analytics-event="{"category":"Sign up","action":"click to sign up for account","label":"ref_page:/search;ref_cta:Sign up;ref_loc:header logged out"}" > Sign up </a> <button type="button" class="sr-only js-header-menu-focus-trap d-block d-lg-none">Reseting focus</button> </div> </div> </div> </div> </header> <div hidden="hidden" data-view-component="true" class="js-stale-session-flash stale-session-flash flash flash-warn flash-full"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert"> <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> <span class="js-stale-session-flash-signed-in" hidden>You signed in with another tab or window. <a class="Link--inTextBlock" href="">Reload</a> to refresh your session.</span> <span class="js-stale-session-flash-signed-out" hidden>You signed out in another tab or window. <a class="Link--inTextBlock" href="">Reload</a> to refresh your session.</span> <span class="js-stale-session-flash-switched" hidden>You switched accounts on another tab or window. <a class="Link--inTextBlock" href="">Reload</a> to refresh your session.</span> <button id="icon-button-14a3c240-7319-42c1-93f5-8e9d298bd61a" aria-labelledby="tooltip-4eb555a0-22c8-451f-a6af-ad815eb6dff3" type="button" data-view-component="true" class="Button Button--iconOnly Button--invisible Button--medium flash-close js-flash-close"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x Button-visual"> <path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path> </svg> </button><tool-tip id="tooltip-4eb555a0-22c8-451f-a6af-ad815eb6dff3" for="icon-button-14a3c240-7319-42c1-93f5-8e9d298bd61a" popover="manual" data-direction="s" data-type="label" data-view-component="true" class="sr-only position-absolute">Dismiss alert</tool-tip> </div> </div> <div id="start-of-content" class="show-on-focus"></div> <div id="js-flash-container" class="flash-container" data-turbo-replace> <template class="js-flash-template"> <div class="flash flash-full {{ className }}"> <div > <button autofocus class="flash-close js-flash-close" type="button" aria-label="Dismiss this message"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x"> <path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path> </svg> </button> <div aria-atomic="true" role="alert" class="js-flash-alert"> <div>{{ message }}</div> </div> </div> </div> </template> </div> <div class="application-main " data-commit-hovercards-enabled data-discussion-hovercards-enabled data-issue-and-pr-hovercards-enabled > <main> <react-app app-name="blackbird-search" initial-path="/search?q=repo%3Awren-lang%2Fwren++language%3ADart&type=wikis" style="display: block; min-height: calc(100vh - 64px);" data-attempted-ssr="true" data-ssr="true" data-lazy="false" data-alternate="false" > <script type="application/json" data-target="react-app.embeddedData">{"payload":{"header_redesign_enabled":false,"results":[{"body":"Have you created a small Wren script or wrote a tutorial using Wren? If so, we'd love to know. Edit this page and add it! 1,000,000 Fibers vs 1,000,000 Elixir/Erlang processes - a comparison MapToObject - Converts a Map to an Object instance. Wren Rosetta - Lots of Examples are available in Rosetta Code. Using Golang within Wren CLI - How to Hack the Wren CLI and add Golang functions Adding new Operators and Keywords to Wren - How to extend Wren to your needs Supertype Walker - Validates if a Class inherits from a specific parent. Shorter Fn.new - A way of using Fn.new with a single keyword. Trim String Indent - How you can trim indent from normal Strings. Make Modules Private - How you can restrict access to classes and variables by hiding its module in resolveModuleFn . Interfaces - How to implement an Interface in Wren Num to Hex - Convert a number to an hexadecimal string.","filename":"Cookbook.md","format":"markdown","hl_body":"Have you created a small Wren script or wrote a tutorial using Wren? If so, we\u0026#39;d love to know. Edit this page and add it! 1,000,000 Fibers vs 1,000,000 Elixir/Erlang processes - a comparison MapToObject ...","hl_title":"Cookbook","id":"e9df68debf53d68ef6b5501edee290769f067a0a","path":"Cookbook.md","public":true,"repo":{"repository":{"id":14509809,"name":"wren","owner_id":45213573,"owner_login":"wren-lang","updated_at":"2023-08-21T04:59:54.001Z","has_issues":true}},"repo_id":14509809,"title":"Cookbook","updated_at":"2021-08-21T12:58:42.000-04:00"},{"body":"The official docs for Wren itself are at wren.io . We use the wiki —and your help—to keep track of the wild and wooly world of Wren's external ecosystem. If someone has created something that builds on or works with Wren, you'll find it here. If you've created one of those, please do add it. Applications that host Wren as a scripting language. Modules written in Wren that others can use. Language Bindings that let you interact with Wren from other programming\nlanguages. Other tools and utilities that make it easier to be a Wren programmer. See the cookbook for small scripts or tutorials. Getting help If at any point you have questions, feel free to file an issue or ask\non the discord community (or the mailing list ). If you're a Redditor, try the /r/wren_lang subreddit. You can also email me directly ( robert at stuffwithstuff.com ) if you want something less public.","filename":"Home.md","format":"markdown","hl_body":"The official docs for Wren itself are at wren.io . We use the wiki —and your help—to keep track of the wild and wooly world of Wren\u0026#39;s external ecosystem. If someone has created something that builds ...","hl_title":"Home","id":"57f15b09bec9bf18bf77feefbc24103c533d6d8c","path":"Home.md","public":true,"repo":{"repository":{"id":14509809,"name":"wren","owner_id":45213573,"owner_login":"wren-lang","updated_at":"2023-08-21T04:59:54.001Z","has_issues":true}},"repo_id":14509809,"title":"Home","updated_at":"2022-05-29T15:49:53.000-07:00"},{"body":"A small script from Ruby that walks up supertype till it ’s Object . Useful for validating inheritance as an alternative to Third is Test . class Test { } class Other is Test { } class Third is Other { } var found = false var parent = Third . supertype while ( parent != Object ) { System . print ( \"check %(parent)\" ) if ( parent == Test ) found = true parent = parent . supertype } System . print ( \"found Test? %(found)\" )","filename":"[Cookbook]-A-Supertype-Walker.asciidoc","format":"asciidoc","hl_body":"A small script from Ruby that walks up supertype till it ’s Object . Useful for validating inheritance as an alternative to Third is Test . class Test { } class Other is Test { } class Third is Other { ...","hl_title":"[Cookbook] A Supertype Walker","id":"e6efe242512ce2787525860f3d67f41bd93304ec","path":"[Cookbook]-A-Supertype-Walker.asciidoc","public":true,"repo":{"repository":{"id":14509809,"name":"wren","owner_id":45213573,"owner_login":"wren-lang","updated_at":"2023-08-21T04:59:54.001Z","has_issues":true}},"repo_id":14509809,"title":"[Cookbook] A Supertype Walker","updated_at":"2021-05-02T15:17:37.000-07:00"},{"body":"Wren is a hackable language, simple and slim hence you can easily extend it to suit your needs. For this simple process @CRFriedman wrote: Creating a token for it in the lexer: Add a TokenType in https://github.com/wren-lang/wren/blob/4d1d0d972efffd072f6a7baa5c37f312258c3955/src/vm/wren_compiler.c#L53-L138 Lex it in https://github.com/wren-lang/wren/blob/4d1d0d972efffd072f6a7baa5c37f312258c3955/src/vm/wren_compiler.c#L985 Define a precedence for it in https://github.com/wren-lang/wren/blob/4d1d0d972efffd072f6a7baa5c37f312258c3955/src/vm/wren_compiler.c#L1581-L1602 Create an operator callback for it in https://github.com/wren-lang/wren/blob/4d1d0d972efffd072f6a7baa5c37f312258c3955/src/vm/wren_compiler.c#L2602-L2678 that emits bytecode for \u003c first_expr \u003e \u003c second_expr \u003e \u003c custom bytecode \u003e . To define new bytecode tweak https://github.com/wren-lang/wren/blob/main/src/vm/wren_opcodes.h and https://github.com/wren-lang/wren/blob/main/src/vm/wren_vm.c . Examples https://github.com/wren-lang/wren/pull/953 https://github.com/wren-lang/wren/pull/952 https://github.com/wren-lang/wren/pull/944 https://github.com/wren-lang/wren/pull/985 https://github.com/wren-lang/wren/pull/986 https://github.com/wren-lang/wren/pull/948 https://github.com/wren-lang/wren/pull/946 https://github.com/wren-lang/wren/pull/877","filename":"[Cookbook]-Adding-new-Keywords-and-Operators-to-Wren.asciidoc","format":"asciidoc","hl_body":"Wren is a hackable language, simple and slim hence you can easily extend it to suit your needs. For this simple process @CRFriedman wrote: Creating a token for it in the lexer: Add a TokenType in https://github.com/wren-lang/wren/blob/4d1d0d972efffd072f6a7baa5c37f312258c3955/src/vm/wren_compiler.c#L53-L138 ...","hl_title":"[Cookbook] Adding new Keywords and Operators to Wren","id":"b9f5205aa4ce63ec1cccd9ffda1e55fb8e17e94a","path":"[Cookbook]-Adding-new-Keywords-and-Operators-to-Wren.asciidoc","public":true,"repo":{"repository":{"id":14509809,"name":"wren","owner_id":45213573,"owner_login":"wren-lang","updated_at":"2023-08-21T04:59:54.001Z","has_issues":true}},"repo_id":14509809,"title":"[Cookbook] Adding new Keywords and Operators to Wren","updated_at":"2021-04-28T17:12:55.000-04:00"},{"body":"Interfaces are not supported natively, until then a small workaround can be used to validate if a class implements some methods.\nUsing Attributes we can create a small method to validate an interface. Discord Wren Try class Implements { static validate ( obj , interfaces ) { if ( ! ( obj is Class ) ) { obj = obj . type } if ( ! ( interfaces is List ) ) { interfaces = [ interfaces ] } for ( interface in interfaces ) { for ( method in interface . attributes . methods ) { var i = method . key . indexOf ( \"(\" ) var key = method . key [ 0. . . i ] if ( method . value [ null ] \u0026 \u0026 method . value [ null ] . containsKey ( key ) ) { var found = false for ( item in obj . attributes . methods ) { if ( item . key == method . key ) { found = true break } } if ( found ) { continue } else { Fiber . abort ( \"%(obj.name) does not implement %(interface.name).%(method.key)\" ) } } } return true } } static check ( obj , interfaces ) { var fn = Fiber . new { return validate ( obj , interfaces ) } fn . try ( ) return fn . error == null } } class IPrint { #!print(message) print ( message ) { } #!print print ( ) { } #!somethingElse\n #!json somethingElse ( msg ) { } #!ignore nonMatchingName ( ) { } } class Printer { #!somethingElse somethingElse ( msg ) { } #!print(message) print ( message ) { System . print ( message ) } #!print print ( ) { System . print ( \"Hello\" ) } } class Writer { #!print(message) print ( message ) { System . print ( message ) } } System . print ( Implements . check ( Printer , IPrint ) ) System . print ( Implements . validate ( Printer , IPrint ) ) System . print ( Implements . check ( Writer , IPrint ) ) System . print ( Implements . validate ( Writer , IPrint ) ) attributes.methods Here is an example using the attributes.methods property. #!protocol class JsonEncodingProtocol { #!required toJson { } #!required toJSON { } static methods { var methods = this . attributes . methods var required = [ ] var optional = [ ] for ( method in methods ) { for ( attributes in method . value ) { for ( attribute in attributes . value ) { if ( attribute . key == \"required\" ) { required . add ( method . key ) } if ( attribute . key == \"optional\" ) { optional . add ( method . key ) } } } } return { \"required\" : required , \"optional\" : optional } } static implements ( Entity ) { if ( ! Entity . attributes ) { return false } // quick hack to get the protocol name // must be changed if multiple protocols are present var protocol = Entity . attributes . self . keys . toList [ 0 ] var candidates = [ ] for ( method in Entity . attributes . self . values ) { for ( attribute in method . keys ) { // We have to check if the entity // implements this protocol if ( protocol == this . name ) { candidates . add ( attribute ) } } } for ( method in this . methods [ \"required\" ] ) { if ( ! candidates . contains ( method ) ) { // Fiber.abort(\"required method %(method) not found\") return false } } for ( method in this . methods [ \"optional\" ] ) { if ( ! candidates . contains ( method ) ) { // System.print(\"optional method %(method) not implemented\") } } return true } } // We specify which methods of the protocol // we are implementing #!JsonEncodingProtocol( toJson , toJSON ) class MyObject { construct new ( ) { } // does nothing, just for tell its the protocol implementation # region = JsonEncodingProtocol toJson { \"Hello\" } toJSON { toJson } } var myobj = MyObject . new ( ) // Must be true System . print ( JsonEncodingProtocol . implements ( myobj . type ) )","filename":"[Cookbook]-Interfaces.asciidoc","format":"asciidoc","hl_body":"Interfaces are not supported natively, until then a small workaround can be used to validate if a class implements some methods.\nUsing Attributes we can create a small method to validate an interface. ...","hl_title":"[Cookbook] Interfaces","id":"38f3cbde94dbbd14c5ca95f167021131044e4452","path":"[Cookbook]-Interfaces.asciidoc","public":true,"repo":{"repository":{"id":14509809,"name":"wren","owner_id":45213573,"owner_login":"wren-lang","updated_at":"2023-08-21T04:59:54.001Z","has_issues":true}},"repo_id":14509809,"title":"[Cookbook] Interfaces","updated_at":"2021-09-09T01:25:44.000-03:00"},{"body":"By default, wren does not make any variables, classes, or methods from other modules private. For example, say we have a module with some secret data in module \"./private\" : class SecretClass { static runSecret ( ) { System . print ( \"Hello from SecretClass\" ) } } var private = 420 // some people often use an underscore to show that a variable or method is not meant to be used from outside this module. var private_ = 69 we can simple just import it... import \"./private\" for SecretClass , private , private_ SecretClass . runSecret ( ) System . print ( \"All your data are belong to us! (%(private), %(private_))\" ) ...and all our private classes and variables are printed to the console from any random module! Hello from SecretClass\nAll your data are belong to us! (420, 69) If we want to prevent the user from importing classes that they shouldn't, we can try to hide them in a private module using resolveModuleFn in our WrenConfiguration . resolveModuleFn is a pointer to a function that is called when wren attempts to import a module. It takes 2 string arguments, importer and name . importer is the name of the module that is currently importing another module while name is the name of that module being imported. We can simply check that name is meant to be private and, if it is, we can check whether importer is supposed to have access to it. For example: #include \u003c stdbool.h \u003e // bool, false // test that [string] begines with [prefix]. bool startsWith ( const char * prefix , const char * string ) { int i = 0 ; while ( prefix [ i ] != '\\0' \u0026 \u0026 string [ i ] != '\\0' ) { if ( prefix [ i ] != string [ i ]) { return false;\n } i ++ ;\n } // if [prefix[i]] does not equal '\\0', string is smaller than [prefix] return prefix [ i ] == '\\0' ;\n} const char * resolveModuleFn ( WrenVM * vm , const char * importer , const char * name ) { // If we import a private module... if ( startsWith ( \"private:\" , name )) { // ...Check that the module importing the private module can access it. if ( startsWith ( \"system:\" , importer )) { return name ;\n } // If not, we can simply return NULL to signify an error else return NULL ;\n } // And if we aren't trying to import any private modules, we can simply return [name] so we don't change anythin. return name ;\n} In this example, we check that name begins with the prefix \"private:\" . If it does, we want to make sure that the importer has access to those modules so we check if importer begins with \"system:\" since built in system modules ususally have private access to more delicate methods and functions. Now if we have a module called \"private:module\" : class SecretClass { static runSecret ( ) { System . print ( \"Hello from SecretClass\" ) } } var private = 420 var private_ = 69 ...and we try to import it using module \"main\" : import \"private:module\" for SecretClass , private , private_ SecretClass . runSecret ( ) System . print ( \"All your data are belong to us! (%(private), %(private_))\" ) ...we get a nice error: Runtime Error: Could not resolve module 'private:module' imported from 'main'.\n['main' line 1] Stack Trace: (script) But if we create a new module called \"system:module\" : class NonSecretClass { static runNonSecret ( ) { System . print ( \"'system:module' has access to 'private:module' now\" ) // Be careful to import your private modules inside code blocks (the curly braces) or else they will be accessible outside the module. import \"private:module\" for SecretClass , private , private_ SecretClass . runSecret ( ) System . print ( \"'system:module' can now print private data like (%(private)) and (%(private_))\" ) } } ...and change the \"main\" module to use it instead: import \"system:module\" for NonSecretClass NonSecretClass . runNonSecret ( ) ...our \"main\" module can access the public global values provided by \"system:module\" without having direct access to the private values in \"private:module\" : 'system:module' has access to 'private:module' now\nHello from SecretClass\n'system:module' can now print private data like (420) and (69) complete code Read the // comments for explanations on how things work #include \u003c stdbool.h \u003e // bool, false #include \u003c stdio.h \u003e // fprintf, printf, #include \u003c string.h \u003e // strcmp #include \u003c wren.h \u003e // WrenConfiguration, WrenLoadModuleResult, WrenVM, WREN_ERROR_COMPILE, WREN_ERROR_RUNTIME,WREN_ERROR_STACK_TRACE, WREN_RESULT_COMPILE_ERROR, WREN_RESULT_RUNTIME_ERROR, WREN_RESULT_SUCCESS // test that [string] begines with [prefix]. bool startsWith ( const char * prefix , const char * string ) { int i = 0 ; while ( prefix [ i ] != '\\0' \u0026 \u0026 string [ i ] != '\\0' ) { if ( prefix [ i ] != string [ i ]) { return false;\n } i ++ ;\n } // if [prefix[i]] does not equal '\\0', string is smaller than [prefix] return prefix [ i ] == '\\0' ;\n} // [resolveModuleFn] is used by wren to decide how import names look before passing them to [loadModuleFn]. const char * resolveModuleFn ( WrenVM * vm , const char * importer , const char * name ) { // If we import a private module... if ( startsWith ( \"private:\" , name )) { // ...Check that the module importing the private module can access it. if ( startsWith ( \"system:\" , importer )) { return name ;\n } // If not, we can simply return NULL to signify an error else return NULL ;\n } // And if we aren't trying to import any private modules, we can simply return [name] so we don't change anythin. return name ;\n} // [loadModuleFn] is the function that wren calls whenever it is importing a module. It takes a module name and returns a struct containing source code. WrenLoadModuleResult loadModuleFn ( WrenVM * vm , const char * name ) { WrenLoadModuleResult results ; results . onComplete = NULL ; results . source = NULL ; results . userData = NULL ; if ( strcmp ( name , \"system:module\" ) == 0 ) { results . source = \"class NonSecretClass {\\n\" \" static runNonSecret() {\\n\" \" System.print(\\\"'system:module' has access to 'private:module' now\\\")\\n\" \" // Be careful to import your private modules inside code blocks (the curly braces) or else they will be accessible outside the module\\n\" \" import \\\"private:module\\\" for SecretClass, private, private_\\n\" \" SecretClass.runSecret()\\n\" \" System.print(\\\"'system:module' can now print private data like (%(private)) and (%(private_))\\\")\\n\" \" }\\n\" \"}\\n\" ;\n } if ( strcmp ( name , \"private:module\" ) == 0 ) { results . source = \"class SecretClass {\\n\" \" static runSecret() { System.print(\\\"Hello from SecretClass\\\") }\\n\" \"}\\n\" \"\\n\" \"var private = 420\\n\" \"var private_ = 69\" ;\n } return results ;\n} // [writeFn] is a function called by wren whenever [System.print] or similar functions are called. It can be used to print text to the console. void writeFn ( WrenVM * vm , const char * text ) { printf ( \"%s\" , text );\n} // [errorFn] is a function called by wren whenever it encounters an error. It can be used to print helpful messages to the console so the user knows why their program didn't work. void errorFn ( WrenVM * vm , WrenErrorType type , const char * module , int line , const char * message ) { switch ( type ) { case WREN_ERROR_COMPILE : fprintf ( stderr , \"['%s' line %d] Compiler Error: %s\\n\" , module , line , message ); break ; case WREN_ERROR_RUNTIME : fprintf ( stderr , \"Runtime Error: %s\\n\" , message ); break ; case WREN_ERROR_STACK_TRACE : fprintf ( stderr , \"['%s' line %d] Stack Trace: %s\\n\" , module , line , message ); break ;\n }\n} // [printResults] is a small helper function I used to print whether the VM ran the code without any errors. void printResults ( WrenInterpretResult results ) { switch ( results ) { case WREN_RESULT_SUCCESS : printf ( \"VM ran successfully\\n\" ); break ; case WREN_RESULT_COMPILE_ERROR : printf ( \"VM encountered an error during compilation\\n\" ); break ; case WREN_RESULT_RUNTIME_ERROR : printf ( \"VM encountered an error during runtime\\n\" ); break ;\n }\n} // The entry point to this example is [main]. int main ( int argc , char const * argv []) { WrenConfiguration cfg ; wrenInitConfiguration ( \u0026 cfg ); // Set the wren configuration before creating the VM. cfg . resolveModuleFn = resolveModuleFn ; cfg . loadModuleFn = loadModuleFn ; cfg . writeFn = writeFn ; cfg . errorFn = errorFn ; WrenVM * vm = wrenNewVM ( \u0026 cfg ); WrenInterpretResult results ; // Trying to access a private module. results = wrenInterpret ( vm , \"main\" , \"import \\\"private:module\\\" for SecretClass, private, private_\\n\" \"\\n\" \"SecretClass.runSecret()\\n\" \"System.print(\\\"All your data are belong to us! (%(private), %(private_))\\\")\" ); printResults ( results ); // Accessing a public module that accessess a private module. results = wrenInterpret ( vm , \"main\" , \"import \\\"system:module\\\" for NonSecretClass\\n\" \"\\n\" \"NonSecretClass.runNonSecret()\\n\" ); printResults ( results ); // Always free the VM after you are done with it. wrenFreeVM ( vm ); return 0 ;\n}","filename":"[Cookbook]-Make-Modules-Private.md","format":"markdown","hl_body":"By default, wren does not make any variables, classes, or methods from other modules private. For example, say we have a module with some secret data in module \u0026quot;./private\u0026quot; : class SecretClass ...","hl_title":"[Cookbook] Make Modules Private","id":"c75ceaa66b34f6f5581ca0f9ae481380ab9f6b93","path":"[Cookbook]-Make-Modules-Private.md","public":true,"repo":{"repository":{"id":14509809,"name":"wren","owner_id":45213573,"owner_login":"wren-lang","updated_at":"2023-08-21T04:59:54.001Z","has_issues":true}},"repo_id":14509809,"title":"[Cookbook] Make Modules Private","updated_at":"2021-05-02T21:32:18.000-07:00"},{"body":"This is a small trick to convert a Map to an Object using the Meta module. Was created by Michel Hermier in issue 912 . class MapToObject { static call ( map ) { __uniqueid = __uniqueid || 0 __uniqueid = __uniqueid + 1 var classname = \"NewObjectFromMap_%(__uniqueid)\" var keys = map . keys var out = \"var %(classname)_shadow = {}\\n\" out = out + \"return Fn.new {|map|\\n\" // Copy the map in the shadow out = out + \"\\tfor (key in map.keys) %(classname)_shadow[key] = map[key]\\n\" out = out + \"\\tclass %(classname) {\\n\" out = out + keys . reduce ( \"\" ) { | str , key | str + \"\\t\\tstatic %(key) { __%(key) != null ? __%(key) : __%(key) = %(classname)_shadow[\\\"%(key)\\\"] }\\n\" } out = out + \"\\t}\\n\" out = out + \"\\treturn %(classname)\\n\" out = out + \"}\" return Meta . compile ( out ) . call ( ) . call ( map ) } } Example Usage var obj = MapToObject . call ( { \"hello\" : \"wren\" } ) var obj2 = MapToObject . call ( { \"one\" : 1 } ) var obj3 = MapToObject . call ( { \"two\" : 2 } ) System . print ( obj . hello ) // expect: wren System . print ( obj2 . one ) // expect: 1 System . print ( obj3 . two ) // expect: 2","filename":"[Cookbook]-MapToObject.md","format":"markdown","hl_body":"This is a small trick to convert a Map to an Object using the Meta module. Was created by Michel Hermier in issue 912 . class MapToObject { static call ( map ) { __uniqueid = __uniqueid || 0 __uniqueid ...","hl_title":"[Cookbook] MapToObject","id":"c78338baec5023bf1f1fcde793c07cc33d840703","path":"[Cookbook]-MapToObject.md","public":true,"repo":{"repository":{"id":14509809,"name":"wren","owner_id":45213573,"owner_login":"wren-lang","updated_at":"2023-08-21T04:59:54.001Z","has_issues":true}},"repo_id":14509809,"title":"[Cookbook] MapToObject","updated_at":"2021-04-16T18:35:27.000-04:00"},{"body":"You can convert a Number to an Hexadecimal representation using this simple snippet. Discord Wren Try var HEX = [ \"0\" , \"1\" , \"2\" , \"3\" , \"4\" , \"5\" , \"6\" , \"7\" , \"8\" , \"9\" , \"a\" , \"b\" , \"c\" , \"d\" , \"e\" , \"f\" ] class Str { static hex ( number ) { var string = \"\" while ( number != 0 ) { string = HEX [ number \u0026 0xF ] + string number = number \u003e \u003e 4 } return \"0x%(string)\" } } System . print ( Str . hex ( 1024 ) )","filename":"[Cookbook]-Num-to-Hex.asciidoc","format":"asciidoc","hl_body":"You can convert a Number to an Hexadecimal representation using this simple snippet. Discord Wren Try var HEX = [ \u0026quot;0\u0026quot; , \u0026quot;1\u0026quot; , \u0026quot;2\u0026quot; , \u0026quot;3\u0026quot; , \u0026quot;4\u0026quot; , \u0026quot;5\u0026quot; ...","hl_title":"[Cookbook] Num to Hex","id":"4f2049bbcf5eb266efd1e457ea7792fca9cf32a4","path":"[Cookbook]-Num-to-Hex.asciidoc","public":true,"repo":{"repository":{"id":14509809,"name":"wren","owner_id":45213573,"owner_login":"wren-lang","updated_at":"2023-08-21T04:59:54.001Z","has_issues":true}},"repo_id":14509809,"title":"[Cookbook] Num to Hex","updated_at":"2021-08-21T12:58:09.000-04:00"},{"body":"Ruby shows how can create a shorthand version of Fn.new using methods inside classes. class Obj { fn ( f ) { f } } class Example is Obj { construct new ( ) { var ok = fn { | test | System . print ( test ) } ok . call ( \"hello\" ) } } Example . new ( ) // expect: hello","filename":"[Cookbook]-Shorthand-Fn.new.asciidoc","format":"asciidoc","hl_body":"Ruby shows how can create a shorthand version of Fn.new using methods inside classes. class Obj { fn ( f ) { f } } class Example is Obj { construct new ( ) { var ok = fn { | test | System . print ( test ...","hl_title":"[Cookbook] Shorthand Fn.new","id":"b5c67ef3df56eae328b328dbf465690c63e4c001","path":"[Cookbook]-Shorthand-Fn.new.asciidoc","public":true,"repo":{"repository":{"id":14509809,"name":"wren","owner_id":45213573,"owner_login":"wren-lang","updated_at":"2023-08-21T04:59:54.001Z","has_issues":true}},"repo_id":14509809,"title":"[Cookbook] Shorthand Fn.new","updated_at":"2021-04-29T16:57:47.000-04:00"},{"body":"Ruby shared how you can trim the indent from Strings. Although Raw strings have this capability by default. It would be useful for normal strings too. static indent ( string ) { var index = 0 var bytes = string . bytes while ( index \u003c bytes . count ) { var c = bytes [ index ] if ( c == 0x20 || c == 0x09 ) { index = index + 1 continue } return index } return 0 } static indent_strip ( string ) { var start = indent ( string ) if ( start == 0 ) return string var lines = string . split ( \"\\n\" ) lines = lines . map { | line | var left = indent ( line ) if ( left \u003e = start ) return line [ start . . - 1 ] return line } return lines . join ( \"\\n\" ) }","filename":"[Cookbook]-Trim-String-Indent.asciidoc","format":"asciidoc","hl_body":"Ruby shared how you can trim the indent from Strings. Although Raw strings have this capability by default. It would be useful for normal strings too. static indent ( string ) { var index = 0 var bytes ...","hl_title":"[Cookbook] Trim String Indent","id":"bc2fb17f56998cd53781eb3a7dfa2a54a0db23e4","path":"[Cookbook]-Trim-String-Indent.asciidoc","public":true,"repo":{"repository":{"id":14509809,"name":"wren","owner_id":45213573,"owner_login":"wren-lang","updated_at":"2023-08-21T04:59:54.001Z","has_issues":true}},"repo_id":14509809,"title":"[Cookbook] Trim String Indent","updated_at":"2021-04-29T17:10:36.000-04:00"}],"type":"wikis","page":1,"page_count":2,"elapsed_millis":201,"errors":[],"result_count":15,"facets":[],"protected_org_logins":[],"topics":null,"query_id":"","logged_in":false,"sign_up_path":"/signup?source=code_search_results","sign_in_path":"/login?return_to=https%3A%2F%2Fgithub.com%2Fsearch%3Fq%3Drepo%253Awren-lang%252Fwren%2B%2Blanguage%253ADart%26type%3Dwikis","metadata":null,"warn_limited_results":false},"title":"Wiki search results","appPayload":{"enabled_features":{"code_nav_ui_events":false}}}</script> <div data-target="react-app.reactRoot"><style data-styled="true" data-styled-version="5.3.11">.ldDVqi{background-color:var(--bgColor-default,var(--color-canvas-default,#ffffff));height:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}/*!sc*/ .dKXtYX{padding:0;min-height:100%;}/*!sc*/ .dKXtYX > div{min-height:100%;}/*!sc*/ .oDGAe{max-width:100%;margin-left:auto;margin-right:auto;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;}/*!sc*/ .kowOcT{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex:1 1 100%;-ms-flex:1 1 100%;flex:1 1 100%;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;max-width:100%;}/*!sc*/ .bZNSVu{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-order:1;-ms-flex-order:1;order:1;width:100%;margin-left:0;margin-right:0;-webkit-flex-direction:column-reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse;margin-bottom:0;}/*!sc*/ @media screen and (min-width:768px){.bZNSVu{width:auto;margin-top:0 !important;margin-bottom:0 !important;position:-webkit-sticky;position:sticky;top:0px;max-height:var(--sticky-pane-height);-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;margin-right:0;}}/*!sc*/ .hPvFuC{margin-left:0;margin-right:0;display:none;margin-top:0;}/*!sc*/ @media screen and (min-width:768px){.hPvFuC{margin-left:0 !important;margin-right:0 !important;}}/*!sc*/ .fFSoPl{--pane-min-width:256px;--pane-max-width-diff:511px;--pane-max-width:calc(100vw - var(--pane-max-width-diff));width:100%;padding:0;}/*!sc*/ @media screen and (min-width:544px){}/*!sc*/ @media screen and (min-width:768px){.fFSoPl{width:clamp(var(--pane-min-width),var(--pane-width),var(--pane-max-width));overflow:auto;}}/*!sc*/ @media screen and (min-width:1280px){.fFSoPl{--pane-max-width-diff:959px;}}/*!sc*/ .ckDyFZ{padding-top:4px;padding-left:8px;padding-right:8px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}/*!sc*/ .cjUUcf{-webkit-flex:1;-ms-flex:1;flex:1;}/*!sc*/ .iyAVPo{font-size:14px;font-weight:400;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}/*!sc*/ .jkXiWz{list-style:none;}/*!sc*/ .jkXiWz:not(:first-child){margin-top:8px;}/*!sc*/ .hTXDNh{padding-inline-start:0;}/*!sc*/ .cQdyWD{padding-left:8px;padding-right:8px;padding-top:6px;padding-bottom:6px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;border-radius:6px;color:inherit;}/*!sc*/ .cQdyWD:hover{color:inherit;-webkit-text-decoration:none;text-decoration:none;}/*!sc*/ .eDCWKW{height:20px;min-width:16px;max-width:20px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;margin-right:8px;color:var(--fgColor-muted,var(--color-fg-muted,#656d76));}/*!sc*/ .eDCWKW svg{font-size:12px;}/*!sc*/ [data-variant="danger"]:not([aria-disabled]):not([data-inactive]):hover .Box-sc-g0xbh4-0,[data-variant="danger"]:active .eDCWKW{color:var(--fgColor-default,var(--color-fg-default,#1F2328));}/*!sc*/ .fFwzwX{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;min-width:0;}/*!sc*/ .cAMcRf{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;}/*!sc*/ .hczSex{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;font-weight:400;word-break:break-word;}/*!sc*/ .iUmOWi{height:20px;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;color:var(--fgColor-muted,var(--color-fg-muted,#656d76));margin-left:8px;font-weight:initial;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}/*!sc*/ [data-variant="danger"]:hover .Box-sc-g0xbh4-0,[data-variant="danger"]:active .iUmOWi{color:var(--fgColor-default,var(--color-fg-default,#1F2328));}/*!sc*/ .gCwYuo{background-color:var(--bgColor-neutral-muted,var(--color-neutral-subtle,rgba(234,238,242,0.5)));width:100%;height:20px;width:20px;margin-left:8px;border-radius:100px;}/*!sc*/ .hkYzPb{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;font-weight:600;word-break:break-word;}/*!sc*/ .dppRXl{padding-top:6px;padding-bottom:6px;padding-left:16px;padding-right:16px;font-size:12px;font-weight:600;color:var(--fgColor-muted,var(--color-fg-muted,#656d76));}/*!sc*/ .dppRXl .ActionListGroupHeading{font-size:var(--text-body-size-small),12px;font-weight:var(--base-text-weight-semibold,600);line-height:var(--text-body-lineHeight-small,1.6666);color:var(--fgColor-muted);}/*!sc*/ .dppRXl .ActionListGroupHeadingDescription{font-size:var(--text-body-size-small,12px);font-weight:var(--base-text-weight-normal,400);line-height:var(--text-body-lineHeight-small,1.6666);color:var(--fgColor-muted);}/*!sc*/ .cSXQL{padding-left:8px;padding-right:8px;padding-top:6px;padding-bottom:6px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;border-radius:6px;color:inherit;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:32px;min-width:0;padding:0;text-align:left;}/*!sc*/ .cSXQL:hover{color:inherit;-webkit-text-decoration:none;text-decoration:none;}/*!sc*/ .cSXQL .negate-button{display:none;}/*!sc*/ .cSXQL:is(button){display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}/*!sc*/ .cSXQL:hover .negate-button,.cSXQL:focus .negate-button,.cSXQL:focus-within .negate-button{display:block;}/*!sc*/ .eDKGXf{height:20px;min-width:16px;max-width:20px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;margin-right:8px;color:var(--fgColor-muted,var(--color-fg-muted,#656d76));margin-left:8px;}/*!sc*/ .eDKGXf svg{font-size:12px;}/*!sc*/ [data-variant="danger"]:not([aria-disabled]):not([data-inactive]):hover .Box-sc-g0xbh4-0,[data-variant="danger"]:active .eDKGXf{color:var(--fgColor-default,var(--color-fg-default,#1F2328));}/*!sc*/ .kYLlPM{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}/*!sc*/ .eHAxAL{-webkit-flex:1;-ms-flex:1;flex:1;min-width:0;}/*!sc*/ .evKyJn{display:block;overflow:hidden;text-overflow:ellipsis;direction:rtl;white-space:nowrap;max-width:100%;}/*!sc*/ .kuJtKj{height:1px;background-color:var(--borderColor-muted,var(--color-action-list-item-inline-divider,rgba(208,215,222,0.48)));margin-top:8px;margin-bottom:8px;list-style:none;margin-left:8px;margin-right:8px;}/*!sc*/ .eDQWew{padding-left:8px;padding-right:8px;padding-top:6px;padding-bottom:6px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;border-radius:6px;color:inherit;}/*!sc*/ .eDQWew:hover{color:inherit;-webkit-text-decoration:none;text-decoration:none;}/*!sc*/ .eDQWew span{color:var(--fgColor-accent,var(--color-accent-fg,#0969da));}/*!sc*/ .bTBnTW{height:100%;position:relative;display:none;margin-left:0;}/*!sc*/ .bHLmSv{position:absolute;inset:0 -2px;cursor:col-resize;background-color:transparent;-webkit-transition-delay:0.1s;transition-delay:0.1s;}/*!sc*/ .bHLmSv:hover{background-color:var(--bgColor-neutral-muted,var(--color-neutral-muted,rgba(175,184,193,0.2)));}/*!sc*/ .dsxbXg{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-order:2;-ms-flex-order:2;order:2;-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;-webkit-flex-shrink:1;-ms-flex-negative:1;flex-shrink:1;min-width:0;}/*!sc*/ .FxAyp{width:100%;max-width:100%;margin-left:auto;margin-right:auto;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;padding:0;}/*!sc*/ .hmwxFk{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;padding-left:16px;padding-right:16px;padding-top:16px;padding-bottom:16px;-webkit-align-items:flex-start;-webkit-box-align:flex-start;-ms-flex-align:flex-start;align-items:flex-start;}/*!sc*/ @media screen and (min-width:544px){.hmwxFk{padding-left:16px;padding-right:16px;}}/*!sc*/ @media screen and (min-width:768px){.hmwxFk{padding-left:24px;padding-right:24px;}}/*!sc*/ @media screen and (min-width:1012px){.hmwxFk{padding-left:24px;padding-right:24px;}}/*!sc*/ .insNpl{max-width:100%;min-width:0;overflow:hidden;-webkit-flex:2;-ms-flex:2;flex:2;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}/*!sc*/ .iFuOYA{-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:8px;}/*!sc*/ .cMJYTt{display:block;}/*!sc*/ @media screen and (min-width:544px){.cMJYTt{display:block;}}/*!sc*/ @media screen and (min-width:768px){.cMJYTt{display:none;}}/*!sc*/ .gUkoLg{-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;}/*!sc*/ .kJTOpK{padding-left:4px;}/*!sc*/ .hzSPyu{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;pointer-events:none;}/*!sc*/ .jJRiHe{display:inline;}/*!sc*/ .eSmpuO{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;}/*!sc*/ .iHLMFk{display:none;margin-right:8px;}/*!sc*/ @media screen and (min-width:544px){.iHLMFk{display:none;}}/*!sc*/ @media screen and (min-width:768px){.iHLMFk{display:block;}}/*!sc*/ .hQzpZj{display:block;margin-right:8px;}/*!sc*/ @media screen and (min-width:544px){.hQzpZj{display:block;}}/*!sc*/ @media screen and (min-width:768px){.hQzpZj{display:none;}}/*!sc*/ .dzrBTG{display:none;}/*!sc*/ @media screen and (min-width:544px){.dzrBTG{display:none;}}/*!sc*/ @media screen and (min-width:768px){.dzrBTG{display:block;}}/*!sc*/ .iMVgHD{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;padding-top:16px;gap:16px;}/*!sc*/ .iMVgHD:empty{display:none;}/*!sc*/ .eDcZlN{display:inline-block;padding-top:16px;}/*!sc*/ @media screen and (min-width:544px){.eDcZlN{display:inline-block;}}/*!sc*/ @media screen and (min-width:768px){.eDcZlN{display:inline-block;}}/*!sc*/ @media screen and (min-width:1012px){.eDcZlN{display:none;}}/*!sc*/ .eDcZlN:empty{display:none;}/*!sc*/ .JcuiZ{padding-top:16px;}/*!sc*/ .iKysQH{width:100%;min-width:0;}/*!sc*/ .gZKkEq{display:grid;gap:16px;min-width:0;grid-template-columns:1fr;}/*!sc*/ .flszRz{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;min-width:0;border-radius:6px;border-color:var(--borderColor-default,var(--color-border-default,#d0d7de));border-width:1px;border-style:solid;padding:16px;padding-left:16px;padding-right:16px;width:100%;max-width:100%;}/*!sc*/ .cvnppv{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;font-size:16px;font-weight:500;}/*!sc*/ .ksQFlo{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-size:12px;margin-bottom:4px;}/*!sc*/ .bjFvWy{color:var(--fgColor-muted,var(--color-fg-muted,#656d76));}/*!sc*/ .MHoGG{text-overflow:ellipsis;white-space:nowrap;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-size:16px;font-weight:500;overflow:hidden;}/*!sc*/ .dcdlju{margin-top:4px;font-size:14px;}/*!sc*/ .bZkODq{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-top:4px;}/*!sc*/ .iyzdzM{list-style:none;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-size:12px;color:var(--fgColor-muted,var(--color-fg-muted,#656d76));}/*!sc*/ .gVrJoR{padding-top:16px;padding-bottom:16px;}/*!sc*/ @media screen and (min-width:544px){.gVrJoR{padding-top:16px;padding-bottom:16px;}}/*!sc*/ @media screen and (min-width:768px){.gVrJoR{padding-top:24px;padding-bottom:24px;}}/*!sc*/ @media screen and (min-width:1012px){.gVrJoR{padding-top:24px;padding-bottom:24px;}}/*!sc*/ .bQdDaJ{padding-bottom:8px;}/*!sc*/ @media screen and (min-width:544px){.bQdDaJ{padding-bottom:8px;}}/*!sc*/ @media screen and (min-width:768px){.bQdDaJ{padding-bottom:8px;}}/*!sc*/ @media screen and (min-width:1012px){.bQdDaJ{padding-bottom:0;}}/*!sc*/ .gEQYku{display:inline-block;}/*!sc*/ .jRFAHs{display:grid;gap:16px;padding-top:0;}/*!sc*/ @media screen and (min-width:544px){.jRFAHs{display:grid;padding-top:0;}}/*!sc*/ @media screen and (min-width:768px){.jRFAHs{display:grid;padding-top:0;}}/*!sc*/ @media screen and (min-width:1012px){.jRFAHs{display:none;padding-top:16px;}}/*!sc*/ .hTYflC{display:none;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;margin-left:0;gap:16px;width:100%;padding-top:0;margin-top:0;max-width:100%;min-width:100%;}/*!sc*/ @media screen and (min-width:544px){.hTYflC{display:none;margin-left:0;padding-top:0;margin-top:0;max-width:100%;min-width:100%;}}/*!sc*/ @media screen and (min-width:768px){.hTYflC{display:none;margin-left:0;padding-top:0;margin-top:0;max-width:100%;min-width:100%;}}/*!sc*/ @media screen and (min-width:1012px){.hTYflC{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;margin-left:24px;padding-top:20px;margin-top:24px;max-width:25%;min-width:260px;}}/*!sc*/ @media screen and (min-width:1280px){.hTYflC{max-width:25%;min-width:340px;}}/*!sc*/ .hTYflC:empty{display:none;}/*!sc*/ data-styled.g1[id="Box-sc-g0xbh4-0"]{content:"ldDVqi,dKXtYX,oDGAe,kowOcT,bZNSVu,hPvFuC,fFSoPl,ckDyFZ,cjUUcf,iyAVPo,jkXiWz,hTXDNh,cQdyWD,eDCWKW,fFwzwX,cAMcRf,hczSex,iUmOWi,gCwYuo,hkYzPb,dppRXl,cSXQL,eDKGXf,kYLlPM,eHAxAL,evKyJn,kuJtKj,eDQWew,bTBnTW,bHLmSv,dsxbXg,FxAyp,hmwxFk,insNpl,iFuOYA,cMJYTt,gUkoLg,kJTOpK,hzSPyu,jJRiHe,eSmpuO,iHLMFk,hQzpZj,dzrBTG,iMVgHD,eDcZlN,JcuiZ,iKysQH,gZKkEq,flszRz,cvnppv,ksQFlo,bjFvWy,MHoGG,dcdlju,bZkODq,iyzdzM,gVrJoR,bQdDaJ,gEQYku,jRFAHs,hTYflC,"}/*!sc*/ .kkEZdX{font-weight:500;padding-left:16px;padding-right:16px;padding-top:16px;padding-bottom:8px;font-size:16px;}/*!sc*/ .kkEZdX:where([data-size='small']){font-size:var(--text-body-size-small,0.75rem);line-height:var(--text-body-lineHeight-small,1.6666);}/*!sc*/ .kkEZdX:where([data-size='medium']){font-size:var(--text-body-size-medium,0.875rem);line-height:var(--text-body-lineHeight-medium,1.4285);}/*!sc*/ .kkEZdX:where([data-size='large']){font-size:var(--text-body-size-large,1rem);line-height:var(--text-body-lineHeight-large,1.5);}/*!sc*/ .kkEZdX:where([data-weight='light']){font-weight:var(--base-text-weight-light,300);}/*!sc*/ .kkEZdX:where([data-weight='normal']){font-weight:var(--base-text-weight-normal,400);}/*!sc*/ .kkEZdX:where([data-weight='medium']){font-weight:var(--base-text-weight-medium,500);}/*!sc*/ .kkEZdX:where([data-weight='semibold']){font-weight:var(--base-text-weight-semibold,600);}/*!sc*/ .jFeNNe{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:baseline;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline;-webkit-flex:2;-ms-flex:2;flex:2;row-gap:4px;font-size:16px;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;}/*!sc*/ .jFeNNe:where([data-size='small']){font-size:var(--text-body-size-small,0.75rem);line-height:var(--text-body-lineHeight-small,1.6666);}/*!sc*/ .jFeNNe:where([data-size='medium']){font-size:var(--text-body-size-medium,0.875rem);line-height:var(--text-body-lineHeight-medium,1.4285);}/*!sc*/ .jFeNNe:where([data-size='large']){font-size:var(--text-body-size-large,1rem);line-height:var(--text-body-lineHeight-large,1.5);}/*!sc*/ .jFeNNe:where([data-weight='light']){font-weight:var(--base-text-weight-light,300);}/*!sc*/ .jFeNNe:where([data-weight='normal']){font-weight:var(--base-text-weight-normal,400);}/*!sc*/ .jFeNNe:where([data-weight='medium']){font-weight:var(--base-text-weight-medium,500);}/*!sc*/ .jFeNNe:where([data-weight='semibold']){font-weight:var(--base-text-weight-semibold,600);}/*!sc*/ .hWqAbU:where([data-size='small']){font-size:var(--text-body-size-small,0.75rem);line-height:var(--text-body-lineHeight-small,1.6666);}/*!sc*/ .hWqAbU:where([data-size='medium']){font-size:var(--text-body-size-medium,0.875rem);line-height:var(--text-body-lineHeight-medium,1.4285);}/*!sc*/ .hWqAbU:where([data-size='large']){font-size:var(--text-body-size-large,1rem);line-height:var(--text-body-lineHeight-large,1.5);}/*!sc*/ .hWqAbU:where([data-weight='light']){font-weight:var(--base-text-weight-light,300);}/*!sc*/ .hWqAbU:where([data-weight='normal']){font-weight:var(--base-text-weight-normal,400);}/*!sc*/ .hWqAbU:where([data-weight='medium']){font-weight:var(--base-text-weight-medium,500);}/*!sc*/ .hWqAbU:where([data-weight='semibold']){font-weight:var(--base-text-weight-semibold,600);}/*!sc*/ .dafPaR{font-weight:500;padding-right:4px;display:none;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;-webkit-align-items:baseline;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline;}/*!sc*/ .dafPaR:where([data-size='small']){font-size:var(--text-body-size-small,0.75rem);line-height:var(--text-body-lineHeight-small,1.6666);}/*!sc*/ .dafPaR:where([data-size='medium']){font-size:var(--text-body-size-medium,0.875rem);line-height:var(--text-body-lineHeight-medium,1.4285);}/*!sc*/ .dafPaR:where([data-size='large']){font-size:var(--text-body-size-large,1rem);line-height:var(--text-body-lineHeight-large,1.5);}/*!sc*/ .dafPaR:where([data-weight='light']){font-weight:var(--base-text-weight-light,300);}/*!sc*/ .dafPaR:where([data-weight='normal']){font-weight:var(--base-text-weight-normal,400);}/*!sc*/ .dafPaR:where([data-weight='medium']){font-weight:var(--base-text-weight-medium,500);}/*!sc*/ .dafPaR:where([data-weight='semibold']){font-weight:var(--base-text-weight-semibold,600);}/*!sc*/ @media screen and (min-width:544px){.dafPaR{display:none;}}/*!sc*/ @media screen and (min-width:768px){.dafPaR{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}}/*!sc*/ .Gtsss{font-size:12px;font-weight:400;color:var(--fgColor-muted,var(--color-fg-muted,#656d76));}/*!sc*/ .Gtsss:where([data-size='small']){font-size:var(--text-body-size-small,0.75rem);line-height:var(--text-body-lineHeight-small,1.6666);}/*!sc*/ .Gtsss:where([data-size='medium']){font-size:var(--text-body-size-medium,0.875rem);line-height:var(--text-body-lineHeight-medium,1.4285);}/*!sc*/ .Gtsss:where([data-size='large']){font-size:var(--text-body-size-large,1rem);line-height:var(--text-body-lineHeight-large,1.5);}/*!sc*/ .Gtsss:where([data-weight='light']){font-weight:var(--base-text-weight-light,300);}/*!sc*/ .Gtsss:where([data-weight='normal']){font-weight:var(--base-text-weight-normal,400);}/*!sc*/ .Gtsss:where([data-weight='medium']){font-weight:var(--base-text-weight-medium,500);}/*!sc*/ .Gtsss:where([data-weight='semibold']){font-weight:var(--base-text-weight-semibold,600);}/*!sc*/ .jAOgCe{font-size:12px;font-weight:400;color:var(--fgColor-muted,var(--color-fg-muted,#656d76));display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;max-width:100%;}/*!sc*/ .jAOgCe:where([data-size='small']){font-size:var(--text-body-size-small,0.75rem);line-height:var(--text-body-lineHeight-small,1.6666);}/*!sc*/ .jAOgCe:where([data-size='medium']){font-size:var(--text-body-size-medium,0.875rem);line-height:var(--text-body-lineHeight-medium,1.4285);}/*!sc*/ .jAOgCe:where([data-size='large']){font-size:var(--text-body-size-large,1rem);line-height:var(--text-body-lineHeight-large,1.5);}/*!sc*/ .jAOgCe:where([data-weight='light']){font-weight:var(--base-text-weight-light,300);}/*!sc*/ .jAOgCe:where([data-weight='normal']){font-weight:var(--base-text-weight-normal,400);}/*!sc*/ .jAOgCe:where([data-weight='medium']){font-weight:var(--base-text-weight-medium,500);}/*!sc*/ .jAOgCe:where([data-weight='semibold']){font-weight:var(--base-text-weight-semibold,600);}/*!sc*/ .iNjpgy{color:var(--fgColor-muted,var(--color-fg-muted,#656d76));}/*!sc*/ .iNjpgy:where([data-size='small']){font-size:var(--text-body-size-small,0.75rem);line-height:var(--text-body-lineHeight-small,1.6666);}/*!sc*/ .iNjpgy:where([data-size='medium']){font-size:var(--text-body-size-medium,0.875rem);line-height:var(--text-body-lineHeight-medium,1.4285);}/*!sc*/ .iNjpgy:where([data-size='large']){font-size:var(--text-body-size-large,1rem);line-height:var(--text-body-lineHeight-large,1.5);}/*!sc*/ .iNjpgy:where([data-weight='light']){font-weight:var(--base-text-weight-light,300);}/*!sc*/ .iNjpgy:where([data-weight='normal']){font-weight:var(--base-text-weight-normal,400);}/*!sc*/ .iNjpgy:where([data-weight='medium']){font-weight:var(--base-text-weight-medium,500);}/*!sc*/ .iNjpgy:where([data-weight='semibold']){font-weight:var(--base-text-weight-semibold,600);}/*!sc*/ .cWNlgR:where([data-size='small']){font-size:var(--text-body-size-small,0.75rem);line-height:var(--text-body-lineHeight-small,1.6666);}/*!sc*/ .cWNlgR:where([data-size='medium']){font-size:var(--text-body-size-medium,0.875rem);line-height:var(--text-body-lineHeight-medium,1.4285);}/*!sc*/ .cWNlgR:where([data-size='large']){font-size:var(--text-body-size-large,1rem);line-height:var(--text-body-lineHeight-large,1.5);}/*!sc*/ .cWNlgR:where([data-weight='light']){font-weight:var(--base-text-weight-light,300);}/*!sc*/ .cWNlgR:where([data-weight='normal']){font-weight:var(--base-text-weight-normal,400);}/*!sc*/ .cWNlgR:where([data-weight='medium']){font-weight:var(--base-text-weight-medium,500);}/*!sc*/ .cWNlgR:where([data-weight='semibold']){font-weight:var(--base-text-weight-semibold,600);}/*!sc*/ .cWNlgR .g-emoji{font-size:14px;}/*!sc*/ data-styled.g3[id="Text__StyledText-sc-17v1xeu-0"]{content:"kkEZdX,jFeNNe,hWqAbU,dafPaR,Gtsss,jAOgCe,iNjpgy,cWNlgR,"}/*!sc*/ .brGdpi{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;-webkit-clip:rect(0,0,0,0);clip:rect(0,0,0,0);white-space:nowrap;border-width:0;}/*!sc*/ data-styled.g4[id="_VisuallyHidden__VisuallyHidden-sc-11jhm7a-0"]{content:"brGdpi,"}/*!sc*/ .fhNCdb:not(:focus):not(:active):not(:focus-within){-webkit-clip-path:inset(50%);clip-path:inset(50%);height:1px;overflow:hidden;position:absolute;white-space:nowrap;width:1px;}/*!sc*/ data-styled.g6[id="VisuallyHidden__StyledVisuallyHidden-sc-1rhpuyf-0"]{content:"fhNCdb,"}/*!sc*/ .bwZtCh{border-radius:6px;border:1px solid;border-color:var(--button-default-borderColor-rest,var(--button-default-borderColor-rest,var(--color-btn-border,rgba(31,35,40,0.15))));font-family:inherit;font-weight:500;font-size:14px;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-text-decoration:none;text-decoration:none;text-align:center;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;height:32px;padding:0 12px;gap:8px;min-width:-webkit-max-content;min-width:-moz-max-content;min-width:max-content;-webkit-transition:80ms cubic-bezier(0.65,0,0.35,1);transition:80ms cubic-bezier(0.65,0,0.35,1);-webkit-transition-property:color,fill,background-color,border-color;transition-property:color,fill,background-color,border-color;color:var(--button-default-fgColor-rest,var(--color-btn-text,#24292f));background-color:var(--button-default-bgColor-rest,var(--color-btn-bg,#f6f8fa));box-shadow:var(--button-default-shadow-resting,var(--color-btn-shadow,0 1px 0 rgba(31,35,40,0.04))),var(--button-default-shadow-inset,var(--color-btn-inset-shadow,inset 0 1px 0 rgba(255,255,255,0.25)));}/*!sc*/ .bwZtCh:focus:not(:disabled){box-shadow:none;outline:2px solid var(--fgColor-accent,var(--color-accent-fg,#0969da));outline-offset:-2px;}/*!sc*/ .bwZtCh:focus:not(:disabled):not(:focus-visible){outline:solid 1px transparent;}/*!sc*/ .bwZtCh:focus-visible:not(:disabled){box-shadow:none;outline:2px solid var(--fgColor-accent,var(--color-accent-fg,#0969da));outline-offset:-2px;}/*!sc*/ .bwZtCh[href]{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;}/*!sc*/ .bwZtCh[href]:hover{-webkit-text-decoration:none;text-decoration:none;}/*!sc*/ .bwZtCh:hover{-webkit-transition-duration:80ms;transition-duration:80ms;}/*!sc*/ .bwZtCh:active{-webkit-transition:none;transition:none;}/*!sc*/ .bwZtCh[data-inactive]{cursor:auto;}/*!sc*/ .bwZtCh:disabled{cursor:not-allowed;box-shadow:none;color:var(--fgColor-disabled,var(--color-primer-fg-disabled,#8c959f));border-color:var(--button-default-borderColor-disabled,var(--button-default-borderColor-rest,var(--color-btn-border,rgba(31,35,40,0.15))));background-color:var(--button-default-bgColor-disabled,var(--control-bgColor-disabled,var(--color-input-disabled-bg,rgba(175,184,193,0.2))));}/*!sc*/ .bwZtCh:disabled [data-component=ButtonCounter]{color:inherit;}/*!sc*/ @media (forced-colors:active){.bwZtCh:focus{outline:solid 1px transparent;}}/*!sc*/ .bwZtCh [data-component=ButtonCounter]{font-size:12px;background-color:var(--buttonCounter-default-bgColor-rest,var(--color-btn-counter-bg,rgba(31,35,40,0.08)));}/*!sc*/ .bwZtCh[data-component=IconButton]{display:inline-grid;padding:unset;place-content:center;width:32px;min-width:unset;}/*!sc*/ .bwZtCh[data-size="small"]{padding:0 8px;height:28px;gap:4px;font-size:12px;margin-right:8px;}/*!sc*/ .bwZtCh[data-size="small"] [data-component="text"]{line-height:1.6666667;}/*!sc*/ .bwZtCh[data-size="small"] [data-component=ButtonCounter]{font-size:12px;}/*!sc*/ .bwZtCh[data-size="small"] [data-component="buttonContent"] > :not(:last-child){margin-right:4px;}/*!sc*/ .bwZtCh[data-size="small"][data-component=IconButton]{width:28px;padding:unset;}/*!sc*/ .bwZtCh[data-size="small"] span{margin:0;}/*!sc*/ .bwZtCh[data-size="large"]{padding:0 16px;height:40px;gap:8px;}/*!sc*/ .bwZtCh[data-size="large"] [data-component="buttonContent"] > :not(:last-child){margin-right:8px;}/*!sc*/ .bwZtCh[data-size="large"][data-component=IconButton]{width:40px;padding:unset;}/*!sc*/ .bwZtCh[data-block="block"]{width:100%;}/*!sc*/ .bwZtCh[data-label-wrap="true"]{min-width:-webkit-fit-content;min-width:-moz-fit-content;min-width:fit-content;height:unset;min-height:var(--control-medium-size,2rem);}/*!sc*/ .bwZtCh[data-label-wrap="true"] [data-component="buttonContent"]{-webkit-flex:1 1 auto;-ms-flex:1 1 auto;flex:1 1 auto;-webkit-align-self:stretch;-ms-flex-item-align:stretch;align-self:stretch;padding-block:calc(var(--control-medium-paddingBlock,0.375rem) - 2px);}/*!sc*/ .bwZtCh[data-label-wrap="true"] [data-component="text"]{white-space:unset;word-break:break-word;}/*!sc*/ .bwZtCh[data-label-wrap="true"][data-size="small"]{height:unset;min-height:var(--control-small-size,1.75rem);}/*!sc*/ .bwZtCh[data-label-wrap="true"][data-size="small"] [data-component="buttonContent"]{padding-block:calc(var(--control-small-paddingBlock,0.25rem) - 2px);}/*!sc*/ .bwZtCh[data-label-wrap="true"][data-size="large"]{height:unset;min-height:var(--control-large-size,2.5rem);padding-inline:var(--control-large-paddingInline-spacious,1rem);}/*!sc*/ .bwZtCh[data-label-wrap="true"][data-size="large"] [data-component="buttonContent"]{padding-block:calc(var(--control-large-paddingBlock,0.625rem) - 2px);}/*!sc*/ .bwZtCh[data-inactive]:not([disabled]){background-color:var(--button-inactive-bgColor,var(--button-inactive-bgColor-rest,var(--color-btn-inactive-bg,#eaeef2)));border-color:var(--button-inactive-bgColor,var(--button-inactive-bgColor-rest,var(--color-btn-inactive-bg,#eaeef2)));color:var(--button-inactive-fgColor,var(--button-inactive-fgColor-rest,var(--color-btn-inactive-text,#57606a)));}/*!sc*/ .bwZtCh[data-inactive]:not([disabled]):focus-visible{box-shadow:none;}/*!sc*/ .bwZtCh [data-component="leadingVisual"]{grid-area:leadingVisual;}/*!sc*/ .bwZtCh [data-component="text"]{grid-area:text;line-height:1.4285714;white-space:nowrap;}/*!sc*/ .bwZtCh [data-component="trailingVisual"]{grid-area:trailingVisual;}/*!sc*/ .bwZtCh [data-component="trailingAction"]{margin-right:-4px;}/*!sc*/ .bwZtCh [data-component="buttonContent"]{-webkit-flex:1 0 auto;-ms-flex:1 0 auto;flex:1 0 auto;display:grid;grid-template-areas:"leadingVisual text trailingVisual";grid-template-columns:min-content minmax(0,auto) min-content;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-align-content:center;-ms-flex-line-pack:center;align-content:center;}/*!sc*/ .bwZtCh [data-component="buttonContent"] > :not(:last-child){margin-right:8px;}/*!sc*/ .bwZtCh [data-component="loadingSpinner"]{grid-area:text;margin-right:0px !important;place-self:center;color:var(--fgColor-muted,var(--color-fg-muted,#656d76));}/*!sc*/ .bwZtCh [data-component="loadingSpinner"] + [data-component="text"]{visibility:hidden;}/*!sc*/ .bwZtCh:hover:not([disabled]):not([data-inactive]){background-color:var(--button-default-bgColor-hover,var(--color-btn-hover-bg,#f3f4f6));border-color:var(--button-default-borderColor-hover,var(--button-default-borderColor-hover,var(--color-btn-hover-border,rgba(31,35,40,0.15))));}/*!sc*/ .bwZtCh:active:not([disabled]):not([data-inactive]){background-color:var(--button-default-bgColor-active,var(--color-btn-active-bg,hsla(220,14%,93%,1)));border-color:var(--button-default-borderColor-active,var(--button-default-borderColor-active,var(--color-btn-active-border,rgba(31,35,40,0.15))));}/*!sc*/ .bwZtCh[aria-expanded=true]{background-color:var(--button-default-bgColor-active,var(--color-btn-active-bg,hsla(220,14%,93%,1)));border-color:var(--button-default-borderColor-active,var(--button-default-borderColor-active,var(--color-btn-active-border,rgba(31,35,40,0.15))));}/*!sc*/ .bwZtCh [data-component="leadingVisual"],.bwZtCh [data-component="trailingVisual"],.bwZtCh [data-component="trailingAction"]{color:var(--button-color,var(--fgColor-muted,var(--color-fg-muted,#656d76)));}/*!sc*/ .bwZtCh[data-component="IconButton"][data-no-visuals]:not(:disabled){color:var(--fgColor-muted,var(--color-fg-muted,#656d76));}/*!sc*/ .gYBfZb{border-radius:6px;border:1px solid;border-color:var(--button-default-borderColor-rest,var(--button-default-borderColor-rest,var(--color-btn-border,rgba(31,35,40,0.15))));font-family:inherit;font-weight:500;font-size:14px;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-text-decoration:none;text-decoration:none;text-align:center;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;height:32px;padding:0 12px;gap:8px;min-width:-webkit-max-content;min-width:-moz-max-content;min-width:max-content;-webkit-transition:80ms cubic-bezier(0.65,0,0.35,1);transition:80ms cubic-bezier(0.65,0,0.35,1);-webkit-transition-property:color,fill,background-color,border-color;transition-property:color,fill,background-color,border-color;color:var(--button-default-fgColor-rest,var(--color-btn-text,#24292f));background-color:var(--button-default-bgColor-rest,var(--color-btn-bg,#f6f8fa));box-shadow:var(--button-default-shadow-resting,var(--color-btn-shadow,0 1px 0 rgba(31,35,40,0.04))),var(--button-default-shadow-inset,var(--color-btn-inset-shadow,inset 0 1px 0 rgba(255,255,255,0.25)));}/*!sc*/ .gYBfZb:focus:not(:disabled){box-shadow:none;outline:2px solid var(--fgColor-accent,var(--color-accent-fg,#0969da));outline-offset:-2px;}/*!sc*/ .gYBfZb:focus:not(:disabled):not(:focus-visible){outline:solid 1px transparent;}/*!sc*/ .gYBfZb:focus-visible:not(:disabled){box-shadow:none;outline:2px solid var(--fgColor-accent,var(--color-accent-fg,#0969da));outline-offset:-2px;}/*!sc*/ .gYBfZb[href]{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;}/*!sc*/ .gYBfZb[href]:hover{-webkit-text-decoration:none;text-decoration:none;}/*!sc*/ .gYBfZb:hover{-webkit-transition-duration:80ms;transition-duration:80ms;}/*!sc*/ .gYBfZb:active{-webkit-transition:none;transition:none;}/*!sc*/ .gYBfZb[data-inactive]{cursor:auto;}/*!sc*/ .gYBfZb:disabled{cursor:not-allowed;box-shadow:none;color:var(--fgColor-disabled,var(--color-primer-fg-disabled,#8c959f));border-color:var(--button-default-borderColor-disabled,var(--button-default-borderColor-rest,var(--color-btn-border,rgba(31,35,40,0.15))));background-color:var(--button-default-bgColor-disabled,var(--control-bgColor-disabled,var(--color-input-disabled-bg,rgba(175,184,193,0.2))));}/*!sc*/ .gYBfZb:disabled [data-component=ButtonCounter]{color:inherit;}/*!sc*/ @media (forced-colors:active){.gYBfZb:focus{outline:solid 1px transparent;}}/*!sc*/ .gYBfZb [data-component=ButtonCounter]{font-size:12px;background-color:var(--buttonCounter-default-bgColor-rest,var(--color-btn-counter-bg,rgba(31,35,40,0.08)));}/*!sc*/ .gYBfZb[data-component=IconButton]{display:inline-grid;padding:unset;place-content:center;width:32px;min-width:unset;}/*!sc*/ .gYBfZb[data-size="small"]{padding:0 8px;height:28px;gap:4px;font-size:12px;background-color:var(--button-default-bgColor-rest,var(--color-btn-bg,#f6f8fa));}/*!sc*/ .gYBfZb[data-size="small"] [data-component="text"]{line-height:1.6666667;}/*!sc*/ .gYBfZb[data-size="small"] [data-component=ButtonCounter]{font-size:12px;}/*!sc*/ .gYBfZb[data-size="small"] [data-component="buttonContent"] > :not(:last-child){margin-right:4px;}/*!sc*/ .gYBfZb[data-size="small"][data-component=IconButton]{width:28px;padding:unset;}/*!sc*/ .gYBfZb[data-size="large"]{padding:0 16px;height:40px;gap:8px;}/*!sc*/ .gYBfZb[data-size="large"] [data-component="buttonContent"] > :not(:last-child){margin-right:8px;}/*!sc*/ .gYBfZb[data-size="large"][data-component=IconButton]{width:40px;padding:unset;}/*!sc*/ .gYBfZb[data-block="block"]{width:100%;}/*!sc*/ .gYBfZb[data-label-wrap="true"]{min-width:-webkit-fit-content;min-width:-moz-fit-content;min-width:fit-content;height:unset;min-height:var(--control-medium-size,2rem);}/*!sc*/ .gYBfZb[data-label-wrap="true"] [data-component="buttonContent"]{-webkit-flex:1 1 auto;-ms-flex:1 1 auto;flex:1 1 auto;-webkit-align-self:stretch;-ms-flex-item-align:stretch;align-self:stretch;padding-block:calc(var(--control-medium-paddingBlock,0.375rem) - 2px);}/*!sc*/ .gYBfZb[data-label-wrap="true"] [data-component="text"]{white-space:unset;word-break:break-word;}/*!sc*/ .gYBfZb[data-label-wrap="true"][data-size="small"]{height:unset;min-height:var(--control-small-size,1.75rem);}/*!sc*/ .gYBfZb[data-label-wrap="true"][data-size="small"] [data-component="buttonContent"]{padding-block:calc(var(--control-small-paddingBlock,0.25rem) - 2px);}/*!sc*/ .gYBfZb[data-label-wrap="true"][data-size="large"]{height:unset;min-height:var(--control-large-size,2.5rem);padding-inline:var(--control-large-paddingInline-spacious,1rem);}/*!sc*/ .gYBfZb[data-label-wrap="true"][data-size="large"] [data-component="buttonContent"]{padding-block:calc(var(--control-large-paddingBlock,0.625rem) - 2px);}/*!sc*/ .gYBfZb[data-inactive]:not([disabled]){background-color:var(--button-inactive-bgColor,var(--button-inactive-bgColor-rest,var(--color-btn-inactive-bg,#eaeef2)));border-color:var(--button-inactive-bgColor,var(--button-inactive-bgColor-rest,var(--color-btn-inactive-bg,#eaeef2)));color:var(--button-inactive-fgColor,var(--button-inactive-fgColor-rest,var(--color-btn-inactive-text,#57606a)));}/*!sc*/ .gYBfZb[data-inactive]:not([disabled]):focus-visible{box-shadow:none;}/*!sc*/ .gYBfZb [data-component="leadingVisual"]{grid-area:leadingVisual;}/*!sc*/ .gYBfZb [data-component="text"]{grid-area:text;line-height:1.4285714;white-space:nowrap;}/*!sc*/ .gYBfZb [data-component="trailingVisual"]{grid-area:trailingVisual;}/*!sc*/ .gYBfZb [data-component="trailingAction"]{margin-right:-4px;}/*!sc*/ .gYBfZb [data-component="buttonContent"]{-webkit-flex:1 0 auto;-ms-flex:1 0 auto;flex:1 0 auto;display:grid;grid-template-areas:"leadingVisual text trailingVisual";grid-template-columns:min-content minmax(0,auto) min-content;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-align-content:center;-ms-flex-line-pack:center;align-content:center;}/*!sc*/ .gYBfZb [data-component="buttonContent"] > :not(:last-child){margin-right:8px;}/*!sc*/ .gYBfZb [data-component="loadingSpinner"]{grid-area:text;margin-right:0px !important;place-self:center;color:var(--fgColor-muted,var(--color-fg-muted,#656d76));}/*!sc*/ .gYBfZb [data-component="loadingSpinner"] + [data-component="text"]{visibility:hidden;}/*!sc*/ .gYBfZb:hover:not([disabled]):not([data-inactive]){background-color:var(--button-default-bgColor-hover,var(--color-btn-hover-bg,#f3f4f6));border-color:var(--button-default-borderColor-hover,var(--button-default-borderColor-hover,var(--color-btn-hover-border,rgba(31,35,40,0.15))));}/*!sc*/ .gYBfZb:active:not([disabled]):not([data-inactive]){background-color:var(--button-default-bgColor-active,var(--color-btn-active-bg,hsla(220,14%,93%,1)));border-color:var(--button-default-borderColor-active,var(--button-default-borderColor-active,var(--color-btn-active-border,rgba(31,35,40,0.15))));}/*!sc*/ .gYBfZb[aria-expanded=true]{background-color:var(--button-default-bgColor-active,var(--color-btn-active-bg,hsla(220,14%,93%,1)));border-color:var(--button-default-borderColor-active,var(--button-default-borderColor-active,var(--color-btn-active-border,rgba(31,35,40,0.15))));}/*!sc*/ .gYBfZb [data-component="leadingVisual"],.gYBfZb [data-component="trailingVisual"],.gYBfZb [data-component="trailingAction"]{color:var(--button-color,var(--fgColor-muted,var(--color-fg-muted,#656d76)));}/*!sc*/ .gYBfZb[data-component="IconButton"][data-no-visuals]:not(:disabled){color:var(--fgColor-muted,var(--color-fg-muted,#656d76));}/*!sc*/ .gGdPyq{border-radius:6px;border:1px solid;border-color:var(--button-default-borderColor-rest,var(--button-default-borderColor-rest,var(--color-btn-border,rgba(31,35,40,0.15))));font-family:inherit;font-weight:500;font-size:14px;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-text-decoration:none;text-decoration:none;text-align:center;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;height:32px;padding:0 12px;gap:8px;min-width:-webkit-max-content;min-width:-moz-max-content;min-width:max-content;-webkit-transition:80ms cubic-bezier(0.65,0,0.35,1);transition:80ms cubic-bezier(0.65,0,0.35,1);-webkit-transition-property:color,fill,background-color,border-color;transition-property:color,fill,background-color,border-color;color:var(--button-default-fgColor-rest,var(--color-btn-text,#24292f));background-color:var(--button-default-bgColor-rest,var(--color-btn-bg,#f6f8fa));box-shadow:var(--button-default-shadow-resting,var(--color-btn-shadow,0 1px 0 rgba(31,35,40,0.04))),var(--button-default-shadow-inset,var(--color-btn-inset-shadow,inset 0 1px 0 rgba(255,255,255,0.25)));}/*!sc*/ .gGdPyq:focus:not(:disabled){box-shadow:none;outline:2px solid var(--fgColor-accent,var(--color-accent-fg,#0969da));outline-offset:-2px;}/*!sc*/ .gGdPyq:focus:not(:disabled):not(:focus-visible){outline:solid 1px transparent;}/*!sc*/ .gGdPyq:focus-visible:not(:disabled){box-shadow:none;outline:2px solid var(--fgColor-accent,var(--color-accent-fg,#0969da));outline-offset:-2px;}/*!sc*/ .gGdPyq[href]{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;}/*!sc*/ .gGdPyq[href]:hover{-webkit-text-decoration:none;text-decoration:none;}/*!sc*/ .gGdPyq:hover{-webkit-transition-duration:80ms;transition-duration:80ms;}/*!sc*/ .gGdPyq:active{-webkit-transition:none;transition:none;}/*!sc*/ .gGdPyq[data-inactive]{cursor:auto;}/*!sc*/ .gGdPyq:disabled{cursor:not-allowed;box-shadow:none;color:var(--fgColor-disabled,var(--color-primer-fg-disabled,#8c959f));border-color:var(--button-default-borderColor-disabled,var(--button-default-borderColor-rest,var(--color-btn-border,rgba(31,35,40,0.15))));background-color:var(--button-default-bgColor-disabled,var(--control-bgColor-disabled,var(--color-input-disabled-bg,rgba(175,184,193,0.2))));}/*!sc*/ .gGdPyq:disabled [data-component=ButtonCounter]{color:inherit;}/*!sc*/ @media (forced-colors:active){.gGdPyq:focus{outline:solid 1px transparent;}}/*!sc*/ .gGdPyq [data-component=ButtonCounter]{font-size:12px;background-color:var(--buttonCounter-default-bgColor-rest,var(--color-btn-counter-bg,rgba(31,35,40,0.08)));}/*!sc*/ .gGdPyq[data-component=IconButton]{display:inline-grid;padding:unset;place-content:center;width:32px;min-width:unset;}/*!sc*/ .gGdPyq[data-size="small"]{padding:0 8px;height:28px;gap:4px;font-size:12px;}/*!sc*/ .gGdPyq[data-size="small"] [data-component="text"]{line-height:1.6666667;}/*!sc*/ .gGdPyq[data-size="small"] [data-component=ButtonCounter]{font-size:12px;}/*!sc*/ .gGdPyq[data-size="small"] [data-component="buttonContent"] > :not(:last-child){margin-right:4px;}/*!sc*/ .gGdPyq[data-size="small"][data-component=IconButton]{width:28px;padding:unset;}/*!sc*/ .gGdPyq[data-size="large"]{padding:0 16px;height:40px;gap:8px;}/*!sc*/ .gGdPyq[data-size="large"] [data-component="buttonContent"] > :not(:last-child){margin-right:8px;}/*!sc*/ .gGdPyq[data-size="large"][data-component=IconButton]{width:40px;padding:unset;}/*!sc*/ .gGdPyq[data-block="block"]{width:100%;}/*!sc*/ .gGdPyq[data-label-wrap="true"]{min-width:-webkit-fit-content;min-width:-moz-fit-content;min-width:fit-content;height:unset;min-height:var(--control-medium-size,2rem);}/*!sc*/ .gGdPyq[data-label-wrap="true"] [data-component="buttonContent"]{-webkit-flex:1 1 auto;-ms-flex:1 1 auto;flex:1 1 auto;-webkit-align-self:stretch;-ms-flex-item-align:stretch;align-self:stretch;padding-block:calc(var(--control-medium-paddingBlock,0.375rem) - 2px);}/*!sc*/ .gGdPyq[data-label-wrap="true"] [data-component="text"]{white-space:unset;word-break:break-word;}/*!sc*/ .gGdPyq[data-label-wrap="true"][data-size="small"]{height:unset;min-height:var(--control-small-size,1.75rem);}/*!sc*/ .gGdPyq[data-label-wrap="true"][data-size="small"] [data-component="buttonContent"]{padding-block:calc(var(--control-small-paddingBlock,0.25rem) - 2px);}/*!sc*/ .gGdPyq[data-label-wrap="true"][data-size="large"]{height:unset;min-height:var(--control-large-size,2.5rem);padding-inline:var(--control-large-paddingInline-spacious,1rem);}/*!sc*/ .gGdPyq[data-label-wrap="true"][data-size="large"] [data-component="buttonContent"]{padding-block:calc(var(--control-large-paddingBlock,0.625rem) - 2px);}/*!sc*/ .gGdPyq[data-inactive]:not([disabled]){background-color:var(--button-inactive-bgColor,var(--button-inactive-bgColor-rest,var(--color-btn-inactive-bg,#eaeef2)));border-color:var(--button-inactive-bgColor,var(--button-inactive-bgColor-rest,var(--color-btn-inactive-bg,#eaeef2)));color:var(--button-inactive-fgColor,var(--button-inactive-fgColor-rest,var(--color-btn-inactive-text,#57606a)));}/*!sc*/ .gGdPyq[data-inactive]:not([disabled]):focus-visible{box-shadow:none;}/*!sc*/ .gGdPyq [data-component="leadingVisual"]{grid-area:leadingVisual;}/*!sc*/ .gGdPyq [data-component="text"]{grid-area:text;line-height:1.4285714;white-space:nowrap;}/*!sc*/ .gGdPyq [data-component="trailingVisual"]{grid-area:trailingVisual;}/*!sc*/ .gGdPyq [data-component="trailingAction"]{margin-right:-4px;}/*!sc*/ .gGdPyq [data-component="buttonContent"]{-webkit-flex:1 0 auto;-ms-flex:1 0 auto;flex:1 0 auto;display:grid;grid-template-areas:"leadingVisual text trailingVisual";grid-template-columns:min-content minmax(0,auto) min-content;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-align-content:center;-ms-flex-line-pack:center;align-content:center;}/*!sc*/ .gGdPyq [data-component="buttonContent"] > :not(:last-child){margin-right:8px;}/*!sc*/ .gGdPyq [data-component="loadingSpinner"]{grid-area:text;margin-right:0px !important;place-self:center;color:var(--fgColor-muted,var(--color-fg-muted,#656d76));}/*!sc*/ .gGdPyq [data-component="loadingSpinner"] + [data-component="text"]{visibility:hidden;}/*!sc*/ .gGdPyq:hover:not([disabled]):not([data-inactive]){background-color:var(--button-default-bgColor-hover,var(--color-btn-hover-bg,#f3f4f6));border-color:var(--button-default-borderColor-hover,var(--button-default-borderColor-hover,var(--color-btn-hover-border,rgba(31,35,40,0.15))));}/*!sc*/ .gGdPyq:active:not([disabled]):not([data-inactive]){background-color:var(--button-default-bgColor-active,var(--color-btn-active-bg,hsla(220,14%,93%,1)));border-color:var(--button-default-borderColor-active,var(--button-default-borderColor-active,var(--color-btn-active-border,rgba(31,35,40,0.15))));}/*!sc*/ .gGdPyq[aria-expanded=true]{background-color:var(--button-default-bgColor-active,var(--color-btn-active-bg,hsla(220,14%,93%,1)));border-color:var(--button-default-borderColor-active,var(--button-default-borderColor-active,var(--color-btn-active-border,rgba(31,35,40,0.15))));}/*!sc*/ .gGdPyq [data-component="leadingVisual"],.gGdPyq [data-component="trailingVisual"],.gGdPyq [data-component="trailingAction"]{color:var(--button-color,var(--fgColor-muted,var(--color-fg-muted,#656d76)));}/*!sc*/ .gGdPyq[data-component="IconButton"][data-no-visuals]:not(:disabled){color:var(--fgColor-muted,var(--color-fg-muted,#656d76));}/*!sc*/ .gdVEVI{border-radius:6px;border:1px solid;border-color:var(--button-default-borderColor-rest,var(--button-default-borderColor-rest,var(--color-btn-border,rgba(31,35,40,0.15))));font-family:inherit;font-weight:500;font-size:14px;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-text-decoration:none;text-decoration:none;text-align:center;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;height:32px;padding:0 12px;gap:8px;min-width:-webkit-max-content;min-width:-moz-max-content;min-width:max-content;-webkit-transition:80ms cubic-bezier(0.65,0,0.35,1);transition:80ms cubic-bezier(0.65,0,0.35,1);-webkit-transition-property:color,fill,background-color,border-color;transition-property:color,fill,background-color,border-color;color:var(--button-default-fgColor-rest,var(--color-btn-text,#24292f));background-color:var(--button-default-bgColor-rest,var(--color-btn-bg,#f6f8fa));box-shadow:var(--button-default-shadow-resting,var(--color-btn-shadow,0 1px 0 rgba(31,35,40,0.04))),var(--button-default-shadow-inset,var(--color-btn-inset-shadow,inset 0 1px 0 rgba(255,255,255,0.25)));}/*!sc*/ .gdVEVI:focus:not(:disabled){box-shadow:none;outline:2px solid var(--fgColor-accent,var(--color-accent-fg,#0969da));outline-offset:-2px;}/*!sc*/ .gdVEVI:focus:not(:disabled):not(:focus-visible){outline:solid 1px transparent;}/*!sc*/ .gdVEVI:focus-visible:not(:disabled){box-shadow:none;outline:2px solid var(--fgColor-accent,var(--color-accent-fg,#0969da));outline-offset:-2px;}/*!sc*/ .gdVEVI[href]{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;}/*!sc*/ .gdVEVI[href]:hover{-webkit-text-decoration:none;text-decoration:none;}/*!sc*/ .gdVEVI:hover{-webkit-transition-duration:80ms;transition-duration:80ms;}/*!sc*/ .gdVEVI:active{-webkit-transition:none;transition:none;}/*!sc*/ .gdVEVI[data-inactive]{cursor:auto;}/*!sc*/ .gdVEVI:disabled{cursor:not-allowed;box-shadow:none;color:var(--fgColor-disabled,var(--color-primer-fg-disabled,#8c959f));border-color:var(--button-default-borderColor-disabled,var(--button-default-borderColor-rest,var(--color-btn-border,rgba(31,35,40,0.15))));background-color:var(--button-default-bgColor-disabled,var(--control-bgColor-disabled,var(--color-input-disabled-bg,rgba(175,184,193,0.2))));}/*!sc*/ .gdVEVI:disabled [data-component=ButtonCounter]{color:inherit;}/*!sc*/ @media (forced-colors:active){.gdVEVI:focus{outline:solid 1px transparent;}}/*!sc*/ .gdVEVI [data-component=ButtonCounter]{font-size:12px;background-color:var(--buttonCounter-default-bgColor-rest,var(--color-btn-counter-bg,rgba(31,35,40,0.08)));}/*!sc*/ .gdVEVI[data-component=IconButton]{display:inline-grid;padding:unset;place-content:center;width:32px;min-width:unset;}/*!sc*/ .gdVEVI[data-size="small"]{padding:0 8px;height:28px;gap:4px;font-size:12px;}/*!sc*/ .gdVEVI[data-size="small"] [data-component="text"]{line-height:1.6666667;}/*!sc*/ .gdVEVI[data-size="small"] [data-component=ButtonCounter]{font-size:12px;}/*!sc*/ .gdVEVI[data-size="small"] [data-component="buttonContent"] > :not(:last-child){margin-right:4px;}/*!sc*/ .gdVEVI[data-size="small"][data-component=IconButton]{width:28px;padding:unset;}/*!sc*/ .gdVEVI[data-size="large"]{padding:0 16px;height:40px;gap:8px;}/*!sc*/ .gdVEVI[data-size="large"] [data-component="buttonContent"] > :not(:last-child){margin-right:8px;}/*!sc*/ .gdVEVI[data-size="large"][data-component=IconButton]{width:40px;padding:unset;}/*!sc*/ .gdVEVI[data-block="block"]{width:100%;}/*!sc*/ .gdVEVI[data-label-wrap="true"]{min-width:-webkit-fit-content;min-width:-moz-fit-content;min-width:fit-content;height:unset;min-height:var(--control-medium-size,2rem);}/*!sc*/ .gdVEVI[data-label-wrap="true"] [data-component="buttonContent"]{-webkit-flex:1 1 auto;-ms-flex:1 1 auto;flex:1 1 auto;-webkit-align-self:stretch;-ms-flex-item-align:stretch;align-self:stretch;padding-block:calc(var(--control-medium-paddingBlock,0.375rem) - 2px);}/*!sc*/ .gdVEVI[data-label-wrap="true"] [data-component="text"]{white-space:unset;word-break:break-word;}/*!sc*/ .gdVEVI[data-label-wrap="true"][data-size="small"]{height:unset;min-height:var(--control-small-size,1.75rem);}/*!sc*/ .gdVEVI[data-label-wrap="true"][data-size="small"] [data-component="buttonContent"]{padding-block:calc(var(--control-small-paddingBlock,0.25rem) - 2px);}/*!sc*/ .gdVEVI[data-label-wrap="true"][data-size="large"]{height:unset;min-height:var(--control-large-size,2.5rem);padding-inline:var(--control-large-paddingInline-spacious,1rem);}/*!sc*/ .gdVEVI[data-label-wrap="true"][data-size="large"] [data-component="buttonContent"]{padding-block:calc(var(--control-large-paddingBlock,0.625rem) - 2px);}/*!sc*/ .gdVEVI[data-inactive]:not([disabled]){background-color:var(--button-inactive-bgColor,var(--button-inactive-bgColor-rest,var(--color-btn-inactive-bg,#eaeef2)));border-color:var(--button-inactive-bgColor,var(--button-inactive-bgColor-rest,var(--color-btn-inactive-bg,#eaeef2)));color:var(--button-inactive-fgColor,var(--button-inactive-fgColor-rest,var(--color-btn-inactive-text,#57606a)));}/*!sc*/ .gdVEVI[data-inactive]:not([disabled]):focus-visible{box-shadow:none;}/*!sc*/ .gdVEVI [data-component="leadingVisual"]{grid-area:leadingVisual;}/*!sc*/ .gdVEVI [data-component="text"]{grid-area:text;line-height:1.4285714;white-space:nowrap;}/*!sc*/ .gdVEVI [data-component="trailingVisual"]{grid-area:trailingVisual;}/*!sc*/ .gdVEVI [data-component="trailingAction"]{margin-right:-4px;}/*!sc*/ .gdVEVI [data-component="buttonContent"]{-webkit-flex:1 0 auto;-ms-flex:1 0 auto;flex:1 0 auto;display:grid;grid-template-areas:"leadingVisual text trailingVisual";grid-template-columns:min-content minmax(0,auto) min-content;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-align-content:center;-ms-flex-line-pack:center;align-content:center;}/*!sc*/ .gdVEVI [data-component="buttonContent"] > :not(:last-child){margin-right:8px;}/*!sc*/ .gdVEVI [data-component="loadingSpinner"]{grid-area:text;margin-right:0px !important;place-self:center;color:var(--fgColor-muted,var(--color-fg-muted,#656d76));}/*!sc*/ .gdVEVI [data-component="loadingSpinner"] + [data-component="text"]{visibility:hidden;}/*!sc*/ .gdVEVI:hover:not([disabled]):not([data-inactive]){background-color:var(--button-default-bgColor-hover,var(--color-btn-hover-bg,#f3f4f6));border-color:var(--button-default-borderColor-hover,var(--button-default-borderColor-hover,var(--color-btn-hover-border,rgba(31,35,40,0.15))));}/*!sc*/ .gdVEVI:active:not([disabled]):not([data-inactive]){background-color:var(--button-default-bgColor-active,var(--color-btn-active-bg,hsla(220,14%,93%,1)));border-color:var(--button-default-borderColor-active,var(--button-default-borderColor-active,var(--color-btn-active-border,rgba(31,35,40,0.15))));}/*!sc*/ .gdVEVI[aria-expanded=true]{background-color:var(--button-default-bgColor-active,var(--color-btn-active-bg,hsla(220,14%,93%,1)));border-color:var(--button-default-borderColor-active,var(--button-default-borderColor-active,var(--color-btn-active-border,rgba(31,35,40,0.15))));}/*!sc*/ .gdVEVI [data-component="leadingVisual"],.gdVEVI [data-component="trailingVisual"],.gdVEVI [data-component="trailingAction"]{color:var(--button-color,var(--fgColor-muted,var(--color-fg-muted,#656d76)));}/*!sc*/ .gdVEVI[data-component="IconButton"][data-no-visuals]:not(:disabled){color:var(--fgColor-muted,var(--color-fg-muted,#656d76));}/*!sc*/ .gdVEVI[data-size="small"][data-no-visuals]{color:var(--fgColor-muted,var(--color-fg-muted,#656d76));}/*!sc*/ data-styled.g11[id="types__StyledButton-sc-ws60qy-0"]{content:"bwZtCh,gYBfZb,gGdPyq,gdVEVI,"}/*!sc*/ .dkuXTY{display:inline-block;padding:var(--base-size-2,0.125rem) var(--base-size-6,0.375rem);font-size:12px;font-weight:var(--base-text-weight-semibold,bold);line-height:1;border-radius:20px;border:var(--borderWidth-thin,max(1px,0.0625rem)) solid var(--counter-borderColor,var(--color-counter-border));}/*!sc*/ .dkuXTY:where([data-scheme='primary']){background-color:var(--bgColor-neutral-emphasis,var(--color-neutral-emphasis,#6e7781));color:var(--fgColor-onEmphasis,var(--color-fg-on-emphasis,#ffffff));}/*!sc*/ .dkuXTY:where([data-scheme='secondary']){background-color:var(--bgColor-neutral-muted,var(--color-neutral-muted,rgba(175,184,193,0.2)));color:var(--fgColor-default,var(--color-fg-default,#1F2328));}/*!sc*/ .dkuXTY:where(:empty){display:none;}/*!sc*/ .dkuXTY{height:20px;line-height:20px;padding-top:0;padding-bottom:0;padding-left:8px;padding-right:8px;}/*!sc*/ data-styled.g12[id="CounterLabel__StyledCounterLabel-sc-17qlupj-0"]{content:"dkuXTY,"}/*!sc*/ .gAwGiF{margin:0;padding-inline-start:0;padding-top:8px;padding-bottom:8px;}/*!sc*/ data-styled.g16[id="List__ListBox-sc-1x7olzq-0"]{content:"gAwGiF,"}/*!sc*/ .liVpTx{display:inline-block;overflow:hidden;text-overflow:ellipsis;vertical-align:top;white-space:nowrap;max-width:125px;}/*!sc*/ data-styled.g17[id="Truncate__StyledTruncate-sc-23o1d2-0"]{content:"liVpTx,"}/*!sc*/ .jSopPf{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;padding-left:0;padding-right:0;font-size:14px;padding-top:0;padding-bottom:0;line-height:20px;min-height:5px;margin-left:8px;margin-right:8px;border-radius:6px;-webkit-transition:background 33.333ms linear;transition:background 33.333ms linear;color:var(--fgColor-default,var(--color-fg-default,#1F2328));cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:unset;border:unset;width:calc(100% - 16px);font-family:unset;text-align:unset;margin-top:unset;margin-bottom:unset;}/*!sc*/ .jSopPf[data-loading]{cursor:default;}/*!sc*/ .jSopPf[aria-disabled],.jSopPf[data-inactive]{cursor:not-allowed;}/*!sc*/ .jSopPf[aria-disabled] [data-component="ActionList.Checkbox"],.jSopPf[data-inactive] [data-component="ActionList.Checkbox"]{cursor:not-allowed;background-color:var(--control-bgColor-disabled,rgba(175,184,193,0.2));border-color:var(--color-input-disabled-bg,rgba(175,184,193,0.2));}/*!sc*/ @media (forced-colors:active){.jSopPf:focus,.jSopPf:focus-visible,.jSopPf > a.focus-visible,.jSopPf[data-is-active-descendant]{outline:solid 1px transparent !important;}}/*!sc*/ .jSopPf [data-component="ActionList.Item--DividerContainer"]{position:relative;}/*!sc*/ .jSopPf [data-component="ActionList.Item--DividerContainer"]::before{content:" ";display:block;position:absolute;width:100%;top:-7px;border:0 solid;border-top-width:0;border-color:var(--divider-color,transparent);}/*!sc*/ .jSopPf:not(:first-of-type){--divider-color:var(--borderColor-muted,var(--color-action-list-item-inline-divider,rgba(208,215,222,0.48)));}/*!sc*/ [data-component="ActionList.Divider"] + .Item__LiBox-sc-yeql7o-0{--divider-color:transparent !important;}/*!sc*/ .jSopPf:hover:not([aria-disabled]):not([data-inactive]):not([data-loading]),.jSopPf[data-focus-visible-added]:not([aria-disabled]):not([data-inactive]){--divider-color:transparent;}/*!sc*/ .jSopPf:hover:not([aria-disabled]):not([data-inactive]):not([data-loading]) + .Item__LiBox-sc-yeql7o-0,.jSopPf[data-focus-visible-added] + li{--divider-color:transparent;}/*!sc*/ .jSopPf[data-is-active-descendant]{font-weight:400;background-color:var(--control-transparent-bgColor-selected,var(--color-action-list-item-default-selected-bg,rgba(208,215,222,0.24)));}/*!sc*/ .jSopPf[data-is-active-descendant]::after{position:absolute;top:calc(50% - 12px);left:-8px;width:4px;height:24px;content:"";background-color:var(--fgColor-accent,var(--color-accent-fg,#0969da));border-radius:6px;}/*!sc*/ @media (hover:hover) and (pointer:fine){.jSopPf:hover:not([aria-disabled]):not([data-inactive]){background-color:var(--control-transparent-bgColor-hover,var(--color-action-list-item-default-hover-bg,rgba(208,215,222,0.32)));color:var(--fgColor-default,var(--color-fg-default,#1F2328));box-shadow:inset 0 0 0 max(1px,0.0625rem) var(--control-transparent-borderColor-active,var(--color-action-list-item-default-active-border,transparent));}.jSopPf:focus-visible,.jSopPf > a.focus-visible,.jSopPf:focus.focus-visible{outline:none;border:2 solid;box-shadow:0 0 0 2px var(--bgColor-accent-emphasis,var(--color-accent-emphasis,#0969da));}.jSopPf:active:not([aria-disabled]):not([data-inactive]){background-color:var(--control-transparent-bgColor-active,var(--color-action-list-item-default-active-bg,rgba(208,215,222,0.48)));color:var(--fgColor-default,var(--color-fg-default,#1F2328));}}/*!sc*/ .dulCWx{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;padding-left:0;padding-right:0;font-size:14px;padding-top:0;padding-bottom:0;line-height:20px;min-height:5px;margin-left:8px;margin-right:8px;border-radius:6px;-webkit-transition:background 33.333ms linear;transition:background 33.333ms linear;color:var(--fgColor-default,var(--color-fg-default,#1F2328));cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:unset;border:unset;width:calc(100% - 16px);font-family:unset;text-align:unset;margin-top:unset;margin-bottom:unset;font-weight:600;background-color:var(--control-transparent-bgColor-selected,var(--color-action-list-item-default-selected-bg,rgba(208,215,222,0.24)));}/*!sc*/ .dulCWx[data-loading]{cursor:default;}/*!sc*/ .dulCWx[aria-disabled],.dulCWx[data-inactive]{cursor:not-allowed;}/*!sc*/ .dulCWx[aria-disabled] [data-component="ActionList.Checkbox"],.dulCWx[data-inactive] [data-component="ActionList.Checkbox"]{cursor:not-allowed;background-color:var(--control-bgColor-disabled,rgba(175,184,193,0.2));border-color:var(--color-input-disabled-bg,rgba(175,184,193,0.2));}/*!sc*/ @media (forced-colors:active){.dulCWx:focus,.dulCWx:focus-visible,.dulCWx > a.focus-visible,.dulCWx[data-is-active-descendant]{outline:solid 1px transparent !important;}}/*!sc*/ .dulCWx [data-component="ActionList.Item--DividerContainer"]{position:relative;}/*!sc*/ .dulCWx [data-component="ActionList.Item--DividerContainer"]::before{content:" ";display:block;position:absolute;width:100%;top:-7px;border:0 solid;border-top-width:0;border-color:var(--divider-color,transparent);}/*!sc*/ .dulCWx:not(:first-of-type){--divider-color:var(--borderColor-muted,var(--color-action-list-item-inline-divider,rgba(208,215,222,0.48)));}/*!sc*/ [data-component="ActionList.Divider"] + .Item__LiBox-sc-yeql7o-0{--divider-color:transparent !important;}/*!sc*/ .dulCWx:hover:not([aria-disabled]):not([data-inactive]):not([data-loading]),.dulCWx[data-focus-visible-added]:not([aria-disabled]):not([data-inactive]){--divider-color:transparent;}/*!sc*/ .dulCWx:hover:not([aria-disabled]):not([data-inactive]):not([data-loading]) + .Item__LiBox-sc-yeql7o-0,.dulCWx[data-focus-visible-added] + li{--divider-color:transparent;}/*!sc*/ .dulCWx::after{position:absolute;top:calc(50% - 12px);left:-8px;width:4px;height:24px;content:"";background-color:var(--fgColor-accent,var(--color-accent-fg,#0969da));border-radius:6px;}/*!sc*/ .dulCWx[data-is-active-descendant]{font-weight:400;background-color:var(--control-transparent-bgColor-selected,var(--color-action-list-item-default-selected-bg,rgba(208,215,222,0.24)));}/*!sc*/ .dulCWx[data-is-active-descendant]::after{position:absolute;top:calc(50% - 12px);left:-8px;width:4px;height:24px;content:"";background-color:var(--fgColor-accent,var(--color-accent-fg,#0969da));border-radius:6px;}/*!sc*/ @media (hover:hover) and (pointer:fine){.dulCWx:hover:not([aria-disabled]):not([data-inactive]){background-color:var(--control-transparent-bgColor-hover,var(--color-action-list-item-default-hover-bg,rgba(208,215,222,0.32)));color:var(--fgColor-default,var(--color-fg-default,#1F2328));box-shadow:inset 0 0 0 max(1px,0.0625rem) var(--control-transparent-borderColor-active,var(--color-action-list-item-default-active-border,transparent));}.dulCWx:focus-visible,.dulCWx > a.focus-visible,.dulCWx:focus.focus-visible{outline:none;border:2 solid;box-shadow:0 0 0 2px var(--bgColor-accent-emphasis,var(--color-accent-emphasis,#0969da));}.dulCWx:active:not([aria-disabled]):not([data-inactive]){background-color:var(--control-transparent-bgColor-active,var(--color-action-list-item-default-active-bg,rgba(208,215,222,0.48)));color:var(--fgColor-default,var(--color-fg-default,#1F2328));}}/*!sc*/ data-styled.g18[id="Item__LiBox-sc-yeql7o-0"]{content:"jSopPf,dulCWx,"}/*!sc*/ .fDxtFk{-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;border-radius:999px;cursor:auto;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;font-weight:600;font-family:inherit;-webkit-text-decoration:none;text-decoration:none;position:relative;white-space:nowrap;font-size:12px;height:20px;line-height:20px;padding-left:8px;padding-right:8px;background-color:var(--bgColor-neutral-muted,var(--color-neutral-subtle,rgba(234,238,242,0.5)));border-color:var(--borderColor-muted,var(--color-border-subtle,rgba(31,35,40,0.15)));border-style:solid;border-width:1px;color:var(--fgColor-muted,var(--color-fg-muted,#656d76));max-width:100%;padding-right:0;margin-left:4px;}/*!sc*/ .fDxtFk:hover{background-color:var(--bgColor-neutral-muted,var(--color-neutral-muted,rgba(175,184,193,0.2)));box-shadow:var(--shadow-resting-medium,var(--color-shadow-medium,0 3px 6px rgba(140,149,159,0.15)));color:var(--fgColor-default,var(--color-fg-default,#1F2328));}/*!sc*/ data-styled.g40[id="TokenBase__StyledTokenBase-sc-1ju9l7y-0"]{content:"fDxtFk,"}/*!sc*/ .iWmJZP{background-color:transparent;font-family:inherit;color:currentColor;cursor:pointer;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-text-decoration:none;text-decoration:none;padding:0;-webkit-transform:translate(1px,-1px);-ms-transform:translate(1px,-1px);transform:translate(1px,-1px);-webkit-align-self:baseline;-ms-flex-item-align:baseline;align-self:baseline;border:0;border-radius:999px;margin-left:4px;height:20px;width:20px;}/*!sc*/ .iWmJZP:hover,.iWmJZP:focus{background-color:var(--bgColor-neutral-muted,var(--color-neutral-muted,rgba(175,184,193,0.2)));}/*!sc*/ .iWmJZP:active{background-color:var(--bgColor-neutral-muted,var(--color-neutral-subtle,rgba(234,238,242,0.5)));}/*!sc*/ data-styled.g41[id="_RemoveTokenButton__StyledTokenButton-sc-urhpr1-0"]{content:"iWmJZP,"}/*!sc*/ .geRphu{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;background:transparent;border:none;color:inherit;font:inherit;margin:0;padding:0;width:auto;-webkit-font-smoothing:inherit;-moz-osx-font-smoothing:inherit;-webkit-appearance:none;line-height:normal;color:currentColor;-webkit-text-decoration:none;text-decoration:none;}/*!sc*/ .geRphu:is(a,button,[tabIndex='0']){cursor:pointer;}/*!sc*/ .geRphu:is(a,button,[tabIndex='0']):after{content:'';position:absolute;left:0;top:0;right:0;bottom:0;}/*!sc*/ data-styled.g42[id="_TokenTextContainer__TokenTextContainer-sc-6l9eri-0"]{content:"geRphu,"}/*!sc*/ .dYLzPr{color:var(--fgColor-muted,var(--color-fg-muted,#656d76));margin-right:8px;}/*!sc*/ data-styled.g45[id="Octicon-sc-9kayk9-0"]{content:"dYLzPr,"}/*!sc*/ .gkwoBq{display:inline-block;min-width:32px;height:32px;padding:0.5rem calc((2rem - 1.25rem) / 2);font-style:normal;line-height:1;color:var(--fgColor-default,var(--color-fg-default,#1F2328));text-align:center;white-space:nowrap;vertical-align:middle;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-text-decoration:none;text-decoration:none;margin-right:4px;background-color:transparent;border-radius:6px;-webkit-transition:background-color 0.2s cubic-bezier(0.3,0,0.5,1);transition:background-color 0.2s cubic-bezier(0.3,0,0.5,1);}/*!sc*/ .gkwoBq:last-child{margin-right:0;}/*!sc*/ .gkwoBq:hover,.gkwoBq:focus{-webkit-text-decoration:none;text-decoration:none;background-color:var(--control-transparent-bgColor-hover,var(--color-action-list-item-default-hover-bg,rgba(208,215,222,0.32)));outline:0;-webkit-transition-duration:0.1s;transition-duration:0.1s;}/*!sc*/ .gkwoBq:focus-visible{outline:2px solid var(--bgColor-accent-emphasis,var(--color-accent-emphasis,#0969da));outline-offset:-2px;}/*!sc*/ .gkwoBq:active{border-color:var(--borderColor-muted,var(--color-border-muted,hsla(210,18%,87%,1)));}/*!sc*/ .gkwoBq[rel='prev'],.gkwoBq[rel='next']{color:var(--fgColor-accent,var(--color-accent-fg,#0969da));}/*!sc*/ .gkwoBq[aria-current],.gkwoBq[aria-current]:hover{color:var(--fgColor-onEmphasis,var(--color-fg-on-emphasis,#ffffff));background-color:var(--bgColor-accent-emphasis,var(--color-accent-emphasis,#0969da));border-color:transparent;}/*!sc*/ .gkwoBq[aria-current]:focus-visible{outline:2px solid var(--bgColor-accent-emphasis,var(--color-accent-emphasis,#0969da));outline-offset:-2px;box-shadow:inset 0 0 0 3px var(--fgColor-onEmphasis,var(--color-fg-on-emphasis,#ffffff));}/*!sc*/ .gkwoBq[aria-disabled],.gkwoBq[aria-disabled]:hover{margin:0 2px;}/*!sc*/ .gkwoBq[aria-disabled]:first-child,.gkwoBq[aria-disabled]:hover:first-child{margin-right:6px;}/*!sc*/ .gkwoBq[aria-disabled],.gkwoBq[aria-disabled]:hover,.gkwoBq[role='presentation'],.gkwoBq[role='presentation']:hover{color:var(--fgColor-disabled,var(--color-primer-fg-disabled,#8c959f));cursor:default;background-color:transparent;}/*!sc*/ @supports (-webkit-clip-path:polygon(50% 0,100% 50%,50% 100%)) or (clip-path:polygon(50% 0,100% 50%,50% 100%)){.gkwoBq[rel='prev']::before,.gkwoBq[rel='next']::after{display:inline-block;width:16px;height:16px;vertical-align:text-bottom;content:'';background-color:currentColor;}.gkwoBq[rel='prev']::before{margin-right:4px;-webkit-clip-path:polygon( 9.8px 12.8px,8.7px 12.8px,4.5px 8.5px,4.5px 7.5px,8.7px 3.2px,9.8px 4.3px,6.1px 8px,9.8px 11.7px,9.8px 12.8px );clip-path:polygon( 9.8px 12.8px,8.7px 12.8px,4.5px 8.5px,4.5px 7.5px,8.7px 3.2px,9.8px 4.3px,6.1px 8px,9.8px 11.7px,9.8px 12.8px );}.gkwoBq[rel='next']::after{margin-left:4px;-webkit-clip-path:polygon( 6.2px 3.2px,7.3px 3.2px,11.5px 7.5px,11.5px 8.5px,7.3px 12.8px,6.2px 11.7px,9.9px 8px,6.2px 4.3px,6.2px 3.2px );clip-path:polygon( 6.2px 3.2px,7.3px 3.2px,11.5px 7.5px,11.5px 8.5px,7.3px 12.8px,6.2px 11.7px,9.9px 8px,6.2px 4.3px,6.2px 3.2px );}}/*!sc*/ data-styled.g90[id="Pagination__Page-sc-cp45c9-0"]{content:"gkwoBq,"}/*!sc*/ .emsYTp{margin-top:20px;margin-bottom:15px;text-align:center;}/*!sc*/ @media ((max-width:calc(768px - 0.02px))){.emsYTp .TablePaginationSteps[data-hidden-viewport-ranges*='narrow'] > *:not(:first-child):not(:last-child){display:none;}.emsYTp .TablePaginationSteps[data-hidden-viewport-ranges*='narrow'] > *:first-child{margin-inline-end:0;}.emsYTp .TablePaginationSteps[data-hidden-viewport-ranges*='narrow'] > *:last-child{margin-inline-start:0;}}/*!sc*/ @media ((min-width:768px)){.emsYTp .TablePaginationSteps[data-hidden-viewport-ranges*='regular'] > *:not(:first-child):not(:last-child){display:none;}.emsYTp .TablePaginationSteps[data-hidden-viewport-ranges*='regular'] > *:first-child{margin-inline-end:0;}.emsYTp .TablePaginationSteps[data-hidden-viewport-ranges*='regular'] > *:last-child{margin-inline-start:0;}}/*!sc*/ @media ((min-width:1400px)){.emsYTp .TablePaginationSteps[data-hidden-viewport-ranges*='wide'] > *:not(:first-child):not(:last-child){display:none;}.emsYTp .TablePaginationSteps[data-hidden-viewport-ranges*='wide'] > *:first-child{margin-inline-end:0;}.emsYTp .TablePaginationSteps[data-hidden-viewport-ranges*='wide'] > *:last-child{margin-inline-start:0;}}/*!sc*/ data-styled.g91[id="Pagination__PaginationContainer-sc-cp45c9-1"]{content:"emsYTp,"}/*!sc*/ body[data-page-layout-dragging="true"]{cursor:col-resize;}/*!sc*/ body[data-page-layout-dragging="true"] *{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;}/*!sc*/ data-styled.g99[id="sc-global-gbKrvU1"]{content:"sc-global-gbKrvU1,"}/*!sc*/ .cTBzpE{background-size:200% 100%;-webkit-animation:eQRWuc 1.5s linear infinite;animation:eQRWuc 1.5s linear infinite;}/*!sc*/ data-styled.g128[id="Base__Animation-sc-3fa6bf52-0"]{content:"cTBzpE,"}/*!sc*/ @-webkit-keyframes eQRWuc{0%{opacity:1;}50%{opacity:0.6;}100%{opacity:1;}}/*!sc*/ @keyframes eQRWuc{0%{opacity:1;}50%{opacity:0.6;}100%{opacity:1;}}/*!sc*/ data-styled.g130[id="sc-keyframes-eQRWuc"]{content:"eQRWuc,"}/*!sc*/ </style><div class="Box-sc-g0xbh4-0 ldDVqi search-results-page"><style> .search-results-page .search-match em { font-style: normal; font-weight: 600; } .search-results-page .search-title .search-match em { font-style: normal; font-weight: 700; } </style><h1 class="sr-only">wikis Search Results · repo:wren-lang/wren language:Dart</h1><div style="--sticky-pane-height:100vh" class="Box-sc-g0xbh4-0 dKXtYX"><div class="Box-sc-g0xbh4-0 oDGAe"><div class="Box-sc-g0xbh4-0 kowOcT"><div class="Box-sc-g0xbh4-0 bZNSVu"><div class="Box-sc-g0xbh4-0 hPvFuC"></div><div style="--pane-width:296px" class="Box-sc-g0xbh4-0 fFSoPl"><h2 class="Text__StyledText-sc-17v1xeu-0 kkEZdX" id="search-filters-title">Filter by</h2><div data-testid="facets-pane" class="Box-sc-g0xbh4-0 ckDyFZ"><div class="Box-sc-g0xbh4-0 cjUUcf"><div class="Box-sc-g0xbh4-0 iyAVPo"><div data-testid="desktop-filters"><ul aria-labelledby="search-filters-title" data-testid="filter-groups" class="List__ListBox-sc-1x7olzq-0 gAwGiF"><li data-testid="kind-group" class="Box-sc-g0xbh4-0 jkXiWz"><ul class="Box-sc-g0xbh4-0 hTXDNh"><li class="Item__LiBox-sc-yeql7o-0 jSopPf"><a class="Box-sc-g0xbh4-0 cQdyWD prc-Link-Link-85e08" tabindex="0" aria-labelledby=":Rbpmljb:--label :Rbpmljb:--trailing-visual " id=":Rbpmljb:" href="https://github.com/search?q=repo%3Awren-lang%2Fwren++language%3ADart&type=code" data-testid="nav-item-code"><span class="Box-sc-g0xbh4-0 eDCWKW"><svg aria-hidden="true" focusable="false" class="Octicon-sc-9kayk9-0 dYLzPr" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path></svg></span><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 fFwzwX"><div class="Box-sc-g0xbh4-0 cAMcRf"><span id=":Rbpmljb:--label" class="Box-sc-g0xbh4-0 hczSex">Code</span><span id=":Rbpmljb:--trailing-visual" class="Box-sc-g0xbh4-0 iUmOWi"><span aria-hidden="true" data-scheme="secondary" data-testid="resolved-count-label" class="CounterLabel__StyledCounterLabel-sc-17qlupj-0 dkuXTY">...</span><span class="VisuallyHidden__StyledVisuallyHidden-sc-1rhpuyf-0 fhNCdb"> (<!-- -->...<!-- -->)</span><span class="sr-only">results</span></span></div></div></a></li><li class="Item__LiBox-sc-yeql7o-0 jSopPf"><a class="Box-sc-g0xbh4-0 cQdyWD prc-Link-Link-85e08" tabindex="0" aria-labelledby=":Rjpmljb:--label :Rjpmljb:--trailing-visual " id=":Rjpmljb:" href="https://github.com/search?q=repo%3Awren-lang%2Fwren++language%3ADart&type=issues" data-testid="nav-item-issues"><span class="Box-sc-g0xbh4-0 eDCWKW"><svg aria-hidden="true" focusable="false" class="Octicon-sc-9kayk9-0 dYLzPr" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Z"></path></svg></span><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 fFwzwX"><div class="Box-sc-g0xbh4-0 cAMcRf"><span id=":Rjpmljb:--label" class="Box-sc-g0xbh4-0 hczSex">Issues</span><span id=":Rjpmljb:--trailing-visual" class="Box-sc-g0xbh4-0 iUmOWi"><div width="100%" class="Box-sc-g0xbh4-0 Base__Animation-sc-3fa6bf52-0 gCwYuo cTBzpE"></div><span class="sr-only">results</span></span></div></div></a></li><li class="Item__LiBox-sc-yeql7o-0 jSopPf"><a class="Box-sc-g0xbh4-0 cQdyWD prc-Link-Link-85e08" tabindex="0" aria-labelledby=":Rrpmljb:--label :Rrpmljb:--trailing-visual " id=":Rrpmljb:" href="https://github.com/search?q=repo%3Awren-lang%2Fwren++language%3ADart&type=pullrequests" data-testid="nav-item-pullrequests"><span class="Box-sc-g0xbh4-0 eDCWKW"><svg aria-hidden="true" focusable="false" class="Octicon-sc-9kayk9-0 dYLzPr" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M1.5 3.25a2.25 2.25 0 1 1 3 2.122v5.256a2.251 2.251 0 1 1-1.5 0V5.372A2.25 2.25 0 0 1 1.5 3.25Zm5.677-.177L9.573.677A.25.25 0 0 1 10 .854V2.5h1A2.5 2.5 0 0 1 13.5 5v5.628a2.251 2.251 0 1 1-1.5 0V5a1 1 0 0 0-1-1h-1v1.646a.25.25 0 0 1-.427.177L7.177 3.427a.25.25 0 0 1 0-.354ZM3.75 2.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm0 9.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm8.25.75a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Z"></path></svg></span><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 fFwzwX"><div class="Box-sc-g0xbh4-0 cAMcRf"><span id=":Rrpmljb:--label" class="Box-sc-g0xbh4-0 hczSex">Pull requests</span><span id=":Rrpmljb:--trailing-visual" class="Box-sc-g0xbh4-0 iUmOWi"><div width="100%" class="Box-sc-g0xbh4-0 Base__Animation-sc-3fa6bf52-0 gCwYuo cTBzpE"></div><span class="sr-only">results</span></span></div></div></a></li><li class="Item__LiBox-sc-yeql7o-0 jSopPf"><a class="Box-sc-g0xbh4-0 cQdyWD prc-Link-Link-85e08" tabindex="0" aria-labelledby=":R13pmljb:--label :R13pmljb:--trailing-visual " id=":R13pmljb:" href="https://github.com/search?q=repo%3Awren-lang%2Fwren++language%3ADart&type=discussions" data-testid="nav-item-discussions"><span class="Box-sc-g0xbh4-0 eDCWKW"><svg aria-hidden="true" focusable="false" class="Octicon-sc-9kayk9-0 dYLzPr" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M1.75 1h8.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 10.25 10H7.061l-2.574 2.573A1.458 1.458 0 0 1 2 11.543V10h-.25A1.75 1.75 0 0 1 0 8.25v-5.5C0 1.784.784 1 1.75 1ZM1.5 2.75v5.5c0 .138.112.25.25.25h1a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h3.5a.25.25 0 0 0 .25-.25v-5.5a.25.25 0 0 0-.25-.25h-8.5a.25.25 0 0 0-.25.25Zm13 2a.25.25 0 0 0-.25-.25h-.5a.75.75 0 0 1 0-1.5h.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 14.25 12H14v1.543a1.458 1.458 0 0 1-2.487 1.03L9.22 12.28a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215l2.22 2.22v-2.19a.75.75 0 0 1 .75-.75h1a.25.25 0 0 0 .25-.25Z"></path></svg></span><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 fFwzwX"><div class="Box-sc-g0xbh4-0 cAMcRf"><span id=":R13pmljb:--label" class="Box-sc-g0xbh4-0 hczSex">Discussions</span><span id=":R13pmljb:--trailing-visual" class="Box-sc-g0xbh4-0 iUmOWi"><div width="100%" class="Box-sc-g0xbh4-0 Base__Animation-sc-3fa6bf52-0 gCwYuo cTBzpE"></div><span class="sr-only">results</span></span></div></div></a></li><li class="Item__LiBox-sc-yeql7o-0 jSopPf"><a class="Box-sc-g0xbh4-0 cQdyWD prc-Link-Link-85e08" tabindex="0" aria-labelledby=":R1bpmljb:--label :R1bpmljb:--trailing-visual " id=":R1bpmljb:" href="https://github.com/search?q=repo%3Awren-lang%2Fwren++language%3ADart&type=commits" data-testid="nav-item-commits"><span class="Box-sc-g0xbh4-0 eDCWKW"><svg aria-hidden="true" focusable="false" class="Octicon-sc-9kayk9-0 dYLzPr" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M11.93 8.5a4.002 4.002 0 0 1-7.86 0H.75a.75.75 0 0 1 0-1.5h3.32a4.002 4.002 0 0 1 7.86 0h3.32a.75.75 0 0 1 0 1.5Zm-1.43-.75a2.5 2.5 0 1 0-5 0 2.5 2.5 0 0 0 5 0Z"></path></svg></span><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 fFwzwX"><div class="Box-sc-g0xbh4-0 cAMcRf"><span id=":R1bpmljb:--label" class="Box-sc-g0xbh4-0 hczSex">Commits</span><span id=":R1bpmljb:--trailing-visual" class="Box-sc-g0xbh4-0 iUmOWi"><div width="100%" class="Box-sc-g0xbh4-0 Base__Animation-sc-3fa6bf52-0 gCwYuo cTBzpE"></div><span class="sr-only">results</span></span></div></div></a></li><li class="Item__LiBox-sc-yeql7o-0 jSopPf"><a class="Box-sc-g0xbh4-0 cQdyWD prc-Link-Link-85e08" tabindex="0" aria-labelledby=":R1jpmljb:--label :R1jpmljb:--trailing-visual " id=":R1jpmljb:" href="https://github.com/search?q=repo%3Awren-lang%2Fwren++language%3ADart&type=registrypackages" data-testid="nav-item-registrypackages"><span class="Box-sc-g0xbh4-0 eDCWKW"><svg aria-hidden="true" focusable="false" class="Octicon-sc-9kayk9-0 dYLzPr" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="m8.878.392 5.25 3.045c.54.314.872.89.872 1.514v6.098a1.75 1.75 0 0 1-.872 1.514l-5.25 3.045a1.75 1.75 0 0 1-1.756 0l-5.25-3.045A1.75 1.75 0 0 1 1 11.049V4.951c0-.624.332-1.201.872-1.514L7.122.392a1.75 1.75 0 0 1 1.756 0ZM7.875 1.69l-4.63 2.685L8 7.133l4.755-2.758-4.63-2.685a.248.248 0 0 0-.25 0ZM2.5 5.677v5.372c0 .09.047.171.125.216l4.625 2.683V8.432Zm6.25 8.271 4.625-2.683a.25.25 0 0 0 .125-.216V5.677L8.75 8.432Z"></path></svg></span><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 fFwzwX"><div class="Box-sc-g0xbh4-0 cAMcRf"><span id=":R1jpmljb:--label" class="Box-sc-g0xbh4-0 hczSex">Packages</span><span id=":R1jpmljb:--trailing-visual" class="Box-sc-g0xbh4-0 iUmOWi"><div width="100%" class="Box-sc-g0xbh4-0 Base__Animation-sc-3fa6bf52-0 gCwYuo cTBzpE"></div><span class="sr-only">results</span></span></div></div></a></li><li class="Item__LiBox-sc-yeql7o-0 dulCWx"><a class="Box-sc-g0xbh4-0 cQdyWD prc-Link-Link-85e08" tabindex="0" aria-labelledby=":R1rpmljb:--label :R1rpmljb:--trailing-visual " id=":R1rpmljb:" href="https://github.com/search?q=repo%3Awren-lang%2Fwren++language%3ADart&type=wikis" data-testid="nav-item-wikis"><span class="Box-sc-g0xbh4-0 eDCWKW"><svg aria-hidden="true" focusable="false" class="Octicon-sc-9kayk9-0 dYLzPr" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M0 1.75A.75.75 0 0 1 .75 1h4.253c1.227 0 2.317.59 3 1.501A3.743 3.743 0 0 1 11.006 1h4.245a.75.75 0 0 1 .75.75v10.5a.75.75 0 0 1-.75.75h-4.507a2.25 2.25 0 0 0-1.591.659l-.622.621a.75.75 0 0 1-1.06 0l-.622-.621A2.25 2.25 0 0 0 5.258 13H.75a.75.75 0 0 1-.75-.75Zm7.251 10.324.004-5.073-.002-2.253A2.25 2.25 0 0 0 5.003 2.5H1.5v9h3.757a3.75 3.75 0 0 1 1.994.574ZM8.755 4.75l-.004 7.322a3.752 3.752 0 0 1 1.992-.572H14.5v-9h-3.495a2.25 2.25 0 0 0-2.25 2.25Z"></path></svg></span><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 fFwzwX"><div class="Box-sc-g0xbh4-0 cAMcRf"><span id=":R1rpmljb:--label" class="Box-sc-g0xbh4-0 hkYzPb">Wikis</span><span id=":R1rpmljb:--trailing-visual" class="Box-sc-g0xbh4-0 iUmOWi"><div width="100%" class="Box-sc-g0xbh4-0 Base__Animation-sc-3fa6bf52-0 gCwYuo cTBzpE"></div><span class="sr-only">results</span></span></div></div></a></li></ul></li><li class="Box-sc-g0xbh4-0 jkXiWz"><div class="Box-sc-g0xbh4-0 dppRXl"><h3 class="Box-sc-g0xbh4-0 ActionListGroupHeading prc-Heading-Heading-6CmGO" id=":R1imljb:">Advanced</h3></div><ul aria-labelledby=":R1imljb:" class="Box-sc-g0xbh4-0 hTXDNh"><li class="Item__LiBox-sc-yeql7o-0 jSopPf"><button class="Box-sc-g0xbh4-0 cSXQL prc-Link-Link-85e08" tabindex="0" aria-labelledby=":Rvimljb:--label " id=":Rvimljb:"><span class="Box-sc-g0xbh4-0 eDKGXf"><svg aria-hidden="true" focusable="false" class="octicon octicon-plus-circle" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Zm7.25-3.25v2.5h2.5a.75.75 0 0 1 0 1.5h-2.5v2.5a.75.75 0 0 1-1.5 0v-2.5h-2.5a.75.75 0 0 1 0-1.5h2.5v-2.5a.75.75 0 0 1 1.5 0Z"></path></svg></span><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 fFwzwX"><span id=":Rvimljb:--label" class="Box-sc-g0xbh4-0 hczSex"><div class="Box-sc-g0xbh4-0 kYLlPM notranslate"><div class="Box-sc-g0xbh4-0 eHAxAL"><div title="User" class="Box-sc-g0xbh4-0 evKyJn"><!-- -->User<!-- --></div></div></div></span></div></button></li><li class="Item__LiBox-sc-yeql7o-0 jSopPf"><button class="Box-sc-g0xbh4-0 cSXQL prc-Link-Link-85e08" tabindex="0" aria-labelledby=":R1fimljb:--label " id=":R1fimljb:"><span class="Box-sc-g0xbh4-0 eDKGXf"><svg aria-hidden="true" focusable="false" class="octicon octicon-plus-circle" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Zm7.25-3.25v2.5h2.5a.75.75 0 0 1 0 1.5h-2.5v2.5a.75.75 0 0 1-1.5 0v-2.5h-2.5a.75.75 0 0 1 0-1.5h2.5v-2.5a.75.75 0 0 1 1.5 0Z"></path></svg></span><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 fFwzwX"><span id=":R1fimljb:--label" class="Box-sc-g0xbh4-0 hczSex"><div class="Box-sc-g0xbh4-0 kYLlPM notranslate"><div class="Box-sc-g0xbh4-0 eHAxAL"><div title="Organization" class="Box-sc-g0xbh4-0 evKyJn"><!-- -->Organization<!-- --></div></div></div></span></div></button></li><li class="Item__LiBox-sc-yeql7o-0 jSopPf"><button class="Box-sc-g0xbh4-0 cSXQL prc-Link-Link-85e08" tabindex="0" aria-labelledby=":R1vimljb:--label " id=":R1vimljb:"><span class="Box-sc-g0xbh4-0 eDKGXf"><svg aria-hidden="true" focusable="false" class="octicon octicon-plus-circle" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Zm7.25-3.25v2.5h2.5a.75.75 0 0 1 0 1.5h-2.5v2.5a.75.75 0 0 1-1.5 0v-2.5h-2.5a.75.75 0 0 1 0-1.5h2.5v-2.5a.75.75 0 0 1 1.5 0Z"></path></svg></span><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 fFwzwX"><span id=":R1vimljb:--label" class="Box-sc-g0xbh4-0 hczSex"><div class="Box-sc-g0xbh4-0 kYLlPM notranslate"><div class="Box-sc-g0xbh4-0 eHAxAL"><div title="Repository" class="Box-sc-g0xbh4-0 evKyJn"><!-- -->Repository<!-- --></div></div></div></span></div></button></li><li class="Item__LiBox-sc-yeql7o-0 jSopPf"><button class="Box-sc-g0xbh4-0 cSXQL prc-Link-Link-85e08" tabindex="0" aria-labelledby=":R2fimljb:--label " id=":R2fimljb:"><span class="Box-sc-g0xbh4-0 eDKGXf"><svg aria-hidden="true" focusable="false" class="octicon octicon-plus-circle" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Zm7.25-3.25v2.5h2.5a.75.75 0 0 1 0 1.5h-2.5v2.5a.75.75 0 0 1-1.5 0v-2.5h-2.5a.75.75 0 0 1 0-1.5h2.5v-2.5a.75.75 0 0 1 1.5 0Z"></path></svg></span><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 fFwzwX"><span id=":R2fimljb:--label" class="Box-sc-g0xbh4-0 hczSex"><div class="Box-sc-g0xbh4-0 kYLlPM notranslate"><div class="Box-sc-g0xbh4-0 eHAxAL"><div title="Last updated date" class="Box-sc-g0xbh4-0 evKyJn"><!-- -->Last updated date<!-- --></div></div></div></span></div></button></li></ul></li><li aria-hidden="true" data-component="ActionList.Divider" class="Box-sc-g0xbh4-0 kuJtKj"></li><li class="Item__LiBox-sc-yeql7o-0 jSopPf"><a class="Box-sc-g0xbh4-0 eDQWew prc-Link-Link-85e08" tabindex="0" aria-labelledby=":R4mljb:--label " id=":R4mljb:" href="https://github.com/search/advanced"><span class="Box-sc-g0xbh4-0 eDCWKW"><svg aria-hidden="true" focusable="false" class="octicon octicon-link-external" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path></svg></span><div data-component="ActionList.Item--DividerContainer" class="Box-sc-g0xbh4-0 fFwzwX"><span id=":R4mljb:--label" class="Box-sc-g0xbh4-0 hczSex">Advanced search</span></div></a></li></ul></div></div></div></div></div><div class="Box-sc-g0xbh4-0 bTBnTW"><div role="slider" aria-label="Draggable pane splitter" aria-valuemin="0" aria-valuemax="0" aria-valuenow="0" aria-valuetext="Pane width 0 pixels" tabindex="0" class="Box-sc-g0xbh4-0 bHLmSv"></div></div></div><div class="Box-sc-g0xbh4-0 dsxbXg"><div class="Box-sc-g0xbh4-0"></div><div class="Box-sc-g0xbh4-0 FxAyp"><div class="Box-sc-g0xbh4-0 hmwxFk"><div class="Box-sc-g0xbh4-0 insNpl"><div data-testid="search-sub-header"><div class="Box-sc-g0xbh4-0 iFuOYA"><span class="Text__StyledText-sc-17v1xeu-0 jFeNNe"><div class="Box-sc-g0xbh4-0 cMJYTt"><button type="button" data-testid="type-switcher" aria-label="Filter by type" aria-haspopup="true" aria-expanded="false" tabindex="0" class="types__StyledButton-sc-ws60qy-0 bwZtCh" data-loading="false" data-size="small" aria-describedby=":R2iqjb:-loading-announcement" id=":R2iqjb:"><span data-component="buttonContent" class="Box-sc-g0xbh4-0 gUkoLg"><span data-component="text">Wikis<span class="Box-sc-g0xbh4-0 kJTOpK"><span aria-hidden="true" data-scheme="secondary" data-testid="resolved-count-label" class="CounterLabel__StyledCounterLabel-sc-17qlupj-0 dkuXTY"><span class="Text__StyledText-sc-17v1xeu-0 hWqAbU">15</span></span><span class="VisuallyHidden__StyledVisuallyHidden-sc-1rhpuyf-0 fhNCdb"> (<span class="Text__StyledText-sc-17v1xeu-0 hWqAbU">15</span>)</span></span></span><span data-component="trailingVisual" class="Box-sc-g0xbh4-0 hzSPyu"><svg aria-hidden="true" focusable="false" class="octicon octicon-chevron-down" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></span></span></button></div><span class="Text__StyledText-sc-17v1xeu-0 dafPaR"><div class="Box-sc-g0xbh4-0 jJRiHe">15 results </div><span class="Text__StyledText-sc-17v1xeu-0 Gtsss"> (<!-- -->201<!-- --> <!-- -->ms<!-- -->)</span></span><h2 id="search-results-count" class="sr-only" data-react-autofocus="true" tabindex="-1">15 results </h2><span class="Text__StyledText-sc-17v1xeu-0 jAOgCe">in<span class="TokenBase__StyledTokenBase-sc-1ju9l7y-0 fDxtFk"><a href="/wren-lang/wren" class="_TokenTextContainer__TokenTextContainer-sc-6l9eri-0 geRphu">wren-lang/wren<span class="_VisuallyHidden__VisuallyHidden-sc-11jhm7a-0 brGdpi"> (press backspace or delete to remove)</span></a><span tabindex="-1" aria-hidden="true" class="_RemoveTokenButton__StyledTokenButton-sc-urhpr1-0 iWmJZP"><svg aria-hidden="true" focusable="false" class="octicon octicon-x" viewBox="0 0 12 12" width="15" height="15" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M2.22 2.22a.749.749 0 0 1 1.06 0L6 4.939 8.72 2.22a.749.749 0 1 1 1.06 1.06L7.061 6 9.78 8.72a.749.749 0 1 1-1.06 1.06L6 7.061 3.28 9.78a.749.749 0 1 1-1.06-1.06L4.939 6 2.22 3.28a.749.749 0 0 1 0-1.06Z"></path></svg></span></span></span></span><div class="Box-sc-g0xbh4-0 eSmpuO"><div class="Box-sc-g0xbh4-0 iHLMFk"><button type="button" data-testid="sort-button" aria-haspopup="true" aria-expanded="false" tabindex="0" class="types__StyledButton-sc-ws60qy-0 gYBfZb" data-loading="false" data-size="small" aria-describedby=":R3iqjb:-loading-announcement" id=":R3iqjb:"><span data-component="buttonContent" class="Box-sc-g0xbh4-0 gUkoLg"><span data-component="text"><span class="Text__StyledText-sc-17v1xeu-0 iNjpgy">Sort by: </span> <!-- -->Best match</span></span><span data-component="trailingAction" class="Box-sc-g0xbh4-0 hzSPyu"><svg aria-hidden="true" focusable="false" class="octicon octicon-triangle-down" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="m4.427 7.427 3.396 3.396a.25.25 0 0 0 .354 0l3.396-3.396A.25.25 0 0 0 11.396 7H4.604a.25.25 0 0 0-.177.427Z"></path></svg></span></button></div><div class="Box-sc-g0xbh4-0 hQzpZj"><button type="button" data-testid="filter-button" class="types__StyledButton-sc-ws60qy-0 gGdPyq" data-loading="false" data-size="small" aria-describedby=":Rniqjb:-loading-announcement"><span data-component="buttonContent" class="Box-sc-g0xbh4-0 gUkoLg"><span data-component="leadingVisual" class="Box-sc-g0xbh4-0 hzSPyu"><svg aria-hidden="true" focusable="false" class="octicon octicon-filter" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M.75 3h14.5a.75.75 0 0 1 0 1.5H.75a.75.75 0 0 1 0-1.5ZM3 7.75A.75.75 0 0 1 3.75 7h8.5a.75.75 0 0 1 0 1.5h-8.5A.75.75 0 0 1 3 7.75Zm3 4a.75.75 0 0 1 .75-.75h2.5a.75.75 0 0 1 0 1.5h-2.5a.75.75 0 0 1-.75-.75Z"></path></svg></span><span data-component="text">Filter</span></span></button></div><div class="Box-sc-g0xbh4-0 cMJYTt"><button data-component="IconButton" type="button" aria-label="Open column options" aria-haspopup="true" aria-expanded="false" tabindex="0" class="types__StyledButton-sc-ws60qy-0 gdVEVI prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="small" aria-describedby=":R9iqjb:-loading-announcement" id=":R9iqjb:"><svg aria-hidden="true" focusable="false" class="octicon octicon-kebab-horizontal" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M8 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3ZM1.5 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Zm13 0a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path></svg></button></div><div class="Box-sc-g0xbh4-0 dzrBTG"><button data-component="IconButton" type="button" aria-label="Open column options" aria-haspopup="true" aria-expanded="false" tabindex="0" class="types__StyledButton-sc-ws60qy-0 gdVEVI prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="small" aria-describedby=":Rdiqjb:-loading-announcement" id=":Rdiqjb:"><svg aria-hidden="true" focusable="false" class="octicon octicon-kebab-horizontal" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path d="M8 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3ZM1.5 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Zm13 0a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path></svg></button></div></div></div></div><div class="Box-sc-g0xbh4-0 iMVgHD"></div><div class="Box-sc-g0xbh4-0 eDcZlN"></div><div class="Box-sc-g0xbh4-0 JcuiZ"><div data-hpc="true" class="Box-sc-g0xbh4-0 iKysQH"><div data-testid="results-list" class="Box-sc-g0xbh4-0 gZKkEq"><div class="Box-sc-g0xbh4-0 flszRz"><h3 class="Box-sc-g0xbh4-0 cvnppv"><div class="Box-sc-g0xbh4-0 ksQFlo"><a class="Box-sc-g0xbh4-0 bjFvWy prc-Link-Link-85e08" href="/wren-lang/wren" data-hovercard-url="/wren-lang/wren/hovercard"><span>wren-lang/wren</span></a></div><div class="Box-sc-g0xbh4-0 MHoGG search-title"><a class="prc-Link-Link-85e08" href="/wren-lang/wren/wiki/Cookbook" target="_blank"><span class="Text__StyledText-sc-17v1xeu-0 cWNlgR search-match">Cookbook</span></a></div></h3><div class="Box-sc-g0xbh4-0 dcdlju"><span class="Text__StyledText-sc-17v1xeu-0 cWNlgR search-match">Have you created a small Wren script or wrote a tutorial using Wren? If so, we'd love to know. Edit this page and add it! 1,000,000 Fibers vs 1,000,000 Elixir/Erlang processes - a comparison MapToObject ...</span></div><ul class="Box-sc-g0xbh4-0 bZkODq"><li class="Box-sc-g0xbh4-0 iyzdzM"><span>Last updated <div title="Aug 21, 2021, 4:58 PM UTC" class="Truncate__StyledTruncate-sc-23o1d2-0 liVpTx"><span class="Text__StyledText-sc-17v1xeu-0 hWqAbU" title="Aug 21, 2021, 4:58 PM UTC">on Aug 21, 2021</span></div></span></li></ul></div><div class="Box-sc-g0xbh4-0 flszRz"><h3 class="Box-sc-g0xbh4-0 cvnppv"><div class="Box-sc-g0xbh4-0 ksQFlo"><a class="Box-sc-g0xbh4-0 bjFvWy prc-Link-Link-85e08" href="/wren-lang/wren" data-hovercard-url="/wren-lang/wren/hovercard"><span>wren-lang/wren</span></a></div><div class="Box-sc-g0xbh4-0 MHoGG search-title"><a class="prc-Link-Link-85e08" href="/wren-lang/wren/wiki/Home" target="_blank"><span class="Text__StyledText-sc-17v1xeu-0 cWNlgR search-match">Home</span></a></div></h3><div class="Box-sc-g0xbh4-0 dcdlju"><span class="Text__StyledText-sc-17v1xeu-0 cWNlgR search-match">The official docs for Wren itself are at wren.io . We use the wiki —and your help—to keep track of the wild and wooly world of Wren's external ecosystem. If someone has created something that builds ...</span></div><ul class="Box-sc-g0xbh4-0 bZkODq"><li class="Box-sc-g0xbh4-0 iyzdzM"><span>Last updated <div title="May 29, 2022, 10:49 PM UTC" class="Truncate__StyledTruncate-sc-23o1d2-0 liVpTx"><span class="Text__StyledText-sc-17v1xeu-0 hWqAbU" title="May 29, 2022, 10:49 PM UTC">on May 29, 2022</span></div></span></li></ul></div><div class="Box-sc-g0xbh4-0 flszRz"><h3 class="Box-sc-g0xbh4-0 cvnppv"><div class="Box-sc-g0xbh4-0 ksQFlo"><a class="Box-sc-g0xbh4-0 bjFvWy prc-Link-Link-85e08" href="/wren-lang/wren" data-hovercard-url="/wren-lang/wren/hovercard"><span>wren-lang/wren</span></a></div><div class="Box-sc-g0xbh4-0 MHoGG search-title"><a class="prc-Link-Link-85e08" href="/wren-lang/wren/wiki/%5BCookbook%5D-A-Supertype-Walker" target="_blank"><span class="Text__StyledText-sc-17v1xeu-0 cWNlgR search-match">[Cookbook] A Supertype Walker</span></a></div></h3><div class="Box-sc-g0xbh4-0 dcdlju"><span class="Text__StyledText-sc-17v1xeu-0 cWNlgR search-match">A small script from Ruby that walks up supertype till it ’s Object . Useful for validating inheritance as an alternative to Third is Test . class Test { } class Other is Test { } class Third is Other { ...</span></div><ul class="Box-sc-g0xbh4-0 bZkODq"><li class="Box-sc-g0xbh4-0 iyzdzM"><span>Last updated <div title="May 2, 2021, 10:17 PM UTC" class="Truncate__StyledTruncate-sc-23o1d2-0 liVpTx"><span class="Text__StyledText-sc-17v1xeu-0 hWqAbU" title="May 2, 2021, 10:17 PM UTC">on May 2, 2021</span></div></span></li></ul></div><div class="Box-sc-g0xbh4-0 flszRz"><h3 class="Box-sc-g0xbh4-0 cvnppv"><div class="Box-sc-g0xbh4-0 ksQFlo"><a class="Box-sc-g0xbh4-0 bjFvWy prc-Link-Link-85e08" href="/wren-lang/wren" data-hovercard-url="/wren-lang/wren/hovercard"><span>wren-lang/wren</span></a></div><div class="Box-sc-g0xbh4-0 MHoGG search-title"><a class="prc-Link-Link-85e08" href="/wren-lang/wren/wiki/%5BCookbook%5D-Adding-new-Keywords-and-Operators-to-Wren" target="_blank"><span class="Text__StyledText-sc-17v1xeu-0 cWNlgR search-match">[Cookbook] Adding new Keywords and Operators to Wren</span></a></div></h3><div class="Box-sc-g0xbh4-0 dcdlju"><span class="Text__StyledText-sc-17v1xeu-0 cWNlgR search-match">Wren is a hackable language, simple and slim hence you can easily extend it to suit your needs. For this simple process @CRFriedman wrote: Creating a token for it in the lexer: Add a TokenType in https://github.com/wren-lang/wren/blob/4d1d0d972efffd072f6a7baa5c37f312258c3955/src/vm/wren_compiler.c#L53-L138 ...</span></div><ul class="Box-sc-g0xbh4-0 bZkODq"><li class="Box-sc-g0xbh4-0 iyzdzM"><span>Last updated <div title="Apr 28, 2021, 9:12 PM UTC" class="Truncate__StyledTruncate-sc-23o1d2-0 liVpTx"><span class="Text__StyledText-sc-17v1xeu-0 hWqAbU" title="Apr 28, 2021, 9:12 PM UTC">on Apr 28, 2021</span></div></span></li></ul></div><div class="Box-sc-g0xbh4-0 flszRz"><h3 class="Box-sc-g0xbh4-0 cvnppv"><div class="Box-sc-g0xbh4-0 ksQFlo"><a class="Box-sc-g0xbh4-0 bjFvWy prc-Link-Link-85e08" href="/wren-lang/wren" data-hovercard-url="/wren-lang/wren/hovercard"><span>wren-lang/wren</span></a></div><div class="Box-sc-g0xbh4-0 MHoGG search-title"><a class="prc-Link-Link-85e08" href="/wren-lang/wren/wiki/%5BCookbook%5D-Interfaces" target="_blank"><span class="Text__StyledText-sc-17v1xeu-0 cWNlgR search-match">[Cookbook] Interfaces</span></a></div></h3><div class="Box-sc-g0xbh4-0 dcdlju"><span class="Text__StyledText-sc-17v1xeu-0 cWNlgR search-match">Interfaces are not supported natively, until then a small workaround can be used to validate if a class implements some methods. Using Attributes we can create a small method to validate an interface. ...</span></div><ul class="Box-sc-g0xbh4-0 bZkODq"><li class="Box-sc-g0xbh4-0 iyzdzM"><span>Last updated <div title="Sep 9, 2021, 4:25 AM UTC" class="Truncate__StyledTruncate-sc-23o1d2-0 liVpTx"><span class="Text__StyledText-sc-17v1xeu-0 hWqAbU" title="Sep 9, 2021, 4:25 AM UTC">on Sep 9, 2021</span></div></span></li></ul></div><div class="Box-sc-g0xbh4-0 flszRz"><h3 class="Box-sc-g0xbh4-0 cvnppv"><div class="Box-sc-g0xbh4-0 ksQFlo"><a class="Box-sc-g0xbh4-0 bjFvWy prc-Link-Link-85e08" href="/wren-lang/wren" data-hovercard-url="/wren-lang/wren/hovercard"><span>wren-lang/wren</span></a></div><div class="Box-sc-g0xbh4-0 MHoGG search-title"><a class="prc-Link-Link-85e08" href="/wren-lang/wren/wiki/%5BCookbook%5D-Make-Modules-Private" target="_blank"><span class="Text__StyledText-sc-17v1xeu-0 cWNlgR search-match">[Cookbook] Make Modules Private</span></a></div></h3><div class="Box-sc-g0xbh4-0 dcdlju"><span class="Text__StyledText-sc-17v1xeu-0 cWNlgR search-match">By default, wren does not make any variables, classes, or methods from other modules private. For example, say we have a module with some secret data in module "./private" : class SecretClass ...</span></div><ul class="Box-sc-g0xbh4-0 bZkODq"><li class="Box-sc-g0xbh4-0 iyzdzM"><span>Last updated <div title="May 3, 2021, 4:32 AM UTC" class="Truncate__StyledTruncate-sc-23o1d2-0 liVpTx"><span class="Text__StyledText-sc-17v1xeu-0 hWqAbU" title="May 3, 2021, 4:32 AM UTC">on May 3, 2021</span></div></span></li></ul></div><div class="Box-sc-g0xbh4-0 flszRz"><h3 class="Box-sc-g0xbh4-0 cvnppv"><div class="Box-sc-g0xbh4-0 ksQFlo"><a class="Box-sc-g0xbh4-0 bjFvWy prc-Link-Link-85e08" href="/wren-lang/wren" data-hovercard-url="/wren-lang/wren/hovercard"><span>wren-lang/wren</span></a></div><div class="Box-sc-g0xbh4-0 MHoGG search-title"><a class="prc-Link-Link-85e08" href="/wren-lang/wren/wiki/%5BCookbook%5D-MapToObject" target="_blank"><span class="Text__StyledText-sc-17v1xeu-0 cWNlgR search-match">[Cookbook] MapToObject</span></a></div></h3><div class="Box-sc-g0xbh4-0 dcdlju"><span class="Text__StyledText-sc-17v1xeu-0 cWNlgR search-match">This is a small trick to convert a Map to an Object using the Meta module. Was created by Michel Hermier in issue 912 . class MapToObject { static call ( map ) { __uniqueid = __uniqueid || 0 __uniqueid ...</span></div><ul class="Box-sc-g0xbh4-0 bZkODq"><li class="Box-sc-g0xbh4-0 iyzdzM"><span>Last updated <div title="Apr 16, 2021, 10:35 PM UTC" class="Truncate__StyledTruncate-sc-23o1d2-0 liVpTx"><span class="Text__StyledText-sc-17v1xeu-0 hWqAbU" title="Apr 16, 2021, 10:35 PM UTC">on Apr 16, 2021</span></div></span></li></ul></div><div class="Box-sc-g0xbh4-0 flszRz"><h3 class="Box-sc-g0xbh4-0 cvnppv"><div class="Box-sc-g0xbh4-0 ksQFlo"><a class="Box-sc-g0xbh4-0 bjFvWy prc-Link-Link-85e08" href="/wren-lang/wren" data-hovercard-url="/wren-lang/wren/hovercard"><span>wren-lang/wren</span></a></div><div class="Box-sc-g0xbh4-0 MHoGG search-title"><a class="prc-Link-Link-85e08" href="/wren-lang/wren/wiki/%5BCookbook%5D-Num-to-Hex" target="_blank"><span class="Text__StyledText-sc-17v1xeu-0 cWNlgR search-match">[Cookbook] Num to Hex</span></a></div></h3><div class="Box-sc-g0xbh4-0 dcdlju"><span class="Text__StyledText-sc-17v1xeu-0 cWNlgR search-match">You can convert a Number to an Hexadecimal representation using this simple snippet. Discord Wren Try var HEX = [ "0" , "1" , "2" , "3" , "4" , "5" ...</span></div><ul class="Box-sc-g0xbh4-0 bZkODq"><li class="Box-sc-g0xbh4-0 iyzdzM"><span>Last updated <div title="Aug 21, 2021, 4:58 PM UTC" class="Truncate__StyledTruncate-sc-23o1d2-0 liVpTx"><span class="Text__StyledText-sc-17v1xeu-0 hWqAbU" title="Aug 21, 2021, 4:58 PM UTC">on Aug 21, 2021</span></div></span></li></ul></div><div class="Box-sc-g0xbh4-0 flszRz"><h3 class="Box-sc-g0xbh4-0 cvnppv"><div class="Box-sc-g0xbh4-0 ksQFlo"><a class="Box-sc-g0xbh4-0 bjFvWy prc-Link-Link-85e08" href="/wren-lang/wren" data-hovercard-url="/wren-lang/wren/hovercard"><span>wren-lang/wren</span></a></div><div class="Box-sc-g0xbh4-0 MHoGG search-title"><a class="prc-Link-Link-85e08" href="/wren-lang/wren/wiki/%5BCookbook%5D-Shorthand-Fn.new" target="_blank"><span class="Text__StyledText-sc-17v1xeu-0 cWNlgR search-match">[Cookbook] Shorthand Fn.new</span></a></div></h3><div class="Box-sc-g0xbh4-0 dcdlju"><span class="Text__StyledText-sc-17v1xeu-0 cWNlgR search-match">Ruby shows how can create a shorthand version of Fn.new using methods inside classes. class Obj { fn ( f ) { f } } class Example is Obj { construct new ( ) { var ok = fn { | test | System . print ( test ...</span></div><ul class="Box-sc-g0xbh4-0 bZkODq"><li class="Box-sc-g0xbh4-0 iyzdzM"><span>Last updated <div title="Apr 29, 2021, 8:57 PM UTC" class="Truncate__StyledTruncate-sc-23o1d2-0 liVpTx"><span class="Text__StyledText-sc-17v1xeu-0 hWqAbU" title="Apr 29, 2021, 8:57 PM UTC">on Apr 29, 2021</span></div></span></li></ul></div><div class="Box-sc-g0xbh4-0 flszRz"><h3 class="Box-sc-g0xbh4-0 cvnppv"><div class="Box-sc-g0xbh4-0 ksQFlo"><a class="Box-sc-g0xbh4-0 bjFvWy prc-Link-Link-85e08" href="/wren-lang/wren" data-hovercard-url="/wren-lang/wren/hovercard"><span>wren-lang/wren</span></a></div><div class="Box-sc-g0xbh4-0 MHoGG search-title"><a class="prc-Link-Link-85e08" href="/wren-lang/wren/wiki/%5BCookbook%5D-Trim-String-Indent" target="_blank"><span class="Text__StyledText-sc-17v1xeu-0 cWNlgR search-match">[Cookbook] Trim String Indent</span></a></div></h3><div class="Box-sc-g0xbh4-0 dcdlju"><span class="Text__StyledText-sc-17v1xeu-0 cWNlgR search-match">Ruby shared how you can trim the indent from Strings. Although Raw strings have this capability by default. It would be useful for normal strings too. static indent ( string ) { var index = 0 var bytes ...</span></div><ul class="Box-sc-g0xbh4-0 bZkODq"><li class="Box-sc-g0xbh4-0 iyzdzM"><span>Last updated <div title="Apr 29, 2021, 9:10 PM UTC" class="Truncate__StyledTruncate-sc-23o1d2-0 liVpTx"><span class="Text__StyledText-sc-17v1xeu-0 hWqAbU" title="Apr 29, 2021, 9:10 PM UTC">on Apr 29, 2021</span></div></span></li></ul></div></div></div></div><div class="Box-sc-g0xbh4-0 gVrJoR"><div class="Box-sc-g0xbh4-0 bQdDaJ"><nav aria-label="Pagination" class="Pagination__PaginationContainer-sc-cp45c9-1 emsYTp"><div display="inline-block" class="Box-sc-g0xbh4-0 gEQYku TablePaginationSteps" data-hidden-viewport-ranges=""><a aria-disabled="true" role="link" class="Pagination__Page-sc-cp45c9-0 gkwoBq">Previous</a><a href="https://github.com/search?q=repo%3Awren-lang%2Fwren++language%3ADart&type=wikis&p=1" aria-label="Page 1" aria-current="page" class="Pagination__Page-sc-cp45c9-0 gkwoBq">1</a><a href="https://github.com/search?q=repo%3Awren-lang%2Fwren++language%3ADart&type=wikis&p=2" aria-label="Page 2..." class="Pagination__Page-sc-cp45c9-0 gkwoBq">2</a><a rel="next" href="https://github.com/search?q=repo%3Awren-lang%2Fwren++language%3ADart&type=wikis&p=2" aria-label="Next Page" class="Pagination__Page-sc-cp45c9-0 gkwoBq">Next</a></div></nav></div></div><div class="Box-sc-g0xbh4-0 jRFAHs"></div></div><div class="Box-sc-g0xbh4-0 hTYflC"></div></div></div><div class="Box-sc-g0xbh4-0"></div></div></div></div></div><div class="Popover js-hovercard-content position-absolute" style="display:none;outline:none"><div class="Popover-message Popover-message--bottom-left Popover-message--large Box color-shadow-large" style="width:360px" tabindex="0"></div></div></div><script type="application/json" id="__PRIMER_DATA_:R0:__">{"resolvedServerColorMode":"day"}</script></div> </react-app> </main> </div> <ghcc-consent id="ghcc" class="position-fixed bottom-0 left-0" style="z-index: 999999" data-initial-cookie-consent-allowed="" data-cookie-consent-required="false"></ghcc-consent> <div id="ajax-error-message" class="ajax-error-message flash flash-error" hidden> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert"> <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> <button type="button" class="flash-close js-ajax-error-dismiss" aria-label="Dismiss error"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x"> <path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path> </svg> </button> You can’t perform that action at this time. </div> <template id="site-details-dialog"> <details class="details-reset details-overlay details-overlay-dark lh-default color-fg-default hx_rsm" open> <summary role="button" aria-label="Close dialog"></summary> <details-dialog class="Box Box--overlay d-flex flex-column anim-fade-in fast hx_rsm-dialog hx_rsm-modal"> <button class="Box-btn-octicon m-0 btn-octicon position-absolute right-0 top-0" type="button" aria-label="Close dialog" data-close-dialog> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x"> <path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path> </svg> </button> <div class="octocat-spinner my-6 js-details-dialog-spinner"></div> </details-dialog> </details> </template> <div class="Popover js-hovercard-content position-absolute" style="display: none; outline: none;"> <div class="Popover-message Popover-message--bottom-left Popover-message--large Box color-shadow-large" style="width:360px;"> </div> </div> <template id="snippet-clipboard-copy-button"> <div class="zeroclipboard-container position-absolute right-0 top-0"> <clipboard-copy aria-label="Copy" class="ClipboardButton btn js-clipboard-copy m-2 p-0" data-copy-feedback="Copied!" data-tooltip-direction="w"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-copy js-clipboard-copy-icon m-2"> <path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path> </svg> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check js-clipboard-check-icon color-fg-success d-none m-2"> <path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path> </svg> </clipboard-copy> </div> </template> <template id="snippet-clipboard-copy-button-unpositioned"> <div class="zeroclipboard-container"> <clipboard-copy aria-label="Copy" class="ClipboardButton btn btn-invisible js-clipboard-copy m-2 p-0 d-flex flex-justify-center flex-items-center" data-copy-feedback="Copied!" data-tooltip-direction="w"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-copy js-clipboard-copy-icon"> <path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path> </svg> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check js-clipboard-check-icon color-fg-success d-none"> <path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path> </svg> </clipboard-copy> </div> </template> </div> <div id="js-global-screen-reader-notice" class="sr-only mt-n1" aria-live="polite" aria-atomic="true" ></div> <div id="js-global-screen-reader-notice-assertive" class="sr-only mt-n1" aria-live="assertive" aria-atomic="true"></div> </body> </html>