@ozaiya/openclaw-channel 0.10.30 → 0.10.32
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/src/gateway.js +164 -32
- package/dist/src/gateway.js.map +1 -1
- package/dist/src/sandboxScreenCdp.d.ts +22 -2
- package/dist/src/sandboxScreenCdp.js +391 -48
- package/dist/src/sandboxScreenCdp.js.map +1 -1
- package/dist/src/sandboxScreenE2E.d.ts +14 -0
- package/dist/src/sandboxScreenE2E.js +69 -0
- package/dist/src/sandboxScreenE2E.js.map +1 -0
- package/dist/src/sandboxScreenH264.d.ts +7 -0
- package/dist/src/sandboxScreenH264.js +118 -49
- package/dist/src/sandboxScreenH264.js.map +1 -1
- package/dist/src/sandboxScreenRtc.d.ts +3 -0
- package/dist/src/sandboxScreenRtc.js +64 -9
- package/dist/src/sandboxScreenRtc.js.map +1 -1
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sandboxScreenCdp.js","sourceRoot":"","sources":["../../src/sandboxScreenCdp.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sandboxScreenCdp.js","sourceRoot":"","sources":["../../src/sandboxScreenCdp.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,OAAO,IAAI,MAAM,WAAW,CAAC;AAiD7B,oEAAoE;AACpE,SAAS,MAAM,CAAC,IAAY,EAAE,IAAY,EAAE,IAAY;IACtD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CACtB,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EACnE,CAAC,GAAG,EAAE,EAAE;YACN,IAAI,IAAI,GAAG,EAAE,CAAC;YACd,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;YACnC,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QACrC,CAAC,CACF,CAAC;QACF,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACxB,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACzE,GAAG,CAAC,GAAG,EAAE,CAAC;IACZ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,8EAA8E;AAC9E,MAAM,kBAAkB,GAAG,IAAI,CAAC;AAChC,gFAAgF;AAChF,MAAM,wBAAwB,GAAG,CAAC,CAAC;AACnC,0CAA0C;AAC1C,MAAM,kBAAkB,GAAG,IAAI,CAAC;AAChC,gFAAgF;AAChF,6EAA6E;AAC7E,+EAA+E;AAC/E,yEAAyE;AACzE,MAAM,wBAAwB,GAAG,EAAE,GAAG,IAAI,CAAC;AAC3C,2DAA2D;AAC3D,MAAM,uBAAuB,GAAG,EAAE,CAAC;AAEnC,gFAAgF;AAChF,6EAA6E;AAC7E,4EAA4E;AAC5E,gFAAgF;AAChF,MAAM,cAAc,GAAG,sBAAsB,CAAC;AAC9C,MAAM,eAAe,GAAG;;;;wBAIA,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MA6BhC,CAAC;AAEP,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,IAA0B;IAClE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;IAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;IACnC,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,mCAAmC;IAGnF,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;IACpC,MAAM,MAAM,GAAG,CAAC,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAkC,CAAC;IAE/E,IAAI,EAAE,GAAc,IAAI,CAAC,CAAK,4CAA4C;IAC1E,IAAI,MAAM,GAAG,KAAK,CAAC,CAAW,iCAAiC;IAC/D,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,MAAM,GAAG,CAAC,CAAC,CAAC;IAChB,IAAI,aAAa,GAAG,CAAC,CAAC;IACtB,IAAI,QAAQ,GAAG,KAAK,CAAC,CAAS,qCAAqC;IACnE,IAAI,mBAAmB,GAAG,CAAC,CAAC;IAC5B,IAAI,YAAY,GAAyC,IAAI,CAAC;IAC9D,IAAI,cAAc,GAAyC,IAAI,CAAC;IAChE,IAAI,SAAS,GAAyC,IAAI,CAAC,CAAE,2BAA2B;IACxF,IAAI,MAAM,GAAG,KAAK,CAAC,CAAU,gDAAgD;IAC7E,IAAI,eAAe,GAAG,EAAE,CAAC,CAAc,kCAAkC;IACzE,IAAI,YAAY,GAAG,IAAI,GAAG,EAAU,CAAC,CAAE,sCAAsC;IAC7E,IAAI,iBAAiB,GAAkB,IAAI,CAAC,CAAC,qCAAqC;IAClF,IAAI,aAAa,GAAG,EAAE,CAAC,CAAgB,6CAA6C;IAEpF,MAAM,IAAI,GAAG,CAAC,MAAc,EAAE,MAAgC,EAAU,EAAE;QACxE,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;QACnB,IAAI,CAAC,MAAM,IAAI,EAAE,IAAI,EAAE,CAAC,UAAU,KAAK,CAAC,EAAE,CAAC;YACzC,IAAI,CAAC;gBAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;QACjF,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC,CAAC;IAEF,MAAM,YAAY,GAAG,GAAG,EAAE,GAAG,IAAI,YAAY,EAAE,CAAC;QAAC,YAAY,CAAC,YAAY,CAAC,CAAC;QAAC,YAAY,GAAG,IAAI,CAAC;IAAC,CAAC,CAAC,CAAC,CAAC;IAEtG,kFAAkF;IAClF,4EAA4E;IAC5E,MAAM,IAAI,GAAG,GAAG,EAAE;QAChB,IAAI,MAAM,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,UAAU,KAAK,CAAC;YAAE,OAAO;QACjD,QAAQ,GAAG,IAAI,CAAC;QAChB,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC3B,+EAA+E;QAC/E,8CAA8C;QAC9C,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,EAAE,IAAI,OAAO,CAAC;QACzC,MAAM,GAAG,IAAI,CAAC,wBAAwB,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,CAAC;QAChG,YAAY,EAAE,CAAC;QACf,YAAY,GAAG,UAAU,CAAC,gBAAgB,EAAE,kBAAkB,CAAC,CAAC;IAClE,CAAC,CAAC;IAEF,MAAM,YAAY,GAAG,GAAG,EAAE;QACxB,IAAI,MAAM;YAAE,OAAO;QACnB,IAAI,SAAS,EAAE,CAAC;YAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YAAC,SAAS,GAAG,IAAI,CAAC;QAAC,CAAC;QAC7D,gFAAgF;QAChF,gFAAgF;QAChF,+EAA+E;QAC/E,MAAM,EAAE,GAAG,IAAI,CAAC,eAAe,EAAE,EAAE,IAAI,CAAC,CAAC;QACzC,IAAI,EAAE,GAAG,wBAAwB,EAAE,CAAC;YAClC,SAAS,GAAG,UAAU,CAAC,YAAY,EAAE,uBAAuB,CAAC,CAAC;YAC9D,OAAO;QACT,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,IAAI,aAAa,CAAC,CAAC;QAC3E,MAAM,GAAG,KAAK,CAAC;QACf,SAAS,GAAG,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;IACrF,CAAC,CAAC;IAEF,2EAA2E;IAC3E,8EAA8E;IAC9E,8EAA8E;IAC9E,8EAA8E;IAC9E,4EAA4E;IAC5E,MAAM,KAAK,GAAG,GAAG,EAAE;QACjB,IAAI,MAAM;YAAE,OAAO;QACnB,MAAM,GAAG,IAAI,CAAC;QACd,IAAI,CAAC,QAAQ;YAAE,YAAY,EAAE,CAAC;IAChC,CAAC,CAAC;IAEF,qFAAqF;IACrF,MAAM,UAAU,GAAG,GAAG,EAAE;QACtB,IAAI,CAAC,QAAQ;YAAE,OAAO;QACtB,QAAQ,GAAG,KAAK,CAAC;QACjB,YAAY,EAAE,CAAC;QACf,YAAY,EAAE,CAAC;IACjB,CAAC,CAAC;IAEF,MAAM,gBAAgB,GAAG,GAAG,EAAE;QAC5B,IAAI,MAAM;YAAE,OAAO;QACnB,mBAAmB,EAAE,CAAC;QACtB,IAAI,mBAAmB,IAAI,wBAAwB,EAAE,CAAC;YACpD,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,iBAAiB,mBAAmB,sCAAsC,CAAC,CAAC;YAC7F,mBAAmB,GAAG,CAAC,CAAC;YACxB,QAAQ,GAAG,KAAK,CAAC;YACjB,YAAY,EAAE,CAAC;YACf,uEAAuE;YACvE,yEAAyE;YACzE,aAAa,GAAG,eAAe,CAAC;YAChC,MAAM,IAAI,GAAG,EAAE,CAAC;YAChB,EAAE,GAAG,IAAI,CAAC;YACV,IAAI,CAAC;gBAAC,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;YACnD,iBAAiB,EAAE,CAAC;QACtB,CAAC;aAAM,CAAC;YACN,2DAA2D;YAC3D,UAAU,EAAE,CAAC;QACf,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,SAAS,GAAG,CAAC,GAAkC,EAAE,EAAE;QACvD,IAAI,GAAmG,CAAC;QACxG,IAAI,CAAC;YAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAkB,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC;YAAC,OAAO;QAAC,CAAC;QACvH,IAAI,GAAG,CAAC,MAAM,KAAK,uBAAuB,IAAI,GAAG,CAAC,MAAM,EAAE,IAAI,KAAK,cAAc,EAAE,CAAC;YAClF,IAAI,CAAC;gBACH,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC;gBACvD,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ;oBAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;qBACtD,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;oBAC5D,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;gBAC9E,CAAC;YACH,CAAC;YAAC,MAAM,CAAC,CAAC,6BAA6B,CAAC,CAAC;YACzC,OAAO;QACT,CAAC;QACD,IAAI,GAAG,CAAC,MAAM,KAAK,8BAA8B,EAAE,CAAC;YAClD,oEAAoE;YACpE,2EAA2E;YAC3E,yEAAyE;YACzE,oEAAoE;YACpE,4DAA4D;YAC5D,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;YAC5C,MAAM,MAAM,GAAG,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,cAAc,CAAC;YAC3D,IAAI,CAAC,6BAA6B,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;YAChD,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,sBAAsB,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,IAAI,IAAI,IAAI,QAAQ,KAAK,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;YACpJ,OAAO;QACT,CAAC;QACD,IAAI,GAAG,CAAC,MAAM,KAAK,sBAAsB,EAAE,CAAC;YAC1C,wEAAwE;YACxE,yEAAyE;YACzE,oEAAoE;YACpE,oDAAoD;YACpD,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,EAAE,UAA8D,CAAC;YACxF,IAAI,IAAI,EAAE,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC/E,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAChC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC9B,CAAC;YACD,OAAO;QACT,CAAC;QACD,IAAI,GAAG,CAAC,MAAM,KAAK,wBAAwB,EAAE,CAAC;YAC5C,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC;YACjC,IAAI,OAAO,GAAG,KAAK,QAAQ;gBAAE,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACtD,kEAAkE;YAClE,sCAAsC;YACtC,OAAO;QACT,CAAC;QACD,IAAI,GAAG,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;YACtB,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC;YAC9B,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBACpB,mBAAmB,GAAG,CAAC,CAAC;gBACxB,aAAa,GAAG,EAAE,CAAC,CAAC,gDAAgD;gBACpE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;YAC5C,CAAC;YACD,UAAU,EAAE,CAAC,CAAC,+DAA+D;QAC/E,CAAC;IACH,CAAC,CAAC;IAEF;;0BAEsB;IACtB,KAAK,UAAU,aAAa;QAC1B,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAsF,CAAC;QACtH,OAAO,OAAO;aACX,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,CAAC,oBAAoB,CAAC;aAC1D,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,oBAAqB,CAAC,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;IACzG,CAAC;IAED;;sFAEkF;IAClF,SAAS,QAAQ,CAAC,KAAuD;QACvE,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,aAAa,CAAC,CAAC;QAC3D,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;QAChD,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;IACnD,CAAC;IAED;;iEAE6D;IAC7D,MAAM,YAAY,GAAG,CAAC,QAAgB,EAAE,EAAE;QACxC,IAAI,MAAM,IAAI,QAAQ,KAAK,eAAe;YAAE,OAAO;QACnD,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,yBAAyB,QAAQ,cAAc,CAAC,CAAC;QAClE,iBAAiB,GAAG,kBAAkB,QAAQ,EAAE,CAAC;QACjD,MAAM,IAAI,GAAG,EAAE,CAAC;QAChB,EAAE,GAAG,IAAI,CAAC;QACV,YAAY,EAAE,CAAC;QACf,IAAI,SAAS,EAAE,CAAC;YAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YAAC,SAAS,GAAG,IAAI,CAAC;QAAC,CAAC;QAC7D,QAAQ,GAAG,KAAK,CAAC;QACjB,IAAI,CAAC;YAAC,IAAI,EAAE,KAAK,EAAE,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;QAC7C,iBAAiB,EAAE,CAAC;IACtB,CAAC,CAAC;IAEF,4FAA4F;IAC5F,KAAK,UAAU,OAAO;QACpB,IAAI,MAAM;YAAE,OAAO,KAAK,CAAC;QACzB,IAAI,UAAU,GAAG,iBAAiB,CAAC;QACnC,iBAAiB,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,aAAa,EAAE,CAAC;YACpC,YAAY,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAC/C,IAAI,CAAC,UAAU;gBAAE,UAAU,GAAG,QAAQ,CAAC,KAAK,CAAC,EAAE,IAAI,IAAI,IAAI,CAAC;QAC9D,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,0CAA0C,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC1E,IAAI,CAAC,UAAU;gBAAE,OAAO,KAAK,CAAC,CAAC,8CAA8C;QAC/E,CAAC;QACD,IAAI,CAAC,UAAU,EAAE,CAAC;YAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,8BAA8B,CAAC,CAAC;YAAC,OAAO,KAAK,CAAC;QAAC,CAAC;QACpF,IAAI,MAAM;YAAE,OAAO,KAAK,CAAC;QACzB,eAAe,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;QAEpD,MAAM,IAAI,GAAG,IAAI,MAAM,CAAC,QAAQ,IAAI,IAAI,IAAI,GAAG,UAAU,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,CAAC,CAAC;QAChG,IAA0C,CAAC,UAAU,GAAG,aAAa,CAAC;QACvE,EAAE,GAAG,IAAI,CAAC;QACV,QAAQ,GAAG,KAAK,CAAC;QACjB,mBAAmB,GAAG,CAAC,CAAC;QAExB,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE;YACnB,IAAI,MAAM,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;gBAAC,IAAI,CAAC;oBAAC,IAAI,CAAC,KAAK,EAAE,CAAC;gBAAC,CAAC;gBAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;gBAAC,OAAO;YAAC,CAAC;YACnF,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,gDAAgD,CAAC,CAAC;YACnE,IAAI,CAAC,aAAa,CAAC,CAAC;YACpB,yEAAyE;YACzE,wEAAwE;YACxE,IAAI,CAAC,mBAAmB,CAAC,CAAC;YAC1B,0EAA0E;YAC1E,+EAA+E;YAC/E,IAAI,CAAC,2BAA2B,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;YACtD,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;gBACtC,sEAAsE;gBACtE,wEAAwE;gBACxE,0EAA0E;gBAC1E,IAAI,CAAC,gBAAgB,CAAC,CAAC;gBACvB,IAAI,CAAC,oBAAoB,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC;gBACrD,IAAI,CAAC,uCAAuC,EAAE,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC,CAAC;gBAC3E,IAAI,CAAC,kBAAkB,EAAE,EAAE,UAAU,EAAE,eAAe,EAAE,CAAC,CAAC;YAC5D,CAAC;YACD,YAAY,EAAE,CAAC;YACf,wEAAwE;YACxE,mEAAmE;YACnE,IAAI,SAAS,EAAE,CAAC;gBAAC,YAAY,CAAC,SAAS,CAAC,CAAC;gBAAC,SAAS,GAAG,IAAI,CAAC;YAAC,CAAC;YAC7D,QAAQ,GAAG,KAAK,CAAC;YACjB,IAAI,EAAE,CAAC;QACT,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAC9B,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAU,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,2BAA2B,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAC7F,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YACpB,IAAI,MAAM;gBAAE,OAAO;YACnB,IAAI,EAAE,KAAK,IAAI;gBAAE,OAAO,CAAC,uCAAuC;YAChE,EAAE,GAAG,IAAI,CAAC;YACV,YAAY,EAAE,CAAC;YACf,QAAQ,GAAG,KAAK,CAAC;YACjB,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,4CAA4C,CAAC,CAAC;YAC/D,iBAAiB,EAAE,CAAC;QACtB,CAAC,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;IAED,SAAS,iBAAiB;QACxB,IAAI,MAAM,IAAI,cAAc;YAAE,OAAO;QACrC,cAAc,GAAG,UAAU,CAAC,KAAK,IAAI,EAAE;YACrC,cAAc,GAAG,IAAI,CAAC;YACtB,IAAI,MAAM;gBAAE,OAAO;YACnB,MAAM,EAAE,GAAG,MAAM,OAAO,EAAE,CAAC;YAC3B,IAAI,CAAC,EAAE,IAAI,CAAC,MAAM;gBAAE,iBAAiB,EAAE,CAAC;QAC1C,CAAC,EAAE,kBAAkB,CAAC,CAAC;IACzB,CAAC;IAED,uFAAuF;IACvF,MAAM,EAAE,GAAG,MAAM,OAAO,EAAE,CAAC;IAC3B,IAAI,CAAC,EAAE;QAAE,OAAO,IAAI,CAAC;IAErB,MAAM,YAAY,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IACjD,MAAM,OAAO,GAA2B,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;IACzE,4EAA4E;IAC5E,8EAA8E;IAC9E,8EAA8E;IAC9E,wEAAwE;IACxE,+DAA+D;IAC/D,IAAI,WAAW,GAAG,CAAC,CAAC;IAEpB,0EAA0E;IAC1E,0EAA0E;IAC1E,2EAA2E;IAC3E,0EAA0E;IAC1E,0EAA0E;IAC1E,qEAAqE;IACrE,4EAA4E;IAC5E,2EAA2E;IAC3E,uEAAuE;IACvE,uEAAuE;IACvE,kDAAkD;IAClD,MAAM,KAAK,GAA2C,EAAE,CAAC;IACzD,IAAI,SAAS,GAAyC,IAAI,CAAC;IAC3D,IAAI,QAAQ,GAAG,CAAC,CAAC,CAAC,6DAA6D;IAC/E,MAAM,QAAQ,GAAG,GAAG,EAAE;QACpB,SAAS,GAAG,IAAI,CAAC;QACjB,OAAO,KAAK,CAAC,MAAM,EAAE,CAAC;YACpB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACtB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACvB,MAAM,GAAG,GAAG,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC;YAC9B,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC;gBACf,KAAK,CAAC,KAAK,EAAE,CAAC;gBACd,IAAI,CAAC,IAAI,EAAE,CAAC;gBACZ,SAAS;YACX,CAAC;YACD,SAAS,GAAG,UAAU,CAAC,QAAQ,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC;YAC5C,OAAO;QACT,CAAC;IACH,CAAC,CAAC;IACF,gEAAgE;IAChE,MAAM,SAAS,GAAG,CAAC,CAAS,EAAE,cAAuB,EAAE,IAAgB,EAAE,EAAE;QACzE,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,yEAAyE;QACzE,2EAA2E;QAC3E,IAAI,cAAc,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,GAAG,CAAC,IAAI,GAAG,CAAC;YAAE,QAAQ,GAAG,GAAG,GAAG,CAAC,CAAC;QACtF,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;QACxB,IAAI,CAAC,SAAS;YAAE,QAAQ,EAAE,CAAC;IAC7B,CAAC,CAAC;IACF,8EAA8E;IAC9E,MAAM,WAAW,GAAG,CAAC,IAAgB,EAAE,EAAE;QACvC,IAAI,KAAK,CAAC,MAAM;YAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;;YAChE,IAAI,EAAE,CAAC;IACd,CAAC,CAAC;IACF,mFAAmF;IACnF,uCAAuC;IACvC,MAAM,SAAS,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACnH,oEAAoE;IACpE,MAAM,MAAM,GAAqC;QAC/C,KAAK,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC;QAC1F,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC;QAClG,UAAU,EAAE,CAAC,YAAY,EAAE,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC;QAClG,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC;QAC1E,EAAE,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC;QACpG,EAAE,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,GAAG,CAAC;KAC3G,CAAC;IACF,MAAM,UAAU,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,MAAc,EAAE,EAAE;QAC1D,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,CAAC,0BAA0B,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC;QACpG,IAAI,CAAC,0BAA0B,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC;IACvG,CAAC,CAAC;IAEF,iFAAiF;IACjF,uEAAuE;IACvE,+DAA+D;IAC/D,IAAI,eAAe,GAAG,CAAC,CAAC;IACxB,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,MAAM,WAAW,GAAG,CAAC,OAA4C,EAAE,EAAE;QACnE,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAAC,eAAe,GAAG,CAAC,CAAC;YAAC,OAAO;QAAC,CAAC;QACxD,MAAM,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3D,MAAM,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3D,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YAAE,OAAO;QAC3C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;QAC5C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,IAAI,eAAe,GAAG,CAAC,IAAI,GAAG,GAAG,WAAW,GAAG,GAAG,EAAE,CAAC;YACnD,MAAM,KAAK,GAAG,MAAM,GAAG,eAAe,CAAC;YACvC,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;gBACxB,IAAI,CAAC,0BAA0B,EAAE;oBAC/B,IAAI,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC;oBACtD,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC,UAAU;iBACjE,CAAC,CAAC;gBACH,eAAe,GAAG,MAAM,CAAC;YAC3B,CAAC;QACH,CAAC;aAAM,CAAC;YACN,eAAe,GAAG,MAAM,CAAC;QAC3B,CAAC;QACD,WAAW,GAAG,GAAG,CAAC;IACpB,CAAC,CAAC;IAEF,OAAO;QACL,WAAW,EAAE,CAAC,IAA6B,EAAE,EAAE;YAC7C,IAAI,MAAM;gBAAE,OAAO;YACnB,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;YACtD,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YACvD,wEAAwE;YACxE,oEAAoE;YACpE,yEAAyE;YACzE,8CAA8C;YAC9C,IAAI,CAAC,MAAM,KAAK,WAAW,IAAI,MAAM,KAAK,MAAM,CAAC,IAAI,WAAW,KAAK,CAAC;gBAAE,KAAK,EAAE,CAAC;YAChF,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC1B,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YAClC,MAAM,WAAW,GAAG,CAAC,OAAgB,EAAE,IAAgB,EAAE,EAAE;gBACzD,IAAI,KAAK;oBAAE,SAAS,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;;oBACnC,WAAW,CAAC,IAAI,CAAC,CAAC;YACzB,CAAC,CAAC;YACF,IAAI,MAAM,KAAK,WAAW,IAAI,MAAM,KAAK,MAAM;gBAAE,WAAW,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,0BAA0B,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC;iBAC3J,IAAI,MAAM,KAAK,OAAO;gBAAE,WAAW,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;iBACpE,IAAI,MAAM,KAAK,YAAY;gBAAE,WAAW,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;iBAC1E,IAAI,MAAM,KAAK,aAAa;gBAAE,WAAW,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;iBAC5E,IAAI,MAAM,KAAK,WAAW,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;gBAAC,MAAM,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC;gBAAC,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,WAAW,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,0BAA0B,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAAC,CAAC;iBAC3R,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;gBAAC,MAAM,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC;gBAAC,WAAW,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,WAAW,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,0BAA0B,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAAC,CAAC;iBAC1R,IAAI,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,OAAO;gBAAE,WAAW,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,0BAA0B,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;YAClN,wEAAwE;YACxE,sDAAsD;iBACjD,IAAI,MAAM,KAAK,YAAY,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ;gBAAE,IAAI,CAAC,kBAAkB,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;iBAC5H,IAAI,MAAM,KAAK,YAAY,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;gBAAE,WAAW,CAAC,IAAI,CAAC,OAA8C,CAAC,CAAC;QACpI,CAAC;QACD,iBAAiB,EAAE,CAAC,GAAW,EAAE,EAAE;YACjC,IAAI,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC;gBAAE,OAAO;YACrC,MAAM,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;YACpB,6EAA6E;YAC7E,wEAAwE;YACxE,qDAAqD;YACrD,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,CAAC,IAAI,WAAW,KAAK,CAAC;gBAAE,KAAK,EAAE,CAAC;YACnE,MAAM,EAAE,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACnE,yEAAyE;YACzE,oEAAoE;YACpE,MAAM,OAAO,GAAG,IAAI,KAAK,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,CAAC;YAClG,MAAM,EAAE,GAAG,OAAO,IAAI,IAAI,KAAK,IAAI,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YACpF,MAAM,WAAW,GAAG,CAAC,OAAgB,EAAE,IAAgB,EAAE,EAAE;gBACzD,IAAI,EAAE,KAAK,IAAI;oBAAE,SAAS,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;;oBACzC,WAAW,CAAC,IAAI,CAAC,CAAC;YACzB,CAAC,CAAC;YACF,IAAI,IAAI,KAAK,IAAI,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;gBAAC,MAAM,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC;gBAAC,WAAW,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,0BAA0B,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC;YAAC,CAAC;iBAC9K,IAAI,IAAI,KAAK,IAAI,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;gBAAC,MAAM,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC;gBAAC,WAAW,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;YAAC,CAAC;iBAChH,IAAI,IAAI,KAAK,IAAI,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;gBAAC,MAAM,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC;gBAAC,WAAW,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;YAAC,CAAC;iBACjH,IAAI,IAAI,KAAK,IAAI,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;gBAAC,MAAM,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC;gBAAC,WAAW,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;YAAC,CAAC;iBAClH,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,CAAC,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;gBAC9E,MAAM,CAAC,GAAG,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC;gBACtE,MAAM,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC;gBACzB,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,WAAW,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,0BAA0B,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5K,CAAC;iBAAM,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,CAAC,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;gBAChF,MAAM,CAAC,GAAG,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC;gBACtE,MAAM,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC;gBACzB,WAAW,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,WAAW,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,0BAA0B,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/K,CAAC;iBAAM,IAAI,IAAI,KAAK,IAAI,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;gBAC5C,MAAM,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;gBAC9C,WAAW,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,0BAA0B,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;YAChH,CAAC;iBAAM,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,CAAC,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;gBAChF,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;gBACpC,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;gBAChD,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;gBAC5B,MAAM,MAAM,GAAG,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,CAAC;gBAC9C,MAAM,QAAQ,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,oBAAoB;gBACzD,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC1B,wEAAwE;gBACxE,oEAAoE;gBACpE,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC9C,qEAAqE;oBACrE,IAAI,MAAM;wBAAE,IAAI,CAAC,wBAAwB,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;oBAC9F,IAAI,IAAI,KAAK,IAAI;wBAAE,IAAI,CAAC,wBAAwB,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC7F,CAAC;qBAAM,CAAC;oBACN,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;oBACzF,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBACvF,IAAI,CAAC,wBAAwB,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,qBAAqB,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC1I,CAAC;YACH,CAAC;QACH,CAAC;QACD,MAAM,EAAE,CAAC,MAAc,EAAE,OAAe,EAAE,EAAE;YAC1C,4EAA4E;YAC5E,6EAA6E;YAC7E,6DAA6D;QAC/D,CAAC;QACD,KAAK,EAAE,GAAG,EAAE;YACV,MAAM,GAAG,IAAI,CAAC;YACd,IAAI,cAAc,EAAE,CAAC;gBAAC,YAAY,CAAC,cAAc,CAAC,CAAC;gBAAC,cAAc,GAAG,IAAI,CAAC;YAAC,CAAC;YAC5E,IAAI,SAAS,EAAE,CAAC;gBAAC,YAAY,CAAC,SAAS,CAAC,CAAC;gBAAC,SAAS,GAAG,IAAI,CAAC;YAAC,CAAC;YAC7D,IAAI,SAAS,EAAE,CAAC;gBAAC,YAAY,CAAC,SAAS,CAAC,CAAC;gBAAC,SAAS,GAAG,IAAI,CAAC;YAAC,CAAC;YAC7D,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;YACjB,YAAY,EAAE,CAAC;YACf,IAAI,CAAC;gBAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;YAC3D,IAAI,CAAC;gBAAC,EAAE,EAAE,KAAK,EAAE,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;YAC3C,EAAE,GAAG,IAAI,CAAC;QACZ,CAAC;KACF,CAAC;AACJ,CAAC;AAyBD,MAAM,WAAW,GAAG,IAAI,GAAG,EAA2B,CAAC;AAEvD,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,IAAiH,EACjH,QAAgB,EAChB,KAAwB;IAExB,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;IACxC,IAAI,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACjC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,KAAK,GAAG,EAAE,OAAO,EAAE,IAAI,GAAG,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QAC9D,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC9B,CAAC;IACD,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAEnC,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;QACtC,MAAM,CAAC,GAAG,KAAK,CAAC;QAChB,MAAM,IAAI,GAAG,CAAC,CAAiC,EAAE,EAAE,GAAG,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE;YAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAClG,MAAM,GAAG,GAAG,CAAC,SAAuD,EAAE,IAAsC,EAAE,IAAY,EAAU,EAAE;YACpI,IAAI,GAAuB,CAAC;YAC5B,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;gBACnC,MAAM,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;gBACvB,IAAI,CAAC,KAAK,SAAS;oBAAE,GAAG,GAAG,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YAClE,CAAC;YACD,OAAO,GAAG,IAAI,IAAI,CAAC;QACrB,CAAC,CAAC;QACF,CAAC,CAAC,QAAQ,GAAG,mBAAmB,CAAC;YAC/B,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC/C,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YAC/D,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC;YACnD,UAAU,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;YAC5E,gBAAgB,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,gBAAgB,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,aAAa,IAAI,EAAE,CAAC;YAC9F,eAAe,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;SACtE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;YACZ,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC;YACd,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC;YAClB,IAAI,CAAC,CAAC;gBAAE,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAChC,OAAO,CAAC,CAAC;QACX,CAAC,CAAC,CAAC;IACL,CAAC;IAED,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,CAAC,MAAM,KAAK,CAAC,QAAQ,CAAC,CAAC;IACxD,uDAAuD;IACvD,IAAI,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7C,IAAI,CAAC,OAAO;YAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC7C,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,IAAY,EAAE,IAAY,EAAE,QAAgB;IAC/E,MAAM,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,EAAE,CAAC;IAC9B,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACnC,IAAI,CAAC,KAAK;QAAE,OAAO;IACnB,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC/B,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC;QAAE,OAAO;IACnC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACxB,MAAM,KAAK,GAAG,CAAC,CAAuB,EAAE,EAAE,GAAG,IAAI,CAAC;QAAC,CAAC,EAAE,KAAK,EAAE,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1F,IAAI,KAAK,CAAC,OAAO;QAAE,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;SACnC,IAAI,KAAK,CAAC,QAAQ;QAAE,KAAK,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC3D,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Unseal the viewer's session key from its `encryptBox` bundle using the bot's
|
|
3
|
+
* raw Curve25519 private key. Returns null on a malformed bundle / wrong key
|
|
4
|
+
* (e.g. a server-swapped key the bot's identity can't open) — caller stays
|
|
5
|
+
* plaintext-refusing rather than trusting an unverifiable key.
|
|
6
|
+
*/
|
|
7
|
+
export declare function unsealScreenKey(sealedB64: string, botPrivateKey: Uint8Array): Promise<Buffer | null>;
|
|
8
|
+
/** AES-256-GCM encrypt → [iv(12)][ciphertext][tag(16)] (WebCrypto-compatible). */
|
|
9
|
+
export declare function encryptScreenPayload(key: Buffer, plaintext: Buffer): Buffer;
|
|
10
|
+
/** Reverse of encryptScreenPayload. Returns null on a tag mismatch / short input. */
|
|
11
|
+
export declare function decryptScreenPayload(key: Buffer, enc: Buffer): Buffer | null;
|
|
12
|
+
/** Binary envelope marker for an encrypted viewer→gateway input message. Distinct
|
|
13
|
+
* from every plaintext input opcode (0x01–0x12) so the gateway can tell them apart. */
|
|
14
|
+
export declare const E2E_INPUT_MARKER = 229;
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* App-layer E2E for the bot computer view's SERVER-RELAY leg.
|
|
3
|
+
*
|
|
4
|
+
* The WebRTC direct tier (P2P / TURN DataChannel) is already end-to-end via
|
|
5
|
+
* DTLS, so the only plaintext exposure is the relay fallback — where the Ozaiya
|
|
6
|
+
* server pipes frames byte-for-byte and could read the screen. This closes that:
|
|
7
|
+
*
|
|
8
|
+
* 1. The viewer mints a random 32-byte session key K and seals it to the BOT's
|
|
9
|
+
* Curve25519 public key (the same `encryptBox` sealed bundle used to wrap
|
|
10
|
+
* group keys). It rides the relay as `{type:'e2e-key'}` — the server can't
|
|
11
|
+
* open it (it has no bot private key), so it can't MITM the exchange.
|
|
12
|
+
* 2. The gateway, which holds the bot's private key, unseals K.
|
|
13
|
+
* 3. Both sides AES-256-GCM the payloads with K. Wire = [iv(12)][ciphertext||
|
|
14
|
+
* tag(16)] — byte-identical to the app's WebCrypto `encryptAESGCM` output,
|
|
15
|
+
* so the viewer decrypts frames with the existing `decryptAESGCMRawIv`.
|
|
16
|
+
*
|
|
17
|
+
* Trust anchor = the bot's published public key (server-vouched, like bot group
|
|
18
|
+
* keys today) → RustDesk-default parity; TOFU pinning would exceed it later.
|
|
19
|
+
*/
|
|
20
|
+
import crypto from "node:crypto";
|
|
21
|
+
import { decryptBox } from "./crypto.js";
|
|
22
|
+
const IV_LEN = 12;
|
|
23
|
+
const TAG_LEN = 16;
|
|
24
|
+
/**
|
|
25
|
+
* Unseal the viewer's session key from its `encryptBox` bundle using the bot's
|
|
26
|
+
* raw Curve25519 private key. Returns null on a malformed bundle / wrong key
|
|
27
|
+
* (e.g. a server-swapped key the bot's identity can't open) — caller stays
|
|
28
|
+
* plaintext-refusing rather than trusting an unverifiable key.
|
|
29
|
+
*/
|
|
30
|
+
export async function unsealScreenKey(sealedB64, botPrivateKey) {
|
|
31
|
+
let bundle;
|
|
32
|
+
try {
|
|
33
|
+
bundle = Buffer.from(sealedB64, "base64");
|
|
34
|
+
}
|
|
35
|
+
catch {
|
|
36
|
+
return null;
|
|
37
|
+
}
|
|
38
|
+
const key = await decryptBox(new Uint8Array(bundle), botPrivateKey);
|
|
39
|
+
if (!key || key.length !== 32)
|
|
40
|
+
return null;
|
|
41
|
+
return Buffer.from(key);
|
|
42
|
+
}
|
|
43
|
+
/** AES-256-GCM encrypt → [iv(12)][ciphertext][tag(16)] (WebCrypto-compatible). */
|
|
44
|
+
export function encryptScreenPayload(key, plaintext) {
|
|
45
|
+
const iv = crypto.randomBytes(IV_LEN);
|
|
46
|
+
const cipher = crypto.createCipheriv("aes-256-gcm", key, iv);
|
|
47
|
+
const ct = Buffer.concat([cipher.update(plaintext), cipher.final()]);
|
|
48
|
+
return Buffer.concat([iv, ct, cipher.getAuthTag()]);
|
|
49
|
+
}
|
|
50
|
+
/** Reverse of encryptScreenPayload. Returns null on a tag mismatch / short input. */
|
|
51
|
+
export function decryptScreenPayload(key, enc) {
|
|
52
|
+
if (enc.length < IV_LEN + TAG_LEN)
|
|
53
|
+
return null;
|
|
54
|
+
const iv = enc.subarray(0, IV_LEN);
|
|
55
|
+
const tag = enc.subarray(enc.length - TAG_LEN);
|
|
56
|
+
const ct = enc.subarray(IV_LEN, enc.length - TAG_LEN);
|
|
57
|
+
try {
|
|
58
|
+
const d = crypto.createDecipheriv("aes-256-gcm", key, iv);
|
|
59
|
+
d.setAuthTag(tag);
|
|
60
|
+
return Buffer.concat([d.update(ct), d.final()]);
|
|
61
|
+
}
|
|
62
|
+
catch {
|
|
63
|
+
return null;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
/** Binary envelope marker for an encrypted viewer→gateway input message. Distinct
|
|
67
|
+
* from every plaintext input opcode (0x01–0x12) so the gateway can tell them apart. */
|
|
68
|
+
export const E2E_INPUT_MARKER = 0xe5;
|
|
69
|
+
//# sourceMappingURL=sandboxScreenE2E.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sandboxScreenE2E.js","sourceRoot":"","sources":["../../src/sandboxScreenE2E.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,MAAM,MAAM,GAAG,EAAE,CAAC;AAClB,MAAM,OAAO,GAAG,EAAE,CAAC;AAEnB;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,SAAiB,EAAE,aAAyB;IAChF,IAAI,MAAc,CAAC;IACnB,IAAI,CAAC;QAAC,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,IAAI,CAAC;IAAC,CAAC;IACzE,MAAM,GAAG,GAAG,MAAM,UAAU,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE,aAAa,CAAC,CAAC;IACpE,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,EAAE;QAAE,OAAO,IAAI,CAAC;IAC3C,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC1B,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,oBAAoB,CAAC,GAAW,EAAE,SAAiB;IACjE,MAAM,EAAE,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IACtC,MAAM,MAAM,GAAG,MAAM,CAAC,cAAc,CAAC,aAAa,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;IAC7D,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACrE,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;AACtD,CAAC;AAED,qFAAqF;AACrF,MAAM,UAAU,oBAAoB,CAAC,GAAW,EAAE,GAAW;IAC3D,IAAI,GAAG,CAAC,MAAM,GAAG,MAAM,GAAG,OAAO;QAAE,OAAO,IAAI,CAAC;IAC/C,MAAM,EAAE,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IACnC,MAAM,GAAG,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC;IAC/C,MAAM,EAAE,GAAG,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC;IACtD,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,MAAM,CAAC,gBAAgB,CAAC,aAAa,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;QAC1D,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAClB,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAClD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;wFACwF;AACxF,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,CAAC"}
|
|
@@ -1,6 +1,13 @@
|
|
|
1
1
|
export interface H264Transcoder {
|
|
2
2
|
/** Feed one JPEG frame (drops internally when the encoder can't keep up). */
|
|
3
3
|
feed: (jpeg: Buffer) => void;
|
|
4
|
+
/**
|
|
5
|
+
* Force a keyframe NOW (viewer PLI / fresh joiner). A piped libx264 has no
|
|
6
|
+
* on-demand IDR signal, so we respawn the encoder — a fresh process emits
|
|
7
|
+
* SPS+PPS+IDR as its first output. Debounced: a PLI storm (or a keyframe just
|
|
8
|
+
* produced by a recent respawn / the natural GOP) is a no-op.
|
|
9
|
+
*/
|
|
10
|
+
forceKeyframe: () => void;
|
|
4
11
|
close: () => void;
|
|
5
12
|
}
|
|
6
13
|
export interface H264TranscoderOptions {
|
|
@@ -23,10 +23,17 @@
|
|
|
23
23
|
* recovers).
|
|
24
24
|
*/
|
|
25
25
|
import { spawn, execFile } from "node:child_process";
|
|
26
|
-
/** How long to wait for more stdout before flushing the tail as a complete AU.
|
|
27
|
-
|
|
26
|
+
/** How long to wait for more stdout before flushing the tail as a complete AU.
|
|
27
|
+
* Every frame's AU pays this (the next AUD only arrives with the NEXT frame),
|
|
28
|
+
* so it's pure added latency — just enough to coalesce a multi-chunk AU (>64KB
|
|
29
|
+
* pipe writes split, but the chunks land sub-millisecond apart). */
|
|
30
|
+
const TAIL_FLUSH_MS = 4;
|
|
28
31
|
/** Drop frames instead of queueing unboundedly into a stalled encoder. */
|
|
29
32
|
const STDIN_HIGH_WATER = 2 * 1024 * 1024;
|
|
33
|
+
/** Ignore a forceKeyframe within this long of the last (re)spawn — a fresh
|
|
34
|
+
* keyframe was just emitted (or is in flight), so respawning again only thrashes
|
|
35
|
+
* the encoder. Also bounds a PLI storm to one respawn per window. */
|
|
36
|
+
const KEYFRAME_RESPAWN_DEBOUNCE_MS = 1500;
|
|
30
37
|
/**
|
|
31
38
|
* Try each candidate argv prefix with `-version`; return the first that runs.
|
|
32
39
|
*/
|
|
@@ -58,6 +65,15 @@ export function createH264Transcoder(opts) {
|
|
|
58
65
|
const args = [
|
|
59
66
|
...opts.cmdPrefix.slice(1),
|
|
60
67
|
"-hide_banner", "-loglevel", "error",
|
|
68
|
+
// probesize 32 (the minimum) is LOAD-BEARING: with the default (5MB/5s of
|
|
69
|
+
// stream), avformat_find_stream_info holds EVERY frame until the probe
|
|
70
|
+
// window fills — measured ~5s of buffered frames before the first AU comes
|
|
71
|
+
// out, which then burst through with near-identical send timestamps and
|
|
72
|
+
// blow up the viewer's jitter buffer. With 32, probing completes on the
|
|
73
|
+
// first JPEG and frames flow through immediately. Do NOT add
|
|
74
|
+
// `-fflags nobuffer` here — on the sandbox ffmpeg build (5.1.9) it makes
|
|
75
|
+
// the encoder consume frames without emitting ANY output (measured).
|
|
76
|
+
"-probesize", "32",
|
|
61
77
|
"-f", "image2pipe", "-framerate", String(fps), "-c:v", "mjpeg", "-i", "pipe:0",
|
|
62
78
|
"-an",
|
|
63
79
|
"-c:v", "libx264", "-preset", "ultrafast", "-tune", "zerolatency",
|
|
@@ -68,21 +84,16 @@ export function createH264Transcoder(opts) {
|
|
|
68
84
|
"-g", String(fps), "-keyint_min", String(fps),
|
|
69
85
|
// aud=1 → AU delimiters for output framing; scenecut=0 → keyframes only on the GOP.
|
|
70
86
|
"-x264-params", "aud=1:scenecut=0",
|
|
87
|
+
// Write each encoded packet out as soon as the muxer has it.
|
|
88
|
+
"-flush_packets", "1",
|
|
71
89
|
"-f", "h264", "pipe:1",
|
|
72
90
|
];
|
|
73
91
|
let closed = false;
|
|
74
|
-
let proc;
|
|
75
|
-
|
|
76
|
-
proc = spawn(opts.cmdPrefix[0], args, { stdio: ["pipe", "pipe", "pipe"], env: opts.env });
|
|
77
|
-
}
|
|
78
|
-
catch (err) {
|
|
79
|
-
opts.log?.warn?.(`[sandbox-h264] spawn failed: ${String(err)}`);
|
|
80
|
-
setImmediate(() => opts.onExit?.());
|
|
81
|
-
return { feed: () => { }, close: () => { } };
|
|
82
|
-
}
|
|
83
|
-
opts.log?.info?.(`[sandbox-h264] encoder started (${opts.cmdPrefix.join(" ")} @ ${fps}fps/${kbps}k)`);
|
|
92
|
+
let proc = null;
|
|
93
|
+
let lastSpawnAt = 0;
|
|
84
94
|
let pending = Buffer.alloc(0);
|
|
85
95
|
let flushTimer = null;
|
|
96
|
+
let stderrTail = "";
|
|
86
97
|
const emitRange = (start, end) => {
|
|
87
98
|
if (end > start)
|
|
88
99
|
opts.onAccessUnit(pending.subarray(start, end));
|
|
@@ -113,53 +124,111 @@ export function createH264Transcoder(opts) {
|
|
|
113
124
|
if (consumed > 0)
|
|
114
125
|
pending = pending.subarray(consumed);
|
|
115
126
|
};
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
127
|
+
// Wire stdout/stderr/exit/error onto one encoder process. `p !== proc` means a
|
|
128
|
+
// respawn already superseded this process, so its late events are ignored.
|
|
129
|
+
const wireProc = (p) => {
|
|
130
|
+
p.stdout.on("data", (chunk) => {
|
|
131
|
+
if (closed || p !== proc)
|
|
132
|
+
return;
|
|
133
|
+
pending = pending.length ? Buffer.concat([pending, chunk]) : chunk;
|
|
134
|
+
drain(false);
|
|
135
|
+
// zerolatency flushes whole frames — if no more bytes arrive shortly, the
|
|
136
|
+
// tail is a complete AU; emit it now instead of waiting for the next frame.
|
|
137
|
+
if (flushTimer)
|
|
138
|
+
clearTimeout(flushTimer);
|
|
139
|
+
flushTimer = setTimeout(() => { if (!closed)
|
|
140
|
+
drain(true); }, TAIL_FLUSH_MS);
|
|
141
|
+
});
|
|
142
|
+
p.stderr.on("data", (c) => { stderrTail = (stderrTail + c.toString()).slice(-500); });
|
|
143
|
+
p.on("exit", (code) => {
|
|
144
|
+
// Superseded by a respawn → not a real death; the new proc carries on.
|
|
145
|
+
if (p !== proc)
|
|
146
|
+
return;
|
|
147
|
+
if (flushTimer) {
|
|
148
|
+
clearTimeout(flushTimer);
|
|
149
|
+
flushTimer = null;
|
|
150
|
+
}
|
|
151
|
+
if (closed)
|
|
152
|
+
return;
|
|
153
|
+
closed = true;
|
|
154
|
+
opts.log?.warn?.(`[sandbox-h264] encoder exited code=${code}${stderrTail ? ` stderr: ${stderrTail.trim()}` : ""}`);
|
|
155
|
+
opts.onExit?.();
|
|
156
|
+
});
|
|
157
|
+
p.on("error", (err) => {
|
|
158
|
+
if (p !== proc || closed)
|
|
159
|
+
return;
|
|
160
|
+
closed = true;
|
|
161
|
+
opts.log?.warn?.(`[sandbox-h264] encoder error: ${err.message}`);
|
|
162
|
+
opts.onExit?.();
|
|
163
|
+
});
|
|
164
|
+
};
|
|
165
|
+
/** Spawn a fresh encoder process and make it the live one. Returns false on
|
|
166
|
+
* spawn failure (initial spawn then signals onExit, like before). */
|
|
167
|
+
const spawnEncoder = () => {
|
|
168
|
+
let p;
|
|
169
|
+
try {
|
|
170
|
+
p = spawn(opts.cmdPrefix[0], args, { stdio: ["pipe", "pipe", "pipe"], env: opts.env });
|
|
134
171
|
}
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
opts.
|
|
146
|
-
|
|
147
|
-
}
|
|
172
|
+
catch (err) {
|
|
173
|
+
opts.log?.warn?.(`[sandbox-h264] spawn failed: ${String(err)}`);
|
|
174
|
+
return false;
|
|
175
|
+
}
|
|
176
|
+
proc = p;
|
|
177
|
+
lastSpawnAt = Date.now();
|
|
178
|
+
wireProc(p);
|
|
179
|
+
return true;
|
|
180
|
+
};
|
|
181
|
+
if (!spawnEncoder()) {
|
|
182
|
+
setImmediate(() => opts.onExit?.());
|
|
183
|
+
return { feed: () => { }, forceKeyframe: () => { }, close: () => { } };
|
|
184
|
+
}
|
|
185
|
+
opts.log?.info?.(`[sandbox-h264] encoder started (${opts.cmdPrefix.join(" ")} @ ${fps}fps/${kbps}k)`);
|
|
148
186
|
return {
|
|
149
187
|
feed: (jpeg) => {
|
|
150
|
-
|
|
188
|
+
const p = proc;
|
|
189
|
+
if (closed || !p || !p.stdin.writable)
|
|
151
190
|
return;
|
|
152
|
-
if (
|
|
191
|
+
if (p.stdin.writableLength > STDIN_HIGH_WATER)
|
|
153
192
|
return; // encoder stalled — drop
|
|
154
193
|
try {
|
|
155
|
-
|
|
194
|
+
p.stdin.write(jpeg);
|
|
156
195
|
}
|
|
157
196
|
catch { /* dying — exit handler fires */ }
|
|
158
197
|
},
|
|
198
|
+
forceKeyframe: () => {
|
|
199
|
+
if (closed)
|
|
200
|
+
return;
|
|
201
|
+
// A recent (re)spawn already produced (or is producing) a fresh keyframe.
|
|
202
|
+
if (Date.now() - lastSpawnAt < KEYFRAME_RESPAWN_DEBOUNCE_MS)
|
|
203
|
+
return;
|
|
204
|
+
const old = proc;
|
|
205
|
+
// Drop the old process's partial tail so it can't merge with the new
|
|
206
|
+
// stream's leading SPS/PPS, and supersede it so its exit is ignored.
|
|
207
|
+
if (flushTimer) {
|
|
208
|
+
clearTimeout(flushTimer);
|
|
209
|
+
flushTimer = null;
|
|
210
|
+
}
|
|
211
|
+
pending = Buffer.alloc(0);
|
|
212
|
+
if (!spawnEncoder()) {
|
|
213
|
+
proc = old;
|
|
214
|
+
return;
|
|
215
|
+
} // keep the old one if respawn fails
|
|
216
|
+
opts.log?.info?.("[sandbox-h264] forced keyframe — encoder respawned");
|
|
217
|
+
try {
|
|
218
|
+
old?.stdin.end();
|
|
219
|
+
}
|
|
220
|
+
catch { /* ignore */ }
|
|
221
|
+
const dying = old;
|
|
222
|
+
setTimeout(() => { try {
|
|
223
|
+
dying?.kill("SIGKILL");
|
|
224
|
+
}
|
|
225
|
+
catch { /* ignore */ } }, 500).unref?.();
|
|
226
|
+
},
|
|
159
227
|
close: () => {
|
|
228
|
+
const p = proc;
|
|
160
229
|
if (closed) {
|
|
161
230
|
try {
|
|
162
|
-
|
|
231
|
+
p?.kill("SIGKILL");
|
|
163
232
|
}
|
|
164
233
|
catch { /* ignore */ }
|
|
165
234
|
return;
|
|
@@ -170,12 +239,12 @@ export function createH264Transcoder(opts) {
|
|
|
170
239
|
flushTimer = null;
|
|
171
240
|
}
|
|
172
241
|
try {
|
|
173
|
-
|
|
242
|
+
p?.stdin.end();
|
|
174
243
|
}
|
|
175
244
|
catch { /* ignore */ }
|
|
176
245
|
// Grace for a clean drain, then make sure it's gone.
|
|
177
246
|
setTimeout(() => { try {
|
|
178
|
-
|
|
247
|
+
p?.kill("SIGKILL");
|
|
179
248
|
}
|
|
180
249
|
catch { /* ignore */ } }, 500).unref?.();
|
|
181
250
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sandboxScreenH264.js","sourceRoot":"","sources":["../../src/sandboxScreenH264.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAuC,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"sandboxScreenH264.js","sourceRoot":"","sources":["../../src/sandboxScreenH264.ts"],"names":[],"mappings":"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"}
|
|
@@ -36,6 +36,9 @@ export interface SandboxRtcOptions {
|
|
|
36
36
|
enableVideo?: boolean;
|
|
37
37
|
/** The media track became feedable / stopped being feedable. */
|
|
38
38
|
onMediaStateChange?: (ready: boolean) => void;
|
|
39
|
+
/** Viewer sent a Picture Loss Indication (lost video it can't NACK-recover) —
|
|
40
|
+
* force the encoder to emit a keyframe now instead of waiting out the GOP. */
|
|
41
|
+
onKeyframeRequest?: () => void;
|
|
39
42
|
log?: {
|
|
40
43
|
info?: (m: string) => void;
|
|
41
44
|
warn?: (m: string) => void;
|
|
@@ -72,9 +72,17 @@ export function createSandboxRtcSession(opts) {
|
|
|
72
72
|
opts.log?.warn?.("[sandbox-rtc] werift not available; relay only");
|
|
73
73
|
return null;
|
|
74
74
|
}
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
75
|
+
// OZAIYA_RTC_NO_TURN=1 strips TURN from OUR candidates (diagnostic knob —
|
|
76
|
+
// werift 0.22.x had a dead TURN data path where relay↔relay pairs passed
|
|
77
|
+
// ICE but dropped every DTLS packet; fixed by the werift upgrade, but keep
|
|
78
|
+
// the escape hatch). NOTE: werift never sends checks from host candidates
|
|
79
|
+
// toward remote RELAY candidates (verified with tcpdump on the coturn), so
|
|
80
|
+
// stripping TURN here leaves only hairpin/host pairs — on a typical
|
|
81
|
+
// home-router + Docker-Desktop-NAT topology that means NO usable pair.
|
|
82
|
+
const stripTurn = process.env.OZAIYA_RTC_NO_TURN === "1";
|
|
83
|
+
const iceServers = (opts.iceServers ?? [])
|
|
84
|
+
.filter((s) => !stripTurn || !String(s.urls).includes("turn"))
|
|
85
|
+
.concat([{ urls: "stun:stun.l.google.com:19302" }]);
|
|
78
86
|
let pc = null;
|
|
79
87
|
let dc = null;
|
|
80
88
|
let active = false;
|
|
@@ -95,6 +103,24 @@ export function createSandboxRtcSession(opts) {
|
|
|
95
103
|
const pkt = getPacketizer();
|
|
96
104
|
const wantsVideo = !!opts.enableVideo && /\bm=video\b/.test(offerSdp) && !!pkt;
|
|
97
105
|
const config = { iceServers };
|
|
106
|
+
// Containerized gateways can't NAT-traverse reliably (the Docker NAT is
|
|
107
|
+
// symmetric, the browser's host candidates are mDNS-obfuscated, and a
|
|
108
|
+
// same-router viewer would need hairpin) — but when the deployment
|
|
109
|
+
// PUBLISHES a UDP port range and tells us the host's reachable IP(s),
|
|
110
|
+
// werift binds inside that range and advertises those IPs as plain host
|
|
111
|
+
// candidates, giving the viewer a directly checkable address. Set
|
|
112
|
+
// OZAIYA_RTC_PORT_RANGE=50700-50719 (must match the compose `ports`
|
|
113
|
+
// mapping 1:1) and OZAIYA_RTC_HOST_IPS=<lan-ip>[,<public-ip>].
|
|
114
|
+
const range = process.env.OZAIYA_RTC_PORT_RANGE?.match(/^(\d+)-(\d+)$/);
|
|
115
|
+
if (range)
|
|
116
|
+
config.icePortRange = [Number(range[1]), Number(range[2])];
|
|
117
|
+
const hostIps = (process.env.OZAIYA_RTC_HOST_IPS ?? "")
|
|
118
|
+
.split(",").map((s) => s.trim()).filter(Boolean);
|
|
119
|
+
if (hostIps.length)
|
|
120
|
+
config.iceAdditionalHostAddresses = hostIps;
|
|
121
|
+
if (range || hostIps.length) {
|
|
122
|
+
opts.log?.info?.(`[sandbox-rtc] direct-candidate config: ports=${range ? `${range[1]}-${range[2]}` : "auto"} hostIps=${hostIps.join(",") || "none"}`);
|
|
123
|
+
}
|
|
98
124
|
if (wantsVideo) {
|
|
99
125
|
config.codecs = {
|
|
100
126
|
video: [
|
|
@@ -115,10 +141,12 @@ export function createSandboxRtcSession(opts) {
|
|
|
115
141
|
videoTrack = new werift.MediaStreamTrack({ kind: "video" });
|
|
116
142
|
const transceiver = pc.addTransceiver(videoTrack, { direction: "sendonly" });
|
|
117
143
|
packetizer = new pkt.H264Packetizer();
|
|
118
|
-
// Viewer lost frames it can't recover via NACK —
|
|
119
|
-
//
|
|
144
|
+
// Viewer lost frames it can't recover via NACK — force an immediate
|
|
145
|
+
// keyframe (the transcoder debounces a storm) instead of waiting out the
|
|
146
|
+
// ≤1s GOP. No callback ⇒ informational (the GOP still recovers).
|
|
120
147
|
transceiver.sender.onPictureLossIndication.subscribe(() => {
|
|
121
|
-
opts.log?.info?.("[sandbox-rtc] PLI from viewer
|
|
148
|
+
opts.log?.info?.("[sandbox-rtc] PLI from viewer — requesting keyframe");
|
|
149
|
+
opts.onKeyframeRequest?.();
|
|
122
150
|
});
|
|
123
151
|
opts.log?.info?.("[sandbox-rtc] answering with sendonly H.264 track");
|
|
124
152
|
}
|
|
@@ -137,6 +165,7 @@ export function createSandboxRtcSession(opts) {
|
|
|
137
165
|
pc.connectionStateChange.subscribe((state) => {
|
|
138
166
|
if (closed)
|
|
139
167
|
return;
|
|
168
|
+
opts.log?.info?.(`[sandbox-rtc] connection state: ${state}`);
|
|
140
169
|
if (state === "connected") {
|
|
141
170
|
if (videoTrack)
|
|
142
171
|
setMediaReady(true);
|
|
@@ -149,6 +178,10 @@ export function createSandboxRtcSession(opts) {
|
|
|
149
178
|
opts.onClosed();
|
|
150
179
|
}
|
|
151
180
|
});
|
|
181
|
+
pc.iceConnectionStateChange?.subscribe?.((state) => {
|
|
182
|
+
if (!closed)
|
|
183
|
+
opts.log?.info?.(`[sandbox-rtc] ice state: ${state}`);
|
|
184
|
+
});
|
|
152
185
|
pc.onDataChannel.subscribe((channel) => {
|
|
153
186
|
dc = channel;
|
|
154
187
|
opts.log?.info?.(`[sandbox-rtc] onDataChannel readyState=${channel.readyState}`);
|
|
@@ -185,15 +218,37 @@ export function createSandboxRtcSession(opts) {
|
|
|
185
218
|
});
|
|
186
219
|
}
|
|
187
220
|
async function handleOffer(sdp) {
|
|
221
|
+
// A fresh offer after a terminal ICE failure is the viewer retrying —
|
|
222
|
+
// a failed werift peer can't renegotiate, so rebuild from scratch.
|
|
223
|
+
if (pc && (pc.connectionState === "failed" || pc.connectionState === "closed")) {
|
|
224
|
+
opts.log?.info?.("[sandbox-rtc] fresh offer on a dead peer — rebuilding");
|
|
225
|
+
try {
|
|
226
|
+
pc.close();
|
|
227
|
+
}
|
|
228
|
+
catch { /* already dead */ }
|
|
229
|
+
pc = null;
|
|
230
|
+
dc = null;
|
|
231
|
+
active = false;
|
|
232
|
+
videoTrack = null;
|
|
233
|
+
packetizer = null;
|
|
234
|
+
tsBaseNs = null;
|
|
235
|
+
setMediaReady(false);
|
|
236
|
+
}
|
|
188
237
|
if (!pc)
|
|
189
238
|
buildPeer(sdp);
|
|
190
239
|
await pc.setRemoteDescription({ type: "offer", sdp });
|
|
191
|
-
const answer = await pc.createAnswer();
|
|
192
|
-
await pc.setLocalDescription(answer);
|
|
193
|
-
opts.sendSignal(JSON.stringify({ type: "rtc-answer", sdp: pc.localDescription?.sdp ?? answer.sdp }));
|
|
194
240
|
for (const c of earlyIce.splice(0)) {
|
|
195
241
|
pc.addIceCandidate(c).catch(() => { });
|
|
196
242
|
}
|
|
243
|
+
const answer = await pc.createAnswer();
|
|
244
|
+
// Send the answer IMMEDIATELY (trickle ICE). werift's setLocalDescription
|
|
245
|
+
// does not resolve until ICE GATHERING completes — behind a symmetric-NAT
|
|
246
|
+
// container doing TURN allocations that takes tens of seconds (or hangs),
|
|
247
|
+
// and the viewer can't apply our trickled candidates until it has the
|
|
248
|
+
// answer, so awaiting first deadlocks the whole handshake on slow
|
|
249
|
+
// gathering. Candidates stream via onIceCandidate as they're found.
|
|
250
|
+
opts.sendSignal(JSON.stringify({ type: "rtc-answer", sdp: answer.sdp }));
|
|
251
|
+
await pc.setLocalDescription(answer);
|
|
197
252
|
}
|
|
198
253
|
async function handleIce(candidate) {
|
|
199
254
|
const parsed = typeof candidate === "string" ? JSON.parse(candidate) : candidate;
|