@xdxer/dingtalk-agent 0.1.5-beta.11 → 0.1.5-beta.13

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.
@@ -1 +1 @@
1
- {"version":3,"file":"multica-deploy.js","sourceRoot":"","sources":["../../src/multica-deploy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAC9C,OAAO,EACL,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EACxE,YAAY,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,GAChD,MAAM,SAAS,CAAA;AAChB,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAChC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACtE,OAAO,EACL,oBAAoB,EAAE,mBAAmB,EAAE,eAAe,EAAE,wBAAwB,GAErF,MAAM,4BAA4B,CAAA;AACnC,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AACrD,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,mBAAmB,EAC1F,sBAAsB,GAEvB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EACL,sBAAsB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,qBAAqB,EACpF,8BAA8B,GAE/B,MAAM,iCAAiC,CAAA;AAExC,MAAM,CAAC,MAAM,yBAAyB,GAAG,6CAA6C,CAAA;AACtF,MAAM,iBAAiB,GAAG,EAAE,CAAA;AAC5B,MAAM,0BAA0B,GAAG,GAAG,CAAA;AACtC,MAAM,sBAAsB,GAAG,IAAI,OAAO,EAEtC,CAAA;AA8VJ,MAAM,iBAAkB,SAAQ,KAAK;IAExB;IACA;IACA;IAHX,YACW,QAAgB,EAChB,YAAY,KAAK,EACjB,MAA6B;QAEtC,KAAK,CAAC,QAAQ,CAAC,CAAA;QAJN,aAAQ,GAAR,QAAQ,CAAQ;QAChB,cAAS,GAAT,SAAS,CAAQ;QACjB,WAAM,GAAN,MAAM,CAAuB;IAGxC,CAAC;CACF;AAED,MAAM,UAAU,wBAAwB,CACtC,KAAa,EACb,IAAY,EACZ,MAAc,EACd,UAAsC,EAAE;IAExC,MAAM,gBAAgB,GAAG,MAAM,CAAC,IAAI,EAAE,CAAA;IACtC,IAAI,CAAC,gBAAgB;QAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAA;IACnE,IAAI,MAAM,CAAC,UAAU,CAAC,gBAAgB,EAAE,MAAM,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC;QAC5D,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAA;IAC1D,CAAC;IACD,wBAAwB,CAAC,gBAAgB,EAAE,sBAAsB,CAAC,CAAA;IAClE,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAA;IACtC,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,EAAE,CAAA;IAC3C,MAAM,IAAI,GAAG,mBAAmB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAA;IACnD,uBAAuB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC,CAAA;IACpD,MAAM,YAAY,GAAG,oBAAoB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,CAAA;IAC/E,MAAM,QAAQ,GAAG,CAAC,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAA;IAC3C,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,OAAO;QAAE,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAA;IACrE,MAAM,IAAI,GAA4B;QACpC,OAAO,EAAE,6CAA6C;QACtD,SAAS,EAAE,IAAI;QACf,QAAQ,EAAE,SAAS;QACnB,OAAO,EAAE,YAAY,CAAC,OAAO;QAC7B,WAAW,EAAE,YAAY,CAAC,QAAQ,CAAC,WAAW;QAC9C,SAAS,EAAE,YAAY,CAAC,QAAQ,CAAC,SAAS;QAC1C,OAAO,EAAE,YAAY,CAAC,QAAQ,CAAC,OAAO;QACtC,UAAU,EAAE,MAAM,CAAC,gBAAgB,CAAC;QACpC,UAAU,EAAE,CAAC,eAAe,EAAE,cAAc,EAAE,YAAY,EAAE,oBAAoB,EAAE,kBAAkB,CAAC;QACrG,QAAQ,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE;QACvC,eAAe,EAAE,IAAI;QACrB,mBAAmB,EAAE,IAAI;QACzB,UAAU,EAAE,KAAK;QACjB,WAAW,EAAE,KAAK;QAClB,YAAY,EAAE,KAAK;QACnB,UAAU,EAAE,KAAK;QACjB,kBAAkB,EAAE,KAAK;KAC1B,CAAA;IACD,IAAI,CAAC,OAAO,CAAC,OAAO;QAAE,OAAO,IAAI,CAAA;IACjC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAA;IAC5E,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,kCAAkC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAC/E,CAAC;IAED,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,GAAG,CAAC,eAAe,IAAI,SAAS,CAAA;IACnE,wFAAwF;IACxF,0FAA0F;IAC1F,iFAAiF;IACjF,iFAAiF;IACjF,MAAM,SAAS,GAAG,eAAe,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;IACtE,MAAM,KAAK,GAA4B,EAAE,CAAA;IACzC,MAAM,UAAU,GAAG,uBAAuB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE;QAC1D,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG;QACtD,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,UAAU;KACnD,CAA+B,CAAA;IAChC,qBAAqB,CAAC,UAAU,EAAE,eAAe,EAAE,KAAK,CAAC,CAAA;IACzD,MAAM,cAAc,GAAG,UAAU,CAAC,SAAS,CAAC,cAAc;SACvD,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAA;IACjE,MAAM,cAAc,GAAG,CAAC,GAAG,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAA;IAC/D,IAAI,CAAC,UAAU,CAAC,MAAM,IAAI,UAAU,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,KAAK,IAAI,CAAC,WAAW;QAC/E,UAAU,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,KAAK,IAAI,CAAC,SAAS;QACnD,UAAU,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,KAAK,IAAI,CAAC,OAAO;QAC/C,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC;QAC/C,eAAe,CAAC,cAAc,CAAC,KAAK,eAAe,CAAC,cAAc,CAAC,EAAE,CAAC;QACtE,MAAM,IAAI,KAAK,CAAC,wEAAwE,CAAC,CAAA;IAC3F,CAAC;IAED,MAAM,KAAK,GAAG,yBAAyB,IAAI,CAAC,GAAG,EAAE,IAAI,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAA;IAC/E,MAAM,MAAM,GAAG,qBAAqB,UAAU,EAAE,EAAE,CAAA;IAClD,MAAM,KAAK,GAAG,UAAU,CAAC,WAAW,CAClC,OAAO,EAAE,UAAU,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,EAAE,EAAE;QAC1F,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,uBAAuB,MAAM,EAAE;QAC7D,eAAe,EAAE,gBAAgB,EAAE,eAAe,EAAE,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM;KACrF,CAAC,EAAE,4BAA4B,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,EACzD,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,KAAK,CACnC,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAA;IAChC,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,EAAE,EAAE,wBAAwB,CAAC,CAAA;IAC9D,OAAO,oBAAoB,CAAC;QAC1B,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG;QAC7F,eAAe,EAAE,UAAU,CAAC,SAAS,CAAC,OAAO,EAAE,QAAQ,IAAI,EAAE;KAC9D,CAAC,CAAA;AACJ,CAAC;AAgBD;;;;;GAKG;AACH,SAAS,oBAAoB,CAAC,GAAyB;IACrD,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,GAAG,CAAA;IAChF,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;IAC1B,MAAM,cAAc,GAAG,KAAK,CAAA;IAC5B,MAAM,SAAS,GAA4B,EAAE,CAAA;IAC7C,IAAI,YAAY,GAAG,CAAC,CAAA;IACpB,IAAI,IAAyC,CAAA;IAC7C,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,GAAG,SAAS,EAAE,CAAC;QACxC,YAAY,IAAI,CAAC,CAAA;QACjB,MAAM,IAAI,GAAG,SAAS,CAAC,WAAW,CAChC,OAAO,EAAE,UAAU,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,EAAE,EAAE;YAC1F,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM;SAC1D,CAAC,EAAE,0BAA0B,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EACjD,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,SAAS,CACvC,CAAC,MAAM,EAAE,0BAA0B,CAAC,CAAA;QACrC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC;YACzD,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC;aAC9C,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QAC9F,MAAM,MAAM,GAAG,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;QAC3C,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,MAAK;QAChE,OAAO,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,IAAI,iBAAiB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,cAAc,CAAC,CAAA;IAC9E,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC,CAAA;IAErC,MAAM,MAAM,GAAG,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,uBAAuB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IAC3E,MAAM,UAAU,GAAG,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,aAAa,CAAA;IAChE,IAAI,QAAQ,GAA8B,EAAE,CAAA;IAC5C,IAAI,MAAM,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QACxE,QAAQ,GAAG,SAAS,CAAC,WAAW,CAC9B,OAAO,EAAE,UAAU,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,EAAE,EAAE;YAC1F,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM;SACxE,CAAC,EAAE,8BAA8B,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EACrD,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,KAAK,CACnC,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAAA;IACrC,CAAC;IACD,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,UAAU,CAAC,CAAA;IACpF,MAAM,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IACnF,oDAAoD;IACpD,6DAA6D;IAC7D,MAAM,YAAY,GAAG,GAAG,CAAC,eAAe;QACtC,CAAC,CAAC,8BAA8B,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IAC5D,MAAM,MAAM,GAAsC,YAAY,CAAC,MAAM;QACnE,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,sBAAsB,EAAE,CAAA;IAC3C,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAA;IACnC,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAA;IACpF,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACtC,MAAM,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACtC,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;YACxB,MAAM,OAAO,GAAqB,EAAE,IAAI,EAAE,KAAK,EAAE,cAAc,CAAC,IAAI,CAAC,EAAE,CAAA;YACvE,KAAK,MAAM,UAAU,IAAI,MAAM,EAAE,CAAC;gBAChC,MAAM,IAAI,GAAG,UAAU,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAA;gBACrD,IAAI,IAAI;oBAAE,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;YAC/B,CAAC;QACH,CAAC;aAAM,IAAI,IAAI,KAAK,aAAa,IAAI,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9D,KAAK,MAAM,IAAI,IAAI,qBAAqB,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAAE,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAC7F,CAAC;IACH,CAAC;IACD,MAAM,YAAY,GAAG,CAAC,GAAG,SAAS,CAAC,CAAC,IAAI,EAAE,CAAA;IAC1C,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC;SAC1E,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IAC9D,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QAC5C,MAAM,OAAO,GAAqB;YAChC,IAAI,EAAE,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,cAAc,CAAC,IAAI,CAAC;SAC7D,CAAA;QACD,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;aACjE,MAAM,CAAC,CAAC,KAAK,EAA8C,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAC9E,0CAA0C;aACzC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,UAAU,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;aAChF,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IAClC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IAClB,MAAM,MAAM,GAAG,gBAAgB,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC,CAAA;IACpF,MAAM,aAAa,GAAG,UAAU,CAAC,WAAW,CAC1C,OAAO,EAAE,UAAU,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,EAAE,EAAE;QAC1F,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM;KAC5C,CAAC,EAAE,8BAA8B,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EACrD,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,KAAK,CACnC,CAAC,MAAM,EAAE,8BAA8B,CAAC,CAAA;IACzC,MAAM,WAAW,GAAG,cAAc,CAAC,aAAa,CAAC,MAAM,CAAC,CAAA;IACxD,MAAM,QAAQ,GAAa,EAAE,CAAA;IAC7B,IAAI,CAAC,IAAI;QAAE,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAA;SACvC,IAAI,CAAC,CAAC,WAAW,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC;QAAE,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;SAC7F,IAAI,UAAU,KAAK,WAAW;QAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,UAAU,EAAE,CAAC,CAAA;IACxE,IAAI,CAAC,MAAM;QAAE,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;IAC5C,MAAM,cAAc,GAAG,IAAI;QACzB,CAAC,CAAC,oBAAoB,CAAC,IAAI,CAAC;QAC5B,CAAC,CAAC,uBAAuB,WAAW,IAAI,SAAS,QAAQ,YAAY,IAAI,CAAA;IAC3E,MAAM,MAAM,GAA8B;QACxC,OAAO,EAAE,wCAAwC;QACjD,MAAM,EAAE,QAAQ,CAAC,MAAM,KAAK,CAAC;QAC7B,KAAK;QACL,SAAS,EAAE,IAAI;QACf,QAAQ,EAAE,SAAS;QACnB,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,OAAO;QACP,WAAW;QACX,MAAM;QACN,UAAU;QACV,cAAc;QACd,YAAY;QACZ,cAAc;QACd,MAAM;QACN,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC;QAC1B,SAAS;QACT,YAAY;QACZ,QAAQ;QACR,KAAK;QACL,YAAY,EAAE,EAAE;QAChB,UAAU,EAAE,IAAI;QAChB,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC;QACxD,YAAY,EAAE,KAAK;QACnB,UAAU,EAAE,0BAA0B;QACtC,kBAAkB,EAAE,KAAK;KAC1B,CAAA;IACD,MAAM,eAAe,GAAG,IAAI,CAC1B,qBAAqB,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,cAAc,EAAE,GAAG,KAAK,OAAO,CACvE,CAAA;IACD,MAAM,CAAC,YAAY,GAAG,QAAQ,CAAC,IAAI,EAAE,eAAe,CAClD,IAAI,EAAE,GAAG,CAAC,GAAG,IAAI,eAAe,EAAE,KAAK,CACxC,CAAC,CAAA;IACF,oBAAoB,CAAC,MAAM,CAAC,CAAA;IAC5B,UAAU,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,YAAY,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,CAAA;IACrE,OAAO,MAAM,CAAA;AACf,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,yBAAyB,CACvC,KAAa,EACb,IAAY,EACZ,UAA2D,EAAE;IAE7D,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAA;IACtC,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,EAAE,CAAA;IAC3C,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;IAChD,IAAI,CAAC,4CAA4C,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAC9D,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAA;IAC9E,CAAC;IACD,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAA;IACjF,CAAC;IACD,IAAI,CAAC,OAAO,CAAC,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAA;IACrF,MAAM,IAAI,GAAG,mBAAmB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAA;IACnD,uBAAuB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC,CAAA;IACpD,gGAAgG;IAChG,8FAA8F;IAC9F,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,IAAI,IAAI,CACrC,qBAAqB,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,cAAc,EAAE,GAAG,KAAK,OAAO,CAAC,CAAA;IACzE,MAAM,WAAW,GAAG,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,CAAC,CAAA;IAClE,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CACb,cAAc,WAAW,oCAAoC;YAC7D,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,yCAAyC,EAAE,CAAC,CAAA;IACtE,CAAC;IACD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAA8B,CAAA;IACxF,IAAI,KAAK,CAAC,OAAO,KAAK,wCAAwC;QAC5D,KAAK,CAAC,QAAQ,KAAK,SAAS,IAAI,KAAK,CAAC,SAAS,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;QAC7E,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAA;IAChF,CAAC;IACD,yFAAyF;IACzF,6FAA6F;IAC7F,gGAAgG;IAChG,IAAI,KAAK,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CACb,UAAU,WAAW,aAAa,KAAK,CAAC,KAAK,eAAe,KAAK,oBAAoB;YACrF,4BAA4B,CAAC,CAAA;IACjC,CAAC;IACD,2FAA2F;IAC3F,+FAA+F;IAC/F,+FAA+F;IAC/F,iBAAiB;IACjB,MAAM,YAAY,GAAG,oBAAoB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,CAAA;IAC/E,MAAM,UAAU,GAAG,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,GAAG,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IACtG,IAAI,YAAY,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO;QAAE,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IACtE,IAAI,YAAY,CAAC,QAAQ,CAAC,WAAW,KAAK,KAAK,CAAC,WAAW;QAAE,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;IACzF,IAAI,YAAY,CAAC,QAAQ,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS;QAAE,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IACnF,IAAI,YAAY,CAAC,QAAQ,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO;QAAE,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAC7E,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CACb,2DAA2D,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA;IACtG,CAAC;IACD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,GAAG,CAAC,eAAe,IAAI,SAAS,CAAA;IACnE,MAAM,SAAS,GAAG,eAAe,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;IACtE,MAAM,IAAI,GAAG;QACX,OAAO,EAAE,YAAY,CAAC,OAAO;QAC7B,WAAW,EAAE,YAAY,CAAC,QAAQ,CAAC,WAAW;QAC9C,SAAS,EAAE,YAAY,CAAC,QAAQ,CAAC,SAAS;QAC1C,OAAO,EAAE,YAAY,CAAC,QAAQ,CAAC,OAAO;QACtC,UAAU,EAAE,KAAK,CAAC,UAAU;KAC7B,CAAA;IACD,OAAO,oBAAoB,CAAC;QAC1B,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK;QAC1D,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG;KACrD,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,KAAa,EACb,IAAY,EACZ,UAGI,EAAE;IAEN,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAA;IACxC,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,MAAM,KAAK,OAAO,CAAA;IAC1E,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAA;IACtC,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,EAAE,CAAA;IAC3C,MAAM,IAAI,GAAG,mBAAmB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAA;IACnD,MAAM,SAAS,GAAG,uBAAuB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC,CAAA;IACtE,MAAM,MAAM,GAAG,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC9C,MAAM,QAAQ,GAAG,oBAAoB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,CAAA;IAC3E,MAAM,QAAQ,GAAG,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAA;IACvC,IAAI,YAAY,GAAG,EAAE,CAAA;IACrB,IAAI,iBAAiB,GAAG,EAAE,CAAA;IAC1B,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,sBAAsB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC,CAAA;QAClE,YAAY,GAAG,MAAM,CAAC,YAAY,CAAA;QAClC,IAAI,CAAC,MAAM,CAAC,aAAa,IAAI,CAAC,MAAM,CAAC,iBAAiB,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;YAC/E,QAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC,CAAA;QACvE,CAAC;QACD,yDAAyD;QACzD,2DAA2D;QAC3D,eAAe;QACf,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC,EAAE,CAAC;YAChD,iBAAiB,GAAG,MAAM,CAAC,sBAAsB,IAAI,EAAE,CAAA;YACvD,IAAI,MAAM,KAAK,OAAO,IAAI,CAAC,aAAa;gBAAE,QAAQ,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAA;QAChF,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAA;IACrC,CAAC;IACD,IAAI,CAAC,YAAY;QAAE,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAA;IACtD,IAAI,MAAM,KAAK,QAAQ,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;QAAE,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAA;IACxF,IAAI,aAAa,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;QAAE,QAAQ,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAA;IACzF,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACnD,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;KAClE,CAAC,CAAC,CAAA;IACH,MAAM,UAAU,GAAG,MAAM,KAAK,QAAQ;QACpC,CAAC,CAAC,CAAC,iBAAiB,EAAE,eAAe,EAAE,gBAAgB,EAAE,iBAAiB,CAAC;QAC3E,CAAC,CAAC;YACA,iBAAiB,EAAE,iBAAiB,EAAE,kBAAkB;YACxD,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,iBAAiB;YACrE,qBAAqB,EAAE,mBAAmB,EAAE,mBAAmB;YAC/D,iCAAiC,EAAE,qBAAqB,EAAE,iBAAiB;SAC5E,CAAA;IACH,MAAM,WAAW,GAAG,MAAM,KAAK,QAAQ;QACrC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE;QAC7B,CAAC,CAAC;YACA,oFAAoF;YACpF,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,0BAA0B,GAAG,CAAC,CAAC,GAAG,CAAC;YACxE,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,0BAA0B,GAAG,CAAC,CAAC,GAAG,CAAC;SAC1E,CAAA;IACH,MAAM,MAAM,GAAG,uBAAuB,MAAM,CAAC,eAAe,CAAC;QAC3D,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,YAAY;QAChE,WAAW,EAAE,SAAS,CAAC,WAAW,EAAE,cAAc,EAAE,MAAM,CAAC,cAAc;QACzE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,aAAa,EAAE,iBAAiB;QACtF,QAAQ,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE;KACxC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAA;IAClB,OAAO;QACL,OAAO,EAAE,0CAA0C;QACnD,MAAM;QACN,MAAM;QACN,SAAS,EAAE,IAAI;QACf,QAAQ,EAAE,SAAS;QACnB,OAAO,EAAE,QAAQ,CAAC,OAAO;QACzB,YAAY;QACZ,WAAW,EAAE,SAAS,CAAC,WAAW;QAClC,cAAc,EAAE,MAAM,CAAC,cAAc;QACrC,QAAQ,EAAE;YACR,WAAW,EAAE,QAAQ,CAAC,QAAQ,CAAC,WAAW;YAC1C,SAAS,EAAE,QAAQ,CAAC,QAAQ,CAAC,SAAS;YACtC,OAAO,EAAE,QAAQ,CAAC,QAAQ,CAAC,OAAO;YAClC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW;YACnC,MAAM,EAAE,cAAc;YACtB,cAAc,EAAE,MAAM,CAAC,cAAc;YACrC,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;YACzC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAChD;QACD,aAAa;QACb,UAAU;QACV,WAAW;QACX,QAAQ,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE;QACvC,cAAc,EAAE,IAAI;QACpB,mBAAmB,EAAE,IAAI;QACzB,UAAU,EAAE,KAAK;QACjB,WAAW,EAAE,KAAK;QAClB,YAAY,EAAE,KAAK;QACnB,UAAU,EAAE,KAAK;QACjB,kBAAkB,EAAE,KAAK;KAC1B,CAAA;AACH,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,KAAa,EACb,IAAY,EACZ,UAAoC,EAAE,EACtC,SAA2B,OAAO;IAElC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAA;IAC1E,CAAC;IACD,IAAI,CAAC,OAAO,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAA;IAC5E,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAA;IACtC,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,EAAE,CAAA;IAC3C,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,MAAM,KAAK,OAAO,CAAA;IAC1E,MAAM,IAAI,GAAG,qBAAqB,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,aAAa,EAAE,CAAC,CAAA;IAC3F,IAAI,OAAO,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CAAC,+BAA+B,IAAI,CAAC,MAAM,GAAG;YAC3D,6DAA6D;YAC7D,kCAAkC,CAAC,CAAA;IACvC,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACxF,MAAM,IAAI,GAAG,mBAAmB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAA;IACnD,MAAM,SAAS,GAAG,uBAAuB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC,CAAA;IACtE,MAAM,MAAM,GAAG,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC9C,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,GAAG,CAAC,eAAe,IAAI,SAAS,CAAA;IACnE,MAAM,SAAS,GAAG,eAAe,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;IACrE,MAAM,KAAK,GAA4B,EAAE,CAAA;IACzC,sBAAsB,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAA;IACnD,MAAM,SAAS,GAAG,uBAAuB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE;QACzD,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,UAAU;KAC9E,CAA+B,CAAA;IAChC,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,SAAS,CAAC,YAAY,KAAK,IAAI,CAAC,YAAY;QACnE,SAAS,CAAC,OAAO,KAAK,IAAI,CAAC,OAAO;QAClC,SAAS,CAAC,QAAQ,CAAC,WAAW,KAAK,IAAI,CAAC,QAAQ,CAAC,WAAW;QAC5D,SAAS,CAAC,QAAQ,CAAC,SAAS,KAAK,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;QAC3D,MAAM,IAAI,KAAK,CAAC,8CAA8C;YAC5D,gEAAgE,CAAC,CAAA;IACrE,CAAC;IACD,IAAI,MAAM,KAAK,OAAO,IAAI,CAAC,aAAa,IAAI,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC,EAAE,CAAC;QAC3F,MAAM,IAAI,KAAK,CAAC,qCAAqC;YACnD,6DAA6D,CAAC,CAAA;IAClE,CAAC;IACD,qBAAqB,CAAC,SAAS,EAAE,WAAW,EAAE,KAAK,CAAC,CAAA;IAEpD,MAAM,WAAW,GAAG,qBAAqB,IAAI,CAAC,GAAG,EAAE,IAAI,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAA;IAClF,MAAM,SAAS,GAAG,eAAe,CAAC,WAAW,EAAE,IAAI,CAAC,CAAA;IACpD,SAAS,CAAC,KAAK,GAAG,CAAC,GAAG,KAAK,CAAC,CAAA;IAC5B,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;IACtC,MAAM,QAAQ,GAAoB;QAChC,eAAe,EAAE,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE,cAAc,EAAE,EAAE,EAAE,YAAY,EAAE,IAAI;QAC9E,iBAAiB,EAAE,KAAK,EAAE,mBAAmB,EAAE,EAAE;KAClD,CAAA;IACD,IAAI,OAAiC,CAAA;IACrC,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,sBAAsB,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;IACjF,IAAI,CAAC;QACH,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;YACxB,OAAO,GAAG,gBAAgB,CACxB,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,CACzF,CAAA;QACH,CAAC;aAAM,CAAC;YACN,OAAO,GAAG,YAAY,CACpB,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,EACtE,SAAS,EAAE,eAAe,CAAC,OAAO,CAAC,cAAc,EAAE,MAAM,EAAE,OAAO,CAAC,EACnE,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,CAC/C,CAAA;QACH,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,iBAAiB;YAChD,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,iBAAiB,CAAC,yBAAyB,CAAC,CAAA;QAC5D,MAAM,cAAc,GAAG,OAAO,CAAC,SAAS;YACtC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC;YACtB,CAAC,CAAC,iBAAiB,CACjB,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,CAChE,CAAA;QACH,MAAM,MAAM,GAAqB,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAA;QAC7E,SAAS,CAAC,MAAM,GAAG,MAAM,CAAA;QACzB,SAAS,CAAC,eAAe,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAA;QACrE,SAAS,CAAC,KAAK,GAAG,KAAK,CAAA;QACvB,SAAS,CAAC,QAAQ,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAA;QACnE,SAAS,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;QAC9C,OAAO,GAAG,cAAc,CACtB,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAC/D,cAAc,EAAE,MAAM,EAAE,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,CACzD,CAAA;IACH,CAAC;YAAS,CAAC;QACT,MAAM,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;QAC9C,sBAAsB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IACtC,CAAC;IACD,sBAAsB,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,CAAA;IAChE,OAAO,OAAO,CAAA;AAChB,CAAC;AAED,SAAS,YAAY,CACnB,IAAY,EACZ,SAAmC,EACnC,MAAwB,EACxB,IAA2B,EAC3B,SAAqC,EACrC,SAAqC,EACrC,OAAe,EACf,GAAsB,EACtB,SAAiB,EACjB,cAAsB,EACtB,MAAe,EACf,KAA8B,EAC9B,QAAyB,EACzB,IAAY;IAEZ,MAAM,QAAQ,GAAG,kBAAkB,CACjC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,CACxD,CAAA;IACD,MAAM,WAAW,GAAG,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAA;IACnF,MAAM,QAAQ,GAAG,iBAAiB,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,CAAA;IACxD,IAAI,WAAW,IAAI,SAAS,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO;QACpD,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,KAAK,MAAM,CAAC,cAAc;QAChE,QAAQ,EAAE,MAAM,IAAI,QAAQ,CAAC,aAAa,IAAI,QAAQ,CAAC,cAAc,KAAK,MAAM,CAAC,cAAc,EAAE,CAAC;QAClG,MAAM,SAAS,GAAG,mBAAmB,MAAM,CAAC,eAAe,CAAC;YAC1D,WAAW,EAAE,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,SAAS;SACnF,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAA;QAClB,OAAO;YACL,GAAG,QAAQ;YACX,SAAS;YACT,WAAW,EAAE,SAAS,CAAC,WAAW;YAClC,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,UAAU,EAAE,IAAI;YAChB,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC;YACjB,KAAK,EAAE,EAAE,GAAG,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE;YAC5C,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;YACtE,cAAc,EAAE,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE;YACrF,YAAY,EAAE,mBAAmB,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC;YAC5D,WAAW,EAAE,KAAK;YAClB,UAAU,EAAE,cAAc;SAC3B,CAAA;IACH,CAAC;IAED,SAAS,CAAC,MAAM,GAAG,UAAU,CAAA;IAC7B,SAAS,CAAC,KAAK,GAAG,KAAK,CAAA;IACvB,SAAS,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;IAC9C,gBAAgB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;IAEjC,MAAM,YAAY,GAAuC,EAAE,CAAA;IAC3D,MAAM,QAAQ,GAAa,EAAE,CAAA;IAC7B,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClC,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,CAAA;QACtD,MAAM,MAAM,GAAG,cAAc,CAC3B,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,CAC1E,CAAA;QACD,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;QAC9B,YAAY,CAAC,IAAI,CAAC;YAChB,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE;YACnB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,UAAU,EAAE,KAAK,CAAC,IAAI;YACtB,UAAU,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI;YAC7B,MAAM,EAAE,MAAM,CAAC,MAAM;SACtB,CAAC,CAAA;IACJ,CAAC;IAED,MAAM,WAAW,GAAG,cAAc,CAChC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,CAC7E,CAAA;IACD,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,EAAE,CAAA;IACpC,SAAS,CAAC,OAAO,GAAG,OAAO,CAAA;IAC3B,MAAM,mBAAmB,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAA;IAChD,QAAQ,CAAC,mBAAmB,GAAG,CAAC,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAA;IACxD,IAAI,eAAe,CAAC,CAAC,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,eAAe,CAAC,mBAAmB,CAAC,EAAE,CAAC;QAC/F,WAAW,CACT,OAAO,EAAE,UAAU,CAAC,IAAI,EAAE;YACxB,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,UAAU,EAAE,MAAM;SACpG,CAAC,EAAE,kBAAkB,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,CAC7D,CAAA;QACD,QAAQ,CAAC,iBAAiB,GAAG,IAAI,CAAA;IACnC,CAAC;IAED,MAAM,QAAQ,GAAG,uBAAuB,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE;QAC7D,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS;QAChE,eAAe,EAAE,OAAO;KACzB,CAA+B,CAAA;IAChC,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK;QAC/C,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,KAAK,OAAO;QACvC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,KAAK,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;QACjE,MAAM,IAAI,iBAAiB,CAAC,yBAAyB,CAAC,CAAA;IACxD,CAAC;IACD,MAAM,aAAa,GAAG,kBAAkB,CACtC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,CACvD,CAAA;IACD,IAAI,CAAC,oBAAoB,CAAC,aAAa,EAAE,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QAC1E,MAAM,IAAI,iBAAiB,CAAC,8BAA8B,CAAC,CAAA;IAC7D,CAAC;IACD,MAAM,YAAY,GAAG,sBAAsB,CAAC,aAAa,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAA;IACjF,MAAM,KAAK,GAAG,kBAAkB,CAC9B,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,SAAS,CAAC,OAAO,EAAE,QAAQ,IAAI,EAAE,EACvE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,EAAE,KAAK,CACvD,CAAA;IACD,uDAAuD;IACvD,iDAAiD;IACjD,MAAM,MAAM,GAAqB,KAAK,CAAC,MAAM,KAAK,QAAQ;QACxD,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,WAAW;QAClD,CAAC,CAAC,KAAK,CAAC,cAAc,KAAK,oBAAoB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAA;IAC5E,MAAM,SAAS,GAAG,mBAAmB,MAAM,CAAC,eAAe,CAAC;QAC1D,WAAW,EAAE,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,YAAY;QACrE,KAAK,EAAE,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE;KACtF,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAA;IAClB,OAAO;QACL,OAAO,EAAE,yBAAyB;QAClC,SAAS;QACT,WAAW,EAAE,SAAS,CAAC,WAAW;QAClC,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,MAAM,EAAE,OAAO;QACf,SAAS,EAAE,SAAS,CAAC,IAAI;QACzB,QAAQ,EAAE,SAAS;QACnB,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,MAAM;QACN,MAAM,EAAE,MAAM,KAAK,OAAO;QAC1B,aAAa,EAAE,MAAM,KAAK,OAAO;QACjC,UAAU,EAAE,KAAK;QACjB,YAAY,EAAE,QAAQ,CAAC,YAAY;QACnC,sBAAsB,EAAE,QAAQ,CAAC,YAAY;QAC7C,sBAAsB,EAAE,QAAQ,CAAC,YAAY;QAC7C,WAAW,EAAE,SAAS,CAAC,WAAW;QAClC,cAAc,EAAE,MAAM,CAAC,cAAc;QACrC,YAAY;QACZ,KAAK,EAAE;YACL,EAAE,EAAE,aAAa,CAAC,KAAK,EAAE,EAAE,IAAI,OAAO;YACtC,SAAS,EAAE,aAAa,CAAC,KAAK,EAAE,SAAS,IAAI,EAAE;YAC/C,gBAAgB,EAAE,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,YAAY,IAAI,EAAE,CAAC;YACjE,QAAQ,EAAE,OAAO,CAAC,aAAa,CAAC,KAAK,EAAE,QAAQ,CAAC;YAChD,MAAM,EAAE,WAAW,CAAC,MAAM;SAC3B;QACD,MAAM,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACjE,cAAc,EAAE,MAAM,CAAC,eAAe,CAAC,mBAAmB,CAAC,CAAC;QAC5D,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC;QACjB,KAAK;QACL,QAAQ,EAAE,aAAa,CAAC,KAAK,CAAC;QAC9B,QAAQ,EAAE,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC;QAC7B,cAAc,EAAE,CAAC,GAAG,KAAK,CAAC,cAAc,CAAC;QACzC,GAAG,CAAC,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC;YAC1D,MAAM,EAAE;gBACN,aAAa,EAAE,IAAI,CAAC,QAAQ,CAAC,iBAAiB;gBAC9C,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS;aACrC;SACF,CAAC,CAAC,CAAC,EAAE,CAAC;QACP,YAAY,EAAE,mBAAmB,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC;QAC5D,UAAU,EAAE,IAAI;QAChB,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC;QACxD,YAAY,EAAE,KAAK;QACnB,UAAU,EAAE,oBAAoB;QAChC,kBAAkB,EAAE,KAAK;KAC1B,CAAA;AACH,CAAC;AAED,SAAS,gBAAgB,CACvB,IAAY,EACZ,SAAmC,EACnC,MAAwB,EACxB,IAA2B,EAC3B,SAAqC,EACrC,SAAqC,EACrC,OAAe,EACf,GAAsB,EACtB,SAAiB,EACjB,KAA8B;IAE9B,MAAM,OAAO,GAAG,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAA;IACtE,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,iBAAiB,CAAC,yBAAyB,CAAC,CAAA;IACpE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC;QACzC,WAAW,CACT,OAAO,EAAE,UAAU,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,EAC5E,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,CACtD,CAAA;IACH,CAAC;IACD,MAAM,KAAK,GAAG,gBAAgB,CAAC,UAAU,CAAC,WAAW,CACnD,OAAO,EAAE,UAAU,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,EACxE,2BAA2B,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,CACjE,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAA;IAC1B,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,EAAE,KAAK,OAAO;QAAE,MAAM,IAAI,iBAAiB,CAAC,0BAA0B,CAAC,CAAA;IACpG,MAAM,YAAY,GAAG,MAAM,CAAC,eAAe,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC,CAAA;IAChH,MAAM,SAAS,GAAG,mBAAmB,MAAM,CAAC,eAAe,CAAC;QAC1D,WAAW,EAAE,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY;KACnE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAA;IAClB,OAAO;QACL,OAAO,EAAE,yBAAyB;QAClC,SAAS;QACT,WAAW,EAAE,SAAS,CAAC,WAAW;QAClC,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,MAAM,EAAE,QAAQ;QAChB,SAAS,EAAE,SAAS,CAAC,IAAI;QACzB,QAAQ,EAAE,SAAS;QACnB,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,MAAM,EAAE,SAAS;QACjB,MAAM,EAAE,IAAI;QACZ,aAAa,EAAE,KAAK;QACpB,UAAU,EAAE,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,QAAQ,CAAC;QACxD,YAAY,EAAE,SAAS,CAAC,YAAY;QACpC,sBAAsB,EAAE,SAAS,CAAC,YAAY;QAC9C,sBAAsB,EAAE,SAAS,CAAC,YAAY;QAC9C,WAAW,EAAE,SAAS,CAAC,WAAW;QAClC,cAAc,EAAE,MAAM,CAAC,cAAc;QACrC,YAAY;QACZ,KAAK,EAAE;YACL,EAAE,EAAE,KAAK,CAAC,EAAE;YACZ,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,gBAAgB,EAAE,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC;YAC5C,QAAQ,EAAE,IAAI;YACd,MAAM,EAAE,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;SACjE;QACD,MAAM,EAAE,EAAE;QACV,cAAc,EAAE,EAAE;QAClB,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC;QACjB,KAAK,EAAE,UAAU,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpE,QAAQ,EAAE,aAAa,CAAC,KAAK,CAAC;QAC9B,QAAQ,EAAE,EAAE;QACZ,cAAc,EAAE,EAAE;QAClB,YAAY,EAAE,mBAAmB,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC;QAC5D,UAAU,EAAE,IAAI;QAChB,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC;QACxD,YAAY,EAAE,KAAK;QACnB,UAAU,EAAE,oBAAoB;QAChC,kBAAkB,EAAE,KAAK;KAC1B,CAAA;AACH,CAAC;AAED,SAAS,oBAAoB,CAAC,IAAY;IACxC,MAAM,IAAI,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAA;IACtC,MAAM,cAAc,GAAG,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,CAAA;IAC3E,MAAM,UAAU,GAAG,QAAQ,CAAC,cAAc,EAAE,kBAAkB,EAAE,GAAG,GAAG,IAAI,CAAC,CAAA;IAC3E,wBAAwB,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAA;IACxD,MAAM,cAAc,GAAG,MAAM,CAAC,UAAU,CAAC,CAAA;IACzC,MAAM,UAAU,GAA0C,EAAE,CAAA;IAC5D,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QACvC,MAAM,GAAG,GAAG,eAAe,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;QAC/C,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,eAAe,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,CAAA;IACnE,CAAC;IACD,IAAI,UAAU,CAAC,MAAM,GAAG,iBAAiB,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CAAC,uBAAuB,iBAAiB,aAAa,CAAC,CAAA;IACxE,CAAC;IACD,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;SAC3F,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;IAC/C,IAAI,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,MAAM,EAAE,CAAC;QACpE,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAA;IACxD,CAAC;IACD,kFAAkF;IAClF,gFAAgF;IAChF,gFAAgF;IAChF,qEAAqE;IACrE,MAAM,YAAY,GAAG,UAAU,CAAA;IAC/B,MAAM,gBAAgB,GAAG,MAAM,CAAC,YAAY,CAAC,CAAA;IAC7C,MAAM,cAAc,GAAG,MAAM,CAAC,eAAe,CAAC;QAC5C,cAAc,EAAE,gBAAgB;QAChC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;KACrE,CAAC,CAAC,CAAA;IACH,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,EAAE,cAAc,EAAE,CAAA;AACnF,CAAC;AAED,SAAS,eAAe,CAAC,IAAY,EAAE,IAAY;IACjD,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,CAAA;IACjC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,SAAS,IAAI,cAAc,CAAC,CAAA;IAClF,MAAM,KAAK,GAAqB,EAAE,CAAA;IAClC,MAAM,KAAK,GAAG,CAAC,SAAiB,EAAE,MAAM,GAAG,EAAE,EAAQ,EAAE;QACrD,KAAK,MAAM,KAAK,IAAI,WAAW,CAAC,SAAS,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;aAChE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;YAChD,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,CAAA;YACxC,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAA;YAC3D,IAAI,KAAK,CAAC,cAAc,EAAE;gBAAE,MAAM,IAAI,KAAK,CAAC,SAAS,IAAI,aAAa,GAAG,EAAE,CAAC,CAAA;YAC5E,IAAI,KAAK,CAAC,WAAW,EAAE;gBAAE,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;iBACpC,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;gBACxB,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,CAAA;gBAClC,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,GAAG,IAAI;oBAAE,MAAM,IAAI,KAAK,CAAC,SAAS,IAAI,gBAAgB,GAAG,EAAE,CAAC,CAAA;gBACrF,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;gBACrC,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC5E,MAAM,IAAI,KAAK,CAAC,SAAS,IAAI,gCAAgC,GAAG,EAAE,CAAC,CAAA;gBACrE,CAAC;gBACD,wBAAwB,CAAC,IAAI,EAAE,SAAS,IAAI,IAAI,GAAG,EAAE,CAAC,CAAA;gBACtD,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;gBAC3F,IAAI,KAAK,CAAC,MAAM,GAAG,0BAA0B,GAAG,CAAC,EAAE,CAAC;oBAClD,MAAM,IAAI,KAAK,CAAC,SAAS,IAAI,aAAa,0BAA0B,GAAG,CAAC,IAAI,CAAC,CAAA;gBAC/E,CAAC;YACH,CAAC;;gBAAM,MAAM,IAAI,KAAK,CAAC,SAAS,IAAI,YAAY,GAAG,EAAE,CAAC,CAAA;QACxD,CAAC;IACH,CAAC,CAAA;IACD,KAAK,CAAC,MAAM,CAAC,CAAA;IACb,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,EAAE,CAAC;QACvE,MAAM,IAAI,KAAK,CAAC,SAAS,IAAI,cAAc,CAAC,CAAA;IAC9C,CAAC;IACD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,CAAA;IAC3D,IAAI,CAAC,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,SAAS,IAAI,cAAc,CAAC,CAAA;IACvD,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,IAAI,EAAE,EAAE,IAAI,GAAG,IAAI,CAAC,CAAA;IACzE,MAAM,QAAQ,GAAG,eAAe,CAAC,OAAO,CAAC,CAAA;IACzC,IAAI,QAAQ,KAAK,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,SAAS,IAAI,0BAA0B,QAAQ,IAAI,WAAW,EAAE,CAAC,CAAA;IACxG,wBAAwB,CAAC,OAAO,EAAE,SAAS,IAAI,EAAE,CAAC,CAAA;IAClD,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,CAAA;IACnE,IAAI,UAAU,CAAC,MAAM,GAAG,0BAA0B,EAAE,CAAC;QACnD,MAAM,IAAI,KAAK,CAAC,SAAS,IAAI,wBAAwB,0BAA0B,IAAI,CAAC,CAAA;IACtF,CAAC;IACD,MAAM,IAAI,GAAG,aAAa,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;IACrG,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,YAAY,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,CAAA;AAC9F,CAAC;AAED,SAAS,kBAAkB,CACzB,IAAY,EACZ,MAAwB,EACxB,UAAsC,EACtC,OAAe,EACf,GAAsB,EACtB,SAAiB,EACjB,KAA8B;IAE9B,MAAM,QAAQ,GAAG;QACf,OAAO,EAAE,UAAU,CAAC,OAAO;QAC3B,QAAQ,EAAE,UAAU,CAAC,QAAQ;KAC9B,CAAA;IACD,MAAM,MAAM,GAAG,IAAI,GAAG,EAA8B,CAAA;IACpD,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClC,MAAM,UAAU,GAAG,UAAU,CAAC,SAAS,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,CAAA;QAChG,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,IAAI,iBAAiB,CAAC,oBAAoB,KAAK,CAAC,IAAI,EAAE,CAAC,CAAA;QACxF,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;YACvB,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;YAC5B,SAAQ;QACV,CAAC;QACD,MAAM,GAAG,GAAG,UAAU,CAAC,WAAW,CAChC,OAAO,EAAE,UAAU,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,EACrF,aAAa,KAAK,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,CAC/D,CAAC,MAAM,EAAE,SAAS,KAAK,CAAC,IAAI,EAAE,CAAC,CAAA;QAChC,MAAM,KAAK,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAA;QACnC,IAAI,KAAK,CAAC,EAAE,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,EAAE,CAAC;YAC/D,MAAM,IAAI,iBAAiB,CAAC,2BAA2B,KAAK,CAAC,IAAI,EAAE,CAAC,CAAA;QACtE,CAAC;QACD,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;IAC/B,CAAC;IACD,IAAI,KAAK,GAAuB,IAAI,CAAA;IACpC,IAAI,UAAU,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QAC/B,KAAK,GAAG,gBAAgB,CAAC,UAAU,CAAC,WAAW,CAC7C,OAAO,EAAE,UAAU,CAAC,QAAQ,EAAE;YAC5B,OAAO,EAAE,KAAK,EAAE,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,EAAE,UAAU,EAAE,MAAM;SAClE,CAAC,EAAE,kBAAkB,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,CAC5D,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAA;QAC1B,IAAI,KAAK,CAAC,EAAE,KAAK,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;YAAE,MAAM,IAAI,iBAAiB,CAAC,wBAAwB,CAAC,CAAA;IACvG,CAAC;IACD,OAAO;QACL,KAAK;QACL,MAAM;QACN,WAAW,EAAE,UAAU,CAAC,SAAS,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC;aAC5E,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE;KACjC,CAAA;AACH,CAAC;AAED,SAAS,cAAc,CACrB,IAAY,EACZ,IAA2B,EAC3B,KAAuB,EACvB,MAA0B,EAC1B,OAAe,EACf,GAAsB,EACtB,SAAiB,EACjB,KAA8B,EAC9B,QAAyB,EACzB,IAAY;IAEZ,IAAI,EAAE,GAAG,MAAM,EAAE,EAAE,IAAI,EAAE,CAAA;IACzB,IAAI,MAAM,GAAiC,MAAM,CAAA;IACjD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,OAAO,GAAG,UAAU,CAAC,WAAW,CACpC,OAAO,EAAE,UAAU,CAAC,IAAI,EAAE;YACxB,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC,IAAI;YACvC,eAAe,EAAE,8BAA8B,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG;YACzE,gBAAgB,EAAE,KAAK,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM;SACrD,CAAC,EAAE,gBAAgB,KAAK,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,CACvE,CAAC,MAAM,EAAE,iBAAiB,KAAK,CAAC,IAAI,EAAE,CAAC,CAAA;QACxC,EAAE,GAAG,UAAU,CAAC,OAAO,CAAC,EAAE,EAAE,iBAAiB,KAAK,CAAC,IAAI,KAAK,CAAC,CAAA;QAC7D,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACjC,MAAM,GAAG,QAAQ,CAAA;QACjB,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK;YAAE,eAAe,CAC7C,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,CAC7E,CAAA;IACH,CAAC;SAAM,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,EAAE,CAAC;QACtC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACnC,WAAW,CACT,OAAO,EAAE,UAAU,CAAC,IAAI,EAAE;YACxB,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,gBAAgB,EAAE,KAAK,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM;SAC5E,CAAC,EAAE,gBAAgB,KAAK,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,CACvE,CAAA;QACD,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,CAAC,CAAA;QAC7E,MAAM,GAAG,QAAQ,CAAA;IACnB,CAAC;IACD,MAAM,QAAQ,GAAG,gBAAgB,CAAC,UAAU,CAAC,WAAW,CACtD,OAAO,EAAE,UAAU,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,EACnE,sBAAsB,KAAK,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,CACxE,CAAC,MAAM,EAAE,kBAAkB,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;IAC1C,IAAI,QAAQ,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,EAAE,CAAC;QACjE,MAAM,IAAI,iBAAiB,CAAC,2BAA2B,KAAK,CAAC,IAAI,EAAE,CAAC,CAAA;IACtE,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAA;AACpC,CAAC;AAED,SAAS,cAAc,CACrB,IAAY,EACZ,IAA2B,EAC3B,MAAwB,EACxB,MAA0B,EAC1B,OAAe,EACf,GAAsB,EACtB,SAAiB,EACjB,KAA8B,EAC9B,QAAyB;IAEzB,IAAI,EAAE,GAAG,MAAM,EAAE,EAAE,IAAI,EAAE,CAAA;IACzB,IAAI,MAAM,GAA6C,MAAM,CAAA;IAC7D,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,OAAO,GAAG,UAAU,CAAC,WAAW,CACpC,OAAO,EAAE,UAAU,CAAC,IAAI,EAAE;YACxB,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS;YACpD,eAAe,EAAE,0BAA0B,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE;YAC7E,gBAAgB,EAAE,MAAM,CAAC,YAAY;YACrC,cAAc,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS;YACvC,mBAAmB,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM;SACnD,CAAC,EAAE,cAAc,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,CACzD,CAAC,MAAM,EAAE,eAAe,CAAC,CAAA;QAC1B,EAAE,GAAG,UAAU,CAAC,OAAO,CAAC,EAAE,EAAE,kBAAkB,CAAC,CAAA;QAC/C,QAAQ,CAAC,cAAc,GAAG,EAAE,CAAA;QAC5B,MAAM,GAAG,QAAQ,CAAA;IACnB,CAAC;SAAM,CAAC;QACN,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACpB,QAAQ,CAAC,YAAY,GAAG,MAAM,CAAA;YAC9B,WAAW,CACT,OAAO,EAAE,UAAU,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,EACvE,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,CACtD,CAAA;YACD,MAAM,GAAG,SAAS,CAAA;QACpB,CAAC;QACD,IAAI,MAAM,CAAC,IAAI,KAAK,IAAI,CAAC,QAAQ,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS,KAAK,IAAI,CAAC,QAAQ,CAAC,SAAS;YACzF,MAAM,CAAC,YAAY,KAAK,MAAM,CAAC,YAAY,EAAE,CAAC;YAC9C,QAAQ,CAAC,YAAY,KAAK,MAAM,CAAA;YAChC,WAAW,CACT,OAAO,EAAE,UAAU,CAAC,IAAI,EAAE;gBACxB,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS;gBACxD,gBAAgB,EAAE,MAAM,CAAC,YAAY,EAAE,cAAc,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS;gBAC9E,UAAU,EAAE,MAAM;aACnB,CAAC,EAAE,cAAc,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,CACzD,CAAA;YACD,MAAM,GAAG,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAA;QACtD,CAAC;IACH,CAAC;IACD,MAAM,KAAK,GAAG,gBAAgB,CAAC,UAAU,CAAC,WAAW,CACnD,OAAO,EAAE,UAAU,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,EACnE,oBAAoB,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,CAC1D,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAA;IAC5B,IAAI,KAAK,CAAC,EAAE,KAAK,EAAE,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,QAAQ,CAAC,SAAS;QAC3D,KAAK,CAAC,SAAS,KAAK,IAAI,CAAC,QAAQ,CAAC,SAAS,IAAI,KAAK,CAAC,YAAY,KAAK,MAAM,CAAC,YAAY,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QAC9G,MAAM,IAAI,iBAAiB,CAAC,yBAAyB,CAAC,CAAA;IACxD,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAA;AAC1B,CAAC;AAED,SAAS,cAAc,CACrB,IAAY,EACZ,IAA2B,EAC3B,OAAe,EACf,KAAuB,EACvB,MAAmB,EACnB,OAAe,EACf,GAAsB,EACtB,SAAiB,EACjB,KAA8B;IAE9B,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAA;IAC3E,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;IAChE,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QAChC,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,SAAQ;QACvC,WAAW,CACT,OAAO,EAAE,UAAU,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,EACzE,qBAAqB,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,CACrF,CAAA;IACH,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAC/B,IAAI,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,KAAK,IAAI,CAAC,IAAI;YAAE,SAAQ;QAC7D,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,CAAC,CAAA;IACpG,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CACtB,IAAY,EACZ,IAA2B,EAC3B,OAAe,EACf,IAAY,EACZ,WAAmB,EACnB,OAAe,EACf,GAAsB,EACtB,SAAiB,EACjB,KAA8B;IAE9B,WAAW,CACT,OAAO,EAAE,UAAU,CAAC,IAAI,EAAE;QACxB,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI;QACnD,gBAAgB,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM;KAClD,CAAC,EAAE,qBAAqB,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,CACtE,CAAA;AACH,CAAC;AAED,SAAS,kBAAkB,CACzB,IAAY,EACZ,IAA2B,EAC3B,MAAwB,EACxB,OAAe,EACf,eAAuB,EACvB,OAAe,EACf,GAAsB,EACtB,SAAiB,EACjB,cAAsB,EACtB,MAAe,EACf,KAA8B;IAE9B,MAAM,MAAM,GAAG,oBAAoB,UAAU,EAAE,EAAE,CAAA;IACjD,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAA;IACpE,MAAM,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC;QACtC,MAAM,EAAE,0BAA0B,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc;KACnE,CAAC,CAAA;IACF,MAAM,KAAK,GAAG,UAAU,CAAC,WAAW,CAClC,OAAO,EAAE,UAAU,CAAC,IAAI,EAAE;QACxB,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,oBAAoB,MAAM,EAAE;QAC1D,eAAe,EAAE;YACf,0BAA0B,EAAE,UAAU,MAAM,EAAE;YAC9C,mBAAmB,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,EAAE;YACnD,uDAAuD;YACvD,wFAAwF;YACxF,yJAAyJ;YACzJ,kEAAkE,gBAAgB,EAAE;SACrF,CAAC,IAAI,CAAC,IAAI,CAAC;QACZ,eAAe,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM;KAC7C,CAAC,EAAE,oBAAoB,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,CAC/D,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;IACxB,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,EAAE,EAAE,gBAAgB,CAAC,CAAA;IACtD,MAAM,IAAI,GAAG,GAA2B,EAAE,CAAC,SAAS,CAClD,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,eAAe,EACrE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,CAC/B,CAAA;IACD,IAAI,KAAK,GAAG,IAAI,EAAE,CAAA;IAClB,6EAA6E;IAC7E,yEAAyE;IACzE,0EAA0E;IAC1E,6EAA6E;IAC7E,0EAA0E;IAC1E,6EAA6E;IAC7E,6EAA6E;IAC7E,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QAChD,IAAI,CAAC;YACH,WAAW,CACT,OAAO,EAAE,UAAU,CAAC,IAAI,EAAE;gBACxB,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO;gBAClC,WAAW,EAAE,qCAAqC,OAAO,uFAAuF;gBAChJ,UAAU,EAAE,MAAM;aACnB,CAAC,EAAE,qBAAqB,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,CAChE,CAAA;YACD,KAAK,GAAG,IAAI,EAAE,CAAA;QAChB,CAAC;QAAC,MAAM,CAAC;YACP,gDAAgD;YAChD,oDAAoD;QACtD,CAAC;IACH,CAAC;IACD,IAAI,MAAM;QAAE,OAAO,KAAK,CAAA;IACxB,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;IAC1B,MAAM,cAAc,GAAG,GAAS,EAAE;QAChC,OAAO,KAAK,CAAC,MAAM,KAAK,SAAS,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,GAAG,cAAc,EAAE,CAAC;YAC3E,OAAO,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,IAAI,iBAAiB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAA;YACnE,KAAK,GAAG,IAAI,EAAE,CAAA;QAChB,CAAC;IACH,CAAC,CAAA;IACD,cAAc,EAAE,CAAA;IAChB,uDAAuD;IACvD,qDAAqD;IACrD,qDAAqD;IACrD,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,EAAE,CAAC,CAAC,CAAC,CAAA;IACrF,IAAI,OAAO,GAAG,CAAC,CAAA;IACf,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,cAAc,KAAK,oBAAoB;QAC/E,OAAO,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,GAAG,cAAc,EAAE,CAAC;QACvD,OAAO,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,IAAI,iBAAiB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,YAAY,CAAC,CAAA;QAC1E,IAAI,CAAC;YACH,WAAW,CACT,OAAO,EAAE,UAAU,CAAC,IAAI,EAAE;gBACxB,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO;gBAClC,WAAW,EAAE,qCAAqC,OAAO,kIAAkI;gBAC3L,UAAU,EAAE,MAAM;aACnB,CAAC,EAAE,mBAAmB,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,CAC9D,CAAA;QACH,CAAC;QAAC,MAAM,CAAC;YACP,wCAAwC;YACxC,sDAAsD;YACtD,MAAK;QACP,CAAC;QACD,OAAO,IAAI,CAAC,CAAA;QACZ,qDAAqD;QACrD,kDAAkD;QAClD,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAA;QAChC,IAAI,SAAS,GAAG,KAAK,CAAA;QACrB,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,GAAG,cAAc,EAAE,CAAC;YAC7C,OAAO,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,IAAI,iBAAiB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAA;YACnE,KAAK,GAAG,IAAI,EAAE,CAAA;YACd,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;gBAAC,SAAS,GAAG,IAAI,CAAC;gBAAC,MAAK;YAAC,CAAC;QAC/E,CAAC;QACD,IAAI,CAAC,SAAS;YAAE,MAAK;QACrB,cAAc,EAAE,CAAA;IAClB,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;QACxD,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM;YACzB,CAAC,CAAC,QAAQ,KAAK,CAAC,MAAM,MAAM,cAAc,gBAAgB,KAAK,CAAC,UAAU,IAAI,SAAS,GAAG;YAC1F,CAAC,CAAC,SAAS,OAAO,MAAM,cAAc,gBAAgB,CAAA;QACxD,OAAO,EAAE,GAAG,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,CAAA;IAC7C,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,SAAS,CAChB,IAAY,EACZ,IAA2B,EAC3B,MAAc,EACd,OAAe,EACf,OAAe,EACf,cAAwB,EACxB,eAAuB,EACvB,OAAe,EACf,GAAsB,EACtB,SAAiB,EACjB,KAA8B;IAE9B,MAAM,QAAQ,GAAG,eAAe,IAAI,EAAE,CAAA;IACtC,MAAM,UAAU,GAAG,8BAA8B,CAAC,QAAQ,CAAC,CAAA;IAC3D,MAAM,MAAM,GAAsC,UAAU,CAAC,MAAM;QACjE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,sBAAsB,EAAE,CAAA;IACzC,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACnD,MAAM,IAAI,GAAG;QACX,GAAG,UAAU,CAAC,SAAS,EAAE,cAAc,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO;QACrF,eAAe,EAAE,QAAQ,EAAE,aAAa;KACzC,CAAA;IACD,MAAM,IAAI,GAAG,SAAS,CAAC,WAAW,CAChC,OAAO,EAAE,UAAU,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,EACtF,kBAAkB,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,CACxD,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;IACvB,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC;QACrE,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,OAAO,CAAC,CAAA;IAC5C,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAClH,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAA;IACrB,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,EAAE,EAAE,eAAe,CAAC,CAAA;IAClD,MAAM,UAAU,GAAG,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;IAC7C,IAAI,CAAC,CAAC,WAAW,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC;QAAE,OAAO;YACrE,GAAG,IAAI,EAAE,MAAM,EAAE,UAAU;SAC5B,CAAA;IACD,MAAM,QAAQ,GAAG,SAAS,CAAC,WAAW,CACpC,OAAO,EAAE,UAAU,CAAC,IAAI,EAAE;QACxB,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM;KACxE,CAAC,EAAE,sBAAsB,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,CAChE,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAA;IAC3B,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,UAAU,CAAC,CAAA;IACpF,MAAM,SAAS,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aAC5E,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;IAE3B,mFAAmF;IACnF,sFAAsF;IACtF,qFAAqF;IACrF,qFAAqF;IACrF,yFAAyF;IACzF,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAA;IAClC,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAA;IACnC,MAAM,aAAa,GAAG,IAAI,GAAG,EAAU,CAAA;IACvC,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAA;IACjF,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACtC,MAAM,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACtC,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;YACxB,MAAM,OAAO,GAAqB,EAAE,IAAI,EAAE,KAAK,EAAE,cAAc,CAAC,IAAI,CAAC,EAAE,CAAA;YACvE,KAAK,MAAM,UAAU,IAAI,MAAM,EAAE,CAAC;gBAChC,MAAM,IAAI,GAAG,UAAU,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAA;gBACrD,IAAI,IAAI,EAAE,CAAC;oBAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;oBAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;gBAAC,CAAC;gBACzD,MAAM,OAAO,GAAG,UAAU,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAA;gBAC3D,IAAI,OAAO,EAAE,CAAC;oBAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;oBAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;gBAAC,CAAC;YAClE,CAAC;QACH,CAAC;aAAM,IAAI,IAAI,KAAK,aAAa,IAAI,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3D,KAAK,MAAM,IAAI,IAAI,qBAAqB,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;gBACvE,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;gBAClB,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;YACzB,CAAC;QACH,CAAC;IACH,CAAC;IACD,MAAM,YAAY,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;IAC/E,MAAM,mBAAmB,GAAG,YAAY,CAAC,MAAM,KAAK,cAAc,CAAC,MAAM,CAAA;IAEzE,yFAAyF;IACzF,MAAM,YAAY,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QAC7C,MAAM,OAAO,GAAqB;YAChC,IAAI,EAAE,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,cAAc,CAAC,IAAI,CAAC;SAC7D,CAAA;QACD,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IACpF,CAAC,CAAC,CAAA;IACF,MAAM,cAAc,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAA;IAC3E,MAAM,iBAAiB,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAA;IAC9E,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IACrE,MAAM,iBAAiB,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAClD,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAA;IAEjF,kFAAkF;IAClF,wFAAwF;IACxF,MAAM,eAAe,GAAG,CAAC,KAAa,EAAW,EAAE,CAAC,oBAAoB,CACtE,KAAK,EAAE,MAAM,EAAE,cAAc,CAC9B,CAAA;IACD,IAAI,eAAe,GAAa,EAAE,CAAA;IAClC,IAAI,CAAC;QACH,eAAe,GAAG,SAAS,CAAC,WAAW,CACrC,OAAO,EAAE,UAAU,CAAC,IAAI,EAAE;YACxB,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM;SAC1E,CAAC,EAAE,sBAAsB,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,CAChE,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IACzF,CAAC;IAAC,MAAM,CAAC;QACP,eAAe,GAAG,EAAE,CAAA,CAAC,iDAAiD;IACxE,CAAC;IACD,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC;SAC1E,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IAC9D,MAAM,SAAS,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;IACpC,MAAM,cAAc,GAAa,EAAE,CAAA;IACnC,MAAM,cAAc,GAAa,EAAE,CAAA;IACnC,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;QAC5B,MAAM,OAAO,GAAqB;YAChC,IAAI,EAAE,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,cAAc,CAAC,IAAI,CAAC;SAC7D,CAAA;QACD,KAAK,MAAM,UAAU,IAAI,MAAM,EAAE,CAAC;YAChC,MAAM,KAAK,GAAG,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;YAC/C,IAAI,KAAK,IAAI,qBAAqB,CAAC,KAAK,CAAC,IAAI,CAAC;gBAAE,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;YAClF,MAAM,IAAI,GAAG,UAAU,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;YAC5C,IAAI,IAAI,IAAI,yBAAyB,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,CAAC;gBAC7E,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;oBACjC,MAAM,EAAE,0BAA0B,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc;iBACnE,CAAC,CAAC,CAAA;YACL,CAAC;QACH,CAAC;IACH,CAAC;IACD,MAAM,gBAAgB,GAAG,CAAC,GAAG,eAAe,EAAE,GAAG,KAAK,EAAE,GAAG,cAAc,EAAE,GAAG,cAAc,CAAC;SAC1F,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,CAAA;IAC9B,MAAM,cAAc,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAA;IAChD,MAAM,eAAe,GAAG,mBAAmB,IAAI,CAAC,cAAc,CAAC,MAAM,IAAI,CAAC,iBAAiB,CAAA;IAE3F,MAAM,QAAQ,GAAa,EAAE,CAAA;IAC7B,MAAM,cAAc,GAA2B,EAAE,CAAA;IACjD,IAAI,UAAU,KAAK,WAAW;QAAE,QAAQ,CAAC,IAAI,CAAC,cAAc,UAAU,IAAI,SAAS,EAAE,CAAC,CAAA;IACtF,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACzB,QAAQ,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAA;QAC1C,MAAM,gBAAgB,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CACtD,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAA;QAC7C,cAAc,CAAC,IAAI,CAAC;YAClB,IAAI,EAAE,2BAA2B;YACjC,QAAQ,EAAE,cAAc;YACxB,MAAM,EAAE,YAAY;YACpB,IAAI,EAAE,gBAAgB,CAAC,MAAM;gBAC3B,CAAC,CAAC,gDAAgD,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;oBAC9E,UAAU;gBACZ,CAAC,CAAC,iBAAiB,CAAC,MAAM;oBACxB,CAAC,CAAC,mBAAmB,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;wBAClD,kDAAkD;oBACpD,CAAC,CAAC,kEAAkE;SACzE,CAAC,CAAA;IACJ,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,cAAc;QAAE,QAAQ,CAAC,IAAI,CAAC,wBAAwB,IAAI,EAAE,CAAC,CAAA;IAChF,IAAI,iBAAiB;QAAE,QAAQ,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAA;IACnE,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;QAC/B,cAAc,CAAC,IAAI,CAAC;YAClB,IAAI,EAAE,gBAAgB;YACtB,MAAM,EAAE,YAAY,eAAe,CAAC,MAAM,UAAU,KAAK,CAAC,MAAM,WAAW,cAAc,CAAC,MAAM,EAAE;YAClG,IAAI,EAAE,gEAAgE;SACvE,CAAC,CAAA;IACJ,CAAC;IAED,sDAAsD;IACtD,uCAAuC;IACvC,IAAI,cAAc,GAA6C,EAAE,CAAA;IACjE,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACzB,MAAM,UAAU,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAClF,IAAI,kFAAkF,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YACxG,cAAc,GAAG,oBAAoB,CAAA;YACrC,QAAQ,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAA;YAC5C,cAAc,CAAC,OAAO,CAAC;gBACrB,IAAI,EAAE,0BAA0B;gBAChC,IAAI,EAAE,oCAAoC;oBACxC,wDAAwD;aAC3D,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;IACD,OAAO;QACL,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC;QACjF,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,cAAc,EAAE,oBAAoB,CAAC,GAAG,CAAC,EAAE,cAAc,EAAE,YAAY;QACpG,eAAe,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,CAAC,gBAAgB,IAAI,SAAS,CAAC,EAAE,QAAQ;QAC9F,eAAe,EAAE,QAAQ,EAAE,aAAa,EAAE,SAAS,EAAE,iBAAiB,EAAE,cAAc;QACtF,cAAc;KACf,CAAA;AACH,CAAC;AAED,SAAS,cAAc,CAAC,IAA6B;IACnD,OAAO,IAAI,CAAC,KAAK,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;QAC/E,CAAC,CAAC,IAAI,CAAC,KAAgC,CAAC,CAAC,CAAC,EAAE,CAAA;AAChD,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAa,EAAE,MAAc,EAAE,cAAwB;IACnF,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QAChC,OAAO,MAAM,EAAE,MAAM,KAAK,0BAA0B,IAAI,MAAM,EAAE,MAAM,KAAK,MAAM;YAC/E,eAAe,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC7E,eAAe,CAAC,cAAc,CAAC,CAAA;IACrC,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,KAAK,CAAA;IAAC,CAAC;AAC1B,CAAC;AAED,SAAS,yBAAyB,CAChC,OAAe,EACf,OAAe,EACf,MAAc,EACd,cAAwB;IAExB,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,0BAA0B,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC,CAAA;IACvG,OAAO,OAAO,KAAK;QACjB,iCAAiC;QACjC,QAAQ;QACR,WAAW;QACX,6BAA6B,OAAO,6CAA6C;KAClF,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACd,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAa;IAC1C,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC,UAAU,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC,CAAA;IAC/D,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;IAC5D,uDAAuD;IACvD,kEAAkE;IAClE,yBAAyB;IACzB,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IACnD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAAE,OAAO,KAAK,CAAA;IAC3D,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI;QAC3C,CAAC,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,IAAI,IAAI,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACtE,CAAC;AAED,SAAS,iBAAiB,CACxB,IAAY,EACZ,IAA2B,EAC3B,OAAe,EACf,GAAsB,EACtB,SAAiB,EACjB,KAA8B,EAC9B,QAAyB,EACzB,IAAY;IAEZ,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,CAAA;IAClC,MAAM,OAAO,GAAG,CAAC,EAAU,EAAE,IAAc,EAAQ,EAAE;QACnD,IAAI,CAAC;YACH,WAAW,CAAC,OAAO,EAAE,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,CAAC,CAAA;YACzF,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACzB,CAAC;QAAC,MAAM,CAAC;YAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAAC,CAAC;IACtC,CAAC,CAAA;IACD,MAAM,iBAAiB,GAAG,QAAQ,CAAC,cAAc,IAAI,QAAQ,CAAC,YAAY,EAAE,EAAE,IAAI,EAAE,CAAA;IACpF,IAAI,QAAQ,CAAC,iBAAiB,IAAI,iBAAiB,EAAE,CAAC;QACpD,OAAO,CAAC,uBAAuB,EAAE;YAC/B,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,iBAAiB;YAC3C,aAAa,EAAE,QAAQ,CAAC,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,UAAU,EAAE,MAAM;SAC1E,CAAC,CAAA;IACJ,CAAC;IACD,IAAI,QAAQ,CAAC,cAAc,EAAE,CAAC;QAC5B,OAAO,CAAC,wBAAwB,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC,cAAc,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,CAAA;IACtG,CAAC;SAAM,IAAI,QAAQ,CAAC,YAAY,EAAE,CAAC;QACjC,MAAM,QAAQ,GAAG,QAAQ,CAAC,YAAY,CAAA;QACtC,MAAM,IAAI,GAAG;YACX,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,EAAE,QAAQ,EAAE,QAAQ,CAAC,IAAI;YACvD,gBAAgB,EAAE,QAAQ,CAAC,YAAY,EAAE,cAAc,EAAE,QAAQ,CAAC,SAAS;SAC5E,CAAA;QACD,IAAI,QAAQ,CAAC,MAAM;YAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAA;QAC3D,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAA;QAC7B,OAAO,CAAC,uBAAuB,EAAE,IAAI,CAAC,CAAA;QACtC,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;YACtB,OAAO,CAAC,wBAAwB,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,CAAA;QAC1F,CAAC;IACH,CAAC;IACD,KAAK,MAAM,QAAQ,IAAI,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;QAC7D,MAAM,IAAI,GAAG,qBAAqB,CAAC,IAAI,EAAE,GAAG,QAAQ,CAAC,EAAE,WAAW,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAA;QACrF,OAAO,CAAC,yBAAyB,QAAQ,CAAC,IAAI,EAAE,EAAE;YAChD,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM;SAC3E,CAAC,CAAA;QACF,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,gBAAgB,CAAC,UAAU,CAAC,WAAW,CACrD,OAAO,EAAE,UAAU,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,EAC5E,sBAAsB,QAAQ,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,CAC3E,CAAC,MAAM,EAAE,kBAAkB,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;YAC7C,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;YACtE,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;gBAClF,OAAO,CAAC,8BAA8B,QAAQ,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,EAAE,EAAE;oBACnE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE;iBAClD,CAAC,CAAA;YACJ,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,yBAAyB,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAA;QAAC,CAAC;QAC1E,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;YAClC,MAAM,IAAI,GAAG,qBAAqB,CAAC,IAAI,EAAE,GAAG,QAAQ,CAAC,EAAE,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;YACzG,OAAO,CAAC,uBAAuB,QAAQ,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE;gBAC3D,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI;gBAC5D,gBAAgB,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM;aAC3C,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;IACD,KAAK,MAAM,EAAE,IAAI,CAAC,GAAG,QAAQ,CAAC,eAAe,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;QACzD,OAAO,CAAC,yBAAyB,EAAE,EAAE,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC,CAAA;IAC1E,CAAC;IACD,cAAc,CACZ,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,CAC7D,CAAA;IACD,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAA;IAC5C,OAAO,MAAM,CAAA;AACf,CAAC;AAED,SAAS,cAAc,CACrB,IAAY,EACZ,IAA2B,EAC3B,OAAe,EACf,GAAsB,EACtB,SAAiB,EACjB,KAA8B,EAC9B,QAAyB,EACzB,MAA4C;IAE5C,MAAM,MAAM,GAAG,CAAC,EAAU,EAAE,MAAqB,EAAQ,EAAE;QACzD,IAAI,CAAC;YAAC,IAAI,CAAC,MAAM,EAAE;gBAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAAC,CAAC;QAC/C,MAAM,CAAC;YAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAAC,CAAC;IACpC,CAAC,CAAA;IACD,IAAI,QAAQ,CAAC,eAAe,CAAC,MAAM,IAAI,QAAQ,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC;QACrE,MAAM,CAAC,wBAAwB,EAAE,GAAG,EAAE;YACpC,MAAM,OAAO,GAAG,SAAS,CAAC,WAAW,CACnC,OAAO,EAAE,UAAU,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,EAChE,4BAA4B,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,CAClE,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAA;YAChC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAA;YACpF,OAAO,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA;QAC7D,CAAC,CAAC,CAAA;QACF,KAAK,MAAM,QAAQ,IAAI,QAAQ,CAAC,aAAa,EAAE,CAAC;YAC9C,MAAM,CAAC,yBAAyB,QAAQ,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE;gBACpD,MAAM,QAAQ,GAAG,gBAAgB,CAAC,UAAU,CAAC,WAAW,CACtD,OAAO,EAAE,UAAU,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,EAC5E,6BAA6B,QAAQ,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,CAClF,CAAC,MAAM,EAAE,yBAAyB,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;gBACpD,OAAO,QAAQ,CAAC,EAAE,KAAK,QAAQ,CAAC,EAAE,IAAI,QAAQ,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI;oBACnE,QAAQ,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,CAAA;YACnC,CAAC,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;IACD,MAAM,OAAO,GAAG,QAAQ,CAAC,cAAc,IAAI,QAAQ,CAAC,YAAY,EAAE,EAAE,IAAI,EAAE,CAAA;IAC1E,IAAI,CAAC,OAAO;QAAE,OAAM;IACpB,MAAM,CAAC,uBAAuB,EAAE,GAAG,EAAE;QACnC,MAAM,QAAQ,GAAG,gBAAgB,CAAC,UAAU,CAAC,WAAW,CACtD,OAAO,EAAE,UAAU,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,EACxE,2BAA2B,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,CACjE,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC,CAAA;QACnC,IAAI,QAAQ,CAAC,cAAc;YAAE,OAAO,QAAQ,CAAC,QAAQ,CAAA;QACrD,MAAM,QAAQ,GAAG,QAAQ,CAAC,YAAY,CAAA;QACtC,OAAO,OAAO,CAAC,QAAQ,IAAI,QAAQ,CAAC,EAAE,KAAK,QAAQ,CAAC,EAAE,IAAI,QAAQ,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI;YACvF,QAAQ,CAAC,SAAS,KAAK,QAAQ,CAAC,SAAS,IAAI,QAAQ,CAAC,YAAY,KAAK,QAAQ,CAAC,YAAY;YAC5F,QAAQ,CAAC,QAAQ,KAAK,QAAQ,CAAC,QAAQ,CAAC,CAAA;IAC5C,CAAC,CAAC,CAAA;IACF,IAAI,QAAQ,CAAC,iBAAiB,EAAE,CAAC;QAC/B,MAAM,CAAC,4BAA4B,EAAE,GAAG,EAAE;YACxC,MAAM,QAAQ,GAAG,SAAS,CAAC,WAAW,CACpC,OAAO,EAAE,UAAU,CAAC,IAAI,EAAE;gBACxB,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM;aACvD,CAAC,EAAE,8BAA8B,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,CACxE,CAAC,MAAM,EAAE,6BAA6B,CAAC,CAAA;YACxC,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,wBAAwB,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;YACxF,OAAO,eAAe,CAAC,GAAG,CAAC,KAAK,eAAe,CAAC,CAAC,GAAG,QAAQ,CAAC,mBAAmB,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;QAC3F,CAAC,CAAC,CAAA;IACJ,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CACrB,IAAY,EACZ,SAAmC,EACnC,MAAwB,EACxB,IAA2B,EAC3B,SAAqC,EACrC,SAAqC,EACrC,KAA8B,EAC9B,QAA8C,EAC9C,MAAgC,EAChC,OAAe,EACf,aAAoC;IAEpC,MAAM,SAAS,GAAG,mBAAmB,MAAM,CAAC,eAAe,CAAC;QAC1D,WAAW,EAAE,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO;KACpD,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAA;IAClB,OAAO;QACL,OAAO,EAAE,yBAAyB;QAClC,SAAS;QACT,WAAW,EAAE,SAAS,CAAC,WAAW;QAClC,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,SAAS,EAAE,SAAS,CAAC,IAAI;QACzB,QAAQ,EAAE,SAAS;QACnB,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,MAAM;QACN,MAAM,EAAE,KAAK;QACb,aAAa,EAAE,KAAK;QACpB,UAAU,EAAE,KAAK;QACjB,YAAY,EAAE,SAAS,CAAC,YAAY;QACpC,sBAAsB,EAAE,SAAS,CAAC,YAAY;QAC9C,sBAAsB,EAAE,SAAS,CAAC,YAAY;QAC9C,WAAW,EAAE,SAAS,CAAC,WAAW;QAClC,cAAc,EAAE,MAAM,CAAC,cAAc;QACrC,YAAY,EAAE,EAAE;QAChB,KAAK,EAAE;YACL,EAAE,EAAE,SAAS,CAAC,OAAO;YACrB,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS;YAClC,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;YACzC,QAAQ,EAAE,KAAK;YACf,MAAM,EAAE,SAAS;SAClB;QACD,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACnC,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS;SAClF,CAAC,CAAC;QACH,cAAc,EAAE,EAAE;QAClB,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC;QACjB,KAAK,EAAE,UAAU,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpE,QAAQ;QACR,QAAQ,EAAE,CAAC,OAAO,EAAE,GAAG,QAAQ,CAAC,QAAQ,CAAC;QACzC,cAAc,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE;QACpD,YAAY,EAAE,mBAAmB,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC;QAC5D,UAAU,EAAE,IAAI;QAChB,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC;QACpF,YAAY,EAAE,KAAK;QACnB,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC;YACjF,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,cAAc;QACzC,kBAAkB,EAAE,KAAK;KAC1B,CAAA;AACH,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,KAAa,EACb,IAAY,EACZ,UAAoC,EAAE;IAEtC,MAAM,IAAI,GAAG,mBAAmB,CAAC,KAAK,EAAE,OAAO,CAAC,UAAU,IAAI,EAAE,CAAC,CAAA;IACjE,uBAAuB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,UAAU,IAAI,EAAE,CAAC,CAAA;IAClE,MAAM,MAAM,GAAG,uBAAuB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,WAAW,CAAC,CAAA;IAC5E,IAAI,CAAC,MAAM;QAAE,OAAO;YAClB,OAAO,EAAE,4CAA4C;YACrD,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE;YACtF,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK;YACtD,kBAAkB,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK;YACrE,aAAa,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE;YACvD,QAAQ,EAAE,CAAC,oBAAoB,CAAC,EAAE,OAAO,EAAE,IAAI;YAC/C,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK;YAC1D,UAAU,EAAE,KAAK,EAAE,kBAAkB,EAAE,KAAK;SAC7C,CAAA;IACD,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,MAAM,CAAA;IACnC,IAAI,UAAU,GAAG,KAAK,CAAA;IACtB,IAAI,UAAU,GAAG,KAAK,CAAA;IACtB,IAAI,WAAW,GAAG,KAAK,CAAA;IACvB,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACpB,IAAI,CAAC,OAAO,CAAC,GAAG;YAAE,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAA;QACvF,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,EAAE,eAAe,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,SAAS,CAAA;QAC3G,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAA;QACtC,MAAM,SAAS,GAAG,eAAe,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;QACrE,IAAI,OAAO,CAAC,MAAM,KAAK,WAAW,IAAI,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;YAC5D,UAAU,GAAG,IAAI,CAAA;YACjB,IAAI,aAAa,GAAG,oBAAoB,CACtC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,CAC5C,CAAA;YACD,IAAI,KAAK,GAAG,aAAa,CAAC,KAAK,CAAA;YAC/B,IAAI,KAAK,GAAG,aAAa,CAAC,KAAK,CAAA;YAC/B,uDAAuD;YACvD,2DAA2D;YAC3D,wDAAwD;YACxD,gBAAgB;YAChB,IAAI,KAAK,CAAC,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,cAAc,KAAK,oBAAoB;gBAC5E,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;gBACnB,MAAM,QAAQ,GAAG;oBACf,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE,WAAW,EAAE,SAAS,CAAC,WAAW,EAAE;iBAC3E,CAAA;gBACD,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAA;gBAChC,WAAW,CACT,OAAO,EAAE,UAAU,CAAC,QAAQ,EAAE;oBAC5B,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,OAAO;oBAChD,WAAW,EAAE,qCAAqC,OAAO,CAAC,KAAK,CAAC,EAAE,kIAAkI;oBACpM,UAAU,EAAE,MAAM;iBACnB,CAAC,EAAE,mBAAmB,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,CACnE,CAAA;gBACD,WAAW,GAAG,IAAI,CAAA;gBAClB,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAA;gBACvC,GAAG,CAAC;oBACF,OAAO,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,IAAI,iBAAiB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAA;oBACnE,aAAa,GAAG,oBAAoB,CAClC,IAAI,CAAC,IAAI,EAAE,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,CAC1D,CAAA;oBACD,KAAK,GAAG,aAAa,CAAC,KAAK,CAAA;oBAC3B,KAAK,GAAG,aAAa,CAAC,KAAK,CAAA;gBAC7B,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS;oBAClC,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAC;YACrF,CAAC;YACD,MAAM,UAAU,GAAqB,KAAK,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO;gBACtE,CAAC,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,WAAW;oBACxC,CAAC,CAAC,KAAK,CAAC,cAAc,KAAK,oBAAoB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAA;YAC5E,OAAO,GAAG,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU;gBACtD,MAAM,EAAE,KAAK,CAAC,MAAM,KAAK,QAAQ,EAAE,aAAa,EAAE,KAAK,CAAC,MAAM,KAAK,QAAQ;gBAC3E,QAAQ,EAAE,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC;gBAC7B,cAAc,EAAE,CAAC,GAAG,KAAK,CAAC,cAAc,CAAC,EAAE,CAAA;YAC7C,UAAU,GAAG,IAAI,CAAA;YACjB,sBAAsB,CAAC,IAAI,CAAC,IAAI,EAAE,wBAAwB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,CAAA;QAClG,CAAC;aAAM,IAAI,OAAO,CAAC,MAAM,KAAK,aAAa,EAAE,CAAC;YAC5C,UAAU,GAAG,IAAI,CAAA;YACjB,MAAM,MAAM,GAAG,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YAC9C,MAAM,KAAK,GAAG,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAA;YAChC,MAAM,gBAAgB,GAAG,qBAAqB,CAC5C,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,CACnE,CAAA;YACD,MAAM,UAAU,GAAG,gBAAgB,CAAC,UAAU,CAAA;YAC9C,MAAM,QAAQ,GAAG,gBAAgB,CAAC,QAAQ,CAAA;YAC1C,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,IAAI,oBAAoB,CACtD,QAAQ,EAAE,MAAM,EAAE,SAAS,CAAC,SAAS,CACtC,CAAC,CAAA;YACF,MAAM,WAAW,GAAG,OAAO,CAAC,QAAQ,EAAE,KAAK,IAAI,UAAU,CAAC,MAAM;gBAC9D,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,SAAS,CAAC,OAAO;gBACvC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,OAAO,CAAC,WAAW;gBAChD,QAAQ,CAAC,KAAK,CAAC,SAAS,KAAK,SAAS,CAAC,SAAS;gBAChD,QAAQ,CAAC,KAAK,CAAC,YAAY,KAAK,MAAM,CAAC,YAAY,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;YAClF,OAAO,GAAG,EAAE,GAAG,OAAO;gBACpB,KAAK;gBACL,YAAY,EAAE,UAAU,CAAC,YAAY;gBACrC,sBAAsB,EAAE,UAAU,CAAC,YAAY;gBAC/C,sBAAsB,EAAE,UAAU,CAAC,YAAY;gBAC/C,KAAK,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,EAAE,EAAE,EAAE,SAAS,CAAC,OAAO,EAAE;gBAClD,MAAM,EAAE,OAAO,IAAI,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ;gBACvD,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,+BAA+B,CAAC;oBACnD,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,+BAA+B,CAAC;wBAC/C,CAAC,CAAC,gBAAgB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,gBAAgB,CAAC,QAAQ;4BAC5D,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,QAAQ,CAAC;aACrF,CAAA;YACD,UAAU,GAAG,IAAI,CAAA;YACjB,sBAAsB,CAAC,IAAI,CAAC,IAAI,EAAE,wBAAwB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,CAAA;QAClG,CAAC;QACD,SAAS,GAAG,uBAAuB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,CAAC,WAAW,CAAC,EAAE,SAAS,IAAI,SAAS,CAAA;IACrG,CAAC;IACD,MAAM,aAAa,GAAG,CAAC,OAAO,CAAC,OAAO,CAAA;IACtC,OAAO;QACL,OAAO,EAAE,4CAA4C;QACrD,SAAS,EAAE,IAAI;QACf,QAAQ,EAAE,SAAS;QACnB,SAAS,EAAE,IAAI;QACf,WAAW,EAAE,SAAS,CAAC,WAAW;QAClC,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,aAAa,EAAE,OAAO,CAAC,aAAa;QACpC,kBAAkB,EAAE,IAAI;QACxB,gBAAgB,EAAE,IAAI;QACtB,UAAU;QACV,aAAa;QACb,UAAU,EAAE,aAAa,IAAI,OAAO,CAAC,MAAM,KAAK,WAAW;QAC3D,UAAU,EAAE,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC;YAC/D,CAAC,CAAC,0BAA0B,IAAI,4BAA4B,SAAS,CAAC,WAAW,kBAAkB;YACnG,CAAC,CAAC,EAAE;QACN,QAAQ,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC;QAC/B,OAAO;QACP,UAAU;QACV,WAAW;QACX,YAAY,EAAE,KAAK;QACnB,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,KAAK;QACpF,kBAAkB,EAAE,KAAK;KAC1B,CAAA;AACH,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,KAAa,EAAE,IAAY,EAAE,UAAU,GAAG,EAAE;IAE5C,MAAM,IAAI,GAAG,mBAAmB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAA;IACnD,uBAAuB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC,CAAA;IACpD,MAAM,SAAS,GAAG,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAA;IACvE,MAAM,WAAW,GAAyC,EAAE,CAAA;IAC5D,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC1B,KAAK,MAAM,KAAK,IAAI,WAAW,CAAC,SAAS,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;aAChE,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;aAC9D,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;YAChD,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,CAAA;YACxC,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,cAAc,EAAE;gBAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAA;YAChF,MAAM,SAAS,GAAG,YAAY,CAAC,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC,CAAA;YACjE,MAAM,MAAM,GAAG,uBAAuB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,CAAC,WAAW,CAAC,CAAA;YAC9E,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,KAAK,SAAS,CAAC,SAAS;gBAC7D,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;gBACzE,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAA;YACxD,CAAC;YACD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAA;YAC9B,WAAW,CAAC,IAAI,CAAC;gBACf,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,WAAW,EAAE,OAAO,CAAC,WAAW;gBAChC,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,aAAa,EAAE,OAAO,CAAC,aAAa;gBACpC,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,cAAc,EAAE,OAAO,CAAC,cAAc;aACvC,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;IACD,OAAO;QACL,OAAO,EAAE,0CAA0C;QACnD,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW;QACjD,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK;QAC1D,UAAU,EAAE,KAAK,EAAE,kBAAkB,EAAE,KAAK;KAC7C,CAAA;AACH,CAAC;AAED,SAAS,qBAAqB,CAC5B,IAAY,EACZ,IAAY,EACZ,SAAqC,EACrC,MAAwB,EACxB,OAAe,EACf,GAAsB,EACtB,SAAiB,EACjB,KAA8B;IAE9B,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;QACtB,MAAM,UAAU,GAAG,uBAAuB,CAAC,IAAI,EAAE,IAAI,EAAE;YACrD,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS;YAChE,eAAe,EAAE,SAAS,CAAC,OAAO;SACnC,CAA+B,CAAA;QAChC,qBAAqB,CAAC,UAAU,EAAE,iBAAiB,EAAE,KAAK,CAAC,CAAA;QAC3D,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,kBAAkB,CACrD,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,CACzD,CAAC,CAAC,CAAC,IAAI,CAAA;QACR,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAA;IAC/C,CAAC;IAED,MAAM,SAAS,GAAG,uBAAuB,CAAC,IAAI,EAAE,IAAI,EAAE;QACpD,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS;KAClE,CAA+B,CAAA;IAChC,qBAAqB,CAAC,SAAS,EAAE,qBAAqB,EAAE,KAAK,CAAC,CAAA;IAC9D,MAAM,UAAU,GAAG,SAAS,CAAC,SAAS,CAAC,eAAe,CAAA;IACtD,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;QACvB,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,2BAA2B,CAAC,EAAE,CAAA;IAC3F,CAAC;IACD,IAAI,UAAU,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;QAC3B,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,kCAAkC,CAAC,EAAE,CAAA;IAClG,CAAC;IACD,MAAM,WAAW,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,WAAW,CAAA;IACjE,MAAM,OAAO,GAA0B,EAAE,CAAA;IACzC,KAAK,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC;QACtD,MAAM,UAAU,GAAG,uBAAuB,CAAC,IAAI,EAAE,IAAI,EAAE;YACrD,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS;YACjE,eAAe,EAAE,SAAS,CAAC,EAAE;SAC9B,CAA+B,CAAA;QAChC,qBAAqB,CAAC,UAAU,EAAE,uBAAuB,KAAK,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAA;QAC5E,IAAI,CAAC,UAAU,CAAC,MAAM;YAAE,SAAQ;QAChC,MAAM,QAAQ,GAAG,kBAAkB,CACjC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,CACzD,CAAA;QACD,IAAI,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,SAAS,CAAC,EAAE;YACtD,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,WAAW,IAAI,QAAQ,CAAC,KAAK,CAAC,SAAS,KAAK,SAAS,CAAC,SAAS;YACvF,QAAQ,CAAC,KAAK,CAAC,YAAY,KAAK,MAAM,CAAC,YAAY,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;YAClF,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,SAAS,CAAC,EAAE,EAAE,CAAC,CAAA;QACpC,CAAC;IACH,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO;YACL,UAAU,EAAE,SAAS;YACrB,QAAQ,EAAE,IAAI;YACd,QAAQ,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,sCAAsC,CAAC;SAClG,CAAA;IACH,CAAC;IACD,SAAS,CAAC,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IACjC,MAAM,UAAU,GAAG,uBAAuB,CAAC,IAAI,EAAE,IAAI,EAAE;QACrD,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS;QAChE,eAAe,EAAE,SAAS,CAAC,OAAO;KACnC,CAA+B,CAAA;IAChC,qBAAqB,CAAC,UAAU,EAAE,iBAAiB,EAAE,KAAK,CAAC,CAAA;IAC3D,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,kBAAkB,CACrD,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,CACzD,CAAC,CAAC,CAAC,IAAI,CAAA;IACR,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAA;AAC9F,CAAC;AAED,SAAS,qBAAqB,CAC5B,UAAsC,EACtC,MAAc,EACd,KAA8B;IAE9B,KAAK,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC5C,EAAE,EAAE,GAAG,MAAM,IAAI,IAAI,CAAC,EAAE,EAAE;QAC1B,IAAI,EAAE,MAAe;QACrB,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;QACpB,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,SAAS,EAAE,KAAK;KACjB,CAAC,CAAC,CAAC,CAAA;AACN,CAAC;AAED,SAAS,oBAAoB,CAC3B,IAAY,EACZ,OAAiC,EACjC,OAAe,EACf,GAAsB,EACtB,SAAiB;IAEjB,MAAM,IAAI,GAAG;QACX,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,QAAQ,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE;KACzC,CAAA;IAC1B,MAAM,SAAS,GAAG,uBAAuB,CAAC,IAAI,EAAE,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,WAAW,CAAC,EAAE,SAAS,CAAA;IAClG,IAAI,CAAC,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAA;IAClE,IAAI,CAAC,QAAQ,CAAC,WAAW,GAAG,SAAS,CAAC,WAAW,CAAA;IACjD,MAAM,KAAK,GAAG,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAA;IAChC,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAA;IACxC,IAAI,CAAC,WAAW,IAAI,MAAM,CAAC,WAAW,CAAC,KAAK,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;QACrE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE;gBACrB,GAAG,OAAO,CAAC,KAAK;gBAChB,MAAM,EAAE,QAAQ;gBAChB,QAAQ,EAAE,CAAC,8BAA8B,CAAC;aAC3C,EAAE,CAAA;IACL,CAAC;IACD,MAAM,KAAK,GAAG,SAAS,CACrB,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,EAChE,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,OAAO,CAAC,KAAK,CAAC,eAAe,IAAI,EAAE,EACjE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,CAC/B,CAAA;IACD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAA;AACzB,CAAC;AAED,SAAS,sBAAsB,CAC7B,IAAY,EACZ,SAAmC,EACnC,SAAqC,EACrC,OAAiC;IAEjC,oBAAoB,CAAC,OAAO,CAAC,CAAA;IAC7B,MAAM,WAAW,GAAG,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,YAAY,EAAE,KAAK,CAAC,CAAA;IACtE,UAAU,CAAC,WAAW,EAAE,OAAO,CAAC,CAAA;IAChC,MAAM,WAAW,GAAG,MAAM,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,CAAA;IACrD,SAAS,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAA;IACjC,SAAS,CAAC,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,EAAE,IAAI,SAAS,CAAC,OAAO,CAAA;IACzD,SAAS,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAA;IACvC,SAAS,CAAC,WAAW,GAAG,OAAO,CAAC,YAAY,CAAA;IAC5C,SAAS,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAA;IAC/B,SAAS,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAA;IACrC,SAAS,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;IAC9C,gBAAgB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;IACjC,MAAM,aAAa,GAAG,qBAAqB,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,WAAW,CAAC,CAAA;IAClF,MAAM,aAAa,GAAG,MAAM,CAAC,YAAY,CAAC,eAAe,CAAC,IAAI,EAAE,aAAa,EAAE,IAAI,CAAC,CAAC,CAAC,CAAA;IACtF,MAAM,OAAO,GAAG;QACd,OAAO,EAAE,6CAA6C;QACtD,WAAW,EAAE,SAAS,CAAC,WAAW;QAClC,aAAa;QACb,aAAa;QACb,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,WAAW,EAAE,OAAO,CAAC,YAAY;QACjC,WAAW;KACZ,CAAA;IACD,UAAU,CAAC,eAAe,CAAC,IAAI,EAAE,oBAAoB,CACnD,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,WAAW,CACtC,EAAE,KAAK,CAAC,EAAE,OAAO,CAAC,CAAA;IACnB,UAAU,CAAC,eAAe,CAAC,IAAI,EAAE,uBAAuB,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,EAAE,OAAO,CAAC,CAAA;IAC1F,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO;QACtD,CAAC,CAAC,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS;YACxC,CAAC,CAAC,OAAO,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAA;IAC1D,MAAM,KAAK,GAA8B;QACvC,OAAO,EAAE,kCAAkC;QAC3C,SAAS,EAAE,SAAS,CAAC,IAAI;QACzB,QAAQ,EAAE,SAAS;QACnB,MAAM,EAAE,WAAW;QACnB,OAAO,EAAE;YACP,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,IAAI,EAAE,CAAC;YACnC,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,iBAAiB,EAAE,SAAS,CAAC,WAAW;YACxC,SAAS,EAAE,SAAS,CAAC,SAAS;YAC9B,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,IAAI,SAAS,CAAC,OAAO;YAC9C,cAAc,EAAE,OAAO,CAAC,cAAc;YACtC,YAAY,EAAE,OAAO,CAAC,YAAY;YAClC,sBAAsB,EAAE,OAAO,CAAC,sBAAsB;YACtD,sBAAsB,EAAE,OAAO,CAAC,sBAAsB;YACtD,WAAW,EAAE,OAAO,CAAC,YAAY;YACjC,WAAW,EAAE,SAAS,CAAC,WAAW;YAClC,UAAU,EAAE,SAAS,CAAC,UAAU;SACjC;QACD,WAAW,EAAE,SAAS,CAAC,WAAW;QAClC,YAAY,EAAE,OAAO,CAAC,sBAAsB,IAAI,OAAO,CAAC,YAAY;QACpE,UAAU,EAAE,OAAO,CAAC,MAAM;QAC1B,aAAa,EAAE,OAAO,CAAC,SAAS;QAChC,UAAU,EAAE,OAAO,CAAC,KAAK,CAAC,MAAM;KACjC,CAAA;IACD,UAAU,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,CACnC,oBAAoB,EAAE,GAAG,SAAS,CAAC,IAAI,OAAO,CAC/C,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,CAAA;AACnB,CAAC;AAED,SAAS,eAAe,CACtB,WAAmB,EAAE,IAA2B;IAEhD,OAAO;QACL,OAAO,EAAE,+CAA+C;QACxD,WAAW;QACX,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,MAAM,EAAE,UAAU;QAClB,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW;QACtC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS;QAClC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO;QAC9B,cAAc,EAAE,IAAI,CAAC,cAAc;QACnC,eAAe,EAAE,EAAE;QACnB,SAAS,EAAE,EAAE;QACb,WAAW,EAAE,EAAE;QACf,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE,EAAE;QACZ,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACpC,CAAA;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAY,EAAE,SAAqC;IAC3E,oBAAoB,CAAC,SAAS,CAAC,CAAA;IAC/B,UAAU,CAAC,eAAe,CAAC,IAAI,EAAE,qBAAqB,CACpD,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC,WAAW,CAC3C,EAAE,KAAK,CAAC,EAAE,SAAS,CAAC,CAAA;AACvB,CAAC;AAED,SAAS,uBAAuB,CAC9B,IAAY,EACZ,IAAY,EACZ,WAAW,GAAG,EAAE;IAEhB,IAAI,aAAa,GAAG,EAAE,CAAA;IACtB,IAAI,qBAAqB,GAAG,EAAE,CAAA;IAC9B,IAAI,WAAW,GAAG,EAAE,CAAA;IACpB,IAAI,mBAAmB,GAAG,EAAE,CAAA;IAC5B,IAAI,mBAAmB,GAAG,EAAE,CAAA;IAC5B,IAAI,iBAAiB,GAAG,EAAE,CAAA;IAC1B,MAAM,oBAAoB,GAAG,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IACvF,MAAM,WAAW,GAAG,eAAe,CAAC,IAAI,EAAE,oBAAoB;QAC5D,CAAC,CAAC,oBAAoB,CAAC,IAAI,EAAE,oBAAoB,CAAC;QAClD,CAAC,CAAC,uBAAuB,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAA;IACzC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAC7B,IAAI,oBAAoB;YAAE,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAA;QACrF,OAAO,IAAI,CAAA;IACb,CAAC;IACD,MAAM,OAAO,GAAG,QAAQ,CAAC,WAAW,EAAE,4BAA4B,CAA4B,CAAA;IAC9F,IAAI,OAAO,CAAC,OAAO,KAAK,6CAA6C,EAAE,CAAC;QACtE,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAA;IACzD,CAAC;IACD,mBAAmB,GAAG,UAAU,CAAC,OAAO,CAAC,WAAW,EAAE,qBAAqB,CAAC,CAAA;IAC5E,iBAAiB,GAAG,UAAU,CAAC,OAAO,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAA;IACtE,IAAI,oBAAoB,IAAI,mBAAmB,KAAK,oBAAoB,EAAE,CAAC;QACzE,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAA;IAChE,CAAC;IACD,aAAa,GAAG,WAAW,CAAC,OAAO,CAAC,aAAa,EAAE,uBAAuB,CAAC,CAAA;IAC3E,qBAAqB,GAAG,WAAW,CAAC,OAAO,CAAC,aAAa,EAAE,uBAAuB,CAAC,CAAA;IACnF,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,WAAW,EAAE,qBAAqB,CAAC,CAAA;IACrE,mBAAmB,GAAG,WAAW,CAAC,OAAO,CAAC,WAAW,EAAE,qBAAqB,CAAC,CAAA;IAC7E,MAAM,aAAa,GAAG,eAAe,CAAC,IAAI,EAAE,aAAa,EAAE,IAAI,CAAC,CAAA;IAChE,MAAM,cAAc,GAAG,YAAY,CAAC,aAAa,CAAC,CAAA;IAClD,IAAI,qBAAqB,IAAI,MAAM,CAAC,cAAc,CAAC,KAAK,qBAAqB,EAAE,CAAC;QAC9E,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAA;IAC1D,CAAC;IACD,MAAM,SAAS,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;IAC7E,IAAI,SAAS,CAAC,SAAS,KAAK,IAAI,IAAI,SAAS,CAAC,WAAW,KAAK,mBAAmB,EAAE,CAAC;QAClF,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAA;IACvD,CAAC;IACD,IAAI,CAAC,WAAW;QAAE,WAAW,GAAG,SAAS,CAAC,WAAW,CAAA;IACrD,IAAI,CAAC,WAAW;QAAE,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAA;IAC5E,MAAM,WAAW,GAAG,eAAe,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,CAAA;IAC5D,MAAM,YAAY,GAAG,YAAY,CAAC,WAAW,CAAC,CAAA;IAC9C,IAAI,mBAAmB,IAAI,MAAM,CAAC,YAAY,CAAC,KAAK,mBAAmB,EAAE,CAAC;QACxE,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAA;IACxD,CAAC;IACD,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;IACvE,IAAI,OAAO,CAAC,WAAW,KAAK,SAAS,CAAC,WAAW,IAAI,OAAO,CAAC,SAAS,KAAK,IAAI;QAC7E,OAAO,CAAC,SAAS,KAAK,iBAAiB,IAAI,OAAO,CAAC,YAAY,KAAK,WAAW;QAC/E,SAAS,CAAC,SAAS,KAAK,OAAO,CAAC,SAAS,IAAI,SAAS,CAAC,WAAW,KAAK,WAAW;QAClF,SAAS,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM,IAAI,SAAS,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM;QAC1E,SAAS,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO,IAAI,SAAS,CAAC,cAAc,KAAK,OAAO,CAAC,cAAc,EAAE,CAAC;QAC/F,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAA;IACrD,CAAC;IACD,oBAAoB,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAA;IAC5C,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,CAAA;AAC/B,CAAC;AAED,SAAS,iBAAiB,CACxB,IAAY,EAAE,IAAY;IAE1B,+EAA+E;IAC/E,gFAAgF;IAChF,OAAO,uBAAuB,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,OAAO,IAAI,IAAI,CAAA;AAC7D,CAAC;AAED,SAAS,cAAc,CAAC,KAAc;IACpC,MAAM,IAAI,GAAG,WAAW,CAAC,KAAK,EAAE,8BAA8B,CAAC,CAAA;IAC/D,IAAI,IAAI,CAAC,OAAO,KAAK,+CAA+C,EAAE,CAAC;QACrE,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAA;IAC3D,CAAC;IACD,OAAO,IAA6C,CAAA;AACtD,CAAC;AAED,SAAS,YAAY,CAAC,KAAc;IAClC,MAAM,IAAI,GAAG,WAAW,CAAC,KAAK,EAAE,4BAA4B,CAAC,CAAA;IAC7D,IAAI,IAAI,CAAC,OAAO,KAAK,yBAAyB,EAAE,CAAC;QAC/C,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAA;IACzD,CAAC;IACD,OAAO,IAA2C,CAAA;AACpD,CAAC;AAED,SAAS,WAAW,CAClB,OAAe,EACf,IAAc,EACd,EAAU,EACV,IAAmC,EACnC,GAAW,EACX,GAAsB,EACtB,SAAiB,EACjB,KAA8B;IAE9B,MAAM,MAAM,GAAG,sBAAsB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IAChD,IAAI,IAAI,KAAK,OAAO,IAAI,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACzG,MAAM,IAAI,iBAAiB,CAAC,0BAA0B,CAAC,CAAA;IACzD,CAAC;IACD,IAAI,IAAI,KAAK,UAAU,IAAI,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QAChH,MAAM,IAAI,iBAAiB,CAAC,2BAA2B,CAAC,CAAA;IAC1D,CAAC;IACD,MAAM,GAAG,GAAG,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE;QACnC,GAAG,EAAE,GAAG,EAAE,mBAAmB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS;QAC5E,SAAS,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;KAC/D,CAAC,CAAA;IACF,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,CAAA;IACvC,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,CAAA;IACvC,MAAM,QAAQ,GAAG,OAAO,GAAG,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;IAChE,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,IAAK,GAAG,CAAC,KAA+B,CAAC,IAAI,KAAK,WAAW,CAAC,CAAA;IACjG,MAAM,MAAM,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,QAAQ,KAAK,CAAC,CAAA;IAC3C,KAAK,CAAC,IAAI,CAAC;QACT,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,EAAE,QAAQ;QAC1C,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,SAAS;KAC1E,CAAC,CAAA;IACF,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,sBAAsB,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,IAAI,MAAM,CAAC,CAAA;QACtD,MAAM,IAAI,iBAAiB,CAAC,WAAW,EAAE,EAAE,EAAE,SAAS,CAAC,CAAA;IACzD,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAA;AAC3B,CAAC;AAED,SAAS,UAAU,CACjB,IAA4D,EAC5D,IAAc;IAEd,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,EAAE,gBAAgB,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,CAAA;AAC1F,CAAC;AAED,SAAS,UAAU,CAAC,IAAc;IAChC,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC;QACzB,gBAAgB,EAAE,eAAe,EAAE,SAAS,EAAE,WAAW,EAAE,gBAAgB;QAC3E,cAAc,EAAE,cAAc;KAC/B,CAAC,CAAA;IACF,MAAM,MAAM,GAAa,EAAE,CAAA;IAC3B,IAAI,MAAM,GAAG,KAAK,CAAA;IAClB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,CAAC,IAAI,CAAC,aAAa,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAA;YACrD,MAAM,GAAG,KAAK,CAAA;YACd,SAAQ;QACV,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAChB,IAAI,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,MAAM,GAAG,IAAI,CAAA;IACxC,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAED,SAAS,gBAAgB,CAAC,KAA8B;IACtD,MAAM,EAAE,GAAG,UAAU,CAAC,KAAK,CAAC,EAAE,EAAE,iBAAiB,CAAC,CAAA;IAClD,MAAM,IAAI,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAA;IACzD,MAAM,OAAO,GAAG,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IAC7C,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAA;IAC9D,IAAI,QAAQ,CAAC,MAAM,GAAG,0BAA0B,EAAE,CAAC;QACjD,MAAM,IAAI,KAAK,CAAC,gCAAgC,0BAA0B,IAAI,CAAC,CAAA;IACjF,CAAC;IACD,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;QACxC,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,EAAE,sBAAsB,KAAK,GAAG,CAAC,CAAA;QAC7D,MAAM,WAAW,GAAG,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAChD,MAAM,IAAI,GAAG,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,sBAAsB,KAAK,QAAQ,CAAC,CAAC,CAAA;QACvF,OAAO;YACL,EAAE,EAAE,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,sBAAsB,KAAK,MAAM,CAAC;YAC1D,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,CAAC,WAAW,CAAC;SACtD,CAAA;IACH,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;IAC/C,MAAM,IAAI,GAAG,aAAa,CAAC,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;IAChG,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAA;AAC3C,CAAC;AAED,SAAS,gBAAgB,CAAC,KAA8B;IACtD,OAAO;QACL,EAAE,EAAE,UAAU,CAAC,KAAK,CAAC,EAAE,EAAE,iBAAiB,CAAC;QAC3C,IAAI,EAAE,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,mBAAmB,CAAC;QAClD,SAAS,EAAE,UAAU,CAAC,KAAK,CAAC,UAAU,EAAE,yBAAyB,CAAC;QAClE,YAAY,EAAE,cAAc,CAAC,KAAK,CAAC,YAAY,CAAC;QAChD,MAAM,EAAE,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC;QACpC,QAAQ,EAAE,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,IAAI,KAAK,CAAC,QAAQ,KAAK,IAAI;KAChF,CAAA;AACH,CAAC;AAED,SAAS,oBAAoB,CAC3B,QAAwB,EAAE,MAAwB,EAAE,SAAiB;IAErE,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK,CAAC,QAAQ,IAAI,QAAQ,CAAC,KAAK,CAAC,SAAS,KAAK,SAAS;QACtF,QAAQ,CAAC,KAAK,CAAC,YAAY,KAAK,MAAM,CAAC,YAAY;QAAE,OAAO,KAAK,CAAA;IACnE,MAAM,GAAG,GAAa,EAAE,CAAA;IACxB,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClC,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAC9C,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI;YAAE,OAAO,KAAK,CAAA;QACvD,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;IACrB,CAAC;IACD,OAAO,eAAe,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,eAAe,CAAC,CAAC,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;AAC1F,CAAC;AAED,SAAS,sBAAsB,CAAC,QAAwB,EAAE,YAAoB;IAC5E,OAAO,MAAM,CAAC,eAAe,CAAC;QAC5B,YAAY;QACZ,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;YACtB,EAAE,EAAE,QAAQ,CAAC,KAAK,CAAC,EAAE;YACrB,SAAS,EAAE,QAAQ,CAAC,KAAK,CAAC,SAAS;YACnC,gBAAgB,EAAE,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC;YACrD,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ;SAClC,CAAC,CAAC,CAAC,IAAI;QACR,MAAM,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;YAC7D,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,IAAI,EAAE;SACnD,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAChD,WAAW,EAAE,CAAC,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE;KAC9C,CAAC,CAAC,CAAA;AACL,CAAC;AAED,SAAS,aAAa,CAAC,OAAe,EAAE,KAA4C;IAClF,OAAO,MAAM,CAAC,eAAe,CAAC;QAC5B,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC;QACrB,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;KAC/D,CAAC,CAAC,CAAA;AACL,CAAC;AAED,SAAS,eAAe,CAAC,OAAe;IACtC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAA;IAClE,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAA;IACrB,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAA;IACnE,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;AACrC,CAAC;AAED,SAAS,wBAAwB,CAAC,OAAe,EAAE,KAAa;IAC9D,MAAM,QAAQ,GAAG;QACf,mDAAmD;QACnD,qCAAqC;QACrC,6CAA6C;QAC7C,yHAAyH;KAC1H,CAAA;IACD,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;QACtD,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,iBAAiB,CAAC,CAAA;IAC5C,CAAC;AACH,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAc;IAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;IACpC,IAAI,kIAAkI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QACpJ,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAA;IACrD,CAAC;IACD,IAAI,0EAA0E,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5F,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAA;IAC5D,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CACjB,MAAwC,EAAE,cAAwB;IAElE,OAAO;QACL,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,cAAc,EAAE,EAAE;QAC/F,cAAc,EAAE,CAAC,GAAG,cAAc,CAAC,CAAC,IAAI,EAAE,EAAE,YAAY,EAAE,EAAE;QAC5D,eAAe,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE;QAC7E,eAAe,EAAE,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,iBAAiB,EAAE,EAAE;QAC5E,cAAc,EAAE,EAAE,EAAE,cAAc,EAAE,EAAE;KACvC,CAAA;AACH,CAAC;AAED,SAAS,aAAa,CAAC,SAAkB;IACvC,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAA;AACrE,CAAC;AAED,SAAS,qBAAqB,CAAC,IAAY,EAAE,IAAY,EAAE,OAAe;IACxE,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACpD,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAA;IAC7C,OAAO,IAAI,CAAA;AACb,CAAC;AAED,SAAS,YAAY,CAAC,KAAa;IACjC,OAAO,KAAK,CAAC,OAAO,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;AAC7D,CAAC;AAED,SAAS,QAAQ,CAAC,IAAY,EAAE,KAAa,EAAE,KAAa;IAC1D,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,CAAA;IAChC,IAAI,KAAK,CAAC,MAAM,GAAG,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,KAAK,QAAQ,CAAC,CAAA;IACvE,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,cAAc,CAAC,CAAA;IAC9D,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;IACtC,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,aAAa,CAAC,CAAA;IAC7F,OAAO,OAAO,CAAA;AAChB,CAAC;AAED,SAAS,QAAQ,CAAC,IAAY,EAAE,KAAa;IAC3C,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,cAAc,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,UAAU,CAAC,CAAA;IACzE,IAAI,CAAC;QAAC,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAA;IAAC,CAAC;IACrD,MAAM,CAAC;QAAC,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,YAAY,CAAC,CAAA;IAAC,CAAC;AACjD,CAAC;AAED,SAAS,UAAU,CAAC,KAAuB,EAAE,KAAa;IACxD,IAAI,MAAM,GAAG,KAAK,CAAA;IAClB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,IAAI,CAAC;YAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QAAC,CAAC;QAAC,MAAM,CAAC;YAAC,MAAM,IAAI,iBAAiB,CAAC,QAAQ,KAAK,EAAE,CAAC,CAAA;QAAC,CAAC;IAC3F,CAAC;IACD,OAAO,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;AACnC,CAAC;AAED,SAAS,SAAS,CAAC,KAAa,EAAE,KAAa;IAC7C,IAAI,MAAe,CAAA;IACnB,IAAI,CAAC;QAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IAAC,CAAC;IAAC,MAAM,CAAC;QAAC,MAAM,IAAI,iBAAiB,CAAC,QAAQ,KAAK,EAAE,CAAC,CAAA;IAAC,CAAC;IACzF,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QAC9G,MAAM,IAAI,iBAAiB,CAAC,SAAS,KAAK,EAAE,CAAC,CAAA;IAC/C,CAAC;IACD,OAAO,MAAmC,CAAA;AAC5C,CAAC;AAED,SAAS,WAAW,CAAC,KAAc,EAAE,KAAa;IAChD,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAChE,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,aAAa,CAAC,CAAA;IACxC,CAAC;IACD,OAAO,KAAgC,CAAA;AACzC,CAAC;AAED,SAAS,WAAW,CAAC,KAAc,EAAE,KAAa;IAChD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,CAAC,CAAA;IAC7E,OAAO,KAAK,CAAA;AACd,CAAC;AAED,SAAS,cAAc,CAAC,KAAc;IACpC,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAA;AAC/C,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAa,EAAE,QAAgB;IACvD,MAAM,QAAQ,GAAG,KAAK;SACnB,OAAO,CAAC,2GAA2G,EAClH,wBAAwB,CAAC;SAC1B,OAAO,CAAC,sCAAsC,EAAE,mBAAmB,CAAC;SACpE,OAAO,CAAC,8CAA8C,EAAE,kBAAkB,CAAC,CAAA;IAC9E,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;IAC3C,OAAO,KAAK,CAAC,MAAM,IAAI,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAA;AACjG,CAAC;AAED,SAAS,WAAW,CAAC,KAA8B;IACjD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAA;IAC9B,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;QAC3B,MAAM,GAAG,GAAG,eAAe,CAAC;YAC1B,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,SAAS,EAAE,IAAI,CAAC,SAAS;SAC1B,CAAC,CAAA;QACF,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,OAAO,KAAK,CAAA;QAC/B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QACb,OAAO,IAAI,CAAA;IACb,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,oBAAoB,CAAC,IAAyC;IACrE,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAA;IACpB,MAAM,MAAM,GAAa,EAAE,CAAA;IAC3B,MAAM,GAAG,GAAG,CAAC,KAAa,EAAE,KAAc,EAAQ,EAAE;QAClD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE;YAAE,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;aACjF,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,SAAS;YAAE,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,IAAI,KAAK,EAAE,CAAC,CAAA;aAC7F,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACrE,MAAM,MAAM,GAAG,KAAgC,CAAA;YAC/C,KAAK,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC;gBACtE,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,SAAS;oBAAE,GAAG,CAAC,GAAG,KAAK,IAAI,GAAG,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;YACpE,CAAC;QACH,CAAC;IACH,CAAC,CAAA;IACD,KAAK,MAAM,GAAG,IAAI;QAChB,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ;KAC5F,EAAE,CAAC;QACF,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,SAAS;YAAE,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;IAClD,CAAC;IACD,OAAO,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAA;AACnD,CAAC;AAED,SAAS,UAAU,CAAC,KAAc,EAAE,KAAa;IAC/C,MAAM,IAAI,GAAG,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;IACtC,IAAI,CAAC,qCAAqC,CAAC,IAAI,CAAC,IAAI,CAAC;QACnD,4BAA4B,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,YAAY,CAAC,CAAA;IACvC,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED,SAAS,aAAa,CAAC,KAAa;IAClC,IAAI,CAAC,KAAK,IAAI,KAAK,KAAK,UAAU,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;QACjF,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;QAC1E,MAAM,IAAI,KAAK,CAAC,kCAAkC,KAAK,EAAE,CAAC,CAAA;IAC5D,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED,SAAS,uBAAuB,CAC9B,KAAa,EAAE,IAAY,EAAE,UAAU,GAAG,EAAE;IAE5C,MAAM,SAAS,GAAG,wBAAwB,CAAC,KAAK,EAAE,IAAI,EAAE,UAAU,CAAC,CAAA;IACnE,IAAI,SAAS,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;QAC9D,MAAM,IAAI,KAAK,CAAC,aAAa,IAAI,mCAAmC,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAA;IAChG,CAAC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,SAAS,eAAe,CAAC,IAAY,EAAE,GAAW,EAAE,SAAkB;IACpE,MAAM,QAAQ,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;IAC5C,MAAM,SAAS,GAAG,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAA;IACxC,MAAM,GAAG,GAAG,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAA;IACzC,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,oCAAoC,GAAG,EAAE,CAAC,CAAA;IAC9F,IAAI,SAAS,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,GAAG,EAAE,CAAC,CAAA;IAC5F,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC1B,IAAI,SAAS,CAAC,SAAS,CAAC,CAAC,cAAc,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,GAAG,EAAE,CAAC,CAAA;QAClG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,GAAG,EAAE,CAAC,CAAA;IACxG,CAAC;IACD,IAAI,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,CAAA;IACjC,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;QAChC,IAAI,MAAM,KAAK,QAAQ;YAAE,MAAK;QAC9B,QAAQ,GAAG,MAAM,CAAA;IACnB,CAAC;IACD,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;QACzE,MAAM,IAAI,KAAK,CAAC,iCAAiC,GAAG,EAAE,CAAC,CAAA;IACzD,CAAC;IACD,KAAK,GAAG,CAAA;IACR,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,SAAS,QAAQ,CAAC,IAAY,EAAE,SAAiB;IAC/C,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;IACrC,OAAO,GAAG,KAAK,EAAE,IAAI,CAAC,GAAG,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;AAC1G,CAAC;AAED,SAAS,eAAe,CAAC,IAAY;IACnC,OAAO,IAAI,CAAC,qBAAqB,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,qBAAqB,CAAC,CAAA;AAC3E,CAAC;AAED,SAAS,YAAY,CAAC,IAAY;IAChC,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC,CAAA;AAChD,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAY,EAAE,SAAiB;IAC1D,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,GAAG,UAAU,CAAC,SAAS,EAAE,YAAY,CAAC,OAAO,CAAC,CAAA;AAChF,CAAC;AAED,SAAS,qBAAqB,CAAC,IAAY,EAAE,WAAmB;IAC9D,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,GAAG,UAAU,CAAC,WAAW,EAAE,cAAc,CAAC,OAAO,CAAC,CAAA;AACrG,CAAC;AAED,SAAS,uBAAuB,CAAC,IAAY;IAC3C,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,aAAa,CAAC,CAAA;AACnD,CAAC;AAED,SAAS,oBAAoB,CAAC,IAAY,EAAE,WAAmB;IAC7D,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,GAAG,UAAU,CAAC,WAAW,EAAE,cAAc,CAAC,OAAO,CAAC,CAAA;AACnG,CAAC;AAED,SAAS,QAAQ,CAAC,KAAa;IAC7B,IAAI,CAAC,0CAA0C,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5D,MAAM,IAAI,KAAK,CAAC,sBAAsB,KAAK,EAAE,CAAC,CAAA;IAChD,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED,SAAS,eAAe,CAAC,KAAyB,EAAE,QAAgB,EAAE,GAAW;IAC/E,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,QAAQ,CAAA;IACxC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,GAAG,IAAI,KAAK,GAAG,GAAG,EAAE,CAAC;QAC1D,MAAM,IAAI,KAAK,CAAC,4BAA4B,GAAG,KAAK,CAAC,CAAA;IACvD,CAAC;IACD,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;AAC1B,CAAC;AAED,SAAS,UAAU,CAAC,IAAY,EAAE,KAAc;IAC9C,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAC7C,MAAM,IAAI,GAAG,GAAG,IAAI,QAAQ,OAAO,CAAC,GAAG,IAAI,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAA;IACrE,MAAM,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAA;IACpD,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;IACxD,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;IACtB,IAAI,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,cAAc,IAAI,EAAE,CAAC,CAAA;AAClF,CAAC;AAED,SAAS,MAAM,CAAC,KAAsB;IACpC,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;AACzD,CAAC","sourcesContent":["import { createHash, randomUUID } from 'node:crypto'\nimport { spawnSync } from 'node:child_process'\nimport {\n existsSync, lstatSync, mkdirSync, mkdtempSync, readFileSync, readdirSync,\n realpathSync, renameSync, rmSync, writeFileSync,\n} from 'node:fs'\nimport { tmpdir } from 'node:os'\nimport { basename, dirname, join, relative, resolve } from 'node:path'\nimport {\n WORKSPACE_STATE_ROOT, inspectAgentProject, projectSkillRef, showDevelopmentWorkspace,\n type DevelopmentWorkspaceState, type DevelopmentWorkspaceView,\n} from './development-workspace.js'\nimport { digest, stableStringify } from './events.js'\nimport {\n MULTICA_EVIDENCE_ROOT,\n emitProviderDiagnostic, inspectMulticaWorkspace, planMulticaWorkspace, sanitizeProviderEnv,\n statusMulticaWorkspace,\n type MulticaFailureDetail, type MulticaWorkspaceInspection,\n} from './multica-provider.js'\nimport {\n allRuntimeVocabularies, commandInvokesDws, forbiddenSmokeTool, skillsLoadedInContent,\n vocabulariesForRuntimeProvider,\n type RuntimeTraceVocabulary, type TraceToolMessage,\n} from './multica-runtime-vocabulary.js'\n\nexport const MULTICA_DEPLOYMENT_SCHEMA = 'dingtalk-agent/multica-deployment-receipt@1'\nconst MAX_DEPLOY_SKILLS = 32\nconst MAX_SKILL_SUPPORTING_FILES = 128\nconst deploymentWriteBudgets = new WeakMap<MulticaDeploymentCall[], {\n forward: number; rollback: number\n}>()\n\ntype DeploymentAction = 'apply' | 'retire'\ntype DeploymentStatus = 'applying' | 'reconciling' | 'verifying' | 'ready' | 'failed' | 'retired'\n\nexport interface MulticaDeploymentPlan {\n $schema: 'dingtalk-agent/multica-deployment-plan@1'\n planId: string\n action: DeploymentAction\n workspace: string\n provider: 'multica'\n profile: string\n inspectionId: string\n desiredHash: string\n deploymentHash: string\n expected: {\n workspaceId: string\n runtimeId: string\n agentId: string\n agentName: string\n skills: Array<{ name: string; hash: string; files: number }>\n definitionHash: string\n instructionsHash: string\n /** Runtime the Agent currently sits on when this plan is an explicit rebind migration. */\n previousRuntimeId?: string\n }\n rebindRuntime: boolean\n operations: string[]\n writeBudget: { forward: number; rollback: number }\n blocking: string[]\n requiresPlanId: true\n requiresExplicitYes: true\n remoteRead: false\n remoteWrite: false\n triggerWrite: false\n sideEffect: false\n dingtalkSideEffect: false\n}\n\nexport interface MulticaDeploymentCall {\n id: string\n kind: 'read' | 'write' | 'rollback'\n argv: string[]\n exitCode: number\n stdoutHash: string\n stderrHash: string\n passed: boolean\n ambiguous: boolean\n}\n\nexport interface MulticaDeploymentSmoke {\n status: 'not-run' | 'pending' | 'passed' | 'failed'\n marker: string\n markerHash: string\n issueId: string\n taskId: string\n taskStatus: string\n taskDiagnostic: string\n requiredSkills: string[]\n loadedSkills: string[]\n toolTracePassed: boolean\n responsePassed: boolean\n responseHash: string\n failures: string[]\n /** Runtime provider whose trace vocabularies judged this smoke ('' on legacy receipts). */\n runtimeProvider: string\n vocabularyIds: string[]\n /** Distinct tool names seen in the trace (names only, never inputs). */\n toolNames: string[]\n /** Tool names no active vocabulary knows — recorded for diagnosis, not judged fatal. */\n unrecognizedTools: string[]\n /**\n * 'skills-not-visible': the task failed because pushed Skills had not materialized into the\n * sandbox yet (cold-start race) — retryable, not a real deployment failure.\n */\n classification: '' | 'skills-not-visible'\n failureDetails: MulticaFailureDetail[]\n}\n\nexport interface MulticaDeploymentReceipt {\n $schema: 'dingtalk-agent/multica-deployment-receipt@1'\n receiptId: string\n operationId: string\n planId: string\n action: DeploymentAction\n workspace: string\n provider: 'multica'\n profile: string\n status: DeploymentStatus\n passed: boolean\n providerReady: boolean\n idempotent: boolean\n inspectionId: string\n inspectionObservedHash: string\n inspectionEvidencePath: string\n desiredHash: string\n deploymentHash: string\n observedHash: string\n agent: {\n id: string\n runtimeId: string\n instructionsHash: string\n archived: boolean\n action: 'create' | 'update' | 'restore' | 'archive' | 'noop' | 'unknown'\n }\n skills: Array<{\n id: string\n name: string\n sourceHash: string\n remoteHash: string\n action: 'create' | 'update' | 'noop' | 'unknown'\n }>\n assignmentHash: string\n calls: MulticaDeploymentCall[]\n smoke: MulticaDeploymentSmoke\n rollback: {\n attempted: boolean\n passed: boolean\n actions: string[]\n failures: string[]\n }\n failures: string[]\n failureDetails: MulticaFailureDetail[]\n /** Present when this apply was an explicit --rebind-runtime migration. */\n rebind?: { fromRuntimeId: string; toRuntimeId: string }\n evidencePath: string\n remoteRead: true\n remoteWrite: boolean\n triggerWrite: false\n sideEffect: 'multica-read-write' | 'multica-read' | 'none'\n dingtalkSideEffect: false\n}\n\nexport interface MulticaDeploymentOperation {\n $schema: 'dingtalk-agent/multica-deployment-operation@1'\n operationId: string\n planId: string\n workspace: string\n action: DeploymentAction\n status: DeploymentStatus\n profile: string\n workspaceId: string\n runtimeId: string\n agentId: string\n deploymentHash: string\n ambiguousAction: string\n receiptId: string\n receiptPath: string\n calls: MulticaDeploymentCall[]\n failures: string[]\n updatedAt: string\n}\n\nexport interface MulticaDeploymentStatusReport {\n $schema: 'dingtalk-agent/multica-deployment-status@1'\n workspace: string\n provider: 'multica'\n available: boolean\n operationId: string\n receiptId: string\n status: DeploymentStatus | 'missing'\n passed: boolean\n providerReady: boolean\n operationIntegrity: boolean\n receiptIntegrity: boolean\n reconciled: boolean\n /**\n * Without --execute this is the receipt frozen at apply time — smoke fields may be the\n * pending snapshot (empty/null-looking), not the remote now. `nextAction` carries the\n * exact refresh command.\n */\n receiptFrozen: boolean\n smokeStale: boolean\n nextAction: string\n failures: string[]\n receipt: MulticaDeploymentReceipt | null\n remoteRead: boolean\n /** True only when a --execute reconcile retried a skills-not-visible smoke (one mention). */\n remoteWrite: boolean\n triggerWrite: false\n sideEffect: false | 'multica-read' | 'multica-read-write'\n dingtalkSideEffect: false\n}\n\nexport interface MulticaDeploymentList {\n $schema: 'dingtalk-agent/multica-deployment-list@1'\n workspace: string\n provider: 'multica'\n deployments: Array<{\n receiptId: string\n operationId: string\n action: DeploymentAction\n status: DeploymentStatus\n passed: boolean\n providerReady: boolean\n planId: string\n deploymentHash: string\n }>\n remoteRead: false\n remoteWrite: false\n triggerWrite: false\n sideEffect: false\n dingtalkSideEffect: false\n}\n\nexport interface MulticaDeploymentOptions {\n yes?: boolean\n planId?: string\n noWait?: boolean\n execute?: boolean\n command?: string\n env?: NodeJS.ProcessEnv\n timeoutMs?: number\n smokeTimeoutMs?: number\n cliVersion?: string\n operationId?: string\n /** Explicit, plan-gated migration of the Agent to the runtime the env now points at. */\n rebindRuntime?: boolean\n}\n\nexport interface MulticaWorkspaceRunOptions {\n execute?: boolean\n yes?: boolean\n command?: string\n env?: NodeJS.ProcessEnv\n timeoutMs?: number\n cliVersion?: string\n out?: string\n}\n\nexport interface MulticaWorkspaceRunPlan {\n $schema: 'dingtalk-agent/multica-workspace-run-plan@1'\n workspace: string\n provider: 'multica'\n profile: string\n workspaceId: string\n runtimeId: string\n agentId: string\n promptHash: string\n operations: string[]\n blocking: string[]\n requiresExecute: true\n requiresExplicitYes: true\n remoteRead: false\n remoteWrite: false\n triggerWrite: false\n sideEffect: false\n dingtalkSideEffect: false\n}\n\nexport interface MulticaWorkspaceRunReport {\n $schema: 'dingtalk-agent/multica-workspace-run@1'\n passed: boolean\n runId: string\n workspace: string\n provider: 'multica'\n profile: string\n workspaceId: string\n runtimeId: string\n agentId: string\n promptHash: string\n issueId: string\n issueStatus: string\n taskId: string\n taskStatus: string\n taskDiagnostic: string\n pollAttempts: number\n pollIntervalMs: number\n answer: string\n answerHash: string\n toolNames: string[]\n loadedSkills: string[]\n failures: string[]\n calls: MulticaDeploymentCall[]\n evidencePath: string\n remoteRead: true\n remoteWrite: boolean\n triggerWrite: false\n sideEffect: 'multica-issue-read-write'\n dingtalkSideEffect: false\n}\n\ninterface LocalSkillFile {\n path: string\n absolutePath: string\n hash: string\n bytes: number\n}\n\ninterface LocalSkillBundle {\n name: string\n root: string\n mainPath: string\n content: string\n files: LocalSkillFile[]\n hash: string\n}\n\ninterface DeploymentSource {\n definitionHash: string\n instructions: string\n instructionsHash: string\n skills: LocalSkillBundle[]\n deploymentHash: string\n}\n\ninterface RemoteSkillFile {\n id: string\n path: string\n content: string\n hash: string\n}\n\ninterface RemoteSkill {\n id: string\n name: string\n content: string\n files: RemoteSkillFile[]\n hash: string\n}\n\ninterface RemoteAgent {\n id: string\n name: string\n runtimeId: string\n instructions: string\n status: string\n archived: boolean\n}\n\ninterface RemoteSnapshot {\n agent: RemoteAgent | null\n skills: Map<string, RemoteSkill | null>\n assignedIds: string[]\n}\n\ninterface ProviderResult {\n stdout: string\n stderr: string\n}\n\ninterface RollbackContext {\n createdSkillIds: string[]\n updatedSkills: RemoteSkill[]\n createdAgentId: string\n updatedAgent: RemoteAgent | null\n assignmentChanged: boolean\n previousAssignedIds: string[]\n}\n\nclass DeploymentFailure extends Error {\n constructor(\n readonly category: string,\n readonly ambiguous = false,\n readonly detail?: MulticaFailureDetail,\n ) {\n super(category)\n }\n}\n\nexport function runMulticaWorkspaceIssue(\n start: string,\n name: string,\n prompt: string,\n options: MulticaWorkspaceRunOptions = {},\n): MulticaWorkspaceRunPlan | MulticaWorkspaceRunReport {\n const normalizedPrompt = prompt.trim()\n if (!normalizedPrompt) throw new Error('workspace run prompt 不能为空')\n if (Buffer.byteLength(normalizedPrompt, 'utf8') > 64 * 1024) {\n throw new Error('workspace run prompt 不能超过 65536 bytes')\n }\n rejectCredentialMaterial(normalizedPrompt, 'workspace run prompt')\n const env = options.env || process.env\n const cliVersion = options.cliVersion || ''\n const info = inspectAgentProject(start, cliVersion)\n requireMulticaWorkspace(info.root, name, cliVersion)\n const providerPlan = planMulticaWorkspace(info.root, name, { env, cliVersion })\n const blocking = [...providerPlan.blocking]\n if (!providerPlan.expected.agentId) blocking.push('agent-id.missing')\n const plan: MulticaWorkspaceRunPlan = {\n $schema: 'dingtalk-agent/multica-workspace-run-plan@1',\n workspace: name,\n provider: 'multica',\n profile: providerPlan.profile,\n workspaceId: providerPlan.expected.workspaceId,\n runtimeId: providerPlan.expected.runtimeId,\n agentId: providerPlan.expected.agentId,\n promptHash: sha256(normalizedPrompt),\n operations: ['scope.inspect', 'issue.create', 'issue.runs', 'issue.run-messages', 'evidence.persist'],\n blocking: [...new Set(blocking)].sort(),\n requiresExecute: true,\n requiresExplicitYes: true,\n remoteRead: false,\n remoteWrite: false,\n triggerWrite: false,\n sideEffect: false,\n dingtalkSideEffect: false,\n }\n if (!options.execute) return plan\n if (!options.yes) {\n throw new Error('Multica workspace run 会创建远端 Issue;必须同时传 --execute --yes')\n }\n if (plan.blocking.length) {\n throw new Error(`Multica workspace run 前置条件不完整: ${plan.blocking.join(', ')}`)\n }\n\n const command = options.command || env.DTA_MULTICA_BIN || 'multica'\n // A real Issue-channel run does agent work plus issue get/comment/status side-tasks and\n // routinely needs minutes; the old 30s default timed out on almost every honest run. Wait\n // 4 minutes by default (still capped at 5). A run that overruns is resumable via\n // `workspace run --status --run-id` against the same Issue — no duplicate Issue.\n const timeoutMs = positiveTimeout(options.timeoutMs, 240_000, 300_000)\n const calls: MulticaDeploymentCall[] = []\n const inspection = inspectMulticaWorkspace(info.root, name, {\n execute: true, yes: true, persist: false, command, env,\n timeoutMs: Math.min(timeoutMs, 30_000), cliVersion,\n }) as MulticaWorkspaceInspection\n appendInspectionCalls(inspection, 'run.preflight', calls)\n const assignedSkills = inspection.resources.assignedSkills\n .filter((item) => item.enabled).map((item) => item.name).sort()\n const expectedSkills = [...providerPlan.expected.skills].sort()\n if (!inspection.passed || inspection.resources.workspace?.id !== plan.workspaceId ||\n inspection.resources.runtime?.id !== plan.runtimeId ||\n inspection.resources.agent?.id !== plan.agentId ||\n inspection.diff.includes('agent.runtime-drift') ||\n stableStringify(assignedSkills) !== stableStringify(expectedSkills)) {\n throw new Error('Multica workspace run scope 或 Skill assignment 与 Project 不一致;未创建 Issue')\n }\n\n const runId = `multica_workspace_run_${Date.now()}_${randomUUID().slice(0, 8)}`\n const marker = `DTA-WORKSPACE-RUN-${randomUUID()}`\n const issue = jsonObject(runProvider(\n command, scopedArgs({ profile: plan.profile, expected: { workspaceId: plan.workspaceId } }, [\n 'issue', 'create', '--title', `[DTA workspace run] ${marker}`,\n '--description', normalizedPrompt, '--assignee-id', plan.agentId, '--output', 'json',\n ]), 'workspace-run.issue.create', 'write', info.root, env,\n Math.min(timeoutMs, 30_000), calls,\n ).stdout, 'workspace run issue')\n const issueId = resourceId(issue.id, 'workspace run issue.id')\n return readbackWorkspaceRun({\n root: info.root, name, plan, issueId, runId, command, env, timeoutMs, calls, out: options.out,\n runtimeProvider: inspection.resources.runtime?.provider || '',\n })\n}\n\ninterface WorkspaceRunReadback {\n root: string\n name: string\n plan: { profile: string; workspaceId: string; runtimeId: string; agentId: string; promptHash: string }\n issueId: string\n runId: string\n command: string\n env: NodeJS.ProcessEnv\n timeoutMs: number\n calls: MulticaDeploymentCall[]\n out?: string\n runtimeProvider?: string\n}\n\n/**\n * Poll an existing Issue's assignee-agent task to a terminal state, then reconstruct the\n * run report from its trace. Shared by the initial `workspace run` (right after it creates the\n * Issue) and `workspace run --status --run-id` (resume against the SAME Issue, no new write) so\n * a timed-out run reconciles instead of spawning a duplicate Issue.\n */\nfunction readbackWorkspaceRun(ctx: WorkspaceRunReadback): MulticaWorkspaceRunReport {\n const { root, name, plan, issueId, runId, command, env, timeoutMs, calls } = ctx\n const started = Date.now()\n const pollIntervalMs = 2_000\n const pollCalls: MulticaDeploymentCall[] = []\n let pollAttempts = 0\n let task: Record<string, unknown> | undefined\n while (Date.now() - started < timeoutMs) {\n pollAttempts += 1\n const runs = jsonArray(runProvider(\n command, scopedArgs({ profile: plan.profile, expected: { workspaceId: plan.workspaceId } }, [\n 'issue', 'runs', issueId, '--full-id', '--output', 'json',\n ]), 'workspace-run.issue.runs', 'read', root, env,\n Math.min(timeoutMs, 30_000), pollCalls,\n ).stdout, 'workspace run issue runs')\n task = runs.filter((item) => !optionalString(item.agent_id) ||\n optionalString(item.agent_id) === plan.agentId)\n .sort((a, b) => optionalString(b.created_at).localeCompare(optionalString(a.created_at)))[0]\n const status = optionalString(task?.status)\n if (['completed', 'failed', 'cancelled'].includes(status)) break\n Atomics.wait(new Int32Array(new SharedArrayBuffer(4)), 0, 0, pollIntervalMs)\n }\n calls.push(...uniqueCalls(pollCalls))\n\n const taskId = task?.id ? resourceId(task.id, 'workspace run task.id') : ''\n const taskStatus = optionalString(task?.status) || 'not-created'\n let messages: Record<string, unknown>[] = []\n if (taskId && ['completed', 'failed', 'cancelled'].includes(taskStatus)) {\n messages = jsonArray(runProvider(\n command, scopedArgs({ profile: plan.profile, expected: { workspaceId: plan.workspaceId } }, [\n 'issue', 'run-messages', taskId, '--issue', issueId, '--output', 'json',\n ]), 'workspace-run.issue.messages', 'read', root, env,\n Math.min(timeoutMs, 30_000), calls,\n ).stdout, 'workspace run messages')\n }\n const toolUses = messages.filter((item) => optionalString(item.type) === 'tool_use')\n const toolNames = toolUses.map((item) => optionalString(item.tool)).filter(Boolean)\n // Skill 装载与文件写入按 runtime 词汇解读(并集),并叠加 tool_result 的\n // `**Skill loaded**` 正向证据 —— 与 smoke 判定同一套词汇,不再假定工具名叫 skill。\n const vocabularies = ctx.runtimeProvider\n ? vocabulariesForRuntimeProvider(ctx.runtimeProvider) : []\n const active: readonly RuntimeTraceVocabulary[] = vocabularies.length\n ? vocabularies : allRuntimeVocabularies()\n const loadedSet = new Set<string>()\n const runBannerTools = new Set(active.flatMap((item) => [...item.skillResultTools]))\n for (const item of messages) {\n const type = optionalString(item.type)\n const tool = optionalString(item.tool)\n if (type === 'tool_use') {\n const message: TraceToolMessage = { tool, input: smokeToolInput(item) }\n for (const vocabulary of active) {\n const name = vocabulary.skillLoadFromToolUse(message)\n if (name) loadedSet.add(name)\n }\n } else if (type === 'tool_result' && runBannerTools.has(tool)) {\n for (const name of skillsLoadedInContent(optionalString(item.content))) loadedSet.add(name)\n }\n }\n const loadedSkills = [...loadedSet].sort()\n const texts = messages.filter((item) => optionalString(item.type) === 'text')\n .map((item) => optionalString(item.content)).filter(Boolean)\n const replyWrites = toolUses.flatMap((item) => {\n const message: TraceToolMessage = {\n tool: optionalString(item.tool), input: smokeToolInput(item),\n }\n return active.map((vocabulary) => vocabulary.writeEvidence(message))\n .filter((write): write is { path: string; content: string } => Boolean(write))\n // 裸文件名与 ./、绝对路径等价(平台常见写法,与 smoke 白名单同一课)。\n .filter((write) => write.path === 'reply.md' || write.path.endsWith('/reply.md'))\n .map((write) => write.content)\n }).filter(Boolean)\n const answer = safeRemoteOutput(replyWrites.at(-1) || texts.at(-1) || '', 64 * 1024)\n const issueReadback = jsonObject(runProvider(\n command, scopedArgs({ profile: plan.profile, expected: { workspaceId: plan.workspaceId } }, [\n 'issue', 'get', issueId, '--output', 'json',\n ]), 'workspace-run.issue.readback', 'read', root, env,\n Math.min(timeoutMs, 30_000), calls,\n ).stdout, 'workspace run issue readback')\n const issueStatus = optionalString(issueReadback.status)\n const failures: string[] = []\n if (!task) failures.push('task.not-created')\n else if (!['completed', 'failed', 'cancelled'].includes(taskStatus)) failures.push('task.timeout')\n else if (taskStatus !== 'completed') failures.push(`task.${taskStatus}`)\n if (!answer) failures.push('answer.missing')\n const taskDiagnostic = task\n ? remoteTaskDiagnostic(task)\n : `未发现关联 task;Issue 状态=${issueStatus || 'unknown'},已轮询 ${pollAttempts} 次`\n const report: MulticaWorkspaceRunReport = {\n $schema: 'dingtalk-agent/multica-workspace-run@1',\n passed: failures.length === 0,\n runId,\n workspace: name,\n provider: 'multica',\n profile: plan.profile,\n workspaceId: plan.workspaceId,\n runtimeId: plan.runtimeId,\n agentId: plan.agentId,\n promptHash: plan.promptHash,\n issueId,\n issueStatus,\n taskId,\n taskStatus,\n taskDiagnostic,\n pollAttempts,\n pollIntervalMs,\n answer,\n answerHash: sha256(answer),\n toolNames,\n loadedSkills,\n failures,\n calls,\n evidencePath: '',\n remoteRead: true,\n remoteWrite: calls.some((call) => call.kind === 'write'),\n triggerWrite: false,\n sideEffect: 'multica-issue-read-write',\n dingtalkSideEffect: false,\n }\n const defaultEvidence = join(\n MULTICA_EVIDENCE_ROOT, safeName(name), 'multica-runs', `${runId}.json`,\n )\n report.evidencePath = relative(root, safeProjectPath(\n root, ctx.out || defaultEvidence, false,\n ))\n assertReportRedacted(report)\n atomicJson(safeProjectPath(root, report.evidencePath, false), report)\n return report\n}\n\n/**\n * Resume a `workspace run` by re-reading the SAME Issue's task instead of creating a new one.\n * Loads the persisted run evidence by runId, confirms the workspace scope still resolves to the\n * same target (fail closed on drift), then polls that Issue's assignee-agent task to a terminal\n * state and rewrites the run report. Read-only against Multica — never enqueues a second Issue.\n */\nexport function statusMulticaWorkspaceRun(\n start: string,\n name: string,\n options: MulticaWorkspaceRunOptions & { runId?: string } = {},\n): MulticaWorkspaceRunReport {\n const env = options.env || process.env\n const cliVersion = options.cliVersion || ''\n const runId = String(options.runId || '').trim()\n if (!/^multica_workspace_run_[0-9]+_[a-f0-9]{8}$/.test(runId)) {\n throw new Error('workspace run --status 需要一个合法的 --run-id(来自上次 run 的 runId)')\n }\n if (!options.execute) {\n throw new Error('workspace run --status 会向 Multica 独立回读同一 Issue;必须传 --execute')\n }\n if (!options.yes) throw new Error('workspace run --status 远端回读必须同时传 --execute --yes')\n const info = inspectAgentProject(start, cliVersion)\n requireMulticaWorkspace(info.root, name, cliVersion)\n // The original run persists evidence to `--out` when given, else the default runId path. Resume\n // must look where the run actually wrote, so honor the same `--out` (and rewrite back to it).\n const evidenceRel = options.out || join(\n MULTICA_EVIDENCE_ROOT, safeName(name), 'multica-runs', `${runId}.json`)\n const evidenceAbs = safeProjectPath(info.root, evidenceRel, false)\n if (!existsSync(evidenceAbs)) {\n throw new Error(\n `找不到 run 证据 ${evidenceRel};--run-id 必须是本 Workspace 已有的 runId` +\n `${options.out ? '' : '(若原 run 用了 --out,请对 --status 传相同 --out)'}`)\n }\n const prior = JSON.parse(readFileSync(evidenceAbs, 'utf8')) as MulticaWorkspaceRunReport\n if (prior.$schema !== 'dingtalk-agent/multica-workspace-run@1' ||\n prior.provider !== 'multica' || prior.workspace !== name || !prior.issueId) {\n throw new Error('run 证据不是本 Workspace 的 multica run,或缺少 issueId;已 fail closed')\n }\n // The evidence file must belong to THIS runId. Two runs sharing one --out overwrite each\n // other, so resuming the first runId against that path would otherwise read the second run's\n // Issue while reporting the first runId — cross-wiring answer and run. Fail closed on mismatch.\n if (prior.runId !== runId) {\n throw new Error(\n `run 证据 ${evidenceRel} 属于 runId ${prior.runId},与 --run-id ${runId} 不一致;已 fail closed` +\n `(同一 --out 被后一次 run 覆盖时会这样)`)\n }\n // Re-resolve scope offline and refuse unless the WHOLE frozen target still matches: an env\n // pointing at a different runtime/agent/profile (or an invalid ref surfacing in blocking) must\n // not let the resume mis-record the old task or overwrite the frozen values. workspaceId alone\n // is not enough.\n const providerPlan = planMulticaWorkspace(info.root, name, { env, cliVersion })\n const scopeDrift = providerPlan.blocking.length ? ['blocking:' + providerPlan.blocking.join(',')] : []\n if (providerPlan.profile !== prior.profile) scopeDrift.push('profile')\n if (providerPlan.expected.workspaceId !== prior.workspaceId) scopeDrift.push('workspace')\n if (providerPlan.expected.runtimeId !== prior.runtimeId) scopeDrift.push('runtime')\n if (providerPlan.expected.agentId !== prior.agentId) scopeDrift.push('agent')\n if (scopeDrift.length) {\n throw new Error(\n `workspace run --status: 当前 workspace scope 与 run 证据不一致 [${scopeDrift.join(', ')}];已 fail closed`)\n }\n const command = options.command || env.DTA_MULTICA_BIN || 'multica'\n const timeoutMs = positiveTimeout(options.timeoutMs, 240_000, 300_000)\n const plan = {\n profile: providerPlan.profile,\n workspaceId: providerPlan.expected.workspaceId,\n runtimeId: providerPlan.expected.runtimeId,\n agentId: providerPlan.expected.agentId,\n promptHash: prior.promptHash,\n }\n return readbackWorkspaceRun({\n root: info.root, name, plan, issueId: prior.issueId, runId,\n command, env, timeoutMs, calls: [], out: options.out,\n })\n}\n\nexport function planMulticaDeployment(\n start: string,\n name: string,\n options: {\n action?: DeploymentAction; env?: NodeJS.ProcessEnv; cliVersion?: string\n rebindRuntime?: boolean\n } = {},\n): MulticaDeploymentPlan {\n const action = options.action || 'apply'\n const rebindRuntime = Boolean(options.rebindRuntime) && action === 'apply'\n const env = options.env || process.env\n const cliVersion = options.cliVersion || ''\n const info = inspectAgentProject(start, cliVersion)\n const workspace = requireMulticaWorkspace(info.root, name, cliVersion)\n const source = loadDeploymentSource(info.root)\n const readPlan = planMulticaWorkspace(info.root, name, { env, cliVersion })\n const blocking = [...readPlan.blocking]\n let inspectionId = ''\n let previousRuntimeId = ''\n try {\n const status = statusMulticaWorkspace(info.root, name, cliVersion)\n inspectionId = status.inspectionId\n if (!status.readyForApply || !status.evidenceIntegrity || !status.stateMatched) {\n blocking.push(...status.failures.map((item) => `inspection.${item}`))\n }\n // Runtime 归属漂移只挡「普通 apply」:没有显式 --rebind-runtime 时不允许悄悄把\n // Agent 搬到新 runtime。retire 是收敛动作,不受漂移阻挡(否则 deploy 与 retire\n // 会被同一把锁一起锁死)。\n if (status.diff.includes('agent.runtime-drift')) {\n previousRuntimeId = status.observedAgentRuntimeId || ''\n if (action === 'apply' && !rebindRuntime) blocking.push('agent.runtime-drift')\n }\n } catch {\n blocking.push('inspection.invalid')\n }\n if (!inspectionId) blocking.push('inspection.missing')\n if (action === 'retire' && !readPlan.expected.agentId) blocking.push('agent-id.missing')\n if (rebindRuntime && !readPlan.expected.agentId) blocking.push('rebind.agent-id-missing')\n const expectedSkills = source.skills.map((skill) => ({\n name: skill.name, hash: skill.hash, files: skill.files.length + 1,\n }))\n const operations = action === 'retire'\n ? ['scope.reinspect', 'agent.archive', 'agent.readback', 'receipt.persist']\n : [\n 'scope.reinspect', 'skills.readback', 'skills.reconcile',\n ...(rebindRuntime ? ['agent.rebind-runtime'] : []), 'agent.reconcile',\n 'skills.assign-exact', 'provider.readback', 'load-smoke.create',\n 'load-smoke.recover-if-unstarted', 'load-smoke.readback', 'receipt.persist',\n ]\n const writeBudget = action === 'retire'\n ? { forward: 1, rollback: 0 }\n : {\n // +3 on top of the base 5: bounded skills-not-visible smoke retries (cold sandbox).\n forward: source.skills.length * (1 + MAX_SKILL_SUPPORTING_FILES * 2) + 8,\n rollback: source.skills.length * (1 + MAX_SKILL_SUPPORTING_FILES * 2) + 3,\n }\n const planId = `multica_deploy_plan_${digest(stableStringify({\n action, workspace: name, profile: readPlan.profile, inspectionId,\n desiredHash: workspace.desiredHash, deploymentHash: source.deploymentHash,\n expected: readPlan.expected, operations, writeBudget, rebindRuntime, previousRuntimeId,\n blocking: [...new Set(blocking)].sort(),\n })).slice(0, 24)}`\n return {\n $schema: 'dingtalk-agent/multica-deployment-plan@1',\n planId,\n action,\n workspace: name,\n provider: 'multica',\n profile: readPlan.profile,\n inspectionId,\n desiredHash: workspace.desiredHash,\n deploymentHash: source.deploymentHash,\n expected: {\n workspaceId: readPlan.expected.workspaceId,\n runtimeId: readPlan.expected.runtimeId,\n agentId: readPlan.expected.agentId,\n agentName: info.project.displayName,\n skills: expectedSkills,\n definitionHash: source.definitionHash,\n instructionsHash: source.instructionsHash,\n ...(rebindRuntime ? { previousRuntimeId } : {}),\n },\n rebindRuntime,\n operations,\n writeBudget,\n blocking: [...new Set(blocking)].sort(),\n requiresPlanId: true,\n requiresExplicitYes: true,\n remoteRead: false,\n remoteWrite: false,\n triggerWrite: false,\n sideEffect: false,\n dingtalkSideEffect: false,\n }\n}\n\nexport function applyMulticaDeployment(\n start: string,\n name: string,\n options: MulticaDeploymentOptions = {},\n action: DeploymentAction = 'apply',\n): MulticaDeploymentReceipt {\n if (!options.yes) {\n throw new Error('dta deploy 会修改 Multica 远端资源;必须显式传 --yes 和当前 --plan-id')\n }\n if (!options.planId) throw new Error('dta deploy 必须传 dry-run 返回的 --plan-id')\n const env = options.env || process.env\n const cliVersion = options.cliVersion || ''\n const rebindRuntime = Boolean(options.rebindRuntime) && action === 'apply'\n const plan = planMulticaDeployment(start, name, { action, env, cliVersion, rebindRuntime })\n if (options.planId !== plan.planId) {\n throw new Error(`deploy plan 已失效;期望当前 planId ${plan.planId}。` +\n 'plan 对中间状态敏感:dry-run 之后、apply 之前不要插入 workspace inspect 等操作;' +\n '重跑 --dry-run 取新 planId 后立即 apply')\n }\n if (plan.blocking.length) throw new Error(`deploy 前置条件不完整: ${plan.blocking.join(', ')}`)\n const info = inspectAgentProject(start, cliVersion)\n const workspace = requireMulticaWorkspace(info.root, name, cliVersion)\n const source = loadDeploymentSource(info.root)\n const command = options.command || env.DTA_MULTICA_BIN || 'multica'\n const timeoutMs = positiveTimeout(options.timeoutMs, 30_000, 300_000)\n const calls: MulticaDeploymentCall[] = []\n deploymentWriteBudgets.set(calls, plan.writeBudget)\n const preflight = inspectMulticaWorkspace(info.root, name, {\n execute: true, yes: true, persist: false, command, env, timeoutMs, cliVersion,\n }) as MulticaWorkspaceInspection\n if (!preflight.passed || preflight.inspectionId !== plan.inspectionId ||\n preflight.profile !== plan.profile ||\n preflight.expected.workspaceId !== plan.expected.workspaceId ||\n preflight.expected.runtimeId !== plan.expected.runtimeId) {\n throw new Error('deploy scope/readback 与冻结 plan 不一致;未执行任何远端写入' +\n '(dry-run 与 apply 之间若插入过 inspect 或远端有变化,重跑 --dry-run 后立即 apply)')\n }\n if (action === 'apply' && !rebindRuntime && preflight.diff.includes('agent.runtime-drift')) {\n throw new Error('deploy 前置条件不完整: agent.runtime-drift' +\n '(Agent 当前绑定在其他 runtime;显式迁移用 --rebind-runtime,退役用 --retire)')\n }\n appendInspectionCalls(preflight, 'preflight', calls)\n\n const operationId = `multica_operation_${Date.now()}_${randomUUID().slice(0, 12)}`\n const operation = createOperation(operationId, plan)\n operation.calls = [...calls]\n persistOperation(info.root, operation)\n const rollback: RollbackContext = {\n createdSkillIds: [], updatedSkills: [], createdAgentId: '', updatedAgent: null,\n assignmentChanged: false, previousAssignedIds: [],\n }\n let receipt: MulticaDeploymentReceipt\n const temp = mkdtempSync(join(tmpdir(), `dta-multica-deploy-${safeName(name)}-`))\n try {\n if (action === 'retire') {\n receipt = retireDeployment(\n info.root, workspace, source, plan, preflight, operation, command, env, timeoutMs, calls,\n )\n } else {\n receipt = executeApply(\n info.root, workspace, source, plan, preflight, operation, command, env,\n timeoutMs, positiveTimeout(options.smokeTimeoutMs, 30_000, 300_000),\n Boolean(options.noWait), calls, rollback, temp,\n )\n }\n } catch (error) {\n const failure = error instanceof DeploymentFailure\n ? error : new DeploymentFailure('deploy.internal-failure')\n const rollbackReport = failure.ambiguous\n ? emptyRollback(false)\n : rollbackConfirmed(\n info.root, plan, command, env, timeoutMs, calls, rollback, temp,\n )\n const status: DeploymentStatus = failure.ambiguous ? 'reconciling' : 'failed'\n operation.status = status\n operation.ambiguousAction = failure.ambiguous ? failure.category : ''\n operation.calls = calls\n operation.failures = [failure.category, ...rollbackReport.failures]\n operation.updatedAt = new Date().toISOString()\n receipt = failureReceipt(\n info.root, workspace, source, plan, preflight, operation, calls,\n rollbackReport, status, failure.category, failure.detail,\n )\n } finally {\n rmSync(temp, { recursive: true, force: true })\n deploymentWriteBudgets.delete(calls)\n }\n persistReceiptAndState(info.root, workspace, operation, receipt)\n return receipt\n}\n\nfunction executeApply(\n root: string,\n workspace: DevelopmentWorkspaceView,\n source: DeploymentSource,\n plan: MulticaDeploymentPlan,\n preflight: MulticaWorkspaceInspection,\n operation: MulticaDeploymentOperation,\n command: string,\n env: NodeJS.ProcessEnv,\n timeoutMs: number,\n smokeTimeoutMs: number,\n noWait: boolean,\n calls: MulticaDeploymentCall[],\n rollback: RollbackContext,\n temp: string,\n): MulticaDeploymentReceipt {\n const snapshot = readRemoteSnapshot(\n root, source, preflight, command, env, timeoutMs, calls,\n )\n const exactBefore = remoteMatchesDesired(snapshot, source, plan.expected.runtimeId)\n const previous = loadLatestReceipt(root, workspace.name)\n if (exactBefore && workspace.state?.status === 'ready' &&\n workspace.state.binding.deploymentHash === source.deploymentHash &&\n previous?.passed && previous.providerReady && previous.deploymentHash === source.deploymentHash) {\n const receiptId = `multica_receipt_${digest(stableStringify({\n operationId: operation.operationId, planId: plan.planId, reuse: previous.receiptId,\n })).slice(0, 24)}`\n return {\n ...previous,\n receiptId,\n operationId: operation.operationId,\n planId: plan.planId,\n idempotent: true,\n calls: [...calls],\n agent: { ...previous.agent, action: 'noop' },\n skills: previous.skills.map((skill) => ({ ...skill, action: 'noop' })),\n failureDetails: Array.isArray(previous.failureDetails) ? previous.failureDetails : [],\n evidencePath: receiptRelativePath(workspace.name, receiptId),\n remoteWrite: false,\n sideEffect: 'multica-read',\n }\n }\n\n operation.status = 'applying'\n operation.calls = calls\n operation.updatedAt = new Date().toISOString()\n persistOperation(root, operation)\n\n const skillResults: MulticaDeploymentReceipt['skills'] = []\n const skillIds: string[] = []\n for (const local of source.skills) {\n const remote = snapshot.skills.get(local.name) || null\n const result = reconcileSkill(\n root, plan, local, remote, command, env, timeoutMs, calls, rollback, temp,\n )\n skillIds.push(result.skill.id)\n skillResults.push({\n id: result.skill.id,\n name: local.name,\n sourceHash: local.hash,\n remoteHash: result.skill.hash,\n action: result.action,\n })\n }\n\n const agentResult = reconcileAgent(\n root, plan, source, snapshot.agent, command, env, timeoutMs, calls, rollback,\n )\n const agentId = agentResult.agent.id\n operation.agentId = agentId\n const expectedAssignments = [...skillIds].sort()\n rollback.previousAssignedIds = [...snapshot.assignedIds]\n if (stableStringify([...snapshot.assignedIds].sort()) !== stableStringify(expectedAssignments)) {\n runProvider(\n command, scopedArgs(plan, [\n 'agent', 'skills', 'set', agentId, '--skill-ids', expectedAssignments.join(','), '--output', 'json',\n ]), 'agent.skills.set', 'write', root, env, timeoutMs, calls,\n )\n rollback.assignmentChanged = true\n }\n\n const readback = inspectMulticaWorkspace(root, workspace.name, {\n execute: true, yes: true, persist: true, command, env, timeoutMs,\n agentIdOverride: agentId,\n }) as MulticaWorkspaceInspection\n if (!readback.passed || !readback.resources.agent ||\n readback.resources.agent.id !== agentId ||\n readback.resources.agent.runtimeId !== plan.expected.runtimeId) {\n throw new DeploymentFailure('readback.agent-mismatch')\n }\n const finalSnapshot = readRemoteSnapshot(\n root, source, readback, command, env, timeoutMs, calls,\n )\n if (!remoteMatchesDesired(finalSnapshot, source, plan.expected.runtimeId)) {\n throw new DeploymentFailure('readback.deployment-mismatch')\n }\n const observedHash = deploymentObservedHash(finalSnapshot, readback.inspectionId)\n const smoke = createAndReadSmoke(\n root, plan, source, agentId, readback.resources.runtime?.provider || '',\n command, env, timeoutMs, smokeTimeoutMs, noWait, calls,\n )\n // skills-not-visible 是冷沙箱竞态(推送的 Skill 尚未物化),不是真实部署失败:落\n // verifying 而非 failed,避免把一次正常部署误判成失败、把人推去改本体换模板。\n const status: DeploymentStatus = smoke.status === 'passed'\n ? 'ready' : smoke.status === 'pending' ? 'verifying'\n : smoke.classification === 'skills-not-visible' ? 'verifying' : 'failed'\n const receiptId = `multica_receipt_${digest(stableStringify({\n operationId: operation.operationId, planId: plan.planId, observedHash,\n smoke: { markerHash: smoke.markerHash, issueId: smoke.issueId, taskId: smoke.taskId },\n })).slice(0, 24)}`\n return {\n $schema: MULTICA_DEPLOYMENT_SCHEMA,\n receiptId,\n operationId: operation.operationId,\n planId: plan.planId,\n action: 'apply',\n workspace: workspace.name,\n provider: 'multica',\n profile: plan.profile,\n status,\n passed: status === 'ready',\n providerReady: status === 'ready',\n idempotent: false,\n inspectionId: readback.inspectionId,\n inspectionObservedHash: readback.observedHash,\n inspectionEvidencePath: readback.evidencePath,\n desiredHash: workspace.desiredHash,\n deploymentHash: source.deploymentHash,\n observedHash,\n agent: {\n id: finalSnapshot.agent?.id || agentId,\n runtimeId: finalSnapshot.agent?.runtimeId || '',\n instructionsHash: sha256(finalSnapshot.agent?.instructions || ''),\n archived: Boolean(finalSnapshot.agent?.archived),\n action: agentResult.action,\n },\n skills: skillResults.sort((a, b) => a.name.localeCompare(b.name)),\n assignmentHash: digest(stableStringify(expectedAssignments)),\n calls: [...calls],\n smoke,\n rollback: emptyRollback(false),\n failures: [...smoke.failures],\n failureDetails: [...smoke.failureDetails],\n ...(plan.rebindRuntime && plan.expected.previousRuntimeId ? {\n rebind: {\n fromRuntimeId: plan.expected.previousRuntimeId,\n toRuntimeId: plan.expected.runtimeId,\n },\n } : {}),\n evidencePath: receiptRelativePath(workspace.name, receiptId),\n remoteRead: true,\n remoteWrite: calls.some((call) => call.kind === 'write'),\n triggerWrite: false,\n sideEffect: 'multica-read-write',\n dingtalkSideEffect: false,\n }\n}\n\nfunction retireDeployment(\n root: string,\n workspace: DevelopmentWorkspaceView,\n source: DeploymentSource,\n plan: MulticaDeploymentPlan,\n preflight: MulticaWorkspaceInspection,\n operation: MulticaDeploymentOperation,\n command: string,\n env: NodeJS.ProcessEnv,\n timeoutMs: number,\n calls: MulticaDeploymentCall[],\n): MulticaDeploymentReceipt {\n const agentId = preflight.resources.agent?.id || plan.expected.agentId\n if (!agentId) throw new DeploymentFailure('retire.agent-id-missing')\n if (!preflight.resources.agent?.archived) {\n runProvider(\n command, scopedArgs(plan, ['agent', 'archive', agentId, '--output', 'json']),\n 'agent.archive', 'write', root, env, timeoutMs, calls,\n )\n }\n const agent = parseRemoteAgent(jsonObject(runProvider(\n command, scopedArgs(plan, ['agent', 'get', agentId, '--output', 'json']),\n 'agent.get.retire-readback', 'read', root, env, timeoutMs, calls,\n ).stdout, 'retire agent'))\n if (!agent.archived || agent.id !== agentId) throw new DeploymentFailure('retire.readback-mismatch')\n const observedHash = digest(stableStringify({ agentId, archived: true, deploymentHash: source.deploymentHash }))\n const receiptId = `multica_receipt_${digest(stableStringify({\n operationId: operation.operationId, action: 'retire', observedHash,\n })).slice(0, 24)}`\n return {\n $schema: MULTICA_DEPLOYMENT_SCHEMA,\n receiptId,\n operationId: operation.operationId,\n planId: plan.planId,\n action: 'retire',\n workspace: workspace.name,\n provider: 'multica',\n profile: plan.profile,\n status: 'retired',\n passed: true,\n providerReady: false,\n idempotent: Boolean(preflight.resources.agent?.archived),\n inspectionId: preflight.inspectionId,\n inspectionObservedHash: preflight.observedHash,\n inspectionEvidencePath: preflight.evidencePath,\n desiredHash: workspace.desiredHash,\n deploymentHash: source.deploymentHash,\n observedHash,\n agent: {\n id: agent.id,\n runtimeId: agent.runtimeId,\n instructionsHash: sha256(agent.instructions),\n archived: true,\n action: preflight.resources.agent?.archived ? 'noop' : 'archive',\n },\n skills: [],\n assignmentHash: '',\n calls: [...calls],\n smoke: emptySmoke('not-run', source.skills.map((item) => item.name)),\n rollback: emptyRollback(false),\n failures: [],\n failureDetails: [],\n evidencePath: receiptRelativePath(workspace.name, receiptId),\n remoteRead: true,\n remoteWrite: calls.some((call) => call.kind === 'write'),\n triggerWrite: false,\n sideEffect: 'multica-read-write',\n dingtalkSideEffect: false,\n }\n}\n\nfunction loadDeploymentSource(root: string): DeploymentSource {\n const info = inspectAgentProject(root)\n const definitionPath = safeProjectPath(root, info.project.definition, true)\n const definition = readUtf8(definitionPath, 'Agent Definition', 512 * 1024)\n rejectCredentialMaterial(definition, 'Agent Definition')\n const definitionHash = sha256(definition)\n const skillRoots: Array<{ name: string; root: string }> = []\n for (const name of info.project.skills) {\n const ref = projectSkillRef(info.project, name)\n skillRoots.push({ name, root: safeProjectPath(root, ref, true) })\n }\n if (skillRoots.length > MAX_DEPLOY_SKILLS) {\n throw new Error(`Multica deploy 最多支持 ${MAX_DEPLOY_SKILLS} 个受管 Skills`)\n }\n const skills = skillRoots.map(({ name, root: skillRoot }) => loadSkillBundle(name, skillRoot))\n .sort((a, b) => a.name.localeCompare(b.name))\n if (new Set(skills.map((item) => item.name)).size !== skills.length) {\n throw new Error('Multica deploy required Skills 不能重名')\n }\n // Agent instructions are the human-authored Definition, byte for byte. Deployment\n // hashes and the managed Skill set belong to the control plane and its Receipt;\n // injecting them into the System Prompt makes the role unreadable and creates a\n // second runtime protocol beside the Host's native Skill assignment.\n const instructions = definition\n const instructionsHash = sha256(instructions)\n const deploymentHash = digest(stableStringify({\n definitionHash, instructionsHash,\n skills: skills.map((item) => ({ name: item.name, hash: item.hash })),\n }))\n return { definitionHash, instructions, instructionsHash, skills, deploymentHash }\n}\n\nfunction loadSkillBundle(name: string, root: string): LocalSkillBundle {\n const actual = realpathSync(root)\n if (!lstatSync(actual).isDirectory()) throw new Error(`Skill ${name} source 不是目录`)\n const files: LocalSkillFile[] = []\n const visit = (directory: string, prefix = ''): void => {\n for (const entry of readdirSync(directory, { withFileTypes: true })\n .sort((a, b) => a.name.localeCompare(b.name))) {\n const path = join(directory, entry.name)\n const ref = prefix ? `${prefix}/${entry.name}` : entry.name\n if (entry.isSymbolicLink()) throw new Error(`Skill ${name} 不允许符号链接: ${ref}`)\n if (entry.isDirectory()) visit(path, ref)\n else if (entry.isFile()) {\n const content = readFileSync(path)\n if (content.length > 1024 * 1024) throw new Error(`Skill ${name} 文件超过 1 MiB: ${ref}`)\n const text = content.toString('utf8')\n if (Buffer.from(text, 'utf8').compare(content) !== 0 || content.includes(0)) {\n throw new Error(`Skill ${name} 只支持 UTF-8 supporting files: ${ref}`)\n }\n rejectCredentialMaterial(text, `Skill ${name}/${ref}`)\n files.push({ path: ref, absolutePath: path, hash: sha256(content), bytes: content.length })\n if (files.length > MAX_SKILL_SUPPORTING_FILES + 1) {\n throw new Error(`Skill ${name} files 超过 ${MAX_SKILL_SUPPORTING_FILES + 1} 个`)\n }\n } else throw new Error(`Skill ${name} 包含特殊文件: ${ref}`)\n }\n }\n visit(actual)\n if (files.reduce((sum, item) => sum + item.bytes, 0) > 8 * 1024 * 1024) {\n throw new Error(`Skill ${name} 总大小超过 8 MiB`)\n }\n const main = files.find((item) => item.path === 'SKILL.md')\n if (!main) throw new Error(`Skill ${name} 缺少 SKILL.md`)\n const content = readUtf8(main.absolutePath, `Skill ${name}`, 1024 * 1024)\n const declared = frontmatterName(content)\n if (declared !== name) throw new Error(`Skill ${name} frontmatter name 不一致: ${declared || '<missing>'}`)\n rejectCredentialMaterial(content, `Skill ${name}`)\n const supporting = files.filter((item) => item.path !== 'SKILL.md')\n if (supporting.length > MAX_SKILL_SUPPORTING_FILES) {\n throw new Error(`Skill ${name} supporting files 超过 ${MAX_SKILL_SUPPORTING_FILES} 个`)\n }\n const hash = skillTreeHash(content, supporting.map((item) => ({ path: item.path, hash: item.hash })))\n return { name, root: actual, mainPath: main.absolutePath, content, files: supporting, hash }\n}\n\nfunction readRemoteSnapshot(\n root: string,\n source: DeploymentSource,\n inspection: MulticaWorkspaceInspection,\n command: string,\n env: NodeJS.ProcessEnv,\n timeoutMs: number,\n calls: MulticaDeploymentCall[],\n): RemoteSnapshot {\n const planLike = {\n profile: inspection.profile,\n expected: inspection.expected,\n }\n const skills = new Map<string, RemoteSkill | null>()\n for (const local of source.skills) {\n const candidates = inspection.resources.catalogSkills.filter((item) => item.name === local.name)\n if (candidates.length > 1) throw new DeploymentFailure(`skills.duplicate:${local.name}`)\n if (!candidates.length) {\n skills.set(local.name, null)\n continue\n }\n const raw = jsonObject(runProvider(\n command, scopedArgs(planLike, ['skill', 'get', candidates[0].id, '--output', 'json']),\n `skill.get:${local.name}`, 'read', root, env, timeoutMs, calls,\n ).stdout, `skill ${local.name}`)\n const skill = parseRemoteSkill(raw)\n if (skill.id !== candidates[0].id || skill.name !== local.name) {\n throw new DeploymentFailure(`skills.binding-mismatch:${local.name}`)\n }\n skills.set(local.name, skill)\n }\n let agent: RemoteAgent | null = null\n if (inspection.resources.agent) {\n agent = parseRemoteAgent(jsonObject(runProvider(\n command, scopedArgs(planLike, [\n 'agent', 'get', inspection.resources.agent.id, '--output', 'json',\n ]), 'agent.get.deploy', 'read', root, env, timeoutMs, calls,\n ).stdout, 'agent deploy'))\n if (agent.id !== inspection.resources.agent.id) throw new DeploymentFailure('agent.binding-mismatch')\n }\n return {\n agent,\n skills,\n assignedIds: inspection.resources.assignedSkills.filter((item) => item.enabled)\n .map((item) => item.id).sort(),\n }\n}\n\nfunction reconcileSkill(\n root: string,\n plan: MulticaDeploymentPlan,\n local: LocalSkillBundle,\n remote: RemoteSkill | null,\n command: string,\n env: NodeJS.ProcessEnv,\n timeoutMs: number,\n calls: MulticaDeploymentCall[],\n rollback: RollbackContext,\n temp: string,\n): { skill: RemoteSkill; action: 'create' | 'update' | 'noop' } {\n let id = remote?.id || ''\n let action: 'create' | 'update' | 'noop' = 'noop'\n if (!remote) {\n const created = jsonObject(runProvider(\n command, scopedArgs(plan, [\n 'skill', 'create', '--name', local.name,\n '--description', `Managed by dingtalk-agent (${local.hash.slice(0, 12)})`,\n '--content-file', local.mainPath, '--output', 'json',\n ]), `skill.create:${local.name}`, 'write', root, env, timeoutMs, calls,\n ).stdout, `created skill ${local.name}`)\n id = resourceId(created.id, `created skill ${local.name}.id`)\n rollback.createdSkillIds.push(id)\n action = 'create'\n for (const file of local.files) upsertSkillFile(\n root, plan, id, file.path, file.absolutePath, command, env, timeoutMs, calls,\n )\n } else if (remote.hash !== local.hash) {\n rollback.updatedSkills.push(remote)\n runProvider(\n command, scopedArgs(plan, [\n 'skill', 'update', id, '--content-file', local.mainPath, '--output', 'json',\n ]), `skill.update:${local.name}`, 'write', root, env, timeoutMs, calls,\n )\n syncSkillFiles(root, plan, id, local, remote, command, env, timeoutMs, calls)\n action = 'update'\n }\n const readback = parseRemoteSkill(jsonObject(runProvider(\n command, scopedArgs(plan, ['skill', 'get', id, '--output', 'json']),\n `skill.get.readback:${local.name}`, 'read', root, env, timeoutMs, calls,\n ).stdout, `skill readback ${local.name}`))\n if (readback.name !== local.name || readback.hash !== local.hash) {\n throw new DeploymentFailure(`skill.readback-mismatch:${local.name}`)\n }\n return { skill: readback, action }\n}\n\nfunction reconcileAgent(\n root: string,\n plan: MulticaDeploymentPlan,\n source: DeploymentSource,\n remote: RemoteAgent | null,\n command: string,\n env: NodeJS.ProcessEnv,\n timeoutMs: number,\n calls: MulticaDeploymentCall[],\n rollback: RollbackContext,\n): { agent: RemoteAgent; action: 'create' | 'update' | 'restore' | 'noop' } {\n let id = remote?.id || ''\n let action: 'create' | 'update' | 'restore' | 'noop' = 'noop'\n if (!remote) {\n const created = jsonObject(runProvider(\n command, scopedArgs(plan, [\n 'agent', 'create', '--name', plan.expected.agentName,\n '--description', `Managed dingtalk-agent ${plan.deploymentHash.slice(0, 12)}`,\n '--instructions', source.instructions,\n '--runtime-id', plan.expected.runtimeId,\n '--permission-mode', 'private', '--output', 'json',\n ]), 'agent.create', 'write', root, env, timeoutMs, calls,\n ).stdout, 'created agent')\n id = resourceId(created.id, 'created agent.id')\n rollback.createdAgentId = id\n action = 'create'\n } else {\n if (remote.archived) {\n rollback.updatedAgent = remote\n runProvider(\n command, scopedArgs(plan, ['agent', 'restore', id, '--output', 'json']),\n 'agent.restore', 'write', root, env, timeoutMs, calls,\n )\n action = 'restore'\n }\n if (remote.name !== plan.expected.agentName || remote.runtimeId !== plan.expected.runtimeId ||\n remote.instructions !== source.instructions) {\n rollback.updatedAgent ||= remote\n runProvider(\n command, scopedArgs(plan, [\n 'agent', 'update', id, '--name', plan.expected.agentName,\n '--instructions', source.instructions, '--runtime-id', plan.expected.runtimeId,\n '--output', 'json',\n ]), 'agent.update', 'write', root, env, timeoutMs, calls,\n )\n action = action === 'restore' ? 'restore' : 'update'\n }\n }\n const agent = parseRemoteAgent(jsonObject(runProvider(\n command, scopedArgs(plan, ['agent', 'get', id, '--output', 'json']),\n 'agent.get.readback', 'read', root, env, timeoutMs, calls,\n ).stdout, 'agent readback'))\n if (agent.id !== id || agent.name !== plan.expected.agentName ||\n agent.runtimeId !== plan.expected.runtimeId || agent.instructions !== source.instructions || agent.archived) {\n throw new DeploymentFailure('agent.readback-mismatch')\n }\n return { agent, action }\n}\n\nfunction syncSkillFiles(\n root: string,\n plan: MulticaDeploymentPlan,\n skillId: string,\n local: LocalSkillBundle,\n remote: RemoteSkill,\n command: string,\n env: NodeJS.ProcessEnv,\n timeoutMs: number,\n calls: MulticaDeploymentCall[],\n): void {\n const remoteByPath = new Map(remote.files.map((item) => [item.path, item]))\n const localPaths = new Set(local.files.map((item) => item.path))\n for (const file of remote.files) {\n if (localPaths.has(file.path)) continue\n runProvider(\n command, scopedArgs(plan, ['skill', 'files', 'delete', skillId, file.id]),\n `skill.file.delete:${local.name}:${file.path}`, 'write', root, env, timeoutMs, calls,\n )\n }\n for (const file of local.files) {\n if (remoteByPath.get(file.path)?.hash === file.hash) continue\n upsertSkillFile(root, plan, skillId, file.path, file.absolutePath, command, env, timeoutMs, calls)\n }\n}\n\nfunction upsertSkillFile(\n root: string,\n plan: MulticaDeploymentPlan,\n skillId: string,\n path: string,\n contentFile: string,\n command: string,\n env: NodeJS.ProcessEnv,\n timeoutMs: number,\n calls: MulticaDeploymentCall[],\n): void {\n runProvider(\n command, scopedArgs(plan, [\n 'skill', 'files', 'upsert', skillId, '--path', path,\n '--content-file', contentFile, '--output', 'json',\n ]), `skill.file.upsert:${path}`, 'write', root, env, timeoutMs, calls,\n )\n}\n\nfunction createAndReadSmoke(\n root: string,\n plan: MulticaDeploymentPlan,\n source: DeploymentSource,\n agentId: string,\n runtimeProvider: string,\n command: string,\n env: NodeJS.ProcessEnv,\n timeoutMs: number,\n smokeTimeoutMs: number,\n noWait: boolean,\n calls: MulticaDeploymentCall[],\n): MulticaDeploymentSmoke {\n const marker = `DTA-MULTICA-LOAD-${randomUUID()}`\n const requiredSkills = source.skills.map((item) => item.name).sort()\n const expectedResponse = JSON.stringify({\n schema: 'dta-multica-load-smoke@1', marker, loaded: requiredSkills,\n })\n const issue = jsonObject(runProvider(\n command, scopedArgs(plan, [\n 'issue', 'create', '--title', `[DTA load smoke] ${marker}`,\n '--description', [\n 'DTA_MULTICA_LOAD_SMOKE@1', `marker=${marker}`,\n `required_skills=${JSON.stringify(requiredSkills)}`,\n 'This is a deployment control-plane verification task.',\n 'Load every required skill above through the Host skill mechanism, in the listed order.',\n 'Do not call DWS, network, or business tools. Only the Host Issue control-plane calls needed to read this Issue and persist the exact result are exempt.',\n `Post exactly this JSON as an Issue comment (and nothing else): ${expectedResponse}`,\n ].join('\\n'),\n '--assignee-id', agentId, '--output', 'json',\n ]), 'smoke.issue.create', 'write', root, env, timeoutMs, calls,\n ).stdout, 'smoke issue')\n const issueId = resourceId(issue.id, 'smoke issue.id')\n const read = (): MulticaDeploymentSmoke => readSmoke(\n root, plan, marker, issueId, agentId, requiredSkills, runtimeProvider,\n command, env, timeoutMs, calls,\n )\n let smoke = read()\n // Multica persists the Issue before attempting the initial agent enqueue. If\n // that enqueue loses a transient readiness race, the API still returns a\n // valid assigned todo Issue but issue runs remains empty forever. Recover\n // exactly that observable state once through an explicit ID-bound mention on\n // the same Issue. A visible task — queued, running or terminal — is never\n // duplicated. The mention route is used instead of issue rerun because it is\n // the platform's normal first-run trigger and does not require a prior task.\n if (smoke.status === 'pending' && !smoke.taskId) {\n try {\n runProvider(\n command, scopedArgs(plan, [\n 'issue', 'comment', 'add', issueId,\n '--content', `[@DTA load smoke](mention://agent/${agentId}) Execute the deployment verification exactly as specified in this Issue description.`,\n '--output', 'json',\n ]), 'smoke.issue.recover', 'write', root, env, timeoutMs, calls,\n )\n smoke = read()\n } catch {\n // 与重试 mention 同一不变量:部署本体已回读验证,一次评论写入的抖动只让 smoke\n // 停在 pending(收敛为 verifying,由 --status 收口),不允许升级为回滚。\n }\n }\n if (noWait) return smoke\n const started = Date.now()\n const pollToTerminal = (): void => {\n while (smoke.status === 'pending' && Date.now() - started < smokeTimeoutMs) {\n Atomics.wait(new Int32Array(new SharedArrayBuffer(4)), 0, 0, 2_000)\n smoke = read()\n }\n }\n pollToTerminal()\n // 冷沙箱竞态:推送的 Skill 要数分钟才对运行时可见,任务报 `Skill not found` 不是\n // 真失败。在预算内用 mention 触发新 task(新沙箱有机会看到新 Skill),有限次重试。\n // 默认 30s 预算下基本轮不到重试;--wait / --smoke-timeout 放宽后才生效。\n const retryDelayMs = Math.min(20_000, Math.max(500, Math.floor(smokeTimeoutMs / 12)))\n let retries = 0\n while (smoke.status === 'failed' && smoke.classification === 'skills-not-visible' &&\n retries < 3 && Date.now() - started < smokeTimeoutMs) {\n Atomics.wait(new Int32Array(new SharedArrayBuffer(4)), 0, 0, retryDelayMs)\n try {\n runProvider(\n command, scopedArgs(plan, [\n 'issue', 'comment', 'add', issueId,\n '--content', `[@DTA load smoke](mention://agent/${agentId}) Skills were not yet visible in the sandbox; re-run the deployment verification exactly as specified in this Issue description.`,\n '--output', 'json',\n ]), 'smoke.issue.retry', 'write', root, env, timeoutMs, calls,\n )\n } catch {\n // 一次评论写入的抖动不允许升级为对已验证部署的回滚:失败已记入 calls,\n // 停止重试并保持当前 smoke 判定(skills-not-visible → verifying)。\n break\n }\n retries += 1\n // mention 触发的新 run 在平台上是异步创建的:只有当最新 run 的 taskId 变化后\n // 才重新判定;等不到新 run 就停手——绝不因为还读到旧终态 run 而重复 mention。\n const staleTaskId = smoke.taskId\n let sawNewRun = false\n while (Date.now() - started < smokeTimeoutMs) {\n Atomics.wait(new Int32Array(new SharedArrayBuffer(4)), 0, 0, 2_000)\n smoke = read()\n if (smoke.taskId && smoke.taskId !== staleTaskId) { sawNewRun = true; break }\n }\n if (!sawNewRun) break\n pollToTerminal()\n }\n if (smoke.status === 'pending' && !smoke.taskDiagnostic) {\n const detail = smoke.taskId\n ? `task ${smoke.taskId} 在 ${smokeTimeoutMs}ms 内未进入终态(当前 ${smoke.taskStatus || 'unknown'})`\n : `Issue ${issueId} 在 ${smokeTimeoutMs}ms 内未创建关联 task`\n return { ...smoke, taskDiagnostic: detail }\n }\n return smoke\n}\n\n/**\n * Judge a smoke run from positive evidence instead of a tool-name whitelist. The old judge\n * required every tool_use to match hardcoded `skill`/`write`/`bash` shapes, so a healthy\n * cloud runtime emitting `read_file`/`terminal` could never reach ready — and one extra\n * harmless tool failed the whole trace. Now: each required skill needs load evidence\n * (vocabulary tool_use or host-generated `**Skill loaded**` tool_result), the response is\n * taken from the Issue comments themselves first (platform readback, vocabulary-independent),\n * and only the explicit dws denylist is fatal. Unknown tool names are recorded, not judged.\n */\nfunction readSmoke(\n root: string,\n plan: MulticaDeploymentPlan,\n marker: string,\n issueId: string,\n agentId: string,\n requiredSkills: string[],\n runtimeProvider: string,\n command: string,\n env: NodeJS.ProcessEnv,\n timeoutMs: number,\n calls: MulticaDeploymentCall[],\n): MulticaDeploymentSmoke {\n const provider = runtimeProvider || ''\n const registered = vocabulariesForRuntimeProvider(provider)\n const active: readonly RuntimeTraceVocabulary[] = registered.length\n ? registered : allRuntimeVocabularies()\n const vocabularyIds = active.map((item) => item.id)\n const base = {\n ...emptySmoke('pending', requiredSkills), marker, markerHash: sha256(marker), issueId,\n runtimeProvider: provider, vocabularyIds,\n }\n const runs = jsonArray(runProvider(\n command, scopedArgs(plan, ['issue', 'runs', issueId, '--full-id', '--output', 'json']),\n 'smoke.issue.runs', 'read', root, env, timeoutMs, calls,\n ).stdout, 'smoke runs')\n const candidates = runs.filter((item) => !optionalString(item.agent_id) ||\n optionalString(item.agent_id) === agentId)\n const run = candidates.sort((a, b) => optionalString(b.created_at).localeCompare(optionalString(a.created_at)))[0]\n if (!run) return base\n const taskId = resourceId(run.id, 'smoke task.id')\n const taskStatus = optionalString(run.status)\n if (!['completed', 'failed', 'cancelled'].includes(taskStatus)) return {\n ...base, taskId, taskStatus,\n }\n const messages = jsonArray(runProvider(\n command, scopedArgs(plan, [\n 'issue', 'run-messages', taskId, '--issue', issueId, '--output', 'json',\n ]), 'smoke.issue.messages', 'read', root, env, timeoutMs, calls,\n ).stdout, 'smoke messages')\n const toolUses = messages.filter((item) => optionalString(item.type) === 'tool_use')\n const toolNames = [...new Set(toolUses.map((item) => optionalString(item.tool))\n .filter(Boolean))].sort()\n\n // Skill-load evidence: a native skill tool_use (the host mechanism itself), or the\n // host-generated `**Skill loaded**` banner in a skill-capable tool's tool_result. Two\n // things are deliberately NOT evidence: model text (a reply can claim anything), and\n // load ATTEMPTS — a failed cold-sandbox load emits the same \"Loading skill\" tool_use\n // before its error result, and a terminal/bash result echoes whatever the model printed.\n const evidence = new Set<string>()\n const attempted = new Set<string>()\n const evidenceTools = new Set<string>()\n const bannerTools = new Set(active.flatMap((item) => [...item.skillResultTools]))\n for (const item of messages) {\n const type = optionalString(item.type)\n const tool = optionalString(item.tool)\n if (type === 'tool_use') {\n const message: TraceToolMessage = { tool, input: smokeToolInput(item) }\n for (const vocabulary of active) {\n const name = vocabulary.skillLoadFromToolUse(message)\n if (name) { evidence.add(name); evidenceTools.add(tool) }\n const attempt = vocabulary.skillAttemptFromToolUse(message)\n if (attempt) { attempted.add(attempt); evidenceTools.add(tool) }\n }\n } else if (type === 'tool_result' && bannerTools.has(tool)) {\n for (const name of skillsLoadedInContent(optionalString(item.content))) {\n evidence.add(name)\n evidenceTools.add(tool)\n }\n }\n }\n const loadedSkills = requiredSkills.filter((name) => evidence.has(name)).sort()\n const skillEvidencePassed = loadedSkills.length === requiredSkills.length\n\n // dws is the DingTalk side-effect boundary: as a named tool or shelled out in a command.\n const commandTexts = toolUses.flatMap((item) => {\n const message: TraceToolMessage = {\n tool: optionalString(item.tool), input: smokeToolInput(item),\n }\n return active.map((vocabulary) => vocabulary.commandText(message)).filter(Boolean)\n })\n const forbiddenTools = toolNames.filter((name) => forbiddenSmokeTool(name))\n const forbiddenCommands = commandTexts.some((text) => commandInvokesDws(text))\n const knownTools = new Set(active.flatMap((item) => [...item.tools]))\n const unrecognizedTools = toolNames.filter((name) =>\n !knownTools.has(name) && !evidenceTools.has(name) && !forbiddenSmokeTool(name))\n\n // Response evidence, most stable source first: the Issue's own comments (platform\n // readback — no tool vocabulary involved), then trace texts, writes and shell heredocs.\n const matchesResponse = (value: string): boolean => smokeResponseMatches(\n value, marker, requiredSkills,\n )\n let commentContents: string[] = []\n try {\n commentContents = jsonArray(runProvider(\n command, scopedArgs(plan, [\n 'issue', 'comment', 'list', issueId, '--recent', '20', '--output', 'json',\n ]), 'smoke.issue.comments', 'read', root, env, timeoutMs, calls,\n ).stdout, 'smoke comments').map((item) => optionalString(item.content)).filter(Boolean)\n } catch {\n commentContents = [] // 旧版 provider CLI 可能没有 comment list;回退 trace 内取证\n }\n const texts = messages.filter((item) => optionalString(item.type) === 'text')\n .map((item) => optionalString(item.content)).filter(Boolean)\n const finalText = texts.at(-1) || ''\n const responseWrites: string[] = []\n const responseShells: string[] = []\n for (const item of toolUses) {\n const message: TraceToolMessage = {\n tool: optionalString(item.tool), input: smokeToolInput(item),\n }\n for (const vocabulary of active) {\n const write = vocabulary.writeEvidence(message)\n if (write && safeSmokeResponsePath(write.path)) responseWrites.push(write.content)\n const text = vocabulary.commandText(message)\n if (text && safeCombinedSmokeResponse(text, issueId, marker, requiredSkills)) {\n responseShells.push(JSON.stringify({\n schema: 'dta-multica-load-smoke@1', marker, loaded: requiredSkills,\n }))\n }\n }\n }\n const responseEvidence = [...commentContents, ...texts, ...responseWrites, ...responseShells]\n .find(matchesResponse) || ''\n const responsePassed = Boolean(responseEvidence)\n const toolTracePassed = skillEvidencePassed && !forbiddenTools.length && !forbiddenCommands\n\n const failures: string[] = []\n const failureDetails: MulticaFailureDetail[] = []\n if (taskStatus !== 'completed') failures.push(`smoke.task.${taskStatus || 'unknown'}`)\n if (!skillEvidencePassed) {\n failures.push('smoke.skill-load-evidence')\n const attemptedMissing = requiredSkills.filter((name) =>\n attempted.has(name) && !evidence.has(name))\n failureDetails.push({\n code: 'smoke.skill-load-evidence',\n expected: requiredSkills,\n actual: loadedSkills,\n hint: attemptedMissing.length\n ? `有装载尝试但无成功证据(tool_result 缺 **Skill loaded**): ${attemptedMissing.join(', ')};` +\n '尝试不算装载成功'\n : unrecognizedTools.length\n ? `轨迹里有词汇表不认识的工具名: ${unrecognizedTools.join(', ')};` +\n '若属新 runtime 词汇,需要在 multica-runtime-vocabulary 注册'\n : '轨迹中没有这些 Skill 的装载证据(tool_result 的 **Skill loaded** 或 Skill 工具调用)',\n })\n }\n for (const tool of forbiddenTools) failures.push(`smoke.forbidden-tool:${tool}`)\n if (forbiddenCommands) failures.push('smoke.forbidden-command:dws')\n if (!responsePassed) {\n failures.push('smoke.response')\n failureDetails.push({\n code: 'smoke.response',\n actual: `comments=${commentContents.length} texts=${texts.length} writes=${responseWrites.length}`,\n hint: '未在 Issue comment、回复文本或落盘文件中找到精确的 dta-multica-load-smoke@1 JSON',\n })\n }\n\n // 分类冷沙箱竞态:任务终态且缺装载证据,轨迹里出现 skill not found 类措辞 → 可重试,\n // 与「配置/模板真错了」区分开(B7 的两个误导方向都来自不区分这两态)。\n let classification: MulticaDeploymentSmoke['classification'] = ''\n if (!skillEvidencePassed) {\n const searchable = messages.map((item) => optionalString(item.content)).join('\\n')\n if (/skill[^\\n]{0,80}?not\\s+found|not\\s+found[^\\n]{0,60}?skill|skill\\s+view\\s+failed/i.test(searchable)) {\n classification = 'skills-not-visible'\n failures.unshift('smoke.skills-not-visible')\n failureDetails.unshift({\n code: 'smoke.skills-not-visible',\n hint: '推送的 Skill 尚未物化进沙箱(冷启动竞态,通常数分钟内自愈);' +\n '用 deploy --status --execute --yes 重试,或部署时用 --wait 放宽预算',\n })\n }\n }\n return {\n status: failures.length ? 'failed' : 'passed', marker, markerHash: sha256(marker),\n issueId, taskId, taskStatus, taskDiagnostic: remoteTaskDiagnostic(run), requiredSkills, loadedSkills,\n toolTracePassed, responsePassed, responseHash: sha256(responseEvidence || finalText), failures,\n runtimeProvider: provider, vocabularyIds, toolNames, unrecognizedTools, classification,\n failureDetails,\n }\n}\n\nfunction smokeToolInput(item: Record<string, unknown>): Record<string, unknown> {\n return item.input && typeof item.input === 'object' && !Array.isArray(item.input)\n ? item.input as Record<string, unknown> : {}\n}\n\nfunction smokeResponseMatches(value: string, marker: string, requiredSkills: string[]): boolean {\n try {\n const parsed = JSON.parse(value)\n return parsed?.schema === 'dta-multica-load-smoke@1' && parsed?.marker === marker &&\n stableStringify(Array.isArray(parsed?.loaded) ? [...parsed.loaded].sort() : []) ===\n stableStringify(requiredSkills)\n } catch { return false }\n}\n\nfunction safeCombinedSmokeResponse(\n command: string,\n issueId: string,\n marker: string,\n requiredSkills: string[],\n): boolean {\n const response = JSON.stringify({ schema: 'dta-multica-load-smoke@1', marker, loaded: requiredSkills })\n return command === [\n \"cat > ./reply.md << 'REPLY_EOF'\",\n response,\n 'REPLY_EOF',\n `multica issue comment add ${issueId} --content-file ./reply.md && rm ./reply.md`,\n ].join('\\n')\n}\n\nfunction safeSmokeResponsePath(value: string): boolean {\n const names = new Set(['reply.md', 'result.md', 'result.json'])\n if (value.startsWith('./')) return names.has(value.slice(2))\n // 裸文件名与 `./` 前缀等价:Agent 在 workdir 里写绝对路径、随后用裸名引用同一个文件是\n // 平台的常见写法。只放行精确 basename —— `foo/result.md` 与 `../result.md` 仍然落到\n // 下面的绝对路径分支并被拒绝,白名单没有变宽。\n if (!value.startsWith('/')) return names.has(value)\n if (!names.has(value.split('/').at(-1) || '')) return false\n return value.split('/').every((part) => !part ||\n (part !== '.' && part !== '..' && /^[A-Za-z0-9._-]+$/.test(part)))\n}\n\nfunction rollbackConfirmed(\n root: string,\n plan: MulticaDeploymentPlan,\n command: string,\n env: NodeJS.ProcessEnv,\n timeoutMs: number,\n calls: MulticaDeploymentCall[],\n rollback: RollbackContext,\n temp: string,\n): MulticaDeploymentReceipt['rollback'] {\n const report = emptyRollback(true)\n const attempt = (id: string, argv: string[]): void => {\n try {\n runProvider(command, scopedArgs(plan, argv), id, 'rollback', root, env, timeoutMs, calls)\n report.actions.push(id)\n } catch { report.failures.push(id) }\n }\n const assignmentAgentId = rollback.createdAgentId || rollback.updatedAgent?.id || ''\n if (rollback.assignmentChanged && assignmentAgentId) {\n attempt('rollback.agent.skills', [\n 'agent', 'skills', 'set', assignmentAgentId,\n '--skill-ids', rollback.previousAssignedIds.join(','), '--output', 'json',\n ])\n }\n if (rollback.createdAgentId) {\n attempt('rollback.agent.archive', ['agent', 'archive', rollback.createdAgentId, '--output', 'json'])\n } else if (rollback.updatedAgent) {\n const previous = rollback.updatedAgent\n const argv = [\n 'agent', 'update', previous.id, '--name', previous.name,\n '--instructions', previous.instructions, '--runtime-id', previous.runtimeId,\n ]\n if (previous.status) argv.push('--status', previous.status)\n argv.push('--output', 'json')\n attempt('rollback.agent.update', argv)\n if (previous.archived) {\n attempt('rollback.agent.archive', ['agent', 'archive', previous.id, '--output', 'json'])\n }\n }\n for (const previous of [...rollback.updatedSkills].reverse()) {\n const main = writeTemporaryContent(temp, `${previous.id}-SKILL.md`, previous.content)\n attempt(`rollback.skill.update:${previous.name}`, [\n 'skill', 'update', previous.id, '--content-file', main, '--output', 'json',\n ])\n try {\n const current = parseRemoteSkill(jsonObject(runProvider(\n command, scopedArgs(plan, ['skill', 'get', previous.id, '--output', 'json']),\n `rollback.skill.get:${previous.name}`, 'read', root, env, timeoutMs, calls,\n ).stdout, `rollback skill ${previous.name}`))\n const previousPaths = new Set(previous.files.map((file) => file.path))\n for (const extra of current.files.filter((file) => !previousPaths.has(file.path))) {\n attempt(`rollback.skill.file.delete:${previous.name}:${extra.path}`, [\n 'skill', 'files', 'delete', previous.id, extra.id,\n ])\n }\n } catch { report.failures.push(`rollback.skill.verify:${previous.name}`) }\n for (const file of previous.files) {\n const path = writeTemporaryContent(temp, `${previous.id}-${sha256(file.path).slice(0, 8)}`, file.content)\n attempt(`rollback.skill.file:${previous.name}:${file.path}`, [\n 'skill', 'files', 'upsert', previous.id, '--path', file.path,\n '--content-file', path, '--output', 'json',\n ])\n }\n }\n for (const id of [...rollback.createdSkillIds].reverse()) {\n attempt(`rollback.skill.delete:${id}`, ['skill', 'delete', id, '--yes'])\n }\n verifyRollback(\n root, plan, command, env, timeoutMs, calls, rollback, report,\n )\n report.passed = report.failures.length === 0\n return report\n}\n\nfunction verifyRollback(\n root: string,\n plan: MulticaDeploymentPlan,\n command: string,\n env: NodeJS.ProcessEnv,\n timeoutMs: number,\n calls: MulticaDeploymentCall[],\n rollback: RollbackContext,\n report: MulticaDeploymentReceipt['rollback'],\n): void {\n const verify = (id: string, action: () => boolean): void => {\n try { if (!action()) report.failures.push(id) }\n catch { report.failures.push(id) }\n }\n if (rollback.createdSkillIds.length || rollback.updatedSkills.length) {\n verify('rollback.verify.skills', () => {\n const catalog = jsonArray(runProvider(\n command, scopedArgs(plan, ['skill', 'list', '--output', 'json']),\n 'rollback.verify.skill-list', 'read', root, env, timeoutMs, calls,\n ).stdout, 'rollback skill list')\n const ids = new Set(catalog.map((item) => resourceId(item.id, 'rollback skill.id')))\n return rollback.createdSkillIds.every((id) => !ids.has(id))\n })\n for (const previous of rollback.updatedSkills) {\n verify(`rollback.verify.skill:${previous.name}`, () => {\n const restored = parseRemoteSkill(jsonObject(runProvider(\n command, scopedArgs(plan, ['skill', 'get', previous.id, '--output', 'json']),\n `rollback.verify.skill-get:${previous.name}`, 'read', root, env, timeoutMs, calls,\n ).stdout, `rollback verify skill ${previous.name}`))\n return restored.id === previous.id && restored.name === previous.name &&\n restored.hash === previous.hash\n })\n }\n }\n const agentId = rollback.createdAgentId || rollback.updatedAgent?.id || ''\n if (!agentId) return\n verify('rollback.verify.agent', () => {\n const restored = parseRemoteAgent(jsonObject(runProvider(\n command, scopedArgs(plan, ['agent', 'get', agentId, '--output', 'json']),\n 'rollback.verify.agent-get', 'read', root, env, timeoutMs, calls,\n ).stdout, 'rollback verify agent'))\n if (rollback.createdAgentId) return restored.archived\n const previous = rollback.updatedAgent\n return Boolean(previous && restored.id === previous.id && restored.name === previous.name &&\n restored.runtimeId === previous.runtimeId && restored.instructions === previous.instructions &&\n restored.archived === previous.archived)\n })\n if (rollback.assignmentChanged) {\n verify('rollback.verify.assignment', () => {\n const assigned = jsonArray(runProvider(\n command, scopedArgs(plan, [\n 'agent', 'skills', 'list', agentId, '--output', 'json',\n ]), 'rollback.verify.agent-skills', 'read', root, env, timeoutMs, calls,\n ).stdout, 'rollback verify assignments')\n const ids = assigned.map((item) => resourceId(item.id, 'rollback assignment.id')).sort()\n return stableStringify(ids) === stableStringify([...rollback.previousAssignedIds].sort())\n })\n }\n}\n\nfunction failureReceipt(\n root: string,\n workspace: DevelopmentWorkspaceView,\n source: DeploymentSource,\n plan: MulticaDeploymentPlan,\n preflight: MulticaWorkspaceInspection,\n operation: MulticaDeploymentOperation,\n calls: MulticaDeploymentCall[],\n rollback: MulticaDeploymentReceipt['rollback'],\n status: 'failed' | 'reconciling',\n failure: string,\n failureDetail?: MulticaFailureDetail,\n): MulticaDeploymentReceipt {\n const receiptId = `multica_receipt_${digest(stableStringify({\n operationId: operation.operationId, status, failure,\n })).slice(0, 24)}`\n return {\n $schema: MULTICA_DEPLOYMENT_SCHEMA,\n receiptId,\n operationId: operation.operationId,\n planId: plan.planId,\n action: plan.action,\n workspace: workspace.name,\n provider: 'multica',\n profile: plan.profile,\n status,\n passed: false,\n providerReady: false,\n idempotent: false,\n inspectionId: preflight.inspectionId,\n inspectionObservedHash: preflight.observedHash,\n inspectionEvidencePath: preflight.evidencePath,\n desiredHash: workspace.desiredHash,\n deploymentHash: source.deploymentHash,\n observedHash: '',\n agent: {\n id: operation.agentId,\n runtimeId: plan.expected.runtimeId,\n instructionsHash: source.instructionsHash,\n archived: false,\n action: 'unknown',\n },\n skills: source.skills.map((item) => ({\n id: '', name: item.name, sourceHash: item.hash, remoteHash: '', action: 'unknown',\n })),\n assignmentHash: '',\n calls: [...calls],\n smoke: emptySmoke('not-run', source.skills.map((item) => item.name)),\n rollback,\n failures: [failure, ...rollback.failures],\n failureDetails: failureDetail ? [failureDetail] : [],\n evidencePath: receiptRelativePath(workspace.name, receiptId),\n remoteRead: true,\n remoteWrite: calls.some((call) => call.kind === 'write' || call.kind === 'rollback'),\n triggerWrite: false,\n sideEffect: calls.some((call) => call.kind === 'write' || call.kind === 'rollback')\n ? 'multica-read-write' : 'multica-read',\n dingtalkSideEffect: false,\n }\n}\n\nexport function statusMulticaDeployment(\n start: string,\n name: string,\n options: MulticaDeploymentOptions = {},\n): MulticaDeploymentStatusReport {\n const info = inspectAgentProject(start, options.cliVersion || '')\n requireMulticaWorkspace(info.root, name, options.cliVersion || '')\n const loaded = loadOperationAndReceipt(info.root, name, options.operationId)\n if (!loaded) return {\n $schema: 'dingtalk-agent/multica-deployment-status@1',\n workspace: name, provider: 'multica', available: false, operationId: '', receiptId: '',\n status: 'missing', passed: false, providerReady: false,\n operationIntegrity: false, receiptIntegrity: false, reconciled: false,\n receiptFrozen: false, smokeStale: false, nextAction: '',\n failures: ['deployment.missing'], receipt: null,\n remoteRead: false, remoteWrite: false, triggerWrite: false,\n sideEffect: false, dingtalkSideEffect: false,\n }\n let { operation, receipt } = loaded\n let reconciled = false\n let remoteRead = false\n let remoteWrite = false\n if (options.execute) {\n if (!options.yes) throw new Error('deploy --status 远端 reconcile 必须同时传 --execute --yes')\n const command = options.command || options.env?.DTA_MULTICA_BIN || process.env.DTA_MULTICA_BIN || 'multica'\n const env = options.env || process.env\n const timeoutMs = positiveTimeout(options.timeoutMs, 30_000, 300_000)\n if (receipt.status === 'verifying' && receipt.smoke.issueId) {\n remoteRead = true\n let smokeReadback = readSmokeFromReceipt(\n info.root, receipt, command, env, timeoutMs,\n )\n let smoke = smokeReadback.smoke\n let calls = smokeReadback.calls\n // 冷沙箱竞态的收口入口:终态失败但分类为 skills-not-visible 时,补一次 mention\n // 触发新 task(唯一的写;如实上报 remoteWrite/sideEffect)。新 run 是异步创建的:\n // 以 taskId 变化为「新 run 出现」的判据再判定,等不到就按旧判定收场(仍 verifying),\n // 不再重复 mention。\n if (smoke.status === 'failed' && smoke.classification === 'skills-not-visible' &&\n receipt.agent.id) {\n const planLike = {\n profile: receipt.profile, expected: { workspaceId: operation.workspaceId },\n }\n const staleTaskId = smoke.taskId\n runProvider(\n command, scopedArgs(planLike, [\n 'issue', 'comment', 'add', receipt.smoke.issueId,\n '--content', `[@DTA load smoke](mention://agent/${receipt.agent.id}) Skills were not yet visible in the sandbox; re-run the deployment verification exactly as specified in this Issue description.`,\n '--output', 'json',\n ]), 'smoke.issue.retry', 'write', info.root, env, timeoutMs, calls,\n )\n remoteWrite = true\n const deadline = Date.now() + timeoutMs\n do {\n Atomics.wait(new Int32Array(new SharedArrayBuffer(4)), 0, 0, 2_000)\n smokeReadback = readSmokeFromReceipt(\n info.root, { ...receipt, calls }, command, env, timeoutMs,\n )\n smoke = smokeReadback.smoke\n calls = smokeReadback.calls\n } while ((smoke.status === 'pending' ||\n (Boolean(staleTaskId) && smoke.taskId === staleTaskId)) && Date.now() < deadline)\n }\n const nextStatus: DeploymentStatus = smoke.status === 'passed' ? 'ready'\n : smoke.status === 'pending' ? 'verifying'\n : smoke.classification === 'skills-not-visible' ? 'verifying' : 'failed'\n receipt = { ...receipt, calls, smoke, status: nextStatus,\n passed: smoke.status === 'passed', providerReady: smoke.status === 'passed',\n failures: [...smoke.failures],\n failureDetails: [...smoke.failureDetails] }\n reconciled = true\n persistReceiptAndState(info.root, showDevelopmentWorkspace(info.root, name), operation, receipt)\n } else if (receipt.status === 'reconciling') {\n remoteRead = true\n const source = loadDeploymentSource(info.root)\n const calls = [...receipt.calls]\n const reconciledTarget = reconcileRemoteTarget(\n info.root, name, operation, source, command, env, timeoutMs, calls,\n )\n const inspection = reconciledTarget.inspection\n const snapshot = reconciledTarget.snapshot\n const matched = Boolean(snapshot && remoteMatchesDesired(\n snapshot, source, operation.runtimeId,\n ))\n const safelyBound = Boolean(snapshot?.agent && inspection.passed &&\n snapshot.agent.id === operation.agentId &&\n snapshot.agent.name === info.project.displayName &&\n snapshot.agent.runtimeId === operation.runtimeId &&\n snapshot.agent.instructions === source.instructions && !snapshot.agent.archived)\n receipt = { ...receipt,\n calls,\n inspectionId: inspection.inspectionId,\n inspectionObservedHash: inspection.observedHash,\n inspectionEvidencePath: inspection.evidencePath,\n agent: { ...receipt.agent, id: operation.agentId },\n status: matched || safelyBound ? 'verifying' : 'failed',\n failures: matched ? ['smoke.required-after-recovery']\n : safelyBound ? ['apply.required-after-recovery']\n : reconciledTarget.failures.length ? reconciledTarget.failures\n : inspection.passed ? ['reconcile.remote-mismatch'] : [...inspection.failures],\n }\n reconciled = true\n persistReceiptAndState(info.root, showDevelopmentWorkspace(info.root, name), operation, receipt)\n }\n operation = loadOperationAndReceipt(info.root, name, operation.operationId)?.operation || operation\n }\n const receiptFrozen = !options.execute\n return {\n $schema: 'dingtalk-agent/multica-deployment-status@1',\n workspace: name,\n provider: 'multica',\n available: true,\n operationId: operation.operationId,\n receiptId: receipt.receiptId,\n status: receipt.status,\n passed: receipt.passed,\n providerReady: receipt.providerReady,\n operationIntegrity: true,\n receiptIntegrity: true,\n reconciled,\n receiptFrozen,\n smokeStale: receiptFrozen && receipt.status === 'verifying',\n nextAction: ['verifying', 'reconciling'].includes(receipt.status)\n ? `dta deploy --workspace ${name} --status --operation-id ${operation.operationId} --execute --yes`\n : '',\n failures: [...receipt.failures],\n receipt,\n remoteRead,\n remoteWrite,\n triggerWrite: false,\n sideEffect: remoteWrite ? 'multica-read-write' : remoteRead ? 'multica-read' : false,\n dingtalkSideEffect: false,\n }\n}\n\nexport function listMulticaDeployments(\n start: string, name: string, cliVersion = '',\n): MulticaDeploymentList {\n const info = inspectAgentProject(start, cliVersion)\n requireMulticaWorkspace(info.root, name, cliVersion)\n const directory = safeProjectPath(info.root, receiptsRoot(name), false)\n const deployments: MulticaDeploymentList['deployments'] = []\n if (existsSync(directory)) {\n for (const entry of readdirSync(directory, { withFileTypes: true })\n .filter((item) => item.isFile() && item.name.endsWith('.json'))\n .sort((a, b) => b.name.localeCompare(a.name))) {\n const path = join(directory, entry.name)\n if (lstatSync(path).isSymbolicLink()) throw new Error('Multica Receipt 不能是符号链接')\n const candidate = parseReceipt(readJson(path, 'Multica Receipt'))\n const loaded = loadOperationAndReceipt(info.root, name, candidate.operationId)\n if (!loaded || loaded.receipt.receiptId !== candidate.receiptId ||\n safeProjectPath(info.root, loaded.receipt.evidencePath, true) !== path) {\n throw new Error('Multica deployment 历史 Receipt 绑定不一致')\n }\n const receipt = loaded.receipt\n deployments.push({\n receiptId: receipt.receiptId,\n operationId: receipt.operationId,\n action: receipt.action,\n status: receipt.status,\n passed: receipt.passed,\n providerReady: receipt.providerReady,\n planId: receipt.planId,\n deploymentHash: receipt.deploymentHash,\n })\n }\n }\n return {\n $schema: 'dingtalk-agent/multica-deployment-list@1',\n workspace: name, provider: 'multica', deployments,\n remoteRead: false, remoteWrite: false, triggerWrite: false,\n sideEffect: false, dingtalkSideEffect: false,\n }\n}\n\nfunction reconcileRemoteTarget(\n root: string,\n name: string,\n operation: MulticaDeploymentOperation,\n source: DeploymentSource,\n command: string,\n env: NodeJS.ProcessEnv,\n timeoutMs: number,\n calls: MulticaDeploymentCall[],\n): { inspection: MulticaWorkspaceInspection; snapshot: RemoteSnapshot | null; failures: string[] } {\n if (operation.agentId) {\n const inspection = inspectMulticaWorkspace(root, name, {\n execute: true, yes: true, persist: true, command, env, timeoutMs,\n agentIdOverride: operation.agentId,\n }) as MulticaWorkspaceInspection\n appendInspectionCalls(inspection, 'reconcile.scope', calls)\n const snapshot = inspection.passed ? readRemoteSnapshot(\n root, source, inspection, command, env, timeoutMs, calls,\n ) : null\n return { inspection, snapshot, failures: [] }\n }\n\n const discovery = inspectMulticaWorkspace(root, name, {\n execute: true, yes: true, persist: false, command, env, timeoutMs,\n }) as MulticaWorkspaceInspection\n appendInspectionCalls(discovery, 'reconcile.discovery', calls)\n const candidates = discovery.resources.agentCandidates\n if (!candidates.length) {\n return { inspection: discovery, snapshot: null, failures: ['reconcile.agent-not-found'] }\n }\n if (candidates.length > 10) {\n return { inspection: discovery, snapshot: null, failures: ['reconcile.agent-candidate-budget'] }\n }\n const projectName = inspectAgentProject(root).project.displayName\n const matches: Array<{ id: string }> = []\n for (const [index, candidate] of candidates.entries()) {\n const inspection = inspectMulticaWorkspace(root, name, {\n execute: true, yes: true, persist: false, command, env, timeoutMs,\n agentIdOverride: candidate.id,\n }) as MulticaWorkspaceInspection\n appendInspectionCalls(inspection, `reconcile.candidate.${index + 1}`, calls)\n if (!inspection.passed) continue\n const snapshot = readRemoteSnapshot(\n root, source, inspection, command, env, timeoutMs, calls,\n )\n if (snapshot.agent && snapshot.agent.id === candidate.id &&\n snapshot.agent.name === projectName && snapshot.agent.runtimeId === operation.runtimeId &&\n snapshot.agent.instructions === source.instructions && !snapshot.agent.archived) {\n matches.push({ id: candidate.id })\n }\n }\n if (matches.length !== 1) {\n return {\n inspection: discovery,\n snapshot: null,\n failures: [matches.length ? 'reconcile.agent-ambiguous' : 'reconcile.agent-fingerprint-mismatch'],\n }\n }\n operation.agentId = matches[0].id\n const inspection = inspectMulticaWorkspace(root, name, {\n execute: true, yes: true, persist: true, command, env, timeoutMs,\n agentIdOverride: operation.agentId,\n }) as MulticaWorkspaceInspection\n appendInspectionCalls(inspection, 'reconcile.bound', calls)\n const snapshot = inspection.passed ? readRemoteSnapshot(\n root, source, inspection, command, env, timeoutMs, calls,\n ) : null\n return { inspection, snapshot, failures: inspection.passed ? [] : [...inspection.failures] }\n}\n\nfunction appendInspectionCalls(\n inspection: MulticaWorkspaceInspection,\n prefix: string,\n calls: MulticaDeploymentCall[],\n): void {\n calls.push(...inspection.calls.map((call) => ({\n id: `${prefix}.${call.id}`,\n kind: 'read' as const,\n argv: [...call.argv],\n exitCode: call.exitCode,\n stdoutHash: call.stdoutHash,\n stderrHash: call.stderrHash,\n passed: call.passed,\n ambiguous: false,\n })))\n}\n\nfunction readSmokeFromReceipt(\n root: string,\n receipt: MulticaDeploymentReceipt,\n command: string,\n env: NodeJS.ProcessEnv,\n timeoutMs: number,\n): { smoke: MulticaDeploymentSmoke; calls: MulticaDeploymentCall[] } {\n const plan = {\n profile: receipt.profile,\n expected: { workspaceId: '', runtimeId: receipt.agent.runtimeId },\n } as MulticaDeploymentPlan\n const operation = loadOperationAndReceipt(root, receipt.workspace, receipt.operationId)?.operation\n if (!operation) throw new Error('Multica deployment operation 缺失')\n plan.expected.workspaceId = operation.workspaceId\n const calls = [...receipt.calls]\n const markerValue = receipt.smoke.marker\n if (!markerValue || sha256(markerValue) !== receipt.smoke.markerHash) {\n return { calls, smoke: {\n ...receipt.smoke,\n status: 'failed',\n failures: ['smoke.marker-not-recoverable'],\n } }\n }\n const smoke = readSmoke(\n root, plan, markerValue, receipt.smoke.issueId, receipt.agent.id,\n receipt.smoke.requiredSkills, receipt.smoke.runtimeProvider || '',\n command, env, timeoutMs, calls,\n )\n return { smoke, calls }\n}\n\nfunction persistReceiptAndState(\n root: string,\n workspace: DevelopmentWorkspaceView,\n operation: MulticaDeploymentOperation,\n receipt: MulticaDeploymentReceipt,\n): void {\n assertReportRedacted(receipt)\n const receiptPath = safeProjectPath(root, receipt.evidencePath, false)\n atomicJson(receiptPath, receipt)\n const receiptHash = sha256(readFileSync(receiptPath))\n operation.status = receipt.status\n operation.agentId = receipt.agent.id || operation.agentId\n operation.receiptId = receipt.receiptId\n operation.receiptPath = receipt.evidencePath\n operation.calls = receipt.calls\n operation.failures = receipt.failures\n operation.updatedAt = new Date().toISOString()\n persistOperation(root, operation)\n const operationPath = operationRelativePath(workspace.name, operation.operationId)\n const operationHash = sha256(readFileSync(safeProjectPath(root, operationPath, true)))\n const binding = {\n $schema: 'dingtalk-agent/multica-deployment-pointer@1',\n operationId: operation.operationId,\n operationPath,\n operationHash,\n receiptId: receipt.receiptId,\n receiptPath: receipt.evidencePath,\n receiptHash,\n }\n atomicJson(safeProjectPath(root, operationBindingPath(\n workspace.name, operation.operationId,\n ), false), binding)\n atomicJson(safeProjectPath(root, latestDeploymentPointer(workspace.name), false), binding)\n const stateStatus = receipt.status === 'ready' ? 'ready'\n : receipt.status === 'retired' ? 'retired'\n : receipt.status === 'failed' ? 'failed' : 'verifying'\n const state: DevelopmentWorkspaceState = {\n $schema: 'dingtalk-agent/workspace-state@1',\n workspace: workspace.name,\n provider: 'multica',\n status: stateStatus,\n binding: {\n ...(workspace.state?.binding || {}),\n profile: receipt.profile,\n remoteWorkspaceId: operation.workspaceId,\n runtimeId: operation.runtimeId,\n agentId: receipt.agent.id || operation.agentId,\n deploymentHash: receipt.deploymentHash,\n inspectionId: receipt.inspectionId,\n inspectionObservedHash: receipt.inspectionObservedHash,\n inspectionEvidencePath: receipt.inspectionEvidencePath,\n receiptPath: receipt.evidencePath,\n operationId: operation.operationId,\n sourceHash: workspace.sourceHash,\n },\n desiredHash: workspace.desiredHash,\n observedHash: receipt.inspectionObservedHash || receipt.observedHash,\n lastPlanId: receipt.planId,\n lastReceiptId: receipt.receiptId,\n lastEvalId: receipt.smoke.taskId,\n }\n atomicJson(safeProjectPath(root, join(\n WORKSPACE_STATE_ROOT, `${workspace.name}.json`,\n ), false), state)\n}\n\nfunction createOperation(\n operationId: string, plan: MulticaDeploymentPlan,\n): MulticaDeploymentOperation {\n return {\n $schema: 'dingtalk-agent/multica-deployment-operation@1',\n operationId,\n planId: plan.planId,\n workspace: plan.workspace,\n action: plan.action,\n status: 'applying',\n profile: plan.profile,\n workspaceId: plan.expected.workspaceId,\n runtimeId: plan.expected.runtimeId,\n agentId: plan.expected.agentId,\n deploymentHash: plan.deploymentHash,\n ambiguousAction: '',\n receiptId: '',\n receiptPath: '',\n calls: [],\n failures: [],\n updatedAt: new Date().toISOString(),\n }\n}\n\nfunction persistOperation(root: string, operation: MulticaDeploymentOperation): void {\n assertReportRedacted(operation)\n atomicJson(safeProjectPath(root, operationRelativePath(\n operation.workspace, operation.operationId,\n ), false), operation)\n}\n\nfunction loadOperationAndReceipt(\n root: string,\n name: string,\n operationId = '',\n): { operation: MulticaDeploymentOperation; receipt: MulticaDeploymentReceipt } | null {\n let operationPath = ''\n let expectedOperationHash = ''\n let receiptPath = ''\n let expectedReceiptHash = ''\n let expectedOperationId = ''\n let expectedReceiptId = ''\n const requestedOperationId = operationId ? resourceId(operationId, 'operation-id') : ''\n const pointerPath = safeProjectPath(root, requestedOperationId\n ? operationBindingPath(name, requestedOperationId)\n : latestDeploymentPointer(name), false)\n if (!existsSync(pointerPath)) {\n if (requestedOperationId) throw new Error('Multica deployment operation binding 不存在')\n return null\n }\n const pointer = readJson(pointerPath, 'Multica deployment pointer') as Record<string, unknown>\n if (pointer.$schema !== 'dingtalk-agent/multica-deployment-pointer@1') {\n throw new Error('Multica deployment pointer schema 非法')\n }\n expectedOperationId = resourceId(pointer.operationId, 'pointer.operationId')\n expectedReceiptId = resourceId(pointer.receiptId, 'pointer.receiptId')\n if (requestedOperationId && expectedOperationId !== requestedOperationId) {\n throw new Error('Multica deployment operation binding ID 不一致')\n }\n operationPath = stringField(pointer.operationPath, 'pointer.operationPath')\n expectedOperationHash = stringField(pointer.operationHash, 'pointer.operationHash')\n receiptPath = stringField(pointer.receiptPath, 'pointer.receiptPath')\n expectedReceiptHash = stringField(pointer.receiptHash, 'pointer.receiptHash')\n const operationFile = safeProjectPath(root, operationPath, true)\n const operationBytes = readFileSync(operationFile)\n if (expectedOperationHash && sha256(operationBytes) !== expectedOperationHash) {\n throw new Error('Multica deployment operation hash 不一致')\n }\n const operation = parseOperation(JSON.parse(operationBytes.toString('utf8')))\n if (operation.workspace !== name || operation.operationId !== expectedOperationId) {\n throw new Error('Multica deployment operation 绑定不一致')\n }\n if (!receiptPath) receiptPath = operation.receiptPath\n if (!receiptPath) throw new Error('Multica deployment operation 尚无 Receipt')\n const receiptFile = safeProjectPath(root, receiptPath, true)\n const receiptBytes = readFileSync(receiptFile)\n if (expectedReceiptHash && sha256(receiptBytes) !== expectedReceiptHash) {\n throw new Error('Multica deployment Receipt hash 不一致')\n }\n const receipt = parseReceipt(JSON.parse(receiptBytes.toString('utf8')))\n if (receipt.operationId !== operation.operationId || receipt.workspace !== name ||\n receipt.receiptId !== expectedReceiptId || receipt.evidencePath !== receiptPath ||\n operation.receiptId !== receipt.receiptId || operation.receiptPath !== receiptPath ||\n operation.planId !== receipt.planId || operation.action !== receipt.action ||\n operation.profile !== receipt.profile || operation.deploymentHash !== receipt.deploymentHash) {\n throw new Error('Multica deployment Receipt 绑定不一致')\n }\n assertReportRedacted({ operation, receipt })\n return { operation, receipt }\n}\n\nfunction loadLatestReceipt(\n root: string, name: string,\n): MulticaDeploymentReceipt | null {\n // A missing pointer means this is the first deployment. Once a pointer exists,\n // any integrity or binding failure is evidence corruption and must fail closed.\n return loadOperationAndReceipt(root, name)?.receipt || null\n}\n\nfunction parseOperation(value: unknown): MulticaDeploymentOperation {\n const item = objectValue(value, 'Multica deployment operation')\n if (item.$schema !== 'dingtalk-agent/multica-deployment-operation@1') {\n throw new Error('Multica deployment operation schema 非法')\n }\n return item as unknown as MulticaDeploymentOperation\n}\n\nfunction parseReceipt(value: unknown): MulticaDeploymentReceipt {\n const item = objectValue(value, 'Multica deployment Receipt')\n if (item.$schema !== MULTICA_DEPLOYMENT_SCHEMA) {\n throw new Error('Multica deployment Receipt schema 非法')\n }\n return item as unknown as MulticaDeploymentReceipt\n}\n\nfunction runProvider(\n command: string,\n argv: string[],\n id: string,\n kind: MulticaDeploymentCall['kind'],\n cwd: string,\n env: NodeJS.ProcessEnv,\n timeoutMs: number,\n calls: MulticaDeploymentCall[],\n): ProviderResult {\n const budget = deploymentWriteBudgets.get(calls)\n if (kind === 'write' && budget && calls.filter((call) => call.kind === 'write').length >= budget.forward) {\n throw new DeploymentFailure('budget.forward-exhausted')\n }\n if (kind === 'rollback' && budget && calls.filter((call) => call.kind === 'rollback').length >= budget.rollback) {\n throw new DeploymentFailure('budget.rollback-exhausted')\n }\n const run = spawnSync(command, argv, {\n cwd, env: sanitizeProviderEnv(env).env, encoding: 'utf8', timeout: timeoutMs,\n maxBuffer: 32 * 1024 * 1024, stdio: ['ignore', 'pipe', 'pipe'],\n })\n const stdout = String(run.stdout || '')\n const stderr = String(run.stderr || '')\n const exitCode = typeof run.status === 'number' ? run.status : 1\n const ambiguous = Boolean(run.error && (run.error as NodeJS.ErrnoException).code === 'ETIMEDOUT')\n const passed = !run.error && exitCode === 0\n calls.push({\n id, kind, argv: redactArgv(argv), exitCode,\n stdoutHash: sha256(stdout), stderrHash: sha256(stderr), passed, ambiguous,\n })\n if (!passed) {\n emitProviderDiagnostic(id, exitCode, stderr || stdout)\n throw new DeploymentFailure(`command.${id}`, ambiguous)\n }\n return { stdout, stderr }\n}\n\nfunction scopedArgs(\n plan: { profile: string; expected: { workspaceId: string } },\n args: string[],\n): string[] {\n return ['--profile', plan.profile, '--workspace-id', plan.expected.workspaceId, ...args]\n}\n\nfunction redactArgv(argv: string[]): string[] {\n const redactNext = new Set([\n '--instructions', '--description', '--title', '--content', '--content-file',\n '--custom-env', '--mcp-config',\n ])\n const result: string[] = []\n let redact = false\n for (const arg of argv) {\n if (redact) {\n result.push(`[redacted:${sha256(arg).slice(0, 12)}]`)\n redact = false\n continue\n }\n result.push(arg)\n if (redactNext.has(arg)) redact = true\n }\n return result\n}\n\nfunction parseRemoteSkill(value: Record<string, unknown>): RemoteSkill {\n const id = resourceId(value.id, 'remote skill.id')\n const name = stringField(value.name, 'remote skill.name')\n const content = optionalString(value.content)\n const rawFiles = Array.isArray(value.files) ? value.files : []\n if (rawFiles.length > MAX_SKILL_SUPPORTING_FILES) {\n throw new Error(`远端 Skill supporting files 超过 ${MAX_SKILL_SUPPORTING_FILES} 个`)\n }\n const files = rawFiles.map((raw, index) => {\n const item = objectValue(raw, `remote skill.files[${index}]`)\n const fileContent = optionalString(item.content)\n const path = safeSkillPath(stringField(item.path, `remote skill.files[${index}].path`))\n return {\n id: resourceId(item.id, `remote skill.files[${index}].id`),\n path, content: fileContent, hash: sha256(fileContent),\n }\n }).sort((a, b) => a.path.localeCompare(b.path))\n const hash = skillTreeHash(content, files.map((item) => ({ path: item.path, hash: item.hash })))\n return { id, name, content, files, hash }\n}\n\nfunction parseRemoteAgent(value: Record<string, unknown>): RemoteAgent {\n return {\n id: resourceId(value.id, 'remote agent.id'),\n name: stringField(value.name, 'remote agent.name'),\n runtimeId: resourceId(value.runtime_id, 'remote agent.runtime_id'),\n instructions: optionalString(value.instructions),\n status: optionalString(value.status),\n archived: Boolean(optionalString(value.archived_at)) || value.archived === true,\n }\n}\n\nfunction remoteMatchesDesired(\n snapshot: RemoteSnapshot, source: DeploymentSource, runtimeId: string,\n): boolean {\n if (!snapshot.agent || snapshot.agent.archived || snapshot.agent.runtimeId !== runtimeId ||\n snapshot.agent.instructions !== source.instructions) return false\n const ids: string[] = []\n for (const local of source.skills) {\n const remote = snapshot.skills.get(local.name)\n if (!remote || remote.hash !== local.hash) return false\n ids.push(remote.id)\n }\n return stableStringify(ids.sort()) === stableStringify([...snapshot.assignedIds].sort())\n}\n\nfunction deploymentObservedHash(snapshot: RemoteSnapshot, inspectionId: string): string {\n return digest(stableStringify({\n inspectionId,\n agent: snapshot.agent ? {\n id: snapshot.agent.id,\n runtimeId: snapshot.agent.runtimeId,\n instructionsHash: sha256(snapshot.agent.instructions),\n archived: snapshot.agent.archived,\n } : null,\n skills: [...snapshot.skills.entries()].map(([name, skill]) => ({\n name, id: skill?.id || '', hash: skill?.hash || '',\n })).sort((a, b) => a.name.localeCompare(b.name)),\n assignments: [...snapshot.assignedIds].sort(),\n }))\n}\n\nfunction skillTreeHash(content: string, files: Array<{ path: string; hash: string }>): string {\n return digest(stableStringify({\n main: sha256(content),\n files: [...files].sort((a, b) => a.path.localeCompare(b.path)),\n }))\n}\n\nfunction frontmatterName(content: string): string {\n const block = content.match(/^---\\s*\\n([\\s\\S]*?)\\n---(?:\\s*\\n|$)/)\n if (!block) return ''\n const match = block[1].match(/^name:\\s*[\"']?([^\"'\\n]+?)[\"']?\\s*$/m)\n return match ? match[1].trim() : ''\n}\n\nfunction rejectCredentialMaterial(content: string, label: string): void {\n const patterns = [\n /-----BEGIN (?:RSA |EC |OPENSSH )?PRIVATE KEY-----/,\n /\\bBearer\\s+[A-Za-z0-9._~+\\/-]{20,}/i,\n /\\b(?:sk|pat|token)[-_][A-Za-z0-9_-]{24,}\\b/i,\n /(?:access[_-]?token|client[_-]?secret|password)\\s*[:=]\\s*[\"']?(?!<|\\*|replace|example|redacted)[A-Za-z0-9._~+\\/-]{16,}/i,\n ]\n if (patterns.some((pattern) => pattern.test(content))) {\n throw new Error(`${label} 检测到疑似真实凭据,拒绝部署`)\n }\n}\n\nfunction assertReportRedacted(value: unknown): void {\n const source = JSON.stringify(value)\n if (/-----BEGIN (?:RSA |EC |OPENSSH )?PRIVATE KEY-----|\\bBearer\\s+[A-Za-z0-9._~+\\/-]{20,}|\\b(?:sk|pat|token)[-_][A-Za-z0-9_-]{24,}\\b/i.test(source)) {\n throw new Error('Multica deployment evidence 脱敏失败')\n }\n if (/\"(?:instructions|content|stdout|stderr|email|serverUrl|server_url)\"\\s*:/i.test(source)) {\n throw new Error('Multica deployment evidence 包含禁止的原始内容字段')\n }\n}\n\nfunction emptySmoke(\n status: MulticaDeploymentSmoke['status'], requiredSkills: string[],\n): MulticaDeploymentSmoke {\n return {\n status, marker: '', markerHash: '', issueId: '', taskId: '', taskStatus: '', taskDiagnostic: '',\n requiredSkills: [...requiredSkills].sort(), loadedSkills: [],\n toolTracePassed: false, responsePassed: false, responseHash: '', failures: [],\n runtimeProvider: '', vocabularyIds: [], toolNames: [], unrecognizedTools: [],\n classification: '', failureDetails: [],\n }\n}\n\nfunction emptyRollback(attempted: boolean): MulticaDeploymentReceipt['rollback'] {\n return { attempted, passed: !attempted, actions: [], failures: [] }\n}\n\nfunction writeTemporaryContent(root: string, name: string, content: string): string {\n const path = join(root, `${safeFileName(name)}.txt`)\n writeFileSync(path, content, { mode: 0o600 })\n return path\n}\n\nfunction safeFileName(value: string): string {\n return value.replace(/[^A-Za-z0-9._-]/g, '_').slice(0, 120)\n}\n\nfunction readUtf8(path: string, label: string, limit: number): string {\n const bytes = readFileSync(path)\n if (bytes.length > limit) throw new Error(`${label} 超过 ${limit} bytes`)\n if (bytes.includes(0)) throw new Error(`${label} 不是 UTF-8 文本`)\n const content = bytes.toString('utf8')\n if (Buffer.from(content, 'utf8').compare(bytes) !== 0) throw new Error(`${label} 不是合法 UTF-8`)\n return content\n}\n\nfunction readJson(path: string, label: string): unknown {\n if (lstatSync(path).isSymbolicLink()) throw new Error(`${label} 不能是符号链接`)\n try { return JSON.parse(readFileSync(path, 'utf8')) }\n catch { throw new Error(`${label} 不是合法 JSON`) }\n}\n\nfunction jsonObject(value: string | unknown, label: string): Record<string, unknown> {\n let parsed = value\n if (typeof value === 'string') {\n try { parsed = JSON.parse(value) } catch { throw new DeploymentFailure(`json.${label}`) }\n }\n return objectValue(parsed, label)\n}\n\nfunction jsonArray(value: string, label: string): Record<string, unknown>[] {\n let parsed: unknown\n try { parsed = JSON.parse(value) } catch { throw new DeploymentFailure(`json.${label}`) }\n if (!Array.isArray(parsed) || parsed.some((item) => !item || typeof item !== 'object' || Array.isArray(item))) {\n throw new DeploymentFailure(`shape.${label}`)\n }\n return parsed as Record<string, unknown>[]\n}\n\nfunction objectValue(value: unknown, label: string): Record<string, unknown> {\n if (!value || typeof value !== 'object' || Array.isArray(value)) {\n throw new Error(`${label} 必须是 object`)\n }\n return value as Record<string, unknown>\n}\n\nfunction stringField(value: unknown, label: string): string {\n if (typeof value !== 'string' || !value) throw new Error(`${label} 必须是非空字符串`)\n return value\n}\n\nfunction optionalString(value: unknown): string {\n return typeof value === 'string' ? value : ''\n}\n\nfunction safeRemoteOutput(value: string, maxBytes: number): string {\n const redacted = value\n .replace(/-----BEGIN (?:RSA |EC |OPENSSH )?PRIVATE KEY-----[\\s\\S]*?-----END (?:RSA |EC |OPENSSH )?PRIVATE KEY-----/g,\n '[redacted-private-key]')\n .replace(/\\bBearer\\s+[A-Za-z0-9._~+\\/-]{20,}/gi, 'Bearer [redacted]')\n .replace(/\\b(?:mul_|mcn_|sk-)[A-Za-z0-9._~+\\/-]{12,}/gi, '[redacted-token]')\n const bytes = Buffer.from(redacted, 'utf8')\n return bytes.length <= maxBytes ? redacted : `${bytes.subarray(0, maxBytes).toString('utf8')}…`\n}\n\nfunction uniqueCalls(calls: MulticaDeploymentCall[]): MulticaDeploymentCall[] {\n const seen = new Set<string>()\n return calls.filter((call) => {\n const key = stableStringify({\n id: call.id,\n kind: call.kind,\n argv: call.argv,\n exitCode: call.exitCode,\n stdoutHash: call.stdoutHash,\n stderrHash: call.stderrHash,\n passed: call.passed,\n ambiguous: call.ambiguous,\n })\n if (seen.has(key)) return false\n seen.add(key)\n return true\n })\n}\n\nfunction remoteTaskDiagnostic(task: Record<string, unknown> | undefined): string {\n if (!task) return ''\n const values: string[] = []\n const add = (label: string, value: unknown): void => {\n if (typeof value === 'string' && value.trim()) values.push(`${label}=${value.trim()}`)\n else if (typeof value === 'number' || typeof value === 'boolean') values.push(`${label}=${value}`)\n else if (value && typeof value === 'object' && !Array.isArray(value)) {\n const nested = value as Record<string, unknown>\n for (const key of ['code', 'category', 'message', 'reason', 'detail']) {\n if (nested[key] !== undefined) add(`${label}.${key}`, nested[key])\n }\n }\n }\n for (const key of [\n 'error', 'error_message', 'failure_reason', 'status_message', 'reason', 'message', 'detail',\n ]) {\n if (task[key] !== undefined) add(key, task[key])\n }\n return safeRemoteOutput(values.join('; '), 2_000)\n}\n\nfunction resourceId(value: unknown, label: string): string {\n const item = stringField(value, label)\n if (!/^[A-Za-z0-9][A-Za-z0-9._:-]{1,127}$/.test(item) ||\n /^(?:sk-|bearer|token[-_])/i.test(item)) {\n throw new Error(`${label} 不是安全稳定 ID`)\n }\n return item\n}\n\nfunction safeSkillPath(value: string): string {\n if (!value || value === 'SKILL.md' || value.startsWith('/') || value.includes('\\\\') ||\n value.split('/').some((part) => !part || part === '.' || part === '..')) {\n throw new Error(`远端 Skill supporting file 路径非法: ${value}`)\n }\n return value\n}\n\nfunction requireMulticaWorkspace(\n start: string, name: string, cliVersion = '',\n): DevelopmentWorkspaceView {\n const workspace = showDevelopmentWorkspace(start, name, cliVersion)\n if (workspace.provider.kind !== 'multica' || workspace.legacy) {\n throw new Error(`Workspace ${name} 不是 multica Provider;deploy 不执行 ${workspace.provider.kind}`)\n }\n return workspace\n}\n\nfunction safeProjectPath(root: string, ref: string, mustExist: boolean): string {\n const rootReal = realpathSync(resolve(root))\n const candidate = resolve(rootReal, ref)\n const rel = relative(rootReal, candidate)\n if (!isInside(rootReal, candidate)) throw new Error(`Multica deployment 路径越出 Project: ${ref}`)\n if (mustExist && !existsSync(candidate)) throw new Error(`Multica deployment 路径不存在: ${ref}`)\n if (existsSync(candidate)) {\n if (lstatSync(candidate).isSymbolicLink()) throw new Error(`Multica deployment 路径不能是符号链接: ${ref}`)\n if (!isInside(rootReal, realpathSync(candidate))) throw new Error(`Multica deployment 真实路径越界: ${ref}`)\n }\n let ancestor = dirname(candidate)\n while (!existsSync(ancestor)) {\n const parent = dirname(ancestor)\n if (parent === ancestor) break\n ancestor = parent\n }\n if (!existsSync(ancestor) || !isInside(rootReal, realpathSync(ancestor))) {\n throw new Error(`Multica deployment 父目录真实路径越界: ${ref}`)\n }\n void rel\n return candidate\n}\n\nfunction isInside(root: string, candidate: string): boolean {\n const rel = relative(root, candidate)\n return rel === '' || (rel !== '..' && !rel.startsWith(`..${process.platform === 'win32' ? '\\\\' : '/'}`))\n}\n\nfunction deploymentsRoot(name: string): string {\n return join(MULTICA_EVIDENCE_ROOT, safeName(name), 'multica-deployments')\n}\n\nfunction receiptsRoot(name: string): string {\n return join(deploymentsRoot(name), 'receipts')\n}\n\nfunction receiptRelativePath(name: string, receiptId: string): string {\n return join(receiptsRoot(name), `${resourceId(receiptId, 'receipt-id')}.json`)\n}\n\nfunction operationRelativePath(name: string, operationId: string): string {\n return join(deploymentsRoot(name), 'operations', `${resourceId(operationId, 'operation-id')}.json`)\n}\n\nfunction latestDeploymentPointer(name: string): string {\n return join(deploymentsRoot(name), 'latest.json')\n}\n\nfunction operationBindingPath(name: string, operationId: string): string {\n return join(deploymentsRoot(name), 'bindings', `${resourceId(operationId, 'operation-id')}.json`)\n}\n\nfunction safeName(value: string): string {\n if (!/^[a-z0-9](?:[a-z0-9._-]{0,62}[a-z0-9])?$/.test(value)) {\n throw new Error(`Workspace name 非法: ${value}`)\n }\n return value\n}\n\nfunction positiveTimeout(value: number | undefined, fallback: number, max: number): number {\n if (value === undefined) return fallback\n if (!Number.isFinite(value) || value < 100 || value > max) {\n throw new Error(`Multica timeout 必须在 100..${max} ms`)\n }\n return Math.floor(value)\n}\n\nfunction atomicJson(path: string, value: unknown): void {\n mkdirSync(dirname(path), { recursive: true })\n const temp = `${path}.tmp-${process.pid}-${randomUUID().slice(0, 8)}`\n const source = `${JSON.stringify(value, null, 2)}\\n`\n writeFileSync(temp, source, { mode: 0o600, flag: 'wx' })\n renameSync(temp, path)\n if (readFileSync(path, 'utf8') !== source) throw new Error(`原子写后回读不一致: ${path}`)\n}\n\nfunction sha256(value: string | Buffer): string {\n return createHash('sha256').update(value).digest('hex')\n}\n"]}
1
+ {"version":3,"file":"multica-deploy.js","sourceRoot":"","sources":["../../src/multica-deploy.ts"],"names":[],"mappings":"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","sourcesContent":["import { createHash, randomUUID } from 'node:crypto'\nimport { spawnSync } from 'node:child_process'\nimport {\n existsSync, lstatSync, mkdirSync, mkdtempSync, readFileSync, readdirSync,\n realpathSync, renameSync, rmSync, writeFileSync,\n} from 'node:fs'\nimport { tmpdir } from 'node:os'\nimport { basename, dirname, join, relative, resolve } from 'node:path'\nimport {\n WORKSPACE_STATE_ROOT, inspectAgentProject, projectSkillRef, showDevelopmentWorkspace,\n type AgentProjectInfo, type DevelopmentWorkspaceState, type DevelopmentWorkspaceView,\n} from './development-workspace.js'\nimport {\n PREDICATE_REGISTRY_PATH, buildPredicateRegistry, predicateRegistryOwner, serializeRegistry,\n} from './predicate-registry.js'\nimport { completionPredicateId } from './schedule-plan.js'\nimport { digest, stableStringify } from './events.js'\nimport {\n MULTICA_EVIDENCE_ROOT,\n emitProviderDiagnostic, inspectMulticaWorkspace, planMulticaWorkspace, sanitizeProviderEnv,\n statusMulticaWorkspace,\n type MulticaFailureDetail, type MulticaWorkspaceInspection,\n} from './multica-provider.js'\nimport {\n allRuntimeVocabularies, commandInvokesDws, forbiddenSmokeTool, skillsLoadedInContent,\n vocabulariesForRuntimeProvider,\n type RuntimeTraceVocabulary, type TraceToolMessage,\n} from './multica-runtime-vocabulary.js'\n\nexport const MULTICA_DEPLOYMENT_SCHEMA = 'dingtalk-agent/multica-deployment-receipt@1'\nconst MAX_DEPLOY_SKILLS = 32\nconst MAX_SKILL_SUPPORTING_FILES = 128\nconst deploymentWriteBudgets = new WeakMap<MulticaDeploymentCall[], {\n forward: number; rollback: number\n}>()\n\ntype DeploymentAction = 'apply' | 'retire'\ntype DeploymentStatus = 'applying' | 'reconciling' | 'verifying' | 'ready' | 'failed' | 'retired'\n\nexport interface MulticaDeploymentPlan {\n $schema: 'dingtalk-agent/multica-deployment-plan@1'\n planId: string\n action: DeploymentAction\n workspace: string\n provider: 'multica'\n profile: string\n inspectionId: string\n desiredHash: string\n deploymentHash: string\n /** 随 Skill 树交付的受管 predicate registry 投影(issue #46);null = 项目未声明注册表。 */\n predicateRegistry: DeployedPredicateRegistry | null\n expected: {\n workspaceId: string\n runtimeId: string\n agentId: string\n agentName: string\n skills: Array<{ name: string; hash: string; files: number }>\n definitionHash: string\n instructionsHash: string\n /** Runtime the Agent currently sits on when this plan is an explicit rebind migration. */\n previousRuntimeId?: string\n }\n rebindRuntime: boolean\n operations: string[]\n writeBudget: { forward: number; rollback: number }\n blocking: string[]\n requiresPlanId: true\n requiresExplicitYes: true\n remoteRead: false\n remoteWrite: false\n triggerWrite: false\n sideEffect: false\n dingtalkSideEffect: false\n}\n\nexport interface MulticaDeploymentCall {\n id: string\n kind: 'read' | 'write' | 'rollback'\n argv: string[]\n exitCode: number\n stdoutHash: string\n stderrHash: string\n passed: boolean\n ambiguous: boolean\n}\n\nexport interface MulticaDeploymentSmoke {\n status: 'not-run' | 'pending' | 'passed' | 'failed'\n marker: string\n markerHash: string\n issueId: string\n taskId: string\n taskStatus: string\n taskDiagnostic: string\n requiredSkills: string[]\n loadedSkills: string[]\n toolTracePassed: boolean\n responsePassed: boolean\n responseHash: string\n failures: string[]\n /** Runtime provider whose trace vocabularies judged this smoke ('' on legacy receipts). */\n runtimeProvider: string\n vocabularyIds: string[]\n /** Distinct tool names seen in the trace (names only, never inputs). */\n toolNames: string[]\n /** Tool names no active vocabulary knows — recorded for diagnosis, not judged fatal. */\n unrecognizedTools: string[]\n /**\n * 'skills-not-visible': the task failed because pushed Skills had not materialized into the\n * sandbox yet (cold-start race) — retryable, not a real deployment failure.\n */\n classification: '' | 'skills-not-visible'\n failureDetails: MulticaFailureDetail[]\n}\n\nexport interface MulticaDeploymentReceipt {\n $schema: 'dingtalk-agent/multica-deployment-receipt@1'\n receiptId: string\n operationId: string\n planId: string\n action: DeploymentAction\n workspace: string\n provider: 'multica'\n profile: string\n status: DeploymentStatus\n passed: boolean\n providerReady: boolean\n idempotent: boolean\n inspectionId: string\n inspectionObservedHash: string\n inspectionEvidencePath: string\n desiredHash: string\n deploymentHash: string\n /** 交付的 registry 投影(issue #46):声明侧与 runtime 读的是同一份,hash 在此定格。 */\n predicateRegistry: DeployedPredicateRegistry | null\n observedHash: string\n agent: {\n id: string\n runtimeId: string\n instructionsHash: string\n archived: boolean\n action: 'create' | 'update' | 'restore' | 'archive' | 'noop' | 'unknown'\n }\n skills: Array<{\n id: string\n name: string\n sourceHash: string\n remoteHash: string\n action: 'create' | 'update' | 'noop' | 'unknown'\n }>\n assignmentHash: string\n calls: MulticaDeploymentCall[]\n smoke: MulticaDeploymentSmoke\n rollback: {\n attempted: boolean\n passed: boolean\n actions: string[]\n failures: string[]\n }\n failures: string[]\n failureDetails: MulticaFailureDetail[]\n /** Present when this apply was an explicit --rebind-runtime migration. */\n rebind?: { fromRuntimeId: string; toRuntimeId: string }\n evidencePath: string\n remoteRead: true\n remoteWrite: boolean\n triggerWrite: false\n sideEffect: 'multica-read-write' | 'multica-read' | 'none'\n dingtalkSideEffect: false\n}\n\nexport interface MulticaDeploymentOperation {\n $schema: 'dingtalk-agent/multica-deployment-operation@1'\n operationId: string\n planId: string\n workspace: string\n action: DeploymentAction\n status: DeploymentStatus\n profile: string\n workspaceId: string\n runtimeId: string\n agentId: string\n deploymentHash: string\n ambiguousAction: string\n receiptId: string\n receiptPath: string\n calls: MulticaDeploymentCall[]\n failures: string[]\n updatedAt: string\n}\n\nexport interface MulticaDeploymentStatusReport {\n $schema: 'dingtalk-agent/multica-deployment-status@1'\n workspace: string\n provider: 'multica'\n available: boolean\n operationId: string\n receiptId: string\n status: DeploymentStatus | 'missing'\n passed: boolean\n providerReady: boolean\n operationIntegrity: boolean\n receiptIntegrity: boolean\n reconciled: boolean\n /**\n * Without --execute this is the receipt frozen at apply time — smoke fields may be the\n * pending snapshot (empty/null-looking), not the remote now. `nextAction` carries the\n * exact refresh command.\n */\n receiptFrozen: boolean\n smokeStale: boolean\n nextAction: string\n failures: string[]\n receipt: MulticaDeploymentReceipt | null\n remoteRead: boolean\n /** True only when a --execute reconcile retried a skills-not-visible smoke (one mention). */\n remoteWrite: boolean\n triggerWrite: false\n sideEffect: false | 'multica-read' | 'multica-read-write'\n dingtalkSideEffect: false\n}\n\nexport interface MulticaDeploymentList {\n $schema: 'dingtalk-agent/multica-deployment-list@1'\n workspace: string\n provider: 'multica'\n deployments: Array<{\n receiptId: string\n operationId: string\n action: DeploymentAction\n status: DeploymentStatus\n passed: boolean\n providerReady: boolean\n planId: string\n deploymentHash: string\n }>\n remoteRead: false\n remoteWrite: false\n triggerWrite: false\n sideEffect: false\n dingtalkSideEffect: false\n}\n\nexport interface MulticaDeploymentOptions {\n yes?: boolean\n planId?: string\n noWait?: boolean\n execute?: boolean\n command?: string\n env?: NodeJS.ProcessEnv\n timeoutMs?: number\n smokeTimeoutMs?: number\n cliVersion?: string\n operationId?: string\n /** Explicit, plan-gated migration of the Agent to the runtime the env now points at. */\n rebindRuntime?: boolean\n}\n\nexport interface MulticaWorkspaceRunOptions {\n execute?: boolean\n yes?: boolean\n command?: string\n env?: NodeJS.ProcessEnv\n timeoutMs?: number\n cliVersion?: string\n out?: string\n}\n\nexport interface MulticaWorkspaceRunPlan {\n $schema: 'dingtalk-agent/multica-workspace-run-plan@1'\n workspace: string\n provider: 'multica'\n profile: string\n workspaceId: string\n runtimeId: string\n agentId: string\n promptHash: string\n operations: string[]\n blocking: string[]\n requiresExecute: true\n requiresExplicitYes: true\n remoteRead: false\n remoteWrite: false\n triggerWrite: false\n sideEffect: false\n dingtalkSideEffect: false\n}\n\nexport interface MulticaWorkspaceRunReport {\n $schema: 'dingtalk-agent/multica-workspace-run@1'\n passed: boolean\n runId: string\n workspace: string\n provider: 'multica'\n profile: string\n workspaceId: string\n runtimeId: string\n agentId: string\n promptHash: string\n issueId: string\n issueStatus: string\n taskId: string\n taskStatus: string\n taskDiagnostic: string\n pollAttempts: number\n pollIntervalMs: number\n answer: string\n answerHash: string\n toolNames: string[]\n loadedSkills: string[]\n failures: string[]\n calls: MulticaDeploymentCall[]\n evidencePath: string\n remoteRead: true\n remoteWrite: boolean\n triggerWrite: false\n sideEffect: 'multica-issue-read-write'\n dingtalkSideEffect: false\n}\n\ninterface LocalSkillFile {\n path: string\n /** 磁盘来源;受管 runtime artifact(issue #46 的 registry 投影)没有磁盘来源,为空串。 */\n absolutePath: string\n /** 受管 artifact 的正文:apply 时才物化进 temp,plan 阶段只参与 hash(dry-run 零写入)。 */\n managedContent?: string\n hash: string\n bytes: number\n}\n\n/** 随 Skill 树交付的受管 predicate registry 投影(issue #46);null = manifest 未声明注册表。 */\nexport interface DeployedPredicateRegistry {\n skill: string\n path: string\n hash: string\n ids: string[]\n schedules: string[]\n}\n\ninterface LocalSkillBundle {\n name: string\n root: string\n mainPath: string\n content: string\n files: LocalSkillFile[]\n hash: string\n}\n\ninterface DeploymentSource {\n definitionHash: string\n instructions: string\n instructionsHash: string\n skills: LocalSkillBundle[]\n predicateRegistry: DeployedPredicateRegistry | null\n deploymentHash: string\n}\n\ninterface RemoteSkillFile {\n id: string\n path: string\n content: string\n hash: string\n}\n\ninterface RemoteSkill {\n id: string\n name: string\n content: string\n files: RemoteSkillFile[]\n hash: string\n}\n\ninterface RemoteAgent {\n id: string\n name: string\n runtimeId: string\n instructions: string\n status: string\n archived: boolean\n}\n\ninterface RemoteSnapshot {\n agent: RemoteAgent | null\n skills: Map<string, RemoteSkill | null>\n assignedIds: string[]\n}\n\ninterface ProviderResult {\n stdout: string\n stderr: string\n}\n\ninterface RollbackContext {\n createdSkillIds: string[]\n updatedSkills: RemoteSkill[]\n createdAgentId: string\n updatedAgent: RemoteAgent | null\n assignmentChanged: boolean\n previousAssignedIds: string[]\n}\n\nclass DeploymentFailure extends Error {\n constructor(\n readonly category: string,\n readonly ambiguous = false,\n readonly detail?: MulticaFailureDetail,\n ) {\n super(category)\n }\n}\n\nexport function runMulticaWorkspaceIssue(\n start: string,\n name: string,\n prompt: string,\n options: MulticaWorkspaceRunOptions = {},\n): MulticaWorkspaceRunPlan | MulticaWorkspaceRunReport {\n const normalizedPrompt = prompt.trim()\n if (!normalizedPrompt) throw new Error('workspace run prompt 不能为空')\n if (Buffer.byteLength(normalizedPrompt, 'utf8') > 64 * 1024) {\n throw new Error('workspace run prompt 不能超过 65536 bytes')\n }\n rejectCredentialMaterial(normalizedPrompt, 'workspace run prompt')\n const env = options.env || process.env\n const cliVersion = options.cliVersion || ''\n const info = inspectAgentProject(start, cliVersion)\n requireMulticaWorkspace(info.root, name, cliVersion)\n const providerPlan = planMulticaWorkspace(info.root, name, { env, cliVersion })\n const blocking = [...providerPlan.blocking]\n if (!providerPlan.expected.agentId) blocking.push('agent-id.missing')\n const plan: MulticaWorkspaceRunPlan = {\n $schema: 'dingtalk-agent/multica-workspace-run-plan@1',\n workspace: name,\n provider: 'multica',\n profile: providerPlan.profile,\n workspaceId: providerPlan.expected.workspaceId,\n runtimeId: providerPlan.expected.runtimeId,\n agentId: providerPlan.expected.agentId,\n promptHash: sha256(normalizedPrompt),\n operations: ['scope.inspect', 'issue.create', 'issue.runs', 'issue.run-messages', 'evidence.persist'],\n blocking: [...new Set(blocking)].sort(),\n requiresExecute: true,\n requiresExplicitYes: true,\n remoteRead: false,\n remoteWrite: false,\n triggerWrite: false,\n sideEffect: false,\n dingtalkSideEffect: false,\n }\n if (!options.execute) return plan\n if (!options.yes) {\n throw new Error('Multica workspace run 会创建远端 Issue;必须同时传 --execute --yes')\n }\n if (plan.blocking.length) {\n throw new Error(`Multica workspace run 前置条件不完整: ${plan.blocking.join(', ')}`)\n }\n\n const command = options.command || env.DTA_MULTICA_BIN || 'multica'\n // A real Issue-channel run does agent work plus issue get/comment/status side-tasks and\n // routinely needs minutes; the old 30s default timed out on almost every honest run. Wait\n // 4 minutes by default (still capped at 5). A run that overruns is resumable via\n // `workspace run --status --run-id` against the same Issue — no duplicate Issue.\n const timeoutMs = positiveTimeout(options.timeoutMs, 240_000, 300_000)\n const calls: MulticaDeploymentCall[] = []\n const inspection = inspectMulticaWorkspace(info.root, name, {\n execute: true, yes: true, persist: false, command, env,\n timeoutMs: Math.min(timeoutMs, 30_000), cliVersion,\n }) as MulticaWorkspaceInspection\n appendInspectionCalls(inspection, 'run.preflight', calls)\n const assignedSkills = inspection.resources.assignedSkills\n .filter((item) => item.enabled).map((item) => item.name).sort()\n const expectedSkills = [...providerPlan.expected.skills].sort()\n if (!inspection.passed || inspection.resources.workspace?.id !== plan.workspaceId ||\n inspection.resources.runtime?.id !== plan.runtimeId ||\n inspection.resources.agent?.id !== plan.agentId ||\n inspection.diff.includes('agent.runtime-drift') ||\n stableStringify(assignedSkills) !== stableStringify(expectedSkills)) {\n throw new Error('Multica workspace run scope 或 Skill assignment 与 Project 不一致;未创建 Issue')\n }\n\n const runId = `multica_workspace_run_${Date.now()}_${randomUUID().slice(0, 8)}`\n const marker = `DTA-WORKSPACE-RUN-${randomUUID()}`\n const issue = jsonObject(runProvider(\n command, scopedArgs({ profile: plan.profile, expected: { workspaceId: plan.workspaceId } }, [\n 'issue', 'create', '--title', `[DTA workspace run] ${marker}`,\n '--description', normalizedPrompt, '--assignee-id', plan.agentId, '--output', 'json',\n ]), 'workspace-run.issue.create', 'write', info.root, env,\n Math.min(timeoutMs, 30_000), calls,\n ).stdout, 'workspace run issue')\n const issueId = resourceId(issue.id, 'workspace run issue.id')\n return readbackWorkspaceRun({\n root: info.root, name, plan, issueId, runId, command, env, timeoutMs, calls, out: options.out,\n runtimeProvider: inspection.resources.runtime?.provider || '',\n })\n}\n\ninterface WorkspaceRunReadback {\n root: string\n name: string\n plan: { profile: string; workspaceId: string; runtimeId: string; agentId: string; promptHash: string }\n issueId: string\n runId: string\n command: string\n env: NodeJS.ProcessEnv\n timeoutMs: number\n calls: MulticaDeploymentCall[]\n out?: string\n runtimeProvider?: string\n}\n\n/**\n * Poll an existing Issue's assignee-agent task to a terminal state, then reconstruct the\n * run report from its trace. Shared by the initial `workspace run` (right after it creates the\n * Issue) and `workspace run --status --run-id` (resume against the SAME Issue, no new write) so\n * a timed-out run reconciles instead of spawning a duplicate Issue.\n */\nfunction readbackWorkspaceRun(ctx: WorkspaceRunReadback): MulticaWorkspaceRunReport {\n const { root, name, plan, issueId, runId, command, env, timeoutMs, calls } = ctx\n const started = Date.now()\n const pollIntervalMs = 2_000\n const pollCalls: MulticaDeploymentCall[] = []\n let pollAttempts = 0\n let task: Record<string, unknown> | undefined\n while (Date.now() - started < timeoutMs) {\n pollAttempts += 1\n const runs = jsonArray(runProvider(\n command, scopedArgs({ profile: plan.profile, expected: { workspaceId: plan.workspaceId } }, [\n 'issue', 'runs', issueId, '--full-id', '--output', 'json',\n ]), 'workspace-run.issue.runs', 'read', root, env,\n Math.min(timeoutMs, 30_000), pollCalls,\n ).stdout, 'workspace run issue runs')\n task = runs.filter((item) => !optionalString(item.agent_id) ||\n optionalString(item.agent_id) === plan.agentId)\n .sort((a, b) => optionalString(b.created_at).localeCompare(optionalString(a.created_at)))[0]\n const status = optionalString(task?.status)\n if (['completed', 'failed', 'cancelled'].includes(status)) break\n Atomics.wait(new Int32Array(new SharedArrayBuffer(4)), 0, 0, pollIntervalMs)\n }\n calls.push(...uniqueCalls(pollCalls))\n\n const taskId = task?.id ? resourceId(task.id, 'workspace run task.id') : ''\n const taskStatus = optionalString(task?.status) || 'not-created'\n let messages: Record<string, unknown>[] = []\n if (taskId && ['completed', 'failed', 'cancelled'].includes(taskStatus)) {\n messages = jsonArray(runProvider(\n command, scopedArgs({ profile: plan.profile, expected: { workspaceId: plan.workspaceId } }, [\n 'issue', 'run-messages', taskId, '--issue', issueId, '--output', 'json',\n ]), 'workspace-run.issue.messages', 'read', root, env,\n Math.min(timeoutMs, 30_000), calls,\n ).stdout, 'workspace run messages')\n }\n const toolUses = messages.filter((item) => optionalString(item.type) === 'tool_use')\n const toolNames = toolUses.map((item) => optionalString(item.tool)).filter(Boolean)\n // Skill 装载与文件写入按 runtime 词汇解读(并集),并叠加 tool_result 的\n // `**Skill loaded**` 正向证据 —— 与 smoke 判定同一套词汇,不再假定工具名叫 skill。\n const vocabularies = ctx.runtimeProvider\n ? vocabulariesForRuntimeProvider(ctx.runtimeProvider) : []\n const active: readonly RuntimeTraceVocabulary[] = vocabularies.length\n ? vocabularies : allRuntimeVocabularies()\n const loadedSet = new Set<string>()\n const runBannerTools = new Set(active.flatMap((item) => [...item.skillResultTools]))\n for (const item of messages) {\n const type = optionalString(item.type)\n const tool = optionalString(item.tool)\n if (type === 'tool_use') {\n const message: TraceToolMessage = { tool, input: smokeToolInput(item) }\n for (const vocabulary of active) {\n const name = vocabulary.skillLoadFromToolUse(message)\n if (name) loadedSet.add(name)\n }\n } else if (type === 'tool_result' && runBannerTools.has(tool)) {\n for (const name of skillsLoadedInContent(optionalString(item.content))) loadedSet.add(name)\n }\n }\n const loadedSkills = [...loadedSet].sort()\n const texts = messages.filter((item) => optionalString(item.type) === 'text')\n .map((item) => optionalString(item.content)).filter(Boolean)\n const replyWrites = toolUses.flatMap((item) => {\n const message: TraceToolMessage = {\n tool: optionalString(item.tool), input: smokeToolInput(item),\n }\n return active.map((vocabulary) => vocabulary.writeEvidence(message))\n .filter((write): write is { path: string; content: string } => Boolean(write))\n // 裸文件名与 ./、绝对路径等价(平台常见写法,与 smoke 白名单同一课)。\n .filter((write) => write.path === 'reply.md' || write.path.endsWith('/reply.md'))\n .map((write) => write.content)\n }).filter(Boolean)\n const answer = safeRemoteOutput(replyWrites.at(-1) || texts.at(-1) || '', 64 * 1024)\n const issueReadback = jsonObject(runProvider(\n command, scopedArgs({ profile: plan.profile, expected: { workspaceId: plan.workspaceId } }, [\n 'issue', 'get', issueId, '--output', 'json',\n ]), 'workspace-run.issue.readback', 'read', root, env,\n Math.min(timeoutMs, 30_000), calls,\n ).stdout, 'workspace run issue readback')\n const issueStatus = optionalString(issueReadback.status)\n const failures: string[] = []\n if (!task) failures.push('task.not-created')\n else if (!['completed', 'failed', 'cancelled'].includes(taskStatus)) failures.push('task.timeout')\n else if (taskStatus !== 'completed') failures.push(`task.${taskStatus}`)\n if (!answer) failures.push('answer.missing')\n const taskDiagnostic = task\n ? remoteTaskDiagnostic(task)\n : `未发现关联 task;Issue 状态=${issueStatus || 'unknown'},已轮询 ${pollAttempts} 次`\n const report: MulticaWorkspaceRunReport = {\n $schema: 'dingtalk-agent/multica-workspace-run@1',\n passed: failures.length === 0,\n runId,\n workspace: name,\n provider: 'multica',\n profile: plan.profile,\n workspaceId: plan.workspaceId,\n runtimeId: plan.runtimeId,\n agentId: plan.agentId,\n promptHash: plan.promptHash,\n issueId,\n issueStatus,\n taskId,\n taskStatus,\n taskDiagnostic,\n pollAttempts,\n pollIntervalMs,\n answer,\n answerHash: sha256(answer),\n toolNames,\n loadedSkills,\n failures,\n calls,\n evidencePath: '',\n remoteRead: true,\n remoteWrite: calls.some((call) => call.kind === 'write'),\n triggerWrite: false,\n sideEffect: 'multica-issue-read-write',\n dingtalkSideEffect: false,\n }\n const defaultEvidence = join(\n MULTICA_EVIDENCE_ROOT, safeName(name), 'multica-runs', `${runId}.json`,\n )\n report.evidencePath = relative(root, safeProjectPath(\n root, ctx.out || defaultEvidence, false,\n ))\n assertReportRedacted(report)\n atomicJson(safeProjectPath(root, report.evidencePath, false), report)\n return report\n}\n\n/**\n * Resume a `workspace run` by re-reading the SAME Issue's task instead of creating a new one.\n * Loads the persisted run evidence by runId, confirms the workspace scope still resolves to the\n * same target (fail closed on drift), then polls that Issue's assignee-agent task to a terminal\n * state and rewrites the run report. Read-only against Multica — never enqueues a second Issue.\n */\nexport function statusMulticaWorkspaceRun(\n start: string,\n name: string,\n options: MulticaWorkspaceRunOptions & { runId?: string } = {},\n): MulticaWorkspaceRunReport {\n const env = options.env || process.env\n const cliVersion = options.cliVersion || ''\n const runId = String(options.runId || '').trim()\n if (!/^multica_workspace_run_[0-9]+_[a-f0-9]{8}$/.test(runId)) {\n throw new Error('workspace run --status 需要一个合法的 --run-id(来自上次 run 的 runId)')\n }\n if (!options.execute) {\n throw new Error('workspace run --status 会向 Multica 独立回读同一 Issue;必须传 --execute')\n }\n if (!options.yes) throw new Error('workspace run --status 远端回读必须同时传 --execute --yes')\n const info = inspectAgentProject(start, cliVersion)\n requireMulticaWorkspace(info.root, name, cliVersion)\n // The original run persists evidence to `--out` when given, else the default runId path. Resume\n // must look where the run actually wrote, so honor the same `--out` (and rewrite back to it).\n const evidenceRel = options.out || join(\n MULTICA_EVIDENCE_ROOT, safeName(name), 'multica-runs', `${runId}.json`)\n const evidenceAbs = safeProjectPath(info.root, evidenceRel, false)\n if (!existsSync(evidenceAbs)) {\n throw new Error(\n `找不到 run 证据 ${evidenceRel};--run-id 必须是本 Workspace 已有的 runId` +\n `${options.out ? '' : '(若原 run 用了 --out,请对 --status 传相同 --out)'}`)\n }\n const prior = JSON.parse(readFileSync(evidenceAbs, 'utf8')) as MulticaWorkspaceRunReport\n if (prior.$schema !== 'dingtalk-agent/multica-workspace-run@1' ||\n prior.provider !== 'multica' || prior.workspace !== name || !prior.issueId) {\n throw new Error('run 证据不是本 Workspace 的 multica run,或缺少 issueId;已 fail closed')\n }\n // The evidence file must belong to THIS runId. Two runs sharing one --out overwrite each\n // other, so resuming the first runId against that path would otherwise read the second run's\n // Issue while reporting the first runId — cross-wiring answer and run. Fail closed on mismatch.\n if (prior.runId !== runId) {\n throw new Error(\n `run 证据 ${evidenceRel} 属于 runId ${prior.runId},与 --run-id ${runId} 不一致;已 fail closed` +\n `(同一 --out 被后一次 run 覆盖时会这样)`)\n }\n // Re-resolve scope offline and refuse unless the WHOLE frozen target still matches: an env\n // pointing at a different runtime/agent/profile (or an invalid ref surfacing in blocking) must\n // not let the resume mis-record the old task or overwrite the frozen values. workspaceId alone\n // is not enough.\n const providerPlan = planMulticaWorkspace(info.root, name, { env, cliVersion })\n const scopeDrift = providerPlan.blocking.length ? ['blocking:' + providerPlan.blocking.join(',')] : []\n if (providerPlan.profile !== prior.profile) scopeDrift.push('profile')\n if (providerPlan.expected.workspaceId !== prior.workspaceId) scopeDrift.push('workspace')\n if (providerPlan.expected.runtimeId !== prior.runtimeId) scopeDrift.push('runtime')\n if (providerPlan.expected.agentId !== prior.agentId) scopeDrift.push('agent')\n if (scopeDrift.length) {\n throw new Error(\n `workspace run --status: 当前 workspace scope 与 run 证据不一致 [${scopeDrift.join(', ')}];已 fail closed`)\n }\n const command = options.command || env.DTA_MULTICA_BIN || 'multica'\n const timeoutMs = positiveTimeout(options.timeoutMs, 240_000, 300_000)\n const plan = {\n profile: providerPlan.profile,\n workspaceId: providerPlan.expected.workspaceId,\n runtimeId: providerPlan.expected.runtimeId,\n agentId: providerPlan.expected.agentId,\n promptHash: prior.promptHash,\n }\n return readbackWorkspaceRun({\n root: info.root, name, plan, issueId: prior.issueId, runId,\n command, env, timeoutMs, calls: [], out: options.out,\n })\n}\n\nexport function planMulticaDeployment(\n start: string,\n name: string,\n options: {\n action?: DeploymentAction; env?: NodeJS.ProcessEnv; cliVersion?: string\n rebindRuntime?: boolean\n } = {},\n): MulticaDeploymentPlan {\n const action = options.action || 'apply'\n const rebindRuntime = Boolean(options.rebindRuntime) && action === 'apply'\n const env = options.env || process.env\n const cliVersion = options.cliVersion || ''\n const info = inspectAgentProject(start, cliVersion)\n const workspace = requireMulticaWorkspace(info.root, name, cliVersion)\n const source = loadDeploymentSource(info.root)\n const readPlan = planMulticaWorkspace(info.root, name, { env, cliVersion })\n const blocking = [...readPlan.blocking]\n let inspectionId = ''\n let previousRuntimeId = ''\n try {\n const status = statusMulticaWorkspace(info.root, name, cliVersion)\n inspectionId = status.inspectionId\n if (!status.readyForApply || !status.evidenceIntegrity || !status.stateMatched) {\n blocking.push(...status.failures.map((item) => `inspection.${item}`))\n }\n // Runtime 归属漂移只挡「普通 apply」:没有显式 --rebind-runtime 时不允许悄悄把\n // Agent 搬到新 runtime。retire 是收敛动作,不受漂移阻挡(否则 deploy 与 retire\n // 会被同一把锁一起锁死)。\n if (status.diff.includes('agent.runtime-drift')) {\n previousRuntimeId = status.observedAgentRuntimeId || ''\n if (action === 'apply' && !rebindRuntime) blocking.push('agent.runtime-drift')\n }\n } catch {\n blocking.push('inspection.invalid')\n }\n if (!inspectionId) blocking.push('inspection.missing')\n if (action === 'retire' && !readPlan.expected.agentId) blocking.push('agent-id.missing')\n if (rebindRuntime && !readPlan.expected.agentId) blocking.push('rebind.agent-id-missing')\n const expectedSkills = source.skills.map((skill) => ({\n name: skill.name, hash: skill.hash, files: skill.files.length + 1,\n }))\n const operations = action === 'retire'\n ? ['scope.reinspect', 'agent.archive', 'agent.readback', 'receipt.persist']\n : [\n 'scope.reinspect', 'skills.readback', 'skills.reconcile',\n ...(rebindRuntime ? ['agent.rebind-runtime'] : []), 'agent.reconcile',\n 'skills.assign-exact', 'provider.readback', 'load-smoke.create',\n 'load-smoke.recover-if-unstarted', 'load-smoke.readback', 'receipt.persist',\n ]\n const writeBudget = action === 'retire'\n ? { forward: 1, rollback: 0 }\n : {\n // +3 on top of the base 5: bounded skills-not-visible smoke retries (cold sandbox).\n forward: source.skills.length * (1 + MAX_SKILL_SUPPORTING_FILES * 2) + 8,\n rollback: source.skills.length * (1 + MAX_SKILL_SUPPORTING_FILES * 2) + 3,\n }\n const planId = `multica_deploy_plan_${digest(stableStringify({\n action, workspace: name, profile: readPlan.profile, inspectionId,\n desiredHash: workspace.desiredHash, deploymentHash: source.deploymentHash,\n expected: readPlan.expected, operations, writeBudget, rebindRuntime, previousRuntimeId,\n blocking: [...new Set(blocking)].sort(),\n })).slice(0, 24)}`\n return {\n $schema: 'dingtalk-agent/multica-deployment-plan@1',\n planId,\n action,\n workspace: name,\n provider: 'multica',\n profile: readPlan.profile,\n inspectionId,\n desiredHash: workspace.desiredHash,\n deploymentHash: source.deploymentHash,\n predicateRegistry: source.predicateRegistry,\n expected: {\n workspaceId: readPlan.expected.workspaceId,\n runtimeId: readPlan.expected.runtimeId,\n agentId: readPlan.expected.agentId,\n agentName: info.project.displayName,\n skills: expectedSkills,\n definitionHash: source.definitionHash,\n instructionsHash: source.instructionsHash,\n ...(rebindRuntime ? { previousRuntimeId } : {}),\n },\n rebindRuntime,\n operations,\n writeBudget,\n blocking: [...new Set(blocking)].sort(),\n requiresPlanId: true,\n requiresExplicitYes: true,\n remoteRead: false,\n remoteWrite: false,\n triggerWrite: false,\n sideEffect: false,\n dingtalkSideEffect: false,\n }\n}\n\nexport function applyMulticaDeployment(\n start: string,\n name: string,\n options: MulticaDeploymentOptions = {},\n action: DeploymentAction = 'apply',\n): MulticaDeploymentReceipt {\n if (!options.yes) {\n throw new Error('dta deploy 会修改 Multica 远端资源;必须显式传 --yes 和当前 --plan-id')\n }\n if (!options.planId) throw new Error('dta deploy 必须传 dry-run 返回的 --plan-id')\n const env = options.env || process.env\n const cliVersion = options.cliVersion || ''\n const rebindRuntime = Boolean(options.rebindRuntime) && action === 'apply'\n const plan = planMulticaDeployment(start, name, { action, env, cliVersion, rebindRuntime })\n if (options.planId !== plan.planId) {\n throw new Error(`deploy plan 已失效;期望当前 planId ${plan.planId}。` +\n 'plan 对中间状态敏感:dry-run 之后、apply 之前不要插入 workspace inspect 等操作;' +\n '重跑 --dry-run 取新 planId 后立即 apply')\n }\n if (plan.blocking.length) throw new Error(`deploy 前置条件不完整: ${plan.blocking.join(', ')}`)\n const info = inspectAgentProject(start, cliVersion)\n const workspace = requireMulticaWorkspace(info.root, name, cliVersion)\n const source = loadDeploymentSource(info.root)\n const command = options.command || env.DTA_MULTICA_BIN || 'multica'\n const timeoutMs = positiveTimeout(options.timeoutMs, 30_000, 300_000)\n const calls: MulticaDeploymentCall[] = []\n deploymentWriteBudgets.set(calls, plan.writeBudget)\n const preflight = inspectMulticaWorkspace(info.root, name, {\n execute: true, yes: true, persist: false, command, env, timeoutMs, cliVersion,\n }) as MulticaWorkspaceInspection\n if (!preflight.passed || preflight.inspectionId !== plan.inspectionId ||\n preflight.profile !== plan.profile ||\n preflight.expected.workspaceId !== plan.expected.workspaceId ||\n preflight.expected.runtimeId !== plan.expected.runtimeId) {\n throw new Error('deploy scope/readback 与冻结 plan 不一致;未执行任何远端写入' +\n '(dry-run 与 apply 之间若插入过 inspect 或远端有变化,重跑 --dry-run 后立即 apply)')\n }\n if (action === 'apply' && !rebindRuntime && preflight.diff.includes('agent.runtime-drift')) {\n throw new Error('deploy 前置条件不完整: agent.runtime-drift' +\n '(Agent 当前绑定在其他 runtime;显式迁移用 --rebind-runtime,退役用 --retire)')\n }\n appendInspectionCalls(preflight, 'preflight', calls)\n\n const operationId = `multica_operation_${Date.now()}_${randomUUID().slice(0, 12)}`\n const operation = createOperation(operationId, plan)\n operation.calls = [...calls]\n persistOperation(info.root, operation)\n const rollback: RollbackContext = {\n createdSkillIds: [], updatedSkills: [], createdAgentId: '', updatedAgent: null,\n assignmentChanged: false, previousAssignedIds: [],\n }\n let receipt: MulticaDeploymentReceipt\n const temp = mkdtempSync(join(tmpdir(), `dta-multica-deploy-${safeName(name)}-`))\n try {\n if (action === 'retire') {\n receipt = retireDeployment(\n info.root, workspace, source, plan, preflight, operation, command, env, timeoutMs, calls,\n )\n } else {\n receipt = executeApply(\n info.root, workspace, source, plan, preflight, operation, command, env,\n timeoutMs, positiveTimeout(options.smokeTimeoutMs, 30_000, 300_000),\n Boolean(options.noWait), calls, rollback, temp,\n )\n }\n } catch (error) {\n const failure = error instanceof DeploymentFailure\n ? error : new DeploymentFailure('deploy.internal-failure')\n const rollbackReport = failure.ambiguous\n ? emptyRollback(false)\n : rollbackConfirmed(\n info.root, plan, command, env, timeoutMs, calls, rollback, temp,\n )\n const status: DeploymentStatus = failure.ambiguous ? 'reconciling' : 'failed'\n operation.status = status\n operation.ambiguousAction = failure.ambiguous ? failure.category : ''\n operation.calls = calls\n operation.failures = [failure.category, ...rollbackReport.failures]\n operation.updatedAt = new Date().toISOString()\n receipt = failureReceipt(\n info.root, workspace, source, plan, preflight, operation, calls,\n rollbackReport, status, failure.category, failure.detail,\n )\n } finally {\n rmSync(temp, { recursive: true, force: true })\n deploymentWriteBudgets.delete(calls)\n }\n persistReceiptAndState(info.root, workspace, operation, receipt)\n return receipt\n}\n\nfunction executeApply(\n root: string,\n workspace: DevelopmentWorkspaceView,\n source: DeploymentSource,\n plan: MulticaDeploymentPlan,\n preflight: MulticaWorkspaceInspection,\n operation: MulticaDeploymentOperation,\n command: string,\n env: NodeJS.ProcessEnv,\n timeoutMs: number,\n smokeTimeoutMs: number,\n noWait: boolean,\n calls: MulticaDeploymentCall[],\n rollback: RollbackContext,\n temp: string,\n): MulticaDeploymentReceipt {\n const snapshot = readRemoteSnapshot(\n root, source, preflight, command, env, timeoutMs, calls,\n )\n const exactBefore = remoteMatchesDesired(snapshot, source, plan.expected.runtimeId)\n const previous = loadLatestReceipt(root, workspace.name)\n if (exactBefore && workspace.state?.status === 'ready' &&\n workspace.state.binding.deploymentHash === source.deploymentHash &&\n previous?.passed && previous.providerReady && previous.deploymentHash === source.deploymentHash) {\n const receiptId = `multica_receipt_${digest(stableStringify({\n operationId: operation.operationId, planId: plan.planId, reuse: previous.receiptId,\n })).slice(0, 24)}`\n return {\n ...previous,\n receiptId,\n operationId: operation.operationId,\n planId: plan.planId,\n idempotent: true,\n calls: [...calls],\n agent: { ...previous.agent, action: 'noop' },\n skills: previous.skills.map((skill) => ({ ...skill, action: 'noop' })),\n failureDetails: Array.isArray(previous.failureDetails) ? previous.failureDetails : [],\n evidencePath: receiptRelativePath(workspace.name, receiptId),\n remoteWrite: false,\n sideEffect: 'multica-read',\n }\n }\n\n operation.status = 'applying'\n operation.calls = calls\n operation.updatedAt = new Date().toISOString()\n persistOperation(root, operation)\n\n const skillResults: MulticaDeploymentReceipt['skills'] = []\n const skillIds: string[] = []\n for (const local of source.skills) {\n const remote = snapshot.skills.get(local.name) || null\n const result = reconcileSkill(\n root, plan, local, remote, command, env, timeoutMs, calls, rollback, temp,\n )\n skillIds.push(result.skill.id)\n skillResults.push({\n id: result.skill.id,\n name: local.name,\n sourceHash: local.hash,\n remoteHash: result.skill.hash,\n action: result.action,\n })\n }\n\n const agentResult = reconcileAgent(\n root, plan, source, snapshot.agent, command, env, timeoutMs, calls, rollback,\n )\n const agentId = agentResult.agent.id\n operation.agentId = agentId\n const expectedAssignments = [...skillIds].sort()\n rollback.previousAssignedIds = [...snapshot.assignedIds]\n if (stableStringify([...snapshot.assignedIds].sort()) !== stableStringify(expectedAssignments)) {\n runProvider(\n command, scopedArgs(plan, [\n 'agent', 'skills', 'set', agentId, '--skill-ids', expectedAssignments.join(','), '--output', 'json',\n ]), 'agent.skills.set', 'write', root, env, timeoutMs, calls,\n )\n rollback.assignmentChanged = true\n }\n\n const readback = inspectMulticaWorkspace(root, workspace.name, {\n execute: true, yes: true, persist: true, command, env, timeoutMs,\n agentIdOverride: agentId,\n }) as MulticaWorkspaceInspection\n if (!readback.passed || !readback.resources.agent ||\n readback.resources.agent.id !== agentId ||\n readback.resources.agent.runtimeId !== plan.expected.runtimeId) {\n throw new DeploymentFailure('readback.agent-mismatch')\n }\n const finalSnapshot = readRemoteSnapshot(\n root, source, readback, command, env, timeoutMs, calls,\n )\n if (!remoteMatchesDesired(finalSnapshot, source, plan.expected.runtimeId)) {\n throw new DeploymentFailure('readback.deployment-mismatch')\n }\n const observedHash = deploymentObservedHash(finalSnapshot, readback.inspectionId)\n const smoke = createAndReadSmoke(\n root, plan, source, agentId, readback.resources.runtime?.provider || '',\n command, env, timeoutMs, smokeTimeoutMs, noWait, calls,\n )\n // skills-not-visible 是冷沙箱竞态(推送的 Skill 尚未物化),不是真实部署失败:落\n // verifying 而非 failed,避免把一次正常部署误判成失败、把人推去改本体换模板。\n const status: DeploymentStatus = smoke.status === 'passed'\n ? 'ready' : smoke.status === 'pending' ? 'verifying'\n : smoke.classification === 'skills-not-visible' ? 'verifying' : 'failed'\n const receiptId = `multica_receipt_${digest(stableStringify({\n operationId: operation.operationId, planId: plan.planId, observedHash,\n smoke: { markerHash: smoke.markerHash, issueId: smoke.issueId, taskId: smoke.taskId },\n })).slice(0, 24)}`\n return {\n $schema: MULTICA_DEPLOYMENT_SCHEMA,\n receiptId,\n operationId: operation.operationId,\n planId: plan.planId,\n action: 'apply',\n workspace: workspace.name,\n provider: 'multica',\n profile: plan.profile,\n status,\n passed: status === 'ready',\n providerReady: status === 'ready',\n idempotent: false,\n inspectionId: readback.inspectionId,\n inspectionObservedHash: readback.observedHash,\n inspectionEvidencePath: readback.evidencePath,\n desiredHash: workspace.desiredHash,\n deploymentHash: source.deploymentHash,\n predicateRegistry: source.predicateRegistry,\n observedHash,\n agent: {\n id: finalSnapshot.agent?.id || agentId,\n runtimeId: finalSnapshot.agent?.runtimeId || '',\n instructionsHash: sha256(finalSnapshot.agent?.instructions || ''),\n archived: Boolean(finalSnapshot.agent?.archived),\n action: agentResult.action,\n },\n skills: skillResults.sort((a, b) => a.name.localeCompare(b.name)),\n assignmentHash: digest(stableStringify(expectedAssignments)),\n calls: [...calls],\n smoke,\n rollback: emptyRollback(false),\n failures: [...smoke.failures],\n failureDetails: [...smoke.failureDetails],\n ...(plan.rebindRuntime && plan.expected.previousRuntimeId ? {\n rebind: {\n fromRuntimeId: plan.expected.previousRuntimeId,\n toRuntimeId: plan.expected.runtimeId,\n },\n } : {}),\n evidencePath: receiptRelativePath(workspace.name, receiptId),\n remoteRead: true,\n remoteWrite: calls.some((call) => call.kind === 'write'),\n triggerWrite: false,\n sideEffect: 'multica-read-write',\n dingtalkSideEffect: false,\n }\n}\n\nfunction retireDeployment(\n root: string,\n workspace: DevelopmentWorkspaceView,\n source: DeploymentSource,\n plan: MulticaDeploymentPlan,\n preflight: MulticaWorkspaceInspection,\n operation: MulticaDeploymentOperation,\n command: string,\n env: NodeJS.ProcessEnv,\n timeoutMs: number,\n calls: MulticaDeploymentCall[],\n): MulticaDeploymentReceipt {\n const agentId = preflight.resources.agent?.id || plan.expected.agentId\n if (!agentId) throw new DeploymentFailure('retire.agent-id-missing')\n if (!preflight.resources.agent?.archived) {\n runProvider(\n command, scopedArgs(plan, ['agent', 'archive', agentId, '--output', 'json']),\n 'agent.archive', 'write', root, env, timeoutMs, calls,\n )\n }\n const agent = parseRemoteAgent(jsonObject(runProvider(\n command, scopedArgs(plan, ['agent', 'get', agentId, '--output', 'json']),\n 'agent.get.retire-readback', 'read', root, env, timeoutMs, calls,\n ).stdout, 'retire agent'))\n if (!agent.archived || agent.id !== agentId) throw new DeploymentFailure('retire.readback-mismatch')\n const observedHash = digest(stableStringify({ agentId, archived: true, deploymentHash: source.deploymentHash }))\n const receiptId = `multica_receipt_${digest(stableStringify({\n operationId: operation.operationId, action: 'retire', observedHash,\n })).slice(0, 24)}`\n return {\n $schema: MULTICA_DEPLOYMENT_SCHEMA,\n receiptId,\n operationId: operation.operationId,\n planId: plan.planId,\n action: 'retire',\n workspace: workspace.name,\n provider: 'multica',\n profile: plan.profile,\n status: 'retired',\n passed: true,\n providerReady: false,\n idempotent: Boolean(preflight.resources.agent?.archived),\n inspectionId: preflight.inspectionId,\n inspectionObservedHash: preflight.observedHash,\n inspectionEvidencePath: preflight.evidencePath,\n desiredHash: workspace.desiredHash,\n deploymentHash: source.deploymentHash,\n predicateRegistry: source.predicateRegistry,\n observedHash,\n agent: {\n id: agent.id,\n runtimeId: agent.runtimeId,\n instructionsHash: sha256(agent.instructions),\n archived: true,\n action: preflight.resources.agent?.archived ? 'noop' : 'archive',\n },\n skills: [],\n assignmentHash: '',\n calls: [...calls],\n smoke: emptySmoke('not-run', source.skills.map((item) => item.name)),\n rollback: emptyRollback(false),\n failures: [],\n failureDetails: [],\n evidencePath: receiptRelativePath(workspace.name, receiptId),\n remoteRead: true,\n remoteWrite: calls.some((call) => call.kind === 'write'),\n triggerWrite: false,\n sideEffect: 'multica-read-write',\n dingtalkSideEffect: false,\n }\n}\n\nfunction loadDeploymentSource(root: string): DeploymentSource {\n const info = inspectAgentProject(root)\n const definitionPath = safeProjectPath(root, info.project.definition, true)\n const definition = readUtf8(definitionPath, 'Agent Definition', 512 * 1024)\n rejectCredentialMaterial(definition, 'Agent Definition')\n const definitionHash = sha256(definition)\n const skillRoots: Array<{ name: string; root: string }> = []\n for (const name of info.project.skills) {\n const ref = projectSkillRef(info.project, name)\n skillRoots.push({ name, root: safeProjectPath(root, ref, true) })\n }\n if (skillRoots.length > MAX_DEPLOY_SKILLS) {\n throw new Error(`Multica deploy 最多支持 ${MAX_DEPLOY_SKILLS} 个受管 Skills`)\n }\n const skills = skillRoots.map(({ name, root: skillRoot }) => loadSkillBundle(name, skillRoot))\n .sort((a, b) => a.name.localeCompare(b.name))\n if (new Set(skills.map((item) => item.name)).size !== skills.length) {\n throw new Error('Multica deploy required Skills 不能重名')\n }\n // Agent instructions are the human-authored Definition, byte for byte. Deployment\n // hashes and the managed Skill set belong to the control plane and its Receipt;\n // injecting them into the System Prompt makes the role unreadable and creates a\n // second runtime protocol beside the Host's native Skill assignment.\n const instructions = definition\n const instructionsHash = sha256(instructions)\n // predicate registry 投影作为受管 supporting file 进入归属 Skill(issue #46):\n // 走既有 skill-push 链路交付,投影 hash 因此进 Skill tree hash → deployment hash →\n // Receipt,回读用现有 skill hash 对账就能发现漂移。不引入第二条传输通道。\n const predicateRegistry = attachPredicateRegistry(info, skills)\n const deploymentHash = digest(stableStringify({\n definitionHash, instructionsHash,\n skills: skills.map((item) => ({ name: item.name, hash: item.hash })),\n predicateRegistryHash: predicateRegistry?.hash || '',\n }))\n return { definitionHash, instructions, instructionsHash, skills, predicateRegistry, deploymentHash }\n}\n\n/**\n * 把 manifest 的 predicates 注册表投影成归属 Skill 的受管 supporting file。\n *\n * 归属 Skill 必须真在受管集合里:注册表声明了、却没有任何一个部署的 Skill 承载它,\n * 那么运行拍读不到判据——这时**拒绝部署**,而不是部署一个「声明说有判据、运行侧其实\n * 拿不到」的 Agent。同路径已有作者手写文件时同样拒绝:受管 artifact 不覆盖人写的东西。\n */\nfunction attachPredicateRegistry(\n info: AgentProjectInfo, skills: LocalSkillBundle[],\n): DeployedPredicateRegistry | null {\n const projection = buildPredicateRegistry({\n name: info.project.name,\n predicates: info.project.predicates,\n // completion 文法只有一个 parser(schedule-plan),投影这边不再自己解析一遍\n scheduleRefs: info.project.schedules.map((schedule) => ({\n name: schedule.name, predicate: completionPredicateId(schedule.completion),\n })),\n })\n if (!projection) return null\n const owner = predicateRegistryOwner(info.project.skills)\n const bundle = skills.find((item) => item.name === owner)\n if (!bundle) {\n throw new Error(\n `Project 声明了 predicates 注册表,但受管 Skill 集合里没有承载它的 Skill(期望 ${owner || '-'})——` +\n '运行拍会读不到判据,先把该 Skill 加入 agent.skills 再部署')\n }\n if (bundle.files.some((item) => item.path === PREDICATE_REGISTRY_PATH)) {\n throw new Error(\n `Skill ${owner} 已有 ${PREDICATE_REGISTRY_PATH}——受管 registry 投影不覆盖作者手写文件`)\n }\n const text = serializeRegistry(projection)\n const content = Buffer.from(text, 'utf8')\n bundle.files = [...bundle.files, {\n path: PREDICATE_REGISTRY_PATH, absolutePath: '', managedContent: text,\n hash: sha256(content), bytes: content.length,\n }].sort((a, b) => a.path.localeCompare(b.path))\n if (bundle.files.length > MAX_SKILL_SUPPORTING_FILES) {\n throw new Error(\n `Skill ${owner} 加上受管 registry 投影后 supporting files 超过 ${MAX_SKILL_SUPPORTING_FILES} 个`)\n }\n bundle.hash = skillTreeHash(\n bundle.content, bundle.files.map((item) => ({ path: item.path, hash: item.hash })))\n return {\n skill: owner,\n path: PREDICATE_REGISTRY_PATH,\n hash: projection.hash,\n ids: Object.keys(projection.predicates),\n schedules: projection.schedules.map((item) => item.name),\n }\n}\n\nfunction loadSkillBundle(name: string, root: string): LocalSkillBundle {\n const actual = realpathSync(root)\n if (!lstatSync(actual).isDirectory()) throw new Error(`Skill ${name} source 不是目录`)\n const files: LocalSkillFile[] = []\n const visit = (directory: string, prefix = ''): void => {\n for (const entry of readdirSync(directory, { withFileTypes: true })\n .sort((a, b) => a.name.localeCompare(b.name))) {\n const path = join(directory, entry.name)\n const ref = prefix ? `${prefix}/${entry.name}` : entry.name\n if (entry.isSymbolicLink()) throw new Error(`Skill ${name} 不允许符号链接: ${ref}`)\n if (entry.isDirectory()) visit(path, ref)\n else if (entry.isFile()) {\n const content = readFileSync(path)\n if (content.length > 1024 * 1024) throw new Error(`Skill ${name} 文件超过 1 MiB: ${ref}`)\n const text = content.toString('utf8')\n if (Buffer.from(text, 'utf8').compare(content) !== 0 || content.includes(0)) {\n throw new Error(`Skill ${name} 只支持 UTF-8 supporting files: ${ref}`)\n }\n rejectCredentialMaterial(text, `Skill ${name}/${ref}`)\n files.push({ path: ref, absolutePath: path, hash: sha256(content), bytes: content.length })\n if (files.length > MAX_SKILL_SUPPORTING_FILES + 1) {\n throw new Error(`Skill ${name} files 超过 ${MAX_SKILL_SUPPORTING_FILES + 1} 个`)\n }\n } else throw new Error(`Skill ${name} 包含特殊文件: ${ref}`)\n }\n }\n visit(actual)\n if (files.reduce((sum, item) => sum + item.bytes, 0) > 8 * 1024 * 1024) {\n throw new Error(`Skill ${name} 总大小超过 8 MiB`)\n }\n const main = files.find((item) => item.path === 'SKILL.md')\n if (!main) throw new Error(`Skill ${name} 缺少 SKILL.md`)\n const content = readUtf8(main.absolutePath, `Skill ${name}`, 1024 * 1024)\n const declared = frontmatterName(content)\n if (declared !== name) throw new Error(`Skill ${name} frontmatter name 不一致: ${declared || '<missing>'}`)\n rejectCredentialMaterial(content, `Skill ${name}`)\n const supporting = files.filter((item) => item.path !== 'SKILL.md')\n if (supporting.length > MAX_SKILL_SUPPORTING_FILES) {\n throw new Error(`Skill ${name} supporting files 超过 ${MAX_SKILL_SUPPORTING_FILES} 个`)\n }\n const hash = skillTreeHash(content, supporting.map((item) => ({ path: item.path, hash: item.hash })))\n return { name, root: actual, mainPath: main.absolutePath, content, files: supporting, hash }\n}\n\nfunction readRemoteSnapshot(\n root: string,\n source: DeploymentSource,\n inspection: MulticaWorkspaceInspection,\n command: string,\n env: NodeJS.ProcessEnv,\n timeoutMs: number,\n calls: MulticaDeploymentCall[],\n): RemoteSnapshot {\n const planLike = {\n profile: inspection.profile,\n expected: inspection.expected,\n }\n const skills = new Map<string, RemoteSkill | null>()\n for (const local of source.skills) {\n const candidates = inspection.resources.catalogSkills.filter((item) => item.name === local.name)\n if (candidates.length > 1) throw new DeploymentFailure(`skills.duplicate:${local.name}`)\n if (!candidates.length) {\n skills.set(local.name, null)\n continue\n }\n const raw = jsonObject(runProvider(\n command, scopedArgs(planLike, ['skill', 'get', candidates[0].id, '--output', 'json']),\n `skill.get:${local.name}`, 'read', root, env, timeoutMs, calls,\n ).stdout, `skill ${local.name}`)\n const skill = parseRemoteSkill(raw)\n if (skill.id !== candidates[0].id || skill.name !== local.name) {\n throw new DeploymentFailure(`skills.binding-mismatch:${local.name}`)\n }\n skills.set(local.name, skill)\n }\n let agent: RemoteAgent | null = null\n if (inspection.resources.agent) {\n agent = parseRemoteAgent(jsonObject(runProvider(\n command, scopedArgs(planLike, [\n 'agent', 'get', inspection.resources.agent.id, '--output', 'json',\n ]), 'agent.get.deploy', 'read', root, env, timeoutMs, calls,\n ).stdout, 'agent deploy'))\n if (agent.id !== inspection.resources.agent.id) throw new DeploymentFailure('agent.binding-mismatch')\n }\n return {\n agent,\n skills,\n assignedIds: inspection.resources.assignedSkills.filter((item) => item.enabled)\n .map((item) => item.id).sort(),\n }\n}\n\nfunction reconcileSkill(\n root: string,\n plan: MulticaDeploymentPlan,\n local: LocalSkillBundle,\n remote: RemoteSkill | null,\n command: string,\n env: NodeJS.ProcessEnv,\n timeoutMs: number,\n calls: MulticaDeploymentCall[],\n rollback: RollbackContext,\n temp: string,\n): { skill: RemoteSkill; action: 'create' | 'update' | 'noop' } {\n let id = remote?.id || ''\n let action: 'create' | 'update' | 'noop' = 'noop'\n if (!remote) {\n const created = jsonObject(runProvider(\n command, scopedArgs(plan, [\n 'skill', 'create', '--name', local.name,\n '--description', `Managed by dingtalk-agent (${local.hash.slice(0, 12)})`,\n '--content-file', local.mainPath, '--output', 'json',\n ]), `skill.create:${local.name}`, 'write', root, env, timeoutMs, calls,\n ).stdout, `created skill ${local.name}`)\n id = resourceId(created.id, `created skill ${local.name}.id`)\n rollback.createdSkillIds.push(id)\n action = 'create'\n for (const file of local.files) upsertSkillFile(\n root, plan, id, file.path, skillFileContentPath(file, temp), command, env, timeoutMs, calls,\n )\n } else if (remote.hash !== local.hash) {\n rollback.updatedSkills.push(remote)\n runProvider(\n command, scopedArgs(plan, [\n 'skill', 'update', id, '--content-file', local.mainPath, '--output', 'json',\n ]), `skill.update:${local.name}`, 'write', root, env, timeoutMs, calls,\n )\n syncSkillFiles(root, plan, id, local, remote, command, env, timeoutMs, calls, temp)\n action = 'update'\n }\n const readback = parseRemoteSkill(jsonObject(runProvider(\n command, scopedArgs(plan, ['skill', 'get', id, '--output', 'json']),\n `skill.get.readback:${local.name}`, 'read', root, env, timeoutMs, calls,\n ).stdout, `skill readback ${local.name}`))\n if (readback.name !== local.name || readback.hash !== local.hash) {\n throw new DeploymentFailure(`skill.readback-mismatch:${local.name}`)\n }\n return { skill: readback, action }\n}\n\nfunction reconcileAgent(\n root: string,\n plan: MulticaDeploymentPlan,\n source: DeploymentSource,\n remote: RemoteAgent | null,\n command: string,\n env: NodeJS.ProcessEnv,\n timeoutMs: number,\n calls: MulticaDeploymentCall[],\n rollback: RollbackContext,\n): { agent: RemoteAgent; action: 'create' | 'update' | 'restore' | 'noop' } {\n let id = remote?.id || ''\n let action: 'create' | 'update' | 'restore' | 'noop' = 'noop'\n if (!remote) {\n const created = jsonObject(runProvider(\n command, scopedArgs(plan, [\n 'agent', 'create', '--name', plan.expected.agentName,\n '--description', `Managed dingtalk-agent ${plan.deploymentHash.slice(0, 12)}`,\n '--instructions', source.instructions,\n '--runtime-id', plan.expected.runtimeId,\n '--permission-mode', 'private', '--output', 'json',\n ]), 'agent.create', 'write', root, env, timeoutMs, calls,\n ).stdout, 'created agent')\n id = resourceId(created.id, 'created agent.id')\n rollback.createdAgentId = id\n action = 'create'\n } else {\n if (remote.archived) {\n rollback.updatedAgent = remote\n runProvider(\n command, scopedArgs(plan, ['agent', 'restore', id, '--output', 'json']),\n 'agent.restore', 'write', root, env, timeoutMs, calls,\n )\n action = 'restore'\n }\n if (remote.name !== plan.expected.agentName || remote.runtimeId !== plan.expected.runtimeId ||\n remote.instructions !== source.instructions) {\n rollback.updatedAgent ||= remote\n runProvider(\n command, scopedArgs(plan, [\n 'agent', 'update', id, '--name', plan.expected.agentName,\n '--instructions', source.instructions, '--runtime-id', plan.expected.runtimeId,\n '--output', 'json',\n ]), 'agent.update', 'write', root, env, timeoutMs, calls,\n )\n action = action === 'restore' ? 'restore' : 'update'\n }\n }\n const agent = parseRemoteAgent(jsonObject(runProvider(\n command, scopedArgs(plan, ['agent', 'get', id, '--output', 'json']),\n 'agent.get.readback', 'read', root, env, timeoutMs, calls,\n ).stdout, 'agent readback'))\n if (agent.id !== id || agent.name !== plan.expected.agentName ||\n agent.runtimeId !== plan.expected.runtimeId || agent.instructions !== source.instructions || agent.archived) {\n throw new DeploymentFailure('agent.readback-mismatch')\n }\n return { agent, action }\n}\n\nfunction syncSkillFiles(\n root: string,\n plan: MulticaDeploymentPlan,\n skillId: string,\n local: LocalSkillBundle,\n remote: RemoteSkill,\n command: string,\n env: NodeJS.ProcessEnv,\n timeoutMs: number,\n calls: MulticaDeploymentCall[],\n temp: string,\n): void {\n const remoteByPath = new Map(remote.files.map((item) => [item.path, item]))\n const localPaths = new Set(local.files.map((item) => item.path))\n for (const file of remote.files) {\n if (localPaths.has(file.path)) continue\n runProvider(\n command, scopedArgs(plan, ['skill', 'files', 'delete', skillId, file.id]),\n `skill.file.delete:${local.name}:${file.path}`, 'write', root, env, timeoutMs, calls,\n )\n }\n for (const file of local.files) {\n if (remoteByPath.get(file.path)?.hash === file.hash) continue\n upsertSkillFile(\n root, plan, skillId, file.path, skillFileContentPath(file, temp),\n command, env, timeoutMs, calls,\n )\n }\n}\n\n/**\n * 上传用的正文来源。磁盘文件直接给路径;受管 artifact(registry 投影)在这里才物化——\n * plan 阶段只参与 hash,不落任何文件,dry-run 的「零副作用」保持为真。\n */\nfunction skillFileContentPath(file: LocalSkillFile, temp: string): string {\n if (file.absolutePath) return file.absolutePath\n if (file.managedContent === undefined) {\n throw new Error(`受管 Skill 文件缺正文: ${file.path}`)\n }\n const path = writeTemporaryContent(\n temp, `managed-${sha256(file.path).slice(0, 8)}`, file.managedContent)\n if (sha256(readFileSync(path)) !== file.hash) {\n throw new Error(`受管 Skill 文件物化后 hash 不一致: ${file.path}`)\n }\n return path\n}\n\nfunction upsertSkillFile(\n root: string,\n plan: MulticaDeploymentPlan,\n skillId: string,\n path: string,\n contentFile: string,\n command: string,\n env: NodeJS.ProcessEnv,\n timeoutMs: number,\n calls: MulticaDeploymentCall[],\n): void {\n runProvider(\n command, scopedArgs(plan, [\n 'skill', 'files', 'upsert', skillId, '--path', path,\n '--content-file', contentFile, '--output', 'json',\n ]), `skill.file.upsert:${path}`, 'write', root, env, timeoutMs, calls,\n )\n}\n\nfunction createAndReadSmoke(\n root: string,\n plan: MulticaDeploymentPlan,\n source: DeploymentSource,\n agentId: string,\n runtimeProvider: string,\n command: string,\n env: NodeJS.ProcessEnv,\n timeoutMs: number,\n smokeTimeoutMs: number,\n noWait: boolean,\n calls: MulticaDeploymentCall[],\n): MulticaDeploymentSmoke {\n const marker = `DTA-MULTICA-LOAD-${randomUUID()}`\n const requiredSkills = source.skills.map((item) => item.name).sort()\n const expectedResponse = JSON.stringify({\n schema: 'dta-multica-load-smoke@1', marker, loaded: requiredSkills,\n })\n const issue = jsonObject(runProvider(\n command, scopedArgs(plan, [\n 'issue', 'create', '--title', `[DTA load smoke] ${marker}`,\n '--description', [\n 'DTA_MULTICA_LOAD_SMOKE@1', `marker=${marker}`,\n `required_skills=${JSON.stringify(requiredSkills)}`,\n 'This is a deployment control-plane verification task.',\n 'Load every required skill above through the Host skill mechanism, in the listed order.',\n 'Do not call DWS, network, or business tools. Only the Host Issue control-plane calls needed to read this Issue and persist the exact result are exempt.',\n `Post exactly this JSON as an Issue comment (and nothing else): ${expectedResponse}`,\n ].join('\\n'),\n '--assignee-id', agentId, '--output', 'json',\n ]), 'smoke.issue.create', 'write', root, env, timeoutMs, calls,\n ).stdout, 'smoke issue')\n const issueId = resourceId(issue.id, 'smoke issue.id')\n const read = (): MulticaDeploymentSmoke => readSmoke(\n root, plan, marker, issueId, agentId, requiredSkills, runtimeProvider,\n command, env, timeoutMs, calls,\n )\n let smoke = read()\n // Multica persists the Issue before attempting the initial agent enqueue. If\n // that enqueue loses a transient readiness race, the API still returns a\n // valid assigned todo Issue but issue runs remains empty forever. Recover\n // exactly that observable state once through an explicit ID-bound mention on\n // the same Issue. A visible task — queued, running or terminal — is never\n // duplicated. The mention route is used instead of issue rerun because it is\n // the platform's normal first-run trigger and does not require a prior task.\n if (smoke.status === 'pending' && !smoke.taskId) {\n try {\n runProvider(\n command, scopedArgs(plan, [\n 'issue', 'comment', 'add', issueId,\n '--content', `[@DTA load smoke](mention://agent/${agentId}) Execute the deployment verification exactly as specified in this Issue description.`,\n '--output', 'json',\n ]), 'smoke.issue.recover', 'write', root, env, timeoutMs, calls,\n )\n smoke = read()\n } catch {\n // 与重试 mention 同一不变量:部署本体已回读验证,一次评论写入的抖动只让 smoke\n // 停在 pending(收敛为 verifying,由 --status 收口),不允许升级为回滚。\n }\n }\n if (noWait) return smoke\n const started = Date.now()\n const pollToTerminal = (): void => {\n while (smoke.status === 'pending' && Date.now() - started < smokeTimeoutMs) {\n Atomics.wait(new Int32Array(new SharedArrayBuffer(4)), 0, 0, 2_000)\n smoke = read()\n }\n }\n pollToTerminal()\n // 冷沙箱竞态:推送的 Skill 要数分钟才对运行时可见,任务报 `Skill not found` 不是\n // 真失败。在预算内用 mention 触发新 task(新沙箱有机会看到新 Skill),有限次重试。\n // 默认 30s 预算下基本轮不到重试;--wait / --smoke-timeout 放宽后才生效。\n const retryDelayMs = Math.min(20_000, Math.max(500, Math.floor(smokeTimeoutMs / 12)))\n let retries = 0\n while (smoke.status === 'failed' && smoke.classification === 'skills-not-visible' &&\n retries < 3 && Date.now() - started < smokeTimeoutMs) {\n Atomics.wait(new Int32Array(new SharedArrayBuffer(4)), 0, 0, retryDelayMs)\n try {\n runProvider(\n command, scopedArgs(plan, [\n 'issue', 'comment', 'add', issueId,\n '--content', `[@DTA load smoke](mention://agent/${agentId}) Skills were not yet visible in the sandbox; re-run the deployment verification exactly as specified in this Issue description.`,\n '--output', 'json',\n ]), 'smoke.issue.retry', 'write', root, env, timeoutMs, calls,\n )\n } catch {\n // 一次评论写入的抖动不允许升级为对已验证部署的回滚:失败已记入 calls,\n // 停止重试并保持当前 smoke 判定(skills-not-visible → verifying)。\n break\n }\n retries += 1\n // mention 触发的新 run 在平台上是异步创建的:只有当最新 run 的 taskId 变化后\n // 才重新判定;等不到新 run 就停手——绝不因为还读到旧终态 run 而重复 mention。\n const staleTaskId = smoke.taskId\n let sawNewRun = false\n while (Date.now() - started < smokeTimeoutMs) {\n Atomics.wait(new Int32Array(new SharedArrayBuffer(4)), 0, 0, 2_000)\n smoke = read()\n if (smoke.taskId && smoke.taskId !== staleTaskId) { sawNewRun = true; break }\n }\n if (!sawNewRun) break\n pollToTerminal()\n }\n if (smoke.status === 'pending' && !smoke.taskDiagnostic) {\n const detail = smoke.taskId\n ? `task ${smoke.taskId} 在 ${smokeTimeoutMs}ms 内未进入终态(当前 ${smoke.taskStatus || 'unknown'})`\n : `Issue ${issueId} 在 ${smokeTimeoutMs}ms 内未创建关联 task`\n return { ...smoke, taskDiagnostic: detail }\n }\n return smoke\n}\n\n/**\n * Judge a smoke run from positive evidence instead of a tool-name whitelist. The old judge\n * required every tool_use to match hardcoded `skill`/`write`/`bash` shapes, so a healthy\n * cloud runtime emitting `read_file`/`terminal` could never reach ready — and one extra\n * harmless tool failed the whole trace. Now: each required skill needs load evidence\n * (vocabulary tool_use or host-generated `**Skill loaded**` tool_result), the response is\n * taken from the Issue comments themselves first (platform readback, vocabulary-independent),\n * and only the explicit dws denylist is fatal. Unknown tool names are recorded, not judged.\n */\nfunction readSmoke(\n root: string,\n plan: MulticaDeploymentPlan,\n marker: string,\n issueId: string,\n agentId: string,\n requiredSkills: string[],\n runtimeProvider: string,\n command: string,\n env: NodeJS.ProcessEnv,\n timeoutMs: number,\n calls: MulticaDeploymentCall[],\n): MulticaDeploymentSmoke {\n const provider = runtimeProvider || ''\n const registered = vocabulariesForRuntimeProvider(provider)\n const active: readonly RuntimeTraceVocabulary[] = registered.length\n ? registered : allRuntimeVocabularies()\n const vocabularyIds = active.map((item) => item.id)\n const base = {\n ...emptySmoke('pending', requiredSkills), marker, markerHash: sha256(marker), issueId,\n runtimeProvider: provider, vocabularyIds,\n }\n const runs = jsonArray(runProvider(\n command, scopedArgs(plan, ['issue', 'runs', issueId, '--full-id', '--output', 'json']),\n 'smoke.issue.runs', 'read', root, env, timeoutMs, calls,\n ).stdout, 'smoke runs')\n const candidates = runs.filter((item) => !optionalString(item.agent_id) ||\n optionalString(item.agent_id) === agentId)\n const run = candidates.sort((a, b) => optionalString(b.created_at).localeCompare(optionalString(a.created_at)))[0]\n if (!run) return base\n const taskId = resourceId(run.id, 'smoke task.id')\n const taskStatus = optionalString(run.status)\n if (!['completed', 'failed', 'cancelled'].includes(taskStatus)) return {\n ...base, taskId, taskStatus,\n }\n const messages = jsonArray(runProvider(\n command, scopedArgs(plan, [\n 'issue', 'run-messages', taskId, '--issue', issueId, '--output', 'json',\n ]), 'smoke.issue.messages', 'read', root, env, timeoutMs, calls,\n ).stdout, 'smoke messages')\n const toolUses = messages.filter((item) => optionalString(item.type) === 'tool_use')\n const toolNames = [...new Set(toolUses.map((item) => optionalString(item.tool))\n .filter(Boolean))].sort()\n\n // Skill-load evidence: a native skill tool_use (the host mechanism itself), or the\n // host-generated `**Skill loaded**` banner in a skill-capable tool's tool_result. Two\n // things are deliberately NOT evidence: model text (a reply can claim anything), and\n // load ATTEMPTS — a failed cold-sandbox load emits the same \"Loading skill\" tool_use\n // before its error result, and a terminal/bash result echoes whatever the model printed.\n const evidence = new Set<string>()\n const attempted = new Set<string>()\n const evidenceTools = new Set<string>()\n const bannerTools = new Set(active.flatMap((item) => [...item.skillResultTools]))\n for (const item of messages) {\n const type = optionalString(item.type)\n const tool = optionalString(item.tool)\n if (type === 'tool_use') {\n const message: TraceToolMessage = { tool, input: smokeToolInput(item) }\n for (const vocabulary of active) {\n const name = vocabulary.skillLoadFromToolUse(message)\n if (name) { evidence.add(name); evidenceTools.add(tool) }\n const attempt = vocabulary.skillAttemptFromToolUse(message)\n if (attempt) { attempted.add(attempt); evidenceTools.add(tool) }\n }\n } else if (type === 'tool_result' && bannerTools.has(tool)) {\n for (const name of skillsLoadedInContent(optionalString(item.content))) {\n evidence.add(name)\n evidenceTools.add(tool)\n }\n }\n }\n const loadedSkills = requiredSkills.filter((name) => evidence.has(name)).sort()\n const skillEvidencePassed = loadedSkills.length === requiredSkills.length\n\n // dws is the DingTalk side-effect boundary: as a named tool or shelled out in a command.\n const commandTexts = toolUses.flatMap((item) => {\n const message: TraceToolMessage = {\n tool: optionalString(item.tool), input: smokeToolInput(item),\n }\n return active.map((vocabulary) => vocabulary.commandText(message)).filter(Boolean)\n })\n const forbiddenTools = toolNames.filter((name) => forbiddenSmokeTool(name))\n const forbiddenCommands = commandTexts.some((text) => commandInvokesDws(text))\n const knownTools = new Set(active.flatMap((item) => [...item.tools]))\n const unrecognizedTools = toolNames.filter((name) =>\n !knownTools.has(name) && !evidenceTools.has(name) && !forbiddenSmokeTool(name))\n\n // Response evidence, most stable source first: the Issue's own comments (platform\n // readback — no tool vocabulary involved), then trace texts, writes and shell heredocs.\n const matchesResponse = (value: string): boolean => smokeResponseMatches(\n value, marker, requiredSkills,\n )\n let commentContents: string[] = []\n try {\n commentContents = jsonArray(runProvider(\n command, scopedArgs(plan, [\n 'issue', 'comment', 'list', issueId, '--recent', '20', '--output', 'json',\n ]), 'smoke.issue.comments', 'read', root, env, timeoutMs, calls,\n ).stdout, 'smoke comments').map((item) => optionalString(item.content)).filter(Boolean)\n } catch {\n commentContents = [] // 旧版 provider CLI 可能没有 comment list;回退 trace 内取证\n }\n const texts = messages.filter((item) => optionalString(item.type) === 'text')\n .map((item) => optionalString(item.content)).filter(Boolean)\n const finalText = texts.at(-1) || ''\n const responseWrites: string[] = []\n const responseShells: string[] = []\n for (const item of toolUses) {\n const message: TraceToolMessage = {\n tool: optionalString(item.tool), input: smokeToolInput(item),\n }\n for (const vocabulary of active) {\n const write = vocabulary.writeEvidence(message)\n if (write && safeSmokeResponsePath(write.path)) responseWrites.push(write.content)\n const text = vocabulary.commandText(message)\n if (text && safeCombinedSmokeResponse(text, issueId, marker, requiredSkills)) {\n responseShells.push(JSON.stringify({\n schema: 'dta-multica-load-smoke@1', marker, loaded: requiredSkills,\n }))\n }\n }\n }\n const responseEvidence = [...commentContents, ...texts, ...responseWrites, ...responseShells]\n .find(matchesResponse) || ''\n const responsePassed = Boolean(responseEvidence)\n const toolTracePassed = skillEvidencePassed && !forbiddenTools.length && !forbiddenCommands\n\n const failures: string[] = []\n const failureDetails: MulticaFailureDetail[] = []\n if (taskStatus !== 'completed') failures.push(`smoke.task.${taskStatus || 'unknown'}`)\n if (!skillEvidencePassed) {\n failures.push('smoke.skill-load-evidence')\n const attemptedMissing = requiredSkills.filter((name) =>\n attempted.has(name) && !evidence.has(name))\n failureDetails.push({\n code: 'smoke.skill-load-evidence',\n expected: requiredSkills,\n actual: loadedSkills,\n hint: attemptedMissing.length\n ? `有装载尝试但无成功证据(tool_result 缺 **Skill loaded**): ${attemptedMissing.join(', ')};` +\n '尝试不算装载成功'\n : unrecognizedTools.length\n ? `轨迹里有词汇表不认识的工具名: ${unrecognizedTools.join(', ')};` +\n '若属新 runtime 词汇,需要在 multica-runtime-vocabulary 注册'\n : '轨迹中没有这些 Skill 的装载证据(tool_result 的 **Skill loaded** 或 Skill 工具调用)',\n })\n }\n for (const tool of forbiddenTools) failures.push(`smoke.forbidden-tool:${tool}`)\n if (forbiddenCommands) failures.push('smoke.forbidden-command:dws')\n if (!responsePassed) {\n failures.push('smoke.response')\n failureDetails.push({\n code: 'smoke.response',\n actual: `comments=${commentContents.length} texts=${texts.length} writes=${responseWrites.length}`,\n hint: '未在 Issue comment、回复文本或落盘文件中找到精确的 dta-multica-load-smoke@1 JSON',\n })\n }\n\n // 分类冷沙箱竞态:任务终态且缺装载证据,轨迹里出现 skill not found 类措辞 → 可重试,\n // 与「配置/模板真错了」区分开(B7 的两个误导方向都来自不区分这两态)。\n let classification: MulticaDeploymentSmoke['classification'] = ''\n if (!skillEvidencePassed) {\n const searchable = messages.map((item) => optionalString(item.content)).join('\\n')\n if (/skill[^\\n]{0,80}?not\\s+found|not\\s+found[^\\n]{0,60}?skill|skill\\s+view\\s+failed/i.test(searchable)) {\n classification = 'skills-not-visible'\n failures.unshift('smoke.skills-not-visible')\n failureDetails.unshift({\n code: 'smoke.skills-not-visible',\n hint: '推送的 Skill 尚未物化进沙箱(冷启动竞态,通常数分钟内自愈);' +\n '用 deploy --status --execute --yes 重试,或部署时用 --wait 放宽预算',\n })\n }\n }\n return {\n status: failures.length ? 'failed' : 'passed', marker, markerHash: sha256(marker),\n issueId, taskId, taskStatus, taskDiagnostic: remoteTaskDiagnostic(run), requiredSkills, loadedSkills,\n toolTracePassed, responsePassed, responseHash: sha256(responseEvidence || finalText), failures,\n runtimeProvider: provider, vocabularyIds, toolNames, unrecognizedTools, classification,\n failureDetails,\n }\n}\n\nfunction smokeToolInput(item: Record<string, unknown>): Record<string, unknown> {\n return item.input && typeof item.input === 'object' && !Array.isArray(item.input)\n ? item.input as Record<string, unknown> : {}\n}\n\nfunction smokeResponseMatches(value: string, marker: string, requiredSkills: string[]): boolean {\n try {\n const parsed = JSON.parse(value)\n return parsed?.schema === 'dta-multica-load-smoke@1' && parsed?.marker === marker &&\n stableStringify(Array.isArray(parsed?.loaded) ? [...parsed.loaded].sort() : []) ===\n stableStringify(requiredSkills)\n } catch { return false }\n}\n\nfunction safeCombinedSmokeResponse(\n command: string,\n issueId: string,\n marker: string,\n requiredSkills: string[],\n): boolean {\n const response = JSON.stringify({ schema: 'dta-multica-load-smoke@1', marker, loaded: requiredSkills })\n return command === [\n \"cat > ./reply.md << 'REPLY_EOF'\",\n response,\n 'REPLY_EOF',\n `multica issue comment add ${issueId} --content-file ./reply.md && rm ./reply.md`,\n ].join('\\n')\n}\n\nfunction safeSmokeResponsePath(value: string): boolean {\n const names = new Set(['reply.md', 'result.md', 'result.json'])\n if (value.startsWith('./')) return names.has(value.slice(2))\n // 裸文件名与 `./` 前缀等价:Agent 在 workdir 里写绝对路径、随后用裸名引用同一个文件是\n // 平台的常见写法。只放行精确 basename —— `foo/result.md` 与 `../result.md` 仍然落到\n // 下面的绝对路径分支并被拒绝,白名单没有变宽。\n if (!value.startsWith('/')) return names.has(value)\n if (!names.has(value.split('/').at(-1) || '')) return false\n return value.split('/').every((part) => !part ||\n (part !== '.' && part !== '..' && /^[A-Za-z0-9._-]+$/.test(part)))\n}\n\nfunction rollbackConfirmed(\n root: string,\n plan: MulticaDeploymentPlan,\n command: string,\n env: NodeJS.ProcessEnv,\n timeoutMs: number,\n calls: MulticaDeploymentCall[],\n rollback: RollbackContext,\n temp: string,\n): MulticaDeploymentReceipt['rollback'] {\n const report = emptyRollback(true)\n const attempt = (id: string, argv: string[]): void => {\n try {\n runProvider(command, scopedArgs(plan, argv), id, 'rollback', root, env, timeoutMs, calls)\n report.actions.push(id)\n } catch { report.failures.push(id) }\n }\n const assignmentAgentId = rollback.createdAgentId || rollback.updatedAgent?.id || ''\n if (rollback.assignmentChanged && assignmentAgentId) {\n attempt('rollback.agent.skills', [\n 'agent', 'skills', 'set', assignmentAgentId,\n '--skill-ids', rollback.previousAssignedIds.join(','), '--output', 'json',\n ])\n }\n if (rollback.createdAgentId) {\n attempt('rollback.agent.archive', ['agent', 'archive', rollback.createdAgentId, '--output', 'json'])\n } else if (rollback.updatedAgent) {\n const previous = rollback.updatedAgent\n const argv = [\n 'agent', 'update', previous.id, '--name', previous.name,\n '--instructions', previous.instructions, '--runtime-id', previous.runtimeId,\n ]\n if (previous.status) argv.push('--status', previous.status)\n argv.push('--output', 'json')\n attempt('rollback.agent.update', argv)\n if (previous.archived) {\n attempt('rollback.agent.archive', ['agent', 'archive', previous.id, '--output', 'json'])\n }\n }\n for (const previous of [...rollback.updatedSkills].reverse()) {\n const main = writeTemporaryContent(temp, `${previous.id}-SKILL.md`, previous.content)\n attempt(`rollback.skill.update:${previous.name}`, [\n 'skill', 'update', previous.id, '--content-file', main, '--output', 'json',\n ])\n try {\n const current = parseRemoteSkill(jsonObject(runProvider(\n command, scopedArgs(plan, ['skill', 'get', previous.id, '--output', 'json']),\n `rollback.skill.get:${previous.name}`, 'read', root, env, timeoutMs, calls,\n ).stdout, `rollback skill ${previous.name}`))\n const previousPaths = new Set(previous.files.map((file) => file.path))\n for (const extra of current.files.filter((file) => !previousPaths.has(file.path))) {\n attempt(`rollback.skill.file.delete:${previous.name}:${extra.path}`, [\n 'skill', 'files', 'delete', previous.id, extra.id,\n ])\n }\n } catch { report.failures.push(`rollback.skill.verify:${previous.name}`) }\n for (const file of previous.files) {\n const path = writeTemporaryContent(temp, `${previous.id}-${sha256(file.path).slice(0, 8)}`, file.content)\n attempt(`rollback.skill.file:${previous.name}:${file.path}`, [\n 'skill', 'files', 'upsert', previous.id, '--path', file.path,\n '--content-file', path, '--output', 'json',\n ])\n }\n }\n for (const id of [...rollback.createdSkillIds].reverse()) {\n attempt(`rollback.skill.delete:${id}`, ['skill', 'delete', id, '--yes'])\n }\n verifyRollback(\n root, plan, command, env, timeoutMs, calls, rollback, report,\n )\n report.passed = report.failures.length === 0\n return report\n}\n\nfunction verifyRollback(\n root: string,\n plan: MulticaDeploymentPlan,\n command: string,\n env: NodeJS.ProcessEnv,\n timeoutMs: number,\n calls: MulticaDeploymentCall[],\n rollback: RollbackContext,\n report: MulticaDeploymentReceipt['rollback'],\n): void {\n const verify = (id: string, action: () => boolean): void => {\n try { if (!action()) report.failures.push(id) }\n catch { report.failures.push(id) }\n }\n if (rollback.createdSkillIds.length || rollback.updatedSkills.length) {\n verify('rollback.verify.skills', () => {\n const catalog = jsonArray(runProvider(\n command, scopedArgs(plan, ['skill', 'list', '--output', 'json']),\n 'rollback.verify.skill-list', 'read', root, env, timeoutMs, calls,\n ).stdout, 'rollback skill list')\n const ids = new Set(catalog.map((item) => resourceId(item.id, 'rollback skill.id')))\n return rollback.createdSkillIds.every((id) => !ids.has(id))\n })\n for (const previous of rollback.updatedSkills) {\n verify(`rollback.verify.skill:${previous.name}`, () => {\n const restored = parseRemoteSkill(jsonObject(runProvider(\n command, scopedArgs(plan, ['skill', 'get', previous.id, '--output', 'json']),\n `rollback.verify.skill-get:${previous.name}`, 'read', root, env, timeoutMs, calls,\n ).stdout, `rollback verify skill ${previous.name}`))\n return restored.id === previous.id && restored.name === previous.name &&\n restored.hash === previous.hash\n })\n }\n }\n const agentId = rollback.createdAgentId || rollback.updatedAgent?.id || ''\n if (!agentId) return\n verify('rollback.verify.agent', () => {\n const restored = parseRemoteAgent(jsonObject(runProvider(\n command, scopedArgs(plan, ['agent', 'get', agentId, '--output', 'json']),\n 'rollback.verify.agent-get', 'read', root, env, timeoutMs, calls,\n ).stdout, 'rollback verify agent'))\n if (rollback.createdAgentId) return restored.archived\n const previous = rollback.updatedAgent\n return Boolean(previous && restored.id === previous.id && restored.name === previous.name &&\n restored.runtimeId === previous.runtimeId && restored.instructions === previous.instructions &&\n restored.archived === previous.archived)\n })\n if (rollback.assignmentChanged) {\n verify('rollback.verify.assignment', () => {\n const assigned = jsonArray(runProvider(\n command, scopedArgs(plan, [\n 'agent', 'skills', 'list', agentId, '--output', 'json',\n ]), 'rollback.verify.agent-skills', 'read', root, env, timeoutMs, calls,\n ).stdout, 'rollback verify assignments')\n const ids = assigned.map((item) => resourceId(item.id, 'rollback assignment.id')).sort()\n return stableStringify(ids) === stableStringify([...rollback.previousAssignedIds].sort())\n })\n }\n}\n\nfunction failureReceipt(\n root: string,\n workspace: DevelopmentWorkspaceView,\n source: DeploymentSource,\n plan: MulticaDeploymentPlan,\n preflight: MulticaWorkspaceInspection,\n operation: MulticaDeploymentOperation,\n calls: MulticaDeploymentCall[],\n rollback: MulticaDeploymentReceipt['rollback'],\n status: 'failed' | 'reconciling',\n failure: string,\n failureDetail?: MulticaFailureDetail,\n): MulticaDeploymentReceipt {\n const receiptId = `multica_receipt_${digest(stableStringify({\n operationId: operation.operationId, status, failure,\n })).slice(0, 24)}`\n return {\n $schema: MULTICA_DEPLOYMENT_SCHEMA,\n receiptId,\n operationId: operation.operationId,\n planId: plan.planId,\n action: plan.action,\n workspace: workspace.name,\n provider: 'multica',\n profile: plan.profile,\n status,\n passed: false,\n providerReady: false,\n idempotent: false,\n inspectionId: preflight.inspectionId,\n inspectionObservedHash: preflight.observedHash,\n inspectionEvidencePath: preflight.evidencePath,\n desiredHash: workspace.desiredHash,\n deploymentHash: source.deploymentHash,\n predicateRegistry: source.predicateRegistry,\n observedHash: '',\n agent: {\n id: operation.agentId,\n runtimeId: plan.expected.runtimeId,\n instructionsHash: source.instructionsHash,\n archived: false,\n action: 'unknown',\n },\n skills: source.skills.map((item) => ({\n id: '', name: item.name, sourceHash: item.hash, remoteHash: '', action: 'unknown',\n })),\n assignmentHash: '',\n calls: [...calls],\n smoke: emptySmoke('not-run', source.skills.map((item) => item.name)),\n rollback,\n failures: [failure, ...rollback.failures],\n failureDetails: failureDetail ? [failureDetail] : [],\n evidencePath: receiptRelativePath(workspace.name, receiptId),\n remoteRead: true,\n remoteWrite: calls.some((call) => call.kind === 'write' || call.kind === 'rollback'),\n triggerWrite: false,\n sideEffect: calls.some((call) => call.kind === 'write' || call.kind === 'rollback')\n ? 'multica-read-write' : 'multica-read',\n dingtalkSideEffect: false,\n }\n}\n\nexport function statusMulticaDeployment(\n start: string,\n name: string,\n options: MulticaDeploymentOptions = {},\n): MulticaDeploymentStatusReport {\n const info = inspectAgentProject(start, options.cliVersion || '')\n requireMulticaWorkspace(info.root, name, options.cliVersion || '')\n const loaded = loadOperationAndReceipt(info.root, name, options.operationId)\n if (!loaded) return {\n $schema: 'dingtalk-agent/multica-deployment-status@1',\n workspace: name, provider: 'multica', available: false, operationId: '', receiptId: '',\n status: 'missing', passed: false, providerReady: false,\n operationIntegrity: false, receiptIntegrity: false, reconciled: false,\n receiptFrozen: false, smokeStale: false, nextAction: '',\n failures: ['deployment.missing'], receipt: null,\n remoteRead: false, remoteWrite: false, triggerWrite: false,\n sideEffect: false, dingtalkSideEffect: false,\n }\n let { operation, receipt } = loaded\n let reconciled = false\n let remoteRead = false\n let remoteWrite = false\n if (options.execute) {\n if (!options.yes) throw new Error('deploy --status 远端 reconcile 必须同时传 --execute --yes')\n const command = options.command || options.env?.DTA_MULTICA_BIN || process.env.DTA_MULTICA_BIN || 'multica'\n const env = options.env || process.env\n const timeoutMs = positiveTimeout(options.timeoutMs, 30_000, 300_000)\n if (receipt.status === 'verifying' && receipt.smoke.issueId) {\n remoteRead = true\n let smokeReadback = readSmokeFromReceipt(\n info.root, receipt, command, env, timeoutMs,\n )\n let smoke = smokeReadback.smoke\n let calls = smokeReadback.calls\n // 冷沙箱竞态的收口入口:终态失败但分类为 skills-not-visible 时,补一次 mention\n // 触发新 task(唯一的写;如实上报 remoteWrite/sideEffect)。新 run 是异步创建的:\n // 以 taskId 变化为「新 run 出现」的判据再判定,等不到就按旧判定收场(仍 verifying),\n // 不再重复 mention。\n if (smoke.status === 'failed' && smoke.classification === 'skills-not-visible' &&\n receipt.agent.id) {\n const planLike = {\n profile: receipt.profile, expected: { workspaceId: operation.workspaceId },\n }\n const staleTaskId = smoke.taskId\n runProvider(\n command, scopedArgs(planLike, [\n 'issue', 'comment', 'add', receipt.smoke.issueId,\n '--content', `[@DTA load smoke](mention://agent/${receipt.agent.id}) Skills were not yet visible in the sandbox; re-run the deployment verification exactly as specified in this Issue description.`,\n '--output', 'json',\n ]), 'smoke.issue.retry', 'write', info.root, env, timeoutMs, calls,\n )\n remoteWrite = true\n const deadline = Date.now() + timeoutMs\n do {\n Atomics.wait(new Int32Array(new SharedArrayBuffer(4)), 0, 0, 2_000)\n smokeReadback = readSmokeFromReceipt(\n info.root, { ...receipt, calls }, command, env, timeoutMs,\n )\n smoke = smokeReadback.smoke\n calls = smokeReadback.calls\n } while ((smoke.status === 'pending' ||\n (Boolean(staleTaskId) && smoke.taskId === staleTaskId)) && Date.now() < deadline)\n }\n const nextStatus: DeploymentStatus = smoke.status === 'passed' ? 'ready'\n : smoke.status === 'pending' ? 'verifying'\n : smoke.classification === 'skills-not-visible' ? 'verifying' : 'failed'\n receipt = { ...receipt, calls, smoke, status: nextStatus,\n passed: smoke.status === 'passed', providerReady: smoke.status === 'passed',\n failures: [...smoke.failures],\n failureDetails: [...smoke.failureDetails] }\n reconciled = true\n persistReceiptAndState(info.root, showDevelopmentWorkspace(info.root, name), operation, receipt)\n } else if (receipt.status === 'reconciling') {\n remoteRead = true\n const source = loadDeploymentSource(info.root)\n const calls = [...receipt.calls]\n const reconciledTarget = reconcileRemoteTarget(\n info.root, name, operation, source, command, env, timeoutMs, calls,\n )\n const inspection = reconciledTarget.inspection\n const snapshot = reconciledTarget.snapshot\n const matched = Boolean(snapshot && remoteMatchesDesired(\n snapshot, source, operation.runtimeId,\n ))\n const safelyBound = Boolean(snapshot?.agent && inspection.passed &&\n snapshot.agent.id === operation.agentId &&\n snapshot.agent.name === info.project.displayName &&\n snapshot.agent.runtimeId === operation.runtimeId &&\n snapshot.agent.instructions === source.instructions && !snapshot.agent.archived)\n receipt = { ...receipt,\n calls,\n inspectionId: inspection.inspectionId,\n inspectionObservedHash: inspection.observedHash,\n inspectionEvidencePath: inspection.evidencePath,\n agent: { ...receipt.agent, id: operation.agentId },\n status: matched || safelyBound ? 'verifying' : 'failed',\n failures: matched ? ['smoke.required-after-recovery']\n : safelyBound ? ['apply.required-after-recovery']\n : reconciledTarget.failures.length ? reconciledTarget.failures\n : inspection.passed ? ['reconcile.remote-mismatch'] : [...inspection.failures],\n }\n reconciled = true\n persistReceiptAndState(info.root, showDevelopmentWorkspace(info.root, name), operation, receipt)\n }\n operation = loadOperationAndReceipt(info.root, name, operation.operationId)?.operation || operation\n }\n const receiptFrozen = !options.execute\n return {\n $schema: 'dingtalk-agent/multica-deployment-status@1',\n workspace: name,\n provider: 'multica',\n available: true,\n operationId: operation.operationId,\n receiptId: receipt.receiptId,\n status: receipt.status,\n passed: receipt.passed,\n providerReady: receipt.providerReady,\n operationIntegrity: true,\n receiptIntegrity: true,\n reconciled,\n receiptFrozen,\n smokeStale: receiptFrozen && receipt.status === 'verifying',\n nextAction: ['verifying', 'reconciling'].includes(receipt.status)\n ? `dta deploy --workspace ${name} --status --operation-id ${operation.operationId} --execute --yes`\n : '',\n failures: [...receipt.failures],\n receipt,\n remoteRead,\n remoteWrite,\n triggerWrite: false,\n sideEffect: remoteWrite ? 'multica-read-write' : remoteRead ? 'multica-read' : false,\n dingtalkSideEffect: false,\n }\n}\n\nexport function listMulticaDeployments(\n start: string, name: string, cliVersion = '',\n): MulticaDeploymentList {\n const info = inspectAgentProject(start, cliVersion)\n requireMulticaWorkspace(info.root, name, cliVersion)\n const directory = safeProjectPath(info.root, receiptsRoot(name), false)\n const deployments: MulticaDeploymentList['deployments'] = []\n if (existsSync(directory)) {\n for (const entry of readdirSync(directory, { withFileTypes: true })\n .filter((item) => item.isFile() && item.name.endsWith('.json'))\n .sort((a, b) => b.name.localeCompare(a.name))) {\n const path = join(directory, entry.name)\n if (lstatSync(path).isSymbolicLink()) throw new Error('Multica Receipt 不能是符号链接')\n const candidate = parseReceipt(readJson(path, 'Multica Receipt'))\n const loaded = loadOperationAndReceipt(info.root, name, candidate.operationId)\n if (!loaded || loaded.receipt.receiptId !== candidate.receiptId ||\n safeProjectPath(info.root, loaded.receipt.evidencePath, true) !== path) {\n throw new Error('Multica deployment 历史 Receipt 绑定不一致')\n }\n const receipt = loaded.receipt\n deployments.push({\n receiptId: receipt.receiptId,\n operationId: receipt.operationId,\n action: receipt.action,\n status: receipt.status,\n passed: receipt.passed,\n providerReady: receipt.providerReady,\n planId: receipt.planId,\n deploymentHash: receipt.deploymentHash,\n })\n }\n }\n return {\n $schema: 'dingtalk-agent/multica-deployment-list@1',\n workspace: name, provider: 'multica', deployments,\n remoteRead: false, remoteWrite: false, triggerWrite: false,\n sideEffect: false, dingtalkSideEffect: false,\n }\n}\n\nfunction reconcileRemoteTarget(\n root: string,\n name: string,\n operation: MulticaDeploymentOperation,\n source: DeploymentSource,\n command: string,\n env: NodeJS.ProcessEnv,\n timeoutMs: number,\n calls: MulticaDeploymentCall[],\n): { inspection: MulticaWorkspaceInspection; snapshot: RemoteSnapshot | null; failures: string[] } {\n if (operation.agentId) {\n const inspection = inspectMulticaWorkspace(root, name, {\n execute: true, yes: true, persist: true, command, env, timeoutMs,\n agentIdOverride: operation.agentId,\n }) as MulticaWorkspaceInspection\n appendInspectionCalls(inspection, 'reconcile.scope', calls)\n const snapshot = inspection.passed ? readRemoteSnapshot(\n root, source, inspection, command, env, timeoutMs, calls,\n ) : null\n return { inspection, snapshot, failures: [] }\n }\n\n const discovery = inspectMulticaWorkspace(root, name, {\n execute: true, yes: true, persist: false, command, env, timeoutMs,\n }) as MulticaWorkspaceInspection\n appendInspectionCalls(discovery, 'reconcile.discovery', calls)\n const candidates = discovery.resources.agentCandidates\n if (!candidates.length) {\n return { inspection: discovery, snapshot: null, failures: ['reconcile.agent-not-found'] }\n }\n if (candidates.length > 10) {\n return { inspection: discovery, snapshot: null, failures: ['reconcile.agent-candidate-budget'] }\n }\n const projectName = inspectAgentProject(root).project.displayName\n const matches: Array<{ id: string }> = []\n for (const [index, candidate] of candidates.entries()) {\n const inspection = inspectMulticaWorkspace(root, name, {\n execute: true, yes: true, persist: false, command, env, timeoutMs,\n agentIdOverride: candidate.id,\n }) as MulticaWorkspaceInspection\n appendInspectionCalls(inspection, `reconcile.candidate.${index + 1}`, calls)\n if (!inspection.passed) continue\n const snapshot = readRemoteSnapshot(\n root, source, inspection, command, env, timeoutMs, calls,\n )\n if (snapshot.agent && snapshot.agent.id === candidate.id &&\n snapshot.agent.name === projectName && snapshot.agent.runtimeId === operation.runtimeId &&\n snapshot.agent.instructions === source.instructions && !snapshot.agent.archived) {\n matches.push({ id: candidate.id })\n }\n }\n if (matches.length !== 1) {\n return {\n inspection: discovery,\n snapshot: null,\n failures: [matches.length ? 'reconcile.agent-ambiguous' : 'reconcile.agent-fingerprint-mismatch'],\n }\n }\n operation.agentId = matches[0].id\n const inspection = inspectMulticaWorkspace(root, name, {\n execute: true, yes: true, persist: true, command, env, timeoutMs,\n agentIdOverride: operation.agentId,\n }) as MulticaWorkspaceInspection\n appendInspectionCalls(inspection, 'reconcile.bound', calls)\n const snapshot = inspection.passed ? readRemoteSnapshot(\n root, source, inspection, command, env, timeoutMs, calls,\n ) : null\n return { inspection, snapshot, failures: inspection.passed ? [] : [...inspection.failures] }\n}\n\nfunction appendInspectionCalls(\n inspection: MulticaWorkspaceInspection,\n prefix: string,\n calls: MulticaDeploymentCall[],\n): void {\n calls.push(...inspection.calls.map((call) => ({\n id: `${prefix}.${call.id}`,\n kind: 'read' as const,\n argv: [...call.argv],\n exitCode: call.exitCode,\n stdoutHash: call.stdoutHash,\n stderrHash: call.stderrHash,\n passed: call.passed,\n ambiguous: false,\n })))\n}\n\nfunction readSmokeFromReceipt(\n root: string,\n receipt: MulticaDeploymentReceipt,\n command: string,\n env: NodeJS.ProcessEnv,\n timeoutMs: number,\n): { smoke: MulticaDeploymentSmoke; calls: MulticaDeploymentCall[] } {\n const plan = {\n profile: receipt.profile,\n expected: { workspaceId: '', runtimeId: receipt.agent.runtimeId },\n } as MulticaDeploymentPlan\n const operation = loadOperationAndReceipt(root, receipt.workspace, receipt.operationId)?.operation\n if (!operation) throw new Error('Multica deployment operation 缺失')\n plan.expected.workspaceId = operation.workspaceId\n const calls = [...receipt.calls]\n const markerValue = receipt.smoke.marker\n if (!markerValue || sha256(markerValue) !== receipt.smoke.markerHash) {\n return { calls, smoke: {\n ...receipt.smoke,\n status: 'failed',\n failures: ['smoke.marker-not-recoverable'],\n } }\n }\n const smoke = readSmoke(\n root, plan, markerValue, receipt.smoke.issueId, receipt.agent.id,\n receipt.smoke.requiredSkills, receipt.smoke.runtimeProvider || '',\n command, env, timeoutMs, calls,\n )\n return { smoke, calls }\n}\n\nfunction persistReceiptAndState(\n root: string,\n workspace: DevelopmentWorkspaceView,\n operation: MulticaDeploymentOperation,\n receipt: MulticaDeploymentReceipt,\n): void {\n assertReportRedacted(receipt)\n const receiptPath = safeProjectPath(root, receipt.evidencePath, false)\n atomicJson(receiptPath, receipt)\n const receiptHash = sha256(readFileSync(receiptPath))\n operation.status = receipt.status\n operation.agentId = receipt.agent.id || operation.agentId\n operation.receiptId = receipt.receiptId\n operation.receiptPath = receipt.evidencePath\n operation.calls = receipt.calls\n operation.failures = receipt.failures\n operation.updatedAt = new Date().toISOString()\n persistOperation(root, operation)\n const operationPath = operationRelativePath(workspace.name, operation.operationId)\n const operationHash = sha256(readFileSync(safeProjectPath(root, operationPath, true)))\n const binding = {\n $schema: 'dingtalk-agent/multica-deployment-pointer@1',\n operationId: operation.operationId,\n operationPath,\n operationHash,\n receiptId: receipt.receiptId,\n receiptPath: receipt.evidencePath,\n receiptHash,\n }\n atomicJson(safeProjectPath(root, operationBindingPath(\n workspace.name, operation.operationId,\n ), false), binding)\n atomicJson(safeProjectPath(root, latestDeploymentPointer(workspace.name), false), binding)\n const stateStatus = receipt.status === 'ready' ? 'ready'\n : receipt.status === 'retired' ? 'retired'\n : receipt.status === 'failed' ? 'failed' : 'verifying'\n const state: DevelopmentWorkspaceState = {\n $schema: 'dingtalk-agent/workspace-state@1',\n workspace: workspace.name,\n provider: 'multica',\n status: stateStatus,\n binding: {\n ...(workspace.state?.binding || {}),\n profile: receipt.profile,\n remoteWorkspaceId: operation.workspaceId,\n runtimeId: operation.runtimeId,\n agentId: receipt.agent.id || operation.agentId,\n deploymentHash: receipt.deploymentHash,\n inspectionId: receipt.inspectionId,\n inspectionObservedHash: receipt.inspectionObservedHash,\n inspectionEvidencePath: receipt.inspectionEvidencePath,\n receiptPath: receipt.evidencePath,\n operationId: operation.operationId,\n sourceHash: workspace.sourceHash,\n },\n desiredHash: workspace.desiredHash,\n observedHash: receipt.inspectionObservedHash || receipt.observedHash,\n lastPlanId: receipt.planId,\n lastReceiptId: receipt.receiptId,\n lastEvalId: receipt.smoke.taskId,\n }\n atomicJson(safeProjectPath(root, join(\n WORKSPACE_STATE_ROOT, `${workspace.name}.json`,\n ), false), state)\n}\n\nfunction createOperation(\n operationId: string, plan: MulticaDeploymentPlan,\n): MulticaDeploymentOperation {\n return {\n $schema: 'dingtalk-agent/multica-deployment-operation@1',\n operationId,\n planId: plan.planId,\n workspace: plan.workspace,\n action: plan.action,\n status: 'applying',\n profile: plan.profile,\n workspaceId: plan.expected.workspaceId,\n runtimeId: plan.expected.runtimeId,\n agentId: plan.expected.agentId,\n deploymentHash: plan.deploymentHash,\n ambiguousAction: '',\n receiptId: '',\n receiptPath: '',\n calls: [],\n failures: [],\n updatedAt: new Date().toISOString(),\n }\n}\n\nfunction persistOperation(root: string, operation: MulticaDeploymentOperation): void {\n assertReportRedacted(operation)\n atomicJson(safeProjectPath(root, operationRelativePath(\n operation.workspace, operation.operationId,\n ), false), operation)\n}\n\nfunction loadOperationAndReceipt(\n root: string,\n name: string,\n operationId = '',\n): { operation: MulticaDeploymentOperation; receipt: MulticaDeploymentReceipt } | null {\n let operationPath = ''\n let expectedOperationHash = ''\n let receiptPath = ''\n let expectedReceiptHash = ''\n let expectedOperationId = ''\n let expectedReceiptId = ''\n const requestedOperationId = operationId ? resourceId(operationId, 'operation-id') : ''\n const pointerPath = safeProjectPath(root, requestedOperationId\n ? operationBindingPath(name, requestedOperationId)\n : latestDeploymentPointer(name), false)\n if (!existsSync(pointerPath)) {\n if (requestedOperationId) throw new Error('Multica deployment operation binding 不存在')\n return null\n }\n const pointer = readJson(pointerPath, 'Multica deployment pointer') as Record<string, unknown>\n if (pointer.$schema !== 'dingtalk-agent/multica-deployment-pointer@1') {\n throw new Error('Multica deployment pointer schema 非法')\n }\n expectedOperationId = resourceId(pointer.operationId, 'pointer.operationId')\n expectedReceiptId = resourceId(pointer.receiptId, 'pointer.receiptId')\n if (requestedOperationId && expectedOperationId !== requestedOperationId) {\n throw new Error('Multica deployment operation binding ID 不一致')\n }\n operationPath = stringField(pointer.operationPath, 'pointer.operationPath')\n expectedOperationHash = stringField(pointer.operationHash, 'pointer.operationHash')\n receiptPath = stringField(pointer.receiptPath, 'pointer.receiptPath')\n expectedReceiptHash = stringField(pointer.receiptHash, 'pointer.receiptHash')\n const operationFile = safeProjectPath(root, operationPath, true)\n const operationBytes = readFileSync(operationFile)\n if (expectedOperationHash && sha256(operationBytes) !== expectedOperationHash) {\n throw new Error('Multica deployment operation hash 不一致')\n }\n const operation = parseOperation(JSON.parse(operationBytes.toString('utf8')))\n if (operation.workspace !== name || operation.operationId !== expectedOperationId) {\n throw new Error('Multica deployment operation 绑定不一致')\n }\n if (!receiptPath) receiptPath = operation.receiptPath\n if (!receiptPath) throw new Error('Multica deployment operation 尚无 Receipt')\n const receiptFile = safeProjectPath(root, receiptPath, true)\n const receiptBytes = readFileSync(receiptFile)\n if (expectedReceiptHash && sha256(receiptBytes) !== expectedReceiptHash) {\n throw new Error('Multica deployment Receipt hash 不一致')\n }\n const receipt = parseReceipt(JSON.parse(receiptBytes.toString('utf8')))\n if (receipt.operationId !== operation.operationId || receipt.workspace !== name ||\n receipt.receiptId !== expectedReceiptId || receipt.evidencePath !== receiptPath ||\n operation.receiptId !== receipt.receiptId || operation.receiptPath !== receiptPath ||\n operation.planId !== receipt.planId || operation.action !== receipt.action ||\n operation.profile !== receipt.profile || operation.deploymentHash !== receipt.deploymentHash) {\n throw new Error('Multica deployment Receipt 绑定不一致')\n }\n assertReportRedacted({ operation, receipt })\n return { operation, receipt }\n}\n\nfunction loadLatestReceipt(\n root: string, name: string,\n): MulticaDeploymentReceipt | null {\n // A missing pointer means this is the first deployment. Once a pointer exists,\n // any integrity or binding failure is evidence corruption and must fail closed.\n return loadOperationAndReceipt(root, name)?.receipt || null\n}\n\nfunction parseOperation(value: unknown): MulticaDeploymentOperation {\n const item = objectValue(value, 'Multica deployment operation')\n if (item.$schema !== 'dingtalk-agent/multica-deployment-operation@1') {\n throw new Error('Multica deployment operation schema 非法')\n }\n return item as unknown as MulticaDeploymentOperation\n}\n\nfunction parseReceipt(value: unknown): MulticaDeploymentReceipt {\n const item = objectValue(value, 'Multica deployment Receipt')\n if (item.$schema !== MULTICA_DEPLOYMENT_SCHEMA) {\n throw new Error('Multica deployment Receipt schema 非法')\n }\n return item as unknown as MulticaDeploymentReceipt\n}\n\nfunction runProvider(\n command: string,\n argv: string[],\n id: string,\n kind: MulticaDeploymentCall['kind'],\n cwd: string,\n env: NodeJS.ProcessEnv,\n timeoutMs: number,\n calls: MulticaDeploymentCall[],\n): ProviderResult {\n const budget = deploymentWriteBudgets.get(calls)\n if (kind === 'write' && budget && calls.filter((call) => call.kind === 'write').length >= budget.forward) {\n throw new DeploymentFailure('budget.forward-exhausted')\n }\n if (kind === 'rollback' && budget && calls.filter((call) => call.kind === 'rollback').length >= budget.rollback) {\n throw new DeploymentFailure('budget.rollback-exhausted')\n }\n const run = spawnSync(command, argv, {\n cwd, env: sanitizeProviderEnv(env).env, encoding: 'utf8', timeout: timeoutMs,\n maxBuffer: 32 * 1024 * 1024, stdio: ['ignore', 'pipe', 'pipe'],\n })\n const stdout = String(run.stdout || '')\n const stderr = String(run.stderr || '')\n const exitCode = typeof run.status === 'number' ? run.status : 1\n const ambiguous = Boolean(run.error && (run.error as NodeJS.ErrnoException).code === 'ETIMEDOUT')\n const passed = !run.error && exitCode === 0\n calls.push({\n id, kind, argv: redactArgv(argv), exitCode,\n stdoutHash: sha256(stdout), stderrHash: sha256(stderr), passed, ambiguous,\n })\n if (!passed) {\n emitProviderDiagnostic(id, exitCode, stderr || stdout)\n throw new DeploymentFailure(`command.${id}`, ambiguous)\n }\n return { stdout, stderr }\n}\n\nfunction scopedArgs(\n plan: { profile: string; expected: { workspaceId: string } },\n args: string[],\n): string[] {\n return ['--profile', plan.profile, '--workspace-id', plan.expected.workspaceId, ...args]\n}\n\nfunction redactArgv(argv: string[]): string[] {\n const redactNext = new Set([\n '--instructions', '--description', '--title', '--content', '--content-file',\n '--custom-env', '--mcp-config',\n ])\n const result: string[] = []\n let redact = false\n for (const arg of argv) {\n if (redact) {\n result.push(`[redacted:${sha256(arg).slice(0, 12)}]`)\n redact = false\n continue\n }\n result.push(arg)\n if (redactNext.has(arg)) redact = true\n }\n return result\n}\n\nfunction parseRemoteSkill(value: Record<string, unknown>): RemoteSkill {\n const id = resourceId(value.id, 'remote skill.id')\n const name = stringField(value.name, 'remote skill.name')\n const content = optionalString(value.content)\n const rawFiles = Array.isArray(value.files) ? value.files : []\n if (rawFiles.length > MAX_SKILL_SUPPORTING_FILES) {\n throw new Error(`远端 Skill supporting files 超过 ${MAX_SKILL_SUPPORTING_FILES} 个`)\n }\n const files = rawFiles.map((raw, index) => {\n const item = objectValue(raw, `remote skill.files[${index}]`)\n const fileContent = optionalString(item.content)\n const path = safeSkillPath(stringField(item.path, `remote skill.files[${index}].path`))\n return {\n id: resourceId(item.id, `remote skill.files[${index}].id`),\n path, content: fileContent, hash: sha256(fileContent),\n }\n }).sort((a, b) => a.path.localeCompare(b.path))\n const hash = skillTreeHash(content, files.map((item) => ({ path: item.path, hash: item.hash })))\n return { id, name, content, files, hash }\n}\n\nfunction parseRemoteAgent(value: Record<string, unknown>): RemoteAgent {\n return {\n id: resourceId(value.id, 'remote agent.id'),\n name: stringField(value.name, 'remote agent.name'),\n runtimeId: resourceId(value.runtime_id, 'remote agent.runtime_id'),\n instructions: optionalString(value.instructions),\n status: optionalString(value.status),\n archived: Boolean(optionalString(value.archived_at)) || value.archived === true,\n }\n}\n\nfunction remoteMatchesDesired(\n snapshot: RemoteSnapshot, source: DeploymentSource, runtimeId: string,\n): boolean {\n if (!snapshot.agent || snapshot.agent.archived || snapshot.agent.runtimeId !== runtimeId ||\n snapshot.agent.instructions !== source.instructions) return false\n const ids: string[] = []\n for (const local of source.skills) {\n const remote = snapshot.skills.get(local.name)\n if (!remote || remote.hash !== local.hash) return false\n ids.push(remote.id)\n }\n return stableStringify(ids.sort()) === stableStringify([...snapshot.assignedIds].sort())\n}\n\nfunction deploymentObservedHash(snapshot: RemoteSnapshot, inspectionId: string): string {\n return digest(stableStringify({\n inspectionId,\n agent: snapshot.agent ? {\n id: snapshot.agent.id,\n runtimeId: snapshot.agent.runtimeId,\n instructionsHash: sha256(snapshot.agent.instructions),\n archived: snapshot.agent.archived,\n } : null,\n skills: [...snapshot.skills.entries()].map(([name, skill]) => ({\n name, id: skill?.id || '', hash: skill?.hash || '',\n })).sort((a, b) => a.name.localeCompare(b.name)),\n assignments: [...snapshot.assignedIds].sort(),\n }))\n}\n\nfunction skillTreeHash(content: string, files: Array<{ path: string; hash: string }>): string {\n return digest(stableStringify({\n main: sha256(content),\n files: [...files].sort((a, b) => a.path.localeCompare(b.path)),\n }))\n}\n\nfunction frontmatterName(content: string): string {\n const block = content.match(/^---\\s*\\n([\\s\\S]*?)\\n---(?:\\s*\\n|$)/)\n if (!block) return ''\n const match = block[1].match(/^name:\\s*[\"']?([^\"'\\n]+?)[\"']?\\s*$/m)\n return match ? match[1].trim() : ''\n}\n\nfunction rejectCredentialMaterial(content: string, label: string): void {\n const patterns = [\n /-----BEGIN (?:RSA |EC |OPENSSH )?PRIVATE KEY-----/,\n /\\bBearer\\s+[A-Za-z0-9._~+\\/-]{20,}/i,\n /\\b(?:sk|pat|token)[-_][A-Za-z0-9_-]{24,}\\b/i,\n /(?:access[_-]?token|client[_-]?secret|password)\\s*[:=]\\s*[\"']?(?!<|\\*|replace|example|redacted)[A-Za-z0-9._~+\\/-]{16,}/i,\n ]\n if (patterns.some((pattern) => pattern.test(content))) {\n throw new Error(`${label} 检测到疑似真实凭据,拒绝部署`)\n }\n}\n\nfunction assertReportRedacted(value: unknown): void {\n const source = JSON.stringify(value)\n if (/-----BEGIN (?:RSA |EC |OPENSSH )?PRIVATE KEY-----|\\bBearer\\s+[A-Za-z0-9._~+\\/-]{20,}|\\b(?:sk|pat|token)[-_][A-Za-z0-9_-]{24,}\\b/i.test(source)) {\n throw new Error('Multica deployment evidence 脱敏失败')\n }\n if (/\"(?:instructions|content|stdout|stderr|email|serverUrl|server_url)\"\\s*:/i.test(source)) {\n throw new Error('Multica deployment evidence 包含禁止的原始内容字段')\n }\n}\n\nfunction emptySmoke(\n status: MulticaDeploymentSmoke['status'], requiredSkills: string[],\n): MulticaDeploymentSmoke {\n return {\n status, marker: '', markerHash: '', issueId: '', taskId: '', taskStatus: '', taskDiagnostic: '',\n requiredSkills: [...requiredSkills].sort(), loadedSkills: [],\n toolTracePassed: false, responsePassed: false, responseHash: '', failures: [],\n runtimeProvider: '', vocabularyIds: [], toolNames: [], unrecognizedTools: [],\n classification: '', failureDetails: [],\n }\n}\n\nfunction emptyRollback(attempted: boolean): MulticaDeploymentReceipt['rollback'] {\n return { attempted, passed: !attempted, actions: [], failures: [] }\n}\n\nfunction writeTemporaryContent(root: string, name: string, content: string): string {\n const path = join(root, `${safeFileName(name)}.txt`)\n writeFileSync(path, content, { mode: 0o600 })\n return path\n}\n\nfunction safeFileName(value: string): string {\n return value.replace(/[^A-Za-z0-9._-]/g, '_').slice(0, 120)\n}\n\nfunction readUtf8(path: string, label: string, limit: number): string {\n const bytes = readFileSync(path)\n if (bytes.length > limit) throw new Error(`${label} 超过 ${limit} bytes`)\n if (bytes.includes(0)) throw new Error(`${label} 不是 UTF-8 文本`)\n const content = bytes.toString('utf8')\n if (Buffer.from(content, 'utf8').compare(bytes) !== 0) throw new Error(`${label} 不是合法 UTF-8`)\n return content\n}\n\nfunction readJson(path: string, label: string): unknown {\n if (lstatSync(path).isSymbolicLink()) throw new Error(`${label} 不能是符号链接`)\n try { return JSON.parse(readFileSync(path, 'utf8')) }\n catch { throw new Error(`${label} 不是合法 JSON`) }\n}\n\nfunction jsonObject(value: string | unknown, label: string): Record<string, unknown> {\n let parsed = value\n if (typeof value === 'string') {\n try { parsed = JSON.parse(value) } catch { throw new DeploymentFailure(`json.${label}`) }\n }\n return objectValue(parsed, label)\n}\n\nfunction jsonArray(value: string, label: string): Record<string, unknown>[] {\n let parsed: unknown\n try { parsed = JSON.parse(value) } catch { throw new DeploymentFailure(`json.${label}`) }\n if (!Array.isArray(parsed) || parsed.some((item) => !item || typeof item !== 'object' || Array.isArray(item))) {\n throw new DeploymentFailure(`shape.${label}`)\n }\n return parsed as Record<string, unknown>[]\n}\n\nfunction objectValue(value: unknown, label: string): Record<string, unknown> {\n if (!value || typeof value !== 'object' || Array.isArray(value)) {\n throw new Error(`${label} 必须是 object`)\n }\n return value as Record<string, unknown>\n}\n\nfunction stringField(value: unknown, label: string): string {\n if (typeof value !== 'string' || !value) throw new Error(`${label} 必须是非空字符串`)\n return value\n}\n\nfunction optionalString(value: unknown): string {\n return typeof value === 'string' ? value : ''\n}\n\nfunction safeRemoteOutput(value: string, maxBytes: number): string {\n const redacted = value\n .replace(/-----BEGIN (?:RSA |EC |OPENSSH )?PRIVATE KEY-----[\\s\\S]*?-----END (?:RSA |EC |OPENSSH )?PRIVATE KEY-----/g,\n '[redacted-private-key]')\n .replace(/\\bBearer\\s+[A-Za-z0-9._~+\\/-]{20,}/gi, 'Bearer [redacted]')\n .replace(/\\b(?:mul_|mcn_|sk-)[A-Za-z0-9._~+\\/-]{12,}/gi, '[redacted-token]')\n const bytes = Buffer.from(redacted, 'utf8')\n return bytes.length <= maxBytes ? redacted : `${bytes.subarray(0, maxBytes).toString('utf8')}…`\n}\n\nfunction uniqueCalls(calls: MulticaDeploymentCall[]): MulticaDeploymentCall[] {\n const seen = new Set<string>()\n return calls.filter((call) => {\n const key = stableStringify({\n id: call.id,\n kind: call.kind,\n argv: call.argv,\n exitCode: call.exitCode,\n stdoutHash: call.stdoutHash,\n stderrHash: call.stderrHash,\n passed: call.passed,\n ambiguous: call.ambiguous,\n })\n if (seen.has(key)) return false\n seen.add(key)\n return true\n })\n}\n\nfunction remoteTaskDiagnostic(task: Record<string, unknown> | undefined): string {\n if (!task) return ''\n const values: string[] = []\n const add = (label: string, value: unknown): void => {\n if (typeof value === 'string' && value.trim()) values.push(`${label}=${value.trim()}`)\n else if (typeof value === 'number' || typeof value === 'boolean') values.push(`${label}=${value}`)\n else if (value && typeof value === 'object' && !Array.isArray(value)) {\n const nested = value as Record<string, unknown>\n for (const key of ['code', 'category', 'message', 'reason', 'detail']) {\n if (nested[key] !== undefined) add(`${label}.${key}`, nested[key])\n }\n }\n }\n for (const key of [\n 'error', 'error_message', 'failure_reason', 'status_message', 'reason', 'message', 'detail',\n ]) {\n if (task[key] !== undefined) add(key, task[key])\n }\n return safeRemoteOutput(values.join('; '), 2_000)\n}\n\nfunction resourceId(value: unknown, label: string): string {\n const item = stringField(value, label)\n if (!/^[A-Za-z0-9][A-Za-z0-9._:-]{1,127}$/.test(item) ||\n /^(?:sk-|bearer|token[-_])/i.test(item)) {\n throw new Error(`${label} 不是安全稳定 ID`)\n }\n return item\n}\n\nfunction safeSkillPath(value: string): string {\n if (!value || value === 'SKILL.md' || value.startsWith('/') || value.includes('\\\\') ||\n value.split('/').some((part) => !part || part === '.' || part === '..')) {\n throw new Error(`远端 Skill supporting file 路径非法: ${value}`)\n }\n return value\n}\n\nfunction requireMulticaWorkspace(\n start: string, name: string, cliVersion = '',\n): DevelopmentWorkspaceView {\n const workspace = showDevelopmentWorkspace(start, name, cliVersion)\n if (workspace.provider.kind !== 'multica' || workspace.legacy) {\n throw new Error(`Workspace ${name} 不是 multica Provider;deploy 不执行 ${workspace.provider.kind}`)\n }\n return workspace\n}\n\nfunction safeProjectPath(root: string, ref: string, mustExist: boolean): string {\n const rootReal = realpathSync(resolve(root))\n const candidate = resolve(rootReal, ref)\n const rel = relative(rootReal, candidate)\n if (!isInside(rootReal, candidate)) throw new Error(`Multica deployment 路径越出 Project: ${ref}`)\n if (mustExist && !existsSync(candidate)) throw new Error(`Multica deployment 路径不存在: ${ref}`)\n if (existsSync(candidate)) {\n if (lstatSync(candidate).isSymbolicLink()) throw new Error(`Multica deployment 路径不能是符号链接: ${ref}`)\n if (!isInside(rootReal, realpathSync(candidate))) throw new Error(`Multica deployment 真实路径越界: ${ref}`)\n }\n let ancestor = dirname(candidate)\n while (!existsSync(ancestor)) {\n const parent = dirname(ancestor)\n if (parent === ancestor) break\n ancestor = parent\n }\n if (!existsSync(ancestor) || !isInside(rootReal, realpathSync(ancestor))) {\n throw new Error(`Multica deployment 父目录真实路径越界: ${ref}`)\n }\n void rel\n return candidate\n}\n\nfunction isInside(root: string, candidate: string): boolean {\n const rel = relative(root, candidate)\n return rel === '' || (rel !== '..' && !rel.startsWith(`..${process.platform === 'win32' ? '\\\\' : '/'}`))\n}\n\nfunction deploymentsRoot(name: string): string {\n return join(MULTICA_EVIDENCE_ROOT, safeName(name), 'multica-deployments')\n}\n\nfunction receiptsRoot(name: string): string {\n return join(deploymentsRoot(name), 'receipts')\n}\n\nfunction receiptRelativePath(name: string, receiptId: string): string {\n return join(receiptsRoot(name), `${resourceId(receiptId, 'receipt-id')}.json`)\n}\n\nfunction operationRelativePath(name: string, operationId: string): string {\n return join(deploymentsRoot(name), 'operations', `${resourceId(operationId, 'operation-id')}.json`)\n}\n\nfunction latestDeploymentPointer(name: string): string {\n return join(deploymentsRoot(name), 'latest.json')\n}\n\nfunction operationBindingPath(name: string, operationId: string): string {\n return join(deploymentsRoot(name), 'bindings', `${resourceId(operationId, 'operation-id')}.json`)\n}\n\nfunction safeName(value: string): string {\n if (!/^[a-z0-9](?:[a-z0-9._-]{0,62}[a-z0-9])?$/.test(value)) {\n throw new Error(`Workspace name 非法: ${value}`)\n }\n return value\n}\n\nfunction positiveTimeout(value: number | undefined, fallback: number, max: number): number {\n if (value === undefined) return fallback\n if (!Number.isFinite(value) || value < 100 || value > max) {\n throw new Error(`Multica timeout 必须在 100..${max} ms`)\n }\n return Math.floor(value)\n}\n\nfunction atomicJson(path: string, value: unknown): void {\n mkdirSync(dirname(path), { recursive: true })\n const temp = `${path}.tmp-${process.pid}-${randomUUID().slice(0, 8)}`\n const source = `${JSON.stringify(value, null, 2)}\\n`\n writeFileSync(temp, source, { mode: 0o600, flag: 'wx' })\n renameSync(temp, path)\n if (readFileSync(path, 'utf8') !== source) throw new Error(`原子写后回读不一致: ${path}`)\n}\n\nfunction sha256(value: string | Buffer): string {\n return createHash('sha256').update(value).digest('hex')\n}\n"]}