@tangle-network/sandbox 0.9.1-develop.20260624210934.e2730e8 → 0.9.2-develop.20260625093856.35d47c0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1 +1,1180 @@
1
- const a0_0xde38a2=a0_0x2424;(function(_0x5bbe26,_0x5c1955){const _0x31036b=a0_0x2424,_0x125b20=_0x5bbe26();while(!![]){try{const _0xc637ab=-parseInt(_0x31036b(0x283))/0x1+-parseInt(_0x31036b(0x203))/0x2*(parseInt(_0x31036b(0x22a))/0x3)+-parseInt(_0x31036b(0x2db))/0x4+parseInt(_0x31036b(0x2ef))/0x5*(parseInt(_0x31036b(0x2ad))/0x6)+-parseInt(_0x31036b(0x1ff))/0x7+parseInt(_0x31036b(0x2bc))/0x8*(parseInt(_0x31036b(0x253))/0x9)+parseInt(_0x31036b(0x22b))/0xa;if(_0xc637ab===_0x5c1955)break;else _0x125b20['push'](_0x125b20['shift']());}catch(_0x30c242){_0x125b20['push'](_0x125b20['shift']());}}}(a0_0x2a31,0x20df7));import{a as a0_0x4e9137,c as a0_0x25e1a4,d as a0_0x305416,h as a0_0x2c8505,i as a0_0x36c28f,l as a0_0x102db3,m as a0_0x25abd7,n as a0_0x69180c,o as a0_0x50daa3,p as a0_0x494344,r as a0_0x5efc71,t as a0_0x228343,u as a0_0xab5666}from'\x2e\x2f\x73\x61\x6e\x64\x62\x6f\x78\x2d\x43\x50\x77\x4a\x59\x55\x75\x51\x2e\x6a\x73';import{a as a0_0x4498be,c as a0_0x4ef298,d as a0_0x229976,i as a0_0x4fbf65,l as a0_0x39a4ce,n as a0_0x1da9bc,o as a0_0x2d7ed1,r as a0_0x5a6e40,s as a0_0x400b6f,t as a0_0x4f47ad,u as a0_0x10dacb}from'\x2e\x2f\x65\x72\x72\x6f\x72\x73\x2d\x44\x5a\x73\x66\x4a\x55\x75\x63\x2e\x6a\x73';import{a as a0_0x541742,c as a0_0x2b4d40,i as a0_0x4c26a6,l as a0_0x3cc59f,n as a0_0x9c8379,o as a0_0x352044,r as a0_0x2774b2,s as a0_0xb88ea1,t as a0_0x54cd96}from'\x2e\x2f\x63\x6c\x69\x65\x6e\x74\x2d\x44\x46\x58\x47\x66\x58\x39\x73\x2e\x6a\x73';import{a as a0_0x3f9082,i as a0_0xa1d735,n as a0_0x2397e9,r as a0_0x5aa1a2,t as a0_0x410818}from'\x2e\x2f\x63\x6f\x6c\x6c\x61\x62\x6f\x72\x61\x74\x69\x6f\x6e\x2d\x42\x78\x6c\x66\x5a\x32\x55\x68\x2e\x6a\x73';import{t as a0_0x595276}from'\x2e\x2f\x74\x61\x6e\x67\x6c\x65\x2d\x4b\x76\x6f\x72\x52\x4f\x78\x61\x2e\x6a\x73';function a0_0x2424(_0x16a830,_0x5d8339){_0x16a830=_0x16a830-0x19b;const _0x2a3145=a0_0x2a31();let _0x24245d=_0x2a3145[_0x16a830];if(a0_0x2424['\x75\x58\x68\x78\x4f\x47']===undefined){var _0x203ca3=function(_0x2d99ff){const _0x1d0783='\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7a\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5a\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x2b\x2f\x3d';let _0x336621='',_0x33d5b2='';for(let _0x775359=0x0,_0x189d09,_0x3c3e44,_0x48ba07=0x0;_0x3c3e44=_0x2d99ff['\x63\x68\x61\x72\x41\x74'](_0x48ba07++);~_0x3c3e44&&(_0x189d09=_0x775359%0x4?_0x189d09*0x40+_0x3c3e44:_0x3c3e44,_0x775359++%0x4)?_0x336621+=String['\x66\x72\x6f\x6d\x43\x68\x61\x72\x43\x6f\x64\x65'](0xff&_0x189d09>>(-0x2*_0x775359&0x6)):0x0){_0x3c3e44=_0x1d0783['\x69\x6e\x64\x65\x78\x4f\x66'](_0x3c3e44);}for(let _0x2a6e9f=0x0,_0x5cbe12=_0x336621['\x6c\x65\x6e\x67\x74\x68'];_0x2a6e9f<_0x5cbe12;_0x2a6e9f++){_0x33d5b2+='\x25'+('\x30\x30'+_0x336621['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x2a6e9f)['\x74\x6f\x53\x74\x72\x69\x6e\x67'](0x10))['\x73\x6c\x69\x63\x65'](-0x2);}return decodeURIComponent(_0x33d5b2);};a0_0x2424['\x77\x48\x55\x56\x50\x6f']=_0x203ca3,a0_0x2424['\x77\x6e\x5a\x6b\x55\x4a']={},a0_0x2424['\x75\x58\x68\x78\x4f\x47']=!![];}const _0x1093b3=_0x2a3145[0x0],_0x183ad1=_0x16a830+_0x1093b3,_0x41ab40=a0_0x2424['\x77\x6e\x5a\x6b\x55\x4a'][_0x183ad1];return!_0x41ab40?(_0x24245d=a0_0x2424['\x77\x48\x55\x56\x50\x6f'](_0x24245d),a0_0x2424['\x77\x6e\x5a\x6b\x55\x4a'][_0x183ad1]=_0x24245d):_0x24245d=_0x41ab40,_0x24245d;}import{defineAgentProfile,defineGitHubResource,defineInlineResource,mergeAgentProfiles}from'\x40\x74\x61\x6e\x67\x6c\x65\x2d\x6e\x65\x74\x77\x6f\x72\x6b\x2f\x61\x67\x65\x6e\x74\x2d\x69\x6e\x74\x65\x72\x66\x61\x63\x65';function generateAttestationNonce(_0x289458=0x20){const _0x49adee=a0_0x2424,_0x5ff37f=new Uint8Array(_0x289458);if(typeof globalThis[_0x49adee(0x209)]!=='\x75\x6e\x64\x65\x66\x69\x6e\x65\x64'&&typeof globalThis[_0x49adee(0x209)]['\x67\x65\x74\x52\x61\x6e\x64\x6f\x6d\x56\x61\x6c\x75\x65\x73']===_0x49adee(0x1ca))globalThis[_0x49adee(0x209)]['\x67\x65\x74\x52\x61\x6e\x64\x6f\x6d\x56\x61\x6c\x75\x65\x73'](_0x5ff37f);else throw new Error('\x53\x65\x63\x75\x72\x65\x20\x72\x61\x6e\x64\x6f\x6d\x20\x6e\x6f\x6e\x63\x65\x20\x67\x65\x6e\x65\x72\x61\x74\x69\x6f\x6e\x20\x69\x73\x20\x6e\x6f\x74\x20\x61\x76\x61\x69\x6c\x61\x62\x6c\x65');return Array['\x66\x72\x6f\x6d'](_0x5ff37f)[_0x49adee(0x2df)](_0x67430a=>_0x67430a['\x74\x6f\x53\x74\x72\x69\x6e\x67'](0x10)[_0x49adee(0x304)](0x2,'\x30'))[_0x49adee(0x2ac)]('');}async function createConfidentialSandbox(_0x52de44,_0x1546aa){const _0x1c987b=a0_0x2424,_0x50032f={'\x63\x44\x77\x56\x43':function(_0x28ec73,_0x28aa6d){return _0x28ec73===_0x28aa6d;},'\x74\x4c\x58\x4f\x49':_0x1c987b(0x2a8),'\x41\x47\x45\x6e\x4b':function(_0x1fa2cd){return _0x1fa2cd();},'\x66\x59\x73\x54\x73':function(_0x76925b,_0x20cbe7){return _0x76925b(_0x20cbe7);},'\x75\x54\x51\x42\x66':'\x54\x45\x45\x20\x61\x74\x74\x65\x73\x74\x61\x74\x69\x6f\x6e\x20\x77\x61\x73\x20\x72\x65\x71\x75\x69\x72\x65\x64\x20\x62\x75\x74\x20\x6e\x6f\x20\x65\x76\x69\x64\x65\x6e\x63\x65\x20\x77\x61\x73\x20\x72\x65\x74\x75\x72\x6e\x65\x64'},_0x345c5b=_0x50032f[_0x1c987b(0x21a)](_0x1546aa[_0x1c987b(0x24b)],_0x50032f['\x74\x4c\x58\x4f\x49'])||_0x1546aa[_0x1c987b(0x23e)]&&!_0x1546aa['\x61\x74\x74\x65\x73\x74\x61\x74\x69\x6f\x6e\x4e\x6f\x6e\x63\x65']&&!_0x1546aa[_0x1c987b(0x265)][_0x1c987b(0x24b)]?_0x50032f['\x41\x47\x45\x6e\x4b'](generateAttestationNonce):_0x1546aa[_0x1c987b(0x24b)]??_0x1546aa[_0x1c987b(0x265)][_0x1c987b(0x24b)],_0x52ba03=await _0x52de44[_0x1c987b(0x22d)]({..._0x1546aa,'\x63\x6f\x6e\x66\x69\x64\x65\x6e\x74\x69\x61\x6c':{..._0x1546aa[_0x1c987b(0x265)],..._0x345c5b?{'\x61\x74\x74\x65\x73\x74\x61\x74\x69\x6f\x6e\x4e\x6f\x6e\x63\x65':_0x345c5b}:{},'\x61\x74\x74\x65\x73\x74\x61\x74\x69\x6f\x6e\x52\x65\x66\x72\x65\x73\x68':_0x1546aa[_0x1c987b(0x265)]['\x61\x74\x74\x65\x73\x74\x61\x74\x69\x6f\x6e\x52\x65\x66\x72\x65\x73\x68']||_0x50032f[_0x1c987b(0x1fb)](Boolean,_0x345c5b)}});let _0x5d4461=attestationFromMetadata(_0x52ba03['\x6d\x65\x74\x61\x64\x61\x74\x61']);if(!_0x5d4461)try{_0x5d4461=(await _0x52ba03[_0x1c987b(0x1ae)](_0x345c5b?{'\x61\x74\x74\x65\x73\x74\x61\x74\x69\x6f\x6e\x4e\x6f\x6e\x63\x65':_0x345c5b}:void 0x0))['\x61\x74\x74\x65\x73\x74\x61\x74\x69\x6f\x6e'];}catch(_0x1b1e08){if(_0x1546aa[_0x1c987b(0x23e)])throw _0x1b1e08;}if(_0x1546aa['\x72\x65\x71\x75\x69\x72\x65\x41\x74\x74\x65\x73\x74\x61\x74\x69\x6f\x6e']&&!_0x5d4461)throw new Error(_0x50032f[_0x1c987b(0x211)]);return{'\x73\x61\x6e\x64\x62\x6f\x78':_0x52ba03,'\x61\x74\x74\x65\x73\x74\x61\x74\x69\x6f\x6e':_0x5d4461,'\x61\x74\x74\x65\x73\x74\x61\x74\x69\x6f\x6e\x4e\x6f\x6e\x63\x65':_0x345c5b};}function attestationFromMetadata(_0x256b29){const _0x58ed5c=a0_0x2424,_0x58a5a1={'\x6b\x71\x6f\x41\x55':function(_0x52cb22,_0x288a0f){return _0x52cb22===_0x288a0f;}},_0x36fcf2=_0x256b29?.[_0x58ed5c(0x1e5)];if(typeof _0x36fcf2!==_0x58ed5c(0x269)||_0x58a5a1[_0x58ed5c(0x25d)](_0x36fcf2[_0x58ed5c(0x1c6)](),''))return void 0x0;try{return JSON[_0x58ed5c(0x281)](_0x36fcf2);}catch{return;}}function startTeeAttestationHeartbeat(_0x5574c9,_0x39b0c9={}){const _0x31740f=a0_0x2424,_0x414522={'\x47\x53\x42\x4c\x4c':function(_0x2d511c,_0x3e3ace){return _0x2d511c(_0x3e3ace);},'\x64\x57\x75\x53\x65':function(_0x2b6d84){return _0x2b6d84?.();},'\x64\x69\x65\x78\x77':'\x54\x45\x45\x20\x61\x74\x74\x65\x73\x74\x61\x74\x69\x6f\x6e\x20\x68\x65\x61\x72\x74\x62\x65\x61\x74\x20\x69\x73\x20\x73\x74\x6f\x70\x70\x65\x64','\x52\x53\x62\x5a\x42':function(_0x5ce286){return _0x5ce286();},'\x51\x70\x5a\x61\x51':function(_0x3bc80a){return _0x3bc80a();},'\x64\x4e\x4d\x4b\x66':function(_0x61a2ef,_0x1756b9){return _0x61a2ef===_0x1756b9;}},_0x16afd7=_0x39b0c9[_0x31740f(0x30e)]??0xea60;let _0x508667=![],_0x5f3635=0x0,_0x115570=0x0,_0x2a9269,_0x3bc591,_0x53a9c6;const _0x320567=new Promise(_0x4f883a=>{_0x53a9c6=_0x4f883a;}),_0x36bf0e=()=>{if(_0x508667)return;_0x508667=!![];if(_0x3bc591)_0x414522['\x47\x53\x42\x4c\x4c'](clearTimeout,_0x3bc591);_0x414522['\x64\x57\x75\x53\x65'](_0x53a9c6);},_0x5e1fb7=async()=>{const _0x58ecd4=_0x31740f;if(_0x508667||_0x39b0c9['\x73\x69\x67\x6e\x61\x6c']?.[_0x58ecd4(0x1d5)])throw new Error(_0x414522[_0x58ecd4(0x224)]);const _0x229220=_0x414522['\x52\x53\x62\x5a\x42'](generateAttestationNonce),_0x16f752=await _0x5574c9[_0x58ecd4(0x1ae)]({'\x61\x74\x74\x65\x73\x74\x61\x74\x69\x6f\x6e\x4e\x6f\x6e\x63\x65':_0x229220});if(_0x16f752[_0x58ecd4(0x24b)]&&_0x16f752[_0x58ecd4(0x24b)]!==_0x229220)throw new Error(_0x58ecd4(0x228));const _0x2a970e={'\x73\x65\x71\x75\x65\x6e\x63\x65':++_0x115570,'\x6e\x6f\x6e\x63\x65':_0x229220,'\x72\x65\x73\x70\x6f\x6e\x73\x65':{..._0x16f752,'\x61\x74\x74\x65\x73\x74\x61\x74\x69\x6f\x6e\x4e\x6f\x6e\x63\x65':_0x16f752['\x61\x74\x74\x65\x73\x74\x61\x74\x69\x6f\x6e\x4e\x6f\x6e\x63\x65']??_0x229220},'\x63\x68\x65\x63\x6b\x65\x64\x41\x74':new Date()};return await _0x39b0c9[_0x58ecd4(0x2c9)]?.(_0x2a970e),_0x2a9269=_0x2a970e,_0x39b0c9[_0x58ecd4(0x207)]?.(_0x2a970e),_0x2a970e;},_0x46d584=()=>{const _0xafc8c9=_0x31740f;if(_0x508667||_0x39b0c9[_0xafc8c9(0x221)]?.[_0xafc8c9(0x1d5)]){_0x36bf0e();return;}_0x3bc591=setTimeout(()=>{_0x3ffd98();},_0x16afd7);},_0x3ffd98=async()=>{const _0x572b2c=_0x31740f;try{await _0x414522['\x51\x70\x5a\x61\x51'](_0x5e1fb7),_0x46d584();}catch(_0x351d4b){_0x5f3635+=0x1,_0x39b0c9[_0x572b2c(0x1d3)]?.(_0x351d4b);if(_0x39b0c9['\x63\x6f\x6e\x74\x69\x6e\x75\x65\x4f\x6e\x46\x61\x69\x6c\x75\x72\x65'])_0x414522[_0x572b2c(0x2b4)](_0x46d584);else _0x36bf0e();}};_0x39b0c9['\x73\x69\x67\x6e\x61\x6c']?.[_0x31740f(0x254)](_0x31740f(0x2a0),_0x36bf0e,{'\x6f\x6e\x63\x65':!![]});if(_0x414522[_0x31740f(0x1dc)](_0x39b0c9['\x69\x6d\x6d\x65\x64\x69\x61\x74\x65'],![]))_0x414522[_0x31740f(0x2b4)](_0x46d584);else _0x3ffd98();return{'\x73\x74\x6f\x70':_0x36bf0e,'\x70\x69\x6e\x67':_0x5e1fb7,get '\x73\x74\x6f\x70\x70\x65\x64'(){return _0x508667;},get '\x66\x61\x69\x6c\x75\x72\x65\x73'(){return _0x5f3635;},get '\x6c\x61\x74\x65\x73\x74'(){return _0x2a9269;},'\x64\x6f\x6e\x65':_0x320567};}function isFetchClient(_0x20f45d){const _0x2ff3a8=a0_0x2424,_0x1a091a={'\x76\x53\x6e\x52\x71':_0x2ff3a8(0x1ca)};return typeof _0x20f45d[_0x2ff3a8(0x2f5)]===_0x1a091a[_0x2ff3a8(0x23c)];}function requestImageBuild(_0x445d1c,_0x25621f){const _0xf989d1=a0_0x2424,_0x6ed701={'\x75\x44\x4f\x69\x58':function(_0x32c5f8,_0x5525f8,_0x2674a1){return _0x32c5f8(_0x5525f8,_0x2674a1);}};if(isFetchClient(_0x445d1c))return _0x445d1c[_0xf989d1(0x2f5)](_0xf989d1(0x290),_0x25621f);const _0x45de2d=new Headers(_0x25621f[_0xf989d1(0x20d)]);return _0x45de2d[_0xf989d1(0x230)](_0xf989d1(0x289),_0xf989d1(0x2dd)+_0x445d1c[_0xf989d1(0x278)]),_0x6ed701['\x75\x44\x4f\x69\x58'](fetch,_0x445d1c[_0xf989d1(0x1a0)][_0xf989d1(0x266)](/\/+$/,'')+_0xf989d1(0x290),{..._0x25621f,'\x68\x65\x61\x64\x65\x72\x73':_0x45de2d});}var Image=class Image{constructor(_0x326cb0,_0x594b25,_0x553f73,_0x1b5c30){const _0x41ab55=a0_0x2424;this['\x69\x64']=_0x326cb0,this[_0x41ab55(0x30c)]=_0x594b25,this['\x64\x69\x67\x65\x73\x74']=_0x553f73,this[_0x41ab55(0x20c)]=_0x1b5c30;}static[a0_0xde38a2(0x22d)](_0x25725a='\x75\x62\x75\x6e\x74\x75\x3a\x32\x32\x2e\x30\x34'){return new ImageBuilder({'\x62\x61\x73\x65\x49\x6d\x61\x67\x65':_0x25725a});}static['\x66\x72\x6f\x6d\x49\x64'](_0x206ae2){const _0x166b52=a0_0xde38a2;return new Image(_0x206ae2,_0x206ae2['\x73\x74\x61\x72\x74\x73\x57\x69\x74\x68'](_0x166b52(0x1a7))?_0x166b52(0x1d2)+_0x206ae2[_0x166b52(0x22e)](0x7,0x13):_0x206ae2,_0x206ae2);}static['\x66\x72\x6f\x6d\x44\x6f\x63\x6b\x65\x72\x66\x69\x6c\x65'](_0x16c464,_0x47888f){const _0x51ce87={'\x62\x69\x4b\x59\x4f':'\x73\x63\x72\x61\x74\x63\x68'};return new ImageBuilder({'\x62\x61\x73\x65\x49\x6d\x61\x67\x65':_0x51ce87['\x62\x69\x4b\x59\x4f'],'\x64\x6f\x63\x6b\x65\x72\x66\x69\x6c\x65':_0x16c464,'\x64\x6f\x63\x6b\x65\x72\x43\x6f\x6e\x74\x65\x78\x74':_0x47888f||'\x2e'});}static['\x66\x72\x6f\x6d\x42\x75\x69\x6c\x64\x52\x65\x73\x75\x6c\x74'](_0x344593){const _0x35f0e8=a0_0xde38a2;return new Image(_0x344593['\x69\x64'],_0x344593['\x74\x61\x67'],_0x344593[_0x35f0e8(0x27e)],_0x344593['\x73\x70\x65\x63']);}[a0_0xde38a2(0x213)](){const _0x1f9ac3=a0_0xde38a2;return{'\x69\x64':this['\x69\x64'],'\x74\x61\x67':this[_0x1f9ac3(0x30c)],'\x64\x69\x67\x65\x73\x74':this[_0x1f9ac3(0x27e)],'\x73\x70\x65\x63':this[_0x1f9ac3(0x20c)]};}},ImageBuilder=class{['\x73\x70\x65\x63'];[a0_0xde38a2(0x1e0)];constructor(_0x26dd55){const _0x40c5f1=a0_0xde38a2,_0x842fde={'\x7a\x64\x79\x41\x48':_0x40c5f1(0x2a1)};this[_0x40c5f1(0x20c)]={'\x62\x61\x73\x65\x49\x6d\x61\x67\x65':_0x26dd55['\x62\x61\x73\x65\x49\x6d\x61\x67\x65']||_0x842fde[_0x40c5f1(0x249)],..._0x26dd55};}['\x70\x79\x74\x68\x6f\x6e'](_0x3c6f49){const _0x3f3e67=a0_0xde38a2;return this[_0x3f3e67(0x20c)][_0x3f3e67(0x223)]=_0x3c6f49,this;}[a0_0xde38a2(0x26a)](_0x50477d){const _0x3a1e6f=a0_0xde38a2;return this[_0x3a1e6f(0x20c)][_0x3a1e6f(0x24c)]=[...this[_0x3a1e6f(0x20c)][_0x3a1e6f(0x24c)]||[],..._0x50477d],this;}['\x61\x64\x64\x50\x61\x63\x6b\x61\x67\x65\x73\x46\x72\x6f\x6d\x46\x69\x6c\x65'](_0x5cf3f4){const _0x286e50=a0_0xde38a2;return this[_0x286e50(0x20c)]['\x63\x6f\x6d\x6d\x61\x6e\x64\x73']=[...this[_0x286e50(0x20c)][_0x286e50(0x1fc)]||[],'\x70\x69\x70\x20\x69\x6e\x73\x74\x61\x6c\x6c\x20\x2d\x72\x20'+_0x5cf3f4],this;}['\x61\x64\x64\x43\x6f\x6d\x6d\x61\x6e\x64\x73'](_0x4ea656){const _0xff8b7c=a0_0xde38a2;return this[_0xff8b7c(0x20c)][_0xff8b7c(0x1fc)]=[...this[_0xff8b7c(0x20c)][_0xff8b7c(0x1fc)]||[],..._0x4ea656],this;}[a0_0xde38a2(0x1fe)](_0xd78ad3){const _0x174e9d=a0_0xde38a2;return this['\x73\x70\x65\x63']['\x61\x70\x74\x50\x61\x63\x6b\x61\x67\x65\x73']=[...this[_0x174e9d(0x20c)]['\x61\x70\x74\x50\x61\x63\x6b\x61\x67\x65\x73']||[],..._0xd78ad3],this;}[a0_0xde38a2(0x25b)](_0x407f77){const _0xb3be19=a0_0xde38a2;return this['\x73\x70\x65\x63']['\x65\x6e\x76']={...this['\x73\x70\x65\x63'][_0xb3be19(0x2a6)],..._0x407f77},this;}[a0_0xde38a2(0x2b0)](_0x1c3c96){const _0x571605=a0_0xde38a2;return this['\x73\x70\x65\x63'][_0x571605(0x252)]=[...this[_0x571605(0x20c)][_0x571605(0x252)]||[],..._0x1c3c96],this;}[a0_0xde38a2(0x301)](_0xba96fc,_0x35e70c){const _0x2ee8d1=a0_0xde38a2;return this['\x73\x70\x65\x63']['\x63\x6f\x6e\x64\x61']={'\x70\x61\x63\x6b\x61\x67\x65\x73':[...this[_0x2ee8d1(0x20c)][_0x2ee8d1(0x301)]?.['\x70\x61\x63\x6b\x61\x67\x65\x73']||[],..._0xba96fc],'\x63\x68\x61\x6e\x6e\x65\x6c\x73':_0x35e70c||this[_0x2ee8d1(0x20c)][_0x2ee8d1(0x301)]?.[_0x2ee8d1(0x218)]||['\x63\x6f\x6e\x64\x61\x2d\x66\x6f\x72\x67\x65']},this;}[a0_0xde38a2(0x2b9)](_0x5463e8){const _0x31fd80=a0_0xde38a2;return this[_0x31fd80(0x20c)]['\x77\x6f\x72\x6b\x64\x69\x72']=_0x5463e8,this;}[a0_0xde38a2(0x2ed)](_0x3c7e23){const _0xd97fec=a0_0xde38a2;return this['\x73\x70\x65\x63'][_0xd97fec(0x2ed)]=_0x3c7e23,this;}[a0_0xde38a2(0x26b)](_0x32ae0f){const _0x3f6311=a0_0xde38a2;return this[_0x3f6311(0x20c)][_0x3f6311(0x26b)]={...this[_0x3f6311(0x20c)][_0x3f6311(0x26b)],..._0x32ae0f},this;}[a0_0xde38a2(0x285)](_0x56d999){const _0x1f5c99=a0_0xde38a2;return this[_0x1f5c99(0x20c)][_0x1f5c99(0x285)]={...this['\x73\x70\x65\x63'][_0x1f5c99(0x285)],..._0x56d999},this;}[a0_0xde38a2(0x235)](){const _0x154b43=a0_0xde38a2;return{...this[_0x154b43(0x20c)]};}async[a0_0xde38a2(0x27b)](){const _0x4d3c0f=a0_0xde38a2,_0x528e75={'\x41\x45\x6c\x79\x41':_0x4d3c0f(0x1e3)},_0x55b7b9=JSON[_0x4d3c0f(0x2ae)](this[_0x4d3c0f(0x20c)],Object[_0x4d3c0f(0x205)](this[_0x4d3c0f(0x20c)])[_0x4d3c0f(0x25f)]()),_0x11bee3=globalThis[_0x4d3c0f(0x209)]?.['\x73\x75\x62\x74\x6c\x65'];if(_0x11bee3){const _0x5f49d6=await _0x11bee3[_0x4d3c0f(0x27e)](_0x4d3c0f(0x1a4),new TextEncoder()[_0x4d3c0f(0x2e6)](_0x55b7b9));return Array[_0x4d3c0f(0x21b)](new Uint8Array(_0x5f49d6))[_0x4d3c0f(0x2df)](_0x1e0a98=>_0x1e0a98[_0x4d3c0f(0x1d6)](0x10)[_0x4d3c0f(0x304)](0x2,'\x30'))[_0x4d3c0f(0x2ac)]('');}const {createHash:_0x27a6f4}=await import(_0x4d3c0f(0x21e));return _0x27a6f4(_0x4d3c0f(0x2ca))[_0x4d3c0f(0x28c)](_0x55b7b9)[_0x4d3c0f(0x27e)](_0x528e75[_0x4d3c0f(0x2d6)]);}[a0_0xde38a2(0x261)](_0x620a56){const _0x3d11ae=a0_0xde38a2;return this[_0x3d11ae(0x1e0)]=_0x620a56,this;}async['\x62\x75\x69\x6c\x64'](_0x3eaf91){const _0xdb6572=a0_0xde38a2,_0x2771e1={'\x46\x4b\x62\x47\x49':_0xdb6572(0x2fc),'\x56\x6a\x49\x77\x6a':_0xdb6572(0x1d0),'\x53\x67\x42\x61\x6f':_0xdb6572(0x29d),'\x77\x54\x7a\x74\x6e':_0xdb6572(0x244),'\x73\x66\x5a\x44\x59':function(_0x3a19c,_0x367515){return _0x3a19c===_0x367515;},'\x57\x65\x4b\x4b\x6c':_0xdb6572(0x1bd)},_0x2d96c2=_0x3eaf91?.[_0xdb6572(0x1e1)]||this[_0xdb6572(0x1e0)];if(!_0x2d96c2)throw new Error(_0xdb6572(0x1b6));const _0x263269=_0x3eaf91?.[_0xdb6572(0x309)]??0x927c0,_0x4cc9ab=_0x263269>0x0?new AbortController():void 0x0,_0x10bf37=_0x4cc9ab?setTimeout(()=>_0x4cc9ab[_0xdb6572(0x2a0)](),_0x263269):void 0x0;let _0x354921;try{_0x354921=await requestImageBuild(_0x2d96c2,{'\x6d\x65\x74\x68\x6f\x64':_0x2771e1[_0xdb6572(0x1f2)],'\x68\x65\x61\x64\x65\x72\x73':{'\x43\x6f\x6e\x74\x65\x6e\x74\x2d\x54\x79\x70\x65':_0xdb6572(0x1de)},'\x73\x69\x67\x6e\x61\x6c':_0x4cc9ab?.[_0xdb6572(0x221)],'\x62\x6f\x64\x79':JSON[_0xdb6572(0x2ae)]({'\x73\x70\x65\x63':this[_0xdb6572(0x20c)],'\x6f\x70\x74\x69\x6f\x6e\x73':{'\x6e\x6f\x43\x61\x63\x68\x65':_0x3eaf91?.[_0xdb6572(0x280)],'\x70\x6c\x61\x74\x66\x6f\x72\x6d':_0x3eaf91?.[_0xdb6572(0x264)],'\x74\x61\x67':_0x3eaf91?.[_0xdb6572(0x30c)],'\x73\x74\x72\x65\x61\x6d':!!_0x3eaf91?.[_0xdb6572(0x274)]}})});if(!_0x354921['\x6f\x6b']){const _0x1e9bfd=await _0x354921[_0xdb6572(0x227)]();throw new Error('\x46\x61\x69\x6c\x65\x64\x20\x74\x6f\x20\x62\x75\x69\x6c\x64\x20\x69\x6d\x61\x67\x65\x3a\x20'+_0x1e9bfd);}if(_0x3eaf91?.['\x6f\x6e\x50\x72\x6f\x67\x72\x65\x73\x73']&&_0x354921[_0xdb6572(0x20d)][_0xdb6572(0x2de)](_0x2771e1[_0xdb6572(0x214)])?.[_0xdb6572(0x200)](_0x2771e1[_0xdb6572(0x204)])){let _0x6986ae;for await(const _0x314706 of a0_0x494344(_0x354921[_0xdb6572(0x28d)],{'\x73\x69\x67\x6e\x61\x6c':_0x4cc9ab?.[_0xdb6572(0x221)]})){const _0x538f1c=_0x314706['\x64\x61\x74\x61'];if(_0x538f1c[_0xdb6572(0x1cb)]===_0x2771e1[_0xdb6572(0x26f)])_0x3eaf91['\x6f\x6e\x50\x72\x6f\x67\x72\x65\x73\x73'](_0x538f1c['\x65\x76\x65\x6e\x74']);else{if(_0x2771e1[_0xdb6572(0x295)](_0x538f1c['\x74\x79\x70\x65'],_0x2771e1[_0xdb6572(0x242)])){const _0x213d2b=_0x538f1c[_0xdb6572(0x1c4)];_0x6986ae={..._0x213d2b,'\x63\x72\x65\x61\x74\x65\x64\x41\x74':new Date(_0x213d2b['\x63\x72\x65\x61\x74\x65\x64\x41\x74'])};}else{if(_0x538f1c[_0xdb6572(0x1cb)]===_0xdb6572(0x1d4))throw new Error(String(_0x538f1c[_0xdb6572(0x233)]??_0xdb6572(0x2c7)));}}}if(!_0x6986ae)throw new Error(_0xdb6572(0x1eb));return Image['\x66\x72\x6f\x6d\x42\x75\x69\x6c\x64\x52\x65\x73\x75\x6c\x74'](_0x6986ae);}const _0x4dd5f0=await _0x354921[_0xdb6572(0x2b3)](),_0x433b80={..._0x4dd5f0,'\x63\x72\x65\x61\x74\x65\x64\x41\x74':new Date(_0x4dd5f0[_0xdb6572(0x1c3)])};return Image['\x66\x72\x6f\x6d\x42\x75\x69\x6c\x64\x52\x65\x73\x75\x6c\x74'](_0x433b80);}catch(_0xeed89e){if(_0x4cc9ab?.['\x73\x69\x67\x6e\x61\x6c'][_0xdb6572(0x1d5)])throw new Error(_0xdb6572(0x23a)+_0x263269+'\x6d\x73');throw _0xeed89e;}finally{if(_0x10bf37)clearTimeout(_0x10bf37);}}[a0_0xde38a2(0x291)](){const _0x54acae=a0_0xde38a2;return generateDockerfile(this[_0x54acae(0x20c)]);}};function generateDockerfile(_0x50063c){const _0x2f259b=a0_0xde38a2,_0x1d52cf={'\x55\x44\x48\x54\x70':function(_0x32fc7b,_0x27940c){return _0x32fc7b>_0x27940c;},'\x51\x71\x6e\x65\x53':_0x2f259b(0x300),'\x4a\x61\x65\x61\x70':_0x2f259b(0x30f),'\x72\x63\x63\x76\x73':function(_0x393454,_0x43a528){return _0x393454>_0x43a528;},'\x70\x6e\x6d\x44\x6c':_0x2f259b(0x23b)},_0x8b4957=[];_0x8b4957[_0x2f259b(0x2bb)](_0x2f259b(0x2da)+_0x50063c['\x62\x61\x73\x65\x49\x6d\x61\x67\x65']),_0x8b4957['\x70\x75\x73\x68']('');if(_0x50063c['\x6c\x61\x62\x65\x6c\x73']&&_0x1d52cf[_0x2f259b(0x21c)](Object['\x6b\x65\x79\x73'](_0x50063c[_0x2f259b(0x285)])[_0x2f259b(0x231)],0x0)){for(const [_0x45af31,_0x17ca57]of Object[_0x2f259b(0x1c0)](_0x50063c['\x6c\x61\x62\x65\x6c\x73']))_0x8b4957[_0x2f259b(0x2bb)](_0x2f259b(0x19b)+_0x45af31+'\x3d\x22'+_0x17ca57+'\x22');_0x8b4957[_0x2f259b(0x2bb)]('');}if(_0x50063c[_0x2f259b(0x26b)]&&Object[_0x2f259b(0x205)](_0x50063c['\x62\x75\x69\x6c\x64\x41\x72\x67\x73'])[_0x2f259b(0x231)]>0x0){for(const [_0x22c272,_0x12c563]of Object[_0x2f259b(0x1c0)](_0x50063c[_0x2f259b(0x26b)]))_0x8b4957['\x70\x75\x73\x68'](_0x2f259b(0x210)+_0x22c272+'\x3d'+_0x12c563);_0x8b4957[_0x2f259b(0x2bb)]('');}if(_0x50063c[_0x2f259b(0x2a6)]&&Object[_0x2f259b(0x205)](_0x50063c[_0x2f259b(0x2a6)])[_0x2f259b(0x231)]>0x0){for(const [_0x50aec6,_0x533acb]of Object[_0x2f259b(0x1c0)](_0x50063c[_0x2f259b(0x2a6)]))_0x8b4957['\x70\x75\x73\x68']('\x45\x4e\x56\x20'+_0x50aec6+'\x3d\x22'+_0x533acb+'\x22');_0x8b4957[_0x2f259b(0x2bb)]('');}_0x50063c[_0x2f259b(0x2b9)]&&(_0x8b4957['\x70\x75\x73\x68'](_0x2f259b(0x29a)+_0x50063c[_0x2f259b(0x2b9)]),_0x8b4957[_0x2f259b(0x2bb)](''));_0x50063c['\x61\x70\x74\x50\x61\x63\x6b\x61\x67\x65\x73']&&_0x50063c[_0x2f259b(0x220)][_0x2f259b(0x231)]>0x0&&(_0x8b4957[_0x2f259b(0x2bb)](_0x2f259b(0x27d)),_0x8b4957['\x70\x75\x73\x68'](_0x2f259b(0x217)),_0x8b4957['\x70\x75\x73\x68'](_0x2f259b(0x2be)+_0x50063c['\x61\x70\x74\x50\x61\x63\x6b\x61\x67\x65\x73'][_0x2f259b(0x2ac)]('\x20')+_0x2f259b(0x28f)),_0x8b4957[_0x2f259b(0x2bb)](_0x2f259b(0x2e8)),_0x8b4957[_0x2f259b(0x2bb)](''));_0x50063c[_0x2f259b(0x223)]&&(_0x8b4957[_0x2f259b(0x2bb)](_0x2f259b(0x22f)+_0x50063c[_0x2f259b(0x223)]),!(_0x50063c['\x62\x61\x73\x65\x49\x6d\x61\x67\x65'][_0x2f259b(0x200)](_0x1d52cf[_0x2f259b(0x2e7)])||_0x50063c[_0x2f259b(0x1b5)][_0x2f259b(0x200)]('\x61\x6e\x61\x63\x6f\x6e\x64\x61')||_0x50063c[_0x2f259b(0x1b5)][_0x2f259b(0x200)]('\x6d\x69\x6e\x69\x63\x6f\x6e\x64\x61'))&&_0x50063c[_0x2f259b(0x1b5)][_0x2f259b(0x200)]('\x75\x62\x75\x6e\x74\x75')&&(_0x8b4957[_0x2f259b(0x2bb)](_0x2f259b(0x217)),_0x8b4957[_0x2f259b(0x2bb)](_0x2f259b(0x1f7)),_0x8b4957['\x70\x75\x73\x68'](_0x2f259b(0x1a5)),_0x8b4957[_0x2f259b(0x2bb)](_0x2f259b(0x24d)+_0x50063c[_0x2f259b(0x223)]+'\x20\x70\x79\x74\x68\x6f\x6e'+_0x50063c['\x70\x79\x74\x68\x6f\x6e\x56\x65\x72\x73\x69\x6f\x6e']+_0x2f259b(0x248)+_0x50063c[_0x2f259b(0x223)]+_0x2f259b(0x238)),_0x8b4957[_0x2f259b(0x2bb)]('\x20\x20\x20\x20\x61\x70\x74\x2d\x67\x65\x74\x20\x63\x6c\x65\x61\x6e\x20\x26\x26\x20\x72\x6d\x20\x2d\x72\x66\x20\x2f\x76\x61\x72\x2f\x6c\x69\x62\x2f\x61\x70\x74\x2f\x6c\x69\x73\x74\x73\x2f\x2a'),_0x8b4957[_0x2f259b(0x2bb)](''),_0x8b4957[_0x2f259b(0x2bb)](_0x2f259b(0x267)+_0x50063c[_0x2f259b(0x223)]+_0x2f259b(0x208)),_0x8b4957[_0x2f259b(0x2bb)](_0x2f259b(0x2d9)+_0x50063c['\x70\x79\x74\x68\x6f\x6e\x56\x65\x72\x73\x69\x6f\x6e']+'\x20\x31'),_0x8b4957[_0x2f259b(0x2bb)](''),_0x8b4957['\x70\x75\x73\x68']('\x52\x55\x4e\x20\x63\x75\x72\x6c\x20\x2d\x73\x53\x20\x68\x74\x74\x70\x73\x3a\x2f\x2f\x62\x6f\x6f\x74\x73\x74\x72\x61\x70\x2e\x70\x79\x70\x61\x2e\x69\x6f\x2f\x67\x65\x74\x2d\x70\x69\x70\x2e\x70\x79\x20\x7c\x20\x70\x79\x74\x68\x6f\x6e')),_0x8b4957[_0x2f259b(0x2bb)](''));if(_0x50063c[_0x2f259b(0x301)]&&_0x50063c[_0x2f259b(0x301)][_0x2f259b(0x24c)]['\x6c\x65\x6e\x67\x74\x68']>0x0){_0x8b4957[_0x2f259b(0x2bb)](_0x2f259b(0x2b1)),_0x8b4957['\x70\x75\x73\x68']('\x52\x55\x4e\x20\x63\x75\x72\x6c\x20\x2d\x4c\x73\x20\x68\x74\x74\x70\x73\x3a\x2f\x2f\x6d\x69\x63\x72\x6f\x2e\x6d\x61\x6d\x62\x61\x2e\x70\x6d\x2f\x61\x70\x69\x2f\x6d\x69\x63\x72\x6f\x6d\x61\x6d\x62\x61\x2f\x6c\x69\x6e\x75\x78\x2d\x36\x34\x2f\x6c\x61\x74\x65\x73\x74\x20\x7c\x20\x74\x61\x72\x20\x2d\x78\x76\x6a\x20\x62\x69\x6e\x2f\x6d\x69\x63\x72\x6f\x6d\x61\x6d\x62\x61\x20\x26\x26\x20\x5c'),_0x8b4957[_0x2f259b(0x2bb)]('\x20\x20\x20\x20\x6d\x76\x20\x62\x69\x6e\x2f\x6d\x69\x63\x72\x6f\x6d\x61\x6d\x62\x61\x20\x2f\x75\x73\x72\x2f\x6c\x6f\x63\x61\x6c\x2f\x62\x69\x6e\x2f\x20\x26\x26\x20\x5c'),_0x8b4957[_0x2f259b(0x2bb)](_0x1d52cf[_0x2f259b(0x298)]),_0x8b4957[_0x2f259b(0x2bb)]('');const _0xcde48c=(_0x50063c['\x63\x6f\x6e\x64\x61'][_0x2f259b(0x218)]||[_0x2f259b(0x241)])[_0x2f259b(0x2df)](_0x3c41f4=>_0x2f259b(0x29c)+_0x3c41f4)['\x6a\x6f\x69\x6e']('\x20');_0x8b4957[_0x2f259b(0x2bb)](_0x2f259b(0x255)+_0xcde48c+'\x20'+_0x50063c[_0x2f259b(0x301)]['\x70\x61\x63\x6b\x61\x67\x65\x73'][_0x2f259b(0x2ac)]('\x20')+'\x20\x26\x26\x20\x5c'),_0x8b4957[_0x2f259b(0x2bb)](_0x2f259b(0x21f)),_0x8b4957['\x70\x75\x73\x68'](_0x2f259b(0x260)),_0x8b4957['\x70\x75\x73\x68']('');}_0x50063c[_0x2f259b(0x24c)]&&_0x1d52cf[_0x2f259b(0x26d)](_0x50063c[_0x2f259b(0x24c)][_0x2f259b(0x231)],0x0)&&(_0x8b4957[_0x2f259b(0x2bb)](_0x1d52cf[_0x2f259b(0x257)]),_0x8b4957[_0x2f259b(0x2bb)](_0x2f259b(0x1ab)+_0x50063c[_0x2f259b(0x24c)][_0x2f259b(0x2ac)]('\x20')),_0x8b4957['\x70\x75\x73\x68'](''));if(_0x50063c[_0x2f259b(0x1fc)]&&_0x50063c[_0x2f259b(0x1fc)][_0x2f259b(0x231)]>0x0){_0x8b4957['\x70\x75\x73\x68'](_0x2f259b(0x2b7));for(const _0x2b7566 of _0x50063c[_0x2f259b(0x1fc)])_0x8b4957[_0x2f259b(0x2bb)](_0x2f259b(0x2d8)+_0x2b7566);_0x8b4957[_0x2f259b(0x2bb)]('');}if(_0x50063c[_0x2f259b(0x2ed)])_0x8b4957['\x70\x75\x73\x68'](_0x2f259b(0x2e5)+_0x50063c[_0x2f259b(0x2ed)]);return _0x8b4957['\x6a\x6f\x69\x6e']('\x0a');}const MANAGE_SANDBOXES_TOOL_NAME=a0_0xde38a2(0x306);function createManageSandboxesTool(_0x536e40,_0xffa0e5={}){const _0x57cadb=a0_0xde38a2,_0x542387={'\x55\x69\x71\x6a\x4c':_0x57cadb(0x272),'\x66\x43\x4f\x48\x52':_0x57cadb(0x22d),'\x48\x52\x78\x62\x49':function(_0x45b7d3,_0x1bbadb){return _0x45b7d3(_0x1bbadb);},'\x46\x43\x4e\x41\x53':_0x57cadb(0x2c8),'\x78\x53\x54\x4b\x75':function(_0x58e43e,_0x2121a0){return _0x58e43e(_0x2121a0);},'\x4e\x71\x57\x46\x6d':_0x57cadb(0x2aa),'\x69\x57\x56\x7a\x70':function(_0x58367b,_0x2c2b0d,_0x1efa60){return _0x58367b(_0x2c2b0d,_0x1efa60);},'\x79\x79\x54\x4c\x77':_0x57cadb(0x20b),'\x6e\x43\x65\x75\x67':function(_0x29f676,_0x419544,_0x2833f9){return _0x29f676(_0x419544,_0x2833f9);},'\x6f\x72\x62\x69\x4c':'\x6d\x61\x6e\x69\x66\x65\x73\x74','\x64\x69\x56\x41\x69':_0x57cadb(0x1b1),'\x50\x61\x54\x76\x4f':function(_0x358be8,_0x3f9931,_0x4a7e08){return _0x358be8(_0x3f9931,_0x4a7e08);},'\x42\x67\x43\x57\x65':_0x57cadb(0x2e0),'\x67\x75\x6c\x55\x75':'\x63\x72\x65\x61\x74\x65\x57\x6f\x72\x6b\x73\x70\x61\x63\x65\x53\x6e\x61\x70\x73\x68\x6f\x74','\x4f\x62\x4d\x68\x68':function(_0x47f0cb,_0x4706b6,_0x1be6c7){return _0x47f0cb(_0x4706b6,_0x1be6c7);},'\x69\x4f\x71\x48\x54':_0x57cadb(0x2d2),'\x79\x76\x6b\x57\x52':'\x43\x72\x65\x61\x74\x65\x2c\x20\x69\x6e\x73\x70\x65\x63\x74\x2c\x20\x61\x6e\x64\x20\x6d\x61\x6e\x61\x67\x65\x20\x73\x61\x6e\x64\x62\x6f\x78\x20\x66\x6c\x65\x65\x74\x73\x20\x66\x6f\x72\x20\x70\x61\x72\x61\x6c\x6c\x65\x6c\x20\x61\x67\x65\x6e\x74\x20\x77\x6f\x72\x6b\x6c\x6f\x61\x64\x73\x2e'};return{'\x6e\x61\x6d\x65':MANAGE_SANDBOXES_TOOL_NAME,'\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e':_0x542387[_0x57cadb(0x1b9)],'\x70\x61\x72\x61\x6d\x65\x74\x65\x72\x73':MANAGE_SANDBOXES_PARAMETERS,async '\x65\x78\x65\x63\x75\x74\x65'(_0x19b073){const _0x119785=_0x57cadb;switch(_0x19b073[_0x119785(0x250)]){case _0x542387['\x55\x69\x71\x6a\x4c']:return _0x536e40['\x66\x6c\x65\x65\x74\x73'][_0x119785(0x272)]();case _0x542387[_0x119785(0x1e9)]:return _0x536e40[_0x119785(0x216)][_0x119785(0x22d)](applyToolPolicy(_0x542387[_0x119785(0x2d0)](requireCreateOptions,_0x19b073),_0xffa0e5[_0x119785(0x2bd)]));case _0x542387['\x46\x43\x4e\x41\x53']:return _0x536e40['\x66\x6c\x65\x65\x74\x73'][_0x119785(0x2c8)](applyToolPolicy(_0x542387[_0x119785(0x286)](requireCreateWithCoordinatorOptions,_0x19b073),_0xffa0e5[_0x119785(0x2bd)]));case _0x119785(0x297):return _0x536e40['\x66\x6c\x65\x65\x74\x73'][_0x119785(0x297)]({'\x66\x6c\x65\x65\x74\x49\x64':requireString(_0x19b073,_0x119785(0x20b))});case _0x542387['\x4e\x71\x57\x46\x6d']:return _0x536e40[_0x119785(0x216)][_0x119785(0x2aa)](_0x542387[_0x119785(0x247)](requireString,_0x19b073,_0x542387[_0x119785(0x271)]));case _0x119785(0x1e8):return _0x536e40[_0x119785(0x216)]['\x61\x74\x74\x61\x63\x68\x4d\x61\x63\x68\x69\x6e\x65'](_0x542387['\x6e\x43\x65\x75\x67'](requireString,_0x19b073,'\x66\x6c\x65\x65\x74\x49\x64'),requireMachine(_0x19b073));case _0x119785(0x1d1):return _0x536e40[_0x119785(0x216)]['\x64\x65\x74\x61\x63\x68\x4d\x61\x63\x68\x69\x6e\x65'](requireString(_0x19b073,_0x119785(0x20b)),requireString(_0x19b073,_0x119785(0x263)));case _0x542387[_0x119785(0x2f2)]:return _0x536e40[_0x119785(0x216)]['\x6d\x61\x6e\x69\x66\x65\x73\x74'](requireString(_0x19b073,_0x542387[_0x119785(0x271)]));case'\x75\x73\x61\x67\x65':return _0x536e40[_0x119785(0x216)][_0x119785(0x30d)](requireString(_0x19b073,_0x542387[_0x119785(0x271)]));case _0x542387[_0x119785(0x2cb)]:return _0x536e40[_0x119785(0x216)][_0x119785(0x1b1)](_0x542387[_0x119785(0x262)](requireString,_0x19b073,_0x542387[_0x119785(0x271)]));case _0x542387[_0x119785(0x292)]:return _0x536e40[_0x119785(0x216)][_0x119785(0x2e0)](requireString(_0x19b073,_0x119785(0x20b)));case _0x119785(0x1b2):return _0x536e40[_0x119785(0x216)]['\x63\x6f\x73\x74'](requireString(_0x19b073,_0x542387[_0x119785(0x271)]));case _0x542387[_0x119785(0x2c5)]:return _0x536e40[_0x119785(0x216)]['\x63\x72\x65\x61\x74\x65\x57\x6f\x72\x6b\x73\x70\x61\x63\x65\x53\x6e\x61\x70\x73\x68\x6f\x74'](_0x542387[_0x119785(0x234)](requireString,_0x19b073,_0x119785(0x20b)));case _0x119785(0x206):return _0x536e40['\x66\x6c\x65\x65\x74\x73'][_0x119785(0x206)](requireString(_0x19b073,_0x542387['\x79\x79\x54\x4c\x77']),_0x542387[_0x119785(0x2e2)](requireString,_0x19b073,_0x542387['\x69\x4f\x71\x48\x54']));case _0x119785(0x2e3):return _0x536e40[_0x119785(0x216)][_0x119785(0x2e3)](requireString(_0x19b073,_0x542387[_0x119785(0x271)]));default:throw new Error(_0x119785(0x2c2)+String(_0x19b073[_0x119785(0x250)]));}}};}function requireString(_0x5f4aaa,_0x3d59fe){const _0x2c7405=a0_0xde38a2,_0x4e5c23=_0x5f4aaa[_0x3d59fe];if(typeof _0x4e5c23!==_0x2c7405(0x269)||_0x4e5c23[_0x2c7405(0x231)]===0x0)throw new Error('\x6d\x61\x6e\x61\x67\x65\x53\x61\x6e\x64\x62\x6f\x78\x65\x73\x20\x72\x65\x71\x75\x69\x72\x65\x73\x20'+_0x3d59fe);return _0x4e5c23;}function requireCreateOptions(_0x4454db){const _0x2d7513=a0_0xde38a2,_0x525e87={'\x58\x76\x79\x7a\x55':function(_0x16284c,_0x2bef6b){return _0x16284c!==_0x2bef6b;}},_0x511603=_0x4454db[_0x2d7513(0x1b8)];if(!_0x511603||_0x525e87[_0x2d7513(0x1b7)](typeof _0x511603,_0x2d7513(0x307)))throw new Error(_0x2d7513(0x258));return rejectUserPolicy(_0x511603);}function requireCreateWithCoordinatorOptions(_0x7c3b05){const _0x4a803b=a0_0xde38a2,_0x3513cf={'\x4c\x6b\x6b\x4b\x51':function(_0x35ab59,_0x29b6a5){return _0x35ab59(_0x29b6a5);}},_0xffe2b4=_0x7c3b05[_0x4a803b(0x1b8)];if(!_0xffe2b4||typeof _0xffe2b4!==_0x4a803b(0x307))throw new Error(_0x4a803b(0x258));return _0x3513cf[_0x4a803b(0x1cc)](rejectUserPolicy,_0xffe2b4);}function rejectUserPolicy(_0x4256d9){const _0x168e96=a0_0xde38a2,_0x1f7afa={'\x66\x7a\x58\x4a\x6f':function(_0x25f587,_0x41016c){return _0x25f587!==_0x41016c;}};if(_0x168e96(0x2bd)in _0x4256d9&&_0x1f7afa[_0x168e96(0x282)](_0x4256d9[_0x168e96(0x2bd)],void 0x0))throw new Error(_0x168e96(0x2bf));return _0x4256d9;}function applyToolPolicy(_0x120f10,_0x2fe52e){const _0x3158e0=a0_0xde38a2;if(!_0x2fe52e)throw new Error(_0x3158e0(0x1a9));return{..._0x120f10,'\x70\x6f\x6c\x69\x63\x79':_0x2fe52e};}function requireMachine(_0x378fb0){const _0x9f6e9a=a0_0xde38a2,_0x5037ec={'\x6f\x63\x4f\x73\x69':function(_0x462023,_0x3aa411){return _0x462023!==_0x3aa411;},'\x74\x65\x41\x45\x6e':_0x9f6e9a(0x2f7)},_0x574685=_0x378fb0[_0x9f6e9a(0x2ec)];if(!_0x574685||_0x5037ec[_0x9f6e9a(0x1dd)](typeof _0x574685,_0x9f6e9a(0x307)))throw new Error(_0x5037ec[_0x9f6e9a(0x2a9)]);const _0x4da643=_0x574685;return requireString(_0x4da643,_0x9f6e9a(0x263)),requireString(_0x4da643,_0x9f6e9a(0x2b8)),_0x574685;}const fleetId={'\x74\x79\x70\x65':a0_0xde38a2(0x269),'\x70\x61\x74\x74\x65\x72\x6e':a0_0xde38a2(0x268)},MANAGE_SANDBOXES_PARAMETERS={'\x74\x79\x70\x65':a0_0xde38a2(0x307),'\x61\x64\x64\x69\x74\x69\x6f\x6e\x61\x6c\x50\x72\x6f\x70\x65\x72\x74\x69\x65\x73':![],'\x72\x65\x71\x75\x69\x72\x65\x64':[a0_0xde38a2(0x250)],'\x70\x72\x6f\x70\x65\x72\x74\x69\x65\x73':{'\x61\x63\x74\x69\x6f\x6e':{'\x74\x79\x70\x65':a0_0xde38a2(0x269),'\x65\x6e\x75\x6d':[a0_0xde38a2(0x272),a0_0xde38a2(0x22d),'\x63\x72\x65\x61\x74\x65\x57\x69\x74\x68\x43\x6f\x6f\x72\x64\x69\x6e\x61\x74\x6f\x72',a0_0xde38a2(0x297),a0_0xde38a2(0x2aa),a0_0xde38a2(0x1e8),'\x64\x65\x74\x61\x63\x68\x4d\x61\x63\x68\x69\x6e\x65',a0_0xde38a2(0x245),a0_0xde38a2(0x30d),a0_0xde38a2(0x1b1),a0_0xde38a2(0x2e0),a0_0xde38a2(0x1b2),'\x63\x72\x65\x61\x74\x65\x57\x6f\x72\x6b\x73\x70\x61\x63\x65\x53\x6e\x61\x70\x73\x68\x6f\x74','\x72\x65\x73\x74\x6f\x72\x65\x57\x6f\x72\x6b\x73\x70\x61\x63\x65\x53\x6e\x61\x70\x73\x68\x6f\x74',a0_0xde38a2(0x2e3)]},'\x66\x6c\x65\x65\x74\x49\x64':fleetId,'\x6d\x61\x63\x68\x69\x6e\x65\x49\x64':fleetId,'\x73\x6e\x61\x70\x73\x68\x6f\x74\x49\x64':{'\x74\x79\x70\x65':a0_0xde38a2(0x269),'\x6d\x69\x6e\x4c\x65\x6e\x67\x74\x68':0x1},'\x6f\x70\x74\x69\x6f\x6e\x73':{'\x74\x79\x70\x65':a0_0xde38a2(0x307)},'\x6d\x61\x63\x68\x69\x6e\x65':{'\x74\x79\x70\x65':a0_0xde38a2(0x307),'\x72\x65\x71\x75\x69\x72\x65\x64':[a0_0xde38a2(0x263),a0_0xde38a2(0x2b8)],'\x61\x64\x64\x69\x74\x69\x6f\x6e\x61\x6c\x50\x72\x6f\x70\x65\x72\x74\x69\x65\x73':!![],'\x70\x72\x6f\x70\x65\x72\x74\x69\x65\x73':{'\x6d\x61\x63\x68\x69\x6e\x65\x49\x64':fleetId,'\x73\x61\x6e\x64\x62\x6f\x78\x49\x64':{'\x74\x79\x70\x65':a0_0xde38a2(0x269),'\x6d\x69\x6e\x4c\x65\x6e\x67\x74\x68':0x1,'\x6d\x61\x78\x4c\x65\x6e\x67\x74\x68':0x80}}}}},SANDBOX_MCP_SERVER_NAME=a0_0xde38a2(0x2b2);function buildSandboxMcpConfig(_0x224e1b){const _0x49558e=a0_0xde38a2;if(!_0x224e1b[_0x49558e(0x21d)])throw new Error(_0x49558e(0x1c9));if(!_0x224e1b[_0x49558e(0x303)])throw new Error(_0x49558e(0x2f0));const _0x4dab1f=_0x224e1b[_0x49558e(0x2ff)]??_0x49558e(0x2b2),_0x1f8bcf=_0x224e1b[_0x49558e(0x21d)][_0x49558e(0x266)](/\/+$/,'');return{'\x73\x65\x72\x76\x65\x72\x4e\x61\x6d\x65':_0x4dab1f,'\x63\x6f\x6e\x66\x69\x67':{'\x6d\x63\x70\x53\x65\x72\x76\x65\x72\x73':{[_0x4dab1f]:{'\x74\x79\x70\x65':_0x49558e(0x232),'\x75\x72\x6c':_0x1f8bcf+_0x49558e(0x20f),'\x68\x65\x61\x64\x65\x72\x73':{'\x41\x75\x74\x68\x6f\x72\x69\x7a\x61\x74\x69\x6f\x6e':_0x49558e(0x2dd)+_0x224e1b[_0x49558e(0x303)]}}}}};}const CONTROL_PLANE_MCP_SERVER_NAME='\x74\x61\x6e\x67\x6c\x65\x2d\x63\x6f\x6e\x74\x72\x6f\x6c\x2d\x70\x6c\x61\x6e\x65';function buildControlPlaneMcpConfig(_0x22568f){const _0x177228=a0_0xde38a2,_0x4bcd2c={'\x51\x66\x4f\x4a\x51':_0x177228(0x2ce)};if(!_0x22568f[_0x177228(0x2d7)])throw new Error(_0x4bcd2c['\x51\x66\x4f\x4a\x51']);if(!_0x22568f['\x61\x70\x69\x4b\x65\x79'])throw new Error(_0x177228(0x1ec));const _0x3a9be8=_0x22568f[_0x177228(0x2ff)]??_0x177228(0x27c),_0x4ceda0=_0x22568f['\x70\x6c\x61\x74\x66\x6f\x72\x6d\x55\x72\x6c'][_0x177228(0x266)](/\/+$/,'');return{'\x73\x65\x72\x76\x65\x72\x4e\x61\x6d\x65':_0x3a9be8,'\x63\x6f\x6e\x66\x69\x67':{'\x6d\x63\x70\x53\x65\x72\x76\x65\x72\x73':{[_0x3a9be8]:{'\x74\x79\x70\x65':_0x177228(0x232),'\x75\x72\x6c':_0x4ceda0+'\x2f\x6d\x63\x70','\x68\x65\x61\x64\x65\x72\x73':{'\x41\x75\x74\x68\x6f\x72\x69\x7a\x61\x74\x69\x6f\x6e':'\x42\x65\x61\x72\x65\x72\x20'+_0x22568f[_0x177228(0x278)]}}}}};}const DEFAULT_ROUTER_URL=a0_0xde38a2(0x2fe);async function fetchTangleRouterSearchConfig(_0x46f08c={}){const _0x15de52=a0_0xde38a2,_0x22d3af={'\x59\x62\x42\x73\x53':_0x15de52(0x2f9),'\x56\x7a\x54\x78\x46':_0x15de52(0x284)},_0x301930=(_0x46f08c['\x72\x6f\x75\x74\x65\x72\x55\x72\x6c']??DEFAULT_ROUTER_URL)[_0x15de52(0x266)](/\/+$/,''),_0x5bb29a=new URL(_0x301930+_0x15de52(0x25c));if(_0x46f08c[_0x15de52(0x201)])_0x5bb29a[_0x15de52(0x26e)][_0x15de52(0x230)]('\x70\x72\x6f\x76\x69\x64\x65\x72',_0x46f08c[_0x15de52(0x201)]);if(_0x46f08c['\x61\x70\x69\x4b\x65\x79\x45\x6e\x76'])_0x5bb29a[_0x15de52(0x26e)]['\x73\x65\x74'](_0x22d3af['\x59\x62\x42\x73\x53'],_0x46f08c['\x61\x70\x69\x4b\x65\x79\x45\x6e\x76']);if(_0x46f08c[_0x15de52(0x284)])_0x5bb29a[_0x15de52(0x26e)][_0x15de52(0x230)](_0x22d3af[_0x15de52(0x240)],_0x46f08c[_0x15de52(0x284)]);const _0x1a12ad=await(_0x46f08c[_0x15de52(0x287)]??fetch)(_0x5bb29a);if(!_0x1a12ad['\x6f\x6b'])throw new Error(_0x15de52(0x30a)+_0x1a12ad[_0x15de52(0x2ee)]);const _0x382dc0=await _0x1a12ad[_0x15de52(0x2b3)]();if(_0x382dc0[_0x15de52(0x307)]!==_0x15de52(0x1a8))throw new Error('\x49\x6e\x76\x61\x6c\x69\x64\x20\x54\x61\x6e\x67\x6c\x65\x20\x52\x6f\x75\x74\x65\x72\x20\x73\x65\x61\x72\x63\x68\x20\x63\x6f\x6e\x66\x69\x67\x20\x72\x65\x73\x70\x6f\x6e\x73\x65');return _0x382dc0;}function buildTangleRouterSearchProfile(_0x5e05f6,_0x106c46={}){const _0x220a8b=a0_0xde38a2,_0x17f34a={'\x5a\x4c\x62\x41\x71':_0x220a8b(0x2f1),'\x6f\x59\x75\x66\x61':_0x220a8b(0x232)};return{'\x6e\x61\x6d\x65':_0x106c46[_0x220a8b(0x277)]??_0x17f34a['\x5a\x4c\x62\x41\x71'],'\x6d\x6f\x64\x65\x6c':{'\x64\x65\x66\x61\x75\x6c\x74':_0x106c46[_0x220a8b(0x284)]??_0x5e05f6[_0x220a8b(0x1b0)]['\x73\x61\x6e\x64\x62\x6f\x78\x42\x61\x63\x6b\x65\x6e\x64'][_0x220a8b(0x284)]['\x6d\x6f\x64\x65\x6c']},'\x70\x65\x72\x6d\x69\x73\x73\x69\x6f\x6e\x73':{'\x6e\x65\x74\x77\x6f\x72\x6b':'\x61\x6c\x6c\x6f\x77','\x6d\x63\x70':_0x220a8b(0x1e6)},'\x6d\x63\x70':{'\x74\x61\x6e\x67\x6c\x65\x5f\x77\x65\x62\x5f\x73\x65\x61\x72\x63\x68':{'\x74\x72\x61\x6e\x73\x70\x6f\x72\x74':_0x17f34a[_0x220a8b(0x2dc)],'\x75\x72\x6c':_0x5e05f6[_0x220a8b(0x1c5)][_0x220a8b(0x1f4)],'\x68\x65\x61\x64\x65\x72\x73':_0x5e05f6[_0x220a8b(0x1c5)][_0x220a8b(0x20d)],'\x65\x6e\x61\x62\x6c\x65\x64':!![]}},'\x6d\x65\x74\x61\x64\x61\x74\x61':{'\x74\x61\x6e\x67\x6c\x65\x52\x6f\x75\x74\x65\x72\x53\x65\x61\x72\x63\x68\x50\x72\x6f\x76\x69\x64\x65\x72':_0x5e05f6[_0x220a8b(0x1c7)],'\x74\x61\x6e\x67\x6c\x65\x52\x6f\x75\x74\x65\x72\x53\x65\x61\x72\x63\x68\x45\x6e\x64\x70\x6f\x69\x6e\x74':_0x5e05f6['\x65\x6e\x64\x70\x6f\x69\x6e\x74']['\x75\x72\x6c']}};}function buildTangleRouterSearchBackend(_0x2c6333,_0x255bb={}){const _0x37949f=a0_0xde38a2,_0x3c435d={'\x4d\x6c\x44\x69\x64':_0x37949f(0x1a1),'\x74\x56\x6f\x4b\x7a':function(_0x33f3fd,_0x46bfec){return _0x33f3fd(_0x46bfec);}},_0x5e635f=_0x2c6333[_0x37949f(0x1b0)]['\x73\x61\x6e\x64\x62\x6f\x78\x42\x61\x63\x6b\x65\x6e\x64'][_0x37949f(0x284)];return{'\x74\x79\x70\x65':_0x255bb['\x74\x79\x70\x65']??_0x3c435d[_0x37949f(0x2f8)],'\x70\x72\x6f\x66\x69\x6c\x65':_0x255bb[_0x37949f(0x2cf)]??_0x3c435d['\x74\x56\x6f\x4b\x7a'](buildTangleRouterSearchProfile,_0x2c6333),'\x6d\x6f\x64\x65\x6c':{'\x70\x72\x6f\x76\x69\x64\x65\x72':_0x5e635f[_0x37949f(0x201)],'\x6d\x6f\x64\x65\x6c':_0x5e635f['\x6d\x6f\x64\x65\x6c'],'\x62\x61\x73\x65\x55\x72\x6c':_0x5e635f[_0x37949f(0x1a0)],..._0x255bb[_0x37949f(0x278)]?{'\x61\x70\x69\x4b\x65\x79':_0x255bb[_0x37949f(0x278)]}:{}}};}function buildTangleRouterEvalMatrixRequest(_0x43a8b0,_0x45b8b8={}){const _0x7972e5=a0_0xde38a2;return{'\x75\x72\x6c':_0x43a8b0['\x65\x76\x61\x6c\x5f\x6d\x61\x74\x72\x69\x78'][_0x7972e5(0x1ac)],'\x62\x6f\x64\x79':{..._0x43a8b0[_0x7972e5(0x1bb)][_0x7972e5(0x2c0)],..._0x45b8b8}};}function buildTangleRouterResponsesWebSearchRequest(_0x27ddc0,_0x2826a4={}){const _0x193f0f=a0_0xde38a2,_0x53e471={'\x71\x64\x69\x65\x41':'\x53\x65\x61\x72\x63\x68\x20\x66\x6f\x72\x20\x74\x68\x65\x20\x6c\x61\x74\x65\x73\x74\x20\x64\x6f\x63\x75\x6d\x65\x6e\x74\x61\x74\x69\x6f\x6e\x20\x61\x6e\x64\x20\x61\x6e\x73\x77\x65\x72\x20\x77\x69\x74\x68\x20\x63\x69\x74\x61\x74\x69\x6f\x6e\x73\x2e','\x75\x6c\x55\x69\x5a':'\x6f\x70\x65\x6e\x72\x6f\x75\x74\x65\x72\x3a\x77\x65\x62\x5f\x73\x65\x61\x72\x63\x68'},_0x240a13=_0x27ddc0[_0x193f0f(0x1da)]?.[_0x193f0f(0x276)];if(_0x240a13)return{'\x75\x72\x6c':_0x240a13[_0x193f0f(0x1ac)],'\x62\x6f\x64\x79':{..._0x240a13[_0x193f0f(0x28d)],..._0x2826a4}};const _0x5c1671=_0x27ddc0[_0x193f0f(0x1b0)]['\x73\x61\x6e\x64\x62\x6f\x78\x42\x61\x63\x6b\x65\x6e\x64']['\x6d\x6f\x64\x65\x6c'];return{'\x75\x72\x6c':_0x5c1671['\x62\x61\x73\x65\x55\x72\x6c'][_0x193f0f(0x266)](/\/+$/,'')+_0x193f0f(0x1f9),'\x62\x6f\x64\x79':{'\x6d\x6f\x64\x65\x6c':_0x5c1671[_0x193f0f(0x284)],'\x69\x6e\x70\x75\x74':_0x53e471[_0x193f0f(0x1cf)],'\x74\x6f\x6f\x6c\x73':[{'\x74\x79\x70\x65':_0x53e471[_0x193f0f(0x2ea)],'\x70\x61\x72\x61\x6d\x65\x74\x65\x72\x73':{'\x70\x72\x6f\x76\x69\x64\x65\x72':_0x27ddc0['\x64\x65\x66\x61\x75\x6c\x74\x5f\x70\x72\x6f\x76\x69\x64\x65\x72'],'\x6d\x61\x78\x5f\x72\x65\x73\x75\x6c\x74\x73':0x5}}],..._0x2826a4}};}async function runTangleRouterEvalMatrixInSandbox(_0x3fa080){const _0x31ab20=a0_0xde38a2,_0x4d76a3={'\x78\x58\x4c\x44\x51':function(_0x243d65,_0x422076){return _0x243d65(_0x422076);}},_0x40b7bb=_0x3fa080[_0x31ab20(0x287)]??fetch,_0x4c0420=buildTangleRouterEvalMatrixRequest(_0x3fa080['\x63\x6f\x6e\x66\x69\x67'],{'\x74\x72\x61\x6e\x73\x70\x6f\x72\x74':_0x31ab20(0x1d9),..._0x3fa080[_0x31ab20(0x1ce)]}),_0x22dd4e=await postJson(_0x40b7bb,_0x4c0420[_0x31ab20(0x1ac)],_0x3fa080[_0x31ab20(0x278)],_0x4c0420[_0x31ab20(0x28d)]),_0x2cc10b=_0x22dd4e[_0x31ab20(0x22c)],_0x2ffb30=await runMatrixCases({'\x6d\x61\x74\x72\x69\x78':_0x2cc10b,'\x63\x6f\x6e\x66\x69\x67':_0x3fa080[_0x31ab20(0x2eb)],'\x61\x70\x69\x4b\x65\x79':_0x3fa080['\x61\x70\x69\x4b\x65\x79'],'\x73\x61\x6e\x64\x62\x6f\x78\x43\x6c\x69\x65\x6e\x74':_0x3fa080[_0x31ab20(0x2e9)],'\x63\x6f\x6e\x63\x75\x72\x72\x65\x6e\x63\x79':_0x3fa080['\x63\x6f\x6e\x63\x75\x72\x72\x65\x6e\x63\x79']??0x3,'\x73\x65\x73\x73\x69\x6f\x6e\x49\x64\x50\x72\x65\x66\x69\x78':_0x3fa080[_0x31ab20(0x2e1)]??_0x31ab20(0x2b5)+_0x22dd4e['\x73\x75\x69\x74\x65']['\x69\x64']}),_0x115f56=await postJson(_0x40b7bb,_0x4c0420[_0x31ab20(0x1ac)][_0x31ab20(0x266)](/\/api\/eval\/matrix$/,'')+_0x31ab20(0x1ea)+encodeURIComponent(_0x4d76a3[_0x31ab20(0x24f)](String,_0x22dd4e[_0x31ab20(0x1aa)]['\x69\x64']))+_0x31ab20(0x1a3),_0x3fa080['\x61\x70\x69\x4b\x65\x79'],{'\x62\x61\x73\x65\x6c\x69\x6e\x65':_0x3fa080['\x62\x61\x73\x65\x6c\x69\x6e\x65']===!![],'\x63\x61\x73\x65\x73':_0x2ffb30});return{'\x73\x75\x69\x74\x65':_0x22dd4e['\x73\x75\x69\x74\x65'],'\x6d\x61\x74\x72\x69\x78':_0x2cc10b,'\x63\x61\x73\x65\x73':_0x2ffb30,'\x62\x65\x6e\x63\x68\x6d\x61\x72\x6b':_0x115f56[_0x31ab20(0x246)]??[],'\x69\x6d\x70\x6f\x72\x74\x52\x65\x73\x75\x6c\x74':_0x115f56};}async function runMatrixCases(_0x386403){const _0x5c4e4b=a0_0xde38a2,_0x9c68d9={'\x48\x4d\x48\x47\x71':function(_0x1d9004,_0x30d806,_0x34b0c5){return _0x1d9004(_0x30d806,_0x34b0c5);}},_0x4a76ba=new Map(_0x386403[_0x5c4e4b(0x22c)][_0x5c4e4b(0x305)]['\x6d\x61\x70'](_0x226f10=>[_0x226f10['\x69\x64'],_0x226f10])),_0x57e33b=new Map(_0x386403[_0x5c4e4b(0x22c)][_0x5c4e4b(0x202)]['\x6d\x61\x70'](_0x1ee92b=>[_0x1ee92b['\x69\x64'],_0x1ee92b])),_0x311831=Math['\x6d\x61\x78'](0x1,Math['\x6d\x69\x6e'](0xa,_0x386403[_0x5c4e4b(0x22c)][_0x5c4e4b(0x26c)]??0x1)),_0x4290ab=[];for(let _0x11b92b=0x0;_0x11b92b<_0x311831;_0x11b92b++)for(const _0x59d6ed of _0x386403['\x6d\x61\x74\x72\x69\x78'][_0x5c4e4b(0x1ad)])_0x4290ab['\x70\x75\x73\x68'](()=>runOneCase({'\x73\x63\x65\x6e\x61\x72\x69\x6f':_0x59d6ed,'\x69\x74\x65\x72\x61\x74\x69\x6f\x6e':_0x11b92b,'\x70\x72\x6f\x66\x69\x6c\x65':_0x59d6ed[_0x5c4e4b(0x2cf)]?_0x4a76ba[_0x5c4e4b(0x2de)](_0x59d6ed[_0x5c4e4b(0x2cf)]):void 0x0,'\x68\x61\x72\x6e\x65\x73\x73':_0x59d6ed[_0x5c4e4b(0x19d)]?_0x57e33b[_0x5c4e4b(0x2de)](_0x59d6ed[_0x5c4e4b(0x19d)]):void 0x0,'\x63\x6f\x6e\x66\x69\x67':_0x386403[_0x5c4e4b(0x2eb)],'\x61\x70\x69\x4b\x65\x79':_0x386403['\x61\x70\x69\x4b\x65\x79'],'\x73\x61\x6e\x64\x62\x6f\x78\x43\x6c\x69\x65\x6e\x74':_0x386403['\x73\x61\x6e\x64\x62\x6f\x78\x43\x6c\x69\x65\x6e\x74'],'\x73\x65\x73\x73\x69\x6f\x6e\x49\x64\x50\x72\x65\x66\x69\x78':_0x386403[_0x5c4e4b(0x2e1)]}));return _0x9c68d9['\x48\x4d\x48\x47\x71'](parallelLimit,_0x4290ab,_0x386403[_0x5c4e4b(0x25a)]);}async function runOneCase(_0x381df5){const _0x198066=a0_0xde38a2,_0x1e4bf8={'\x54\x45\x4b\x55\x58':function(_0x202875,_0x40cd5b){return _0x202875(_0x40cd5b);},'\x62\x6a\x68\x75\x76':function(_0x242309,_0x521903){return _0x242309(_0x521903);},'\x47\x6c\x76\x6d\x64':function(_0x4118c0,_0x3f1f87,_0x5d5c96,_0x4a4070){return _0x4118c0(_0x3f1f87,_0x5d5c96,_0x4a4070);},'\x51\x53\x55\x6e\x46':function(_0xfa4a9e,_0x438fa7){return _0xfa4a9e(_0x438fa7);},'\x78\x6b\x64\x69\x76':function(_0x183697,_0x3ec227,_0x39d114,_0x55faf1,_0xe65d85){return _0x183697(_0x3ec227,_0x39d114,_0x55faf1,_0xe65d85);},'\x53\x45\x52\x62\x74':function(_0x55844b,_0x13180d){return _0x55844b-_0x13180d;}},_0x22d81e=Date['\x6e\x6f\x77'](),_0x4882b5=_0x1e4bf8[_0x198066(0x1f8)](buildSandboxBackend,_0x381df5),_0x65fc8d=await _0x381df5[_0x198066(0x2e9)][_0x198066(0x22d)]({'\x6e\x61\x6d\x65':_0x198066(0x2fa)+_0x1e4bf8[_0x198066(0x1be)](safeId,_0x381df5[_0x198066(0x1ed)]['\x69\x64'])['\x73\x6c\x69\x63\x65'](0x0,0x28),'\x65\x6e\x76\x69\x72\x6f\x6e\x6d\x65\x6e\x74':_0x381df5[_0x198066(0x19d)]?.[_0x198066(0x1f0)],'\x69\x6d\x61\x67\x65':_0x381df5[_0x198066(0x19d)]?.[_0x198066(0x1f0)],'\x62\x61\x63\x6b\x65\x6e\x64':_0x4882b5,'\x65\x6e\x76':_0x1e4bf8[_0x198066(0x1fa)](materializeHarnessEnv,_0x381df5[_0x198066(0x2eb)],_0x381df5[_0x198066(0x19d)]?.[_0x198066(0x215)],_0x381df5['\x61\x70\x69\x4b\x65\x79']),..._0x381df5[_0x198066(0x19d)]?.[_0x198066(0x222)]?{'\x67\x69\x74':{'\x75\x72\x6c':_0x381df5['\x68\x61\x72\x6e\x65\x73\x73'][_0x198066(0x222)],'\x72\x65\x66':_0x381df5['\x68\x61\x72\x6e\x65\x73\x73']['\x67\x69\x74\x42\x72\x61\x6e\x63\x68']}}:{}}),_0x4b2f54=safeId(_0x381df5['\x73\x65\x73\x73\x69\x6f\x6e\x49\x64\x50\x72\x65\x66\x69\x78'])+'\x5f'+_0x1e4bf8[_0x198066(0x1f5)](safeId,_0x381df5['\x73\x63\x65\x6e\x61\x72\x69\x6f']['\x69\x64'])+'\x5f'+_0x381df5['\x69\x74\x65\x72\x61\x74\x69\x6f\x6e'];try{const _0x1e30c0=await _0x65fc8d[_0x198066(0x225)](_0x381df5[_0x198066(0x1ed)][_0x198066(0x23d)],{'\x73\x65\x73\x73\x69\x6f\x6e\x49\x64':_0x4b2f54}),_0x4c8a86=await _0x65fc8d[_0x198066(0x29f)](_0x1e30c0['\x73\x65\x73\x73\x69\x6f\x6e\x49\x64'])[_0x198066(0x1c4)](),_0x12a682=_0x381df5[_0x198066(0x1ed)][_0x198066(0x29e)]?.['\x74\x65\x73\x74\x43\x6f\x6d\x6d\x61\x6e\x64']??_0x381df5['\x68\x61\x72\x6e\x65\x73\x73']?.['\x74\x65\x73\x74\x43\x6f\x6d\x6d\x61\x6e\x64'],_0x54f2eb=_0x12a682&&_0x65fc8d[_0x198066(0x28a)]?await _0x1e4bf8[_0x198066(0x2cd)](runTestCommand,_0x65fc8d,_0x1e30c0['\x73\x65\x73\x73\x69\x6f\x6e\x49\x64'],_0x12a682,_0x381df5[_0x198066(0x19d)]?.[_0x198066(0x309)]):void 0x0;return buildCaseResult({'\x73\x63\x65\x6e\x61\x72\x69\x6f':_0x381df5[_0x198066(0x1ed)],'\x69\x74\x65\x72\x61\x74\x69\x6f\x6e':_0x381df5[_0x198066(0x219)],'\x70\x72\x6f\x66\x69\x6c\x65':_0x381df5[_0x198066(0x2cf)],'\x68\x61\x72\x6e\x65\x73\x73':_0x381df5[_0x198066(0x19d)],'\x73\x65\x73\x73\x69\x6f\x6e\x49\x64':_0x1e30c0[_0x198066(0x19c)],'\x73\x61\x6e\x64\x62\x6f\x78\x49\x64':_0x65fc8d['\x69\x64'],'\x72\x65\x73\x75\x6c\x74':_0x4c8a86,'\x73\x61\x6e\x64\x62\x6f\x78\x52\x65\x73\x75\x6c\x74':_0x54f2eb,'\x64\x75\x72\x61\x74\x69\x6f\x6e\x4d\x73':_0x1e4bf8['\x53\x45\x52\x62\x74'](Date['\x6e\x6f\x77'](),_0x22d81e),'\x65\x6e\x76':_0x1e4bf8[_0x198066(0x1fa)](materializeHarnessEnv,_0x381df5[_0x198066(0x2eb)],_0x381df5['\x68\x61\x72\x6e\x65\x73\x73']?.[_0x198066(0x215)],_0x381df5[_0x198066(0x278)])});}finally{await cleanupBox(_0x65fc8d);}}function buildSandboxBackend(_0x4beb2a){const _0x4d794d=a0_0xde38a2,_0x561e1e={'\x4c\x47\x4b\x56\x52':_0x4d794d(0x25e),'\x52\x6b\x46\x58\x72':_0x4d794d(0x1e6),'\x62\x47\x53\x71\x4d':'\x6f\x66\x66','\x4c\x46\x4a\x44\x4f':function(_0x1ba4d2,_0x59e1bf){return _0x1ba4d2(_0x59e1bf);}},_0x2ba168=_0x4beb2a[_0x4d794d(0x2eb)]['\x74\x63\x6c\x6f\x75\x64'][_0x4d794d(0x29b)]['\x6d\x6f\x64\x65\x6c'],_0x351a64=inferSearchProvider(_0x4beb2a['\x70\x72\x6f\x66\x69\x6c\x65']),_0x439dec={'\x6e\x61\x6d\x65':_0x4beb2a[_0x4d794d(0x2cf)]?.['\x6e\x61\x6d\x65']??_0x4beb2a[_0x4d794d(0x2cf)]?.['\x69\x64']??_0x561e1e['\x4c\x47\x4b\x56\x52'],'\x6d\x6f\x64\x65\x6c':{'\x64\x65\x66\x61\x75\x6c\x74':_0x4beb2a[_0x4d794d(0x2cf)]?.['\x6d\x6f\x64\x65\x6c']??_0x2ba168['\x6d\x6f\x64\x65\x6c']},'\x70\x65\x72\x6d\x69\x73\x73\x69\x6f\x6e\x73':{'\x6e\x65\x74\x77\x6f\x72\x6b':'\x61\x6c\x6c\x6f\x77','\x6d\x63\x70':_0x561e1e[_0x4d794d(0x1e2)]},'\x6d\x63\x70':{'\x74\x61\x6e\x67\x6c\x65\x5f\x77\x65\x62\x5f\x73\x65\x61\x72\x63\x68':{'\x74\x72\x61\x6e\x73\x70\x6f\x72\x74':_0x4d794d(0x232),'\x75\x72\x6c':_0x4beb2a['\x63\x6f\x6e\x66\x69\x67'][_0x4d794d(0x1c5)][_0x4d794d(0x1f4)],'\x68\x65\x61\x64\x65\x72\x73':_0x4beb2a['\x63\x6f\x6e\x66\x69\x67'][_0x4d794d(0x1c5)][_0x4d794d(0x20d)],'\x65\x6e\x61\x62\x6c\x65\x64':_0x351a64!==_0x561e1e[_0x4d794d(0x2d4)]}},'\x6d\x65\x74\x61\x64\x61\x74\x61':{'\x74\x61\x6e\x67\x6c\x65\x52\x6f\x75\x74\x65\x72\x53\x65\x61\x72\x63\x68\x50\x72\x6f\x76\x69\x64\x65\x72':_0x351a64,'\x74\x61\x6e\x67\x6c\x65\x52\x6f\x75\x74\x65\x72\x53\x65\x61\x72\x63\x68\x45\x6e\x64\x70\x6f\x69\x6e\x74':_0x4beb2a[_0x4d794d(0x2eb)]['\x65\x6e\x64\x70\x6f\x69\x6e\x74'][_0x4d794d(0x1ac)],'\x74\x61\x6e\x67\x6c\x65\x52\x6f\x75\x74\x65\x72\x45\x76\x61\x6c\x48\x61\x72\x6e\x65\x73\x73':_0x4beb2a['\x68\x61\x72\x6e\x65\x73\x73']?.['\x69\x64']},'\x65\x78\x74\x65\x6e\x73\x69\x6f\x6e\x73':{'\x74\x61\x6e\x67\x6c\x65\x52\x6f\x75\x74\x65\x72':{'\x70\x72\x6f\x76\x69\x64\x65\x72\x4f\x70\x74\x69\x6f\x6e\x73':_0x4beb2a[_0x4d794d(0x2cf)]?.['\x70\x72\x6f\x76\x69\x64\x65\x72\x4f\x70\x74\x69\x6f\x6e\x73']}}};return{'\x74\x79\x70\x65':_0x561e1e[_0x4d794d(0x1f1)](backendType,_0x4beb2a[_0x4d794d(0x19d)]?.['\x69\x64']),'\x70\x72\x6f\x66\x69\x6c\x65':_0x439dec,'\x6d\x6f\x64\x65\x6c':{'\x70\x72\x6f\x76\x69\x64\x65\x72':_0x2ba168['\x70\x72\x6f\x76\x69\x64\x65\x72'],'\x6d\x6f\x64\x65\x6c':_0x4beb2a[_0x4d794d(0x2cf)]?.['\x6d\x6f\x64\x65\x6c']??_0x2ba168[_0x4d794d(0x284)],'\x62\x61\x73\x65\x55\x72\x6c':_0x2ba168['\x62\x61\x73\x65\x55\x72\x6c'],'\x61\x70\x69\x4b\x65\x79':_0x4beb2a[_0x4d794d(0x278)]}};}function buildCaseResult(_0x1b0464){const _0x1cc4e4=a0_0xde38a2,_0x5c58f1={'\x44\x5a\x58\x4b\x68':function(_0x3ae020,_0x1fc396){return _0x3ae020(_0x1fc396);},'\x44\x72\x69\x4c\x73':_0x1cc4e4(0x20a),'\x58\x69\x6b\x48\x4c':_0x1cc4e4(0x1c8),'\x41\x48\x42\x47\x49':_0x1cc4e4(0x2e4),'\x52\x75\x54\x66\x4f':_0x1cc4e4(0x237)},_0x233cde=_0x1b0464[_0x1cc4e4(0x1c4)][_0x1cc4e4(0x30d)],_0x539155=_0x1b0464[_0x1cc4e4(0x1c4)]['\x65\x72\x72\x6f\x72']??_0x1cc4e4(0x2d5),_0x557e7a=_0x1b0464['\x72\x65\x73\x75\x6c\x74'][_0x1cc4e4(0x2c3)]?void 0x0:_0x539155,_0x430636=_0x1b0464[_0x1cc4e4(0x1c4)][_0x1cc4e4(0x2c3)]&&(_0x1b0464[_0x1cc4e4(0x229)]?_0x1b0464[_0x1cc4e4(0x229)][_0x1cc4e4(0x27f)]:!![]),_0xbf65fc=_0x1b0464[_0x1cc4e4(0x1ed)][_0x1cc4e4(0x246)],_0x12ca8e=promptToolCalls(_0x1b0464[_0x1cc4e4(0x1c4)]);return{'\x73\x63\x65\x6e\x61\x72\x69\x6f\x49\x64':_0x1b0464[_0x1cc4e4(0x1ed)]['\x69\x64'],'\x70\x72\x6f\x6d\x70\x74':_0x1b0464[_0x1cc4e4(0x1ed)][_0x1cc4e4(0x23d)],'\x6d\x6f\x64\x65\x6c':_0x1b0464[_0x1cc4e4(0x2cf)]?.[_0x1cc4e4(0x284)]??_0x1cc4e4(0x1e7),'\x72\x65\x73\x70\x6f\x6e\x73\x65':_0x1b0464[_0x1cc4e4(0x1c4)][_0x1cc4e4(0x294)]??'','\x74\x69\x6d\x69\x6e\x67':{'\x74\x6f\x74\x61\x6c\x4d\x73':_0x1b0464['\x64\x75\x72\x61\x74\x69\x6f\x6e\x4d\x73']},'\x74\x6f\x6b\x65\x6e\x73':{'\x69\x6e\x70\x75\x74':_0x233cde?.[_0x1cc4e4(0x1af)]??0x0,'\x6f\x75\x74\x70\x75\x74':_0x233cde?.['\x6f\x75\x74\x70\x75\x74\x54\x6f\x6b\x65\x6e\x73']??0x0,'\x63\x61\x63\x68\x65\x64':0x0,'\x72\x65\x61\x73\x6f\x6e\x69\x6e\x67':0x0},'\x63\x6f\x73\x74':_0x5c58f1[_0x1cc4e4(0x1bf)](promptCost,_0x1b0464[_0x1cc4e4(0x1c4)]),'\x6a\x75\x64\x67\x65\x43\x6f\x73\x74':0x0,'\x73\x63\x6f\x72\x65':_0x430636?0x8:0x1,'\x6a\x75\x64\x67\x65\x52\x65\x61\x73\x6f\x6e\x69\x6e\x67':_0x430636?_0x5c58f1[_0x1cc4e4(0x2a3)]:_0x1b0464[_0x1cc4e4(0x229)]&&!_0x1b0464[_0x1cc4e4(0x229)]['\x74\x65\x73\x74\x73\x50\x61\x73\x73\x65\x64']?_0x5c58f1['\x58\x69\x6b\x48\x4c']:_0x539155,'\x70\x61\x73\x73\x65\x64':_0x430636,'\x74\x6f\x6f\x6c\x43\x61\x6c\x6c\x73':_0x12ca8e,'\x61\x73\x73\x65\x72\x74\x69\x6f\x6e\x73':[{'\x63\x68\x65\x63\x6b':_0x5c58f1[_0x1cc4e4(0x2cc)],'\x70\x61\x73\x73\x65\x64':_0x1b0464[_0x1cc4e4(0x1c4)]['\x73\x75\x63\x63\x65\x73\x73']},..._0x1b0464['\x73\x61\x6e\x64\x62\x6f\x78\x52\x65\x73\x75\x6c\x74']?[{'\x63\x68\x65\x63\x6b':_0x5c58f1['\x52\x75\x54\x66\x4f'],'\x70\x61\x73\x73\x65\x64':_0x1b0464[_0x1cc4e4(0x229)][_0x1cc4e4(0x27f)]}]:[]],'\x62\x65\x6e\x63\x68\x6d\x61\x72\x6b':{'\x70\x72\x6f\x66\x69\x6c\x65\x49\x64':_0xbf65fc?.[_0x1cc4e4(0x2fb)]??_0x1b0464[_0x1cc4e4(0x2cf)]?.['\x69\x64'],'\x68\x61\x72\x6e\x65\x73\x73\x49\x64':_0xbf65fc?.[_0x1cc4e4(0x28e)]??_0x1b0464[_0x1cc4e4(0x19d)]?.['\x69\x64'],'\x74\x72\x61\x6e\x73\x70\x6f\x72\x74':_0xbf65fc?.[_0x1cc4e4(0x2ba)]??_0x1b0464[_0x1cc4e4(0x19d)]?.[_0x1cc4e4(0x2ba)]??'\x73\x61\x6e\x64\x62\x6f\x78\x2d\x73\x64\x6b','\x73\x65\x61\x72\x63\x68\x50\x72\x6f\x76\x69\x64\x65\x72':_0xbf65fc?.[_0x1cc4e4(0x1e4)]??inferSearchProvider(_0x1b0464[_0x1cc4e4(0x2cf)]),'\x73\x65\x61\x72\x63\x68\x52\x65\x71\x75\x65\x73\x74\x73':benchmarkSearchRequests(_0x1b0464[_0x1cc4e4(0x1c4)],_0x12ca8e),'\x63\x69\x74\x61\x74\x69\x6f\x6e\x43\x6f\x75\x6e\x74':benchmarkCitationCount(_0x1b0464[_0x1cc4e4(0x1c4)]),'\x61\x72\x74\x69\x66\x61\x63\x74\x73':{..._0xbf65fc?.[_0x1cc4e4(0x2d1)]??{},'\x73\x65\x73\x73\x69\x6f\x6e\x49\x64':_0x1b0464[_0x1cc4e4(0x19c)],'\x73\x61\x6e\x64\x62\x6f\x78\x49\x64':_0x1b0464[_0x1cc4e4(0x2b8)],..._0x5c58f1[_0x1cc4e4(0x1bf)](benchmarkEnvArtifacts,_0x1b0464[_0x1cc4e4(0x2a6)]),..._0x1b0464[_0x1cc4e4(0x1c4)]['\x74\x72\x61\x63\x65\x49\x64']?{'\x74\x72\x61\x63\x65\x49\x64':_0x1b0464[_0x1cc4e4(0x1c4)]['\x74\x72\x61\x63\x65\x49\x64']}:{}}},'\x69\x74\x65\x72\x61\x74\x69\x6f\x6e':_0x1b0464['\x69\x74\x65\x72\x61\x74\x69\x6f\x6e'],'\x65\x72\x72\x6f\x72':_0x1b0464[_0x1cc4e4(0x229)]&&!_0x1b0464['\x73\x61\x6e\x64\x62\x6f\x78\x52\x65\x73\x75\x6c\x74'][_0x1cc4e4(0x27f)]?_0x1cc4e4(0x19f):_0x557e7a,'\x73\x61\x6e\x64\x62\x6f\x78\x52\x65\x73\x75\x6c\x74':_0x1b0464[_0x1cc4e4(0x229)]};}async function runTestCommand(_0x3241af,_0x42c495,_0x1e5525,_0x51bd71){const _0x505476=a0_0xde38a2,_0x5bf397={'\x41\x49\x6e\x45\x56':function(_0x179fcd,_0x50ce67){return _0x179fcd*_0x50ce67;},'\x41\x6a\x52\x61\x44':function(_0x15c0fd,_0x16c872){return _0x15c0fd??_0x16c872;}};if(!_0x3241af['\x65\x78\x65\x63'])throw new Error(_0x505476(0x226));const _0x38c36e=await _0x3241af[_0x505476(0x28a)](_0x1e5525,{'\x73\x65\x73\x73\x69\x6f\x6e\x49\x64':_0x42c495,'\x74\x69\x6d\x65\x6f\x75\x74\x4d\x73':_0x5bf397[_0x505476(0x2af)](Math['\x6d\x61\x78'](0x1,_0x5bf397[_0x505476(0x1df)](_0x51bd71,0x78)),0x3e8)});return{'\x65\x78\x69\x74\x43\x6f\x64\x65':_0x38c36e[_0x505476(0x2fd)],'\x73\x74\x64\x6f\x75\x74':_0x38c36e[_0x505476(0x2b6)][_0x505476(0x22e)](0x0,0x7d0),'\x73\x74\x64\x65\x72\x72':_0x38c36e[_0x505476(0x2a7)]['\x73\x6c\x69\x63\x65'](0x0,0x3e8),'\x74\x65\x73\x74\x73\x50\x61\x73\x73\x65\x64':_0x38c36e[_0x505476(0x2fd)]===0x0};}async function postJson(_0x120261,_0x31176f,_0x2e3d03,_0x3a02f9){const _0xb19312=a0_0xde38a2,_0x15cff9={'\x64\x46\x76\x6b\x56':function(_0x1851aa,_0x5ac08e){return _0x1851aa(_0x5ac08e);}},_0x1c9a9a=await _0x120261(_0x31176f,{'\x6d\x65\x74\x68\x6f\x64':_0xb19312(0x2fc),'\x68\x65\x61\x64\x65\x72\x73':{'\x61\x75\x74\x68\x6f\x72\x69\x7a\x61\x74\x69\x6f\x6e':_0xb19312(0x2dd)+_0x2e3d03,'\x63\x6f\x6e\x74\x65\x6e\x74\x2d\x74\x79\x70\x65':_0xb19312(0x1de),'\x61\x63\x63\x65\x70\x74':_0xb19312(0x1de)},'\x62\x6f\x64\x79':JSON[_0xb19312(0x2ae)](_0x15cff9[_0xb19312(0x1f3)](stripUndefined,_0x3a02f9))}),_0x14bc1c=await _0x1c9a9a['\x74\x65\x78\x74'](),_0x44add5=_0x14bc1c?JSON[_0xb19312(0x281)](_0x14bc1c):null;if(!_0x1c9a9a['\x6f\x6b']){const _0x56244e=typeof _0x44add5?.['\x65\x72\x72\x6f\x72']===_0xb19312(0x269)?_0x44add5[_0xb19312(0x1d4)]:_0x14bc1c['\x73\x6c\x69\x63\x65'](0x0,0xc8);throw new Error(_0x31176f+_0xb19312(0x1b4)+_0x1c9a9a[_0xb19312(0x2ee)]+_0xb19312(0x2f6)+_0x56244e);}return _0x44add5;}async function parallelLimit(_0x358303,_0x3ce86c){const _0x288fcc=a0_0xde38a2,_0x2dc1be={'\x72\x4c\x4f\x44\x58':function(_0x2a94b3,_0x14d18f){return _0x2a94b3===_0x14d18f;},'\x50\x43\x55\x41\x78':function(_0xe8b0b8){return _0xe8b0b8();}},_0x4ad599=[];let _0x143544=0x0;const _0x473a58=Array[_0x288fcc(0x21b)]({'\x6c\x65\x6e\x67\x74\x68':Math[_0x288fcc(0x2c4)](Math['\x6d\x61\x78'](0x1,_0x3ce86c),_0x358303[_0x288fcc(0x231)])},async()=>{const _0x1a5cf0=_0x288fcc;while(_0x143544<_0x358303[_0x1a5cf0(0x231)]){const _0x1c2152=_0x143544++,_0x48f8bd=_0x358303[_0x1c2152];if(_0x2dc1be[_0x1a5cf0(0x2a2)](_0x48f8bd,void 0x0))throw new Error(_0x1a5cf0(0x1ee)+_0x1c2152);_0x4ad599[_0x1c2152]=await _0x2dc1be[_0x1a5cf0(0x1cd)](_0x48f8bd);}});return await Promise[_0x288fcc(0x1fd)](_0x473a58),_0x4ad599;}function materializeHarnessEnv(_0x14e58a,_0x1dabaa,_0x12d9c5){const _0x35fe07=a0_0xde38a2,_0x4adbc3={'\x75\x56\x41\x45\x5a':function(_0x227619,_0x246b23,_0x36534f,_0xe6fe32){return _0x227619(_0x246b23,_0x36534f,_0xe6fe32);},'\x4e\x47\x7a\x44\x42':function(_0x1d3beb,_0xf52fd2){return _0x1d3beb??_0xf52fd2;}};return _0x4adbc3['\x75\x56\x41\x45\x5a'](materializeEnv,{..._0x14e58a['\x68\x61\x72\x6e\x65\x73\x73\x5f\x65\x6e\x76']??{},..._0x4adbc3[_0x35fe07(0x236)](_0x1dabaa,{})},_0x14e58a,_0x12d9c5);}function materializeEnv(_0x205f5f,_0x5c0ed6,_0x1ca3ad){const _0xad741a=a0_0xde38a2,_0x2e24ec=_0x5c0ed6[_0xad741a(0x1b0)]['\x73\x61\x6e\x64\x62\x6f\x78\x42\x61\x63\x6b\x65\x6e\x64'][_0xad741a(0x284)][_0xad741a(0x1a0)][_0xad741a(0x266)](/\/v1\/?$/,''),_0x3201cb=new Map();for(const [_0x572729,_0x375e02]of Object[_0xad741a(0x1c0)](_0x205f5f))_0x3201cb[_0xad741a(0x230)](_0x572729,replaceEnvTokens(_0x375e02,_0x1ca3ad,_0x2e24ec,_0x3201cb));return Object[_0xad741a(0x296)](_0x3201cb);}function replaceEnvTokens(_0x2f5ff3,_0x6bea48,_0x1219eb,_0xd58006){const _0x373319=a0_0xde38a2,_0x46b396={'\x55\x77\x6d\x71\x6f':function(_0xe38002,_0x160a97){return _0xe38002(_0x160a97);}};let _0x240a8e=_0x2f5ff3[_0x373319(0x266)](/<tangle-api-key>/g,_0x6bea48)[_0x373319(0x266)](/\$\{TANGLE_API_KEY\}/g,_0x6bea48)['\x72\x65\x70\x6c\x61\x63\x65'](/\$\{TANGLE_ROUTER_URL\}/g,_0x1219eb);for(const [_0x16c98a,_0x33182d]of _0xd58006)_0x240a8e=_0x240a8e[_0x373319(0x266)](new RegExp(_0x373319(0x2a5)+_0x46b396[_0x373319(0x2a4)](escapeRegExp,_0x16c98a)+'\x5c\x7d','\x67'),_0x33182d);return _0x240a8e;}function benchmarkEnvArtifacts(_0x3783e9){const _0x6f7766=a0_0xde38a2,_0x19910c=Object[_0x6f7766(0x1c0)](_0x3783e9)[_0x6f7766(0x25f)](([_0x15b54f],[_0x263957])=>_0x15b54f[_0x6f7766(0x19e)](_0x263957));return{'\x68\x61\x72\x6e\x65\x73\x73\x45\x6e\x76\x4b\x65\x79\x73':_0x19910c[_0x6f7766(0x2df)](([_0x15ea5d])=>_0x15ea5d)[_0x6f7766(0x2ac)]('\x2c'),'\x68\x61\x72\x6e\x65\x73\x73\x45\x6e\x76\x48\x61\x73\x68':stableHash(_0x19910c[_0x6f7766(0x2df)](([_0x13942e,_0x2ba055])=>_0x13942e+'\x3d'+redactEnvValue(_0x13942e,_0x2ba055))[_0x6f7766(0x2ac)]('\x0a')),'\x68\x61\x72\x6e\x65\x73\x73\x45\x6e\x76':JSON[_0x6f7766(0x2ae)](Object[_0x6f7766(0x296)](_0x19910c[_0x6f7766(0x2df)](([_0x2f2c65,_0x57f0e0])=>[_0x2f2c65,redactEnvValue(_0x2f2c65,_0x57f0e0)])))};}function redactEnvValue(_0x3046b4,_0x2bfc48){const _0x4ffaec=a0_0xde38a2;if(/token|secret|key|authorization/i[_0x4ffaec(0x1f6)](_0x3046b4))return _0x4ffaec(0x1bc);if(/^Bearer\s+/i[_0x4ffaec(0x1f6)](_0x2bfc48))return _0x4ffaec(0x299);return _0x2bfc48[_0x4ffaec(0x231)]>0x1f4?_0x2bfc48[_0x4ffaec(0x22e)](0x0,0x1f4)+_0x4ffaec(0x243):_0x2bfc48;}function stableHash(_0x3e7d54){const _0x4ac01b=a0_0xde38a2;let _0x35accd=0x811c9dc5;for(let _0xa93be=0x0;_0xa93be<_0x3e7d54[_0x4ac01b(0x231)];_0xa93be+=0x1){_0x35accd^=_0x3e7d54['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0xa93be),_0x35accd=Math[_0x4ac01b(0x2d3)](_0x35accd,0x1000193);}return(_0x35accd>>>0x0)[_0x4ac01b(0x1d6)](0x10)[_0x4ac01b(0x304)](0x8,'\x30');}function escapeRegExp(_0x3a1905){const _0x149992=a0_0xde38a2;return _0x3a1905[_0x149992(0x266)](/[.*+?^${}()|[\]\\]/g,_0x149992(0x1c2));}function inferSearchProvider(_0x475e55){const _0x1a720f=a0_0xde38a2,_0x5299fc={'\x72\x53\x50\x44\x4c':function(_0x454c59,_0x4b6fe8){return _0x454c59===_0x4b6fe8;},'\x51\x75\x74\x5a\x64':_0x1a720f(0x24e),'\x66\x50\x63\x6e\x63':'\x6f\x62\x6a\x65\x63\x74','\x43\x47\x69\x44\x4a':_0x1a720f(0x1ba)},_0x247bca=_0x475e55?.[_0x1a720f(0x302)]?.['\x67\x61\x74\x65\x77\x61\x79']?.[_0x1a720f(0x279)];if(_0x5299fc[_0x1a720f(0x308)](_0x247bca,![]))return _0x5299fc[_0x1a720f(0x251)];if(_0x247bca&&_0x5299fc[_0x1a720f(0x308)](typeof _0x247bca,_0x5299fc[_0x1a720f(0x212)])&&typeof _0x247bca[_0x1a720f(0x201)]===_0x1a720f(0x269))return _0x247bca['\x70\x72\x6f\x76\x69\x64\x65\x72'];return _0x5299fc['\x43\x47\x69\x44\x4a'];}function promptCost(_0x3b55be){const _0x3320ad=a0_0xde38a2,_0x3b62d4={'\x76\x4a\x61\x71\x50':_0x3320ad(0x23f)},_0x2b1812=_0x3b55be,_0x5e3753=typeof _0x2b1812[_0x3320ad(0x273)]===_0x3b62d4['\x76\x4a\x61\x71\x50']?_0x2b1812[_0x3320ad(0x273)]:_0x2b1812[_0x3320ad(0x1b2)];return typeof _0x5e3753===_0x3320ad(0x23f)&&Number[_0x3320ad(0x1a2)](_0x5e3753)&&_0x5e3753>0x0?_0x5e3753:0x0;}function promptToolCalls(_0x3ca9ec){const _0x59554a=a0_0xde38a2,_0x5c57ec=_0x3ca9ec;if(Array['\x69\x73\x41\x72\x72\x61\x79'](_0x5c57ec[_0x59554a(0x256)]))return _0x5c57ec['\x74\x6f\x6f\x6c\x43\x61\x6c\x6c\x73'];if(Array[_0x59554a(0x2f3)](_0x5c57ec[_0x59554a(0x239)]))return _0x5c57ec[_0x59554a(0x239)];return[];}function benchmarkSearchRequests(_0x5d69dd,_0x3a3102){const _0x2d190e=a0_0xde38a2,_0x2273dd={'\x53\x41\x43\x51\x47':function(_0x490265,_0x3d9e9d){return _0x490265===_0x3d9e9d;},'\x6d\x56\x73\x54\x4c':'\x6e\x75\x6d\x62\x65\x72'},_0x17a8b2=_0x5d69dd,_0x279bad=_0x2273dd['\x53\x41\x43\x51\x47'](typeof _0x17a8b2[_0x2d190e(0x2c6)],_0x2273dd[_0x2d190e(0x27a)])?_0x17a8b2[_0x2d190e(0x2c6)]:typeof _0x17a8b2[_0x2d190e(0x30b)]?.[_0x2d190e(0x2c6)]==='\x6e\x75\x6d\x62\x65\x72'?_0x17a8b2[_0x2d190e(0x30b)]['\x73\x65\x61\x72\x63\x68\x52\x65\x71\x75\x65\x73\x74\x73']:void 0x0;if(_0x279bad!==void 0x0)return Math['\x6d\x61\x78'](0x0,_0x279bad);return _0x3a3102[_0x2d190e(0x1a6)](_0x2185f9=>{const _0x123d8d=_0x2d190e,_0x1cc9d6=_0x2185f9;return String(_0x1cc9d6[_0x123d8d(0x277)]??_0x1cc9d6[_0x123d8d(0x1d8)]??_0x1cc9d6[_0x123d8d(0x1cb)]??'')[_0x123d8d(0x288)]()['\x69\x6e\x63\x6c\x75\x64\x65\x73'](_0x123d8d(0x20e));})['\x6c\x65\x6e\x67\x74\x68'];}function a0_0x2a31(){const _0x34f34d=['\x75\x78\x66\x55\x7a\x76\x6d','\x69\x63\x61\x47\x69\x67\x66\x57\x44\x63\x31\x4e\x7a\x78\x71\x47\x79\x32\x58\x4c\x79\x77\x34\x47\x6a\x49\x79\x47\x43\x4d\x30\x47\x6c\x78\x6a\x4d\x69\x63\x39\x32\x79\x78\x69\x56\x42\x67\x4c\x49\x6c\x32\x66\x57\x44\x63\x39\x53\x41\x78\x6e\x30\x43\x59\x38\x51','\x43\x32\x66\x55\x7a\x67\x6a\x56\x45\x65\x6e\x53\x41\x77\x76\x55\x44\x61','\x44\x77\x58\x76\x41\x76\x4f','\x79\x32\x39\x55\x7a\x4d\x4c\x4e','\x42\x77\x66\x4a\x41\x67\x4c\x55\x7a\x71','\x44\x78\x6e\x4c\x43\x47','\x43\x33\x72\x48\x44\x68\x76\x5a','\x6f\x74\x43\x58\x6e\x5a\x71\x31\x74\x30\x66\x63\x75\x66\x76\x50','\x79\x4e\x76\x50\x42\x67\x72\x74\x79\x77\x35\x4b\x79\x4d\x39\x34\x74\x77\x6e\x57\x71\x32\x39\x55\x7a\x4d\x4c\x4e\x6f\x49\x62\x48\x44\x78\x72\x4f\x76\x67\x39\x52\x7a\x77\x34\x47\x41\x78\x6d\x47\x43\x4d\x76\x58\x44\x77\x4c\x59\x7a\x77\x71','\x44\x67\x66\x55\x7a\x32\x58\x4c\x6c\x78\x6a\x56\x44\x78\x72\x4c\x43\x49\x31\x33\x7a\x77\x69\x54\x43\x32\x76\x48\x43\x4d\x6e\x4f','\x42\x33\x6a\x49\x41\x75\x57','\x41\x78\x6e\x62\x43\x4e\x6a\x48\x45\x71','\x72\x4d\x44\x50\x79\x78\x79','\x7a\x4d\x76\x30\x79\x32\x47','\x6b\x74\x4f\x47','\x42\x77\x66\x55\x79\x77\x44\x4c\x75\x32\x66\x55\x7a\x67\x6a\x56\x45\x67\x76\x5a\x69\x68\x6a\x4c\x43\x78\x76\x50\x43\x4d\x76\x5a\x69\x67\x31\x48\x79\x32\x48\x50\x42\x4d\x75','\x74\x77\x58\x65\x41\x77\x71','\x79\x78\x62\x50\x78\x32\x54\x4c\x45\x76\x39\x4c\x42\x4e\x79','\x7a\x78\x7a\x48\x42\x63\x30','\x43\x68\x6a\x56\x7a\x4d\x4c\x53\x7a\x75\x4c\x4b','\x75\x65\x39\x74\x76\x61','\x7a\x78\x48\x50\x44\x65\x6e\x56\x7a\x67\x75','\x41\x68\x72\x30\x43\x68\x6d\x36\x6c\x59\x39\x59\x42\x33\x76\x30\x7a\x78\x69\x55\x44\x67\x66\x55\x7a\x32\x58\x4c\x6c\x4e\x72\x56\x42\x32\x58\x5a','\x43\x32\x76\x59\x44\x4d\x76\x59\x74\x4d\x66\x54\x7a\x71','\x43\x68\x4c\x30\x41\x67\x39\x55','\x79\x32\x39\x55\x7a\x67\x65','\x43\x68\x6a\x56\x44\x4d\x4c\x4b\x7a\x78\x6a\x70\x43\x68\x72\x50\x42\x32\x35\x5a','\x79\x78\x76\x30\x41\x66\x72\x56\x41\x32\x76\x55','\x43\x67\x66\x4b\x75\x33\x72\x48\x43\x4e\x71','\x79\x77\x44\x4c\x42\x4e\x72\x71\x43\x4d\x39\x4d\x41\x77\x58\x4c\x43\x57','\x42\x77\x66\x55\x79\x77\x44\x4c\x75\x32\x66\x55\x7a\x67\x6a\x56\x45\x67\x76\x5a','\x42\x32\x6a\x51\x7a\x77\x6e\x30','\x43\x4c\x6e\x71\x72\x65\x57','\x44\x67\x4c\x54\x7a\x77\x39\x31\x44\x61','\x72\x4d\x66\x50\x42\x67\x76\x4b\x69\x68\x72\x56\x69\x67\x58\x56\x79\x77\x71\x47\x76\x67\x66\x55\x7a\x32\x58\x4c\x69\x66\x6a\x56\x44\x78\x72\x4c\x43\x49\x62\x5a\x7a\x77\x66\x59\x79\x32\x47\x47\x79\x32\x39\x55\x7a\x4d\x4c\x4e\x6f\x49\x61','\x42\x77\x76\x30\x79\x77\x72\x48\x44\x67\x65','\x44\x67\x66\x4e','\x44\x78\x6e\x48\x7a\x32\x75','\x41\x77\x35\x30\x7a\x78\x6a\x32\x79\x77\x58\x6e\x43\x57','\x69\x63\x61\x47\x69\x67\x31\x50\x79\x33\x6a\x56\x42\x77\x66\x54\x79\x4d\x65\x47\x43\x32\x48\x4c\x42\x67\x57\x47\x41\x77\x35\x50\x44\x63\x61\x54\x43\x59\x62\x49\x79\x78\x6e\x4f\x69\x63\x31\x57\x69\x63\x39\x56\x43\x68\x71\x56\x79\x32\x39\x55\x7a\x67\x65','\x74\x65\x66\x63\x72\x75\x57\x47','\x43\x32\x76\x5a\x43\x32\x4c\x56\x42\x4b\x4c\x4b','\x41\x67\x66\x59\x42\x4d\x76\x5a\x43\x57','\x42\x67\x39\x4a\x79\x77\x58\x4c\x71\x32\x39\x54\x43\x67\x66\x59\x7a\x71','\x75\x32\x66\x55\x7a\x67\x6a\x56\x45\x63\x62\x30\x7a\x78\x6e\x30\x69\x67\x6e\x56\x42\x77\x31\x48\x42\x4d\x71\x47\x7a\x4d\x66\x50\x42\x67\x76\x4b','\x79\x4d\x66\x5a\x7a\x76\x76\x59\x42\x61','\x42\x33\x62\x4c\x42\x4d\x6e\x56\x7a\x67\x75','\x41\x78\x6e\x67\x41\x77\x35\x50\x44\x67\x75','\x6c\x33\x6a\x31\x42\x4e\x6d\x56\x41\x77\x31\x57\x42\x33\x6a\x30','\x75\x30\x48\x62\x6c\x74\x69\x31\x6e\x47','\x69\x63\x61\x47\x69\x67\x66\x4b\x7a\x63\x31\x48\x43\x68\x71\x54\x43\x4d\x76\x57\x42\x33\x6e\x50\x44\x67\x39\x59\x45\x73\x61\x54\x45\x73\x62\x57\x43\x67\x65\x36\x7a\x67\x76\x48\x7a\x68\x6e\x55\x79\x77\x54\x4c\x43\x59\x39\x57\x43\x67\x65\x47\x6a\x49\x79\x47\x78\x61','\x7a\x4d\x4c\x53\x44\x67\x76\x59','\x43\x32\x48\x48\x6d\x4a\x75\x32\x6f\x47','\x43\x32\x76\x48\x43\x4d\x6e\x4f\x6c\x4d\x6e\x56\x42\x4d\x7a\x50\x7a\x57','\x42\x77\x66\x55\x79\x77\x44\x4c\x75\x32\x66\x55\x7a\x67\x6a\x56\x45\x67\x76\x5a\x69\x67\x6e\x59\x7a\x77\x66\x30\x7a\x73\x62\x59\x7a\x78\x66\x31\x41\x78\x6a\x4c\x43\x59\x62\x48\x69\x67\x48\x56\x43\x33\x71\x54\x42\x33\x44\x55\x7a\x77\x71\x47\x43\x67\x39\x53\x41\x77\x6e\x35','\x43\x33\x76\x50\x44\x67\x75','\x75\x4c\x76\x6f\x69\x68\x62\x50\x43\x63\x62\x50\x42\x4e\x6e\x30\x79\x77\x58\x53\x69\x63\x30\x54\x42\x4d\x38\x54\x79\x32\x66\x4a\x41\x67\x75\x54\x7a\x67\x4c\x59\x69\x61','\x44\x78\x6a\x53','\x43\x32\x6e\x4c\x42\x4d\x66\x59\x41\x77\x39\x5a','\x7a\x32\x76\x30\x76\x67\x76\x4c\x71\x78\x72\x30\x7a\x78\x6e\x30\x79\x78\x72\x50\x42\x32\x34','\x41\x77\x35\x57\x44\x78\x72\x75\x42\x32\x54\x4c\x42\x4e\x6d','\x44\x67\x6e\x53\x42\x33\x76\x4b','\x44\x68\x6a\x48\x79\x32\x75','\x79\x32\x39\x5a\x44\x61','\x79\x77\x35\x55\x42\x33\x72\x48\x44\x67\x4c\x56\x42\x4e\x6d','\x69\x67\x7a\x48\x41\x77\x58\x4c\x7a\x63\x61\x4f','\x79\x4d\x66\x5a\x7a\x75\x4c\x54\x79\x77\x44\x4c','\x71\x32\x58\x50\x7a\x77\x35\x30\x69\x67\x6e\x56\x42\x4d\x7a\x50\x7a\x33\x76\x59\x79\x78\x72\x50\x42\x32\x34\x47\x43\x4d\x76\x58\x44\x77\x4c\x59\x7a\x77\x71\x55\x69\x66\x62\x48\x43\x33\x6d\x47\x45\x59\x62\x4a\x42\x67\x4c\x4c\x42\x4e\x71\x36\x69\x68\x53\x47\x79\x4d\x66\x5a\x7a\x76\x76\x59\x42\x63\x57\x47\x79\x78\x62\x50\x73\x32\x76\x35\x69\x68\x30\x47\x46\x73\x62\x30\x42\x59\x62\x49\x44\x77\x4c\x53\x7a\x63\x47\x50\x69\x67\x39\x59\x69\x68\x76\x5a\x7a\x73\x62\x6a\x42\x77\x66\x4e\x7a\x75\x6a\x31\x41\x77\x58\x4b\x7a\x78\x69\x47\x44\x67\x48\x59\x42\x33\x76\x4e\x41\x63\x62\x30\x41\x67\x75\x47\x75\x32\x66\x55\x7a\x67\x6a\x56\x45\x63\x62\x4a\x42\x67\x4c\x4c\x42\x4e\x71\x55','\x77\x68\x7a\x35\x45\x4c\x75','\x42\x33\x62\x30\x41\x77\x39\x55\x43\x57','\x45\x78\x7a\x52\x76\x31\x69','\x7a\x67\x76\x4d\x79\x78\x76\x53\x44\x61','\x7a\x78\x7a\x48\x42\x66\x39\x54\x79\x78\x72\x59\x41\x78\x47','\x70\x68\x6a\x4c\x7a\x67\x66\x4a\x44\x67\x76\x4b\x70\x47','\x79\x32\x39\x54\x43\x67\x58\x4c\x44\x67\x75','\x79\x4d\x50\x4f\x44\x78\x79','\x72\x66\x50\x79\x73\x32\x47','\x7a\x77\x35\x30\x43\x4d\x4c\x4c\x43\x57','\x79\x32\x58\x48\x44\x77\x72\x4c\x6c\x77\x6e\x56\x7a\x67\x75','\x78\x63\x71\x4d','\x79\x33\x6a\x4c\x79\x78\x72\x4c\x7a\x65\x66\x30','\x43\x4d\x76\x5a\x44\x77\x58\x30','\x42\x77\x6e\x57','\x44\x68\x6a\x50\x42\x71','\x7a\x67\x76\x4d\x79\x78\x76\x53\x44\x66\x39\x57\x43\x4d\x39\x32\x41\x77\x72\x4c\x43\x47','\x75\x32\x66\x55\x7a\x67\x6a\x56\x45\x63\x62\x30\x7a\x78\x6e\x30\x69\x67\x6e\x56\x42\x77\x31\x48\x42\x4d\x71\x47\x7a\x4d\x66\x50\x42\x67\x76\x4b\x6c\x47','\x79\x4e\x76\x50\x42\x67\x72\x74\x79\x77\x35\x4b\x79\x4d\x39\x34\x74\x77\x6e\x57\x71\x32\x39\x55\x7a\x4d\x4c\x4e\x6f\x49\x62\x5a\x79\x77\x35\x4b\x79\x4d\x39\x34\x76\x78\x6a\x53\x69\x67\x4c\x5a\x69\x68\x6a\x4c\x43\x78\x76\x50\x43\x4d\x76\x4b','\x7a\x4e\x76\x55\x79\x33\x72\x50\x42\x32\x34','\x44\x68\x4c\x57\x7a\x71','\x74\x67\x54\x52\x73\x31\x65','\x75\x65\x6e\x76\x71\x78\x47','\x41\x77\x35\x57\x44\x78\x72\x70\x44\x4d\x76\x59\x43\x4d\x4c\x4b\x7a\x78\x6d','\x43\x77\x72\x50\x7a\x75\x65','\x79\x32\x39\x55\x44\x67\x76\x55\x44\x63\x31\x30\x45\x78\x62\x4c','\x7a\x67\x76\x30\x79\x77\x6e\x4f\x74\x77\x66\x4a\x41\x67\x4c\x55\x7a\x71','\x44\x67\x66\x55\x7a\x32\x58\x4c\x6c\x77\x4c\x54\x79\x77\x44\x4c\x6f\x47','\x42\x32\x35\x67\x79\x77\x4c\x53\x44\x78\x6a\x4c','\x7a\x78\x6a\x59\x42\x33\x69','\x79\x77\x6a\x56\x43\x4e\x72\x4c\x7a\x61','\x44\x67\x39\x74\x44\x68\x6a\x50\x42\x4d\x43','\x79\x32\x76\x53\x42\x61','\x44\x67\x39\x56\x42\x65\x35\x48\x42\x77\x75','\x43\x32\x66\x55\x7a\x67\x6a\x56\x45\x63\x31\x5a\x7a\x67\x53','\x42\x33\x62\x4c\x42\x4e\x6a\x56\x44\x78\x72\x4c\x43\x4c\x39\x4a\x42\x32\x31\x57\x79\x78\x71','\x71\x4c\x76\x51\x73\x4b\x69','\x7a\x65\x35\x6e\x73\x32\x79','\x42\x32\x6e\x70\x43\x32\x4b','\x79\x78\x62\x57\x42\x67\x4c\x4a\x79\x78\x72\x50\x42\x32\x34\x56\x41\x4e\x6e\x56\x42\x47','\x71\x77\x50\x73\x79\x75\x71','\x79\x32\x58\x50\x7a\x77\x35\x30\x71\x32\x39\x55\x7a\x4d\x4c\x4e','\x79\x32\x58\x50\x7a\x77\x35\x30','\x75\x4d\x54\x67\x77\x68\x69','\x41\x67\x76\x34','\x43\x32\x76\x48\x43\x4d\x6e\x4f\x75\x68\x6a\x56\x44\x4d\x4c\x4b\x7a\x78\x69','\x44\x67\x76\x4c\x71\x78\x72\x30\x7a\x78\x6e\x30\x79\x78\x72\x50\x42\x32\x35\x6b\x43\x32\x39\x55','\x79\x77\x58\x53\x42\x33\x43','\x44\x77\x35\x52\x42\x4d\x39\x33\x42\x47','\x79\x78\x72\x30\x79\x77\x6e\x4f\x74\x77\x66\x4a\x41\x67\x4c\x55\x7a\x71','\x7a\x4b\x6e\x70\x73\x66\x69','\x6c\x32\x66\x57\x41\x73\x39\x4c\x44\x4d\x66\x53\x6c\x33\x6e\x31\x41\x78\x72\x4c\x43\x59\x38','\x71\x4e\x76\x50\x42\x67\x71\x47\x79\x32\x39\x54\x43\x67\x58\x4c\x44\x67\x76\x4b\x69\x67\x6a\x31\x44\x63\x62\x55\x42\x59\x62\x59\x7a\x78\x6e\x31\x42\x68\x71\x47\x43\x4d\x76\x4a\x7a\x77\x4c\x32\x7a\x77\x71','\x79\x4e\x76\x50\x42\x67\x72\x64\x42\x32\x35\x30\x43\x4d\x39\x53\x75\x67\x58\x48\x42\x4d\x76\x6e\x79\x33\x62\x64\x42\x32\x35\x4d\x41\x77\x43\x36\x69\x67\x66\x57\x41\x75\x54\x4c\x45\x73\x62\x50\x43\x59\x62\x59\x7a\x78\x66\x31\x41\x78\x6a\x4c\x7a\x61','\x43\x32\x6e\x4c\x42\x4d\x66\x59\x41\x77\x38','\x74\x77\x4c\x5a\x43\x32\x4c\x55\x7a\x59\x62\x59\x42\x33\x76\x30\x7a\x78\x69\x47\x7a\x78\x7a\x48\x42\x63\x62\x30\x79\x78\x6e\x52\x69\x67\x66\x30\x69\x67\x4c\x55\x7a\x67\x76\x34\x69\x61','\x79\x32\x4c\x30\x79\x78\x72\x50\x42\x32\x35\x5a','\x41\x77\x31\x48\x7a\x32\x75','\x74\x65\x7a\x6b\x72\x65\x38','\x72\x4b\x54\x49\x72\x30\x4b','\x7a\x65\x7a\x32\x41\x31\x79','\x43\x33\x72\x59\x7a\x77\x66\x54\x79\x77\x6a\x53\x7a\x76\x39\x4f\x44\x68\x72\x57\x78\x33\x76\x59\x42\x61','\x75\x76\x6e\x76\x42\x4b\x79','\x44\x67\x76\x5a\x44\x61','\x69\x63\x61\x47\x69\x67\x66\x57\x44\x63\x31\x4e\x7a\x78\x71\x47\x41\x77\x35\x5a\x44\x67\x66\x53\x42\x63\x61\x54\x45\x73\x62\x5a\x42\x32\x7a\x30\x44\x32\x66\x59\x7a\x73\x31\x57\x43\x4d\x39\x57\x7a\x78\x6a\x30\x41\x77\x76\x5a\x6c\x77\x6e\x56\x42\x77\x31\x56\x42\x49\x61\x4d\x6a\x49\x62\x43','\x76\x65\x76\x6c\x76\x76\x47','\x6c\x33\x6a\x4c\x43\x33\x62\x56\x42\x4e\x6e\x4c\x43\x57','\x72\x32\x58\x32\x42\x77\x71','\x7a\x4c\x4c\x5a\x76\x68\x6d','\x79\x32\x39\x54\x42\x77\x66\x55\x7a\x68\x6d','\x79\x77\x58\x53','\x79\x77\x72\x4b\x71\x78\x62\x30\x75\x67\x66\x4a\x41\x32\x66\x4e\x7a\x78\x6d','\x6f\x74\x75\x58\x6e\x74\x65\x33\x73\x4c\x76\x53\x7a\x65\x6e\x62','\x41\x77\x35\x4a\x42\x68\x76\x4b\x7a\x78\x6d','\x43\x68\x6a\x56\x44\x4d\x4c\x4b\x7a\x78\x69','\x41\x67\x66\x59\x42\x4d\x76\x5a\x43\x32\x76\x5a','\x6d\x4a\x65\x30\x6d\x64\x72\x41\x77\x65\x76\x51\x79\x32\x4b','\x75\x32\x44\x63\x79\x77\x38','\x41\x32\x76\x35\x43\x57','\x43\x4d\x76\x5a\x44\x67\x39\x59\x7a\x76\x44\x56\x43\x4d\x54\x5a\x43\x67\x66\x4a\x7a\x76\x6e\x55\x79\x78\x62\x5a\x41\x67\x39\x30','\x42\x32\x35\x74\x44\x77\x6e\x4a\x7a\x78\x6e\x5a','\x69\x64\x65\x47\x6a\x49\x79\x47\x78\x61','\x79\x33\x6a\x35\x43\x68\x72\x56','\x76\x67\x76\x59\x42\x77\x4c\x55\x79\x77\x57\x47\x43\x32\x66\x55\x7a\x67\x6a\x56\x45\x63\x62\x59\x7a\x78\x6e\x31\x42\x68\x71\x47\x79\x77\x35\x4b\x69\x68\x6a\x4c\x43\x78\x76\x50\x43\x4d\x76\x4b\x69\x68\x72\x4c\x43\x33\x72\x5a\x69\x68\x62\x48\x43\x33\x6e\x4c\x7a\x63\x34','\x7a\x4d\x58\x4c\x7a\x78\x72\x6a\x7a\x61','\x43\x33\x62\x4c\x79\x57','\x41\x67\x76\x48\x7a\x67\x76\x59\x43\x57','\x43\x32\x76\x48\x43\x4d\x6e\x4f','\x6c\x32\x31\x4a\x43\x61','\x71\x76\x6a\x68\x69\x61','\x44\x76\x72\x72\x71\x4d\x79','\x7a\x4c\x62\x4a\x42\x4d\x6d','\x44\x67\x39\x6b\x75\x30\x39\x6f','\x76\x4d\x50\x6a\x44\x32\x4f','\x7a\x77\x35\x32\x76\x4d\x66\x59\x43\x57','\x7a\x4d\x58\x4c\x7a\x78\x72\x5a','\x75\x4c\x76\x6f\x69\x67\x66\x57\x44\x63\x31\x4e\x7a\x78\x71\x47\x44\x78\x62\x4b\x79\x78\x72\x4c\x69\x63\x79\x4d\x69\x66\x57','\x79\x32\x48\x48\x42\x4d\x35\x4c\x42\x68\x6d','\x41\x78\x72\x4c\x43\x4d\x66\x30\x41\x77\x39\x55','\x79\x30\x72\x33\x76\x4b\x6d','\x7a\x4e\x6a\x56\x42\x71','\x76\x75\x72\x69\x76\x68\x61','\x43\x32\x66\x55\x7a\x67\x6a\x56\x45\x66\x76\x59\x42\x61','\x42\x4d\x39\x4b\x7a\x74\x50\x4a\x43\x4e\x4c\x57\x44\x67\x38','\x69\x63\x61\x47\x69\x67\x31\x50\x79\x33\x6a\x56\x42\x77\x66\x54\x79\x4d\x65\x47\x79\x32\x58\x4c\x79\x77\x34\x47\x6c\x73\x31\x48\x42\x67\x57\x47\x6c\x73\x31\x35\x7a\x78\x6d','\x79\x78\x62\x30\x75\x67\x66\x4a\x41\x32\x66\x4e\x7a\x78\x6d','\x43\x32\x4c\x4e\x42\x4d\x66\x53','\x7a\x32\x4c\x30\x75\x4d\x76\x57\x42\x57','\x43\x68\x4c\x30\x41\x67\x39\x55\x76\x4d\x76\x59\x43\x32\x4c\x56\x42\x47','\x7a\x67\x4c\x4c\x45\x68\x43','\x7a\x67\x4c\x5a\x43\x67\x66\x30\x79\x32\x48\x71\x43\x4d\x39\x54\x43\x68\x71','\x75\x4d\x39\x31\x44\x67\x76\x59\x69\x67\x76\x32\x79\x77\x57\x47\x43\x32\x66\x55\x7a\x67\x6a\x56\x45\x63\x62\x4b\x42\x32\x76\x5a\x69\x67\x35\x56\x44\x63\x62\x5a\x44\x78\x62\x57\x42\x33\x6a\x30\x69\x67\x76\x34\x7a\x77\x6d','\x44\x67\x76\x34\x44\x61','\x76\x65\x76\x66\x69\x67\x66\x30\x44\x67\x76\x5a\x44\x67\x66\x30\x41\x77\x39\x55\x69\x68\x6a\x4c\x43\x33\x62\x56\x42\x4e\x6e\x4c\x69\x67\x35\x56\x42\x4d\x6e\x4c\x69\x67\x72\x50\x7a\x63\x62\x55\x42\x33\x71\x47\x42\x77\x66\x30\x79\x32\x47\x47\x79\x32\x48\x48\x42\x67\x58\x4c\x42\x4d\x44\x4c','\x43\x32\x66\x55\x7a\x67\x6a\x56\x45\x66\x6a\x4c\x43\x33\x76\x53\x44\x61','\x6d\x5a\x6e\x33\x73\x67\x54\x34\x74\x32\x71','\x6d\x5a\x43\x32\x6e\x4a\x75\x59\x6d\x65\x44\x58\x45\x65\x54\x69\x44\x47','\x42\x77\x66\x30\x43\x4d\x4c\x34','\x79\x33\x6a\x4c\x79\x78\x72\x4c','\x43\x32\x58\x50\x79\x32\x75','\x69\x59\x62\x6a\x42\x4e\x6e\x30\x79\x77\x58\x53\x69\x66\x62\x35\x44\x67\x48\x56\x42\x49\x61','\x43\x32\x76\x30','\x42\x67\x76\x55\x7a\x33\x72\x4f','\x41\x68\x72\x30\x43\x61','\x42\x77\x76\x5a\x43\x32\x66\x4e\x7a\x71','\x74\x32\x6a\x6e\x41\x67\x47','\x44\x67\x39\x74\x43\x67\x76\x4a','\x74\x4b\x44\x36\x72\x65\x69','\x75\x32\x66\x55\x7a\x67\x6a\x56\x45\x63\x62\x30\x7a\x78\x6e\x30\x69\x67\x6e\x56\x42\x77\x31\x48\x42\x4d\x71\x47\x43\x67\x66\x5a\x43\x32\x76\x4b','\x6c\x77\x72\x50\x43\x33\x72\x31\x44\x67\x4c\x53\x43\x59\x61\x4d\x6a\x49\x62\x43','\x44\x67\x39\x56\x42\x65\x4c\x55\x44\x4d\x39\x4a\x79\x78\x72\x50\x42\x32\x35\x5a','\x73\x77\x31\x48\x7a\x32\x75\x47\x79\x4e\x76\x50\x42\x67\x71\x47\x44\x67\x4c\x54\x7a\x77\x71\x47\x42\x33\x76\x30\x69\x67\x66\x4d\x44\x67\x76\x59\x69\x61','\x69\x59\x62\x6a\x42\x4e\x6e\x30\x79\x77\x58\x53\x69\x66\x62\x35\x44\x67\x48\x56\x42\x49\x62\x57\x79\x77\x6e\x52\x79\x77\x44\x4c\x43\x57','\x44\x4c\x6e\x55\x75\x4e\x65','\x43\x68\x6a\x56\x42\x78\x62\x30','\x43\x4d\x76\x58\x44\x77\x4c\x59\x7a\x75\x66\x30\x44\x67\x76\x5a\x44\x67\x66\x30\x41\x77\x39\x55','\x42\x4e\x76\x54\x79\x4d\x76\x59','\x76\x4e\x50\x75\x45\x65\x79','\x79\x32\x39\x55\x7a\x67\x65\x54\x7a\x4d\x39\x59\x7a\x32\x75','\x76\x32\x76\x6c\x73\x32\x57','\x6c\x49\x34\x55','\x43\x68\x6a\x56\x7a\x33\x6a\x4c\x43\x33\x6d','\x42\x77\x66\x55\x41\x77\x7a\x4c\x43\x33\x71','\x79\x4d\x76\x55\x79\x32\x48\x54\x79\x78\x6a\x52','\x41\x76\x44\x77\x45\x4e\x61','\x6c\x78\x7a\x4c\x42\x4e\x79\x47\x43\x68\x4c\x30\x41\x67\x39\x55','\x45\x4d\x72\x35\x71\x75\x47','\x79\x32\x4c\x30\x79\x78\x72\x50\x42\x32\x35\x64\x42\x33\x76\x55\x44\x61','\x79\x78\x72\x30\x7a\x78\x6e\x30\x79\x78\x72\x50\x42\x32\x35\x6f\x42\x32\x35\x4a\x7a\x71','\x43\x67\x66\x4a\x41\x32\x66\x4e\x7a\x78\x6d','\x69\x63\x61\x47\x69\x67\x66\x57\x44\x63\x31\x4e\x7a\x78\x71\x47\x41\x77\x35\x5a\x44\x67\x66\x53\x42\x63\x61\x54\x45\x73\x62\x57\x45\x78\x72\x4f\x42\x32\x34','\x42\x32\x7a\x4d','\x45\x66\x48\x6d\x72\x66\x65','\x79\x77\x6e\x30\x41\x77\x39\x55','\x75\x78\x76\x30\x77\x4d\x71','\x43\x32\x76\x4a\x43\x4d\x76\x30\x43\x57','\x6f\x78\x72\x64\x74\x4d\x76\x33\x76\x71','\x79\x77\x72\x4b\x72\x78\x7a\x4c\x42\x4e\x72\x6d\x41\x78\x6e\x30\x7a\x77\x35\x4c\x43\x47','\x75\x4c\x76\x6f\x69\x67\x31\x50\x79\x33\x6a\x56\x42\x77\x66\x54\x79\x4d\x65\x47\x41\x77\x35\x5a\x44\x67\x66\x53\x42\x63\x61\x54\x45\x73\x61\x54\x42\x49\x62\x49\x79\x78\x6e\x4c\x69\x61','\x44\x67\x39\x56\x42\x65\x6e\x48\x42\x67\x58\x5a','\x43\x67\x35\x54\x72\x67\x57','\x42\x77\x66\x55\x79\x77\x44\x4c\x75\x32\x66\x55\x7a\x67\x6a\x56\x45\x67\x76\x5a\x69\x68\x6a\x4c\x43\x78\x76\x50\x43\x4d\x76\x5a\x69\x67\x39\x57\x44\x67\x4c\x56\x42\x4e\x6d','\x44\x78\x6a\x53\x78\x32\x6e\x50\x44\x67\x66\x30\x41\x77\x39\x55','\x79\x32\x39\x55\x79\x33\x76\x59\x43\x4d\x76\x55\x79\x33\x4b','\x44\x32\x4c\x30\x41\x65\x76\x55\x44\x47','\x6c\x33\x79\x58\x6c\x33\x6e\x4c\x79\x78\x6a\x4a\x41\x63\x39\x4a\x42\x32\x35\x4d\x41\x77\x43','\x41\x33\x66\x56\x71\x76\x75','\x44\x67\x66\x55\x7a\x32\x58\x4c\x6c\x78\x6a\x56\x44\x78\x72\x4c\x43\x49\x31\x49\x7a\x77\x35\x4a\x41\x67\x31\x48\x43\x4d\x53','\x43\x32\x39\x59\x44\x61','\x72\x75\x35\x77\x69\x66\x62\x62\x76\x65\x47\x39\x69\x49\x39\x56\x43\x68\x71\x56\x79\x32\x39\x55\x7a\x67\x65\x56\x79\x4d\x4c\x55\x6f\x49\x72\x71\x71\x76\x72\x69\x69\x47','\x44\x32\x4c\x30\x41\x65\x6e\x53\x41\x77\x76\x55\x44\x61','\x75\x67\x66\x75\x44\x4b\x38','\x42\x77\x66\x4a\x41\x67\x4c\x55\x7a\x75\x4c\x4b','\x43\x67\x58\x48\x44\x67\x7a\x56\x43\x4d\x30','\x79\x32\x39\x55\x7a\x4d\x4c\x4b\x7a\x77\x35\x30\x41\x77\x66\x53','\x43\x4d\x76\x57\x42\x67\x66\x4a\x7a\x71','\x75\x4c\x76\x6f\x69\x68\x76\x57\x7a\x67\x66\x30\x7a\x73\x31\x48\x42\x68\x72\x4c\x43\x4d\x35\x48\x44\x67\x4c\x32\x7a\x78\x6d\x47\x6c\x73\x31\x50\x42\x4e\x6e\x30\x79\x77\x58\x53\x69\x63\x39\x31\x43\x33\x69\x56\x79\x4d\x4c\x55\x6c\x33\x62\x35\x44\x67\x48\x56\x42\x49\x62\x57\x45\x78\x72\x4f\x42\x32\x34\x47\x6c\x33\x76\x5a\x43\x49\x39\x49\x41\x77\x34\x56\x43\x68\x4c\x30\x41\x67\x39\x55','\x78\x4c\x54\x62\x6c\x76\x50\x48\x6c\x78\x4f\x57\x6c\x74\x4c\x44\x77\x30\x65\x54\x77\x4d\x65\x54\x45\x4a\x61\x54\x6f\x73\x35\x46\x6c\x76\x31\x37\x6d\x63\x57\x32\x6d\x33\x30\x4b','\x43\x33\x72\x59\x41\x77\x35\x4e','\x79\x77\x72\x4b\x75\x67\x66\x4a\x41\x32\x66\x4e\x7a\x78\x6d','\x79\x4e\x76\x50\x42\x67\x72\x62\x43\x4d\x44\x5a','\x41\x78\x72\x4c\x43\x4d\x66\x30\x41\x77\x39\x55\x43\x57','\x43\x4d\x6e\x4a\x44\x4e\x6d','\x43\x32\x76\x48\x43\x4d\x6e\x4f\x75\x67\x66\x59\x79\x77\x31\x5a','\x44\x31\x72\x36\x44\x67\x34','\x7a\x67\x76\x5a\x44\x68\x6a\x56\x45\x71','\x45\x78\x4c\x75\x74\x68\x43','\x79\x32\x66\x57\x79\x77\x6a\x50\x42\x67\x4c\x30\x41\x77\x76\x5a','\x79\x32\x39\x5a\x44\x66\x76\x5a\x7a\x61','\x42\x32\x35\x71\x43\x4d\x39\x4e\x43\x4d\x76\x5a\x43\x57','\x79\x32\x39\x4b\x7a\x78\x47','\x43\x4d\x76\x5a\x43\x67\x39\x55\x43\x32\x76\x5a','\x42\x4d\x66\x54\x7a\x71','\x79\x78\x62\x50\x73\x32\x76\x35','\x44\x32\x76\x49\x75\x32\x76\x48\x43\x4d\x6e\x4f','\x42\x76\x7a\x5a\x76\x65\x57','\x79\x32\x39\x54\x43\x68\x76\x30\x7a\x75\x4c\x4b','\x44\x67\x66\x55\x7a\x32\x58\x4c\x6c\x77\x6e\x56\x42\x4e\x72\x59\x42\x32\x57\x54\x43\x67\x58\x48\x42\x4d\x75','\x69\x59\x62\x6a\x42\x4e\x6e\x30\x79\x77\x58\x53\x69\x68\x6e\x35\x43\x33\x72\x4c\x42\x73\x62\x57\x79\x77\x6e\x52\x79\x77\x44\x4c\x43\x57','\x7a\x67\x4c\x4e\x7a\x78\x6e\x30','\x44\x67\x76\x5a\x44\x68\x6e\x71\x79\x78\x6e\x5a\x7a\x77\x71','\x42\x4d\x39\x64\x79\x77\x6e\x4f\x7a\x71','\x43\x67\x66\x59\x43\x32\x75','\x7a\x4e\x50\x79\x73\x4d\x38','\x6e\x4a\x47\x5a\x6d\x74\x66\x4a\x44\x75\x54\x62\x45\x4e\x79','\x42\x77\x39\x4b\x7a\x77\x57','\x42\x67\x66\x49\x7a\x77\x58\x5a','\x45\x66\x6e\x75\x73\x33\x75','\x7a\x4d\x76\x30\x79\x32\x48\x6a\x42\x78\x62\x53','\x44\x67\x39\x6d\x42\x33\x44\x4c\x43\x4b\x6e\x48\x43\x32\x75','\x71\x78\x76\x30\x41\x67\x39\x59\x41\x78\x50\x48\x44\x67\x4c\x56\x42\x47','\x7a\x78\x48\x4c\x79\x57','\x42\x77\x66\x34','\x44\x78\x62\x4b\x79\x78\x72\x4c','\x79\x4d\x39\x4b\x45\x71','\x41\x67\x66\x59\x42\x4d\x76\x5a\x43\x30\x4c\x4b','\x69\x63\x79\x4d\x69\x66\x57','\x6c\x33\x79\x58\x6c\x32\x4c\x54\x79\x77\x44\x4c\x43\x57','\x7a\x32\x76\x55\x7a\x78\x6a\x48\x44\x67\x76\x65\x42\x32\x6e\x52\x7a\x78\x6a\x4d\x41\x77\x58\x4c','\x71\x4d\x44\x64\x76\x32\x75','\x79\x77\x50\x48\x44\x32\x57','\x43\x4d\x76\x5a\x43\x67\x39\x55\x43\x32\x75','\x43\x32\x7a\x41\x72\x66\x4b','\x7a\x4e\x6a\x56\x42\x75\x76\x55\x44\x68\x6a\x50\x7a\x78\x6d','\x42\x67\x4c\x5a\x44\x61','\x73\x4d\x66\x4c\x79\x78\x61','\x71\x4d\x76\x48\x43\x4d\x76\x59\x69\x64\x58\x59\x7a\x77\x72\x48\x79\x33\x72\x4c\x7a\x64\x34','\x76\x30\x39\x73\x73\x30\x72\x6a\x75\x49\x61','\x43\x32\x66\x55\x7a\x67\x6a\x56\x45\x65\x6a\x48\x79\x32\x54\x4c\x42\x4d\x71','\x6c\x77\x6d\x47','\x44\x67\x76\x34\x44\x63\x39\x4c\x44\x4d\x76\x55\x44\x63\x31\x5a\x44\x68\x6a\x4c\x79\x77\x30','\x43\x32\x66\x55\x7a\x67\x6a\x56\x45\x61','\x43\x32\x76\x5a\x43\x32\x4c\x56\x42\x47','\x79\x77\x6a\x56\x43\x4e\x71','\x44\x77\x6a\x31\x42\x4e\x72\x31\x6f\x4a\x69\x59\x6c\x4a\x61\x30','\x43\x4b\x58\x70\x72\x66\x47','\x72\x68\x6a\x50\x74\x68\x6d','\x76\x78\x44\x54\x43\x77\x38','\x78\x63\x72\x43\x45\x57','\x7a\x77\x35\x32','\x43\x33\x72\x4b\x7a\x78\x6a\x59','\x79\x78\x76\x30\x42\x57','\x44\x67\x76\x62\x72\x77\x34','\x7a\x67\x76\x53\x7a\x78\x72\x4c','\x79\x4e\x76\x64\x77\x78\x43','\x41\x4d\x39\x50\x42\x47','\x6e\x4c\x76\x75\x75\x4b\x39\x79\x74\x57','\x43\x33\x72\x59\x41\x77\x35\x4e\x41\x77\x7a\x35','\x71\x75\x4c\x55\x72\x76\x79','\x44\x32\x4c\x30\x41\x66\x6e\x4c\x79\x33\x6a\x4c\x44\x68\x6d','\x69\x59\x62\x6a\x42\x4e\x6e\x30\x79\x77\x58\x53\x69\x67\x31\x50\x79\x33\x6a\x56\x42\x77\x66\x54\x79\x4d\x65\x47\x79\x77\x35\x4b\x69\x67\x6e\x56\x42\x4d\x72\x48\x69\x68\x62\x48\x79\x32\x54\x48\x7a\x32\x76\x5a','\x44\x67\x66\x55\x7a\x32\x58\x4c\x6c\x78\x6e\x48\x42\x4d\x72\x49\x42\x33\x47','\x41\x4e\x6e\x56\x42\x47','\x75\x4c\x6e\x49\x77\x4b\x69','\x7a\x78\x7a\x48\x42\x66\x38','\x43\x33\x72\x4b\x42\x33\x76\x30','\x69\x59\x62\x64\x44\x78\x6e\x30\x42\x32\x30\x47\x79\x32\x39\x54\x42\x77\x66\x55\x7a\x68\x6d','\x43\x32\x66\x55\x7a\x67\x6a\x56\x45\x65\x4c\x4b','\x44\x32\x39\x59\x41\x32\x72\x50\x43\x47','\x44\x68\x6a\x48\x42\x4e\x6e\x57\x42\x33\x6a\x30','\x43\x68\x76\x5a\x41\x61','\x6d\x74\x61\x32\x6d\x5a\x43\x32\x71\x32\x6e\x4b\x7a\x32\x6e\x74','\x43\x67\x39\x53\x41\x77\x6e\x35','\x69\x63\x61\x47\x69\x67\x66\x57\x44\x63\x31\x4e\x7a\x78\x71\x47\x41\x77\x35\x5a\x44\x67\x66\x53\x42\x63\x61\x54\x45\x73\x61\x54\x6c\x77\x35\x56\x6c\x77\x4c\x55\x43\x33\x72\x48\x42\x67\x57\x54\x43\x4d\x76\x4a\x42\x32\x31\x54\x7a\x77\x35\x4b\x43\x59\x61','\x42\x77\x66\x55\x79\x77\x44\x4c\x75\x32\x66\x55\x7a\x67\x6a\x56\x45\x67\x76\x5a\x69\x68\x62\x56\x42\x67\x4c\x4a\x45\x73\x62\x54\x44\x78\x6e\x30\x69\x67\x6a\x4c\x69\x68\x6e\x31\x43\x68\x62\x53\x41\x77\x76\x4b\x69\x67\x6a\x35\x69\x68\x72\x4f\x7a\x73\x62\x30\x42\x32\x39\x53\x69\x67\x48\x56\x43\x33\x71','\x79\x4d\x39\x4b\x45\x76\x39\x30\x7a\x77\x31\x57\x42\x67\x66\x30\x7a\x71','\x72\x76\x6e\x32\x41\x65\x43','\x76\x77\x35\x5a\x44\x78\x62\x57\x42\x33\x6a\x30\x7a\x77\x71\x47\x42\x77\x66\x55\x79\x77\x44\x4c\x75\x32\x66\x55\x7a\x67\x6a\x56\x45\x67\x76\x5a\x69\x67\x66\x4a\x44\x67\x4c\x56\x42\x4a\x4f\x47','\x43\x33\x76\x4a\x79\x32\x76\x5a\x43\x57','\x42\x77\x4c\x55','\x7a\x33\x76\x53\x76\x78\x75','\x43\x32\x76\x48\x43\x4d\x6e\x4f\x75\x4d\x76\x58\x44\x77\x76\x5a\x44\x68\x6d','\x73\x77\x31\x48\x7a\x32\x75\x47\x79\x4e\x76\x50\x42\x67\x71\x47\x7a\x4d\x66\x50\x42\x67\x76\x4b','\x79\x33\x6a\x4c\x79\x78\x72\x4c\x76\x32\x4c\x30\x41\x65\x6e\x56\x42\x33\x6a\x4b\x41\x77\x35\x48\x44\x67\x39\x59','\x44\x4d\x76\x59\x41\x77\x7a\x35','\x43\x32\x48\x48\x6d\x4a\x75\x32','\x7a\x67\x4c\x77\x71\x77\x4b','\x71\x75\x48\x63\x72\x30\x4b','\x45\x67\x54\x4b\x41\x78\x79','\x79\x4e\x76\x50\x42\x67\x72\x64\x42\x32\x35\x30\x43\x4d\x39\x53\x75\x67\x58\x48\x42\x4d\x76\x6e\x79\x33\x62\x64\x42\x32\x35\x4d\x41\x77\x43\x36\x69\x68\x62\x53\x79\x78\x72\x4d\x42\x33\x6a\x54\x76\x78\x6a\x53\x69\x67\x4c\x5a\x69\x68\x6a\x4c\x43\x78\x76\x50\x43\x4d\x76\x4b','\x43\x68\x6a\x56\x7a\x4d\x4c\x53\x7a\x71','\x73\x66\x6a\x34\x79\x4b\x4b','\x79\x78\x6a\x30\x41\x77\x7a\x48\x79\x33\x72\x5a','\x43\x32\x35\x48\x43\x68\x6e\x4f\x42\x33\x72\x6a\x7a\x61','\x41\x77\x31\x31\x42\x61','\x79\x4b\x44\x74\x43\x75\x30','\x75\x32\x66\x55\x7a\x67\x6a\x56\x45\x63\x62\x5a\x7a\x78\x6e\x5a\x41\x77\x39\x55\x69\x67\x7a\x48\x41\x77\x58\x4c\x7a\x61','\x71\x75\x76\x53\x45\x75\x65','\x43\x67\x58\x48\x44\x67\x7a\x56\x43\x4d\x31\x76\x43\x4d\x57','\x75\x4c\x76\x6f\x69\x61','\x69\x63\x61\x47\x69\x68\x76\x57\x7a\x67\x66\x30\x7a\x73\x31\x48\x42\x68\x72\x4c\x43\x4d\x35\x48\x44\x67\x4c\x32\x7a\x78\x6d\x47\x6c\x73\x31\x50\x42\x4e\x6e\x30\x79\x77\x58\x53\x69\x63\x39\x31\x43\x33\x69\x56\x79\x4d\x4c\x55\x6c\x33\x62\x35\x44\x67\x48\x56\x42\x4a\x6d\x47\x43\x68\x4c\x30\x41\x67\x39\x55\x6d\x59\x61\x56\x44\x78\x6e\x59\x6c\x32\x6a\x50\x42\x49\x39\x57\x45\x78\x72\x4f\x42\x32\x34','\x72\x4c\x6a\x70\x74\x73\x61','\x6e\x74\x65\x57\x6e\x5a\x71\x34\x44\x77\x35\x79\x74\x65\x39\x6e','\x42\x31\x4c\x31\x7a\x4d\x65','\x71\x4d\x76\x48\x43\x4d\x76\x59\x69\x61','\x7a\x32\x76\x30','\x42\x77\x66\x57','\x41\x77\x35\x30\x7a\x77\x58\x53\x41\x77\x44\x4c\x42\x4d\x6e\x4c','\x43\x32\x76\x5a\x43\x32\x4c\x56\x42\x4b\x4c\x4b\x75\x68\x6a\x4c\x7a\x4d\x4c\x34','\x42\x4b\x6e\x4c\x44\x77\x43','\x43\x4d\x76\x4a\x42\x32\x35\x4a\x41\x77\x58\x4c\x76\x32\x39\x59\x41\x33\x6e\x57\x79\x77\x6e\x4c','\x76\x67\x76\x59\x42\x77\x4c\x55\x79\x77\x57\x47\x43\x32\x66\x55\x7a\x67\x6a\x56\x45\x63\x62\x59\x7a\x78\x6e\x31\x42\x68\x71\x47\x42\x32\x6a\x5a\x7a\x78\x6a\x32\x7a\x77\x71','\x76\x76\x6e\x66\x75\x49\x61','\x7a\x77\x35\x4a\x42\x32\x72\x4c'];a0_0x2a31=function(){return _0x34f34d;};return a0_0x2a31();}function benchmarkCitationCount(_0x5cb168){const _0x28bbd8=a0_0xde38a2,_0x26831d={'\x6d\x6d\x45\x73\x69':function(_0x32a825,_0x41cbed){return _0x32a825(_0x41cbed);},'\x62\x75\x43\x59\x77':function(_0x470ec3,_0x3b784c){return _0x470ec3===_0x3b784c;},'\x42\x55\x6a\x4a\x42':_0x28bbd8(0x23f)},_0x115562=_0x5cb168;if(_0x26831d[_0x28bbd8(0x2ab)](typeof _0x115562['\x63\x69\x74\x61\x74\x69\x6f\x6e\x43\x6f\x75\x6e\x74'],_0x28bbd8(0x23f)))return Math[_0x28bbd8(0x28b)](0x0,_0x115562[_0x28bbd8(0x24a)]);if(typeof _0x115562[_0x28bbd8(0x30b)]?.['\x63\x69\x74\x61\x74\x69\x6f\x6e\x43\x6f\x75\x6e\x74']===_0x26831d[_0x28bbd8(0x1db)])return Math[_0x28bbd8(0x28b)](0x0,_0x115562['\x6d\x65\x74\x61\x64\x61\x74\x61'][_0x28bbd8(0x24a)]);if(Array[_0x28bbd8(0x2f3)](_0x115562[_0x28bbd8(0x1ef)]))return _0x115562[_0x28bbd8(0x1ef)][_0x28bbd8(0x231)];if(Array['\x69\x73\x41\x72\x72\x61\x79'](_0x115562[_0x28bbd8(0x1b3)]))return _0x115562['\x61\x6e\x6e\x6f\x74\x61\x74\x69\x6f\x6e\x73'][_0x28bbd8(0x1a6)](_0x28252c=>{const _0xfdc368=_0x28bbd8,_0x3e06aa=_0x28252c;return _0x3e06aa['\x74\x79\x70\x65']===_0xfdc368(0x259)||_0x26831d['\x6d\x6d\x45\x73\x69'](Boolean,_0x3e06aa[_0xfdc368(0x259)]);})['\x6c\x65\x6e\x67\x74\x68'];return 0x0;}function backendType(_0x31d2bf){const _0x2b9813=a0_0xde38a2,_0x3a399b={'\x45\x53\x76\x68\x47':function(_0x3de640,_0x285790){return _0x3de640===_0x285790;},'\x71\x43\x6f\x53\x49':_0x2b9813(0x1c1),'\x61\x6a\x61\x77\x6c':_0x2b9813(0x1a1)};if(_0x3a399b[_0x2b9813(0x2c1)](_0x31d2bf,_0x2b9813(0x1c1)))return _0x3a399b['\x71\x43\x6f\x53\x49'];if(_0x31d2bf==='\x63\x6f\x64\x65\x78')return _0x2b9813(0x275);if(_0x31d2bf===_0x3a399b[_0x2b9813(0x293)])return _0x2b9813(0x1a1);return _0x2b9813(0x1a1);}function safeId(_0x33c87f){const _0x5e18a1=a0_0xde38a2;return _0x33c87f[_0x5e18a1(0x288)]()['\x72\x65\x70\x6c\x61\x63\x65'](/[^a-z0-9_-]+/g,'\x5f')[_0x5e18a1(0x266)](/^_+|_+$/g,'')[_0x5e18a1(0x22e)](0x0,0x78)||_0x5e18a1(0x1d7);}async function cleanupBox(_0x512a9d){const _0x1d2975=a0_0xde38a2;if(_0x512a9d[_0x1d2975(0x2aa)])await _0x512a9d[_0x1d2975(0x2aa)]();else{if(_0x512a9d['\x64\x65\x73\x74\x72\x6f\x79'])await _0x512a9d[_0x1d2975(0x270)]();}}function stripUndefined(_0x4c90e4){const _0x10b6da=a0_0xde38a2,_0x4ec177={'\x46\x67\x69\x61\x76':function(_0x39dca2,_0x18ae02){return _0x39dca2!==_0x18ae02;},'\x77\x53\x44\x4b\x56':_0x10b6da(0x307)};if(Array[_0x10b6da(0x2f3)](_0x4c90e4))return _0x4c90e4[_0x10b6da(0x2df)](stripUndefined);if(!_0x4c90e4||_0x4ec177[_0x10b6da(0x2f4)](typeof _0x4c90e4,_0x4ec177['\x77\x53\x44\x4b\x56']))return _0x4c90e4;return Object[_0x10b6da(0x296)](Object[_0x10b6da(0x1c0)](_0x4c90e4)[_0x10b6da(0x1a6)](([,_0x1c8ea9])=>_0x1c8ea9!==void 0x0)['\x6d\x61\x70'](([_0x36fbb4,_0x5a562c])=>[_0x36fbb4,stripUndefined(_0x5a562c)]));}export{a0_0x4f47ad as AuthError,CONTROL_PLANE_MCP_SERVER_NAME,a0_0x1da9bc as CapabilityError,a0_0x3f9082 as CollaborationClient,a0_0x410818 as CollaborationFileBridge,a0_0x541742 as DEFAULT_SANDBOX_SIZE,Image,ImageBuilder,a0_0x54cd96 as IntelligenceClient,a0_0x5efc71 as InteractiveSessionHandle,MANAGE_SANDBOXES_PARAMETERS,MANAGE_SANDBOXES_TOOL_NAME,a0_0x5a6e40 as NetworkError,a0_0x4fbf65 as NotFoundError,a0_0x4498be as PartialFailureError,a0_0x2d7ed1 as QuotaError,SANDBOX_MCP_SERVER_NAME,a0_0x352044 as SANDBOX_SIZE_PRESETS,a0_0xb88ea1 as SANDBOX_SIZE_PRESET_NAMES,a0_0x9c8379 as Sandbox,a0_0x9c8379 as SandboxClient,a0_0x400b6f as SandboxError,a0_0x2774b2 as SandboxFleet,a0_0x4c26a6 as SandboxFleetClient,a0_0x228343 as SandboxInstance,a0_0x69180c as SandboxSession,a0_0x4ef298 as ServerError,a0_0x39a4ce as StateError,a0_0x595276 as TangleSandboxClient,a0_0x10dacb as TimeoutError,a0_0x229976 as ValidationError,a0_0x36c28f as applySandboxEventText,a0_0x2397e9 as buildCollaborationDocumentId,buildControlPlaneMcpConfig,buildSandboxMcpConfig,buildTangleRouterEvalMatrixRequest,buildTangleRouterResponsesWebSearchRequest,buildTangleRouterSearchBackend,buildTangleRouterSearchProfile,a0_0x25e1a4 as buildTraceExportPayload,a0_0x4e9137 as collectAgentResponseText,createConfidentialSandbox,createManageSandboxesTool,defineAgentProfile,defineGitHubResource,defineInlineResource,a0_0x102db3 as exportTraceBundle,fetchTangleRouterSearchConfig,generateAttestationNonce,generateDockerfile,a0_0x50daa3 as getSandboxEventText,mergeAgentProfiles,a0_0x5aa1a2 as normalizeCollaborationPath,a0_0x25abd7 as normalizeRuntimeBackendConfig,a0_0xab5666 as otelTraceIdForTangleTrace,a0_0xa1d735 as parseCollaborationDocumentId,a0_0x494344 as parseSSEStream,a0_0x2b4d40 as resolveSandboxResources,runTangleRouterEvalMatrixInSandbox,a0_0x3cc59f as sandboxResourcesForSize,a0_0x2c8505 as serializeForSidecar,startTeeAttestationHeartbeat,a0_0x305416 as toOtelJson};
1
+ import { a as collectAgentResponseText, c as buildTraceExportPayload, d as toOtelJson, h as serializeForSidecar, i as applySandboxEventText, l as exportTraceBundle, m as normalizeRuntimeBackendConfig, n as SandboxSession, o as getSandboxEventText, p as parseSSEStream, r as InteractiveSessionHandle, t as SandboxInstance, u as otelTraceIdForTangleTrace } from "./sandbox-joKtQ5y3.js";
2
+ import { a as PartialFailureError, c as ServerError, d as ValidationError, i as NotFoundError, l as StateError, n as CapabilityError, o as QuotaError, r as NetworkError, s as SandboxError, t as AuthError, u as TimeoutError } from "./errors-DZsfJUuc.js";
3
+ import { a as DEFAULT_SANDBOX_SIZE, c as resolveSandboxResources, i as SandboxFleetClient, l as sandboxResourcesForSize, n as SandboxClient, o as SANDBOX_SIZE_PRESETS, r as SandboxFleet, s as SANDBOX_SIZE_PRESET_NAMES, t as IntelligenceClient } from "./client-BBZ7YLmq.js";
4
+ import { a as CollaborationClient, i as parseCollaborationDocumentId, n as buildCollaborationDocumentId, r as normalizeCollaborationPath, t as CollaborationFileBridge } from "./collaboration-BxlfZ2Uh.js";
5
+ import { t as TangleSandboxClient } from "./tangle-DM0o66lW.js";
6
+ import { defineAgentProfile, defineGitHubResource, defineInlineResource, mergeAgentProfiles } from "@tangle-network/agent-interface";
7
+ //#region src/confidential.ts
8
+ function generateAttestationNonce(bytes = 32) {
9
+ const buffer = new Uint8Array(bytes);
10
+ if (typeof globalThis.crypto !== "undefined" && typeof globalThis.crypto.getRandomValues === "function") globalThis.crypto.getRandomValues(buffer);
11
+ else throw new Error("Secure random nonce generation is not available");
12
+ return Array.from(buffer).map((byte) => byte.toString(16).padStart(2, "0")).join("");
13
+ }
14
+ async function createConfidentialSandbox(client, options) {
15
+ const attestationNonce = options.attestationNonce === "auto" || options.requireAttestation && !options.attestationNonce && !options.confidential.attestationNonce ? generateAttestationNonce() : options.attestationNonce ?? options.confidential.attestationNonce;
16
+ const sandbox = await client.create({
17
+ ...options,
18
+ confidential: {
19
+ ...options.confidential,
20
+ ...attestationNonce ? { attestationNonce } : {},
21
+ attestationRefresh: options.confidential.attestationRefresh || Boolean(attestationNonce)
22
+ }
23
+ });
24
+ let attestation = attestationFromMetadata(sandbox.metadata);
25
+ if (!attestation) try {
26
+ attestation = (await sandbox.getTeeAttestation(attestationNonce ? { attestationNonce } : void 0)).attestation;
27
+ } catch (error) {
28
+ if (options.requireAttestation) throw error;
29
+ }
30
+ if (options.requireAttestation && !attestation) throw new Error("TEE attestation was required but no evidence was returned");
31
+ return {
32
+ sandbox,
33
+ attestation,
34
+ attestationNonce
35
+ };
36
+ }
37
+ function attestationFromMetadata(metadata) {
38
+ const raw = metadata?.teeAttestationJson;
39
+ if (typeof raw !== "string" || raw.trim() === "") return void 0;
40
+ try {
41
+ return JSON.parse(raw);
42
+ } catch {
43
+ return;
44
+ }
45
+ }
46
+ //#endregion
47
+ //#region src/attestation-heartbeat.ts
48
+ /**
49
+ * Periodically requests nonce-bound TEE attestations for a running sandbox.
50
+ *
51
+ * This proves freshness/liveness of the attested sandbox endpoint. It does not
52
+ * by itself sign every computation result; callers that need result binding
53
+ * should include a result/session digest in the nonce preimage before asking
54
+ * the runtime for a quote.
55
+ */
56
+ function startTeeAttestationHeartbeat(sandbox, options = {}) {
57
+ const intervalMs = options.intervalMs ?? 6e4;
58
+ let stopped = false;
59
+ let failures = 0;
60
+ let sequence = 0;
61
+ let latest;
62
+ let timer;
63
+ let resolveDone;
64
+ const done = new Promise((resolve) => {
65
+ resolveDone = resolve;
66
+ });
67
+ const stop = () => {
68
+ if (stopped) return;
69
+ stopped = true;
70
+ if (timer) clearTimeout(timer);
71
+ resolveDone?.();
72
+ };
73
+ const ping = async () => {
74
+ if (stopped || options.signal?.aborted) throw new Error("TEE attestation heartbeat is stopped");
75
+ const nonce = generateAttestationNonce();
76
+ const response = await sandbox.getTeeAttestation({ attestationNonce: nonce });
77
+ if (response.attestationNonce && response.attestationNonce !== nonce) throw new Error("TEE attestation response nonce did not match challenge");
78
+ const sample = {
79
+ sequence: ++sequence,
80
+ nonce,
81
+ response: {
82
+ ...response,
83
+ attestationNonce: response.attestationNonce ?? nonce
84
+ },
85
+ checkedAt: /* @__PURE__ */ new Date()
86
+ };
87
+ await options.verify?.(sample);
88
+ latest = sample;
89
+ options.onSuccess?.(sample);
90
+ return sample;
91
+ };
92
+ const schedule = () => {
93
+ if (stopped || options.signal?.aborted) {
94
+ stop();
95
+ return;
96
+ }
97
+ timer = setTimeout(() => {
98
+ loop();
99
+ }, intervalMs);
100
+ };
101
+ const loop = async () => {
102
+ try {
103
+ await ping();
104
+ schedule();
105
+ } catch (error) {
106
+ failures += 1;
107
+ options.onFailure?.(error);
108
+ if (options.continueOnFailure) schedule();
109
+ else stop();
110
+ }
111
+ };
112
+ options.signal?.addEventListener("abort", stop, { once: true });
113
+ if (options.immediate === false) schedule();
114
+ else loop();
115
+ return {
116
+ stop,
117
+ ping,
118
+ get stopped() {
119
+ return stopped;
120
+ },
121
+ get failures() {
122
+ return failures;
123
+ },
124
+ get latest() {
125
+ return latest;
126
+ },
127
+ done
128
+ };
129
+ }
130
+ //#endregion
131
+ //#region src/image.ts
132
+ function isFetchClient(client) {
133
+ return typeof client.fetch === "function";
134
+ }
135
+ function requestImageBuild(client, init) {
136
+ if (isFetchClient(client)) return client.fetch("/v1/images", init);
137
+ const headers = new Headers(init.headers);
138
+ headers.set("Authorization", `Bearer ${client.apiKey}`);
139
+ return fetch(`${client.baseUrl.replace(/\/+$/, "")}/v1/images`, {
140
+ ...init,
141
+ headers
142
+ });
143
+ }
144
+ /**
145
+ * Represents a built or existing container image.
146
+ */
147
+ var Image = class Image {
148
+ constructor(id, tag, digest, spec) {
149
+ this.id = id;
150
+ this.tag = tag;
151
+ this.digest = digest;
152
+ this.spec = spec;
153
+ }
154
+ /**
155
+ * Start building a new image.
156
+ *
157
+ * @param baseImage Base Docker image (default: "ubuntu:22.04")
158
+ * @returns A new ImageBuilder instance
159
+ *
160
+ * @example
161
+ * ```typescript
162
+ * const builder = Image.create("python:3.11-slim");
163
+ * ```
164
+ */
165
+ static create(baseImage = "ubuntu:22.04") {
166
+ return new ImageBuilder({ baseImage });
167
+ }
168
+ /**
169
+ * Reference an existing image by ID.
170
+ *
171
+ * @param imageId The image ID
172
+ * @returns An Image instance
173
+ *
174
+ * @example
175
+ * ```typescript
176
+ * const image = Image.fromId("sha256:abc123...");
177
+ * const box = await client.create({ image: image.id });
178
+ * ```
179
+ */
180
+ static fromId(imageId) {
181
+ return new Image(imageId, imageId.startsWith("sha256:") ? `tangle-image:${imageId.slice(7, 19)}` : imageId, imageId);
182
+ }
183
+ /**
184
+ * Create an image builder from a Dockerfile.
185
+ *
186
+ * @param dockerfile Dockerfile path or content
187
+ * @param context Build context directory
188
+ * @returns A new ImageBuilder instance
189
+ *
190
+ * @example
191
+ * ```typescript
192
+ * const builder = Image.fromDockerfile("./Dockerfile", "./");
193
+ * ```
194
+ */
195
+ static fromDockerfile(dockerfile, context) {
196
+ return new ImageBuilder({
197
+ baseImage: "scratch",
198
+ dockerfile,
199
+ dockerContext: context || "."
200
+ });
201
+ }
202
+ /**
203
+ * Create an Image from a build result.
204
+ * @internal
205
+ */
206
+ static fromBuildResult(result) {
207
+ return new Image(result.id, result.tag, result.digest, result.spec);
208
+ }
209
+ /**
210
+ * Convert to JSON.
211
+ */
212
+ toJSON() {
213
+ return {
214
+ id: this.id,
215
+ tag: this.tag,
216
+ digest: this.digest,
217
+ spec: this.spec
218
+ };
219
+ }
220
+ };
221
+ /**
222
+ * Chainable builder for constructing custom container images.
223
+ *
224
+ * @example
225
+ * ```typescript
226
+ * const image = await Image.create()
227
+ * .python("3.11")
228
+ * .addPackages(["torch", "transformers"])
229
+ * .addCommands(["apt-get install -y ffmpeg"])
230
+ * .withEnv({ HF_HOME: "/models" })
231
+ * .withSecrets(["HF_TOKEN"])
232
+ * .build({ client });
233
+ * ```
234
+ */
235
+ var ImageBuilder = class {
236
+ spec;
237
+ clientConfig;
238
+ /** @internal */
239
+ constructor(initialSpec) {
240
+ this.spec = {
241
+ baseImage: initialSpec.baseImage || "ubuntu:22.04",
242
+ ...initialSpec
243
+ };
244
+ }
245
+ /**
246
+ * Configure Python version.
247
+ *
248
+ * @param version Python version (e.g., "3.11", "3.10")
249
+ */
250
+ python(version) {
251
+ this.spec.pythonVersion = version;
252
+ return this;
253
+ }
254
+ /**
255
+ * Add Python packages via pip.
256
+ *
257
+ * @param packages Package names with optional versions
258
+ *
259
+ * @example
260
+ * ```typescript
261
+ * .addPackages(["numpy>=1.21", "pandas", "scikit-learn"])
262
+ * ```
263
+ */
264
+ addPackages(packages) {
265
+ this.spec.packages = [...this.spec.packages || [], ...packages];
266
+ return this;
267
+ }
268
+ /**
269
+ * Add packages from requirements file.
270
+ *
271
+ * @param requirementsPath Path to requirements.txt
272
+ */
273
+ addPackagesFromFile(requirementsPath) {
274
+ this.spec.commands = [...this.spec.commands || [], `pip install -r ${requirementsPath}`];
275
+ return this;
276
+ }
277
+ /**
278
+ * Add shell commands to run during build.
279
+ *
280
+ * @param commands Commands to execute
281
+ *
282
+ * @example
283
+ * ```typescript
284
+ * .addCommands([
285
+ * "apt-get update",
286
+ * "apt-get install -y ffmpeg libsm6"
287
+ * ])
288
+ * ```
289
+ */
290
+ addCommands(commands) {
291
+ this.spec.commands = [...this.spec.commands || [], ...commands];
292
+ return this;
293
+ }
294
+ /**
295
+ * Add system packages via apt-get.
296
+ *
297
+ * @param packages Package names
298
+ */
299
+ addAptPackages(packages) {
300
+ this.spec.aptPackages = [...this.spec.aptPackages || [], ...packages];
301
+ return this;
302
+ }
303
+ /**
304
+ * Set environment variables.
305
+ *
306
+ * @param env Key-value pairs
307
+ *
308
+ * @example
309
+ * ```typescript
310
+ * .withEnv({ HF_HOME: "/models", PYTHONUNBUFFERED: "1" })
311
+ * ```
312
+ */
313
+ withEnv(env) {
314
+ this.spec.env = {
315
+ ...this.spec.env,
316
+ ...env
317
+ };
318
+ return this;
319
+ }
320
+ /**
321
+ * Inject secrets during build.
322
+ * Secrets are retrieved from the secret store.
323
+ *
324
+ * @param secretNames Names of secrets to inject
325
+ *
326
+ * @example
327
+ * ```typescript
328
+ * .withSecrets(["HF_TOKEN", "AWS_ACCESS_KEY"])
329
+ * ```
330
+ */
331
+ withSecrets(secretNames) {
332
+ this.spec.secrets = [...this.spec.secrets || [], ...secretNames];
333
+ return this;
334
+ }
335
+ /**
336
+ * Configure conda environment.
337
+ *
338
+ * @param packages Conda packages
339
+ * @param channels Conda channels (default: ["conda-forge"])
340
+ *
341
+ * @example
342
+ * ```typescript
343
+ * .conda(["pytorch", "torchvision"], ["pytorch", "conda-forge"])
344
+ * ```
345
+ */
346
+ conda(packages, channels) {
347
+ this.spec.conda = {
348
+ packages: [...this.spec.conda?.packages || [], ...packages],
349
+ channels: channels || this.spec.conda?.channels || ["conda-forge"]
350
+ };
351
+ return this;
352
+ }
353
+ /**
354
+ * Set working directory.
355
+ *
356
+ * @param dir Working directory path
357
+ */
358
+ workdir(dir) {
359
+ this.spec.workdir = dir;
360
+ return this;
361
+ }
362
+ /**
363
+ * Set user to run as.
364
+ *
365
+ * @param user Username or UID
366
+ */
367
+ user(user) {
368
+ this.spec.user = user;
369
+ return this;
370
+ }
371
+ /**
372
+ * Add build arguments.
373
+ *
374
+ * @param args Build arguments
375
+ */
376
+ buildArgs(args) {
377
+ this.spec.buildArgs = {
378
+ ...this.spec.buildArgs,
379
+ ...args
380
+ };
381
+ return this;
382
+ }
383
+ /**
384
+ * Add image labels.
385
+ *
386
+ * @param labels Image labels
387
+ */
388
+ labels(labels) {
389
+ this.spec.labels = {
390
+ ...this.spec.labels,
391
+ ...labels
392
+ };
393
+ return this;
394
+ }
395
+ /**
396
+ * Get the image specification without building.
397
+ *
398
+ * @returns The current ImageSpec
399
+ */
400
+ toSpec() {
401
+ return { ...this.spec };
402
+ }
403
+ /**
404
+ * Compute the content-addressed ID for this spec.
405
+ *
406
+ * Uses Web Crypto when available (browsers and Node 22+), falling
407
+ * back to a lazy `import("node:crypto")` on older server runtimes.
408
+ * Works in every JavaScript environment the SDK supports.
409
+ *
410
+ * @returns SHA-256 hash of the normalized spec as a hex string.
411
+ *
412
+ * **Breaking change (v0.0.3):** `computeId()` was previously
413
+ * synchronous. Callers must now `await` the result. A Node-only sync
414
+ * variant was considered and dropped: it would have either required
415
+ * Node 22.3+ (breaking Node 18/20 consumers) or re-introduced the
416
+ * top-level `node:crypto` import that blanks every browser page
417
+ * transitively importing the SDK root. If you genuinely need the
418
+ * hash synchronously in a Node-only context, compute it yourself
419
+ * from `builder.toSpec()` with `JSON.stringify(spec, Object.keys(spec).sort())`.
420
+ */
421
+ async computeId() {
422
+ const normalized = JSON.stringify(this.spec, Object.keys(this.spec).sort());
423
+ const webSubtle = globalThis.crypto?.subtle;
424
+ if (webSubtle) {
425
+ const digest = await webSubtle.digest("SHA-256", new TextEncoder().encode(normalized));
426
+ return Array.from(new Uint8Array(digest)).map((b) => b.toString(16).padStart(2, "0")).join("");
427
+ }
428
+ const { createHash } = await import("node:crypto");
429
+ return createHash("sha256").update(normalized).digest("hex");
430
+ }
431
+ /**
432
+ * Configure client for API access.
433
+ * @internal
434
+ */
435
+ withClient(config) {
436
+ this.clientConfig = config;
437
+ return this;
438
+ }
439
+ /**
440
+ * Build the image.
441
+ *
442
+ * @param options Build options including client config
443
+ * @returns The built Image instance
444
+ *
445
+ * @example
446
+ * ```typescript
447
+ * const image = await Image.create()
448
+ * .python("3.11")
449
+ * .addPackages(["numpy"])
450
+ * .build({
451
+ * client: { baseUrl, apiKey },
452
+ * onProgress: (e) => console.log(e.message),
453
+ * });
454
+ *
455
+ * const box = await client.create({ image: image.id });
456
+ * ```
457
+ */
458
+ async build(options) {
459
+ const client = options?.client || this.clientConfig;
460
+ if (!client) throw new Error("Client configuration required. Pass { client: { baseUrl, apiKey } } to build() or use ImageBuilder through the Sandbox client.");
461
+ const timeoutMs = options?.timeout ?? 6e5;
462
+ const timeoutController = timeoutMs > 0 ? new AbortController() : void 0;
463
+ const timeoutId = timeoutController ? setTimeout(() => timeoutController.abort(), timeoutMs) : void 0;
464
+ let response;
465
+ try {
466
+ response = await requestImageBuild(client, {
467
+ method: "POST",
468
+ headers: { "Content-Type": "application/json" },
469
+ signal: timeoutController?.signal,
470
+ body: JSON.stringify({
471
+ spec: this.spec,
472
+ options: {
473
+ noCache: options?.noCache,
474
+ platform: options?.platform,
475
+ tag: options?.tag,
476
+ stream: !!options?.onProgress
477
+ }
478
+ })
479
+ });
480
+ if (!response.ok) {
481
+ const error = await response.text();
482
+ throw new Error(`Failed to build image: ${error}`);
483
+ }
484
+ if (options?.onProgress && response.headers.get("content-type")?.includes("text/event-stream")) {
485
+ let result;
486
+ for await (const event of parseSSEStream(response.body, { signal: timeoutController?.signal })) {
487
+ const data = event.data;
488
+ if (data.type === "progress") options.onProgress(data.event);
489
+ else if (data.type === "complete") {
490
+ const rawResult = data.result;
491
+ result = {
492
+ ...rawResult,
493
+ createdAt: new Date(rawResult.createdAt)
494
+ };
495
+ } else if (data.type === "error") throw new Error(String(data.message ?? "Image build failed"));
496
+ }
497
+ if (!result) throw new Error("Build completed but no result received");
498
+ return Image.fromBuildResult(result);
499
+ }
500
+ const data = await response.json();
501
+ const result = {
502
+ ...data,
503
+ createdAt: new Date(data.createdAt)
504
+ };
505
+ return Image.fromBuildResult(result);
506
+ } catch (error) {
507
+ if (timeoutController?.signal.aborted) throw new Error(`Image build timed out after ${timeoutMs}ms`);
508
+ throw error;
509
+ } finally {
510
+ if (timeoutId) clearTimeout(timeoutId);
511
+ }
512
+ }
513
+ /**
514
+ * Generate Dockerfile from the current spec.
515
+ * Useful for debugging or manual builds.
516
+ *
517
+ * @returns Dockerfile content
518
+ */
519
+ generateDockerfile() {
520
+ return generateDockerfile(this.spec);
521
+ }
522
+ };
523
+ /**
524
+ * Generate a Dockerfile from an ImageSpec.
525
+ *
526
+ * @param spec The image specification
527
+ * @returns Dockerfile content
528
+ */
529
+ function generateDockerfile(spec) {
530
+ const lines = [];
531
+ lines.push(`FROM ${spec.baseImage}`);
532
+ lines.push("");
533
+ if (spec.labels && Object.keys(spec.labels).length > 0) {
534
+ for (const [key, value] of Object.entries(spec.labels)) lines.push(`LABEL ${key}="${value}"`);
535
+ lines.push("");
536
+ }
537
+ if (spec.buildArgs && Object.keys(spec.buildArgs).length > 0) {
538
+ for (const [key, value] of Object.entries(spec.buildArgs)) lines.push(`ARG ${key}=${value}`);
539
+ lines.push("");
540
+ }
541
+ if (spec.env && Object.keys(spec.env).length > 0) {
542
+ for (const [key, value] of Object.entries(spec.env)) lines.push(`ENV ${key}="${value}"`);
543
+ lines.push("");
544
+ }
545
+ if (spec.workdir) {
546
+ lines.push(`WORKDIR ${spec.workdir}`);
547
+ lines.push("");
548
+ }
549
+ if (spec.aptPackages && spec.aptPackages.length > 0) {
550
+ lines.push("# Install system packages");
551
+ lines.push("RUN apt-get update && \\");
552
+ lines.push(` apt-get install -y --no-install-recommends ${spec.aptPackages.join(" ")} && \\`);
553
+ lines.push(" apt-get clean && rm -rf /var/lib/apt/lists/*");
554
+ lines.push("");
555
+ }
556
+ if (spec.pythonVersion) {
557
+ lines.push(`# Install Python ${spec.pythonVersion}`);
558
+ if (!(spec.baseImage.includes("python") || spec.baseImage.includes("anaconda") || spec.baseImage.includes("miniconda")) && spec.baseImage.includes("ubuntu")) {
559
+ lines.push("RUN apt-get update && \\");
560
+ lines.push(" apt-get install -y software-properties-common && \\");
561
+ lines.push(" add-apt-repository -y ppa:deadsnakes/ppa && \\");
562
+ lines.push(` apt-get install -y python${spec.pythonVersion} python${spec.pythonVersion}-venv python${spec.pythonVersion}-distutils && \\`);
563
+ lines.push(" apt-get clean && rm -rf /var/lib/apt/lists/*");
564
+ lines.push("");
565
+ lines.push(`RUN update-alternatives --install /usr/bin/python python /usr/bin/python${spec.pythonVersion} 1 && \\`);
566
+ lines.push(` update-alternatives --install /usr/bin/python3 python3 /usr/bin/python${spec.pythonVersion} 1`);
567
+ lines.push("");
568
+ lines.push("RUN curl -sS https://bootstrap.pypa.io/get-pip.py | python");
569
+ }
570
+ lines.push("");
571
+ }
572
+ if (spec.conda && spec.conda.packages.length > 0) {
573
+ lines.push("# Install micromamba and conda packages");
574
+ lines.push("RUN curl -Ls https://micro.mamba.pm/api/micromamba/linux-64/latest | tar -xvj bin/micromamba && \\");
575
+ lines.push(" mv bin/micromamba /usr/local/bin/ && \\");
576
+ lines.push(" micromamba shell init -s bash -p /opt/conda");
577
+ lines.push("");
578
+ const channelArgs = (spec.conda.channels || ["conda-forge"]).map((c) => `-c ${c}`).join(" ");
579
+ lines.push(`RUN micromamba install -y -n base ${channelArgs} ${spec.conda.packages.join(" ")} && \\`);
580
+ lines.push(" micromamba clean --all --yes");
581
+ lines.push("ENV PATH=\"/opt/conda/bin:$PATH\"");
582
+ lines.push("");
583
+ }
584
+ if (spec.packages && spec.packages.length > 0) {
585
+ lines.push("# Install Python packages");
586
+ lines.push(`RUN pip install --no-cache-dir ${spec.packages.join(" ")}`);
587
+ lines.push("");
588
+ }
589
+ if (spec.commands && spec.commands.length > 0) {
590
+ lines.push("# Custom commands");
591
+ for (const cmd of spec.commands) lines.push(`RUN ${cmd}`);
592
+ lines.push("");
593
+ }
594
+ if (spec.user) lines.push(`USER ${spec.user}`);
595
+ return lines.join("\n");
596
+ }
597
+ //#endregion
598
+ //#region src/manage-sandboxes.ts
599
+ const MANAGE_SANDBOXES_TOOL_NAME = "manageSandboxes";
600
+ function createManageSandboxesTool(client, options = {}) {
601
+ return {
602
+ name: MANAGE_SANDBOXES_TOOL_NAME,
603
+ description: "Create, inspect, and manage sandbox fleets for parallel agent workloads.",
604
+ parameters: MANAGE_SANDBOXES_PARAMETERS,
605
+ async execute(input) {
606
+ switch (input.action) {
607
+ case "capabilities": return client.fleets.capabilities();
608
+ case "create": return client.fleets.create(applyToolPolicy(requireCreateOptions(input), options.policy));
609
+ case "createWithCoordinator": return client.fleets.createWithCoordinator(applyToolPolicy(requireCreateWithCoordinatorOptions(input), options.policy));
610
+ case "list": return client.fleets.list({ fleetId: requireString(input, "fleetId") });
611
+ case "delete": return client.fleets.delete(requireString(input, "fleetId"));
612
+ case "attachMachine": return client.fleets.attachMachine(requireString(input, "fleetId"), requireMachine(input));
613
+ case "detachMachine": return client.fleets.detachMachine(requireString(input, "fleetId"), requireString(input, "machineId"));
614
+ case "manifest": return client.fleets.manifest(requireString(input, "fleetId"));
615
+ case "usage": return client.fleets.usage(requireString(input, "fleetId"));
616
+ case "trace": return client.fleets.trace(requireString(input, "fleetId"));
617
+ case "intelligence": return client.fleets.intelligence(requireString(input, "fleetId"));
618
+ case "cost": return client.fleets.cost(requireString(input, "fleetId"));
619
+ case "createWorkspaceSnapshot": return client.fleets.createWorkspaceSnapshot(requireString(input, "fleetId"));
620
+ case "restoreWorkspaceSnapshot": return client.fleets.restoreWorkspaceSnapshot(requireString(input, "fleetId"), requireString(input, "snapshotId"));
621
+ case "reconcileWorkspace": return client.fleets.reconcileWorkspace(requireString(input, "fleetId"));
622
+ default: throw new Error(`Unsupported manageSandboxes action: ${String(input.action)}`);
623
+ }
624
+ }
625
+ };
626
+ }
627
+ function requireString(input, key) {
628
+ const value = input[key];
629
+ if (typeof value !== "string" || value.length === 0) throw new Error(`manageSandboxes requires ${key}`);
630
+ return value;
631
+ }
632
+ function requireCreateOptions(input) {
633
+ const value = input.options;
634
+ if (!value || typeof value !== "object") throw new Error("manageSandboxes requires options");
635
+ return rejectUserPolicy(value);
636
+ }
637
+ function requireCreateWithCoordinatorOptions(input) {
638
+ const value = input.options;
639
+ if (!value || typeof value !== "object") throw new Error("manageSandboxes requires options");
640
+ return rejectUserPolicy(value);
641
+ }
642
+ function rejectUserPolicy(options) {
643
+ if ("policy" in options && options.policy !== void 0) throw new Error("manageSandboxes policy must be supplied by the tool host");
644
+ return options;
645
+ }
646
+ function applyToolPolicy(options, policy) {
647
+ if (!policy) throw new Error("manageSandboxes create requires a host-owned policy");
648
+ return {
649
+ ...options,
650
+ policy
651
+ };
652
+ }
653
+ function requireMachine(input) {
654
+ const value = input.machine;
655
+ if (!value || typeof value !== "object") throw new Error("manageSandboxes requires machine");
656
+ const machine = value;
657
+ requireString(machine, "machineId");
658
+ requireString(machine, "sandboxId");
659
+ return value;
660
+ }
661
+ const fleetId = {
662
+ type: "string",
663
+ pattern: "^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$"
664
+ };
665
+ const MANAGE_SANDBOXES_PARAMETERS = {
666
+ type: "object",
667
+ additionalProperties: false,
668
+ required: ["action"],
669
+ properties: {
670
+ action: {
671
+ type: "string",
672
+ enum: [
673
+ "capabilities",
674
+ "create",
675
+ "createWithCoordinator",
676
+ "list",
677
+ "delete",
678
+ "attachMachine",
679
+ "detachMachine",
680
+ "manifest",
681
+ "usage",
682
+ "trace",
683
+ "intelligence",
684
+ "cost",
685
+ "createWorkspaceSnapshot",
686
+ "restoreWorkspaceSnapshot",
687
+ "reconcileWorkspace"
688
+ ]
689
+ },
690
+ fleetId,
691
+ machineId: fleetId,
692
+ snapshotId: {
693
+ type: "string",
694
+ minLength: 1
695
+ },
696
+ options: { type: "object" },
697
+ machine: {
698
+ type: "object",
699
+ required: ["machineId", "sandboxId"],
700
+ additionalProperties: true,
701
+ properties: {
702
+ machineId: fleetId,
703
+ sandboxId: {
704
+ type: "string",
705
+ minLength: 1,
706
+ maxLength: 128
707
+ }
708
+ }
709
+ }
710
+ }
711
+ };
712
+ //#endregion
713
+ //#region src/mcp.ts
714
+ /**
715
+ * MCP (Model Context Protocol) helpers for sandbox capabilities.
716
+ *
717
+ * The sandbox exposes capabilities (currently `computer_use`, more
718
+ * later) as MCP tools over Streamable HTTP. Any MCP-capable client —
719
+ * Claude Desktop, Cursor, claude-code, codex, opencode, raw
720
+ * `@modelcontextprotocol/sdk` apps — can consume this surface by
721
+ * pasting the JSON returned from `Sandbox#getMcpEndpoint()` (or
722
+ * `buildSandboxMcpConfig` if you already have the URL + token) into
723
+ * the client's MCP config.
724
+ *
725
+ * Security model:
726
+ * - Tokens are capability-scoped JWTs (claim `cap: ["computer_use"]`).
727
+ * - Full sandbox runtime tokens are rejected on `/mcp`; only
728
+ * capability-scoped tokens work there.
729
+ * - A scoped token cannot pivot to admin endpoints (`/exec`, `/files`,
730
+ * etc.) — those routes reject scoped tokens.
731
+ * - Tokens are short-lived. Rotate via `Sandbox#getMcpEndpoint()`,
732
+ * which mints a fresh token each call.
733
+ */
734
+ /** Default name of the MCP server entry — surfaces in the host UI. */
735
+ const SANDBOX_MCP_SERVER_NAME = "tangle-sandbox";
736
+ /**
737
+ * Build the canonical `mcpServers` config for a sandbox MCP endpoint.
738
+ * Pure function — no I/O, no crypto. Use this when you already have a
739
+ * `{ url, authToken }` pair from the API and just want the JSON shape
740
+ * to paste into a host. Most callers should use
741
+ * `Sandbox#getMcpEndpoint()` instead, which fetches a freshly-minted
742
+ * token from the API.
743
+ */
744
+ function buildSandboxMcpConfig(options) {
745
+ if (!options.sandboxUrl) throw new Error("buildSandboxMcpConfig: sandboxUrl is required");
746
+ if (!options.authToken) throw new Error("buildSandboxMcpConfig: authToken is required");
747
+ const serverName = options.serverName ?? "tangle-sandbox";
748
+ const baseUrl = options.sandboxUrl.replace(/\/+$/, "");
749
+ return {
750
+ serverName,
751
+ config: { mcpServers: { [serverName]: {
752
+ type: "http",
753
+ url: `${baseUrl}/mcp`,
754
+ headers: { Authorization: `Bearer ${options.authToken}` }
755
+ } } }
756
+ };
757
+ }
758
+ /**
759
+ * Default name of the control-plane MCP server entry. Distinct from the per-
760
+ * sandbox runtime server (`SANDBOX_MCP_SERVER_NAME`): the sandbox surface
761
+ * operates INSIDE one sandbox (`run_code`/`exec`/`read`/`write`), while this one
762
+ * operates ACROSS the account (sandboxes, workflows, integrations, usage).
763
+ */
764
+ const CONTROL_PLANE_MCP_SERVER_NAME = "tangle-control-plane";
765
+ /**
766
+ * Build the canonical `mcpServers` config for the public control-plane MCP
767
+ * endpoint — the JSON a user pastes into Claude Desktop / Cursor / claude-code
768
+ * to drive their Tangle account from their own agent. Pure function; mirrors
769
+ * `buildSandboxMcpConfig` but carries an account API key instead of a per-
770
+ * sandbox capability token.
771
+ */
772
+ function buildControlPlaneMcpConfig(options) {
773
+ if (!options.platformUrl) throw new Error("buildControlPlaneMcpConfig: platformUrl is required");
774
+ if (!options.apiKey) throw new Error("buildControlPlaneMcpConfig: apiKey is required");
775
+ const serverName = options.serverName ?? "tangle-control-plane";
776
+ const baseUrl = options.platformUrl.replace(/\/+$/, "");
777
+ return {
778
+ serverName,
779
+ config: { mcpServers: { [serverName]: {
780
+ type: "http",
781
+ url: `${baseUrl}/mcp`,
782
+ headers: { Authorization: `Bearer ${options.apiKey}` }
783
+ } } }
784
+ };
785
+ }
786
+ //#endregion
787
+ //#region src/router-search.ts
788
+ const DEFAULT_ROUTER_URL = "https://router.tangle.tools";
789
+ async function fetchTangleRouterSearchConfig(options = {}) {
790
+ const routerUrl = (options.routerUrl ?? DEFAULT_ROUTER_URL).replace(/\/+$/, "");
791
+ const url = new URL(`${routerUrl}/v1/search/config`);
792
+ if (options.provider) url.searchParams.set("provider", options.provider);
793
+ if (options.apiKeyEnv) url.searchParams.set("api_key_env", options.apiKeyEnv);
794
+ if (options.model) url.searchParams.set("model", options.model);
795
+ const res = await (options.fetchImpl ?? fetch)(url);
796
+ if (!res.ok) throw new Error(`Failed to load Tangle Router search config: ${res.status}`);
797
+ const config = await res.json();
798
+ if (config.object !== "search.config") throw new Error("Invalid Tangle Router search config response");
799
+ return config;
800
+ }
801
+ function buildTangleRouterSearchProfile(config, options = {}) {
802
+ return {
803
+ name: options.name ?? "tangle-router-web-search",
804
+ model: { default: options.model ?? config.tcloud.sandboxBackend.model.model },
805
+ permissions: {
806
+ network: "allow",
807
+ mcp: "allow"
808
+ },
809
+ mcp: { tangle_web_search: {
810
+ transport: "http",
811
+ url: config.mcp.streamable_http_url,
812
+ headers: config.mcp.headers,
813
+ enabled: true
814
+ } },
815
+ metadata: {
816
+ tangleRouterSearchProvider: config.default_provider,
817
+ tangleRouterSearchEndpoint: config.endpoint.url
818
+ }
819
+ };
820
+ }
821
+ function buildTangleRouterSearchBackend(config, options = {}) {
822
+ const model = config.tcloud.sandboxBackend.model;
823
+ return {
824
+ type: options.type ?? "opencode",
825
+ profile: options.profile ?? buildTangleRouterSearchProfile(config),
826
+ model: {
827
+ provider: model.provider,
828
+ model: model.model,
829
+ baseUrl: model.baseUrl,
830
+ ...options.apiKey ? { apiKey: options.apiKey } : {}
831
+ }
832
+ };
833
+ }
834
+ function buildTangleRouterEvalMatrixRequest(config, overrides = {}) {
835
+ return {
836
+ url: config.eval_matrix.url,
837
+ body: {
838
+ ...config.eval_matrix.body_template,
839
+ ...overrides
840
+ }
841
+ };
842
+ }
843
+ function buildTangleRouterResponsesWebSearchRequest(config, overrides = {}) {
844
+ const compat = config.openrouter_compat?.responses;
845
+ if (compat) return {
846
+ url: compat.url,
847
+ body: {
848
+ ...compat.body,
849
+ ...overrides
850
+ }
851
+ };
852
+ const model = config.tcloud.sandboxBackend.model;
853
+ return {
854
+ url: `${model.baseUrl.replace(/\/+$/, "")}/responses`,
855
+ body: {
856
+ model: model.model,
857
+ input: "Search for the latest documentation and answer with citations.",
858
+ tools: [{
859
+ type: "openrouter:web_search",
860
+ parameters: {
861
+ provider: config.default_provider,
862
+ max_results: 5
863
+ }
864
+ }],
865
+ ...overrides
866
+ }
867
+ };
868
+ }
869
+ //#endregion
870
+ //#region src/router-eval-matrix-runner.ts
871
+ async function runTangleRouterEvalMatrixInSandbox(options) {
872
+ const fetchFn = options.fetchImpl ?? fetch;
873
+ const request = buildTangleRouterEvalMatrixRequest(options.config, {
874
+ transport: "sandbox-sdk",
875
+ ...options.inputOverrides
876
+ });
877
+ const created = await postJson(fetchFn, request.url, options.apiKey, request.body);
878
+ const matrix = created.matrix;
879
+ const cases = await runMatrixCases({
880
+ matrix,
881
+ config: options.config,
882
+ apiKey: options.apiKey,
883
+ sandboxClient: options.sandboxClient,
884
+ concurrency: options.concurrency ?? 3,
885
+ sessionIdPrefix: options.sessionIdPrefix ?? `eval_${created.suite.id}`
886
+ });
887
+ const importResult = await postJson(fetchFn, `${request.url.replace(/\/api\/eval\/matrix$/, "")}/api/eval/suites/${encodeURIComponent(String(created.suite.id))}/runs/import`, options.apiKey, {
888
+ baseline: options.baseline === true,
889
+ cases
890
+ });
891
+ return {
892
+ suite: created.suite,
893
+ matrix,
894
+ cases,
895
+ benchmark: importResult.benchmark ?? [],
896
+ importResult
897
+ };
898
+ }
899
+ async function runMatrixCases(options) {
900
+ const profiles = new Map(options.matrix.agentProfiles.map((p) => [p.id, p]));
901
+ const harnesses = new Map(options.matrix.harnesses.map((h) => [h.id, h]));
902
+ const iterations = Math.max(1, Math.min(10, options.matrix.iterations ?? 1));
903
+ const tasks = [];
904
+ for (let iteration = 0; iteration < iterations; iteration++) for (const scenario of options.matrix.scenarios) tasks.push(() => runOneCase({
905
+ scenario,
906
+ iteration,
907
+ profile: scenario.profile ? profiles.get(scenario.profile) : void 0,
908
+ harness: scenario.harness ? harnesses.get(scenario.harness) : void 0,
909
+ config: options.config,
910
+ apiKey: options.apiKey,
911
+ sandboxClient: options.sandboxClient,
912
+ sessionIdPrefix: options.sessionIdPrefix
913
+ }));
914
+ return parallelLimit(tasks, options.concurrency);
915
+ }
916
+ async function runOneCase(options) {
917
+ const start = Date.now();
918
+ const backend = buildSandboxBackend(options);
919
+ const box = await options.sandboxClient.create({
920
+ name: `eval-${safeId(options.scenario.id).slice(0, 40)}`,
921
+ environment: options.harness?.image,
922
+ image: options.harness?.image,
923
+ backend,
924
+ env: materializeHarnessEnv(options.config, options.harness?.envVars, options.apiKey),
925
+ ...options.harness?.gitRepo ? { git: {
926
+ url: options.harness.gitRepo,
927
+ ref: options.harness.gitBranch
928
+ } } : {}
929
+ });
930
+ const sessionId = `${safeId(options.sessionIdPrefix)}_${safeId(options.scenario.id)}_${options.iteration}`;
931
+ try {
932
+ const dispatched = await box.dispatchPrompt(options.scenario.prompt, { sessionId });
933
+ const result = await box.session(dispatched.sessionId).result();
934
+ const testCommand = options.scenario.sandbox?.testCommand ?? options.harness?.testCommand;
935
+ const sandboxResult = testCommand && box.exec ? await runTestCommand(box, dispatched.sessionId, testCommand, options.harness?.timeout) : void 0;
936
+ return buildCaseResult({
937
+ scenario: options.scenario,
938
+ iteration: options.iteration,
939
+ profile: options.profile,
940
+ harness: options.harness,
941
+ sessionId: dispatched.sessionId,
942
+ sandboxId: box.id,
943
+ result,
944
+ sandboxResult,
945
+ durationMs: Date.now() - start,
946
+ env: materializeHarnessEnv(options.config, options.harness?.envVars, options.apiKey)
947
+ });
948
+ } finally {
949
+ await cleanupBox(box);
950
+ }
951
+ }
952
+ function buildSandboxBackend(options) {
953
+ const model = options.config.tcloud.sandboxBackend.model;
954
+ const searchProvider = inferSearchProvider(options.profile);
955
+ const profile = {
956
+ name: options.profile?.name ?? options.profile?.id ?? "tangle-router-benchmark",
957
+ model: { default: options.profile?.model ?? model.model },
958
+ permissions: {
959
+ network: "allow",
960
+ mcp: "allow"
961
+ },
962
+ mcp: { tangle_web_search: {
963
+ transport: "http",
964
+ url: options.config.mcp.streamable_http_url,
965
+ headers: options.config.mcp.headers,
966
+ enabled: searchProvider !== "off"
967
+ } },
968
+ metadata: {
969
+ tangleRouterSearchProvider: searchProvider,
970
+ tangleRouterSearchEndpoint: options.config.endpoint.url,
971
+ tangleRouterEvalHarness: options.harness?.id
972
+ },
973
+ extensions: { tangleRouter: { providerOptions: options.profile?.providerOptions } }
974
+ };
975
+ return {
976
+ type: backendType(options.harness?.id),
977
+ profile,
978
+ model: {
979
+ provider: model.provider,
980
+ model: options.profile?.model ?? model.model,
981
+ baseUrl: model.baseUrl,
982
+ apiKey: options.apiKey
983
+ }
984
+ };
985
+ }
986
+ function buildCaseResult(input) {
987
+ const usage = input.result.usage;
988
+ const failureReason = input.result.error ?? "Sandbox session failed";
989
+ const error = input.result.success ? void 0 : failureReason;
990
+ const passed = input.result.success && (input.sandboxResult ? input.sandboxResult.testsPassed : true);
991
+ const benchmark = input.scenario.benchmark;
992
+ const toolCalls = promptToolCalls(input.result);
993
+ return {
994
+ scenarioId: input.scenario.id,
995
+ prompt: input.scenario.prompt,
996
+ model: input.profile?.model ?? "unknown",
997
+ response: input.result.response ?? "",
998
+ timing: { totalMs: input.durationMs },
999
+ tokens: {
1000
+ input: usage?.inputTokens ?? 0,
1001
+ output: usage?.outputTokens ?? 0,
1002
+ cached: 0,
1003
+ reasoning: 0
1004
+ },
1005
+ cost: promptCost(input.result),
1006
+ judgeCost: 0,
1007
+ score: passed ? 8 : 1,
1008
+ judgeReasoning: passed ? "Terminal sandbox result and required tests passed." : input.sandboxResult && !input.sandboxResult.testsPassed ? "Sandbox test command failed." : failureReason,
1009
+ passed,
1010
+ toolCalls,
1011
+ assertions: [{
1012
+ check: "Terminal sandbox result observed",
1013
+ passed: input.result.success
1014
+ }, ...input.sandboxResult ? [{
1015
+ check: "Sandbox test command passed",
1016
+ passed: input.sandboxResult.testsPassed
1017
+ }] : []],
1018
+ benchmark: {
1019
+ profileId: benchmark?.profileId ?? input.profile?.id,
1020
+ harnessId: benchmark?.harnessId ?? input.harness?.id,
1021
+ transport: benchmark?.transport ?? input.harness?.transport ?? "sandbox-sdk",
1022
+ searchProvider: benchmark?.searchProvider ?? inferSearchProvider(input.profile),
1023
+ searchRequests: benchmarkSearchRequests(input.result, toolCalls),
1024
+ citationCount: benchmarkCitationCount(input.result),
1025
+ artifacts: {
1026
+ ...benchmark?.artifacts ?? {},
1027
+ sessionId: input.sessionId,
1028
+ sandboxId: input.sandboxId,
1029
+ ...benchmarkEnvArtifacts(input.env),
1030
+ ...input.result.traceId ? { traceId: input.result.traceId } : {}
1031
+ }
1032
+ },
1033
+ iteration: input.iteration,
1034
+ error: input.sandboxResult && !input.sandboxResult.testsPassed ? "Sandbox test command failed" : error,
1035
+ sandboxResult: input.sandboxResult
1036
+ };
1037
+ }
1038
+ async function runTestCommand(box, sessionId, command, timeoutSeconds) {
1039
+ if (!box.exec) throw new Error("Router eval sandbox does not support exec");
1040
+ const result = await box.exec(command, {
1041
+ sessionId,
1042
+ timeoutMs: Math.max(1, timeoutSeconds ?? 120) * 1e3
1043
+ });
1044
+ return {
1045
+ exitCode: result.exitCode,
1046
+ stdout: result.stdout.slice(0, 2e3),
1047
+ stderr: result.stderr.slice(0, 1e3),
1048
+ testsPassed: result.exitCode === 0
1049
+ };
1050
+ }
1051
+ async function postJson(fetchFn, url, apiKey, body) {
1052
+ const res = await fetchFn(url, {
1053
+ method: "POST",
1054
+ headers: {
1055
+ authorization: `Bearer ${apiKey}`,
1056
+ "content-type": "application/json",
1057
+ accept: "application/json"
1058
+ },
1059
+ body: JSON.stringify(stripUndefined(body))
1060
+ });
1061
+ const raw = await res.text();
1062
+ const data = raw ? JSON.parse(raw) : null;
1063
+ if (!res.ok) {
1064
+ const message = typeof data?.error === "string" ? data.error : raw.slice(0, 200);
1065
+ throw new Error(`${url} failed (${res.status}): ${message}`);
1066
+ }
1067
+ return data;
1068
+ }
1069
+ async function parallelLimit(tasks, limit) {
1070
+ const out = [];
1071
+ let idx = 0;
1072
+ const workers = Array.from({ length: Math.min(Math.max(1, limit), tasks.length) }, async () => {
1073
+ while (idx < tasks.length) {
1074
+ const current = idx++;
1075
+ const task = tasks[current];
1076
+ if (task === void 0) throw new Error(`Missing router eval task at index ${current}`);
1077
+ out[current] = await task();
1078
+ }
1079
+ });
1080
+ await Promise.all(workers);
1081
+ return out;
1082
+ }
1083
+ function materializeHarnessEnv(config, envVars, apiKey) {
1084
+ return materializeEnv({
1085
+ ...config.harness_env ?? {},
1086
+ ...envVars ?? {}
1087
+ }, config, apiKey);
1088
+ }
1089
+ function materializeEnv(env, config, apiKey) {
1090
+ const routerUrl = config.tcloud.sandboxBackend.model.baseUrl.replace(/\/v1\/?$/, "");
1091
+ const resolved = /* @__PURE__ */ new Map();
1092
+ for (const [key, raw] of Object.entries(env)) resolved.set(key, replaceEnvTokens(raw, apiKey, routerUrl, resolved));
1093
+ return Object.fromEntries(resolved);
1094
+ }
1095
+ function replaceEnvTokens(value, apiKey, routerUrl, resolved) {
1096
+ let out = value.replace(/<tangle-api-key>/g, apiKey).replace(/\$\{TANGLE_API_KEY\}/g, apiKey).replace(/\$\{TANGLE_ROUTER_URL\}/g, routerUrl);
1097
+ for (const [key, resolvedValue] of resolved) out = out.replace(new RegExp(`\\$\\{${escapeRegExp(key)}\\}`, "g"), resolvedValue);
1098
+ return out;
1099
+ }
1100
+ function benchmarkEnvArtifacts(env) {
1101
+ const entries = Object.entries(env).sort(([a], [b]) => a.localeCompare(b));
1102
+ return {
1103
+ harnessEnvKeys: entries.map(([key]) => key).join(","),
1104
+ harnessEnvHash: stableHash(entries.map(([key, value]) => `${key}=${redactEnvValue(key, value)}`).join("\n")),
1105
+ harnessEnv: JSON.stringify(Object.fromEntries(entries.map(([key, value]) => [key, redactEnvValue(key, value)])))
1106
+ };
1107
+ }
1108
+ function redactEnvValue(key, value) {
1109
+ if (/token|secret|key|authorization/i.test(key)) return "<redacted>";
1110
+ if (/^Bearer\s+/i.test(value)) return "Bearer <redacted>";
1111
+ return value.length > 500 ? `${value.slice(0, 500)}...` : value;
1112
+ }
1113
+ function stableHash(value) {
1114
+ let hash = 2166136261;
1115
+ for (let i = 0; i < value.length; i += 1) {
1116
+ hash ^= value.charCodeAt(i);
1117
+ hash = Math.imul(hash, 16777619);
1118
+ }
1119
+ return (hash >>> 0).toString(16).padStart(8, "0");
1120
+ }
1121
+ function escapeRegExp(value) {
1122
+ return value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
1123
+ }
1124
+ function inferSearchProvider(profile) {
1125
+ const search = profile?.providerOptions?.gateway?.webSearch;
1126
+ if (search === false) return "off";
1127
+ if (search && typeof search === "object" && typeof search.provider === "string") return search.provider;
1128
+ return "default";
1129
+ }
1130
+ function promptCost(result) {
1131
+ const raw = result;
1132
+ const cost = typeof raw.costUsd === "number" ? raw.costUsd : raw.cost;
1133
+ return typeof cost === "number" && Number.isFinite(cost) && cost > 0 ? cost : 0;
1134
+ }
1135
+ function promptToolCalls(result) {
1136
+ const raw = result;
1137
+ if (Array.isArray(raw.toolCalls)) return raw.toolCalls;
1138
+ if (Array.isArray(raw.toolInvocations)) return raw.toolInvocations;
1139
+ return [];
1140
+ }
1141
+ function benchmarkSearchRequests(result, toolCalls) {
1142
+ const raw = result;
1143
+ const explicit = typeof raw.searchRequests === "number" ? raw.searchRequests : typeof raw.metadata?.searchRequests === "number" ? raw.metadata.searchRequests : void 0;
1144
+ if (explicit !== void 0) return Math.max(0, explicit);
1145
+ return toolCalls.filter((call) => {
1146
+ const c = call;
1147
+ return String(c.name ?? c.toolName ?? c.type ?? "").toLowerCase().includes("search");
1148
+ }).length;
1149
+ }
1150
+ function benchmarkCitationCount(result) {
1151
+ const raw = result;
1152
+ if (typeof raw.citationCount === "number") return Math.max(0, raw.citationCount);
1153
+ if (typeof raw.metadata?.citationCount === "number") return Math.max(0, raw.metadata.citationCount);
1154
+ if (Array.isArray(raw.citations)) return raw.citations.length;
1155
+ if (Array.isArray(raw.annotations)) return raw.annotations.filter((a) => {
1156
+ const annotation = a;
1157
+ return annotation.type === "url_citation" || Boolean(annotation.url_citation);
1158
+ }).length;
1159
+ return 0;
1160
+ }
1161
+ function backendType(harnessId) {
1162
+ if (harnessId === "claude-code") return "claude-code";
1163
+ if (harnessId === "codex") return "codex";
1164
+ if (harnessId === "opencode") return "opencode";
1165
+ return "opencode";
1166
+ }
1167
+ function safeId(value) {
1168
+ return value.toLowerCase().replace(/[^a-z0-9_-]+/g, "_").replace(/^_+|_+$/g, "").slice(0, 120) || "cell";
1169
+ }
1170
+ async function cleanupBox(box) {
1171
+ if (box.delete) await box.delete();
1172
+ else if (box.destroy) await box.destroy();
1173
+ }
1174
+ function stripUndefined(value) {
1175
+ if (Array.isArray(value)) return value.map(stripUndefined);
1176
+ if (!value || typeof value !== "object") return value;
1177
+ return Object.fromEntries(Object.entries(value).filter(([, v]) => v !== void 0).map(([k, v]) => [k, stripUndefined(v)]));
1178
+ }
1179
+ //#endregion
1180
+ export { AuthError, CONTROL_PLANE_MCP_SERVER_NAME, CapabilityError, CollaborationClient, CollaborationFileBridge, DEFAULT_SANDBOX_SIZE, Image, ImageBuilder, IntelligenceClient, InteractiveSessionHandle, MANAGE_SANDBOXES_PARAMETERS, MANAGE_SANDBOXES_TOOL_NAME, NetworkError, NotFoundError, PartialFailureError, QuotaError, SANDBOX_MCP_SERVER_NAME, SANDBOX_SIZE_PRESETS, SANDBOX_SIZE_PRESET_NAMES, SandboxClient as Sandbox, SandboxClient, SandboxError, SandboxFleet, SandboxFleetClient, SandboxInstance, SandboxSession, ServerError, StateError, TangleSandboxClient, TimeoutError, ValidationError, applySandboxEventText, buildCollaborationDocumentId, buildControlPlaneMcpConfig, buildSandboxMcpConfig, buildTangleRouterEvalMatrixRequest, buildTangleRouterResponsesWebSearchRequest, buildTangleRouterSearchBackend, buildTangleRouterSearchProfile, buildTraceExportPayload, collectAgentResponseText, createConfidentialSandbox, createManageSandboxesTool, defineAgentProfile, defineGitHubResource, defineInlineResource, exportTraceBundle, fetchTangleRouterSearchConfig, generateAttestationNonce, generateDockerfile, getSandboxEventText, mergeAgentProfiles, normalizeCollaborationPath, normalizeRuntimeBackendConfig, otelTraceIdForTangleTrace, parseCollaborationDocumentId, parseSSEStream, resolveSandboxResources, runTangleRouterEvalMatrixInSandbox, sandboxResourcesForSize, serializeForSidecar, startTeeAttestationHeartbeat, toOtelJson };