printl_list([H|X]):-
put_code(H), printl_list(X).
read_line_codes(A, L) :-
get_code(C),
( C == -1
-> ( A == []
-> L = end_of_file
)
; ( C == 0'\n
-> reverse(A, L)
; read_line_codes([C|A], L)
)
).
:- initialization(main).
main :-
repeat,
read_line_codes([], X),
(X == [52,50]
-> (
halt
)
; (
nl,
printl_list(X)
)),
X == end_of_file,
halt.
cHJpbnRsX2xpc3QoW0h8WF0pOi0KICAgIHB1dF9jb2RlKEgpLCBwcmludGxfbGlzdChYKS4KICAgIApyZWFkX2xpbmVfY29kZXMoQSwgTCkgOi0KCWdldF9jb2RlKEMpLAoJKCAgIEMgPT0gLTEKCS0+ICAoICBBID09IFtdCgkgICAgLT4gIEwgPSBlbmRfb2ZfZmlsZQoJICAgIDsgICByZXZlcnNlKEEsIEwpCgkgICAgKQoJOyAgICggIEMgPT0gMCdcbgoJICAgIC0+IHJldmVyc2UoQSwgTCkKCSAgICA7ICByZWFkX2xpbmVfY29kZXMoW0N8QV0sIEwpCgkgICAgKQoJKS4KICAgIAo6LSBpbml0aWFsaXphdGlvbihtYWluKS4KbWFpbiA6LSAKCXJlcGVhdCwKCXJlYWRfbGluZV9jb2RlcyhbXSwgWCksCgkoWCA9PSBbNTIsNTBdCgktPiAoCgkJaGFsdAoJCSkKCTsgKAoJCW5sLAoJCXByaW50bF9saXN0KFgpCgkpKSwKCVggPT0gZW5kX29mX2ZpbGUsCgloYWx0Lg==
MS8vIHBhY2thZ2VzL2FwcC9zcmMvc2FuZGJveC9ldmFsL21hbmFnZXIudHMKCmltcG9ydCB7IFNhbmRib3hJbnN0YW5jZSB9IGZyb20gJy4vdHlwZXMnOyAvLyBBc3N1bWUgeW91IGhhdmUgYSB0eXBlIGZvciBzYW5kYm94IGluc3RhbmNlcwoKY2xhc3MgU2FuZGJveE1hbmFnZXIgewogIHByaXZhdGUgc2FuZGJveGVzOiBNYXAmbHQ7c3RyaW5nLCBTYW5kYm94SW5zdGFuY2UmZ3Q7OwoKICBjb25zdHJ1Y3RvcigpIHsKICAgIHRoaXMuc2FuZGJveGVzID0gbmV3IE1hcCgpOwogIH0KCiAgLy8gQ3JlYXRlIGEgbmV3IHNhbmRib3ggaW5zdGFuY2UKICBjcmVhdGVTYW5kYm94KGlkOiBzdHJpbmcsIGNvZGU6IHN0cmluZyk6IFNhbmRib3hJbnN0YW5jZSB7CiAgICBjb25zdCBzYW5kYm94ID0gdGhpcy5pbml0aWFsaXplU2FuZGJveChjb2RlKTsKICAgIHRoaXMuc2FuZGJveGVzLnNldChpZCwgc2FuZGJveCk7CiAgICByZXR1cm4gc2FuZGJveDsKICB9CgogIC8vIFJldHJpZXZlIGFuIGV4aXN0aW5nIHNhbmRib3gKICBnZXRTYW5kYm94KGlkOiBzdHJpbmcpOiBTYW5kYm94SW5zdGFuY2UgfCB1bmRlZmluZWQgewogICAgcmV0dXJuIHRoaXMuc2FuZGJveGVzLmdldChpZCk7CiAgfQoKICAvLyBEZXN0cm95IGEgc2FuZGJveCBpbnN0YW5jZQogIGRlc3Ryb3lTYW5kYm94KGlkOiBzdHJpbmcpOiBib29sZWFuIHsKICAgIGlmICh0aGlzLnNhbmRib3hlcy5oYXMoaWQpKSB7CiAgICAgIGNvbnN0IHNhbmRib3ggPSB0aGlzLnNhbmRib3hlcy5nZXQoaWQpOwogICAgICBzYW5kYm94Py50ZXJtaW5hdGUoKTsgLy8gQXNzdW1lIHRlcm1pbmF0ZSBtZXRob2QgZXhpc3RzCiAgICAgIHRoaXMuc2FuZGJveGVzLmRlbGV0ZShpZCk7CiAgICAgIHJldHVybiB0cnVlOwogICAgfQogICAgcmV0dXJuIGZhbHNlOwogIH0KCiAgLy8gSW5pdGlhbGl6ZSBzYW5kYm94IGVudmlyb25tZW50CiAgcHJpdmF0ZSBpbml0aWFsaXplU2FuZGJveChjb2RlOiBzdHJpbmcpOiBTYW5kYm94SW5zdGFuY2UgewogICAgLy8gUGxhY2Vob2xkZXIgZm9yIHNhbmRib3ggY3JlYXRpb24gbG9naWMKICAgIGNvbnN0IHNhbmRib3g6IFNhbmRib3hJbnN0YW5jZSA9IHsKICAgICAgaWQ6IGdlbmVyYXRlVW5pcXVlSWQoKSwKICAgICAgY29kZSwKICAgICAgdGVybWluYXRlKCkgewogICAgICAgIC8vIENsZWFudXAgbG9naWMKICAgICAgfSwKICAgIH07CiAgICAvLyBPcHRpb25hbGx5LCBydW4gb3IgZXZhbHVhdGUgY29kZSBoZXJlCiAgICByZXR1cm4gc2FuZGJveDsKICB9Cn0KCi8vIEhlbHBlciBmdW5jdGlvbiB0byBnZW5lcmF0ZSB1bmlxdWUgSURzCmZ1bmN0aW9uIGdlbmVyYXRlVW5pcXVlSWQoKTogc3RyaW5nIHsKICByZXR1cm4gTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyKDIsIDkpOwp9CgpleHBvcnQgY29uc3Qgc2FuZGJveE1hbmFnZXIgPSBuZXcgU2FuZGJveE1hbmFnZXIoKTsKMgoxMAo0MgoxMQ==
1// packages/app/src/sandbox/eval/manager.ts
import { SandboxInstance } from './types'; // Assume you have a type for sandbox instances
class SandboxManager {
private sandboxes: Map<string, SandboxInstance>;
constructor() {
this.sandboxes = new Map();
}
// Create a new sandbox instance
createSandbox(id: string, code: string): SandboxInstance {
const sandbox = this.initializeSandbox(code);
this.sandboxes.set(id, sandbox);
return sandbox;
}
// Retrieve an existing sandbox
getSandbox(id: string): SandboxInstance | undefined {
return this.sandboxes.get(id);
}
// Destroy a sandbox instance
destroySandbox(id: string): boolean {
if (this.sandboxes.has(id)) {
const sandbox = this.sandboxes.get(id);
sandbox?.terminate(); // Assume terminate method exists
this.sandboxes.delete(id);
return true;
}
return false;
}
// Initialize sandbox environment
private initializeSandbox(code: string): SandboxInstance {
// Placeholder for sandbox creation logic
const sandbox: SandboxInstance = {
id: generateUniqueId(),
code,
terminate() {
// Cleanup logic
},
};
// Optionally, run or evaluate code here
return sandbox;
}
}
// Helper function to generate unique IDs
function generateUniqueId(): string {
return Math.random().toString(36).substr(2, 9);
}
export const sandboxManager = new SandboxManager();
2
10
42
11
1// packages/app/src/sandbox/eval/manager.ts
import { SandboxInstance } from './types'; // Assume you have a type for sandbox instances
class SandboxManager {
private sandboxes: Map<string, SandboxInstance>;
constructor() {
this.sandboxes = new Map();
}
// Create a new sandbox instance
createSandbox(id: string, code: string): SandboxInstance {
const sandbox = this.initializeSandbox(code);
this.sandboxes.set(id, sandbox);
return sandbox;
}
// Retrieve an existing sandbox
getSandbox(id: string): SandboxInstance | undefined {
return this.sandboxes.get(id);
}
// Destroy a sandbox instance
destroySandbox(id: string): boolean {
if (this.sandboxes.has(id)) {
const sandbox = this.sandboxes.get(id);
sandbox?.terminate(); // Assume terminate method exists
this.sandboxes.delete(id);
return true;
}
return false;
}
// Initialize sandbox environment
private initializeSandbox(code: string): SandboxInstance {
// Placeholder for sandbox creation logic
const sandbox: SandboxInstance = {
id: generateUniqueId(),
code,
terminate() {
// Cleanup logic
},
};
// Optionally, run or evaluate code here
return sandbox;
}
}
// Helper function to generate unique IDs
function generateUniqueId(): string {
return Math.random().toString(36).substr(2, 9);
}
export const sandboxManager = new SandboxManager();
2
10