1<!DOCTYPE html> 2<!-- Created with https://packager.turbowarp.org/ --> 3<html> 4<head> 5 <meta charset="utf-8"> 6 <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"> 7 <!-- We only include this to explicitly loosen the CSP of various packager environments. It does not provide any security. --> 8 <meta http-equiv="Content-Security-Policy" content="default-src * 'self' 'unsafe-inline' 'unsafe-eval' data: blob:"> 9 <title>SuperPakkunLand+World</title> 10 <style> 11 body { 12 color: #ffffff; 13 font-family: sans-serif; 14 overflow: hidden; 15 margin: 0; 16 padding: 0; 17 } 18 :root, body.is-fullscreen { 19 background-color: #000000; 20 } 21 [hidden] { 22 display: none !important; 23 } 24 h1 { 25 font-weight: normal; 26 } 27 a { 28 color: inherit; 29 text-decoration: underline; 30 cursor: pointer; 31 } 32 33 #app, #loading, #error, #launch { 34 position: absolute; 35 top: 0; 36 left: 0; 37 width: 100%; 38 height: 100%; 39 } 40 .screen { 41 display: flex; 42 flex-direction: column; 43 align-items: center; 44 justify-content: center; 45 text-align: center; 46 cursor: default; 47 user-select: none; 48 -webkit-user-select: none; 49 background-color: #000000; 50 } 51 #launch { 52 background-color: rgba(0, 0, 0, 0.7); 53 cursor: pointer; 54 } 55 .green-flag { 56 width: 80px; 57 height: 80px; 58 padding: 16px; 59 border-radius: 100%; 60 background: rgba(255, 255, 255, 0.75); 61 border: 3px solid hsla(0, 100%, 100%, 1); 62 display: flex; 63 justify-content: center; 64 align-items: center; 65 box-sizing: border-box; 66 } 67 #loading { 68 69 } 70 .progress-bar-outer { 71 border: 1px solid currentColor; 72 height: 10px; 73 width: 200px; 74 max-width: 200px; 75 } 76 .progress-bar-inner { 77 height: 100%; 78 width: 0; 79 background-color: currentColor; 80 } 81 .loading-text, noscript { 82 font-weight: normal; 83 font-size: 36px; 84 margin: 0 0 16px; 85 } 86 .loading-image { 87 margin: 0 0 16px; 88 } 89 #error-message, #error-stack { 90 font-family: monospace; 91 max-width: 600px; 92 white-space: pre-wrap; 93 user-select: text; 94 -webkit-user-select: text; 95 } 96 #error-stack { 97 text-align: left; 98 max-height: 200px; 99 overflow: auto; 100 } 101 .control-button { 102 width: 2rem; 103 height: 2rem; 104 padding: 0.375rem; 105 margin-top: 0.5rem; 106 margin-bottom: 0.5rem; 107 user-select: none; 108 -webkit-user-select: none; 109 cursor: pointer; 110 border: 0; 111 border-radius: 4px; 112 } 113 .control-button-highlight:hover { 114 background: #ffffff26; 115 } 116 .control-button-highlight.active { 117 background: #ffffff59; 118 } 119 .fullscreen-button { 120 background: white; 121 } 122 .standalone-fullscreen-button { 123 position: absolute; 124 top: 0; 125 right: 0; 126 background-color: rgba(0, 0, 0, 0.5); 127 border-radius: 0 0 0 4px; 128 padding: 4px; 129 cursor: pointer; 130 } 131 .sc-canvas { 132 cursor: auto; 133 } 134 .sc-monitor-root[data-opcode^="data_"] .sc-monitor-value-color { 135 background-color: #ffffff; 136 } 137 .sc-monitor-row-value-outer { 138 background-color: #ffffff; 139 } 140 .sc-monitor-row-value-editing .sc-monitor-row-value-outer { 141 background-color: #e5e5e5; 142 } 143 144 </style> 145 <meta name="theme-color" content="#000000"> 146 147</head> 148<body> 149 <div id="app"></div> 150 151 <div id="launch" class="screen" hidden title="Click to start"> 152 <div class="green-flag"> 153 <svg viewBox="0 0 16.63 17.5" width="42" height="44"> 154 <defs><style>.cls-1,.cls-2{fill:#4cbf56;stroke:#45993d;stroke-linecap:round;stroke-linejoin:round;}.cls-2{stroke-width:1.5px;}</style></defs> 155 <path class="cls-1" d="M.75,2A6.44,6.44,0,0,1,8.44,2h0a6.44,6.44,0,0,0,7.69,0V12.4a6.44,6.44,0,0,1-7.69,0h0a6.44,6.44,0,0,0-7.69,0"/> 156 <line class="cls-2" x1="0.75" y1="16.75" x2="0.75" y2="0.75"/> 157 </svg> 158 </div> 159 </div> 160 161 <div id="loading" class="screen"> 162 <noscript>Enable JavaScript</noscript> 163 <h1 class="loading-text">Loading...</h1> 164 165 <div class="progress-bar-outer"><div class="progress-bar-inner" id="loading-inner"></div></div> 166 </div> 167 168 <div id="error" class="screen" hidden> 169 <h1>Error</h1> 170 <details> 171 <summary id="error-message"></summary> 172 <p id="error-stack"></p> 173 </details> 174 </div> 175 176
176<script src="script.js"></script>
176 177
177<script> 178 const appElement = document.getElementById('app'); 179 const launchScreen = document.getElementById('launch'); 180 const loadingScreen = document.getElementById('loading'); 181 const loadingInner = document.getElementById('loading-inner'); 182 const errorScreen = document.getElementById('error'); 183 const errorScreenMessage = document.getElementById('error-message'); 184 const errorScreenStack = document.getElementById('error-stack'); 185 186 const handleError = (error) => { 187 console.error(error); 188 if (!errorScreen.hidden) return; 189 errorScreen.hidden = false; 190 errorScreenMessage.textContent = '' + error; 191 let debug = error && error.stack || 'no stack'; 192 debug += '\nUser agent: ' + navigator.userAgent; 193 errorScreenStack.textContent = debug; 194 }; 195 const setProgress = (progress) => { 196 if (loadingInner) loadingInner.style.width = progress * 100 + '%'; 197 }; 198 const interpolate = (a, b, t) => a + t * (b - a); 199 200 try { 201 setProgress(0.1); 202 203 const scaffolding = new Scaffolding.Scaffolding(); 204 scaffolding.width = 1280; 205 scaffolding.height = 720; 206 scaffolding.resizeMode = "preserve-ratio"; 207 scaffolding.editableLists = false; 208 scaffolding.usePackagedRuntime = true; 209 scaffolding.setup(); 210 scaffolding.appendTo(appElement); 211 212 const vm = scaffolding.vm; 213 window.scaffolding = scaffolding; 214 window.vm = scaffolding.vm; 215 window.Scratch = { 216 vm, 217 renderer: vm.renderer, 218 audioEngine: vm.runtime.audioEngine, 219 bitmapAdapter: vm.runtime.v2BitmapAdapter, 220 videoProvider: vm.runtime.ioDevices.video.provider 221 }; 222 223 scaffolding.setUsername("player####".replace(/#/g, () => Math.floor(Math.random() * 10))); 224 scaffolding.setAccentColor("#ffffff"); 225 226 try { 227 scaffolding.addCloudProvider(new Scaffolding.Cloud.WebSocketProvider(["wss://clouddata.turbowarp.org","wss://clouddata.turbowarp.xyz"], "[email protected]")); 228 } catch (error) { 229 console.error(error); 230 } 231 232 vm.setTurboMode(false); 233 if (vm.setInterpolation) vm.setInterpolation(false); 234 if (vm.setFramerate) vm.setFramerate(30); 235 if (vm.renderer.setUseHighQualityRender) vm.renderer.setUseHighQualityRender(false); 236 if (vm.setRuntimeOptions) vm.setRuntimeOptions({ 237 fencing: true, 238 miscLimits: true, 239 maxClones: 300, 240 }); 241 if (vm.setCompilerOptions) vm.setCompilerOptions({ 242 enabled: true, 243 warpTimer: false 244 }); 245 if (vm.renderer.setMaxTextureDimension) vm.renderer.setMaxTextureDimension(2048); 246 247 // enforcePrivacy threat model only makes sense in the editor 248 if (vm.runtime.setEnforcePrivacy) vm.runtime.setEnforcePrivacy(false); 249 250 if (typeof ScaffoldingAddons !== 'undefined') { 251 ScaffoldingAddons.run(scaffolding, {"gamepad":false,"pointerlock":false,"specialCloudBehaviors":false,"unsafeCloudBehaviors":false,"pause":false}); 252 } 253 254 scaffolding.setExtensionSecurityManager({ 255 getSandboxMode: () => 'unsandboxed', 256 canLoadExtensionFromProject: () => true 257 }); 258 for (const extension of ["data:text/javascript;,(function(Scratch)%20%7B%20%2F%2F%20Name%3A%20Network%0A%2F%2F%20ID%3A%20truefantomnetwork%0A%2F%2F%20Description%3A%20Various%20blocks%20for%20interacting%20with%20the%20network.%0A%2F%2F%20By%3A%20TrueFantom%20%3Chttps%3A%2F%2Fscratch.mit.edu%2Fusers%2FTrueFantom%2F%3E%0A%2F%2F%20License%3A%20MIT%0A%0A%2F*%20generated%20l10n%20code%20*%2FScratch.translate.setup(%7B%22de%22%3A%7B%22_Network%22%3A%22Netzwerk%22%7D%2C%22es%22%3A%7B%22_default%22%3A%22por%20defecto%22%7D%2C%22fi%22%3A%7B%22_(1)%20text%22%3A%22(1)%20teksti%22%2C%22_(3)%20status%20ok%3F%22%3A%22(3)%20onko%20tila%20ok%3F%22%2C%22_(4)%20status%22%3A%22(4)%20tila%22%2C%22_(5%201)%20status%20text%20and%20text%22%3A%22(5%201)%20tilateksti%20ja%20teksti%22%2C%22_(5)%20status%20text%22%3A%22(5)%20tilateksti%22%2C%22_(6%204)%20type%20and%20status%22%3A%22(6%204)%20tyyppi%20ja%20tila%22%2C%22_(6)%20type%22%3A%22(6)%20tyyppi%22%2C%22_(7)%20redirected%3F%22%3A%22(7)%20onko%20uudelleenohjattu%3F%22%2C%22_(9)%20body%20used%3F%22%3A%22(9)%20onko%20runkoa%20k%C3%A4ytetty%3F%22%2C%22_Network%22%3A%22Verkko%22%2C%22_apple%22%3A%22omena%22%2C%22_browser%22%3A%22selain%22%2C%22_connected%20to%20internet%3F%22%3A%22onko%20yhteydess%C3%A4%20internetiin%3F%22%2C%22_current%20url%22%3A%22nykyinen%20url-osoite%22%2C%22_default%22%3A%22oletus%22%2C%22_delete%20%5BUSER_URL%5D%20respond%20%5BRESPONSES_TYPES%5D%20split%20by%20%5BSPLIT%5D%22%3A%22tee%20delete-pyynt%C3%B6%20sivustoon%20%5BUSER_URL%5D%20ja%20ilmoita%20vastauksen%20%5BRESPONSES_TYPES%5D%20jaettuna%20merkill%C3%A4%20%5BSPLIT%5D%22%2C%22_downlink%20max%20speed%20in%20mb%2Fs%22%3A%22enimm%C3%A4isvastaanottovauhti%20megabittein%C3%A4%20sekunnissa%22%2C%22_downlink%20speed%20in%20mb%2Fs%22%3A%22vastaanottonopeus%20megabittein%C3%A4%20sekunnissa%22%2C%22_get%20%5BUSER_URL%5D%20respond%20%5BRESPONSES_TYPES%5D%20split%20by%20%5BSPLIT%5D%22%3A%22tee%20get-pyynt%C3%B6%20sivustoon%20%5BUSER_URL%5D%20ja%20ilmoita%20vastauksen%20%5BRESPONSES_TYPES%5D%20jaettuna%20merkill%C3%A4%20%5BSPLIT%5D%22%2C%22_network%20generation%22%3A%22verkon%20sukupolvi%22%2C%22_network%20type%22%3A%22verkon%20tyyppi%22%2C%22_open%20%5BUSER_URL%5D%20in%20new%20tab%22%3A%22avaa%20%5BUSER_URL%5D%20uudessa%20v%C3%A4lilehdess%C3%A4%22%2C%22_open%20%5BUSER_URL%5D%20in%20new%20window%20with%20width%3A%20%5BWIDTH%5D%20height%3A%20%5BHEIGHT%5D%20left%3A%20%5BLEFT%5D%20top%3A%20%5BTOP%5D%22%3A%22avaa%20%5BUSER_URL%5D%20uudessa%20ikkunassa%3A%20leveys%20%5BWIDTH%5D%20korkeus%3A%20%5BHEIGHT%5D%20vasen%20sijainti%3A%20%5BLEFT%5D%20yl%C3%A4sijainti%3A%20%5BTOP%5D%22%2C%22_patch%20%5BCONTENT_TYPE%5D%20%5BBODY%5D%20to%20%5BUSER_URL%5D%20respond%20%5BRESPONSES_TYPES%5D%20split%20by%20%5BSPLIT%5D%22%3A%22tee%20patch-pyynt%C3%B6%20%5BCONTENT_TYPE%5D%20%5BBODY%5D%20sivustoon%20%5BUSER_URL%5D%20ja%20ilmoita%20vastauksen%20%5BRESPONSES_TYPES%5D%20jaettuna%20merkill%C3%A4%20%5BSPLIT%5D%22%2C%22_post%20%5BCONTENT_TYPE%5D%20%5BBODY%5D%20to%20%5BUSER_URL%5D%20respond%20%5BRESPONSES_TYPES%5D%20split%20by%20%5BSPLIT%5D%22%3A%22tee%20post-pyynt%C3%B6%20%5BCONTENT_TYPE%5D%20%5BBODY%5D%20sivustoon%20%5BUSER_URL%5D%20ja%20ilmoita%20vastauksen%20%5BRESPONSES_TYPES%5D%20jaettuna%20merkill%C3%A4%20%5BSPLIT%5D%22%2C%22_put%20%5BCONTENT_TYPE%5D%20%5BBODY%5D%20to%20%5BUSER_URL%5D%20respond%20%5BRESPONSES_TYPES%5D%20split%20by%20%5BSPLIT%5D%22%3A%22tee%20put-pyynt%C3%B6%20%5BCONTENT_TYPE%5D%20%5BBODY%5D%20sivustoon%20%5BUSER_URL%5D%20ja%20ilmoita%20vastauksen%20%5BRESPONSES_TYPES%5D%20jaettuna%20merkill%C3%A4%20%5BSPLIT%5D%22%2C%22_redirect%20this%20tab%20to%20%5BUSER_URL%5D%22%3A%22siirry%20osoitteeseen%20%5BUSER_URL%5D%20t%C3%A4ll%C3%A4%20v%C3%A4lilehdell%C3%A4%22%2C%22_rtt%20in%20ms%22%3A%22viive%20millisekunteina%22%7D%2C%22it%22%3A%7B%22_(1)%20text%22%3A%22(1)%20testo%22%2C%22_(3)%20status%20ok%3F%22%3A%22(3)%20stato%20ok%22%2C%22_(4)%20status%22%3A%22(4)%20stato%22%2C%22_(5%201)%20status%20text%20and%20text%22%3A%22(5%201)%20stato%20come%20testo%20e%20testo%22%2C%22_(5)%20status%20text%22%3A%22(5)%20stato%20come%20testo%22%2C%22_(6%204)%20type%20and%20status%22%3A%22(6%204)%20tipo%20e%20stato%22%2C%22_(6)%20type%22%3A%22(6)%20tipo%22%2C%22_(7)%20redirected%3F%22%3A%22(7)%20reindirizzato%22%2C%22_(9)%20body%20used%3F%22%3A%22(9)%20usato%20corpo%22%2C%22_Network%22%3A%22Rete%22%2C%22_apple%22%3A%22mela%22%2C%22_connected%20to%20internet%3F%22%3A%22connesso%20alla%20rete%22%2C%22_current%20url%22%3A%22url%20attuale%22%2C%22_default%22%3A%22predefinito%22%2C%22_delete%20%5BUSER_URL%5D%20respond%20%5BRESPONSES_TYPES%5D%20split%20by%20%5BSPLIT%5D%22%3A%22rimuovi%20risposta%20%5BUSER_URL%5D%20di%20tipo%20%5BRESPONSES_TYPES%5D%20divisa%20da%20%5BSPLIT%5D%22%2C%22_downlink%20max%20speed%20in%20mb%2Fs%22%3A%22massima%20velocit%C3%A0%20download%20in%20mb%2Fs%22%2C%22_downlink%20speed%20in%20mb%2Fs%22%3A%22velocit%C3%A0%20download%20in%20mb%2Fs%22%2C%22_get%20%5BUSER_URL%5D%20respond%20%5BRESPONSES_TYPES%5D%20split%20by%20%5BSPLIT%5D%22%3A%22risposta%20da%20%5BUSER_URL%5D%20di%20tipo%20%5BRESPONSES_TYPES%5D%20divisa%20da%20%5BSPLIT%5D%22%2C%22_network%20generation%22%3A%22generazione%20rete%22%2C%22_network%20type%22%3A%22tipo%20rete%22%2C%22_open%20%5BUSER_URL%5D%20in%20new%20tab%22%3A%22apri%20%5BUSER_URL%5D%20in%20nuova%20scheda%22%2C%22_open%20%5BUSER_URL%5D%20in%20new%20window%20with%20width%3A%20%5BWIDTH%5D%20height%3A%20%5BHEIGHT%5D%20left%3A%20%5BLEFT%5D%20top%3A%20%5BTOP%5D%22%3A%22apri%20%5BUSER_URL%5D%20in%20nuova%20finestra%20di%20larghezza%20%5BWIDTH%5D%20altezza%20%5BHEIGHT%5D%20bordo%20sinistro%20a%20%5BLEFT%5D%20bordo%20superiore%20a%20%5BTOP%5D%22%2C%22_patch%20%5BCONTENT_TYPE%5D%20%5BBODY%5D%20to%20%5BUSER_URL%5D%20respond%20%5BRESPONSES_TYPES%5D%20split%20by%20%5BSPLIT%5D%22%3A%22invia%20aggiornamento%20%5BCONTENT_TYPE%5D%5BBODY%5D%20a%20%5BUSER_URL%5D%20e%20attendi%20risposta%20di%20tipo%20%5BRESPONSES_TYPES%5D%20divisa%20da%20%5BSPLIT%5D%22%2C%22_post%20%5BCONTENT_TYPE%5D%20%5BBODY%5D%20to%20%5BUSER_URL%5D%20respond%20%5BRESPONSES_TYPES%5D%20split%20by%20%5BSPLIT%5D%22%3A%22invia%20%5BCONTENT_TYPE%5D%20%5BBODY%5D%20a%20%5BUSER_URL%5D%20e%20attendi%20risposta%20di%20tipo%20%5BRESPONSES_TYPES%5D%20divisa%20da%20%5BSPLIT%5D%22%2C%22_put%20%5BCONTENT_TYPE%5D%20%5BBODY%5D%20to%20%5BUSER_URL%5D%20respond%20%5BRESPONSES_TYPES%5D%20split%20by%20%5BSPLIT%5D%22%3A%22invia%20%5BCONTENT_TYPE%5D%20%5BBODY%5D%20a%20%5BUSER_URL%5D%20e%20attendi%20risposta%20di%20tipo%20%5BRESPONSES_TYPES%5D%20divisa%20da%20%5BSPLIT%5D%22%2C%22_redirect%20this%20tab%20to%20%5BUSER_URL%5D%22%3A%22reindirizza%20scheda%20a%20%5BUSER_URL%5D%22%7D%2C%22ja%22%3A%7B%22_(1)%20text%22%3A%22(1)%20%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88%22%2C%22_(3)%20status%20ok%3F%22%3A%22(3)%20%E3%82%B9%E3%83%86%E3%83%BC%E3%82%BF%E3%82%B9OK%22%2C%22_(4)%20status%22%3A%22(4)%20%E3%82%B9%E3%83%86%E3%83%BC%E3%82%BF%E3%82%B9%22%2C%22_(5%201)%20status%20text%20and%20text%22%3A%22(5%201)%20%E3%82%B9%E3%83%86%E3%83%BC%E3%82%BF%E3%82%B9%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88%E3%81%A8%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88%22%2C%22_(5)%20status%20text%22%3A%22(5)%20%E3%82%B9%E3%83%86%E3%83%BC%E3%82%BF%E3%82%B9%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88%22%2C%22_(6%204)%20type%20and%20status%22%3A%22(6%204)%20%E3%82%BF%E3%82%A4%E3%83%97%E3%81%A8%E3%82%B9%E3%83%86%E3%83%BC%E3%82%BF%E3%82%B9%22%2C%22_(6)%20type%22%3A%22(6)%20%E3%82%BF%E3%82%A4%E3%83%97%22%2C%22_(7)%20redirected%3F%22%3A%22(7)%20%E3%83%AA%E3%83%80%E3%82%A4%E3%83%AC%E3%82%AF%E3%83%88%E3%81%95%E3%82%8C%E3%81%9F%22%2C%22_(9)%20body%20used%3F%22%3A%22(9)%20body%E3%81%8C%E4%BD%BF%E3%82%8F%E3%82%8C%E3%81%9F%22%2C%22_Network%22%3A%22%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF%22%2C%22_apple%22%3A%22%E3%82%8A%E3%82%93%E3%81%94%22%2C%22_browser%22%3A%22%E3%83%96%E3%83%A9%E3%82%A6%E3%82%B6%22%2C%22_connected%20to%20internet%3F%22%3A%22%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%BC%E3%83%8D%E3%83%83%E3%83%88%E3%81%AB%E6%8E%A5%E7%B6%9A%E3%81%95%E3%82%8C%E3%81%A6%E3%81%84%E3%82%8B%22%2C%22_current%20url%22%3A%22%E7%8F%BE%E5%9C%A8%E3%81%AEURL%22%2C%22_default%22%3A%22%E3%83%87%E3%83%95%E3%82%A9%E3%83%AB%E3%83%88%22%2C%22_downlink%20max%20speed%20in%20mb%2Fs%22%3A%22%E6%9C%80%E5%A4%A7%E3%83%80%E3%82%A6%E3%83%B3%E3%83%AA%E3%83%B3%E3%82%AF%E9%80%9F%E5%BA%A6%E3%82%92MB%2Fs%E3%81%A7%E8%A1%A8%E3%81%99%22%2C%22_downlink%20speed%20in%20mb%2Fs%22%3A%22%E3%83%80%E3%82%A6%E3%83%B3%E3%83%AA%E3%83%B3%E3%82%AF%E9%80%9F%E5%BA%A6%E3%82%92MB%2Fs%E3%81%A7%E8%A1%A8%E3%81%99%22%2C%22_network%20generation%22%3A%22%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF%E3%81%AE%E4%B8%96%E4%BB%A3%22%2C%22_network%20type%22%3A%22%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF%E3%82%BF%E3%82%A4%E3%83%97%22%2C%22_open%20%5BUSER_URL%5D%20in%20new%20tab%22%3A%22%5BUSER_URL%5D%E3%82%92%E6%96%B0%E3%81%97%E3%81%84%E3%82%BF%E3%83%96%E3%81%A7%E9%96%8B%E3%81%8F%22%2C%22_open%20%5BUSER_URL%5D%20in%20new%20window%20with%20width%3A%20%5BWIDTH%5D%20height%3A%20%5BHEIGHT%5D%20left%3A%20%5BLEFT%5D%20top%3A%20%5BTOP%5D%22%3A%22%5BUSER_URL%5D%E3%82%92%E6%96%B0%E3%81%97%E3%81%84%E3%82%A6%E3%82%A3%E3%83%B3%E3%83%89%E3%82%A6%E3%81%A7%E5%B9%85%5BWIDTH%5D%E9%AB%98%E3%81%95%5BHEIGHT%5D%E5%B7%A6%5BLEFT%5D%E3%83%88%E3%83%83%E3%83%97%5BTOP%5D%E3%81%A7%E9%96%8B%E3%81%8F%22%2C%22_redirect%20this%20tab%20to%20%5BUSER_URL%5D%22%3A%22%E3%81%93%E3%81%AE%E3%82%BF%E3%83%96%E3%82%92%5BUSER_URL%5D%E3%81%AB%E3%83%AA%E3%83%80%E3%82%A4%E3%83%AC%E3%82%AF%E3%83%88%E3%81%99%E3%82%8B%22%2C%22_rtt%20in%20ms%22%3A%22%E3%83%A9%E3%82%A6%E3%83%B3%E3%83%89%E3%83%88%E3%83%AA%E3%83%83%E3%83%97%E3%82%BF%E3%82%A4%E3%83%A0%E3%82%92%E3%83%9F%E3%83%AA%E7%A7%92%E3%81%A7%E8%A1%A8%E3%81%99%22%7D%2C%22ko%22%3A%7B%22_(1)%20text%22%3A%22(1)%20%ED%85%8D%EC%8A%A4%ED%8A%B8%22%2C%22_(3)%20status%20ok%3F%22%3A%22(3)%20%EC%83%81%ED%83%9C%EA%B0%80%20ok%EC%9D%B8%EC%A7%80%20%EC%97%AC%EB%B6%80%22%2C%22_(4)%20status%22%3A%22(4)%20%EC%83%81%ED%83%9C%20%EC%BD%94%EB%93%9C%22%2C%22_(5%201)%20status%20text%20and%20text%22%3A%22(5%201)%20%EC%83%81%ED%83%9C%20%EB%A9%94%EC%8B%9C%EC%A7%80%20%EB%B0%8F%20%ED%85%8D%EC%8A%A4%ED%8A%B8%22%2C%22_(5)%20status%20text%22%3A%22(5)%20%EC%83%81%ED%83%9C%20%EB%A9%94%EC%8B%9C%EC%A7%80%22%2C%22_(7)%20redirected%3F%22%3A%22(7)%20%EB%A6%AC%EB%8B%A4%EC%9D%B4%EB%A0%89%ED%8A%B8%20%EC%97%AC%EB%B6%80%22%2C%22_(9)%20body%20used%3F%22%3A%22(9)%20body%20%EC%82%AC%EC%9A%A9
258%20%EC%97%AC%EB%B6%80%22%2C%22_Network%22%3A%22%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC%22%2C%22_browser%22%3A%22%EB%B8%8C%EB%9D%BC%EC%9A%B0%EC%A0%80%22%2C%22_connected%20to%20internet%3F%22%3A%22%EC%9D%B8%ED%84%B0%EB%84%B7%EC%97%90%20%EC%97%B0%EA%B2%B0%EB%90%98%EC%97%88%EB%8A%94%EA%B0%80%3F%22%2C%22_current%20url%22%3A%22%ED%98%84%EC%9E%AC%20URL%22%2C%22_default%22%3A%22%EA%B8%B0%EB%B3%B8%22%2C%22_network%20generation%22%3A%22%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC%20%EC%84%B8%EB%8C%80%22%7D%2C%22nb%22%3A%7B%22_Network%22%3A%22Nettverk%22%2C%22_browser%22%3A%22nettleser%22%7D%2C%22nl%22%3A%7B%22_Network%22%3A%22Netwerk%22%2C%22_apple%22%3A%22appel%22%2C%22_default%22%3A%22standaard%22%7D%2C%22pl%22%3A%7B%22_browser%22%3A%22przegl%C4%85darka%22%7D%2C%22ru%22%3A%7B%22_(1)%20text%22%3A%22(1)%20%D1%82%D0%B5%D0%BA%D1%81%D1%82%22%2C%22_(3)%20status%20ok%3F%22%3A%22(3)%20%D1%81%D1%82%D0%B0%D1%82%D1%83%D1%81%20%D0%BE%D0%BA%3F%22%2C%22_(4)%20status%22%3A%22(4)%20%D1%81%D1%82%D0%B0%D1%82%D1%83%D1%81%22%2C%22_(5%201)%20status%20text%20and%20text%22%3A%22(5%201)%20%D1%82%D0%B5%D0%BA%D1%81%D1%82%20%D1%81%D1%82%D0%B0%D1%82%D1%83%D1%81%D0%B0%20%D0%B8%20%D1%82%D0%B5%D0%BA%D1%81%D1%82%22%2C%22_(5)%20status%20text%22%3A%22(5)%20%D1%82%D0%B5%D0%BA%D1%81%D1%82%20%D1%81%D1%82%D0%B0%D1%82%D1%83%D1%81%D0%B0%22%2C%22_(6%204)%20type%20and%20status%22%3A%22(6%204)%20%D1%82%D0%B8%D0%BF%20%D0%B8%20%D1%81%D1%82%D0%B0%D1%82%D1%83%D1%81%22%2C%22_(6)%20type%22%3A%22(6)%20%D1%82%D0%B8%D0%BF%22%2C%22_(7)%20redirected%3F%22%3A%22(7)%20%D0%BF%D0%B5%D1%80%D0%B5%D0%BD%D0%B0%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%3F%22%2C%22_(9)%20body%20used%3F%22%3A%22(9)%20%D1%82%D0%B5%D0%BB%D0%BE%20%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D0%BE%3F%22%2C%22_Network%22%3A%22%D0%A1%D0%B5%D1%82%D1%8C%22%2C%22_apple%22%3A%22%D1%8F%D0%B1%D0%BB%D0%BE%D0%BA%D0%BE%22%2C%22_browser%22%3A%22%D0%B1%D1%80%D0%B0%D1%83%D0%B7%D0%B5%D1%80%22%2C%22_connected%20to%20internet%3F%22%3A%22%D0%BF%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D1%91%D0%BD%20%D0%BA%20%D0%B8%D0%BD%D1%82%D0%B5%D1%80%D0%BD%D0%B5%D1%82%D1%83%3F%22%2C%22_current%20url%22%3A%22%D1%82%D0%B5%D0%BA%D1%83%D1%89%D0%B5%D0%B5%20url%22%2C%22_default%22%3A%22%D0%BF%D0%BE%20%D1%83%D0%BC%D0%BE%D0%BB%D1%87%D0%B0%D0%BD%D0%B8%D1%8E%22%2C%22_delete%20%5BUSER_URL%5D%20respond%20%5BRESPONSES_TYPES%5D%20split%20by%20%5BSPLIT%5D%22%3A%22%D1%83%D0%B4%D0%B0%D0%BB%D0%B8%D1%82%D1%8C%20%5BUSER_URL%5D%20%D0%BE%D1%82%D0%B2%D0%B5%D1%82%20%5BRESPONSES_TYPES%5D%20%D1%80%D0%B0%D0%B7%D0%B4%D0%B5%D0%BB%D1%91%D0%BD%D0%BD%D1%8B%D0%B9%20%D0%BD%D0%B0%20%5BSPLIT%5D%22%2C%22_downlink%20max%20speed%20in%20mb%2Fs%22%3A%22%D0%BC%D0%B0%D0%BA%D1%81%D0%B8%D0%BC%D0%B0%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F%20%D1%81%D0%BA%D0%BE%D1%80%D0%BE%D1%81%D1%82%D1%8C%20%D0%BD%D0%B8%D1%81%D1%85%D0%BE%D0%B4%D1%8F%D1%89%D0%B5%D0%B3%D0%BE%20%D0%BA%D0%B0%D0%BD%D0%B0%D0%BB%D0%B0%20%D0%B2%20%D0%BC%D0%B1%2F%D1%81%22%2C%22_downlink%20speed%20in%20mb%2Fs%22%3A%22%D1%81%D0%BA%D0%BE%D1%80%D0%BE%D1%81%D1%82%D1%8C%20%D0%BD%D0%B8%D1%81%D1%85%D0%BE%D0%B4%D1%8F%D1%89%D0%B5%D0%B3%D0%BE%20%D0%BA%D0%B0%D0%BD%D0%B0%D0%BB%D0%B0%20%D0%B2%20%D0%BC%D0%B1%2F%D1%81%22%2C%22_get%20%5BUSER_URL%5D%20respond%20%5BRESPONSES_TYPES%5D%20split%20by%20%5BSPLIT%5D%22%3A%22%D0%BF%D0%BE%D0%BB%D1%83%D1%87%D0%B8%D1%82%D1%8C%20%5BUSER_URL%5D%20%D0%BE%D1%82%D0%B2%D0%B5%D1%82%20%5BRESPONSES_TYPES%5D%20%D1%80%D0%B0%D0%B7%D0%B4%D0%B5%D0%BB%D1%91%D0%BD%D0%BD%D1%8B%D0%B9%20%D0%BD%D0%B0%20%5BSPLIT%5D%22%2C%22_network%20generation%22%3A%22%D0%B3%D0%B5%D0%BD%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D1%8F%20%D1%81%D0%B5%D1%82%D0%B8%22%2C%22_network%20type%22%3A%22%D1%82%D0%B8%D0%BF%20%D1%81%D0%B5%D1%82%D0%B8%22%2C%22_open%20%5BUSER_URL%5D%20in%20new%20tab%22%3A%22%D0%BE%D1%82%D0%BA%D1%80%D1%8B%D1%82%D1%8C%20%5BUSER_URL%5D%20%D0%B2%20%D0%BD%D0%BE%D0%B2%D0%BE%D0%B9%20%D0%B2%D0%BA%D0%BB%D0%B0%D0%B4%D0%BA%D0%B5%22%2C%22_open%20%5BUSER_URL%5D%20in%20new%20window%20with%20width%3A%20%5BWIDTH%5D%20height%3A%20%5BHEIGHT%5D%20left%3A%20%5BLEFT%5D%20top%3A%20%5BTOP%5D%22%3A%22%D0%BE%D1%82%D0%BA%D1%80%D1%8B%D1%82%D1%8C%20%5BUSER_URL%5D%20%D0%B2%20%D0%BD%D0%BE%D0%B2%D0%BE%D0%B9%20%D0%B2%D0%BA%D0%BB%D0%B0%D0%B4%D0%BA%D0%B5%20%D1%81%20%D1%88%D0%B8%D1%80%D0%B8%D0%BD%D0%BE%D0%B9%3A%20%5BWIDTH%5D%20%D0%B2%D1%8B%D1%81%D0%BE%D1%82%D0%BE%D0%B9%3A%20%5BHEIGHT%5D%20%D0%BB%D0%B5%D0%B2%D0%BE%3A%20%5BLEFT%5D%20%D0%B2%D0%B5%D1%80%D1%85%3A%20%5BTOP%5D%20%22%2C%22_patch%20%5BCONTENT_TYPE%5D%20%5BBODY%5D%20to%20%5BUSER_URL%5D%20respond%20%5BRESPONSES_TYPES%5D%20split%20by%20%5BSPLIT%5D%22%3A%22%D0%B8%D1%81%D0%BF%D1%80%D0%B0%D0%B2%D0%B8%D1%82%D1%8C%20%5BCONTENT_TYPE%5D%20%5BBODY%5D%20%D0%BD%D0%B0%20%5BUSER_URL%5D%20%D0%BE%D1%82%D0%B2%D0%B5%D1%82%20%5BRESPONSES_TYPES%5D%20%D1%80%D0%B0%D0%B7%D0%B4%D0%B5%D0%BB%D1%91%D0%BD%D0%BD%D1%8B%D0%B9%20%D0%BD%D0%B0%20%5BSPLIT%5D%22%2C%22_post%20%5BCONTENT_TYPE%5D%20%5BBODY%5D%20to%20%5BUSER_URL%5D%20respond%20%5BRESPONSES_TYPES%5D%20split%20by%20%5BSPLIT%5D%22%3A%22%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D0%B8%D1%82%D1%8C%20%5BCONTENT_TYPE%5D%20%5BBODY%5D%20%D0%BD%D0%B0%20%5BUSER_URL%5D%20%D0%BE%D1%82%D0%B2%D0%B5%D1%82%20%5BRESPONSES_TYPES%5D%20%D1%80%D0%B0%D0%B7%D0%B4%D0%B5%D0%BB%D1%91%D0%BD%D0%BD%D1%8B%D0%B9%20%D0%BD%D0%B0%20%5BSPLIT%5D%22%2C%22_put%20%5BCONTENT_TYPE%5D%20%5BBODY%5D%20to%20%5BUSER_URL%5D%20respond%20%5BRESPONSES_TYPES%5D%20split%20by%20%5BSPLIT%5D%22%3A%22%D0%B2%D1%81%D1%82%D0%B0%D0%B2%D0%B8%D1%82%D1%8C%20%5BCONTENT_TYPE%5D%20%5BBODY%5D%20%D0%BD%D0%B0%20%5BUSER_URL%5D%20%D0%BE%D1%82%D0%B2%D0%B5%D1%82%20%5BRESPONSES_TYPES%5D%20%D1%80%D0%B0%D0%B7%D0%B4%D0%B5%D0%BB%D1%91%D0%BD%D0%BD%D1%8B%D0%B9%20%D0%BD%D0%B0%20%5BSPLIT%5D%22%2C%22_redirect%20this%20tab%20to%20%5BUSER_URL%5D%22%3A%22%D0%BF%D0%B5%D1%80%D0%B5%D0%BD%D0%B0%D0%BF%D1%80%D0%B0%D0%B2%D0%B8%D1%82%D1%8C%20%D1%8D%D1%82%D1%83%20%D0%B2%D0%BA%D0%BB%D0%B0%D0%B4%D0%BA%D1%83%20%D0%BD%D0%B0%20%5BUSER_URL%5D%22%2C%22_rtt%20in%20ms%22%3A%22rtt%20%D0%B2%20%D0%BC%D1%81%22%7D%2C%22uk%22%3A%7B%22_browser%22%3A%22%D0%B1%D1%80%D0%B0%D1%83%D0%B7%D0%B5%D1%80%22%7D%2C%22zh-cn%22%3A%7B%22_(1)%20text%22%3A%22%EF%BC%881%EF%BC%89%E6%96%87%E6%9C%AC%22%2C%22_(3)%20status%20ok%3F%22%3A%22%EF%BC%883%EF%BC%89%E7%8A%B6%E6%80%81%20ok%3F%22%2C%22_(4)%20status%22%3A%22%EF%BC%884%EF%BC%89%E7%8A%B6%E6%80%81%E7%A0%81%22%2C%22_(5%201)%20status%20text%20and%20text%22%3A%22(5%201)%20%E7%8A%B6%E6%80%81%E6%96%87%E6%9C%AC%E5%92%8C%E6%96%87%E6%9C%AC%22%2C%22_(5)%20status%20text%22%3A%22(5)%20%E7%8A%B6%E6%80%81%E6%96%87%E6%9C%AC%22%2C%22_(6%204)%20type%20and%20status%22%3A%22(6%204)%20%E7%B1%BB%E5%9E%8B%E5%92%8C%E7%8A%B6%E6%80%81%22%2C%22_(6)%20type%22%3A%22(6)%20%E7%B1%BB%E5%9E%8B%22%2C%22_(7)%20redirected%3F%22%3A%22(7)%20%E5%B7%B2%E9%87%8D%E5%AE%9A%E5%90%91%EF%BC%9F%22%2C%22_(9)%20body%20used%3F%22%3A%22(9)%20%E8%AF%B7%E6%B1%82%E4%BD%93%E5%B7%B2%E4%BD%BF%E7%94%A8%EF%BC%9F%22%2C%22_Network%22%3A%22%E7%BD%91%E7%BB%9C%22%2C%22_apple%22%3A%22%E8%8B%B9%E6%9E%9C%22%2C%22_browser%22%3A%22%E6%B5%8F%E8%A7%88%E5%99%A8%E5%90%8D%E7%A7%B0%22%2C%22_connected%20to%20internet%3F%22%3A%22%E5%B7%B2%E8%81%94%E7%BD%91%EF%BC%9F%22%2C%22_current%20url%22%3A%22%E5%BD%93%E5%89%8Durl%22%2C%22_default%22%3A%22%E9%BB%98%E8%AE%A4%E7%B1%BB%E5%9E%8B%22%2C%22_delete%20%5BUSER_URL%5D%20respond%20%5BRESPONSES_TYPES%5D%20split%20by%20%5BSPLIT%5D%22%3A%22%E5%88%A0%E9%99%A4%5BUSER_URL%5D%E7%9A%84%E5%93%8D%E5%BA%94%5BRESPONSES_TYPES%5D%E4%BB%A5%5BSPLIT%5D%E5%88%86%E5%89%B2%22%2C%22_downlink%20max%20speed%20in%20mb%2Fs%22%3A%22%E6%9C%80%E5%A4%A7%E4%B8%8B%E8%A1%8C%E9%80%9F%E5%BA%A6%20mb%2Fs%22%2C%22_downlink%20speed%20in%20mb%2Fs%22%3A%22%E4%B8%8B%E8%A1%8C%E9%80%9F%E5%BA%A6%20mb%2Fs%22%2C%22_get%20%5BUSER_URL%5D%20respond%20%5BRESPONSES_TYPES%5D%20split%20by%20%5BSPLIT%5D%22%3A%22get%5BUSER_URL%5D%E7%9A%84%5BRESPONSES_TYPES%5D%E5%93%8D%E5%BA%94%E4%BB%A5%5BSPLIT%5D%E5%88%86%E5%89%B2%22%2C%22_network%20generation%22%3A%22%E7%BD%91%E7%BB%9C%E4%BB%A3%E9%99%85%22%2C%22_network%20type%22%3A%22%E7%BD%91%E7%BB%9C%E7%B1%BB%E5%9E%8B%22%2C%22_open%20%5BUSER_URL%5D%20in%20new%20tab%22%3A%22%E5%9C%A8%E6%96%B0%E6%A0%87%E7%AD%BE%E9%A1%B5%E6%89%93%E5%BC%80%5BUSER_URL%5D%22%2C%22_open%20%5BUSER_URL%5D%20in%20new%20window%20with%20width%3A%20%5BWIDTH%5D%20height%3A%20%5BHEIGHT%5D%20left%3A%20%5BLEFT%5D%20top%3A%20%5BTOP%5D%22%3A%22%E5%9C%A8%E6%96%B0%E7%AA%97%E5%8F%A3%E6%89%93%E5%BC%80%5BUSER_URL%5D%20%E5%AE%BD%3A%20%5BWIDTH%5D%20%E9%AB%98%3A%20%5BHEIGHT%5D%20%E5%B7%A6%3A%20%5BLEFT%5D%20%E4%B8%8A%3A%20%5BTOP%5D%22%2C%22_patch%20%5BCONTENT_TYPE%5D%20%5BBODY%5D%20to%20%5BUSER_URL%5D%20respond%20%5BRESPONSES_TYPES%5D%20split%20by%20%5BSPLIT%5D%22%3A%22patch%5BCONTENT_TYPE%5D%5BBODY%5D%E7%9A%84%5BUSER_URL%5D%E5%93%8D%E5%BA%94%5BRESPONSES_TYPES%5D%E4%BB%A5%5BSPLIT%5D%E5%88%86%E5%89%B2%22%2C%22_post%20%5BCONTENT_TYPE%5D%20%5BBODY%5D%20to%20%5BUSER_URL%5D%20respond%20%5BRESPONSES_TYPES%5D%20split%20by%20%5BSPLIT%5D%22%3A%22post%5BCONTENT_TYPE%5D%5BBODY%5D%E7%9A%84%5BUSER_URL%5D%E5%93%8D%E5%BA%94%5BRESPONSES_TYPES%5D%E4%BB%A5%5BSPLIT%5D%E5%88%86%E5%89%B2%22%2C%22_put%20%5BCONTENT_TYPE%5D%20%5BBODY%5D%20to%20%5BUSER_URL%5D%20respond%20%5BRESPONSES_TYPES%5D%20split%20by%20%5BSPLIT%5D%22%3A%22put%5BCONTENT_TYPE%5D%5BBODY%5D%E7%9A%84%5BUSER_URL%5D%E5%93%8D%E5%BA%94%5BRESPONSES_TYPES%5D%E4%BB%A5%5BSPLIT%5D%E5%88%86%E5%89%B2%22%2C%22_redirect%20this%20tab%20to%20%5BUSER_URL%5D%22%3A%22%E8%B7%B3%E8%BD%AC%E5%88%B0%5BUSER_URL%5D%22%2C%22_rtt%20in%20ms%22%3A%22%E5%BE%80%E8%BF%94%E6%97%B6%E5%BB%B6%20ms%22%7D%7D)%3B%2F*%20end%20generated%20l10n%20code%20*%2F((Scratch)%20%3D%3E%20%7B%0A%20%20%22use%20strict%22%3B%0A%0A%20%20const%20icon%20%3D%0A%20%20%20%20%22data%3Aimage%2Fsvg%2Bxml%3Bbase64%2CPHN2ZyB2aWV3Qm94PSIwLDAsMjI1LjM1NDgsMjI1LjM1NDgiIGhlaWdodD0iMjI1LjM1NDgiIHdpZHRoPSIyMjUuMzU0OCIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmVyc2lvbj0iMS4xIj48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMTI3LjMyMjc0LC02Ny4zMjI2KSI%2BPGcgc3R5bGU9Im1peC1ibGVuZC1tb2RlOiBub3JtYWwiIHN0cm9rZS1kYXNob2Zmc2V0PSIwIiBzdHJva2UtZGFzaGFycmF5PSIiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgc3Ryb2tlLWxpbmVqb2luPSJtaXRlciIgc3Ryb2tlLWxpbmVjYXA9ImJ1dHQiIHN0cm9rZT0ibm9uZSIgZmlsbC1ydWxlPSJub256ZXJvIiBkYXRhLXBhcGVyLWRhdGE9InsmcXVvdDtpc1BhaW50aW5nTGF5ZXImcXVvdDs6dHJ1ZX0iPjxwYXRoIHN0cm9rZS13aWR0aD0iMCIgZmlsbD0iIzE0NjYwMCIgZD0iTTEyNy4zMjI3NSwxODBjMCwtNjIuMjMwMDEgNTAuNDQ3MzksLTExMi42Nzc0IDExMi42Nzc0LC0xMTIuNjc3NGM2Mi4yMzAwMSwwIDExMi42Nzc0LDUwLjQ0NzM5IDExMi42Nzc0LDExMi42Nzc0YzAsNjIuMjMwMDEgLTUwLjQ0NzM5LDExMi42Nzc0IC0xMTIuNjc3NCwxMTIuNjc3NGMtNjIuMjMwMDEsMCAtMTEyLjY3NzQsLTUwLjQ0NzM5IC0xMTIuNjc3NCwtMTEyLjY3NzR6Ij48L3BhdGg%2BPGcgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSIjZmZmZmZmIj48cGF0aCBkYXRhLXBhcGVyLWRhdGE9InsmcXVvdDtpbmRleCZxdW90OzpudWxsfSIgZD0iTTI2MS4zNjIzNSwxNDYuNjIzNTlsLTUuMTUwOTcsNS4yNzQ2MmwtMTMuMTg1NTEsLTEyLjIzOTg5bDE5LjIzNjg5LC0xOS40OTU4OWMxMC41OTE0NywtMTAuNTkxNDcgMjcuNzU4NCwtMTAuNTkxNDcgMzguMzQxMTIsMGwxMi43ODAzOCwxMi43ODAzOGMxMC41OTE0NywxMC41ODI3MSAxMC41OTE0NywyNy43NDk2NSAwLDM4LjM0MTEyb
258C0zOC4zNDExMiwzOC4zNDExMmMtMTAuNTkxNDcsMTAuNTg2OTUgLTI3Ljc0OTY1LDEwLjU4Njk1IC0zOC4zNDExMiwwbC0xMi43ODAzNywtMTIuNzgwMzdsLTEyLjY3Mzc4LC0xMy4yMjYxMmwxMi4yNjMwNCwtMTIuNDMzbDI1Ljk3MTQ5LDI1LjY1OTEyYzMuNTIxNzQsMy41MjE3NCA5LjI1ODY0LDMuNTIxNzQgMTIuNzgwMzgsMGwzOC4zNDExMiwtMzguMzQxMTJjMy41MzA0OSwtMy41MzA0OSAzLjUzMDQ5LC05LjI1ODY0IDAsLTEyLjc4MDM4bC0xMi43ODAzNywtMTIuNzgwMzdjLTMuNTIxNzQsLTMuNTIxNzMgLTkuMjQ5ODgsLTMuNTMwNDkgLTEyLjc4MDM4LDBsLTEzLjY4MDc5LDEzLjY4MDc5eiI%2BPC9wYXRoPjxwYXRoIGRhdGEtcGFwZXItZGF0YT0ieyZxdW90O2luZGV4JnF1b3Q7Om51bGx9IiBkPSJNMjE4LjYzNzczLDIxMy4zNzY0bDUuMTUwOTcsLTUuMjc0NjJsMTMuMTg1NTEsMTIuMjM5ODlsLTE5LjIzNjg5LDE5LjQ5NTg5Yy0xMC41OTE0NywxMC41OTE0NyAtMjcuNzU4NCwxMC41OTE0NyAtMzguMzQxMTIsMGwtMTIuNzgwMzgsLTEyLjc4MDM4Yy0xMC41OTE0NywtMTAuNTgyNzEgLTEwLjU5MTQ3LC0yNy43NDk2NSAwLC0zOC4zNDExMWwzOC4zNDExMiwtMzguMzQxMTJjMTAuNTkxNDcsLTEwLjU4Njk1IDI3Ljc0OTY1LC0xMC41ODY5NSAzOC4zNDExMiwwbDEyLjc4MDM3LDEyLjc4MDM3bDEyLjY3Mzc4LDEzLjIyNjEybC0xMi4yNjMwNSwxMi40MzNsLTI1Ljk3MTQ4LC0yNS42NTkxMmMtMy41MjE3NCwtMy41MjE3NCAtOS4yNTg2NCwtMy41MjE3NCAtMTIuNzgwMzgsMGwtMzguMzQxMTIsMzguMzQxMTJjLTMuNTMwNDksMy41MzA0OSAtMy41MzA0OSw5LjI1ODY0IDAsMTIuNzgwMzhsMTIuNzgwMzcsMTIuNzgwMzdjMy41MjE3NCwzLjUyMTczIDkuMjQ5ODgsMy41MzA0OSAxMi43ODAzOCwwbDEzLjY4MDc5LC0xMy42ODA3OXoiPjwvcGF0aD48L2c%2BPC9nPjwvZz48L3N2Zz48IS0tcm90YXRpb25DZW50ZXI6MTEyLjY3NzI1NToxMTIuNjc3NDA1LS0%2B%22%3B%0A%0A%20%20const%20fetch_url%20%3D%20(%0A%20%20%20%20%7B%20USER_URL%2C%20BODY%2C%20CONTENT_TYPE%2C%20RESPONSES_TYPES%2C%20SPLIT%20%7D%2C%0A%20%20%20%20METHOD%0A%20%20)%20%3D%3E%20%7B%0A%20%20%20%20SPLIT%20%3D%20String(SPLIT)%3B%0A%20%20%20%20CONTENT_TYPE%20%3D%20Number(CONTENT_TYPE)%3B%0A%20%20%20%20RESPONSES_TYPES%20%3D%0A%20%20%20%20%20%20String(RESPONSES_TYPES)%0A%20%20%20%20%20%20%20%20.split(%22%20%22)%0A%20%20%20%20%20%20%20%20.filter((word)%20%3D%3E%20word%20!%3D%3D%20%22%22).length%20%3E%3D%201%0A%20%20%20%20%20%20%20%20%3F%20String(RESPONSES_TYPES)%0A%20%20%20%20%20%20%20%20%20%20%20%20.split(%22%20%22)%0A%20%20%20%20%20%20%20%20%20%20%20%20.filter((word)%20%3D%3E%20word%20!%3D%3D%20%22%22)%0A%20%20%20%20%20%20%20%20%3A%20%5B%229%22%5D%3B%0A%20%20%20%20let%20single%20%3D%20METHOD%20%3D%3D%3D%20%22GET%22%20%7C%7C%20METHOD%20%3D%3D%3D%20%22DELETE%22%3B%0A%20%20%20%20return%20Scratch.fetch(String(USER_URL)%2C%20%7B%0A%20%20%20%20%20%20method%3A%20METHOD%2C%0A%20%20%20%20%20%20headers%3A%20single%0A%20%20%20%20%20%20%20%20%3F%20%7B%7D%0A%20%20%20%20%20%20%20%20%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%22Content-Type%22%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20CONTENT_TYPE%20%3D%3D%3D%201%20%3F%20%22text%2Fplain%22%20%3A%20%22application%2Fjson%22%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20redirect%3A%20single%20%3F%20%22follow%22%20%3A%20%22follow%22%2C%0A%20%20%20%20%20%20body%3A%20CONTENT_TYPE%20%3D%3D%3D%201%20%3F%20String(BODY)%20%3A%20J
258SON.stringify(BODY)%2C%0A%20%20%20%20%7D)%0A%20%20%20%20%20%20.then((res)%20%3D%3E%20%7B%0A%20%20%20%20%20%20%20%20const%20responses%20%3D%20%5B%5D%3B%0A%20%20%20%20%20%20%20%20for%20(let%20i%20%3D%200%3B%20i%20%3C%3D%20RESPONSES_TYPES.length%20-%201%3B%20i%2B%2B)%20%7B%0A%20%20%20%20%20%20%20%20%20%20switch%20(Number(RESPONSES_TYPES%5Bi%5D))%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20case%201%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20responses.push(res.text())%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20case%202%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20responses.push(JSON.stringify(res.json()))%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20case%203%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20responses.push(String(res.ok))%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20case%204%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20responses.push(res.status)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20case%205%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20responses.push(res.statusText)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20case%206%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20responses.push(res.type)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20case%207%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20responses.push(String(res.redirected))%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20case%208%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20responses.push(res.url)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20case%209%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20default%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20responses.push(single%20%3F%20res.url%20%3A%20String(res.bodyUsed))%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20return%20Promise.all(responses)%3B%0A%20%20%20%20%20%20%7D)%0A%20%20%20%20%20%20.then((arr)%20%3D%3E%20%7B%0A%20%20%20%20%20%20%20%20let%20responses%20%3D%20%22%22%3B%0A%20%20%20%20%20%20%20%20for%20(let%20i%20%3D%200%3B%20i%20%3C%3D%20RESPONSES_TYPES.length%20-%201%3B%20i%2B%2B)%20%7B%0A%20%20%20%20%20%20%20%20%20%20responses%20%2B%3D%20SPLIT%20%2B%20arr%5Bi%5D%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20return%20SPLIT%20%3D%3D%3D%20%22%22%20%3F%20responses%20%3A%20responses.slice(1)%3B%0A%20%20%20%20%20%20%7D)%0A%20%20%20%20%20%20.catch((err)%20%3D%3E%20%7B%0A%20%20%20%20%20%20%20%20console.error(err)%3B%0A%20%20%20%20%20%20%20%20return%20%22%22%3B%0A%20%20%20%20%20%20%7D)%3B%0A%20%20%7D%3B%0A%0A%20%20class%20Network%20%7B%0A%20%20%20%20getInfo()%20%7B%0A%20%20%20%20%20%20return%20%7B%0A%20%20%20%20%20%20%20%20id%3A%20%22truefantomnetwork%22%2C%0A%20%20%20%20%20%20%20%20name%3A%20Scratch.translate(%22Network%22)%2C%0A%0A%20%20%20%20%20%20%20%20color1%3A%20%22%23146600%22%2C%0A%20%20%20%20%20%20%20%20color2%3A%20%22%23125C00%22%2C%0A%20%20%20%20%20%20%20%20color3%3A%20%22%23105200%22%2C%0A%0A%20%20%20%20%20%20%20%20menuIconURI%3A%20icon%2C%0A%0A%20%20%20%20%20%20%20%20blocks%3A%20%5B%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22connected_to_internet_block%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.BOOLEAN%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22connected%20to%20internet%3F%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20hideFromPalette%3A%20true%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22browser_block%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22browser%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%22---%22%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22current_url_block%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22current%20url%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%22---%22%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22network_type_block%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22network%20type%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22network_generation_block%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22network%20generation%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%22---%22%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22downlink_speed_block%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22downlink%20speed%20in%20mb%2Fs%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22downlink_max_speed_block%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22downlink%20max%20speed%20in%20mb%2Fs%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22rtt_block%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22rtt%20in%20ms%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%22---%22%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22get_block%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22get%20%5BUSER_URL%5D%20respond%20%5BRESPONSES_TYPES%5D%20split%20by%20%5BSPLIT%5D%22%0A%20%20%20%20%20%20%20%20%20%20%20%20)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20USER_URL%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22https%3A%2F%2Fhttpbin.org%2Fget%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20RESPONSES_TYPES%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22only_url_response_type%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20SPLIT%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22%20%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22delete_block%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22delete%20%5BUSER_URL%5D%20respond%20%5BRESPONSES_TYPES%5D%20split%20by%20%5BSPLIT%5D%22%0A%20%20%20%20%20%20%20%20%20%20%20%20)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20USER_URL%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22https%3A%2F%2Fhttpbin.org%2Fdelete%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20RESPONSES_TYPES%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22only_url_response_type%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20SPLIT%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22%20%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22post_block%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22post%20%5BCONTENT_TYPE%5D%20%5BBODY%5D%20to%20%5BUSER_URL%5D%20respond%20%5BRESPONSES_TYPES%5D%20split%20by%20%5BSPLIT%5D%22%0A%20%20%20%20%20%20%20%20%20%20%20%20)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20USER_URL%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22https%3A%2F%2Fhttpbin.org%2Fpost%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20BODY%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20Scratch.translate(%22apple%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20CONTENT_TYPE%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22content_type%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20RESPONSES_TYPES%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22response_type%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20SPLIT%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22%20%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22put_block%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22put%20%5BCONTENT_TYPE%5D%20%5BBODY%5D%20to%20%5BUSER_URL%5D%20respond%20%5BRESPONSES_TYPES%5D%20split%20by%20%5BSPLIT%5D%22%0A%20%20%20%20%20%20%20%20%20%20%20%20)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20USER_URL%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22https%3A%2F%2Fhttpbin.org%2Fput%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20BODY%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20Scratch.translate(%22apple%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20CONTENT_TYPE%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22content_type%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20RESPONSES_TYPES%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22response_type%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20SPLIT%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22%20%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22patch_block%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22patch%20%5BCONTENT_TYPE%5D%20%5BBODY%5D%20to%20%5BUSER_URL%5D%20respond%20%5BRESPONSES_TYPES%5D%20split%20by%20%5BSPLIT%5D%22%0A%20%20%20%20%20%20%20%20%20%20%20%20)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20USER_URL%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22https%3A%2F%2Fhttpbin.org%2Fpatch%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20BODY%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20Scratch.translate(%22apple%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20CONTENT_TYPE%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22content_type%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20RESPONSES_TYPES%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22response_type%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20SPLIT%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22%20%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%22---%22%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22open_link_block%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22open%20%5BUSER_URL%5D%20in%20new%20tab%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20USER_URL%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22https%3A%2F%2Fextensions.turbowarp.org%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%2
2580%20%20%20%20%20%20%20%20%20opcode%3A%20%22open_window_block%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22open%20%5BUSER_URL%5D%20in%20new%20window%20with%20width%3A%20%5BWIDTH%5D%20height%3A%20%5BHEIGHT%5D%20left%3A%20%5BLEFT%5D%20top%3A%20%5BTOP%5D%22%0A%20%20%20%20%20%20%20%20%20%20%20%20)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20USER_URL%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22https%3A%2F%2Fextensions.turbowarp.org%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20WIDTH%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22default%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20HEIGHT%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22default%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20LEFT%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22default%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20TOP%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22default%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22redirect_link_block%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22redirect%20this%20tab%20to%20%5BUSER_URL%5D%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20USER_URL%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22https%3A%2F%2Fextensions.turbowarp.org%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%5D%2C%0A%0A%20%20%20%20%20%20%20%20menus%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20content_type%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20acceptReporters%3A%20true%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20items%3A%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22(1)%20text%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20value%3A%20%221%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22(2)%20json%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20value%3A%20%222%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20only_url_response_type%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20acceptReporters%3A%20true%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20items%3A%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22(1)%20text%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20value%3A%20%221%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22(2)%20json%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20value%3A%20%222%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22(3)%20status%20ok%3F%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20value%3A%20%223%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22(4)%20status%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20value%3A%20%224%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22(5)%20status%20text%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20value%3A%20%225%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22(5%201)%20status%20text%20and%20text%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20value%3A%20%225%201%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22(6)%20type%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20value%3A%20%226%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22(6%204)%20type%20and%20status%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20value%3A%20%226%204%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22(7)%20redirected%3F%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20value%3A%20%227%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22(8)%20url%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20value%3A%20%228%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20response_type%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20acceptReporters%3A%20true%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20items%3A%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22(1)%20text%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20value%3A%20%221%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22(2)%20json%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20value%3A%20%222%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22(3)%20status%20ok%3F%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20value%3A%20%223%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22(4)%20status%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20value%3A%20%224%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22(5)%20status%20text%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20value%3A%20%225%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22(5%201)%20status%20text%20and%20text%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20value%3A%20%225%201%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22(6)%20type%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20value%3A%20%226%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22(6%204)%20type%20and%20status%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20value%3A%20%226%204%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22(7)%20redirected%3F%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20value%3A%20%227%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22(8)%20url%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20value%3A%20%228%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22(9)%20body%20used%3F%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20value%3A%20%229%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20default%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20acceptReporters%3A%20true%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20items%3A%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22default%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20value%3A%20%22default%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20connected_to_internet_block()%20%7B%0A%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20return%20navigator.onLine%3B%0A%20%20%20%20%20%20%7D%20catch%20(err)%20%7B%0A%20%20%20%20%20%20%20%20return%20false%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20browser_block()%20%7B%0A%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20let%20has%20%3D%20(input)%20%3D%3E%20navigator.userAgent.includes(input)%3B%0A%20%20%20%20%20%20%20%20if%20(has(%22Firefox%22))%20return%20%22firefox%22%3B%0A%20%20%20%20%20%20%20%20if%20(has(%22SamsungBrowser%22))%20return%20%22samsung%20internet%22%3B%0A%20%20%20%20%20%20%20%20if%20((has(%22Opera%22)%20%7C%7C%20has(%22OPR%22))%20%26%26%20has(%22GX%22))%20return%20%22opera%20gx%22%3B%0A%20%20%20%20%20%20%20%20if%20(has(%22Opera%22)%20%7C%7C%20has(%22OPR%22))%20return%20%22opera%22%3B%0A%20%20%20%20%20%20%20%20if%20(has(%22Trident%22))%20return%20%22internet%20explorer%22%3B%0A%20%20%20%20%20%20%20%20if%20(has(%22Edge%22))%20return%20%22legacy%22%3B%0A%20%20%20%20%20%20%20%20if%20(has(%22Edg%22))%20return%20%22edge%22%3B%0A%20%20%20%20%20%20%20%20if%20(has(%22YaBrowser%22)%20%7C%7C%20has(%22YaSearchBrowser%22))%20return%20%22yandex%22%3B%0A%20%20%20%20%20%20%20%20if%20(has(%22Miui%22))%20return%20%22mi%20browser%22%3B%0A%20%20%20%20%20%20%20%20if%20(has(%22UBrowser%22))%20return%20%22uc%20browser%22%3B%0A%20%20%20%20%20%20%20%20if%20(has(%22Chrome%22))%20return%20%22chromium%22%3B%0A%20%20%20%20%20%20%20%20if%20(has(%22Safari%22))%20return%20%22safari%22%3B%0A%20%20%20%20%20%20%20%20return%20%22%22%3B%0A%20%20%20%20%20%20%7D%20catch%20(err)%20%7B%0A%20%20%20%20%20%20%20%20return%20%22%22%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20current_url_block()%20%7B%0A%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20return%20document.URL%20%7C%7C%20%22%22%3B%0A%20%20%20%20%20%20%7D%20catch%20(err)%20%7B%0A%20%20%20%20%20%20%20%20return%20%22%22%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20network_type_block()%20%7B%0A%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20switch%20(navigator.connection.type)%20%7B%0A%20%20%20%20%20%20%20%20%20%20case%20%22bluetooth%22%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20%22bluetooth%22%3B%0A%20%20%20%20%20%20%20%20%20%20case%20%22cellular%22%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20%22cellular%22%3B%0A%20%20%20%20%20%20%20%20%20%20case%20%22ethernet%22%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20%22ethernet%22%3B%0A%20%20%20%20%20%20%20%20%20%20case%20%22wifi%22%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20%22wi-fi%22%3B%0A%20%20%20%20%20%20%20%20%20%20case%20%22wimax%22%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20%22wimax%22%3B%0A%20%20%20%20%20%20%20%20%20%20default%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20%22%22%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%20catch%20(err)%20%7B%0A%20%20%20%20%20%20%20%20return%20%22%22%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20network_generation_block()%20%7B%0A%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20switch%20(navigator.connection.effectiveType)%20%7B%0A%20%20%20%20%20%20%20%20%20%20case%20%22slow-2g%22%3A%0A%20%20%20%20%20%20%20%20%20%20case%20%222g%22%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20%222g%22%3B%0A%20%20%20%20%20%20%20%20%20%20case%20%223g%22%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20%223g%22%3B%0A%20%20%20%20%20%20%20%20%20%20case%20%224g%22%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20%224g%22%3B%0A%20%20%20%20%20%20%20%20%20%20default%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20%22%22%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%20catch%20(err)%20%7B%0A%20%20%20%20%20%20%20%20return%20%22%22%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20downlink_speed_block()%20%7B%0A%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20return%20navigator.connection.downlink%20%7C%7C%20%22%22%3B%0A%20%20%20%20%20%20%7D%20catch%20(err)%20%7B%0A%20%20%20%20%20%20%20%20return%20%22%22%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20downlink_max_speed_block()%20%7B%0A%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20return%20navigator.connection.downlinkMax%20%7C%7C%20%22%22%3B%0A%20%20%20%20%20%20%7D%20catch%20(err)%20%7B%0A%20%20%20%20%20%20%20%20return%20%22%22%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20rtt_block()%20%7B%0A%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20return%20navigator.connection.rtt%20%7C%7C%20%22%22%3B%0A%20%20%20%20%20%20%7D%20catch%20(err)%20%7B%0A%20%20%20%20%20%20%20%20return%20%22%22%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20get_block(args)%20%7B%0A%20%20%20%20%20%20return%20fetch_url(args%2C%20%22GET%22)%3B%0A%20%20%20%20%7D%0A%20%20%20%20delete_block(args)%20%7B%0A%20%20%20%20%20%20return%20fetch_url(args%2C%20%22DELETE%22)%3B%0A%20%20%20%20%7D%0A%20%20%20%20post_block(args)%20%7B%0A%20%20%20%20%20%20return%20fetch_url(args%2C%20%22POST%22)%3B%0A%20%20%20%20%7D%0A%20%20%20%20put_block(args)%20%7B%0A%20%20%20%20%20%20return%20fetch_url(args%2C%20%22PUT%22)%3B%0A%20%20%20%20%7D%0A%20%20%20%20patch_block(args)%20%7B%0A%20%20%20%20%20%20return%20fetch_url(args%2C%20%22PATCH%22)%3B%0A%20%20%20%20%7D%0A%20%20%20%20open_link_block(%7B%20USER_URL%20%7D)%20%7B%0A%20%20%20%20%20%20Scratch.openWindow(USER_URL)%3B%0A%20%20%20%20%7D%0A%20%20%20%20open_window_block(%7B%20USER_URL%2C%20WIDTH%2C%20HEIGHT%2C%20LEFT%2C%20TOP%20%7D)%20%7B%0A%20%20%20%20%20%20let%20params%20%3D%20%22popup%3D1%22%3B%0A%20%20%20%20%20%20params%20%2B%3D%20isNaN(WIDTH)%0A%20%20%20%20%20%20%20%20%3F%20%22%22%0A%20%20%20%20%20%20%20%20%3A%20%60%2Cwidth%3D%24%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20Number(WIDTH)%20%3C%20100%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3F%20100%0A%20%20%20%20%20
258%20%20%20%20%20%20%20%20%20%3A%20Number(WIDTH)%20%3E%20window.screen.width%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3F%20window.screen.width%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3A%20Number(WIDTH)%0A%20%20%20%20%20%20%20%20%20%20%7D%60%3B%0A%20%20%20%20%20%20params%20%2B%3D%20isNaN(HEIGHT)%0A%20%20%20%20%20%20%20%20%3F%20%22%22%0A%20%20%20%20%20%20%20%20%3A%20%60%2Cheight%3D%24%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20Number(HEIGHT)%20%3C%20100%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3F%20100%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3A%20Number(HEIGHT)%20%3E%20window.screen.height%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3F%20window.screen.height%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3A%20Number(HEIGHT)%0A%20%20%20%20%20%20%20%20%20%20%7D%60%3B%0A%20%20%20%20%20%20params%20%2B%3D%20isNaN(LEFT)%0A%20%20%20%20%20%20%20%20%3F%20%22%22%0A%20%20%20%20%20%20%20%20%3A%20%60%2Cleft%3D%24%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20Number(LEFT)%20%3C%200%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3F%200%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3A%20Number(LEFT)%20%3E%20window.screen.width%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3F%20window.screen.width%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3A%20Number(LEFT)%0A%20%20%20%20%20%20%20%20%20%20%7D%60%3B%0A%20%20%20%20%20%20params%20%2B%3D%20isNaN(TOP)%0A%20%20%20%20%20%20%20%20%3F%20%22%22%0A%20%20%20%20%20%20%20%20%3A%20%60%2Ctop%3D%24%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20Number(TOP)%20%3C%200%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3F%200%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3A%20Number(TOP)%20%3E%20window.screen.height%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3F%20window.screen.height%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3A%20Number(TOP)%0A%20%20%20%20%20%20%20%20%20%20%7D%60%3B%0A%20%20%20%20%20%20Scratch.openWindow(String(USER_URL)%2C%20params)%3B%0A%20%20%20%20%7D%0A%20%20%20%20redirect_link_block(%7B%20USER_URL%20%7D)%20%7B%0A%20%20%20%20%20%20Scratch.redirect(USER_URL)%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20Scratch.extensions.register(new%20Network())%3B%0A%7D)(Scratch)%3B%0A%20%7D)(Scratch)%3B","data:text/javascript;,(function(Scratch)%20%7B%20%2F%2F%20Name%3A%20Iframe%0A%2F%2F%20ID%3A%20iframe%0A%2F%2F%20Description%3A%20Display%20webpages%20or%20HTML%20over%20the%20stage.%0A%2F%2F%20Context%3A%20%22iframe%22%20is%20an%20HTML%20element%20that%20lets%20websites%20embed%20other%20websites.%0A%2F%2F%20License%3A%20MIT%20AND%20MPL-2.0%0A%0A%2F*%20generated%20l10n%20code%20*%2FScratch.translate.setup(%7B%22de%22%3A%7B%22_height%22%3A%22H%C3%B6he%22%2C%22_width%22%3A%22Weite%22%7D%2C%22fi%22%3A%7B%22_It%20works!%22%3A%22Toimii!%22%2C%22_close%20iframe%22%3A%22sulje%20iframe%22%2C%22_height%22%3A%22korkeus%22%2C%22_hide%20iframe%22%3A%22piilota%20iframe%22%2C%22_iframe%20%5BMENU%5D%22%3A%22iframen%20%5BMENU%5D%22%2C%22_interactive%22%3A%22vuorovaikutteisuus%22%2C%22_resize%20behavior%22%3A%22k%C3%A4yt%C3%B6s%20kokoa%20muuttaessa%22%2C%22_scale%22%3A%22skaalaus%22%2C%22_set%20iframe%20height%20to%20%5BHEIGHT%5D%22%3A%22aseta%20iframen%20korkeudeksi%20%5BHEIGHT%5D%22%2C%22_set%20iframe%20interactive%20to%20%5BINTERACTIVE%5D%22%3A%22iframen%20vuorovaikutteisuus%20on%20p%C3%A4%C3%A4ll%C3%A4%20%3D%20%20%5BINTERACTIVE%5D%22%2C%22_set%20iframe%20resize%20behavior%20to%20%5BRESIZE%5D%22%3A%22aseta%20iframen%20k%C3%A4yt%C3%B6kseksi%20kokoa%20muuttaessa%20%5BRESIZE%5D%22%2C%22_set%20iframe%20width%20to%20%5BWIDTH%5D%22%3A%22aseta%20iframen%20leveydeksi%20%5BWIDTH%5D%22%2C%22_set%20iframe%20x%20position%20to%20%5BX%5D%22%3A%22aseta%20iframen%20x-sijainniksi%20%5BX%5D%22%2C%22_set%20iframe%20y%20position%20to%20%5BY%5D%22%3A%22aseta%20iframen%20y-sijainniksi%20%5BY%5D%22%2C%22_show%20HTML%20%5BHTML%5D%22%3A%22n%C3%A4yt%C3%A4%20HTML-koodi%20%5BHTML%5D%22%2C%22_show%20iframe%22%3A%22n%C3%A4yt%C3%A4%20iframe%22%2C%22_show%20website%20%5BURL%5D%22%3A%22n%C3%A4yt%C3%A4%20verkkosivusto%20%5BURL%5D%22%2C%22_url%22%3A%22URL-osoite%22%2C%22_viewport%22%3A%22kuvaportti%22%2C%22_visible%22%3A%22n%C3%A4kyvyys%22%2C%22_width%22%3A%22leveys%22%7D%2C%22fr%22%3A%7B%22_height%22%3A%22hauteur%22%2C%22_width%22%3A%22largeur%22%7D%2C%22it%22%3A%7B%22_It%20works!%22%3A%22Funziona!%22%2C%22_close%20iframe%22%3A%22chiudi%20iframe%22%2C%22_height%22%3A%22altezza%22%2C%22_hide%20iframe%22%3A%22nascondi%20iframe%22%2C%22_iframe%20%5BMENU%5D%22%3A%22%5BMENU%5D%20dell'iframe%22%2C%22_iframe%20message%22%3A%22messaggio%20iframe%22%2C%22_interactive%22%3A%22interattivit%C3%A0%22%2C%22_resize%20behavior%22%3A%22comportamento%20quando%20ridimensionato%22%2C%22_scale%22%3A%22scala%22%2C%22_send%20message%20%5BMESSAGE%5D%20to%20iframe%22%3A%22invia%20messaggi
258o%20%5BMESSAGE%5D%20a%20iframe%22%2C%22_set%20iframe%20height%20to%20%5BHEIGHT%5D%22%3A%22imposta%20larghezza%20dell'iframe%20a%20%5BHEIGHT%5D%22%2C%22_set%20iframe%20interactive%20to%20%5BINTERACTIVE%5D%22%3A%22imposta%20interattivit%C3%A0%20iframe%20a%20%5BINTERACTIVE%5D%22%2C%22_set%20iframe%20resize%20behavior%20to%20%5BRESIZE%5D%22%3A%22imposta%20comportamento%20dell'iframe%20quando%20ridimensionato%20a%20%5BRESIZE%5D%22%2C%22_set%20iframe%20width%20to%20%5BWIDTH%5D%22%3A%22imposta%20larghezza%20dell'iframe%20a%20%5BWIDTH%5D%22%2C%22_set%20iframe%20x%20position%20to%20%5BX%5D%22%3A%22imposta%20posizione%20x%20dell'iframe%20a%20%5BX%5D%22%2C%22_set%20iframe%20y%20position%20to%20%5BY%5D%22%3A%22imposta%20posizione%20y%20dell'iframe%20a%5BY%5D%22%2C%22_show%20HTML%20%5BHTML%5D%22%3A%22mostra%20HTML%20%5BHTML%5D%22%2C%22_show%20iframe%22%3A%22mostra%20iframe%22%2C%22_show%20website%20%5BURL%5D%22%3A%22mostra%20sito%20%5BURL%5D%22%2C%22_visible%22%3A%22visibilit%C3%A0%22%2C%22_when%20message%20received%20from%20iframe%22%3A%22quando%20ricevi%20messaggi
258o%20da%20iframe%22%2C%22_width%22%3A%22larghezza%22%7D%2C%22ja%22%3A%7B%22_Iframe%22%3A%22%E5%9F%8B%E3%82%81%E8%BE%BC%E3%81%BF%22%2C%22_It%20works!%22%3A%22%E3%81%86%E3%81%BE%E3%81%8F%E5%8B%95%E4%BD%9C%E3%81%97%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99!%22%2C%22_close%20iframe%22%3A%22%E3%83%9A%E3%83%BC%E3%82%B8%E3%82%92%E9%96%89%E3%81%98%E3%82%8B%22%2C%22_height%22%3A%22%E9%AB%98%E3%81%95%22%2C%22_hide%20iframe%22%3A%22%E3%83%9A%E3%83%BC%E3%82%B8%E3%82%92%E9%9A%A0%E3%81%99%22%2C%22_iframe%20%5BMENU%5D%22%3A%22%E3%83%9A%E3%83%BC%E3%82%B8%E3%81%AE%5BMENU%5D%22%2C%22_interactive%22%3A%22%E5%8B%95%E3%81%8D%E3%81%8C%E3%81%82%E3%82%8B%E3%81%8B%3F%22%2C%22_resize%20behavior%22%3A%22%E3%82%B5%E3%82%A4%E3%82%BA%E5%A4%89%E6%9B%B4%E5%8B%95%E4%BD%9C%22%2C%22_scale%22%3A%22%E3%82%B9%E3%82%B1%E3%83%BC%E3%83%AB%22%2C%22_set%20iframe%20height%20to%20%5BHEIGHT%5D%22%3A%22%E3%83%9A%E3%83%BC%E3%82%B8%E3%81%AE%E9%AB%98%E3%81%95%E3%82%92%5BHEIGHT%5D%E3%81%AB%E3%81%99%E3%82%8B%22%2C%22_set%20iframe%20interactive%20to%20%5BINTERACTIVE%5D%22%3A%22%E3%83%9A%E3%83%BC%E3%82%B8%E3%81%8C%E5%8B%95%E3%81%84%E3%81%A6%E3%81%84%E3%82%8B%E3%81%8B%E3%82%92%5BINTERACTIVE%5D%E3%81%AB%E3%81%99%E3%82%8B%22%2C%22_set%20iframe%20resize%20behavior%20to%20%5BRESIZE%5D%22%3A%22%E5%9F%8B%E3%82%81%E8%BE%BC%E3%81%BF%E3%81%AE%E3%82%B5%E3%82%A4%E3%82%BA%E5%A4%89%E6%9B%B4%E5%8B%95%E4%BD%9C%E3%82%92%5BRESIZE%5D%E3%81%AB%E3%81%99%E3%82%8B%22%2C%22_set%20iframe%20width%20to%20%5BWIDTH%5D%22%3A%22%E3%83%9A%E3%83%BC%E3%82%B8%E3%81%AE%E6%A8%AA%E5%B9%85%E3%82%92%5BWIDTH%5D%E3%81%AB%E3%81%99%E3%82%8B%22%2C%22_set%20iframe%20x%20position%20to%20%5BX%5D%22%3A%22%E3%83%9A%E3%83%BC%E3%82%B8%E3%81%AEx%E5%BA%A7%E6%A8%99%E3%82%92%5BX%5D%E3%81%AB%E3%81%99%E3%82%8B%22%2C%22_set%20iframe%20y%20position%20to%20%5BY%5D%22%3A%22%E3%83%9A%E3%83%BC%E3%82%B8%E3%81%AEy%E5%BA%A7%E6%A8%99%E3%82%92%5BY%5D%E3%81%AB%E3%81%99%E3%82%8B%22%2C%22_show%20HTML%20%5BHTML%5D%22%3A%22%5BHTML%5D%E3%81%AEHTML%E3%82%92%E8%A1%A8%E7%A4%BA%E3%81%99%E3%82%8B%22%2C%22_show%20iframe%22%3A%22%E3%83%9A%E3%83%BC%E3%82%B8%E3%82%92%E8%A1%A8%E7%A4%BA%E3%81%99%E3%82%8B%22%2C%22_show%20website%20%5BURL%5D%22%3A%22%5BURL%5D%E3%81%AE%E3%82%A6%E3%82%A7%E3%83%96%E3%82%B5%E3%82%A4%E3%83%88%E3%82%92%E8%A1%A8%E7%A4%BA%E3%81%99%E3%82%8B%22%2C%22_url%22%3A%22URL%22%2C%22_visible%22%3A%22%E8%A6%8B%E3%81%88%E3%82%8B%E3%81%8B%3F%22%2C%22_width%22%3A%22%E6%A8%AA%E5%B9%85%22%7D%2C%22ko%22%3A%7B%22_close%20iframe%22%3A%22iframe%20%EB%8B%AB%EA%B8%B0%22%2C%22_height%22%3A%22%EB%86%92%EC%9D%B4%22%2C%22_hide%20iframe%22%3A%22iframe%20%EC%88%A8%EA%B8%B0%EA%B8%B0%22%2C%22_iframe%20%5BMENU%5D%22%3A%22iframe%EC%9D%98%20%5BMENU%5D%22%2C%22_interactive%22%3A%22%EC%83%81%ED%98%B8%EC%9E%91%EC%9A%A9%20%EC%97%AC%EB%B6%80%22%2C%22_resize%20behavior%22%3A%22%ED%81%AC%EA%B8%B0%20%EC%A1%B0%EC%A0%95%20%EB%B0%A9%EC%8B%9D%22%2C%22_set%20iframe%20height%20to%20%5BHEIGHT%5D%22%3A%22iframe%20%EB%86%92%EC%9D%B4%EB%A5%BC%20%5BHEIGHT%5D(%EC%9C%BC)%EB%A1%9C%20%EC%A0%95%ED%95%98%EA%B8%B0%22%2C%22_set%20iframe%20interactive%20to%20%5BINTERACTIVE%5D%22%3A%22iframe%20%EC%83%81%ED%98%B8%EC%9E%91%EC%9A%A9%20%EC%97%AC%EB%B6%80%EB%A5%BC%20%5BINTERACTIVE%5D(%EC%9C%BC)%EB%A1%9C%20%EC%A0%95%ED%95%98%EA%B8%B0%22%2C%22_set%20iframe%20resize%20behavior%20to%20%5BRESIZE%5D%22%3A%22iframe%20%ED%81%AC%EA%B8%B0%20%EC%A1%B0%EC%A0%95%20%EB%B0%A9%EC%8B%9D%EC%9D%84%20%5BRESIZE%5D(%EC%9C%BC)%EB%A1%9C%20%EC%A0%95%ED%95%98%EA%B8%B0%22%2C%22_set%20iframe%20width%20to%20%5BWIDTH%5D%22%3A%22iframe%20%EB%84%93%EC%9D%B4%EB%A5%BC%20%5BWIDTH%5D(%EC%9C%BC)%EB%A1%9C%20%EC%A0%95%ED%95%98%EA%B8%B0%22%2C%22_set%20iframe%20x%20position%20to%20%5BX%5D%22%3A%22iframe%20x%EC%A2%8C%ED%91%9C%EB%A5%BC%20%5BX%5D(%EC%9C%BC)%EB%A1%9C%20%EC%A0%95%ED%95%98%EA%B8%B0%22%2C%22_set%20iframe%20y%20position%20to%20%5BY%5D%22%3A%22iframe%20y%EC%A2%8C%ED%91%9C%EB%A5%BC%20%5BY%5D(%EC%9C%BC)%EB%A1%9C%20%EC%A0%95%ED%95%98%EA%B8%B0%22%2C%22_show%20HTML%20%5BHTML%5D%22%3A%22HTML%20%5BHTML%5D%20%EB%B3%B4%EC%9D%B4%EA%B8%B0%22%2C%22_show%20iframe%22%3A%22iframe%20%EB%B3%B4%EC%9D%B4%EA%B8%B0%22%2C%22_show%20website%20%5BURL%5D%22%3A%22%EC%9B%B9%EC%82%AC%EC%9D%B4%ED%8A%B8%20%5BURL%5D%20%EB%B3%B4%EC%9D%B4%EA%B8%B0%22%2C%22_visible%22%3A%22%EB%B3%B4%EC%9E%84%20%EC%97%AC%EB%B6%80%22%2C%22_width%22%3A%22%EB%84%93%EC%9D%B4%22%7D%2C%22nb%22%3A%7B%22_Iframe%22%3A%22IFrame%22%2C%22_It%20works!%22%3A%22Det%20fungerer!%22%2C%22_close%20iframe%22%3A%22lukk%20iframe%22%2C%22_height%22%3A%22h%C3%B8yde%22%2C%22_hide%20iframe%22%3A%22skjul%20iframe%22%2C%22_interactive%22%3A%22interaktiv%22%2C%22_resize%20behavior%22%3A%22endre%20st%C3%B8rrelsesoppf%C3%B8rsel%22%2C%22_scale%22%3A%22skala%22%2C%22_set%20iframe%20height%20to%20%5BHEIGHT%5D%22%3A%22set%20iframe%20h%C3%B8yde%20til%20%5BHEIGHT%5D%22%2C%22_set%20iframe%20interactive%20to%20%5BINTERACTIVE%5D%22%3A%22sett%20iframe%20interaktiv%20til%20%5BINTERACTIVE%5D%22%2C%22_set%20iframe%20resize%20behavior%20to%20%5BRESIZE%5D%22%3A%22sett%20iframe%20resize%20oppf%C3%B8rsel%20til%20%5BRESIZE%5D%22%2C%22_set%20iframe%20width%20to%20%5BWIDTH%5D%22%3A%22set%20iframe%20bredde%20til%20%5BWIDTH%5D%22%2C%22_set%20iframe%20x%20position%20to%20%5BX%5D%22%3A%22sett%20iframe%20x-posisjon%20til%20%5BX%5D%22%2C%22_set%20iframe%20y%20position%20to%20%5BY%5D%22%3A%22sett%20iframe%20y-posisjon%20til%20%5BY%5D%22%2C%22_show%20HTML%20%5BHTML%5D%22%3A%22vis%20HTML%20%5BHTML%5D%22%2C%22_show%20iframe%22%3A%22vis%20iframe%22%2C%22_show%20website%20%5BURL%5D%22%3A%22vis%20nettside%20%5BURL%5D%22%2C%22_viewport%22%3A%22visningsomr%C3%A5de%22%2C%22_visible%22%3A%22synlig%22%2C%22_width%22%3A%22bredde%22%7D%2C%22nl%22%3A%7B%22_It%20works!%22%3A%22Het%20werkt!%22%2C%22_close%20iframe%22%3A%22sluit%20iframe%22%2C%22_height%22%3A%22hoogte%22%2C%22_hide%20iframe%22%3A%22verberg%20iframe%22%2C%22_iframe%20%5BMENU%5D%22%3A%22%5BMENU%5D%20van%20iframe%22%2C%22_interactive%22%3A%22interactief%3F%22%2C%22_resize%20behavior%22%3A%22formaatwijzigingsgedrag%22%2C%22_scale%22%3A%22speelveld%22%2C%22_set%20iframe%20height%20to%20%5BHEIGHT%5D%22%3A%22maak%20hoogte%20van%20iframe%20%5BHEIGHT%5D%22%2C%22_set%20iframe%20interactive%20to%20%5BINTERACTIVE%5D%22%3A%22maak%20iframe%20interactief%3F%20%5BINTERACTIVE%5D%22%2C%22_set%20iframe%20resize%20behavior%20to%20%5BRESIZE%5D%22%3A%22maak%20formaatwijzigingsgedrag%20van%20iframe%20%5BRESIZE%5D%22%2C%22_set%20iframe%20width%20to%20%5BWIDTH%5D%22%3A%22maak%20breedte%2
2580van%20iframe%20%5BWIDTH%5D%22%2C%22_set%20iframe%20x%20position%20to%20%5BX%5D%22%3A%22maak%20x-positie%20van%20iframe%20%5BX%5D%22%2C%22_set%20iframe%20y%20position%20to%20%5BY%5D%22%3A%22maak%20y-positie%20van%20iframe%20%5BY%5D%22%2C%22_show%20HTML%20%5BHTML%5D%22%3A%22toon%20HTML%20%5BHTML%5D%22%2C%22_show%20iframe%22%3A%22toon%20iframe%22%2C%22_show%20website%20%5BURL%5D%22%3A%22toon%20website%20%5BURL%5D%22%2C%22_viewport%22%3A%22beeldscherm%22%2C%22_visible%22%3A%22zichtbaar%3F%22%2C%22_width%22%3A%22breedte%22%7D%2C%22pl%22%3A%7B%22_height%22%3A%22wysoko%C5%9B%C4%87%22%2C%22_scale%22%3A%22skala%22%2C%22_width%22%3A%22szeroko%C5%9B%C4%87%22%7D%2C%22ru%22%3A%7B%22_It%20works!%22%3A%22%D0%A0%D0%B0%D0%B1%D0%BE%D1%82%D0%B0%D0%B5%D1%82!%22%2C%22_close%20iframe%22%3A%22%D0%B7%D0%B0%D0%BA%D1%80%D1%8B%D1%82%D1%8C%20iframe%22%2C%22_height%22%3A%22%D0%B2%D1%8B%D1%81%D0%BE%D1%82%D0%B0%22%2C%22_hide%20iframe%22%3A%22%D1%81%D0%BF%D1%80%D1%8F%D1%82%D0%B0%D1%82%D1%8C%20iframe%22%2C%22_iframe%20message%22%3A%22%D1%81%D0%BE%D0%BE%D0%B1%D1%89%D0%B5%D0%BD%D0%B8%D0%B5%20iframe%22%2C%22_interactive%22%3A%22%D0%B2%D0%B7%D0%B0%D0%B8%D0%BC%D0%BE%D0%B4%D0%B5%D0%B9%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D0%BE%D1%81%D1%82%D1%8C%22%2C%22_resize%20behavior%22%3A%22%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%BD%D0%BE%D0%B5%20%D0%B8%D0%B7%D0%BC%D0%B5%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5%20%D1%80%D0%B0%D0%B7%D0%BC%D0%B5%D1%80%D0%B0%22%2C%22_scale%22%3A%22%D1%80%D0%B0%D0%B7%D0%BC%D0%B5%D1%80%22%2C%22_send%20message%20%5BMESSAGE%5D%20to%20iframe%22%3A%22%D0%BE%D1%82%D0%BF%D1%80%D0%B0%D0%B2%D0%B8%D1%82%D1%8C%20%D1%81%D0%BE%D0%BE%D0%B1%D1%89%D0%B5%D0%BD%D0%B8%D0%B5%20%5BMESSAGE%5D%20%D0%B2%20iframe%22%2C%22_set%20iframe%20height%20to%20%5BHEIGHT%5D%22%3A%22%D0%B7%D0%B0%D0%B4%D0%B0%D1%82%D1%8C%20%D0%B2%D1%8B%D1%81%D0%BE%D1%82%D1%83%20iframe%20%D0%B2%20%5BHEIGHT%5D%22%2C%22_set%20iframe%20interactive%20to%20%5BINTERACTIVE%5D%22%3A%22%D0%B7%D0%B0%D0%B4%D0%B0%D1%82%D1%8C%20%D0%B2%D0%B7%D0%B0%D0%B8%D0%BC%D0%BE%D0%B4%D0%B5%D0%B9%D1%81%D1%82%D0%B2%D0%B8%D0%B5%20%D1%81%20iframe%20%D0%BD%D0%B0%20%5BINTERACTIVE%5D%22%2C%22_set%20iframe%20resize%20behavior%20to%20%5BRESIZE%5D%22%3A%22%D0%B7%D0%B0%D0%B4%D0%B0%D1%82%D1%8C%20%D0%BF%D0%BE%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5%20%D0%B8%D0%B7%D0%BC%D0%B5%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F%20%D1%80%D0%B0%D0%B7%D0%BC%D0%B5%D1%80%D0%B0%20iframe%20%D0%BD%D0%B0%20%5BRESIZE%5D%22%2C%22_set%20iframe%20width%20to%20%5BWIDTH%5D%22%3A%22%D0%B7%D0%B0%D0%B4%D0%B0%D1%82%D1%8C%20%D1%88%D0%B8%D1%80%D0%B8%D0%BD%D1%83%20iframe%20%D0%B2%20%5BWIDTH%5D%22%2C%22_set%20iframe%20x%20position%20to%20%5BX%5D%22%3A%22%D0%B7%D0%B0%D0%B4%D0%B0%D1%82%D1%8C%20%D0%BF%D0%BE%D0%B7%D0%B8%D1%86%D0%B8%D1%8E%20iframe%20x%20%D0%B2%20%5BX%5D%22%2C%22_set%20iframe%20y%20position%20to%20%5BY%5D%22%3A%22%D0%B7%D0%B0%D0%B4%D0%B0%D1%82%D1%8C%20%D0%BF%D0%BE%D0%B7%D0%B8%D1%86%D0%B8%D1%8E%20iframe%20y%20%D0%B2%20%5BY%5D%22%2C%22_show%20HTML%20%5BHTML%5D%22%3A%22%D0%BF%D0%BE%D0%BA%D0%B0%D0%B7%D0%B0%D1%82%D1%8C%20HTML%20%5BHTML%5D%22%2C%22_show%20iframe%22%3A%22%D0%BF%D0%BE%D0%BA%D0%B0%D0%B7%D0%B0%D1%82%D1%8C%20iframe%22%2C%22_show%20website%20%5BURL%5D%22%3A%22%D0%BF%D0%BE%D0%BA%D0%B0%D0%B7%D0%B0%D1%82%D1%8C%20%D0%B2%D0%B5%D0%B1%D1%81%D0%B0%D0%B9%D1%82%20%5BURL%5D%22%2C%22_viewport%22%3A%22%D0%BE%D0%B1%D0%BB%D0%B0%D1%81%D1%82%D1%8C%20%D0%BF%D1%80%D0%BE%D1%81%D0%BC%D0%BE%D1%82%D1%80%D0%B0%22%2C%22_visible%22%3A%22%D0%B2%D0%B8%D0%B4%D0%B5%D0%BD%22%2C%22_when%20message%20received%20from%20iframe%22%3A%22%D0%BA%D0%BE%D0%B3%D0%B4%D0%B0%20%D0%BF%D0%BE%D0%BB%D1%83%D1%87%D0%B5%D0%BD%D0%BE%20%D1%81%D0%BE%D0%BE%D0%B1%D1%89%D0%B5%D0%BD%D0%B8%D0%B5%20%D0%BE%D1%82%20iframe%22%2C%22_width%22%3A%22%D1%88%D0%B8%D1%80%D0%B8%D0%BD%D0%B0%22%7D%2C%22uk%22%3A%7B%22_height%22%3A%22%D0%B2%D0%B8%D1%81%D0%BE%D1%82%D0%B0%22%2C%22_width%22%3A%22%D1%88%D0%B8%D1%80%D0%B8%D0%BD%D0%B0%22%7D%2C%22zh-cn%22%3A%7B%22_Iframe%22%3A%22%E5%86%85%E5%B5%8C%E6%A1%86%E6%9E%B6%22%2C%22_It%20works!%22%3A%22%E8%83%BD%E7%94%A8%EF%BC%81%22%2C%22_close%20iframe%22%3A%22%E9%80%80%E5%87%BA%E5%86%85%E5%B5%8C%E6%A1%86%E6%9E%B6%22%2C%22_height%22%3A%22%E9%AB%98%E5%BA%A6%22%2C%22_hide%20iframe%22%3A%22%E9%9A%90%E8%97%8F%E5%86%85%E5%B5%8C%E6%A1%86%E6%9E%B6%22%2C%22_iframe%20%5BMENU%5D%22%3A%22%E5%86%85%E5%B5%8C%E6%A1%86%E6%9E%B6%E7%9A%84%5BMENU%5D%22%2C%22_iframe%20message%22%3A%22%E5%86%85%E5%B5%8C%E6%A1%86%E6%9E%B6%E6%B6%88%E6%81%AF%22%2C%22_interactive%22%3A%22%E4%BA%A4%E4%BA%92%E6%80%A7%22%2C%22_resize%20behavior%22%3A%22%E8%B0%83%E6%95%B4%E5%A4%A7%E5%B0%8F%E8%A1%8C%E4%B8%BA%22%2C%22_scale%22%3A%22%E8%A7%84%E6%A8%A1%22%2C%22_send%20message%20%5BMESSAGE%5D%20to%20iframe%22%3A%22%E5%90%91%E5%86%85%E5%B5%8C%E6%A1%86%E6%9E%B6%E5%8F%91%E9%80%81%E6%B6%88%E6%81%AF%5BMESSAGE%5D%22%2C%22_set%20iframe%20height%20to%20%5BHEIGHT%5D%22%3A%22%E5%B0%86%E5%86%85%E5%B5%8C%E6%A1%86%E6%9E%B6%E7%9A%84%E9%AB%98%E5%BA%A6%E8%AE%BE%E4%B8%BA%5BHEIGHT%5D%22%2C%22_set%20iframe%20interactive%20to%20%5BINTERACTIVE%5D%22%3A%22%E5%B0%86%E5%86%85%E5%B5%8C%E6%A1%86%E6%9E%B6%E7%9A%84%E4%BA%A4%E4%BA%92%E6%80%A7%E8%AE%BE%E4%B8%BA%5BINTERACTIVE%5D%22%2C%22_set%20iframe%20resize%20behavior%20to%20%5BRESIZE%5D%22%3A%22%E5%B0%86%E5%86%85%E5%B5%8C%E6%A1%86%E6%9E%B6%E7%9A%84%E8%B0%83%E6%95%B4%E5%A4%A7%E5%B0%8F%E8%A1%8C%E4%B8%BA%E8%AE%BE%E4%B8%BA%5BRESIZE%5D%22%2C%22_set%20iframe%20width%20to%20%5BWIDTH%5D%22%3A%22%E5%B0%86%E5%86%85%E5%B5%8C%E6%A1%86%E6%9E%B6%E7%9A%84%E5%AE%BD%E5%BA%A6%E8%AE%BE%E4%B8%BA%5BWIDTH%5D%22%2C%22_set%20iframe%20x%20position%20to%20%5BX%5D%22%3A%22%E5%B0%86%E5%86%85%E5%B5%8C%E6%A1%86%E6%9E%B6%E7%9A%84x%E5%9D%90%E6%A0%87%E8%AE%BE%E4%B8%BA%5BX%5D%22%2C%22_set%20iframe%20y%20position%20to%20%5BY%5D%22%3A%22%E5%B0%86%E5%86%85%E5%B5%8C%E6%A1%86%E6%9E%B6%E7%9A%84y%E5%9D%90%E6%A0%87%E8%AE%BE%E4%B8%BA%5BY%5D%22%2C%22_show%20HTML%20%5BHTML%5D%22%3A%22%E6%98%BE%E7%A4%BA%E6%9D%A5%E8%87%AA%E6%96%87%E6%9C%AC%5BHTML%5D%E7%9A%84%E7%BD%91%E9%A1%B5%22%2C%22_show%20iframe%22%3A%22%E6%98%BE%E7%A4%BA%E5%86%85%E5%B5%8C%E6%A1%86%E6%9E%B6%22%2C%22_show%20website%20%5BURL%5D%22%3A%22%E6%98%BE%E7%A4%BA%E6%9D%A5%E8%87%AAURL%5BURL%5D%E7%9A%84%E7%BD%91%E9%A1%B5%22%2C%22_url%22%3A%22URL%22%2C%22_viewport%22%3A%22%E8%A7%86%E7%82%B9%22%2C%22_visible%22%3A%22%E6%98%BE%E7%A4%BA%E7%8A%B6%E6%80%81%22%2C%22_when%20message%20received%20from%20iframe%22%3A%22%E5%BD%93%E4%BB%8E%E5%86%85%E5%B5%8C%E6%A1%86%E6%9E%B6%E6%94%B6%E5%88%B0%E6%B6%88%E6%81%AF%E6%97%B6%22%2C%22_width%22%3A%22%E5%AE%BD%E5%BA%A6%22%7D%7D)%3B%2F*%20end%20generated%20l10n%20code%20*%2F(function%20(Scratch)%20%7B%0A%20%20%22use%20strict%22%3B%0A%0A%20%20%2F**%20%40type%20%7BHTMLIFrameElement%7Cnull%7D%20*%2F%0A%20%20let%20iframe%20%3D%20null%3B%0A%20%20let%20overlay%20%3D%20null%3B%0A%0A%20%20const%20featurePolicy%20%3D%20%7B%0A%20%20%20%20accelerometer%3A%20%22'none'%22%2C%0A%20%20%20%20%22ambient-light-sensor%22%3A%20%22'none'%22%2C%0A%20%20%20%20battery%3A%20%22'none'%22%2C%0A%20%20%20%20camera%3A%20%22'none'%22%2C%0A%20%20%20%20%22display-capture%22%3A%20%22'none'%22%2C%0A%20%20%20%20%22document-domain%22%3A%20%22'none'%22%2C%0A%20%20%20%20%22encrypted-media%22%3A%20%22'none'%22%2C%0A%20%20%20%20fullscreen%3A%20%22'none'%22%2C%0A%20%20%20%20geolocation%3A%20%22'none'%22%2C%0A%20%20%20%20gyroscope%3A%20%22'none'%22%2C%0A%20%20%20%20magnetometer%3A%20%22'none'%22%2C%0A%20%20%20%20microphone%3A%20%22'none'%22%2C%0A%20%20%20%20midi%3A%20%22'none'%22%2C%0A%20%20%20%20payment%3A%20%22'none'%22%2C%0A%20%20%20%20%22picture-in-picture%22%3A%20%22'none'%22%2C%0A%20%20%20%20%22publickey-credentials-get%22%3A%20%22'none'%22%2C%0A%20%20%20%20%22speaker-selection%22%3A%20%22'none'%22%2C%0A%20%20%20%20usb%3A%20%22'none'%22%2C%0A%20%20%20%20vibrate%3A%20%22'none'%22%2C%0A%20%20%20%20vr%3A%20%22'none'%22%2C%0A%20%20%20%20%22screen-wake-lock%22%3A%20%22'none'%22%2C%0A%20%20%20%20%22web-share%22%3A%20%22'none'%22%2C%0A%20%20%20%20%22interest-cohort%22%3A%20%22'none'%22%2C%0A%20%20%7D%3B%0A%0A%20%20const%20SANDBOX%20%3D%20%5B%0A%20%20%20%20%22allow-same-origin%22%2C%0A%20%20%20%20%22allow-scripts%22%2C%0A%20%20%20%20%22allow-forms%22%2C%0A%20%20%20%20%22allow-modals%22%2C%0A%20%20%20%20%22allow-popups%22%2C%0A%0A%20%20%20%20%2F%2F%20The%20big%20one%20we%20don't%20want%20to%20include%20is%20allow-top-navigation%0A%20%20%5D%3B%0A%0A%20%20let%20x%20%3D%200%3B%0A%20%20let%20y%20%3D%200%3B%0A%20%20let%20width%20%3D%20-1%3B%20%2F%2F%20negative%20means%20default%0A%20%20let%20height%20%3D%20-1%3B%20%2F%2F%20negative%20means%20default%0A%20%20let%20interactive%20%3D%20true%3B%0A%20%20let%20resizeBehavior%20%3D%20%22scale%22%3B%0A%20%20%2F**%20%40type%20%7Bstring%7Cnumber%7Cboolean%7D%20*%2F%0A%20%20let%20latestMessage%20%3D%20%22%22%3B%0A%0A%20%20const%20updateFrameAttributes%20%3D%20()%20%3D%3E%20%7B%0A%20%20%20%20if%20(!iframe)%20%7B%0A%20%20%20%20%20%20return%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20iframe.style.pointerEvents%20%3D%20interactive%20%3F%20%22auto%22%20%3A%20%22none%22%3B%0A%0A%20%20%20%20const%20%7B%20stageWidth%2C%20stageHeight%20%7D%20%3D%20Scratch.vm.runtime%3B%0A%20%20%20%20const%20effectiveWidth%20%3D%20width%20%3E%3D%200%20%3F%20width%20%3A%20stageWidth%3B%0A%20%20%20%20const%20effectiveHeight%20%3D%20height%20%3E%3D%200%20%3F%20height%20%3A%20stageHeight%3B%0A%0A%20%20%20%20if%20(resizeBehavior%20%3D%3D%3D%20%22scale%22)%20%7B%0A%20%20%20%20%20%20iframe.style.width%20%3D%20%60%24%7BeffectiveWidth%7Dpx%60%3B%0A%20%20%20%20%20%20iframe.style.height%20%3D%20%60%24%7BeffectiveHeight%7Dpx%60%3B%0A%0A%20%20%20%20%20%20iframe.style.transform%20%3D%20%60translate(%24%7
258B-effectiveWidth%20%2F%202%20%2B%20x%7Dpx%2C%20%24%7B%0A%20%20%20%20%20%20%20%20-effectiveHeight%20%2F%202%20-%20y%0A%20%20%20%20%20%20%7Dpx)%60%3B%0A%20%20%20%20%20%20iframe.style.top%20%3D%20%220%22%3B%0A%20%20%20%20%20%20iframe.style.left%20%3D%20%220%22%3B%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%2F%2F%20As%20the%20stage%20is%20resized%20in%20fullscreen%20mode%2C%20only%20%25%20can%20be%20relied%20upon%0A%20%20%20%20%20%20iframe.style.width%20%3D%20%60%24%7B(effectiveWidth%20%2F%20stageWidth)%20*%20100%7D%25%60%3B%0A%20%20%20%20%20%20iframe.style.height%20%3D%20%60%24%7B(effectiveHeight%20%2F%20stageHeight)%20*%20100%7D%25%60%3B%0A%0A%20%20%20%20%20%20iframe.style.transform%20%3D%20%22%22%3B%0A%20%20%20%20%20%20iframe.style.top%20%3D%20%60%24%7B%0A%20%20%20%20%20%20%20%20(0.5%20-%20effectiveHeight%20%2F%202%20%2F%20stageHeight%20-%20y%20%2F%20stageHeight)%20*%20100%0A%20%20%20%20%20%20%7D%25%60%3B%0A%20%20%20%20%20%20iframe.style.left%20%3D%20%60%24%7B%0A%20%20%20%20%20%20%20%20(0.5%20-%20effectiveWidth%20%2F%202%20%2F%20stageWidth%20%2B%20x%20%2F%20stageWidth)%20*%20100%0A%20%20%20%20%20%20%7D%25%60%3B%0A%20%20%20%20%7D%0A%20%20%7D%3B%0A%0A%20%20const%20getOverlayMode%20%3D%20()%20%3D%3E%0A%20%20%20%20resizeBehavior%20%3D%3D%3D%20%22scale%22%20%3F%20%22scale-centered%22%20%3A%20%22manual%22%3B%0A%0A%20%20const%20createFrame%20%3D%20(src)%20%3D%3E%20%7B%0A%20%20%20%20iframe%20%3D%20document.createElement(%22iframe%22)%3B%0A%20%20%20%20iframe.style.width%20%3D%20%22100%25%22%3B%0A%20%20%20%20iframe.style.height%20%3D%20%22100%25%22%3B%0A%20%20%20%20iframe.style.border%20%3D%20%22none%22%3B%0A%20%20%20%20iframe.style.position%20%3D%20%22absolute%22%3B%0A%20%20%20%20iframe.setAttribute(%22sandbox%22%2C%20SANDBOX.join(%22%20%22))%3B%0A%20%20%20%20iframe.setAttribute(%0A%20%20%20%20%20%20%22allow%22%2C%0A%20%20%20%20%20%20Object.entries(featurePolicy)%0A%20%20%20%20%20%20%20%20.map((%5Bname%2C%20permission%5D)%20%3D%3E%20%60%24%7Bname%7D%20%24%7Bpermission%7D%60)%0A%20%20%20%20%20%20%20%20.join(%22%3B%20%22)%0A%20%20%20%20)%3B%0A%20%20%20%20iframe.setAttribute(%22allowtransparency%22%2C%20%22true%22)%3B%0A%20%20%20%20iframe.setAttribute(%22allowtransparency%22%2C%20%22true%22)%3B%0A%20%20%20%20iframe.setAttribute(%22src%22%2C%20src)%3B%0A%0A%20%20%20%20overlay%20%3D%20Scratch.renderer.addOverlay(iframe%2C%20getOverlayMode())%3B%0A%20%20%20%20updateFrameAttributes()%3B%0A%20%20%7D%3B%0A%0A%20%20const%20closeFrame%20%3D%20()%20%3D%3E%20%7B%0A%20%20%20%20if%20(iframe)%20%7B%0A%20%20%20%20%20%20Scratch.renderer.removeOverlay(iframe)%3B%0A%20%20%20%20%20%20iframe%20%3D%20null%3B%0A%20%20%20%20%20%20overlay%20%3D%20null%3B%0A%20%20%20%20%7D%0A%20%20%7D%3B%0A%0A%20%20window.addEventListener(%22message%22%2C%20(e)%20%3D%3E%20%7B%0A%20%20%20%20if%20(iframe%20%26%26%20iframe.contentWindow%20%26%26%20e.source%20%3D%3D%3D%20iframe.contentWindow)%20%7B%0A%20%20%20%20%20%20latestMessage%20%3D%0A%20%20%20%20%20%20%20%20typeof%20e.data%20%3D%3D%3D%20%22string%22%20%7C%7C%0A%20%20%20%20%20%20%20%20typeof%20e.data%20%3D%3D%3D%20%22number%22%20%7C%7C%0A%20%20%20%20%20%20%20%20typeof%20e.data%20%3D%3D%3D%20%22boolean%22%0A%20%20%20%20%20%20%20%20%20%20%3F%20e.data%0A%20%20%20%20%20%20%20%20%20%20%3A%20JSON.stringify(e.data)%3B%0A%20%20%20%20%20%20Scratch.vm.runtime.startHats(%22iframe_whenMessage%22)%3B%0A%20%20%20%20%7D%0A%20%20%7D)%3B%0A%0A%20%20Scratch.vm.on(%22STAGE_SIZE_CHANGED%22%2C%20updateFrameAttributes)%3B%0A%0A%20%20Scratch.vm.runtime.on(%22RUNTIME_DISPOSED%22%2C%20closeFrame)%3B%0A%0A%20%20class%20IframeExtension%20%7B%0A%20%20%20%20getInfo()%20%7B%0A%20%20%20%20%20%20return%20%7B%0A%20%20%20%20%20%20%20%20name%3A%20Scratch.translate(%22Iframe%22)%2C%0A%20%20%20%20%20%20%20%20id%3A%20%22iframe%22%2C%0A%20%20%20%20%20%20%20%20blocks%3A%20%5B%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22display%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22show%20website%20%5BURL%5D%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20URL%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22https%3A%2F%2Fextensions.turbowarp.org%2Fhello.html%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22displayHTML%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22show%20HTML%20%5BHTML%5D%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20HTML%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%60%3Ch1%3E%24%7BScratch.translate(%22It%20works!%22)%7D%3C%2Fh1%3E%60%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%22---%22%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22show%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22show%20iframe%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22hide%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22hide%20iframe%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22close%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22close%20iframe%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%22---%22%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22get%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22iframe%20%5BMENU%5D%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20MENU%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22getMenu%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22setX%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22set%20iframe%20x%20position%20to%20%5BX%5D%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20X%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%220%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22setY%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22set%20iframe%20y%20position%20to%20%5BY%5D%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20Y%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%220%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22setWidth%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22set%20iframe%20width%20to%20%5BWIDTH%5D%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20WIDTH%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20Scratch.vm.runtime.stageWidth%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22setHeight%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22set%20iframe%20height%20to%20%5BHEIGHT%5D%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20HEIGHT%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20Scratch.vm.runtime.stageHeight%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22setInteractive%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22set%20iframe%20interactive%20to%20%5BINTERACTIVE%5D%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20INTERACTIVE%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22interactiveMenu%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22setResize%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22set%20iframe%20resize%20behavior%20to%20%5BRESIZE%5D%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20RESIZE%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22resizeMenu%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%22---%22%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22sendMessage%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22send%20message%20%5BMESSAGE%5D%20to%20iframe%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20MESSAGE%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22hello%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22whenMessage%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.EVENT%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22when%20message%20received%20from%20iframe%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20isEdgeActivated%3A%20false%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22iframeMessage%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22iframe%20message%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%20%20menus%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20getMenu%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20acceptReporters%3A%20true%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20items%3A%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20Scratch.translate(%22url%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20Scratch.translate(%22visible%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22x%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22y%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20Scratch.translate(%22width%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20Scratch.translate(%22height%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20Scratch.translate(%22interactive%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20Scratch.translate(%22resize%20behavior%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20interactiveMenu%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20acceptReporters%3A%20true%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20items%3A%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20The%20getter%20blocks%20will%20return%20English%20regardless%20of%20translating%20these%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22true%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22false%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20resizeMenu%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20acceptReporters%3A%20true%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20items%3A%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22scale%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20value%3A%20%22scale%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22viewport%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20value%3A%20%22viewport%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20async%20display(%7B%20URL%20%7D)%20%7B%0A%20%20%20%20%20%20closeFrame
258()%3B%0A%20%20%20%20%20%20if%20(await%20Scratch.canEmbed(URL))%20%7B%0A%20%20%20%20%20%20%20%20createFrame(Scratch.Cast.toString(URL))%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%0A%20%20%20%20async%20displayHTML(%7B%20HTML%20%7D)%20%7B%0A%20%20%20%20%20%20closeFrame()%3B%0A%20%20%20%20%20%20const%20url%20%3D%20%60data%3Atext%2Fhtml%3B%2C%24%7BencodeURIComponent(%0A%20%20%20%20%20%20%20%20Scratch.Cast.toString(HTML)%0A%20%20%20%20%20%20)%7D%60%3B%0A%20%20%20%20%20%20if%20(await%20Scratch.canEmbed(url))%20%7B%0A%20%20%20%20%20%20%20%20createFrame(url)%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%0A%20%20%20%20show()%20%7B%0A%20%20%20%20%20%20if%20(iframe)%20%7B%0A%20%20%20%20%20%20%20%20iframe.style.display%20%3D%20%22%22%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%0A%20%20%20%20hide()%20%7B%0A%20%20%20%20%20%20if%20(iframe)%20%7B%0A%20%20%20%20%20%20%20%20iframe.style.display%20%3D%20%22none%22%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%0A%20%20%20%20close()%20%7B%0A%20%20%20%20%20%20closeFrame()%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20get(%7B%20MENU%20%7D)%20%7B%0A%20%20%20%20%20%20MENU%20%3D%20Scratch.Cast.toString(MENU)%3B%0A%20%20%20%20%20%20if%20(MENU%20%3D%3D%3D%20%22url%22)%20%7B%0A%20%20%20%20%20%20%20%20if%20(iframe)%20return%20iframe.getAttribute(%22src%22)%3B%0A%20%20%20%20%20%20%20%20return%20%22%22%3B%0A%20%20%20%20%20%20%7D%20else%20if%20(MENU%20%3D%3D%3D%20%22visible%22)%20%7B%0A%20%20%20%20%20%20%20%20return%20!!iframe%20%26%26%20iframe.style.display%20!%3D%3D%20%22none%22%3B%0A%20%20%20%20%20%20%7D%20else%20if%20(MENU%20%3D%3D%3D%20%22x%22)%20%7B%0A%20%20%20%20%20%20%20%20return%20x%3B%0A%20%20%20%20%20%20%7D%20else%20if%20(MENU%20%3D%3D%3D%20%22y%22)%20%7B%0A%20%20%20%20%20%20%20%20return%20y%3B%0A%20%20%20%20%20%20%7D%20else%20if%20(MENU%20%3D%3D%3D%20%22width%22)%20%7B%0A%20%20%20%20%20%20%20%20return%20width%20%3E%3D%200%20%3F%20width%20%3A%20Scratch.vm.runtime.stageWidth%3B%0A%20%20%20%20%20%20%7D%20else%20if%20(MENU%20%3D%3D%3D%20%22height%22)%20%7B%0A%20%20%20%20%20%20%20%20return%20height%20%3E%3D%200%20%3F%20height%20%3A%20Scratch.vm.runtime.stageHeight%3B%0A%20%20%20%20%20%20%7D%20else%20if%20(MENU%20%3D%3D%3D%20%22interactive%22)%20%7B%0A%20%20%20%20%20%20%20%20return%20interactive%3B%0A%20%20%20%20%20%20%7D%20else%20if%20(MENU%20%3D%3D%3D%20%22resize%20behavior%22)%20%7B%0A%20%20%20%20%20%20%20%20return%20resizeBehavior%3B%0A%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20return%20%22%22%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%0A%20%20%20%20setX(%7B%20X%20%7D)%20%7B%0A%20%20%20%20%20%20x%20%3D%20Scratch.Cast.toNumber(X)%3B%0A%20%20%20%20%20%20updateFrameAttributes()%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20setY(%7B%20Y%20%7D)%20%7B%0A%20%20%20%20%20%20y%20%3D%20Scratch.Cast.toNumber(Y)%3B%0A%20%20%20%20%20%20updateFrameAttributes()%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20setWidth(%7B%20WIDTH%20%7D)%20%7B%0A%20%20%20%20%20%20width%20%3D%20Scratch.Cast.toNumber(WIDTH)%3B%0A%20%20%20%20%20%20updateFrameAttributes()%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20setHeight(%7B%20HEIGHT%20%7D)%20%7B%0A%20%20%20%20%20%20height%20%3D%20Scratch.Cast.toNumber(HEIGHT)%3B%0A%20%20%20%20%20%20updateFrameAttributes()%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20setInteractive(%7B%20INTERACTIVE%20%7D)%20%7B%0A%20%20%20%20%20%20interactive%20%3D%20Scratch.Cast.toBoolean(INTERACTIVE)%3B%0A%20%20%20%20%20%20updateFrameAttributes()%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20setResize(%7B%20RESIZE%20%7D)%20%7B%0A%20%20%20%20%20%20if%20(RESIZE%20%3D%3D%3D%20%22scale%22%20%7C%7C%20RESIZE%20%3D%3D%3D%20%22viewport%22)%20%7B%0A%20%20%20%20%20%20%20%20resizeBehavior%20%3D%20RESIZE%3B%0A%20%20%20%20%20%20%20%20if%20(overlay)%20%7B%0A%20%20%20%20%20%20%20%20%20%20overlay.mode%20%3D%20getOverlayMode()%3B%0A%20%20%20%20%20%20%20%20%20%20Scratch.renderer._updateOverlays()%3B%0A%20%20%20%20%20%20%20%20%20%20updateFrameAttributes()%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%0A%20%20%20%20sendMessage(%7B%20MESSAGE%20%7D)%20%7B%0A%20%20%20%20%20%20if%20(iframe%20%26%26%20iframe.contentWindow)%20%7B%0A%20%20%20%20%20%20%20%20iframe.contentWindow.postMessage(MESSAGE%2C%20%22*%22)%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%0A%20%20%20%20iframeMessage()%20%7B%0A%20%20%20%20%20%20return%20latestMessage%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20Scratch.extensions.register(new%20IframeExtension())%3B%0A%7D)(Scratch)%3B%0A%20%7D)(Scratch)%3B","data:text/javascript;,(function(Scratch)%20%7B%20%2F%2F%20Name%3A%20Clipboard%0A%2F%2F%20ID%3A%20clipboard%0A%2F%2F%20Description%3A%20Read%20and%20write%20from%20the%20system%20clipboard.%0A%2F%2F%20License%3A%20Apache-2.0%0A%0A%2F*!%0A%20*%20Copyright%202023%20tomyo-code%20%2B%20AdamMady%0A%20*%0A%20*%20Licensed%20under%20the%20Apache%20License%2C%20Version%202.0%20(the%20%22License%22)%3B%0A%20*%20you%20may%20not%20use%20this%20file%20except%20in%20compliance%20with%20the%20License.%0A%20*%20You%20may%20obtain%20a%20copy%20of%20the%20License%20at%0A%20*%0A%20*%20%20%20http%3A%2F%2Fwww.apache.org%2Flicenses%2FLICENSE-2.0%0A%20*%0A%20*%20Unless%20required%20by%20applicable%20law%20or%20agreed%20to%20in%20writing%2C%20software%0A%20*%20distributed%20under%20the%20License%20is%20distributed%20on%20
258an%20%22AS%20IS%22%20BASIS%2C%0A%20*%20WITHOUT%20WARRANTIES%20OR%20CONDITIONS%20OF%20ANY%20KIND%2C%20either%20express%20or%20implied.%0A%20*%20See%20the%20License%20for%20the%20specific%20language%20governing%20permissions%20and%0A%20*%20limitations%20under%20the%20License.%0A%20*%2F%0A%0A%2F*%20generated%20l10n%20code%20*%2FScratch.translate.setup(%7B%22de%22%3A%7B%22_Clipboard%22%3A%22Zwischenablage%22%7D%2C%22fi%22%3A%7B%22_Clipboard%22%3A%22Leikep%C3%B6yt%C3%A4%22%2C%22_clipboard%22%3A%22leikep%C3%B6yt%C3%A4%22%2C%22_copy%20to%20clipboard%3A%20%5BTEXT%5D%22%3A%22kopioi%20leikep%C3%B6yd%C3%A4lle%3A%20%5BTEXT%5D%22%2C%22_last%20pasted%20text%22%3A%22viimeisin%20liitetty%20teksti%22%2C%22_reset%20clipboard%22%3A%22tyhjenn%C3%A4%20leikep%C3%B6yt%C3%A4%22%2C%22_when%20something%20is%20copied%22%3A%22kun%20jotakin%20kopioidaan%22%2C%22_when%20something%20is%20pasted%22%3A%22kun%20jotakin%20liitet%C3%A4%C3%A4n%22%7D%2C%22it%22%3A%7B%22_Clipboard%22%3A%22Appunti%22%2C%22_clipboard%22%3A%22appunti%22%2C%22_copy%20to%20clipboard%3A%20%5BTEXT%5D%22%3A%22copia%20%5BTEXT%5D%20negli%20appunti%22%2C%22_last%20pasted%20text%22%3A%22ultimo%20testo%20incollato%22%2C%22_reset%20clipboard%22%3A%22svuota%20gli%20appunti%22%2C%22_when%20something%20is%20copied%22%3A%22quando%20qualcosa%20viene%20copiato%22%2C%22_when%20something%20is%20pasted%22%3A%22quando%20qualcosa%20viene%20incollato%22%7D%2C%22ja%22%3A%7B%22_Clipboard%22%3A%22%E3%82%AF%E3%83%AA%E3%83%83%E3%83%97%E3%83%9C%E3%83%BC%E3%83%89%22%2C%22_clipboard%22%3A%22%E3%82%AF%E3%83%AA%E3%83%83%E3%83%97%E3%83%9C%E3%83%BC%E3%83%89%E3%81%AE%E5%86%85%E5%AE%B9%22%2C%22_copy%20to%20clipboard%3A%20%5BTEXT%5D%22%3A%22%5BTEXT%5D%E3%82%92%E3%82%AF%E3%83%AA%E3%83%83%E3%83%97%E3%83%9C%E3%83%BC%E3%83%89%E3%81%AB%E3%82%B3%E3%83%94%E3%83%BC%E3%81%99%E3%82%8B%22%2C%22_last%20pasted%20text%22%3A%22%E6%9C%80%E5%BE%8C%E3%81%AB%E8%B2%BC%E3%82%8A%E4%BB%98%E3%81%91%E3%82%89%E3%82%8C%E3%81%9F%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88%22%2C%22_reset%20clipboard%22%3A%22%E3%82%AF%E3%83%AA%E3%83%83%E3%83%97%E3%83%9C%E3%83%BC%E3%83%89%E3%82%92%E3%83%AA%E3%82%BB%E3%83%83%E3%83%88%22%2C%22_when%20something%20is%20copied%22%3A%22%E4%BD%95%E3%81%8B%E3%81%8C%E3%82%B3%E3%83%94%E3%83%BC%E3%81%95%E3%82%8C%E3%81%9F%E3%81%A8%E3%81%8D%22%2C%22_when%20something%20is%20pasted%22%3A%22%E4%BD%95%E3%81%8B%E3%81%8C%E8%B2%BC%E3%82%8A%E4%BB%98%E3%81%91%E3%82%89%E3%82%8C%E3%81%9F%E3%81%A8%E3%81%8D%22%7D%2C%22ko%22%3A%7B%22_Clipboard%22%3A%22%ED%81%B4%EB%A6%BD%EB%B3%B4%EB%93%9C%22%2C%22_clipboard%22%3A%22%ED%81%B4%EB%A6%BD%EB%B3%B4%EB%93%9C%22%2C%22_copy%20to%20clipboard%3A%20%5BTEXT%5D%22%3A%22%ED%81%B4%EB%A6%BD%EB%B3%B4%EB%93%9C%EC%97%90%20%EB%B3%B5%EC%82%AC%ED%95%98%EA%B8%B0%3A%20%5BTEXT%5D%22%2C%22_last%20pasted%20text%22%3A%22%EB%B0%A9%EA%B8%88%20%EB%B6%99%EC%97%AC%EB%84%A3%EC%9D%80%20%ED%85%8D%EC%8A%A4%ED%8A%B8%22%2C%22_reset%20clipboard%22%3A%22%ED%81%B4%EB%A6%BD%EB%B3%B4%EB%93%9C%20%EB%B9%84%EC%9A%B0%EA%B8%B0%22%2C%22_when%20something%20is%20copied%22%3A%22%EB%B3%B5%EC%82%AC%EA%B0%80%20%EB%B0%9C%EC%83%9D%ED%96%88%EC%9D%84%20%EB%95%8C%22%2C%22_when%20something%20is%20pasted%22%3A%22%EB%B6%99%EC%97%AC%EB%84%A3%EA%B8%B0%EA%B0%80%20%EB%B0%9C%EC%83%9D%ED%96%88%EC%9D%84%20%EB%95%8C%22%7D%2C%22nb%22%3A%7B%22_Clipboard%22%3A%22Utklippstavle%22%2C%22_clipboard%22%3A%22Utklippstavle%22%2C%22_copy%20to%20clipboard%3A%20%5BTEXT%5D%22%3A%22kopier%20til%20utklippstavle%3A%20%5BTEXT%5D%22%2C%22_last%20pasted%20text%22%3A%22siste%20kopierte%20tekst%22%2C%22_reset%20clipboard%22%3A%22nullstill%20utklippstavlen%22%2C%22_when%20something%20is%20copied%22%3A%22n%C3%A5r%20noe%20blir%20kopiert%22%2C%22_when%20something%20is%20pasted%22%3A%22n%C3%A5r%20noe%20blir%20limt%20inn%22%7D%2C%22nl%22%3A%7B%22_Clipboard%22%3A%22Klembord%22%2C%22_clipboard%22%3A%22klembord%22%2C%22_copy%20to%20clipboard%3A%20%5BTEXT%5D%22%3A%22kopieer%20%5BTEXT%5D%20naar%20klembord%22%2C%22_last%20pasted%20text%22%3A%22laatst%20geplakte%20tekst%22%2C%22_reset%20clipboard%22%3A%22wis%20klembord%22%2C%22_when%20something%20is%20copied%22%3A%22wanneer%20iets%20is%20gekopieerd%22%2C%22_when%20something%20is%20pasted%22%3A%22wanneer%20iets%20is%20geplakt%22%7D%2C%22pl%22%3A%7B%22_Clipboard%22%3A%22Schowek%22%7D%2C%22ru%22%3A%7B%22_Clipboard%22%3A%22%D0%91%D1%83%D1%84%D0%B5%D1%80%20%D0%9E%D0%B1%D0%BC%D0%B5%D0%BD%D0%B0%22%2C%22_clipboard%22%3A%22%D0%B1%D1%83%D1%84%D0%B5%D1%80%20%D0%BE%D0%B1%D0%BC%D0%B5%D0%BD%D0%B0%22%2C%22_copy%20to%20clipboard%3A%20%5BTEXT%5D%22%3A%22%D1%81%D0%BA%D0%BE%D0%BF%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D1%82%D1%8C%3A%20%5BTEXT%5D%22%2C%22_last%20pasted%20text%22%3A%22%D0%BF%D0%BE%D1%81%D0%BB%D0%B5%D0%B4%D0%BD%D0%B8%D0%B9%20%D0%B2%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D0%B9%20%D1%82%D0%B5%D0%BA%D1%81%D1%82%22%2C%22_reset%20clipboard%22%3A%22%D0%BE%D1%87%D0%B8%D1%81%D1%82%D0%B8%D1%82%D1%8C%20%D0%B1%D1%83%D1%84%D0%B5%D1%80%20%D0%BE%D0%B1%D0%BC%D0%B5%D0%BD%D0%B0%22%2C%22_when%20something%20is%20copied%22%3A%22%D0%BA%D0%BE%D0%B3%D0%B4%D0%B0%20%D1%87%D1%82%D0%BE-%D0%BB%D0%B8%D0%B1%D0%BE%20%D1%81%D0%BA%D0%BE%D0%BF%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BE%22%2C%22_when%20something%20is%20pasted%22%3A%22%D0%BA%D0%BE%D0%B3%D0%B4%D0%B0%20%D1%87%D1%82%D0%BE-%D0%BB%D0%B8%D0%B1%D0%BE%20%D0%B2%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%BE%22%7D%2C%22uk%22%3A%7B%22_Clipboard%22%3A%22%D0%91%D1%83%D1%84%D0%B5%D1%80%20%D0%9E%D0%B1%D0%BC%D1%96%D0%BD%D1%83%22%2C%22_clipboard%22%3A%22%D0%B1%D1%83%D1%84%D0%B5%D1%80%20%D0%BE%D0%B1%D0%BC%D1%96%D0%BD%D1%83%22%2C%22_copy%20to%20clipboard%3A%20%5BTEXT%5D%22%3A%22%D1%81%D0%BA%D0%BE%D0%BF%D1%96%D1%8E%D0%B2%D0%B0%D1%82%D0%B8%20%D0%B2%20%D0%B1%D1%83%D1%84%D0%B5%D1%80%20%D0%BE%D0%B1%D0%BC%D1%96%D0%BD%D1%83%3A%20%5BTEXT%5D%22%2C%22_last%20pasted%20text%22%3A%22%D0%BE%D1%81%D1%82%D0%B0%D0%BD%D0%BD%D1%96%D0%B9%20%D0%B2%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B9%20%D1%82%D0%B5%D0%BA%D1%81%D1%82%22%2C%22_reset%20clipboard%22%3A%22%D0%BE%D1%87%D0%B8%D1%81%D1%82%D0%B8%D1%82%D0%B8%20%D0%B1%D1%83%D1%84%D0%B5%D1%80%20%D0%BE%D0%B1%D0%BC%D1%96%D0%BD%D1%83%22%2C%22_when%20something%20is%20copied%22%3A%22%D0%BA%D0%BE%D0%BB%D0%B8%20%D1%89%D0%BE%D1%81%D1%8C%20%D1%81%D0%BA%D0%BE%D0%BF%D1%96%D0%B9%D0%BE%D0%B2%D0%B0%D0%BD%D0%BE%22%2C%22_when%20something%20is%20pasted%22%3A%22%D0%BA%D0%BE%D0%BB%D0%B8%20%D1%89%D0%BE%D1%81%D1%8C%20%D0%B2%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%BE%22%7D%2C%22zh-cn%22%3A%7B%22_Clipboard%22%3A%22%E5%89%AA%E5%88%87%E6%9D%BF%22%2C%22_clipboard%22%3A%22%E6%9C%80%E6%96%B0%E5%A4%8D%E5%88%B6%E7%9A%84%E6%96%87%E6%9C%AC%22%2C%22_copy%20to%20clipboard%3A%20%5BTEXT%5D%22%3A%22%E6%8A%8A%E6%96%87%E6%9C%AC%5BTEXT%5D%E5%A4%8D%E5%88%B6%E5%88%B0%E5%89%AA%E5%88%87%E6%9D%BF%22%2C%22_last%20pasted%20text%22%3A%22%E6%9C%80%E6%96%B0%E7%B2%98%E8%B4%B4%E7%9A%84%E6%96%87%E6%9C%AC%22%2C%22_reset%20clipboard%22%3A%22%E9%87%8D%E7%BD%AE%E5%89%AA%E8%B4%B4%E6%9D%BF%22%2C%22_when%20something%20is%20copied%22%3A%22%E5%BD%93%E6%9C%89%E6%96%87%E6%9C%AC%E8%A2%AB%E5%A4%8D%E5%88%B6%E6%97%B6%22%2C%22_when%20something%20is%20pasted%22%3A%22%E5%BD%93%E6%9C%89%E6%96%87%E6%9C%AC%E8%A2%AB%E7%B2%98%E8%B4%B4%E6%97%B6%22%7D%7D)%3B%2F*%20end%20generated%20l10n%20code%20*%2F(function%20(Scratch)%20%7B%0A%20%20%22use%20strict%22%3B%0A%0A%20%20if%20(!Scratch.extensions.unsandboxed)%20%7B%0A%20%20%20%20throw%20new%20Error(%22Clipboard%20must%20run%20unsandboxed%22)%3B%0A%20%20%7D%0A%0A%20%20const%20extensionicon%20%3D%0A%20%20%20%20%22data%3Aimage%2Fsvg%2Bxml%3Bbase64%2CPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHdpZHRoPSI4MC40NTQ1NCIgaGVpZ2h0PSI4MC40NTQ1NCIgdmlld0JveD0iMCwwLDgwLjQ1NDU0LDgwLjQ1NDU0Ij48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMTk5Ljc3MjcyLC0xMzkuNzcyNzIpIj48ZyBkYXRhLXBhcGVyLWRhdGE9InsmcXVvdDtpc1BhaW50aW5nTGF5ZXImcXVvdDs6dHJ1ZX0iIGZpbGwtcnVsZT0ibm9uemVybyIgc3Ryb2tlPSJub25lIiBzdHJva2UtbGluZWNhcD0iYnV0dCIgc3Ryb2tlLWxpbmVqb2luPSJtaXRlciIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBzdHJva2UtZGFzaGFycmF5PSIiIHN0cm9rZS1kYXNob2Zmc2V0PSIwIiBzdHlsZT0ibWl4LWJsZW5kLW1vZGU6IG5vcm1hbCI%2BPHBhdGggZD0iTTE5OS43NzI3MywxODBjMCwtMjIuMjE2OSAxOC4wMTAzNywtNDAuMjI3MjcgNDAuMjI3MjcsLTQwLjIyNzI3YzIyLjIxNjksMCA0MC4yMjcyNywxOC4wMTAzNyA0MC4yMjcyNyw0MC4yMjcyN2MwLDIyLjIxNjkgLTE4LjAxMDM3LDQwLjIyNzI3IC00MC4yMjcyNyw0MC4yMjcyN2MtMjIuMjE2OSwwIC00MC4yMjcyNywtMTguMDEwMzcgLTQwLjIyNzI3LC00MC4yMjcyN3oiIGZpbGw9IiMwMDgwODAiIHN0cm9rZS13aWR0aD0iMCIvPjxpbWFnZSB4PSI0MzQiIHk9IjMwMCIgdHJhbnNmb3JtPSJzY2FsZSgwLjUsMC41KSIgd2lkdGg9Ijk0IiBoZWlnaHQ9IjExOCIgeGxpbms6aHJlZj0iZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFGNEFBQUIyQ0FZQUFBQkJMU1ExQUFBQUFYTlNSMElBcnM0YzZRQUFCckpKUkVGVWVGN3RuVnZJYmtNWXgyZTJuTUlPeVNHbDVCQjJTWExNc1lRTFo5cHNaMEl1aEhKQmlkeTZJaUVrNTFPT0VYZkVqZHk0c0pPemN0Z1hLRGtrNStTdmI3Ny9zMzNmM3U5YTYxbnZtdlhNdk85KzNwdXA5VDd6UERPLythOVpzMmF0bVJWRDVUOEFlN0tJMXpNOWx1bTJUTDlqK2dyVGV4ZlNHT09mTlZjdDFseTRoYkk1ZU9NV0FuQXpROTdLZEN0bEVlUU1XRTNsdjYzTVoycFdyZUlkdktrT1V0ZHlHME5LT3EwNHBJOVAxNFFZNDd2R1ZXa05OMjJsUnF1RGd4OE43V1RIQVBibFB4OHczVHhURVQ2bm4vMm8vSDh6K1Iza3BockZiN0xnQVd6QkpyeUo2UWxNdHh6VXRQOW5mcHFLdTN1U1B3Q1A4dmlsSGZIKzR2OC9NZDJaNllxR2ZPRHhreG4vOVliNGovRzRuSGxEcXkzbGU0SnhuMW5xY0wzaUhUeHN3UVBZbmkwaFYvMjloeloxUS80MzJQSW5OaWp1TXg3ZnB5SC9iengrTVAwa2V3RFg4TGljU1UzZFovby94bmhkUS94ZmVIeTd6UFdYTSs0cHhyODRwUTUrRVRNQWMvRFM5NnpKM05JYnVudVZMWDU2ZytLKzVmRmRHOHFSenNnWTQyRU4rZi9nOGFZNzNPZVkvN3lHL0QvdytJNGpjemhWRk8vZ0Z4VnZEcjVMS2JrRWNCa1ZKeGV4Wlg0QnlCekxMZzBCcFp4SDBjOTc3Q0p1cFAzdFRKdjYrT2VaNzl3R3hiL0c0NmZrcW5DRG4zV2llQWUvcUhoejhITFY3V3JvZjJnZzQrZ3VlMm5RQjZpMFc5b3lBT2pxNHlXN2xFTXVoanQwS0YzeWRmWHhLMm1ZN0VJSVJ6TGRyS09pY29adHJTeEhNbHNZMVRqNFJjVlhCLzVIdHVReFREL3Bram9WM210T0JNRDM5THVUeHY4VU51a0pWWXp4ekQ1NUFUVGRFWXNiK2Y4U0huaVFhV3MramVJZGZIdExqUVkrRFRkampCZjBVWXJXRnNCcHRIMVpveFN0M3dsMklxQzlXSitmQi9ocXpLbzljeldLZC9BOVdpZ24rTWVwa0s1WlExWHhBSnhFdzZ1WW5zRTAxL3g3Vnpua1J1bGhHcVpaMFJqalIxMFpOZjhyN2tlU0c0M2lIYnlHT0cxeWduK1Npa2l6YW4xL0FPUk84SDdtM1oxcExROWg1TDVBWm1mUFlYM2x2cUpYbFIyOEh0ZDhnUWR3Tk92K3BuRWZya2MrMlRMTnBZUVFWbEg1di9aeFdGenhEajQwVGZhcEw2NVQ5ZkVBWkpTd2Z4L0ZWR1I3SnhWL1E1OHkxYUI0QjkvU1lwcmhaQy9GQXppQThkNW4yalc3MTBkUWxyYmZVUEV5Q2xQRkxxWjRCOS81UUdlY1BuN0pVLzk3VkJLcDEwaUdtWHYwR2RlWFZMeThidUhnQy9YeHZlYTlLeFMrUEVGN2lJcVhKMTZ0UlMycGVMbTRPbmhMeFZlb1hOTWlGVk84YVMwckRPYmdDeldLZzNmd2hRZ1VDdXVLbjNmd0FPVFo2ZVhHZGIyTDQrdG5qZVBXTVk1MzhNdmJ3YXlyQVpEZWV3OGhwUGUrRFgvcHJlTVlZM29MdVphZmd5L1VFcGJnWlUyUjlQVldWYjZEaW4vRUtxQW1qb1BYVUJyQnhnejhDR1dmYVpjT3ZsRHo1UVF2NnpNdktsU1htUXJyNEFzMWw0TjM4SVVJRkFwcnBuZ0FCN0tPRTFkY0Y2cC9qckN5dzlOTHZGLzRYZVBVd1dzb3RkdFVELzVGbHYvczRYV3R5b01zUTVYZFF0WnFTcWRkcjZ0NWhhOTFPQW5Bd1M5cEVVdndhZVYyQ01GNlBsNGp3Q0UyZnkrOWRtblhTRG40SWNnWDgxWVBYdmI0emIyejBYQjB3enpJeXZTMDRqekdxRn
258FwYnFsNEIxK2lqeDhtcXZuTGJhYjQrVU0zckVZT2ZoaS9xWE03K0tuUkRjdG9CbjdKUnFHeVUrdXdrbytYTzYzd0dQdExDZzUrNHdhY08vQ3l3K21WNDRrMWkrY1BxZmhEc25ocmNHS3BlQWRmWWh3UElNMVhoeERPR2xOSkdYeW5mUzFqakx0bDhOWG93bEx4RHI2UTRnOW4zT1BHVkZJRzMxOVE4UzlrOEZXRjRoMThDY1dQcVo1WjlHM1d4ODhpbkRITDdPREhwTnZpMjhIUEFmaFJOL3dzeEdlMHNEa1Y3K0I3TkpNWmVBQlhzMXhWclVWU3NQcUs0L3J6RmJacUV3ZmZqV3Jtd1pkYTlkZU50dDBpdmFJWFk1UXZIUXoxbC9KYkt0N0JqM1RuMm5weEJYQXQ0MTZSUlRKMlRyNms0clBPcWxvcTNzR1hVTHlkUUdjamtwbmlad09IWFNrZHZCM3JaWkVjdklNdlJLQlFXRmY4dklNSGNCRHJlRVNodWtyWVR6a3VmNnRrT2N3VTcrQ1hON01sK0ZvV24zMU14Y3NXdTBXRTcrQ0xZTGVkSkx1dmtybWFkNmo0NHdzeE41K2RkUEFsNW1vQXlGZmhaUkZhS2NISi9IcXY3emJsTHF4bEgrL2dTeWcrdDJKbTNaK1o0bWNkVk83eU8vamNSSlgrSEx3U1ZHNHpCNSticU5LZmcxZUN5bTJXRTN6YW56M0d1Q1ozSWVmUlg4NDl5Ung4RDRYa0JKLzJhd2toSEVybGY5MmpISnVNS1lEVnJHeDZEeW1FMFBwVlQ4MmVaQTVlSVo4eHdFdFkyU3BLdm9HbktFNVZKbkdrMG9qZmJlaC9oU2FPUnZFT3ZwM2sxT0JGd1RMWnBXa3d0NW1ld0xwMHJRVGc0S2VIT0UzTzllRFRON2xEQ0JkTzQ4WHpxQW5JenEzcDYwRUxpbmZ3YW5hREREY0N2NUx1MGpQTEVNS3FRZTQ5ODRZRUJMaDhDVGw5UFdoQjhRNStYTEZNQlA4ZjVqR04yQ3N0cTkwQUFBQUFTVVZPUks1Q1lJST0iIGZpbGw9Im5vbmUiIHN0cm9rZS13aWR0aD0iMC41Ii8%2BPC9nPjwvZz48L3N2Zz4%3D%22%3B%0A%0A%20%20let%20lastPastedText%20%3D%20%22%22%3B%0A%0A%20%20window.addEventListener(%22copy%22%2C%20(event)%20%3D%3E%20%7B%0A%20%20%20%20Scratch.vm.runtime.startHats(%22clipboard_whenCopied%22)%3B%0A%20%20%7D)%3B%0A%20%20window.addEventListener(%22paste%22%2C%20(event)%20%3D%3E%20%7B%0A%20%20%20%20Scratch.vm.runtime.startHats(%22clipboard_whenPasted%22)%3B%0A%20%20%20%20const%20clipboardData%20%3D%20event.clipboardData%20%7C%7C%20window.clipboardData%3B%0A%20%20%20%20const%20pastedText%20%3D%20clipboardData.getData(%22Text%22)%3B%0A%20%20%20%20lastPastedText%20%3D%20pastedText%3B%0A%20%20%7D)%3B%0A%0A%20%20class%20Clipboard%20%7B%0A%20%20%20%20getInfo()%20%7B%0A%20%20%20%20%20%20return%20%7B%0A%20%20%20%20%20%20%20%20id%3A%20%22clipboard%22%2C%0A%20%20%20%20%20%20%20%20name%3A%20Scratch.translate(%22Clipboard%22)%2C%0A%20%20%20%20%20%20%20%20blockIconURI%3A%20extensionicon%2C%0A%20%20%20%20%20%20%20%20color1%3A%20%22%23008080%22%2C%0A%20%20%20%20%20%20%20%20color2%3A%20%22%23006666%22%2C%0A%20%20%20%20%20%20%20%20blocks%3A%20%5B%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22whenCopied%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.EVENT%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22when%20something%20is%20copied%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20isEdgeActivated%3A%20false%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22whenPasted%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.EVENT%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22when%20something%20is%20pasted%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20isEdgeActivated%3A%20false%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%22---%22%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22setClipboard%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22copy%20to%20clipboard%3A%20%5BTEXT%5D%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20TEXT%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22resetClipboard%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22reset%20clipboard%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%22---%22%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22clipboard%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22clipboard%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20disableMonitor%3A%20true%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22getLastPastedText%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20Scratch.translate(%22last%20pasted%20text%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20disableMonitor%3A%20true%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20setClipboard(args)%20%7B%0A%20%20%20%20%20%20navigator.clipboard.writeText(args.TEXT)%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20resetClipboard()%20%7B%0A%20%20%20%20%20%20navigator.clipboard.writeText(%22%22)%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20clipboard()%20%7B%0A%20%20%20%20%20%20if%20(navigator.clipboard%20%26%26%20navigator.clipboard.readText)%20%7B%0A%20%20%20%20%20%20%20%20return%20Scratch.canReadClipboard()%0A%20%20%20%20%20%20%20%20%20%20.then((allowed)%20%3D%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(allowed)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20navigator.clipboard.readText()%20%3F%3F%20%22%22%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20%22%22%3B%0A%20%20%20%20%20%20%20%20%20%20%7D)%0A%20%20%20%20%20%20%20%20%20%20.catch(()%20%3D%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20%22%22%3B%0A%20%20%20%20%20%20%20%20%20%20%7D)%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20return%20%22%22%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20getLastPastedText()%20%7B%0A%20%20%20%20%20%20return%20lastPastedText%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20Scratch.extensions.register(new%20Clipboard())%3B%0A%7D)(Scratch)%3B%0A%20%7D)(Scratch)%3B"]) { 259 vm.extensionManager.loadExtensionURL(extension); 260 } 261 262 } catch (e) { 263 handleError(e); 264 } 265 </script>
265 266 267 268
268<script> 269 const getProjectData = (function() { 270 const storage = scaffolding.storage; 271 storage.onprogress = (total, loaded) => { 272 setProgress(interpolate(0.2, 0.98, loaded / total)); 273 }; 274 275 storage.addWebStore( 276 [ 277 storage.AssetType.ImageVector, 278 storage.AssetType.ImageBitmap, 279 storage.AssetType.Sound, 280 storage.AssetType.Font 281 ].filter(i => i), 282 (asset) => new URL('./assets/' + asset.assetId + '.' + asset.dataFormat, location).href 283 ); 284 return () => new Promise((resolve, reject) => { 285 const xhr = new XMLHttpRequest(); 286 xhr.onload = () => { 287 resolve(xhr.response); 288 }; 289 xhr.onerror = () => { 290 if (location.protocol === 'file:') { 291 reject(new Error('Zip environment must be used on a website, not on a local file. To fix this error, use the "Plain HTML" environment instead.')); 292 } else { 293 reject(new Error('Request to load project data failed.')); 294 } 295 }; 296 xhr.onprogress = (e) => { 297 if (e.lengthComputable) { 298 setProgress(interpolate(0.1, 0.2, e.loaded / e.total)); 299 } 300 }; 301 xhr.responseType = 'arraybuffer'; 302 xhr.open('GET', "./assets/project.json"); 303 xhr.send(); 304 }); 305 })(); 306 </script>
306 307
307<script> 308 const run = async () => { 309 const projectData = await getProjectData(); 310 await scaffolding.loadProject(projectData); 311 setProgress(1); 312 loadingScreen.hidden = true; 313 if (true) { 314 scaffolding.start(); 315 } else { 316 launchScreen.hidden = false; 317 launchScreen.addEventListener('click', () => { 318 launchScreen.hidden = true; 319 scaffolding.start(); 320 }); 321 launchScreen.focus(); 322 } 323 }; 324 run().catch(handleError); 325 </script>
325 326</body> 327</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.