A place to cache linked articles (think custom and personal wayback machine)
Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

index.html 23KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243
  1. <!doctype html><!-- This is a valid HTML5 document. -->
  2. <!-- Screen readers, SEO, extensions and so on. -->
  3. <html lang="fr">
  4. <!-- Has to be within the first 1024 bytes, hence before the <title>
  5. See: https://www.w3.org/TR/2012/CR-html5-20121217/document-metadata.html#charset -->
  6. <meta charset="utf-8">
  7. <!-- Why no `X-UA-Compatible` meta: https://stackoverflow.com/a/6771584 -->
  8. <!-- The viewport meta is quite crowded and we are responsible for that.
  9. See: https://codepen.io/tigt/post/meta-viewport-for-2015 -->
  10. <meta name="viewport" content="width=device-width,initial-scale=1">
  11. <!-- Required to make a valid HTML5 document. -->
  12. <title>Un pédophile est un client Apple comme les autres. (archive) — David Larlet</title>
  13. <meta name="description" content="Publication mise en cache pour en conserver une trace.">
  14. <!-- That good ol' feed, subscribe :). -->
  15. <link rel="alternate" type="application/atom+xml" title="Feed" href="/david/log/">
  16. <!-- Generated from https://realfavicongenerator.net/ such a mess. -->
  17. <link rel="apple-touch-icon" sizes="180x180" href="/static/david/icons2/apple-touch-icon.png">
  18. <link rel="icon" type="image/png" sizes="32x32" href="/static/david/icons2/favicon-32x32.png">
  19. <link rel="icon" type="image/png" sizes="16x16" href="/static/david/icons2/favicon-16x16.png">
  20. <link rel="manifest" href="/static/david/icons2/site.webmanifest">
  21. <link rel="mask-icon" href="/static/david/icons2/safari-pinned-tab.svg" color="#07486c">
  22. <link rel="shortcut icon" href="/static/david/icons2/favicon.ico">
  23. <meta name="msapplication-TileColor" content="#f0f0ea">
  24. <meta name="msapplication-config" content="/static/david/icons2/browserconfig.xml">
  25. <meta name="theme-color" content="#f0f0ea">
  26. <!-- Documented, feel free to shoot an email. -->
  27. <link rel="stylesheet" href="/static/david/css/style_2020-06-19.css">
  28. <!-- See https://www.zachleat.com/web/comprehensive-webfonts/ for the trade-off. -->
  29. <link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_regular.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin>
  30. <link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_bold.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin>
  31. <link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_italic.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin>
  32. <link rel="preload" href="/static/david/css/fonts/triplicate_t3_regular.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin>
  33. <link rel="preload" href="/static/david/css/fonts/triplicate_t3_bold.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin>
  34. <link rel="preload" href="/static/david/css/fonts/triplicate_t3_italic.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin>
  35. <script type="text/javascript">
  36. function toggleTheme(themeName) {
  37. document.documentElement.classList.toggle(
  38. 'forced-dark',
  39. themeName === 'dark'
  40. )
  41. document.documentElement.classList.toggle(
  42. 'forced-light',
  43. themeName === 'light'
  44. )
  45. }
  46. const selectedTheme = localStorage.getItem('theme')
  47. if (selectedTheme !== 'undefined') {
  48. toggleTheme(selectedTheme)
  49. }
  50. </script>
  51. <meta name="robots" content="noindex, nofollow">
  52. <meta content="origin-when-cross-origin" name="referrer">
  53. <!-- Canonical URL for SEO purposes -->
  54. <link rel="canonical" href="https://www.affordance.info/mon_weblog/2020/01/pedophile-client-apple.html">
  55. <body class="remarkdown h1-underline h2-underline h3-underline hr-center ul-star pre-tick">
  56. <article>
  57. <header>
  58. <h1>Un pédophile est un client Apple comme les autres.</h1>
  59. </header>
  60. <nav>
  61. <p class="center">
  62. <a href="/david/" title="Aller à l’accueil">🏠</a> •
  63. <a href="https://www.affordance.info/mon_weblog/2020/01/pedophile-client-apple.html" title="Lien vers le contenu original">Source originale</a>
  64. </p>
  65. </nav>
  66. <hr>
  67. <main>
  68. <p>Si Gabriel Matzneff ne sait plus où donner à lire le récit de ses ébats pédophiles suite à l'annonce du retrait de ses livres par deux de ses éditeurs historiques, il lui reste encore la possibilité de se créer un compte Apple. Je vous explique. </p>
  69. <p>Apple, par la voix de Jane Horvath, vice-présidente de la société chargée de la confidentialité, <a href="https://www.01net.com/actualites/apple-confirme-acceder-aux-photos-de-ses-clients-pour-lutter-contre-la-pedopornographie-1837691.html" rel="noopener" target="_blank">vient de déclarer au CES</a> (Consumer Electronic Show) <a href="https://www.telegraph.co.uk/technology/2020/01/08/apple-scans-icloud-photos-check-child-abuse/" rel="noopener" target="_blank">qu'ils allaient désormais "scanner" les comptes iCloud de tous les utilisateurs pour y détecter d'éventuelles photos pédophiles</a>. Et que s'ils en trouvaient, des photos pédophiles, ils fermeraient lesdits comptes iCloud. Mais ne communiqueraient pas ces comptes à la justice ou à la police. </p>
  70. <p>Ce qui pose plusieurs problèmes. Que je vais essayer de traiter ici. </p>
  71. <h2>L'avis privé.</h2>
  72. <p>Apple a toujours eu pour <em>credo </em>marchand et comme <em>confiteor</em> client une doctrine d'inviolabilité totale de la "vie privée" de ses utilisateurs au travers des dispositifs, services et terminaux que la firme commercialise. </p>
  73. <p>Au prix, ces dernières années, de saignants débats entre les tenants d'une vision très rigoriste de la vie privée et des données personnelles (tout ce qui relève de la vie privée est privé tout le temps et pour tout le monde y compris pour la justice et ce qu'elles que soient les circonstances), et d'autres - dont moi - défendant l'idée qu'il ne doit pas y avoir (en démocratie) d'espace irrémédiablement imperquisitionnable, <em>a fortiori</em> si c'est une société privée qui gère un service permettant de rester hors de portée du droit (et d'une action en justice) au nom d'intérêts marchands. </p>
  74. <p>Je vous avais expliqué tout cela dans un article il y a deux ans, dont le titre était "<a href="https://affordance.typepad.com/mon_weblog/2016/02/iphone-le-degre-zero-de-la-privacy.html" rel="noopener" target="_blank">un terroriste est un client Apple comme les autres</a>" et qui avait pour sujet le refus d'Apple d'accorder au FBI l'accès aux données d'un iPhone utilisé dans le cadre d'une fusillade terroriste. Pour vous éviter d'aller le relire intégralement, je recopie juste la conclusion : </p>
  75. <blockquote>
  76. <p>"(...) un terroriste est un client Apple comme un autre. Et bénéficie à ce titre des mêmes "droits", du même "niveau de protection" qu'un autre client d'Apple pour ce qui concerne les données stockées dans son iPhone. Remettre en question ces droits pour un individu, même convaincu d'actes de terrorisme, reviendrait à remettre en question ces droits pour l'ensemble des possesseurs d'iPhone. Tel est en tout cas l'argumentaire de Tim Cook. (...)</p>
  77. <p>Nous avons tous une vie privée, et nous avons tous le droit à une vie privée. Pour autant, dans le cadre d'un état de droit, et dans le cadre d'une procédure judiciaire, si nous sommes accusés ou reconnus coupables d'un acte délictueux, les éléments qui composent et documentent notre vie privée restent accessible via un mandat de perquisition (ordonné par un juge). La question que pose le cryptage par défaut incassable des iPhones et la <a href="https://www.apple.com/customer-letter/" rel="noopener" target="_blank">lettre de Tim Cook aux clients d'Apple</a> est celle de savoir si l'espace - physique ou numérique - alloué aux traces documentaires de notre vie privée doit être imperquisitionnable. S'il doit résister à toute forme de perquisition.</p>
  78. <p>Si l'on se contente d'envisager les terroristes (ou les pédophiles ou les dealers de drogue ou les auteurs de crimes et délits en tout genre) comme autant de "clients" ayant acheté un appareil offrant des garanties raisonnables de préservation de leur vie privée, alors Tim Cook a raison : la demande du FBI est inacceptable. Mais si l'on considère que notre vie privée doit être un espace imperquisitionnable quelles que soient les circonstances et y compris dans le cadre d'une action judiciaire légitime effectuée dans un état de droit, alors c'est la posture de Tim Cook qui devient inacceptable."</p>
  79. </blockquote>
  80. <h2>Mais revenons aux pédophiles.</h2>
  81. <p>Pendant des années, Apple expliquait qu'il ne "regardait" jamais et en rien le contenu déposé, stocké et hébergé sur un compte iCloud. Jamais. Même en sachant qu'il pouvait effectivement y avoir des contenus illégaux. </p>
  82. <p>Et puis donc changement brutal de doctrine : voici que <a href="https://www.telegraph.co.uk/technology/2020/01/08/apple-scans-icloud-photos-check-child-abuse/" rel="noopener" target="_blank">désormais Apple annonce vérifier si les comptes iCloud ne comportent pas de photos ou de vidéos pédo-pornographiques</a>. Mais il ne le fait que sur la base de la <a href="https://www.zdnet.fr/actualites/microsoft-photodna-identifier-les-contenus-illegaux-sans-meme-les-regarder-39822582.htm" rel="noopener" target="_blank">technologie PhotoDNA</a>, développée et mise gratuitement à disposition par Microsoft, laquelle technologie permet de <a href="https://www.zdnet.fr/actualites/microsoft-photodna-identifier-les-contenus-illegaux-sans-meme-les-regarder-39822582.htm" rel="noopener" target="_blank">comparer des photos à des bases de données d'images pédophiles</a>, y compris si les photos sont retouchées ou recadrées. Cette technologie ne permet donc pas de détecter des contenus pédopornographiques inédits mais uniquement déjà existants. L'autre moyen de détecter des contenus pédopornographiques c'est de les faire visionner par des modérateurs. Avec tous les risques psychiques que l'on sait. </p>
  83. <p>Donc Apple va déléguer à une technologie le fait d'identifier le partage de photos pédophiles déjà "identifiées" et s'il en trouve il "désactivera" ces comptes. Mais ne les signalera pas à la police ou à la justice. </p>
  84. <p>En fait la <a href="https://www.apple.com/legal/privacy/en-ww/" rel="noopener" target="_blank">"Privacy Policy" d'Apple</a> a été modifiée <a href="https://www.macobserver.com/analysis/apple-scans-uploaded-content/" rel="noopener" target="_blank">comme suit en Mai 2019</a> : </p>
  85. <blockquote>
  86. <p><em>"We may also use your personal information for account and network security purposes, including in order to protect our services for the benefit of all our users, and pre-screening or scanning uploaded content for potentially illegal content, including child sexual exploitation material."</em></p>
  87. </blockquote>
  88. <p>Vous noterez que la détection de "<em>contenus potentiellement illégaux incluant des documents en lien avec l'exploitation sexuelle des enfants</em>" n'a pour objet que de protéger "<em>nos services</em>" pour le bénéfice "<em>de nos utilisateurs</em>". Il est donc explicite qu'Apple n'envisage pas de traiter ce problème comme relevant d'actes illégaux relevant de la justice mais simplement comme une manière de maintenir "propre" son écosystème de services. </p>
  89. <h2>Surveiller sans voir et décider sans juger.</h2>
  90. <p>On pourrait disserter pendant des heures sur le "choix" d'Apple de ne pas jouer le rôle d'un auxiliaire de justice dans le cas de d'éléments factuels (je n'ai pas dit d'élements "de preuve") relevant de la pédo-criminalité. La très récente affaire Matzneff est à ce titre pleine d'enseignements sur l'arbitraire circonstanciel de toute moralité dès lors qu'elle vise à s'inscrire dans un horizon social du tolérable ou du haïssable.</p>
  91. <p>La distinction entre le statut d'éditeur et celui d'hébergeur est d'ailleurs consubstantielle de l'histoire du web contemporain. Histoire dans laquelle les actuels hébergeurs que sont les plateformes (moteurs et réseaux sociaux) sont tenus à une obligation de retrait dans des délais "raisonnables" dès lors que des contenus leurs sont signalés comme contrevenant à la loi. </p>
  92. <p>Mais le fait est qu'il existe, aussi, en droit (français) une "<a href="https://www.legavox.fr/blog/maitre-haddad-sabine/obligation-signalement-devoir-professionnel-citoyen-25518.htm" rel="noopener" target="_blank">obligation de signalement</a>" s'adressant à tout particulier ou professionnel et qui fonctionne comme une exception au secret professionnel : </p>
  93. <blockquote>
  94. <p>"<em>Le fait, pour quiconque ayant connaissance de privations, de mauvais traitements ou d'agressions ou atteintes sexuelles infligés à un mineur ou à une personne qui n'est pas en mesure de se protéger en raison de son âge, d'une maladie, d'une infirmité, d'une déficience physique ou psychique ou d'un état de grossesse, de ne pas en informer les autorités judiciaires ou administratives ou de continuer à ne pas informer ces autorités tant que ces infractions n'ont pas cessé est puni de trois ans d'emprisonnement et de 45 000 euros d'amende."</em></p>
  95. </blockquote>
  96. <p>Comme ces sujets sont plus qu'épineux, il importe d'être précis. Le fait "<em>d'avoir connaissances de privations et de mauvais traitements ou d'agressions ou atteintes sexuelles infligés à un mineur</em>" n'équivaut pas, en droit, au fait d'avoir connaissance de la consultation ou du stockage d'images de privations et de mauvais traitements ou d'agressions sexuelles infligés à un mineur. </p>
  97. <p>Pour autant, la décision d'Apple de simplement désactiver ("<em>disabled</em>") les comptes hébergeant du matériel pédo-pornographique sans en référer aux autorités judiciaires est un nouvel espace intersticiel qui complexifie et trouble encore davantage la réalité déjà passablement confuse de l'inscription d'un comportement "numérique" dans une sphère publique, privée, ou intime. </p>
  98. <h2>Le paradoxe de la fronce.</h2>
  99. <p>Nous vivons aujourd'hui dans une société d'hypermnésie, d'hyperscopie, et d'hyperacousie. Nos habitus, nos "morales" individuelles et nos "endroits" (<a href="http://www.marcjahjah.net/2966-portraits-despaces-2-la-querencia" rel="noopener" target="_blank">nos "Querencia" comme le dit si justement Marc Jahjah</a>) sont surveillés, entendus et enregistrés, le plus souvent avec notre consentement paresseux. De la même manière que sont surveillés, entendus et enregistrés les comportements, les habitus, les morales et les endroits où nous faisons ensemble et où nous sommes société.</p>
  100. <p>Une société dans laquelle, à la fois des états, des sociétés privés monopolistiques ou oligopolistiques, et des entités collaborationnistes réunissant les deux, disposent donc de la capacité à se souvenir de tout (hypermnésie), comme de celle de tout voir (hyperscopie) et de tout entendre (hyperacousie). </p>
  101. <p>Ces trois sur-capacités adressent à la fois :</p>
  102. <ul>
  103. <li>nos comportements et nos engagements sociaux dans l'espace public (d'où l'enjeu des débats sur la vidéo-surveillance qui dérivent aujourd'hui encore plus dangereusement vers la surveillance / reconnaissance faciale),</li>
  104. <li>nos comportements et nos engagements privés dans des espaces non-publics,</li>
  105. <li>mais aussi et littéralement nos biorythmes intimes (phases de sommeil, pulsations cardiaques, taux de sucre, etc ... par l'entremise des bracelets connectés et/ou autres applications de "santé" connectée). </li>
  106. </ul>
  107. <p>Notre corporéité même, dans son sens le plus littéralement biologique, est pour ces sociétés devenu une sorte de tiers-lieu où s'exerce le pouvoir de scrutation que nous leur accordons.</p>
  108. <p>Face à cela, face à l'ensemble de ces régimes d'hyper-contrôle et à leurs modalités, se développent des dispositifs imperscrutables et inauditables en droit (<a href="https://affordance.typepad.com/mon_weblog/2016/02/iphone-le-degre-zero-de-la-privacy.html" rel="noopener" target="_blank">nos téléphones, en tout cas dans la doctrine Apple</a>), un développement qui n'est pas littéralement para-doxal (= qui ne va pas "contre" les discours de légitimation des régimes de contrôle) mais qui en est tout au contraire le parallèle, qui en accompagne le déploiement autant que le dévoiement.</p>
  109. <p>La question est donc celle du pli, de la fronce. Celle d'une théorie topologique des espaces numériques de publication et d'archivage, dans le sens où la topologie est cette science dans laquelle "<em>une tasse à café est identique à une chambre à air, car toutes deux sont des surfaces avec un trou.</em>" Ce que je veux dire par là est que l'on réfléchit le plus souvent aux questions d'espace public et de vie privée en termes partitionnables binaires, comme si toute forme de vie publique était exclusive de toute expression appartenant à la vie privée, et réciproquement bien sûr. Et qu'à mon avis on a tort de procéder ainsi.</p>
  110. <p>Il ne s'agit pas aujourd'hui de partitionner, de scinder, d'isoler des espaces privés, publics ou intimes qui seraient à chaque fois intrinsèquement exclusifs les uns des autres, mais de penser et de comprendre comment des forces (économiques, sociales, politiques) contraignent et modèlent chacun de ces espaces dans des temporalités propres et des surtout, au regard d'usages circonstanciels dédiés.</p>
  111. <p><a class="asset-img-link" href="https://www.affordance.info/.a/6a00d8341c622e53ef0240a502220b200b-pi"><img alt="Image053" class="asset asset-image at-xid-6a00d8341c622e53ef0240a502220b200b img-responsive" src="https://www.affordance.info/.a/6a00d8341c622e53ef0240a502220b200b-500wi" title="Image053"/></a><em>Image de la "fronde", l'une des 7 catastrophes élémentaires dans la <a href="https://fr.wikipedia.org/wiki/Th%C3%A9orie_des_catastrophes" rel="noopener" target="_blank">théorie éponyme de René Thom</a>.</em></p>
  112. <p>Dans l'image ci-dessus par exemple, si l'on considère que l'endroit du plan équivaut à la vie publique et l'envers à la vie privée, la fronde a capacité de masquer, de changer, de voiler, de dévoiler ou de travestir temporairement un espace en un autre ; de masquer (pour certains) ce qui était auparavant visible (pour d'autres), et réciproquement.</p>
  113. <p>La décision d'Apple concernant l'examen des photos à caractère pédophile, cette volonté (nouvelle) et cette capacité de regarder sans voir, d'inspecter sans révéler, est une nouvelle fronce dans le régime global de nos publications et de nos vies numériques. Elle inaugure une nouvelle temporalité où ce qui était hier imperscrutable (le contenu des comptes iCloud) devient scruté mais en dehors de tout régime de dévoilement (pas de communication à la justice). Une scrutation qui ne donne lieu à aucun "scrutin" dans le sens où on se contente de "désactiver" (<em>disabled</em>) plutôt que de délibérer. </p>
  114. <p>Apple sait sans voir que des comptes contiennent des photos pédopornographiques. Mais Apple ne voit pas en quoi ce savoir (ce "ça-voir") devrait être su de la justice, c'est à dire être proposé à la vue de la justice. Parce que qu'Apple, finalement, refuse de savoir / ça-voir.</p>
  115. <p>Me revient en mémoire cette phrase : "<a href="https://www.affordance.info/mon_weblog/2019/01/si-cest-pourri-tes-pas-le-bon-produit.html" rel="noopener" target="_blank">ce que nous tolérons est ce que nous sommes vraiment.</a>" La bonne question à adresser à Apple, celle qu'il faut aussi nous poser collectivement en tant qu'utilisateurs ou observateurs de ces pratiques, c'est de savoir de quelle forme de tolérance relève le fait de "simplement" fermer des comptes que l'on sait contenir du matériel pédopornographique sans en référer à la justice dans le cadre d'un état de droit. </p>
  116. <p>On utilise souvent (du moins le faisait-on du temps où Steve Jobs régnait en maître sur la firme), la métaphore religieuse pour caractériser le lien si particulier qui unissait la marque à ses utilisateurs. Si Apple est une église, alors elle marche dans les pas de l'église catholique qui elle aussi, voyait mais ne voulait pas savoir, et qui surtout, refuser de laisser la justice faire son travail, en ne lui donnant pas à voir la réalité des faits. </p>
  117. <p>Si nous ne nous posons pas maintenant ces questions, nous nous réveillerons demain avec des centaines d'affaires Matzneff et serons effarés de voir qu'ils étaient là, sous nos yeux, et que nous n'avons rien fait, rien dit, que nous avons regardé sans voir, mais pas sans ça-voir. </p>
  118. </main>
  119. </article>
  120. <hr>
  121. <footer>
  122. <p>
  123. <a href="/david/" title="Aller à l’accueil">🏠</a> •
  124. <a href="/david/log/" title="Accès au flux RSS">🤖</a> •
  125. <a href="http://larlet.com" title="Go to my English profile" data-instant>🇨🇦</a> •
  126. <a href="mailto:david%40larlet.fr" title="Envoyer un courriel">📮</a> •
  127. <abbr title="Hébergeur : Alwaysdata, 62 rue Tiquetonne 75002 Paris, +33184162340">🧚</abbr>
  128. </p>
  129. <template id="theme-selector">
  130. <form>
  131. <fieldset>
  132. <legend>Thème</legend>
  133. <label>
  134. <input type="radio" value="auto" name="chosen-color-scheme" checked> Auto
  135. </label>
  136. <label>
  137. <input type="radio" value="dark" name="chosen-color-scheme"> Foncé
  138. </label>
  139. <label>
  140. <input type="radio" value="light" name="chosen-color-scheme"> Clair
  141. </label>
  142. </fieldset>
  143. </form>
  144. </template>
  145. </footer>
  146. <script type="text/javascript">
  147. function loadThemeForm(templateName) {
  148. const themeSelectorTemplate = document.querySelector(templateName)
  149. const form = themeSelectorTemplate.content.firstElementChild
  150. themeSelectorTemplate.replaceWith(form)
  151. form.addEventListener('change', (e) => {
  152. const chosenColorScheme = e.target.value
  153. localStorage.setItem('theme', chosenColorScheme)
  154. toggleTheme(chosenColorScheme)
  155. })
  156. const selectedTheme = localStorage.getItem('theme')
  157. if (selectedTheme && selectedTheme !== 'undefined') {
  158. form.querySelector(`[value="${selectedTheme}"]`).checked = true
  159. }
  160. }
  161. const prefersColorSchemeDark = '(prefers-color-scheme: dark)'
  162. window.addEventListener('load', () => {
  163. let hasDarkRules = false
  164. for (const styleSheet of Array.from(document.styleSheets)) {
  165. let mediaRules = []
  166. for (const cssRule of styleSheet.cssRules) {
  167. if (cssRule.type !== CSSRule.MEDIA_RULE) {
  168. continue
  169. }
  170. // WARNING: Safari does not have/supports `conditionText`.
  171. if (cssRule.conditionText) {
  172. if (cssRule.conditionText !== prefersColorSchemeDark) {
  173. continue
  174. }
  175. } else {
  176. if (cssRule.cssText.startsWith(prefersColorSchemeDark)) {
  177. continue
  178. }
  179. }
  180. mediaRules = mediaRules.concat(Array.from(cssRule.cssRules))
  181. }
  182. // WARNING: do not try to insert a Rule to a styleSheet you are
  183. // currently iterating on, otherwise the browser will be stuck
  184. // in a infinite loop…
  185. for (const mediaRule of mediaRules) {
  186. styleSheet.insertRule(mediaRule.cssText)
  187. hasDarkRules = true
  188. }
  189. }
  190. if (hasDarkRules) {
  191. loadThemeForm('#theme-selector')
  192. }
  193. })
  194. </script>
  195. </body>
  196. </html>