[{"data":1,"prerenderedAt":831},["ShallowReactive",2],{"docs-navigation:de":3,"content-page:docs:LO-OzGUWmvKc1Bzs36tcAHPIYcW4MOsOtKnNsMM62GA":267,"content-page-surround:docs:LO-OzGUWmvKc1Bzs36tcAHPIYcW4MOsOtKnNsMM62GA":829},[4,65,85,206],{"title":5,"page":6,"canonicalKey":7,"locale":8,"id":9,"draft":6,"icon":10,"sidebar":11,"children":12},"Ableitungen",false,"1","de","content:de:1.dokumentation:1.anleitungen:.navigation.yml","lucide:route","section",[13,21,28,35,42,49,56],{"title":14,"id":15,"canonicalKey":16,"locale":8,"draft":6,"icon":17,"navigation":18,"path":20},"Guild Wars auf dem Mac installieren","content:de:1.dokumentation:1.anleitungen:1.installation.md","1\u002F1","lucide:download",{"title":19},"Install and sign in","\u002Fde\u002Fdokumentation\u002Fanleitungen\u002Finstallation",{"title":22,"id":23,"canonicalKey":24,"locale":8,"draft":6,"navigation":25,"icon":26,"path":27},"Konten & Mobile-Verknüpfung","content:de:1.dokumentation:1.anleitungen:2.konten.md","1\u002F2",{"title":22},"lucide:key-round","\u002Fde\u002Fdokumentation\u002Fanleitungen\u002Fkonten",{"title":29,"id":30,"canonicalKey":31,"locale":8,"draft":6,"navigation":32,"icon":33,"path":34},"Auf dem Mac spielen: Optionen","content:de:1.dokumentation:1.anleitungen:3.guild-wars-auf-dem-mac-spielen.md","1\u002F3",{"title":29},"lucide:scale","\u002Fde\u002Fdokumentation\u002Fanleitungen\u002Fguild-wars-auf-dem-mac-spielen",{"title":36,"id":37,"canonicalKey":38,"locale":8,"draft":6,"navigation":39,"icon":40,"path":41},"Leistung","content:de:1.dokumentation:1.anleitungen:4.leistung.md","1\u002F4",{"title":36},"lucide:gauge","\u002Fde\u002Fdokumentation\u002Fanleitungen\u002Fleistung",{"title":43,"id":44,"canonicalKey":45,"locale":8,"draft":6,"navigation":46,"icon":47,"path":48},"Templates","content:de:1.dokumentation:1.anleitungen:5.templates.md","1\u002F5",{"title":43},"lucide:bookmark","\u002Fde\u002Fdokumentation\u002Fanleitungen\u002Ftemplates",{"title":50,"id":51,"canonicalKey":52,"locale":8,"draft":6,"navigation":53,"icon":54,"path":55},"Fehlerbehebung","content:de:1.dokumentation:1.anleitungen:6.fehlerbehebung.md","1\u002F6",{"title":50},"lucide:wrench","\u002Fde\u002Fdokumentation\u002Fanleitungen\u002Ffehlerbehebung",{"title":57,"id":58,"canonicalKey":59,"locale":60,"draft":6,"navigation":61,"icon":62,"fallback":63,"path":64},"Known issues","content:en:1.docs:1.guides:7.known-issues.md","1\u002F7","en",{"title":57},"lucide:triangle-alert",true,"\u002Fde\u002Fdokumentation\u002Fguides\u002Fknown-issues",{"title":66,"page":6,"canonicalKey":67,"locale":8,"id":68,"draft":6,"icon":69,"sidebar":70,"children":71},"Projekt","2","content:de:1.dokumentation:2.projekt:.navigation.yml","lucide:shield-check","group",[72,78],{"title":73,"id":74,"canonicalKey":75,"locale":8,"draft":6,"navigation":76,"icon":69,"path":77},"Sicherheit & Kontorisiko","content:de:1.dokumentation:2.projekt:1.sicherheit.md","2\u002F1",{"title":73},"\u002Fde\u002Fdokumentation\u002Fprojekt\u002Fsicherheit",{"title":79,"id":80,"canonicalKey":81,"locale":8,"draft":6,"navigation":82,"icon":83,"path":84},"Über & Credits","content:de:1.dokumentation:2.projekt:2.ueber.md","2\u002F2",{"title":79},"lucide:users","\u002Fde\u002Fdokumentation\u002Fprojekt\u002Fueber",{"title":86,"page":6,"canonicalKey":87,"locale":60,"id":88,"draft":6,"icon":89,"sidebar":11,"fallback":63,"children":90},"For ArenaNet","3","content:en:1.docs:3.upstream:.navigation.yml","lucide:send",[91,98,105,131,157,169,188],{"title":92,"id":93,"canonicalKey":94,"locale":60,"draft":6,"navigation":95,"icon":96,"fallback":63,"path":97},"Introduction","content:en:1.docs:3.upstream:1.introduction.md","3\u002F1",{"title":92},"lucide:book-open-check","\u002Fde\u002Fdokumentation\u002Fupstream\u002Fintroduction",{"title":99,"id":100,"canonicalKey":101,"locale":60,"draft":6,"navigation":102,"icon":103,"fallback":63,"path":104},"Request summary","content:en:1.docs:3.upstream:2.request-summary.md","3\u002F2",{"title":99},"lucide:list-checks","\u002Fde\u002Fdokumentation\u002Fupstream\u002Frequest-summary",{"title":106,"page":6,"canonicalKey":107,"locale":60,"id":108,"draft":6,"icon":109,"sidebar":70,"fallback":63,"children":110},"File system","3\u002F3","content:en:1.docs:3.upstream:3.filesystem:.navigation.yml","lucide:folder-x",[111,117,124],{"title":112,"id":113,"canonicalKey":114,"locale":60,"draft":6,"navigation":115,"icon":109,"fallback":63,"path":116},"File routines (UR-01…04)","content:en:1.docs:3.upstream:3.filesystem:1.unimplemented-routines.md","3\u002F3\u002F1",{"title":112},"\u002Fde\u002Fdokumentation\u002Fupstream\u002Ffilesystem\u002Funimplemented-routines",{"title":118,"id":119,"canonicalKey":120,"locale":60,"draft":6,"navigation":121,"icon":122,"fallback":63,"path":123},"RemoveExtension (UR-05)","content:en:1.docs:3.upstream:3.filesystem:2.path-remove-extension.md","3\u002F3\u002F2",{"title":118},"lucide:scissors","\u002Fde\u002Fdokumentation\u002Fupstream\u002Ffilesystem\u002Fpath-remove-extension",{"title":125,"id":126,"canonicalKey":127,"locale":60,"draft":6,"navigation":128,"icon":129,"fallback":63,"path":130},"File::Open mode (UR-06)","content:en:1.docs:3.upstream:3.filesystem:3.file-open-mode.md","3\u002F3\u002F3",{"title":125},"lucide:file-plus-2","\u002Fde\u002Fdokumentation\u002Fupstream\u002Ffilesystem\u002Ffile-open-mode",{"title":132,"page":6,"canonicalKey":133,"locale":60,"id":134,"draft":6,"icon":135,"sidebar":70,"fallback":63,"children":136},"Input","3\u002F4","content:en:1.docs:3.upstream:4.input:.navigation.yml","lucide:mouse-pointer-click",[137,143,150],{"title":138,"id":139,"canonicalKey":140,"locale":60,"draft":6,"navigation":141,"icon":135,"fallback":63,"path":142},"Double-click (UR-07)","content:en:1.docs:3.upstream:4.input:1.double-click-flag.md","3\u002F4\u002F1",{"title":138},"\u002Fde\u002Fdokumentation\u002Fupstream\u002Finput\u002Fdouble-click-flag",{"title":144,"id":145,"canonicalKey":146,"locale":60,"draft":6,"navigation":147,"icon":148,"fallback":63,"path":149},"Key labels (UR-08)","content:en:1.docs:3.upstream:4.input:2.key-labels.md","3\u002F4\u002F2",{"title":144},"lucide:keyboard","\u002Fde\u002Fdokumentation\u002Fupstream\u002Finput\u002Fkey-labels",{"title":151,"id":152,"canonicalKey":153,"locale":60,"draft":6,"navigation":154,"icon":155,"fallback":63,"path":156},"Cursor re-test (UR-09)","content:en:1.docs:3.upstream:4.input:3.cursor-re-evaluation.md","3\u002F4\u002F3",{"title":151},"lucide:pointer","\u002Fde\u002Fdokumentation\u002Fupstream\u002Finput\u002Fcursor-re-evaluation",{"title":158,"page":6,"canonicalKey":159,"locale":60,"id":160,"draft":6,"icon":161,"sidebar":70,"fallback":63,"children":162},"Runtime","3\u002F5","content:en:1.docs:3.upstream:5.runtime:.navigation.yml","lucide:cpu",[163],{"title":164,"id":165,"canonicalKey":166,"locale":60,"draft":6,"navigation":167,"icon":161,"fallback":63,"path":168},"Heap maximum (UR-10)","content:en:1.docs:3.upstream:5.runtime:1.heap-maximum.md","3\u002F5\u002F1",{"title":164},"\u002Fde\u002Fdokumentation\u002Fupstream\u002Fruntime\u002Fheap-maximum",{"title":170,"page":6,"canonicalKey":171,"locale":60,"id":172,"draft":6,"icon":173,"sidebar":70,"fallback":63,"children":174},"Interface proposals","3\u002F6","content:en:1.docs:3.upstream:6.proposals:.navigation.yml","lucide:plug",[175,182],{"title":176,"id":177,"canonicalKey":178,"locale":60,"draft":6,"navigation":179,"icon":180,"fallback":63,"path":181},"Build identity (UR-11)","content:en:1.docs:3.upstream:6.proposals:1.build-identification.md","3\u002F6\u002F1",{"title":176},"lucide:fingerprint","\u002Fde\u002Fdokumentation\u002Fupstream\u002Fproposals\u002Fbuild-identification",{"title":183,"id":184,"canonicalKey":185,"locale":60,"draft":6,"navigation":186,"icon":173,"fallback":63,"path":187},"Host interface (UR-12)","content:en:1.docs:3.upstream:6.proposals:2.platform-host-interface.md","3\u002F6\u002F2",{"title":183},"\u002Fde\u002Fdokumentation\u002Fupstream\u002Fproposals\u002Fplatform-host-interface",{"title":189,"page":6,"canonicalKey":190,"locale":60,"id":191,"draft":6,"icon":192,"sidebar":70,"fallback":63,"children":193},"Reference","3\u002F7","content:en:1.docs:3.upstream:7.reference:.navigation.yml","lucide:microscope",[194,200],{"title":195,"id":196,"canonicalKey":197,"locale":60,"draft":6,"navigation":198,"icon":54,"fallback":63,"path":199},"Our workarounds","content:en:1.docs:3.upstream:7.reference:1.our-workarounds.md","3\u002F7\u002F1",{"title":195},"\u002Fde\u002Fdokumentation\u002Fupstream\u002Freference\u002Four-workarounds",{"title":201,"id":202,"canonicalKey":203,"locale":60,"draft":6,"navigation":204,"icon":192,"fallback":63,"path":205},"Verification method","content:en:1.docs:3.upstream:7.reference:2.verification-method.md","3\u002F7\u002F2",{"title":201},"\u002Fde\u002Fdokumentation\u002Fupstream\u002Freference\u002Fverification-method",{"title":207,"page":6,"canonicalKey":208,"locale":60,"id":209,"draft":6,"icon":210,"sidebar":11,"fallback":63,"children":211},"Features","4","content:en:1.docs:4.features:.navigation.yml","lucide:layout-grid",[212,218,225,232,239,246,253,260],{"title":213,"id":214,"canonicalKey":215,"locale":60,"draft":6,"navigation":216,"icon":83,"fallback":63,"path":217},"Accounts and launcher","content:en:1.docs:4.features:1.accounts.md","4\u002F1",{"title":213},"\u002Fde\u002Fdokumentation\u002Ffeatures\u002Faccounts",{"title":219,"id":220,"canonicalKey":221,"locale":60,"draft":6,"navigation":222,"icon":223,"fallback":63,"path":224},"Hub and Switch Character","content:en:1.docs:4.features:2.hub.md","4\u002F2",{"title":219},"lucide:search","\u002Fde\u002Fdokumentation\u002Ffeatures\u002Fhub",{"title":226,"id":227,"canonicalKey":228,"locale":60,"draft":6,"navigation":229,"icon":230,"fallback":63,"path":231},"Travel and maps","content:en:1.docs:4.features:3.travel-and-maps.md","4\u002F3",{"title":226},"lucide:map","\u002Fde\u002Fdokumentation\u002Ffeatures\u002Ftravel-and-maps",{"title":233,"id":234,"canonicalKey":235,"locale":60,"draft":6,"navigation":236,"icon":237,"fallback":63,"path":238},"Chat and trade","content:en:1.docs:4.features:4.chat-and-trade.md","4\u002F4",{"title":233},"lucide:messages-square","\u002Fde\u002Fdokumentation\u002Ffeatures\u002Fchat-and-trade",{"title":240,"id":241,"canonicalKey":242,"locale":60,"draft":6,"navigation":243,"icon":244,"fallback":63,"path":245},"Inventory","content:en:1.docs:4.features:5.inventory.md","4\u002F5",{"title":240},"lucide:package","\u002Fde\u002Fdokumentation\u002Ffeatures\u002Finventory",{"title":247,"id":248,"canonicalKey":249,"locale":60,"draft":6,"navigation":250,"icon":251,"fallback":63,"path":252},"Timers and readouts","content:en:1.docs:4.features:6.combat.md","4\u002F6",{"title":247},"lucide:timer","\u002Fde\u002Fdokumentation\u002Ffeatures\u002Fcombat",{"title":254,"id":255,"canonicalKey":256,"locale":60,"draft":6,"navigation":257,"icon":258,"fallback":63,"path":259},"Appearance","content:en:1.docs:4.features:7.appearance.md","4\u002F7",{"title":254},"lucide:palette","\u002Fde\u002Fdokumentation\u002Ffeatures\u002Fappearance",{"title":261,"id":262,"canonicalKey":263,"locale":60,"draft":6,"navigation":264,"icon":265,"fallback":63,"path":266},"Game files and updates","content:en:1.docs:4.features:8.game-files-and-updates.md","4\u002F8",{"title":261},"lucide:hard-drive-download","\u002Fde\u002Fdokumentation\u002Ffeatures\u002Fgame-files-and-updates",{"title":268,"ref":269,"description":270,"icon":192,"updated":271,"navigation":272,"body":273,"type":810,"id":202,"canonicalKey":203,"draft":6,"partial":6,"locale":60,"collection":811,"navigationFile":6,"file":812,"resolvedRefs":818,"route":819,"resolution":826},"Verification method and evidence grades","docs\u002Fupstream\u002Freference\u002Fverification-method","How we produce the evidence in this section, which claims we executed and which we inferred, the tools we use, and the two traps that produced wrong answers.","2026-08-04",{"title":201},{"type":274,"children":275,"toc":792},"root",[276,284,291,296,373,387,393,398,445,483,495,501,520,531,542,548,609,614,620,648,654,660,687,719,725,776,782,787],{"type":277,"tag":278,"props":279,"children":280},"element","p",{},[281],{"type":282,"value":283},"text","This page explains how we get our results — and what the method can't show.\nEvery request page separates measurements from inference; this page defines\nthat separation.",{"type":277,"tag":285,"props":286,"children":288},"h2",{"id":287},"evidence-grades",[289],{"type":282,"value":290},"Evidence grades",{"type":277,"tag":278,"props":292,"children":293},{},[294],{"type":282,"value":295},"We use three grades, and each request page states its grade.",{"type":277,"tag":297,"props":298,"children":299},"table",{},[300,319],{"type":277,"tag":301,"props":302,"children":303},"thead",{},[304],{"type":277,"tag":305,"props":306,"children":307},"tr",{},[308,314],{"type":277,"tag":309,"props":310,"children":311},"th",{},[312],{"type":282,"value":313},"Grade",{"type":277,"tag":309,"props":315,"children":316},{},[317],{"type":282,"value":318},"Meaning",{"type":277,"tag":320,"props":321,"children":322},"tbody",{},[323,341,357],{"type":277,"tag":305,"props":324,"children":325},{},[326,336],{"type":277,"tag":327,"props":328,"children":329},"td",{},[330],{"type":277,"tag":331,"props":332,"children":333},"strong",{},[334],{"type":282,"value":335},"Executed",{"type":277,"tag":327,"props":337,"children":338},{},[339],{"type":282,"value":340},"We called the function and recorded the result",{"type":277,"tag":305,"props":342,"children":343},{},[344,352],{"type":277,"tag":327,"props":345,"children":346},{},[347],{"type":277,"tag":331,"props":348,"children":349},{},[350],{"type":282,"value":351},"Observed",{"type":277,"tag":327,"props":353,"children":354},{},[355],{"type":282,"value":356},"We watched the client behave, and we measured the behaviour",{"type":277,"tag":305,"props":358,"children":359},{},[360,368],{"type":277,"tag":327,"props":361,"children":362},{},[363],{"type":277,"tag":331,"props":364,"children":365},{},[366],{"type":282,"value":367},"Inferred",{"type":277,"tag":327,"props":369,"children":370},{},[371],{"type":282,"value":372},"We read the code and concluded. We did not run it",{"type":277,"tag":278,"props":374,"children":375},{},[376,378,385],{"type":282,"value":377},"An executed claim is the strongest. Six of our file-system claims are\nexecuted. The key-label claim is observed and partly inferred, and\n",{"type":277,"tag":379,"props":380,"children":382},"a",{"href":381},"$docs\u002Fupstream\u002Finput\u002Fkey-labels",[383],{"type":282,"value":384},"UR-08",{"type":282,"value":386}," says so on the page.",{"type":277,"tag":285,"props":388,"children":390},{"id":389},"how-we-execute-a-shipped-function",[391],{"type":282,"value":392},"How we execute a shipped function",{"type":277,"tag":278,"props":394,"children":395},{},[396],{"type":282,"value":397},"The path helpers are pure — no game state, no initialised UI — so we can call\nthem from a cold instance.",{"type":277,"tag":399,"props":400,"children":402},"steps",{"mode":401},"numbered",[403,410,415,421,434,440],{"type":277,"tag":404,"props":405,"children":407},"h3",{"id":406},"how-we-execute-a-shipped-function-add-an-export",[408],{"type":282,"value":409},"Add an export",{"type":277,"tag":278,"props":411,"children":412},{},[413],{"type":282,"value":414},"Append an export entry for the target function to the module. This changes the\nexport section only.",{"type":277,"tag":404,"props":416,"children":418},{"id":417},"how-we-execute-a-shipped-function-instantiate",[419],{"type":282,"value":420},"Instantiate",{"type":277,"tag":278,"props":422,"children":423},{},[424,426,432],{"type":282,"value":425},"Load the module in Node with stub imports. Most imports can return ",{"type":277,"tag":427,"props":428,"children":429},"code",{},[430],{"type":282,"value":431},"0",{"type":282,"value":433},".",{"type":277,"tag":404,"props":435,"children":437},{"id":436},"how-we-execute-a-shipped-function-call",[438],{"type":282,"value":439},"Call",{"type":277,"tag":278,"props":441,"children":442},{},[443],{"type":282,"value":444},"Call the function with prepared arguments in linear memory. Read the result\nback from memory.",{"type":277,"tag":278,"props":446,"children":447},{},[448,450,455,457,462,463,468,470,475,477,481],{"type":282,"value":449},"This method proved ",{"type":277,"tag":427,"props":451,"children":452},{},[453],{"type":282,"value":454},"UR-01",{"type":282,"value":456},", ",{"type":277,"tag":427,"props":458,"children":459},{},[460],{"type":282,"value":461},"UR-03",{"type":282,"value":456},{"type":277,"tag":427,"props":464,"children":465},{},[466],{"type":282,"value":467},"UR-04",{"type":282,"value":469},", and ",{"type":277,"tag":427,"props":471,"children":472},{},[473],{"type":282,"value":474},"UR-05",{"type":282,"value":476}," directly; for\n",{"type":277,"tag":427,"props":478,"children":479},{},[480],{"type":282,"value":474},{"type":282,"value":482}," we ran six inputs on build 38797 and recorded all six results.",{"type":277,"tag":278,"props":484,"children":485},{},[486,488,493],{"type":282,"value":487},"We use the same method in reverse for ",{"type":277,"tag":427,"props":489,"children":490},{},[491],{"type":282,"value":492},"UR-02",{"type":282,"value":494},": driving the derived forwarders\nagainst a fake file system and comparing against the real bridge source.",{"type":277,"tag":285,"props":496,"children":498},{"id":497},"how-we-observe-live-behaviour",[499],{"type":282,"value":500},"How we observe live behaviour",{"type":277,"tag":278,"props":502,"children":503},{},[504,506,511,513,518],{"type":282,"value":505},"For ",{"type":277,"tag":427,"props":507,"children":508},{},[509],{"type":282,"value":510},"UR-06",{"type":282,"value":512}," we captured the syscall traffic of a save and a rename on a live\nclient. The captured flag value ",{"type":277,"tag":427,"props":514,"children":515},{},[516],{"type":282,"value":517},"32834",{"type":282,"value":519}," is the evidence.",{"type":277,"tag":278,"props":521,"children":522},{},[523,524,529],{"type":282,"value":505},{"type":277,"tag":427,"props":525,"children":526},{},[527],{"type":282,"value":528},"UR-09",{"type":282,"value":530}," we measured the gap between the cursor hide and the new cursor,\nthree times, with the pointer held still.",{"type":277,"tag":278,"props":532,"children":533},{},[534,535,540],{"type":282,"value":505},{"type":277,"tag":427,"props":536,"children":537},{},[538],{"type":282,"value":539},"UR-10",{"type":282,"value":541}," we read the peak heap value from three crash sessions on three\nmachines, and the compiled-in cap from the artifact the client downloaded. The\nabort text in that request is the client's own, read off the crash view of a\nplayer's machine — it never enters a diagnostics export, which carries only a\nreason category and a non-text fingerprint. The growth curve comes from a\nfourth session that did not crash: our host samples the heap size every two\nseconds and records each rise, so a session's staircase is the sequence of\nthose events.",{"type":277,"tag":285,"props":543,"children":545},{"id":544},"tools",[546],{"type":282,"value":547},"Tools",{"type":277,"tag":297,"props":549,"children":550},{},[551,567],{"type":277,"tag":301,"props":552,"children":553},{},[554],{"type":277,"tag":305,"props":555,"children":556},{},[557,562],{"type":277,"tag":309,"props":558,"children":559},{},[560],{"type":282,"value":561},"Tool",{"type":277,"tag":309,"props":563,"children":564},{},[565],{"type":282,"value":566},"Purpose",{"type":277,"tag":320,"props":568,"children":569},{},[570,583,596],{"type":277,"tag":305,"props":571,"children":572},{},[573,578],{"type":277,"tag":327,"props":574,"children":575},{},[576],{"type":282,"value":577},"A full instruction decoder",{"type":277,"tag":327,"props":579,"children":580},{},[581],{"type":282,"value":582},"Decodes every function body. It decoded 17,600 of 17,600 functions on build 38,771 with no failures",{"type":277,"tag":305,"props":584,"children":585},{},[586,591],{"type":277,"tag":327,"props":587,"children":588},{},[589],{"type":282,"value":590},"A symbol generator",{"type":277,"tag":327,"props":592,"children":593},{},[594],{"type":282,"value":595},"Attributes functions to translation units, using the 219 import names, the 44 export names, and 850 source paths in the data section",{"type":277,"tag":305,"props":597,"children":598},{},[599,604],{"type":277,"tag":327,"props":600,"children":601},{},[602],{"type":282,"value":603},"An anchor probe",{"type":277,"tag":327,"props":605,"children":606},{},[607],{"type":282,"value":608},"Checks which assert strings still identify exactly one function on a new build",{"type":277,"tag":278,"props":610,"children":611},{},[612],{"type":282,"value":613},"The tools are published in the project repository, and we can supply the\nscripts behind any result in this section.",{"type":277,"tag":285,"props":615,"children":617},{"id":616},"two-traps-that-produced-wrong-answers",[618],{"type":282,"value":619},"Two traps that produced wrong answers",{"type":277,"tag":621,"props":622,"children":624},"warning",{"title":623},"Trap 1 — padded LEB128",[625,643],{"type":277,"tag":278,"props":626,"children":627},{},[628,630,635,637,642],{"type":282,"value":629},"LLVM writes relocatable constants as zero-padded, non-canonical LEB128. For\nexample, ",{"type":277,"tag":427,"props":631,"children":632},{},[633],{"type":282,"value":634},"i32.const 0x102820",{"type":282,"value":636}," is ",{"type":277,"tag":427,"props":638,"children":639},{},[640],{"type":282,"value":641},"41 a0 d0 c0 80 00",{"type":282,"value":433},{"type":277,"tag":278,"props":644,"children":645},{},[646],{"type":282,"value":647},"A byte search for the canonical encoding finds nothing, and it finds nothing\nsilently. Decode the instructions instead of matching bytes. This cost us time\ntwice.",{"type":277,"tag":621,"props":649,"children":651},{"title":650},"Trap 2 — the code section is not in linear memory",[652],{"type":282,"value":653},"The code of the module is not in the heap. A scan over linear memory cannot\nfind a function body. Scan the module bytes.",{"type":277,"tag":285,"props":655,"children":657},{"id":656},"how-we-derived-the-double-click-channel-twice",[658],{"type":282,"value":659},"How we derived the double-click channel twice",{"type":277,"tag":278,"props":661,"children":662},{},[663,665,671,673,678,680,685],{"type":282,"value":664},"We established ",{"type":277,"tag":379,"props":666,"children":668},{"href":667},"$docs\u002Fupstream\u002Finput\u002Fdouble-click-flag",[669],{"type":282,"value":670},"UR-07",{"type":282,"value":672}," two times,\nindependently: once forward, from the Emscripten input callbacks to ",{"type":277,"tag":427,"props":674,"children":675},{},[676],{"type":282,"value":677},"FrMouse",{"type":282,"value":679},",\nand once backward, from the ",{"type":277,"tag":427,"props":681,"children":682},{},[683],{"type":282,"value":684},"FLAG_DBL_CLICK",{"type":282,"value":686}," assert to the input record. Both\nderivations produced the same chain and the same missing byte, and every\nfunction index, offset, and constant came from a full instruction decode.",{"type":277,"tag":278,"props":688,"children":689},{},[690,692,697,699,704,705,710,712,717],{"type":282,"value":691},"We also recorded two supporting negatives: the import list holds no\n",{"type":277,"tag":427,"props":693,"children":694},{},[695],{"type":282,"value":696},"emscripten_set_dblclick_callback",{"type":282,"value":698},", and the strings ",{"type":277,"tag":427,"props":700,"children":701},{},[702],{"type":282,"value":703},"dblclick",{"type":282,"value":456},{"type":277,"tag":427,"props":706,"children":707},{},[708],{"type":282,"value":709},"clickCount",{"type":282,"value":711},",\nand ",{"type":277,"tag":427,"props":713,"children":714},{},[715],{"type":282,"value":716},"DblClick",{"type":282,"value":718}," occur nowhere in the binary.",{"type":277,"tag":285,"props":720,"children":722},{"id":721},"what-our-method-cannot-show",[723],{"type":282,"value":724},"What our method cannot show",{"type":277,"tag":726,"props":727,"children":728},"ul",{},[729,746,756,766],{"type":277,"tag":730,"props":731,"children":732},"li",{},[733,738,740,744],{"type":277,"tag":331,"props":734,"children":735},{},[736],{"type":282,"value":737},"We cannot call a function that needs an initialised UI.",{"type":282,"value":739}," The label render\nin ",{"type":277,"tag":427,"props":741,"children":742},{},[743],{"type":282,"value":384},{"type":282,"value":745}," is one example; that page states the boundary.",{"type":277,"tag":730,"props":747,"children":748},{},[749,754],{"type":277,"tag":331,"props":750,"children":751},{},[752],{"type":282,"value":753},"We cannot prove a memory address.",{"type":282,"value":755}," An address has no shape in the module.\nWe measure it on a running client, and the measurement holds for that build\nonly.",{"type":277,"tag":730,"props":757,"children":758},{},[759,764],{"type":277,"tag":331,"props":760,"children":761},{},[762],{"type":282,"value":763},"We cannot see the source.",{"type":282,"value":765}," Every source attribution in this section comes\nfrom an assert string. When a translation unit ships no assert, we cannot\nname it.",{"type":277,"tag":730,"props":767,"children":768},{},[769,774],{"type":277,"tag":331,"props":770,"children":771},{},[772],{"type":282,"value":773},"We have one client build at a time.",{"type":282,"value":775}," We can prove that a check refuses a\nchanged module. We cannot prove that a locator survives the next build until\nthe next build exists.",{"type":277,"tag":285,"props":777,"children":779},{"id":778},"how-to-check-any-claim-yourself",[780],{"type":282,"value":781},"How to check any claim yourself",{"type":277,"tag":278,"props":783,"children":784},{},[785],{"type":282,"value":786},"Every request page has a reproduction procedure. The procedures need a stock\nclient — no part of our host, and no modification of the module, except where\na page says otherwise.",{"type":277,"tag":278,"props":788,"children":789},{},[790],{"type":282,"value":791},"If a claim in this section is wrong, tell us. We'll correct the page and say\nwhat we got wrong.",{"title":793,"searchDepth":794,"depth":794,"links":795},"",4,[796,798,804,805,806,807,808,809],{"id":287,"depth":797,"text":290},2,{"id":389,"depth":797,"text":392,"children":799},[800,802,803],{"id":406,"depth":801,"text":409},3,{"id":417,"depth":801,"text":420},{"id":436,"depth":801,"text":439},{"id":497,"depth":797,"text":500},{"id":544,"depth":797,"text":547},{"id":616,"depth":797,"text":619},{"id":656,"depth":797,"text":659},{"id":721,"depth":797,"text":724},{"id":778,"depth":797,"text":781},"markdown","docs",{"source":813,"path":814,"stem":815,"dir":816,"extension":817},"content","en\u002F1.docs\u002F3.upstream\u002F7.reference\u002F2.verification-method.md","en\u002F1.docs\u002F3.upstream\u002F7.reference\u002F2.verification-method","reference","md",{"$docs\u002Fupstream\u002Finput\u002Fkey-labels":149,"$docs\u002Fupstream\u002Finput\u002Fdouble-click-flag":142},{"requestedPath":205,"resolvedPath":820,"alternates":821},"\u002Fdocs\u002Fupstream\u002Freference\u002Fverification-method",[822,824],{"locale":60,"path":820,"source":823},"variant",{"locale":8,"path":205,"source":825,"resolvedLocale":60},"fallback",{"requested":827,"resolved":828,"usedFallback":63},{"locale":8},{"locale":60},{"previous":830,"next":830},null,1794063743724]