'use strict'; function emit(row) { try { send(row); } catch (e) {} } setTimeout(() => { try { Java.perform(() => { const hits = []; Java.enumerateLoadedClasses({ onMatch(name) { if (/turing|Turing|turingfd|TuringFd/.test(name)) hits.push(name); }, onComplete() { for (const cn of hits) { try { const K = Java.use(cn); const ms = K.class.getDeclaredMethods(); const sigs = []; for (const m of ms) { let ret = '?'; try { ret = m.getReturnType().getName(); } catch (e) {} const pts = Array.from(m.getParameterTypes()).map(t => { try { return t.getName(); } catch (e) { return '?'; } }); const isNative = m.isNative ? 'N' : '-'; sigs.push(isNative + ' ' + ret + ' ' + m.getName() + '(' + pts.join(',') + ')'); } emit({ event: 'turing-class', name: cn, methods: sigs.slice(0, 40) }); } catch (e) {} } emit({ event: 'turing-count', n: hits.length }); }, }); }); } catch (e) { emit({ event: 'turing-err', msg: String(e).slice(0, 160) }); } }, 3500);