pacman-contribution-graph 1.0.0

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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pacman-contribution-graph.js","mappings":";;;;;;;;;;;;;;;;AAAkI;AACrF;AACb;AACA;AAEhC,MAAM,YAAY,GAAG,GAAG,EAAE;IACzB,MAAM,WAAW,GAAG,kDAAU,GAAG,CAAC,iDAAS,GAAG,gDAAQ,CAAC,CAAC;IACxD,MAAM,YAAY,GAAG,mDAAW,GAAG,CAAC,iDAAS,GAAG,gDAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,sCAAsC;IAEtG,yCAAK,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,GAAG,WAAW,CAAC;IACxC,yCAAK,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,YAAY,CAAC;AAC3C,CAAC,CAAC;AAEF,MAAM,QAAQ,GAAG,GAAG,EAAE;IACrB,yCAAK,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAE,CAAC,SAAS,GAAG,yCAAK,CAAC,eAAe,EAAE,CAAC,cAAc,CAAC;IACzF,yCAAK,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,yCAAK,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,yCAAK,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAE5G,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,mDAAW,EAAE,CAAC,EAAE,EAAE;QACrC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,kDAAU,EAAE,CAAC,EAAE,EAAE;YACpC,MAAM,SAAS,GAAG,yCAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACnC,IAAI,SAAS,GAAG,CAAC,EAAE;gBAClB,MAAM,iBAAiB,GAAG,SAAS,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC5D,MAAM,KAAK,GAAG,yCAAK,CAAC,SAAS,CAAC,yCAAK,CAAC,eAAe,EAAE,CAAC,oBAAoB,EAAE,iBAAiB,CAAC,CAAC;gBAC/F,yCAAK,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAE,CAAC,SAAS,GAAG,KAAK,CAAC;aACxD;iBAAM;gBACN,yCAAK,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAE,CAAC,SAAS,GAAG,yCAAK,CAAC,eAAe,EAAE,CAAC,yBAAyB,CAAC;aACpG;YACD,yCAAK,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAE,CAAC,SAAS,EAAE,CAAC;YAClD,yCAAK,CAAC,MAAM,CAAC,MAAM;iBACjB,UAAU,CAAC,IAAI,CAAE;iBACjB,SAAS,CAAC,CAAC,GAAG,CAAC,iDAAS,GAAG,gDAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,iDAAS,GAAG,gDAAQ,CAAC,GAAG,EAAE,EAAE,iDAAS,EAAE,iDAAS,EAAE,CAAC,CAAC,CAAC;YAClG,yCAAK,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAE,CAAC,IAAI,EAAE,CAAC;SAC7C;KACD;IAED,yCAAK,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAE,CAAC,SAAS,GAAG,yCAAK,CAAC,eAAe,EAAE,CAAC,SAAS,CAAC;IACpF,yCAAK,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAE,CAAC,IAAI,GAAG,YAAY,CAAC;IAC1D,yCAAK,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAE,CAAC,SAAS,GAAG,QAAQ,CAAC;IAE3D,IAAI,SAAS,GAAG,EAAE,CAAC;IACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,kDAAU,EAAE,CAAC,EAAE,EAAE;QACpC,IAAI,yCAAK,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE;YACvC,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,iDAAS,GAAG,gDAAQ,CAAC,GAAG,iDAAS,GAAG,CAAC,CAAC;YACxD,yCAAK,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAE,CAAC,QAAQ,CAAC,yCAAK,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;YAC/E,SAAS,GAAG,yCAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;SACjC;KACD;AACF,CAAC,CAAC;AAEF,MAAM,UAAU,GAAG,GAAG,EAAE;IACvB,MAAM,CAAC,GAAG,yCAAK,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,iDAAS,GAAG,gDAAQ,CAAC,GAAG,iDAAS,GAAG,CAAC,CAAC;IAClE,MAAM,CAAC,GAAG,yCAAK,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,iDAAS,GAAG,gDAAQ,CAAC,GAAG,iDAAS,GAAG,CAAC,GAAG,EAAE,CAAC;IACvE,MAAM,MAAM,GAAG,iDAAS,GAAG,CAAC,CAAC;IAE7B,uEAAuE;IACvE,IAAI,yCAAK,CAAC,MAAM,CAAC,qBAAqB,EAAE;QACvC,yCAAK,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAE,CAAC,SAAS,GAAG,yDAAiB,CAAC;KACpE;SAAM,IAAI,yCAAK,CAAC,MAAM,CAAC,wBAAwB,EAAE;QACjD,yCAAK,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAE,CAAC,SAAS,GAAG,4DAAoB,CAAC;KACvE;SAAM;QACN,yCAAK,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAE,CAAC,SAAS,GAAG,oDAAY,CAAC;KAC/D;IAED,MAAM,UAAU,GAAG,yCAAK,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC;IAE1E,IAAI,UAAU,EAAE,QAAQ,CAAC;IACzB,QAAQ,yCAAK,CAAC,MAAM,CAAC,SAAS,EAAE;QAC/B,KAAK,IAAI;YACR,UAAU,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,UAAU,CAAC;YACxC,QAAQ,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,UAAU,CAAC;YACtC,MAAM;QACP,KAAK,MAAM;YACV,UAAU,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,UAAU,CAAC;YACxC,QAAQ,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,UAAU,CAAC;YACtC,MAAM;QACP,KAAK,MAAM;YACV,UAAU,GAAG,IAAI,CAAC,EAAE,GAAG,UAAU,CAAC;YAClC,QAAQ,GAAG,IAAI,CAAC,EAAE,GAAG,UAAU,CAAC;YAChC,MAAM;QACP,KAAK,OAAO,CAAC;QACb;YACC,UAAU,GAAG,CAAC,GAAG,UAAU,CAAC;YAC5B,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,UAAU,CAAC;YACpC,MAAM;KACP;IAED,yCAAK,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAE,CAAC,SAAS,EAAE,CAAC;IAClD,yCAAK,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;IAC9E,yCAAK,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACnD,yCAAK,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAE,CAAC,IAAI,EAAE,CAAC;AAC9C,CAAC,CAAC;AAEF,MAAM,UAAU,GAAG,GAAG,EAAE;IACvB,yCAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QAC9B,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,iDAAS,GAAG,gDAAQ,CAAC,GAAG,iDAAS,GAAG,CAAC,CAAC;QAC3D,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,iDAAS,GAAG,gDAAQ,CAAC,GAAG,iDAAS,GAAG,CAAC,GAAG,EAAE,CAAC;QAChE,MAAM,MAAM,GAAG,iDAAS,GAAG,CAAC,CAAC;QAE7B,yCAAK,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAE,CAAC,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC;QACtF,yCAAK,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAE,CAAC,SAAS,EAAE,CAAC;QAClD,yCAAK,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QACpE,yCAAK,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAE,CAAC,IAAI,CAAC,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;QAC9E,yCAAK,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAE,CAAC,IAAI,EAAE,CAAC;QAE7C,yCAAK,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAE,CAAC,SAAS,GAAG,OAAO,CAAC;QAC1D,yCAAK,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAE,CAAC,SAAS,EAAE,CAAC;QAClD,yCAAK,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAE,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QACtG,yCAAK,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAE,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QACtG,yCAAK,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAE,CAAC,IAAI,EAAE,CAAC;QAE7C,yCAAK,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAE,CAAC,SAAS,GAAG,OAAO,CAAC;QAC1D,yCAAK,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAE,CAAC,SAAS,EAAE,CAAC;QAClD,yCAAK,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAE,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QACtG,yCAAK,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAE,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QACtG,yCAAK,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAE,CAAC,IAAI,EAAE,CAAC;IAC9C,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,cAAc,GAAG,GAAG,EAAE;IAC3B,yCAAK,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAE,CAAC,SAAS,GAAG,OAAO,CAAC;IAC1D,yCAAK,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAE,CAAC,IAAI,GAAG,YAAY,CAAC;IAC1D,yCAAK,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAE,CAAC,SAAS,GAAG,QAAQ,CAAC;IAC3D,yCAAK,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAE,CAAC,QAAQ,CAAC,WAAW,EAAE,yCAAK,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,EAAE,yCAAK,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAC5H,CAAC,CAAC;AAEF,MAAM,mBAAmB,GAAG,GAAG,EAAE;IAChC,IAAI,CAAC,yCAAK,CAAC,MAAM,CAAC,YAAY,EAAE;QAC/B,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACpB,OAAO;KACP;IAED,MAAM,KAAK,GAAG,EAAE,EACf,MAAM,GAAG,EAAE,EACX,IAAI,GAAG,yCAAK,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,GAAG,KAAK,GAAG,EAAE,EAC7C,GAAG,GAAG,EAAE,CAAC;IACV,yCAAK,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAE,CAAC,SAAS,GAAG,iBAAiB,sDAAW,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;IACpH,yCAAK,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAE,CAAC,SAAS,EAAE,CAAC;IAClD,yCAAK,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAE,CAAC,MAAM,CAAC,IAAI,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC;IAClE,yCAAK,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAE,CAAC,MAAM,CAAC,IAAI,GAAG,EAAE,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;IACjE,yCAAK,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAE,CAAC,MAAM,CAAC,IAAI,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC;IAClE,yCAAK,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAE,CAAC,MAAM,CAAC,IAAI,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC;IAClE,yCAAK,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAE,CAAC,SAAS,EAAE,CAAC;IAClD,yCAAK,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAE,CAAC,IAAI,EAAE,CAAC;IAE7C,IAAI,CAAC,sDAAW,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE;QACvC,yCAAK,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAE,CAAC,WAAW,GAAG,oBAAoB,CAAC;QACzE,yCAAK,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAE,CAAC,SAAS,GAAG,CAAC,CAAC;QAEpD,aAAa;QACb,yCAAK,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAE,CAAC,SAAS,EAAE,CAAC;QAClD,yCAAK,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAE,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QAClF,yCAAK,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAE,CAAC,MAAM,EAAE,CAAC;QAE/C,cAAc;QACd,yCAAK,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAE,CAAC,SAAS,EAAE,CAAC;QAClD,yCAAK,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAE,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QAClF,yCAAK,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAE,CAAC,MAAM,EAAE,CAAC;KAC/C;SAAM;QACN,YAAY;QACZ,yCAAK,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAE,CAAC,WAAW,GAAG,sBAAsB,CAAC;QAC3E,yCAAK,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAE,CAAC,SAAS,GAAG,CAAC,CAAC;QACpD,yCAAK,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAE,CAAC,SAAS,EAAE,CAAC;QAClD,yCAAK,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAE,CAAC,MAAM,CAAC,IAAI,GAAG,EAAE,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;QACjE,yCAAK,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAE,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC;QACjE,yCAAK,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAE,CAAC,MAAM,EAAE,CAAC;KAC/C;AACF,CAAC,CAAC;AAEF,MAAM,uBAAuB,GAAG,GAAG,EAAE;IACpC,IAAI,CAAC,yCAAK,CAAC,MAAM,CAAC,YAAY,EAAE;QAC/B,OAAO;KACP;IACD,yCAAK,CAAC,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,UAAU,KAAK;QAC5D,MAAM,IAAI,GAAG,yCAAK,CAAC,MAAM,CAAC,MAAM,CAAC,qBAAqB,EAAE,CAAC;QACzD,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,EAClC,CAAC,GAAG,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC;QAC9B,MAAM,KAAK,GAAG,EAAE,EACf,MAAM,GAAG,EAAE,EACX,IAAI,GAAG,yCAAK,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,GAAG,KAAK,GAAG,EAAE,EAC7C,GAAG,GAAG,EAAE,CAAC;QAEV,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE;YAC9E,IAAI,sDAAW,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE;gBACtC,sDAAW,CAAC,WAAW,EAAE,CAAC,MAAM,EAAE,CAAC;aACnC;iBAAM;gBACN,sDAAW,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC;aACjC;SACD;IACF,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC;AAEK,MAAM,MAAM,GAAG;IACrB,YAAY;IACZ,QAAQ;IACR,UAAU;IACV,UAAU;IACV,cAAc;IACd,mBAAmB;IACnB,uBAAuB;CACvB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;ACrMK,MAAM,SAAS,GAAG,EAAE,CAAC;AACrB,MAAM,QAAQ,GAAG,CAAC,CAAC;AACnB,MAAM,UAAU,GAAG,EAAE,CAAC;AACtB,MAAM,WAAW,GAAG,CAAC,CAAC;AACtB,MAAM,YAAY,GAAG,QAAQ,CAAC;AAC9B,MAAM,oBAAoB,GAAG,KAAK,CAAC;AACnC,MAAM,iBAAiB,GAAG,WAAW,CAAC;AACtC,MAAM,YAAY,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;AACvD,MAAM,MAAM,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AACpG,MAAM,UAAU,GAAG,GAAG,CAAC;AACvB,MAAM,qBAAqB,GAAG,EAAE,CAAC;AACjC,MAAM,uBAAuB,GAAG,EAAE,CAAC;AACnC,MAAM,WAAW,GAAsC;IAC7D,MAAM,EAAE;QACP,SAAS,EAAE,SAAS;QACpB,cAAc,EAAE,SAAS;QACzB,oBAAoB,EAAE,SAAS;QAC/B,yBAAyB,EAAE,SAAS;KACpC;IACD,aAAa,EAAE;QACd,SAAS,EAAE,SAAS;QACpB,cAAc,EAAE,SAAS;QACzB,oBAAoB,EAAE,SAAS;QAC/B,yBAAyB,EAAE,SAAS;KACpC;IACD,MAAM,EAAE;QACP,SAAS,EAAE,SAAS;QACpB,cAAc,EAAE,SAAS;QACzB,oBAAoB,EAAE,SAAS;QAC/B,yBAAyB,EAAE,SAAS;KACpC;IACD,aAAa,EAAE;QACd,SAAS,EAAE,SAAS;QACpB,cAAc,EAAE,SAAS;QACzB,oBAAoB,EAAE,SAAS;QAC/B,yBAAyB,EAAE,SAAS;KACpC;CACD,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACvCgC;AACsG;AACpF;AACpB;AACJ;AAE5B,MAAM,cAAc,GAAG,GAAG,EAAE;IAC3B,yCAAK,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,mDAAW,EAAE,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,kDAAU,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACpG,yCAAK,CAAC,WAAW,GAAG,KAAK,CAAC,kDAAU,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC/C,IAAI,UAAU,GAAG,CAAC,CAAC;IAEnB,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACvB,MAAM,kBAAkB,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;IACzC,kBAAkB,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;IAEzD,yCAAK,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,YAAY,EAAE,EAAE;QAC5C,MAAM,gBAAgB,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QACrD,MAAM,SAAS,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC;QAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,kBAAkB,GAAG,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;QAEnG,IAAI,QAAQ,IAAI,CAAC,IAAI,QAAQ,GAAG,kDAAU,IAAI,SAAS,IAAI,CAAC,IAAI,SAAS,GAAG,mDAAW,EAAE;YACxF,yCAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,kDAAU,GAAG,CAAC,GAAG,QAAQ,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC;YACtE,IAAI,YAAY,CAAC,KAAK,GAAG,UAAU;gBAAE,UAAU,GAAG,YAAY,CAAC,KAAK,CAAC;SACrE;IACF,CAAC,CAAC,CAAC;IAEH,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,mDAAW,EAAE,CAAC,EAAE,EAAE;QACrC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,kDAAU,EAAE,CAAC,EAAE,EAAE;YACpC,IAAI,yCAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;gBACzB,yCAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,yCAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC;aACjD;SACD;KACD;IAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,kDAAU,EAAE,CAAC,EAAE,EAAE;QACpC,MAAM,QAAQ,GAAG,kDAAU,GAAG,CAAC,GAAG,CAAC,CAAC;QACpC,MAAM,UAAU,GAAG,IAAI,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAChD,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,QAAQ,GAAG,CAAC,CAAC,CAAC;QACxD,yCAAK,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,8CAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;KACrD;AACF,CAAC,CAAC;AAEF,MAAM,WAAW,GAAG,GAAG,EAAE;IACxB,IAAI,UAAU,GAAG,EAAE,CAAC;IACpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,mDAAW,EAAE,CAAC,EAAE,EAAE;QACrC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,kDAAU,EAAE,CAAC,EAAE,EAAE;YACpC,IAAI,yCAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;gBAAE,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;SACpD;KACD;IACD,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;QAC1B,MAAM,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;QAC7E,yCAAK,CAAC,MAAM,GAAG;YACd,CAAC,EAAE,UAAU,CAAC,CAAC;YACf,CAAC,EAAE,UAAU,CAAC,CAAC;YACf,SAAS,EAAE,OAAO;YAClB,MAAM,EAAE,CAAC;YACT,qBAAqB,EAAE,CAAC;YACxB,wBAAwB,EAAE,CAAC;SAC3B,CAAC;KACF;IACD,IAAI,yCAAK,CAAC,MAAM,CAAC,YAAY,IAAI,QAAQ;QAAE,2CAAM,CAAC,UAAU,EAAE,CAAC;AAChE,CAAC,CAAC;AAEF,MAAM,WAAW,GAAG,GAAG,EAAE;IACxB,yCAAK,CAAC,MAAM,GAAG,EAAE,CAAC;IAClB,yCAAK,CAAC,wBAAwB,GAAG,EAAE,CAAC;IACpC,kBAAkB;IAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;QAC3B,MAAM,KAAK,GAAG,oDAAY,CAAC,CAAC,GAAG,oDAAY,CAAC,MAAM,CAAC,CAAC;QACpD,IAAI,CAAC,EAAE,CAAC,CAAC;QACT,GAAG;YACF,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,mDAAW,CAAC,CAAC;YAC5C,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,kDAAU,CAAC,CAAC;SAC3C,QAAQ,yCAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;QACjC,yCAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;QACrE,yCAAK,CAAC,wBAAwB,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;KACpD;IACD,IAAI,yCAAK,CAAC,MAAM,CAAC,YAAY,IAAI,QAAQ;QAAE,2CAAM,CAAC,UAAU,EAAE,CAAC;AAChE,CAAC,CAAC;AAEF,MAAM,SAAS,GAAG,GAAS,EAAE;IAC5B,IAAI,yCAAK,CAAC,MAAM,CAAC,YAAY,IAAI,QAAQ,EAAE;QAC1C,yCAAK,CAAC,MAAM,CAAC,MAAM,GAAG,yCAAK,CAAC,MAAM,CAAC,MAAM,CAAC;QAC1C,2CAAM,CAAC,YAAY,EAAE,CAAC;QACtB,2CAAM,CAAC,uBAAuB,EAAE,CAAC;KACjC;IAED,yCAAK,CAAC,UAAU,GAAG,CAAC,CAAC;IACrB,yCAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC;IAExD,cAAc,EAAE,CAAC;IACjB,IAAI,yCAAK,CAAC,MAAM,CAAC,YAAY,IAAI,QAAQ;QAAE,2CAAM,CAAC,QAAQ,EAAE,CAAC;IAE7D,IAAI,yCAAK,CAAC,MAAM,CAAC,YAAY,IAAI,QAAQ,EAAE;QAC1C,IAAI,CAAC,yCAAK,CAAC,MAAM,CAAC,YAAY,EAAE;YAC/B,sDAAW,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC;SACjC;QACD,MAAM,sDAAW,CAAC,WAAW,EAAE,CAAC,aAAa,EAAE,CAAC;QAChD,sDAAW,CAAC,WAAW,EAAE,CAAC,iBAAiB,EAAE,CAAC;QAC9C,MAAM,sDAAW,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,gDAAK,CAAC,SAAS,CAAC,CAAC;KACtD;IAED,WAAW,EAAE,CAAC;IACd,WAAW,EAAE,CAAC;IAEd,IAAI,yCAAK,CAAC,MAAM,CAAC,YAAY,IAAI,KAAK,EAAE;QACvC,MAAM,cAAc,GAAG,GAAG,EAAE,CAAC,yCAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;QACpF,OAAO,cAAc,EAAE,EAAE;YACxB,MAAM,UAAU,EAAE,CAAC;SACnB;QACD,gCAAgC;QAChC,MAAM,UAAU,EAAE,CAAC;KACnB;SAAM;QACN,aAAa,CAAC,yCAAK,CAAC,YAAY,CAAC,CAAC;QAClC,yCAAK,CAAC,YAAY,GAAG,WAAW,CAAC,GAAS,EAAE,kDAAC,aAAM,UAAU,EAAE,MAAE,kDAAU,CAAC,CAAC;KAC7E;AACF,CAAC,EAAC;AAEF,MAAM,UAAU,GAAG,GAAS,EAAE;IAC7B,yCAAK,CAAC,UAAU,EAAE,CAAC;IACnB,IAAI,yCAAK,CAAC,UAAU,GAAG,yCAAK,CAAC,MAAM,CAAC,SAAS,KAAK,CAAC,EAAE;QACpD,yCAAK,CAAC,WAAW,CAAC,IAAI,CAAC;YACtB,MAAM,oBAAO,yCAAK,CAAC,MAAM,CAAE;YAC3B,MAAM,EAAE,yCAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,mBAAM,KAAK,EAAG,CAAC;YACnD,IAAI,EAAE,yCAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;SACvC,CAAC,CAAC;QACH,OAAO;KACP;IAED,IAAI,yCAAK,CAAC,MAAM,CAAC,qBAAqB,EAAE;QACvC,yCAAK,CAAC,MAAM,CAAC,qBAAqB,EAAE,CAAC;QACrC,IAAI,CAAC,yCAAK,CAAC,MAAM,CAAC,qBAAqB,EAAE;YACxC,cAAc;YACd,IAAI,yCAAK,CAAC,MAAM,CAAC,YAAY,IAAI,QAAQ;gBACxC,sDAAW,CAAC,WAAW,EAAE;qBACvB,IAAI,CAAC,gDAAK,CAAC,SAAS,CAAC;qBACrB,IAAI,CAAC,GAAG,EAAE,CAAC,sDAAW,CAAC,WAAW,EAAE,CAAC,iBAAiB,EAAE,CAAC,CAAC;SAC7D;KACD;IAED,IAAI,yCAAK,CAAC,MAAM,CAAC,wBAAwB,EAAE;QAC1C,yCAAK,CAAC,MAAM,CAAC,wBAAwB,EAAE,CAAC;QACxC,IAAI,CAAC,yCAAK,CAAC,MAAM,CAAC,wBAAwB,EAAE;YAC3C,yCAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC;YACxD,yCAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;SACxB;KACD;IAED,MAAM,cAAc,GAAG,yCAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;IAC9E,IAAI,CAAC,cAAc,EAAE;QACpB,IAAI,yCAAK,CAAC,MAAM,CAAC,YAAY,IAAI,QAAQ,EAAE;YAC1C,aAAa,CAAC,yCAAK,CAAC,YAAY,CAAC,CAAC;YAClC,IAAI,yCAAK,CAAC,MAAM,CAAC,YAAY,IAAI,QAAQ,EAAE;gBAC1C,2CAAM,CAAC,cAAc,EAAE,CAAC;gBACxB,sDAAW,CAAC,WAAW,EAAE;qBACvB,IAAI,CAAC,gDAAK,CAAC,SAAS,CAAC;qBACrB,IAAI,CAAC,GAAG,EAAE,CAAC,sDAAW,CAAC,WAAW,EAAE,CAAC,gBAAgB,EAAE,CAAC,CAAC;aAC3D;SACD;QAED,IAAI,yCAAK,CAAC,MAAM,CAAC,YAAY,IAAI,KAAK,EAAE;YACvC,MAAM,WAAW,GAAG,qCAAG,CAAC,mBAAmB,EAAE,CAAC;YAC9C,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,CAAC,WAAW,CAAC,EAAE;gBACvC,IAAI,EAAE,6BAA6B;aACnC,CAAC,CAAC;YACH,MAAM,MAAM,GAAG,GAAG,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;YAC5C,yCAAK,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;SACjC;QAED,yCAAK,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC;QAChC,OAAO;KACP;IAED,UAAU,EAAE,CAAC;IACb,UAAU,EAAE,CAAC;IACb,eAAe,EAAE,CAAC;IAElB,yCAAK,CAAC,eAAe,GAAG,CAAC,yCAAK,CAAC,eAAe,CAAC;IAE/C,yCAAK,CAAC,WAAW,CAAC,IAAI,CAAC;QACtB,MAAM,oBAAO,yCAAK,CAAC,MAAM,CAAE;QAC3B,MAAM,EAAE,yCAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,mBAAM,KAAK,EAAG,CAAC;QACnD,IAAI,EAAE,yCAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;KACvC,CAAC,CAAC;IAEH,IAAI,yCAAK,CAAC,MAAM,CAAC,YAAY,IAAI,QAAQ;QAAE,2CAAM,CAAC,QAAQ,EAAE,CAAC;IAC7D,IAAI,yCAAK,CAAC,MAAM,CAAC,YAAY,IAAI,QAAQ;QAAE,2CAAM,CAAC,UAAU,EAAE,CAAC;IAC/D,IAAI,yCAAK,CAAC,MAAM,CAAC,YAAY,IAAI,QAAQ;QAAE,2CAAM,CAAC,UAAU,EAAE,CAAC;IAC/D,IAAI,yCAAK,CAAC,MAAM,CAAC,YAAY,IAAI,QAAQ;QAAE,2CAAM,CAAC,mBAAmB,EAAE,CAAC;AACzE,CAAC,EAAC;AAEF,MAAM,UAAU,GAAG,GAAG,EAAE;IACvB,IAAI,yCAAK,CAAC,MAAM,CAAC,qBAAqB,EAAE;QACvC,OAAO;KACP;IACD,IAAI,WAAW,GAAiD,EAAE,CAAC;IAEnE,IAAI,yCAAK,CAAC,MAAM,CAAC,wBAAwB,EAAE;QAC1C,WAAW,GAAG,yCAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YAC1C,CAAC,EAAE,KAAK,CAAC,CAAC;YACV,CAAC,EAAE,KAAK,CAAC,CAAC;YACV,QAAQ,EAAE,QAAQ;SAClB,CAAC,CAAC,CAAC;KACJ;SAAM;QACN,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,mDAAW,EAAE,CAAC,EAAE,EAAE;YACrC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,kDAAU,EAAE,CAAC,EAAE,EAAE;gBACpC,IAAI,yCAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;oBAAE,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;aACzE;SACD;KACD;IAED,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAErC,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,CACjC,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE;QACjB,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,yCAAK,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,yCAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACvF,OAAO,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,iCAAM,IAAI,KAAE,QAAQ,IAAG,CAAC,CAAC,OAAO,CAAC;IACtE,CAAC,EACD,EAAE,CAAC,EAAE,yCAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,yCAAK,CAAC,MAAM,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAC5D,CAAC;IAEF,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,GAAG,yCAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IACtC,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,GAAG,yCAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IAEtC,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;QAChC,yCAAK,CAAC,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAChC,yCAAK,CAAC,MAAM,CAAC,SAAS,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;KAChD;SAAM;QACN,yCAAK,CAAC,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAChC,yCAAK,CAAC,MAAM,CAAC,SAAS,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;KACnD;IAED,IAAI,yCAAK,CAAC,IAAI,CAAC,yCAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,yCAAK,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;QACnD,yCAAK,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC;QACzB,yCAAK,CAAC,IAAI,CAAC,yCAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,yCAAK,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAE/C,IAAI,yCAAK,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE;YAAE,eAAe,EAAE,CAAC;KACjD;AACF,CAAC,CAAC;AAEF,MAAM,UAAU,GAAG,GAAG,EAAE;IACvB,yCAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QACrC,IAAI,KAAK,CAAC,MAAM,EAAE;YACjB,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;gBAClB,KAAK,CAAC,MAAM,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;aACtD;YAED,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;YACpC,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;YACpC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9D,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAE/D,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC;YAC7B,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC;YAE7B,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,GAAG,mDAAW,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,GAAG,kDAAU,EAAE;gBACtE,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC;gBACf,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC;aACf;YAED,IAAI,KAAK,CAAC,CAAC,KAAK,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,KAAK,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE;gBAC7D,KAAK,CAAC,MAAM,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;aACtD;SACD;aAAM;YACN,MAAM,UAAU,GAAG;gBAClB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBACP,CAAC,CAAC,EAAE,CAAC,CAAC;gBACN,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,EAAE,CAAC,CAAC;aACN,CAAC;YACF,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;YAE3E,0EAA0E;YAC1E,IAAI,yCAAK,CAAC,MAAM,CAAC,wBAAwB,IAAI,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG;gBAAE,OAAO;YAEzE,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC;YAC1B,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC;YAE1B,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,GAAG,mDAAW,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,GAAG,kDAAU,EAAE;gBACtE,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC;gBACf,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC;aACf;SACD;IACF,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,oBAAoB,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE;IACrD,MAAM,WAAW,GAAG,EAAE,CAAC;IACvB,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,WAAW,GAAG,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC;IACpF,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,WAAW,GAAG,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC;IACpF,OAAO;QACN,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,mDAAW,GAAG,CAAC,CAAC,CAAC;QAClD,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,kDAAU,GAAG,CAAC,CAAC,CAAC;KACjD,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,eAAe,GAAG,GAAG,EAAE;IAC5B,IAAI,yCAAK,CAAC,MAAM,CAAC,qBAAqB;QAAE,OAAO;IAE/C,yCAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QACrC,IAAI,KAAK,CAAC,CAAC,KAAK,yCAAK,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,KAAK,yCAAK,CAAC,MAAM,CAAC,CAAC,EAAE;YAC7D,IAAI,yCAAK,CAAC,MAAM,CAAC,wBAAwB,IAAI,KAAK,CAAC,MAAM,EAAE;gBAC1D,YAAY,CAAC,KAAK,CAAC,CAAC;gBACpB,yCAAK,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC;gBAC1B,IAAI,yCAAK,CAAC,MAAM,CAAC,YAAY,IAAI,QAAQ,EAAE;oBAC1C,sDAAW,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,gDAAK,CAAC,SAAS,CAAC,CAAC;iBAChD;aACD;iBAAM;gBACN,yCAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;gBACxB,yCAAK,CAAC,MAAM,CAAC,wBAAwB,GAAG,CAAC,CAAC;gBAC1C,yCAAK,CAAC,MAAM,CAAC,qBAAqB,GAAG,6DAAqB,CAAC;gBAC3D,IAAI,yCAAK,CAAC,MAAM,CAAC,YAAY,IAAI,QAAQ,EAAE;oBAC1C,sDAAW,CAAC,WAAW,EAAE;yBACvB,IAAI,CAAC,gDAAK,CAAC,SAAS,CAAC;yBACrB,IAAI,CAAC,GAAG,EAAE,CAAC,sDAAW,CAAC,WAAW,EAAE,CAAC,gBAAgB,EAAE,CAAC,CAAC;iBAC3D;aACD;SACD;IACF,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,YAAY,GAAG,CAAC,UAAkB,EAAE,EAAE;IAC3C,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,GAAG;QACF,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,mDAAW,CAAC,CAAC;QAC5C,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,kDAAU,CAAC,CAAC;KAC3C,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,yCAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,yCAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,yCAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;IAC7G,yCAAK,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG;QAC1B,CAAC;QACD,CAAC;QACD,KAAK,EAAE,oDAAY,CAAC,UAAU,GAAG,oDAAY,CAAC,MAAM,CAAC;QACrD,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,SAAS;KACjB,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,eAAe,GAAG,GAAG,EAAE;IAC5B,yCAAK,CAAC,MAAM,CAAC,wBAAwB,GAAG,+DAAuB,CAAC;IAChE,yCAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC;AACxD,CAAC,CAAC;AAEK,MAAM,IAAI,GAAG;IACnB,SAAS;CACT,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;ACvVF,IAAY,KAKX;AALD,WAAY,KAAK;IAChB,wDAA+C;IAC/C,8DAAqD;IACrD,0DAAiD;IACjD,6DAAoD;AACrD,CAAC,EALW,KAAK,KAAL,KAAK,QAKhB;AAEM,MAAM,WAAW;IAQvB;QALQ,WAAM,GAA4B,IAAI,GAAG,EAAE,CAAC;QAC5C,kBAAa,GAAiC,IAAI,CAAC;QACnD,kBAAa,GAAiC,IAAI,CAAC;QACpD,YAAO,GAAY,KAAK,CAAC;QAG/B,IAAI,CAAC,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC;IACxC,CAAC;IAEM,MAAM,CAAC,WAAW;QACxB,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE;YAC1B,WAAW,CAAC,QAAQ,GAAG,IAAI,WAAW,EAAE,CAAC;SACzC;QACD,OAAO,WAAW,CAAC,QAAQ,CAAC;IAC7B,CAAC;IAEY,aAAa;;YACzB,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;gBACzC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC,CAAC;gBACpC,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAC;gBACjD,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;gBACzE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAc,EAAE,WAAW,CAAC,CAAC;aAC7C;QACF,CAAC;KAAA;IAEY,IAAI,CAAC,KAAY;;YAC7B,IAAI,IAAI,CAAC,OAAO,EAAE;gBACjB,OAAO;aACP;YACD,IAAI,IAAI,CAAC,aAAa,EAAE;gBACvB,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;aAC1B;YAED,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACtC,IAAI,CAAC,MAAM,EAAE;gBACZ,OAAO,CAAC,KAAK,CAAC,SAAS,KAAK,YAAY,CAAC,CAAC;gBAC1C,OAAO;aACP;YAED,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,kBAAkB,EAAE,CAAC;YAC5D,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,MAAM,CAAC;YACnC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;YAE1D,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;gBAClB,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;aAC3B;YAED,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;gBAC9B,IAAI,CAAC,aAAc,CAAC,OAAO,GAAG,GAAG,EAAE;oBAClC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;oBAC1B,OAAO,EAAE,CAAC;gBACX,CAAC,CAAC;YACH,CAAC,CAAC,CAAC;QACJ,CAAC;KAAA;IAEM,iBAAiB;QACvB,IAAI,IAAI,CAAC,aAAa,EAAE;YACvB,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;SAC1B;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC9C,IAAI,CAAC,MAAM,EAAE;YACZ,OAAO,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;YACzC,OAAO;SACP;QAED,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,kBAAkB,EAAE,CAAC;QAC5D,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,MAAM,CAAC;QACnC,IAAI,CAAC,aAAa,CAAC,IAAI,GAAG,IAAI,CAAC;QAC/B,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;QAE1D,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YAClB,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;SAC3B;IACF,CAAC;IAEM,gBAAgB;QACtB,IAAI,IAAI,CAAC,aAAa,EAAE;YACvB,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;YAC1B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;SAC1B;IACF,CAAC;IAEM,IAAI;QACV,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,IAAI,CAAC,aAAa,EAAE;YACvB,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC;SAChC;QACD,IAAI,IAAI,CAAC,aAAa,EAAE;YACvB,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC;SAChC;IACF,CAAC;IAEM,MAAM;QACZ,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,IAAI,CAAC,aAAa,EAAE;YACvB,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;SAC1D;QACD,IAAI,IAAI,CAAC,aAAa,EAAE;YACvB,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;SAC1D;IACF,CAAC;CACD;;;;;;;;;;;;;;;AC9GM,MAAM,KAAK,GAAc;IAC/B,UAAU,EAAE,CAAC;IACb,aAAa,EAAE,EAAE;IACjB,MAAM,EAAE;QACP,CAAC,EAAE,CAAC;QACJ,CAAC,EAAE,CAAC;QACJ,SAAS,EAAE,OAAO;QAClB,MAAM,EAAE,CAAC;QACT,qBAAqB,EAAE,CAAC;QACxB,wBAAwB,EAAE,CAAC;KAC3B;IACD,MAAM,EAAE,EAAE;IACV,IAAI,EAAE,EAAE;IACR,WAAW,EAAE,EAAE;IACf,eAAe,EAAE,IAAI;IACrB,YAAY,EAAE,CAAC;IACf,wBAAwB,EAAE,EAAE;IAC5B,WAAW,EAAE,EAAE;IACf,MAAM,EAAE,SAA8B;CACtC,CAAC;;;;;;;;;;;;;;;;;;ACrBgI;AAClG;AACA;AAEhC,MAAM,mBAAmB,GAAG,GAAG,EAAE;IAChC,MAAM,QAAQ,GAAG,kDAAU,GAAG,CAAC,iDAAS,GAAG,gDAAQ,CAAC,CAAC;IACrD,MAAM,SAAS,GAAG,mDAAW,GAAG,CAAC,iDAAS,GAAG,gDAAQ,CAAC,GAAG,EAAE,CAAC;IAC5D,IAAI,GAAG,GAAG,eAAe,QAAQ,aAAa,SAAS,uCAAuC,CAAC;IAC/F,GAAG,IAAI,0CAA0C,yCAAK,CAAC,eAAe,EAAE,CAAC,cAAc,KAAK,CAAC;IAE7F,eAAe;IACf,IAAI,SAAS,GAAG,EAAE,CAAC;IACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,kDAAU,EAAE,CAAC,EAAE,EAAE;QACpC,IAAI,yCAAK,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE;YACvC,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,iDAAS,GAAG,gDAAQ,CAAC,GAAG,iDAAS,GAAG,CAAC,CAAC;YACxD,GAAG,IAAI,YAAY,IAAI,sDAAsD,yCAAK,CAAC,eAAe,EAAE,CAAC,SAAS,KAAK,yCAAK,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;YACjJ,SAAS,GAAG,yCAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;SACjC;KACD;IAED,OAAO;IACP,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,mDAAW,EAAE,CAAC,EAAE,EAAE;QACrC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,kDAAU,EAAE,CAAC,EAAE,EAAE;YACpC,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,iDAAS,GAAG,gDAAQ,CAAC,CAAC;YACzC,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,iDAAS,GAAG,gDAAQ,CAAC,GAAG,EAAE,CAAC;YAC9C,MAAM,SAAS,GAAG,yCAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAClD,MAAM,KAAK,GAAG,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,yCAAK,CAAC,eAAe,EAAE,CAAC,yBAAyB,CAAC;YAClH,GAAG,IAAI,kBAAkB,CAAC,IAAI,CAAC,QAAQ,KAAK,QAAQ,KAAK,YAAY,iDAAS,aAAa,iDAAS,kBAAkB,KAAK;qDACzE,yCAAK,CAAC,WAAW,CAAC,MAAM,GAAG,GAAG;8BACrD,uBAAuB,CAAC,CAAC,EAAE,CAAC,CAAC;gCAC3B,gBAAgB,EAAE;oBAC9B,CAAC;SAClB;KACD;IAED,SAAS;IACT,GAAG,IAAI,wBAAwB,kBAAkB,CAAC,IAAI,CAAC;+BACzB,yCAAK,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,iDAAS,GAAG,gDAAQ,CAAC,KAAK,yCAAK,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,iDAAS,GAAG,gDAAQ,CAAC,GAAG,EAAE;uCAChF,yCAAK,CAAC,WAAW,CAAC,MAAM,GAAG,GAAG;4BACzC,gBAAgB,EAAE;0BACpB,oBAAoB,EAAE;4EAC4B,yCAAK,CAAC,WAAW,CAAC,MAAM,GAAG,GAAG;wBAClF,gBAAgB,EAAE;sBACpB,uBAAuB,EAAE;;sBAEzB,kBAAkB,CAAC,IAAI,CAAC,IAAI,kBAAkB,CAAC,IAAI,CAAC,IAAI,kBAAkB,CAAC,IAAI,CAAC;YAC1F,CAAC;IAEZ,SAAS;IACT,yCAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QACrC,GAAG,IAAI,kBAAkB,KAAK,QAAQ,iBAAiB,CAAC,iDAAS,GAAG,CAAC,CAAC,WAAW,KAAK,CAAC,KAAK;iDAC7C,yCAAK,CAAC,WAAW,CAAC,MAAM,GAAG,GAAG;4BACnD,gBAAgB,EAAE;0BACpB,mBAAmB,CAAC,KAAK,CAAC;gFAC4B,yCAAK,CAAC,WAAW,CAAC,MAAM,GAAG,GAAG;4BAClF,gBAAgB,EAAE;0BACpB,sBAAsB,CAAC,KAAK,CAAC;;sBAEjC,iDAAS,GAAG,CAAC,SAAS,iDAAS,GAAG,CAAC,QAAQ,iDAAS,GAAG,CAAC;gFACE,yCAAK,CAAC,WAAW,CAAC,MAAM,GAAG,GAAG;4BAClF,gBAAgB,EAAE;0BACpB,sBAAsB,CAAC,KAAK,CAAC;;sBAEjC,CAAC,iDAAS,GAAG,CAAC,CAAC,GAAG,CAAC,SAAS,iDAAS,GAAG,CAAC,QAAQ,iDAAS,GAAG,CAAC;gFACJ,yCAAK,CAAC,WAAW,CAAC,MAAM,GAAG,GAAG;4BAClF,gBAAgB,EAAE;0BACpB,sBAAsB,CAAC,KAAK,CAAC;;sBAEjC,iDAAS,GAAG,CAAC,SAAS,iDAAS,GAAG,CAAC,QAAQ,iDAAS,GAAG,EAAE;gFACC,yCAAK,CAAC,WAAW,CAAC,MAAM,GAAG,GAAG;4BAClF,gBAAgB,EAAE;0BACpB,sBAAsB,CAAC,KAAK,CAAC;;sBAEjC,CAAC,iDAAS,GAAG,CAAC,CAAC,GAAG,CAAC,SAAS,iDAAS,GAAG,CAAC,QAAQ,iDAAS,GAAG,EAAE;gFACL,yCAAK,CAAC,WAAW,CAAC,MAAM,GAAG,GAAG;4BAClF,gBAAgB,EAAE;0BACpB,sBAAsB,CAAC,KAAK,CAAC;kBACrC,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,GAAG,IAAI,QAAQ,CAAC;IAChB,OAAO,GAAG,CAAC;AACZ,CAAC,CAAC;AAEF,MAAM,kBAAkB,GAAG,CAAC,UAAkB,EAAE,EAAE;IACjD,MAAM,MAAM,GAAG,iDAAS,GAAG,CAAC,CAAC;IAC7B,MAAM,UAAU,GAAG,UAAU,CAAC;IAC9B,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,UAAU,CAAC;IAE1C,OAAO,KAAK,MAAM,IAAI,MAAM;gBACb,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC;gBAChF,MAAM,IAAI,MAAM,UAAU,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC;cACxG,CAAC;AACf,CAAC,CAAC;AAEF,MAAM,gBAAgB,GAAG,GAAG,EAAE;IAC7B,OAAO,yCAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,GAAG,CAAC,yCAAK,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC9F,CAAC,CAAC;AAEF,MAAM,uBAAuB,GAAG,GAAG,EAAE;IACpC,OAAO,yCAAK,CAAC,WAAW;SACtB,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACd,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,iDAAS,GAAG,gDAAQ,CAAC,CAAC;QAClD,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,iDAAS,GAAG,gDAAQ,CAAC,GAAG,EAAE,CAAC;QACvD,OAAO,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;IACpB,CAAC,CAAC;SACD,IAAI,CAAC,GAAG,CAAC,CAAC;AACb,CAAC,CAAC;AAEF,MAAM,oBAAoB,GAAG,GAAG,EAAE;IACjC,OAAO,yCAAK,CAAC,WAAW;SACtB,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACd,IAAI,KAAK,CAAC,MAAM,CAAC,qBAAqB,EAAE;YACvC,OAAO,yDAAiB,CAAC;SACzB;aAAM,IAAI,KAAK,CAAC,MAAM,CAAC,wBAAwB,EAAE;YACjD,OAAO,4DAAoB,CAAC;SAC5B;aAAM;YACN,OAAO,oDAAY,CAAC;SACpB;IACF,CAAC,CAAC;SACD,IAAI,CAAC,GAAG,CAAC,CAAC;AACb,CAAC,CAAC;AAEF,MAAM,uBAAuB,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE;IACxD,OAAO,yCAAK,CAAC,WAAW;SACtB,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACd,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACnC,OAAO,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,yCAAK,CAAC,eAAe,EAAE,CAAC,yBAAyB,CAAC;IAC5G,CAAC,CAAC;SACD,IAAI,CAAC,GAAG,CAAC,CAAC;AACb,CAAC,CAAC;AAEF,MAAM,oBAAoB,GAAG,CAAC,SAAiB,EAAE,EAAE;IAClD,MAAM,iBAAiB,GAAG,SAAS,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;IAC5D,OAAO,yCAAK,CAAC,SAAS,CAAC,yCAAK,CAAC,eAAe,EAAE,CAAC,oBAAoB,EAAE,iBAAiB,CAAC,CAAC;AACzF,CAAC,CAAC;AAEF,MAAM,sBAAsB,GAAG,CAAC,UAAkB,EAAE,EAAE;IACrD,OAAO,yCAAK,CAAC,WAAW;SACtB,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACd,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QACvC,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,iDAAS,GAAG,gDAAQ,CAAC,CAAC;QAC3C,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,iDAAS,GAAG,gDAAQ,CAAC,GAAG,EAAE,CAAC;QAChD,OAAO,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;IACpB,CAAC,CAAC;SACD,IAAI,CAAC,GAAG,CAAC,CAAC;AACb,CAAC,CAAC;AAEF,MAAM,iBAAiB,GAAG,CAAC,MAAc,EAAE,EAAE;IAC5C,OAAO,KAAK,MAAM,IAAI,MAAM,GAAG,CAAC;gBACjB,MAAM,GAAG,GAAG,IAAI,MAAM,GAAG,GAAG,IAAI,MAAM,GAAG,GAAG,IAAI,MAAM,GAAG,GAAG;gBAC5D,MAAM,GAAG,GAAG,IAAI,MAAM,GAAG,GAAG,MAAM,MAAM;;gBAExC,MAAM,GAAG,CAAC;gBACV,MAAM,GAAG,CAAC,IAAI,MAAM;gBACpB,MAAM,GAAG,GAAG,IAAI,MAAM,GAAG,GAAG,IAAI,MAAM,GAAG,GAAG,IAAI,MAAM,GAAG,GAAG;gBAC5D,MAAM,GAAG,GAAG,IAAI,MAAM,GAAG,GAAG,IAAI,MAAM,IAAI,MAAM,GAAG,CAAC;cACtD,CAAC;AACf,CAAC,CAAC;AAEF,MAAM,mBAAmB,GAAG,CAAC,UAAkB,EAAE,EAAE;IAClD,OAAO,yCAAK,CAAC,WAAW;SACtB,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACd,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QACvC,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC;IAC5C,CAAC,CAAC;SACD,IAAI,CAAC,GAAG,CAAC,CAAC;AACb,CAAC,CAAC;AAEK,MAAM,GAAG,GAAG;IAClB,mBAAmB;CACnB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;AC3KwC;AACV;AAGhC,MAAM,qBAAqB,GAAG,CAAO,QAAgB,EAA2B,EAAE;IACjF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,4BAA4B,QAAQ,gBAAgB,CAAC,CAAC;IACnF,MAAM,iBAAiB,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IAChD,OAAO,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;QAChE,IAAI,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC;QACpB,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;KACpB,CAAC,CAAC,CAAC;AACL,CAAC,EAAC;AAEF,MAAM,qBAAqB,GAAG,CAAO,QAAgB,EAA2B,EAAE;IACjF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAC3B,kDAAkD,QAAQ,mDAAmD,CAC7G,CAAC;IACF,MAAM,iBAAiB,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IAChD,OAAO,KAAK,CAAC,IAAI,CAChB,iBAAiB,CAAC,KAAK;SACrB,MAAM,CAAC,CAAC,GAAQ,EAAE,IAAS,EAAE,EAAE;QAC/B,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5D,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC;QAClC,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;QAC9D,OAAO,GAAG,CAAC,GAAG,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAC7C,CAAC,EAAE,IAAI,GAAG,EAAE,CAAC;SACZ,MAAM,EAAE,CACV,CAAC;AACH,CAAC,EAAC;AAEF,MAAM,eAAe,GAAG,GAAc,EAAE;;IACvC,OAAO,yDAAW,CAAC,yCAAK,CAAC,MAAM,CAAC,SAAS,CAAC,mCAAI,mDAAW,CAAC,QAAQ,CAAC,CAAC;AACrE,CAAC,CAAC;AAEF,SAAS,SAAS,CAAC,GAAW,EAAE,KAAa;IAC5C,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACxC,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACxC,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACxC,OAAO,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,KAAK,GAAG,CAAC;AAC3C,CAAC;AAEM,MAAM,KAAK,GAAG;IACpB,qBAAqB;IACrB,qBAAqB;IACrB,eAAe;IACf,SAAS;CACT,CAAC;;;;;;;SC9CF;SACA;;SAEA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;;SAEA;SACA;;SAEA;SACA;SACA;;;;;UCtBA;UACA;UACA;UACA;UACA,yCAAyC,wCAAwC;UACjF;UACA;UACA;;;;;UCPA;;;;;UCAA;UACA;UACA;UACA,uDAAuD,iBAAiB;UACxE;UACA,gDAAgD,aAAa;UAC7D;;;;;;;;;;;;;;;;;;;;;;;;;;ACN8B;AACE;AAEA;AAEzB,MAAM,mBAAmB,GAAG,CAAO,IAAY,EAAE,EAAE;IACzD,MAAM,cAAc,GAAW;QAC9B,QAAQ,EAAE,QAAQ;QAClB,QAAQ,EAAE,EAAE;QACZ,MAAM,EAAE,SAAyC;QACjD,YAAY,EAAE,KAAK;QACnB,WAAW,EAAE,CAAC,CAAS,EAAE,EAAE,GAAE,CAAC;QAC9B,gBAAgB,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,GAAE,CAAC;QAChC,SAAS,EAAE,QAAQ;QACnB,SAAS,EAAE,CAAC;QACZ,YAAY,EAAE,IAAI;KAClB,CAAC;IACF,yCAAK,CAAC,MAAM,mCAAQ,cAAc,GAAK,IAAI,CAAE,CAAC;IAE9C,QAAQ,IAAI,CAAC,QAAQ,EAAE;QACtB,KAAK,QAAQ;YACZ,yCAAK,CAAC,aAAa,GAAG,MAAM,yCAAK,CAAC,qBAAqB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACvE,MAAM;QAEP,KAAK,QAAQ;YACZ,yCAAK,CAAC,aAAa,GAAG,MAAM,yCAAK,CAAC,qBAAqB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACvE,MAAM;KACP;IAED,uCAAI,CAAC,SAAS,EAAE,CAAC;AAClB,CAAC,EAAC","sources":["webpack://pacman-contribution-graph/./src/canvas.ts","webpack://pacman-contribution-graph/./src/constants.ts","webpack://pacman-contribution-graph/./src/game.ts","webpack://pacman-contribution-graph/./src/music-player.ts","webpack://pacman-contribution-graph/./src/store.ts","webpack://pacman-contribution-graph/./src/svg.ts","webpack://pacman-contribution-graph/./src/utils.ts","webpack://pacman-contribution-graph/webpack/bootstrap","webpack://pacman-contribution-graph/webpack/runtime/define property getters","webpack://pacman-contribution-graph/webpack/runtime/hasOwnProperty shorthand","webpack://pacman-contribution-graph/webpack/runtime/make namespace object","webpack://pacman-contribution-graph/./src/index.ts"],"sourcesContent":["import { CELL_SIZE, GAP_SIZE, GRID_HEIGHT, GRID_WIDTH, PACMAN_COLOR, PACMAN_COLOR_DEAD, PACMAN_COLOR_POWERUP } from './constants';\nimport { MusicPlayer } from './music-player';\nimport { Store } from './store';\nimport { Utils } from './utils';\n\nconst resizeCanvas = () => {\n\tconst canvasWidth = GRID_WIDTH * (CELL_SIZE + GAP_SIZE);\n\tconst canvasHeight = GRID_HEIGHT * (CELL_SIZE + GAP_SIZE) + 20; // Adding some space for months on top\n\n\tStore.config.canvas.width = canvasWidth;\n\tStore.config.canvas.height = canvasHeight;\n};\n\nconst drawGrid = () => {\n\tStore.config.canvas.getContext('2d')!.fillStyle = Utils.getCurrentTheme().gridBackground;\n\tStore.config.canvas.getContext('2d')!.fillRect(0, 0, Store.config.canvas.width, Store.config.canvas.height);\n\n\tfor (let x = 0; x < GRID_HEIGHT; x++) {\n\t\tfor (let y = 0; y < GRID_WIDTH; y++) {\n\t\t\tconst intensity = Store.grid[x][y];\n\t\t\tif (intensity > 0) {\n\t\t\t\tconst adjustedIntensity = intensity < 0.2 ? 0.3 : intensity;\n\t\t\t\tconst color = Utils.hexToRGBA(Utils.getCurrentTheme().contributionBoxColor, adjustedIntensity);\n\t\t\t\tStore.config.canvas.getContext('2d')!.fillStyle = color;\n\t\t\t} else {\n\t\t\t\tStore.config.canvas.getContext('2d')!.fillStyle = Utils.getCurrentTheme().emptyContributionBoxColor;\n\t\t\t}\n\t\t\tStore.config.canvas.getContext('2d')!.beginPath();\n\t\t\tStore.config.canvas\n\t\t\t\t.getContext('2d')!\n\t\t\t\t.roundRect(y * (CELL_SIZE + GAP_SIZE), x * (CELL_SIZE + GAP_SIZE) + 15, CELL_SIZE, CELL_SIZE, 5);\n\t\t\tStore.config.canvas.getContext('2d')!.fill();\n\t\t}\n\t}\n\n\tStore.config.canvas.getContext('2d')!.fillStyle = Utils.getCurrentTheme().textColor;\n\tStore.config.canvas.getContext('2d')!.font = '10px Arial';\n\tStore.config.canvas.getContext('2d')!.textAlign = 'center';\n\n\tlet lastMonth = '';\n\tfor (let y = 0; y < GRID_WIDTH; y++) {\n\t\tif (Store.monthLabels[y] !== lastMonth) {\n\t\t\tconst xPos = y * (CELL_SIZE + GAP_SIZE) + CELL_SIZE / 2;\n\t\t\tStore.config.canvas.getContext('2d')!.fillText(Store.monthLabels[y], xPos, 10);\n\t\t\tlastMonth = Store.monthLabels[y];\n\t\t}\n\t}\n};\n\nconst drawPacman = () => {\n\tconst x = Store.pacman.y * (CELL_SIZE + GAP_SIZE) + CELL_SIZE / 2;\n\tconst y = Store.pacman.x * (CELL_SIZE + GAP_SIZE) + CELL_SIZE / 2 + 15;\n\tconst radius = CELL_SIZE / 2;\n\n\t// Change Pac-Man's color to red if he's on power-up, dead, else yellow\n\tif (Store.pacman.deadReaminingDuration) {\n\t\tStore.config.canvas.getContext('2d')!.fillStyle = PACMAN_COLOR_DEAD;\n\t} else if (Store.pacman.powerupReaminingDuration) {\n\t\tStore.config.canvas.getContext('2d')!.fillStyle = PACMAN_COLOR_POWERUP;\n\t} else {\n\t\tStore.config.canvas.getContext('2d')!.fillStyle = PACMAN_COLOR;\n\t}\n\n\tconst mouthAngle = Store.pacmanMouthOpen ? 0.35 * Math.PI : 0.1 * Math.PI;\n\n\tlet startAngle, endAngle;\n\tswitch (Store.pacman.direction) {\n\t\tcase 'up':\n\t\t\tstartAngle = 1.5 * Math.PI + mouthAngle;\n\t\t\tendAngle = 1.5 * Math.PI - mouthAngle;\n\t\t\tbreak;\n\t\tcase 'down':\n\t\t\tstartAngle = 0.5 * Math.PI + mouthAngle;\n\t\t\tendAngle = 0.5 * Math.PI - mouthAngle;\n\t\t\tbreak;\n\t\tcase 'left':\n\t\t\tstartAngle = Math.PI + mouthAngle;\n\t\t\tendAngle = Math.PI - mouthAngle;\n\t\t\tbreak;\n\t\tcase 'right':\n\t\tdefault:\n\t\t\tstartAngle = 0 + mouthAngle;\n\t\t\tendAngle = 2 * Math.PI - mouthAngle;\n\t\t\tbreak;\n\t}\n\n\tStore.config.canvas.getContext('2d')!.beginPath();\n\tStore.config.canvas.getContext('2d')!.arc(x, y, radius, startAngle, endAngle);\n\tStore.config.canvas.getContext('2d')!.lineTo(x, y);\n\tStore.config.canvas.getContext('2d')!.fill();\n};\n\nconst drawGhosts = () => {\n\tStore.ghosts.forEach((ghost) => {\n\t\tconst x = ghost.y * (CELL_SIZE + GAP_SIZE) + CELL_SIZE / 2;\n\t\tconst y = ghost.x * (CELL_SIZE + GAP_SIZE) + CELL_SIZE / 2 + 15;\n\t\tconst radius = CELL_SIZE / 2;\n\n\t\tStore.config.canvas.getContext('2d')!.fillStyle = ghost.scared ? 'blue' : ghost.color;\n\t\tStore.config.canvas.getContext('2d')!.beginPath();\n\t\tStore.config.canvas.getContext('2d')!.arc(x, y, radius, 0, Math.PI);\n\t\tStore.config.canvas.getContext('2d')!.rect(x - radius, y, radius * 2, radius);\n\t\tStore.config.canvas.getContext('2d')!.fill();\n\n\t\tStore.config.canvas.getContext('2d')!.fillStyle = 'white';\n\t\tStore.config.canvas.getContext('2d')!.beginPath();\n\t\tStore.config.canvas.getContext('2d')!.arc(x - radius / 3, y - radius / 3, radius / 4, 0, Math.PI * 2);\n\t\tStore.config.canvas.getContext('2d')!.arc(x + radius / 3, y - radius / 3, radius / 4, 0, Math.PI * 2);\n\t\tStore.config.canvas.getContext('2d')!.fill();\n\n\t\tStore.config.canvas.getContext('2d')!.fillStyle = 'black';\n\t\tStore.config.canvas.getContext('2d')!.beginPath();\n\t\tStore.config.canvas.getContext('2d')!.arc(x - radius / 3, y - radius / 3, radius / 8, 0, Math.PI * 2);\n\t\tStore.config.canvas.getContext('2d')!.arc(x + radius / 3, y - radius / 3, radius / 8, 0, Math.PI * 2);\n\t\tStore.config.canvas.getContext('2d')!.fill();\n\t});\n};\n\nconst renderGameOver = () => {\n\tStore.config.canvas.getContext('2d')!.fillStyle = 'black';\n\tStore.config.canvas.getContext('2d')!.font = '20px Arial';\n\tStore.config.canvas.getContext('2d')!.textAlign = 'center';\n\tStore.config.canvas.getContext('2d')!.fillText('Game Over', Store.config.canvas.width / 2, Store.config.canvas.height / 2);\n};\n\nconst drawSoundController = () => {\n\tif (!Store.config.enableSounds) {\n\t\tconsole.log('vvvv');\n\t\treturn;\n\t}\n\n\tconst width = 30,\n\t\theight = 30,\n\t\tleft = Store.config.canvas.width - width - 10,\n\t\ttop = 10;\n\tStore.config.canvas.getContext('2d')!.fillStyle = `rgba(0, 0, 0, ${MusicPlayer.getInstance().isMuted ? 0.3 : 0.5})`;\n\tStore.config.canvas.getContext('2d')!.beginPath();\n\tStore.config.canvas.getContext('2d')!.moveTo(left + 10, top + 10);\n\tStore.config.canvas.getContext('2d')!.lineTo(left + 20, top + 5);\n\tStore.config.canvas.getContext('2d')!.lineTo(left + 20, top + 25);\n\tStore.config.canvas.getContext('2d')!.lineTo(left + 10, top + 20);\n\tStore.config.canvas.getContext('2d')!.closePath();\n\tStore.config.canvas.getContext('2d')!.fill();\n\n\tif (!MusicPlayer.getInstance().isMuted) {\n\t\tStore.config.canvas.getContext('2d')!.strokeStyle = `rgba(0, 0, 0, 0.4)`;\n\t\tStore.config.canvas.getContext('2d')!.lineWidth = 2;\n\n\t\t// First wave\n\t\tStore.config.canvas.getContext('2d')!.beginPath();\n\t\tStore.config.canvas.getContext('2d')!.arc(left + 25, top + 15, 5, 0, Math.PI * 2);\n\t\tStore.config.canvas.getContext('2d')!.stroke();\n\n\t\t// Second wave\n\t\tStore.config.canvas.getContext('2d')!.beginPath();\n\t\tStore.config.canvas.getContext('2d')!.arc(left + 25, top + 15, 8, 0, Math.PI * 2);\n\t\tStore.config.canvas.getContext('2d')!.stroke();\n\t} else {\n\t\t// Mute line\n\t\tStore.config.canvas.getContext('2d')!.strokeStyle = 'rgba(255, 0, 0, 0.6)';\n\t\tStore.config.canvas.getContext('2d')!.lineWidth = 3;\n\t\tStore.config.canvas.getContext('2d')!.beginPath();\n\t\tStore.config.canvas.getContext('2d')!.moveTo(left + 25, top + 5);\n\t\tStore.config.canvas.getContext('2d')!.lineTo(left + 5, top + 25);\n\t\tStore.config.canvas.getContext('2d')!.stroke();\n\t}\n};\n\nconst listenToSoundController = () => {\n\tif (!Store.config.enableSounds) {\n\t\treturn;\n\t}\n\tStore.config.canvas.addEventListener('click', function (event) {\n\t\tconst rect = Store.config.canvas.getBoundingClientRect();\n\t\tconst x = event.clientX - rect.left,\n\t\t\ty = event.clientY - rect.top;\n\t\tconst width = 30,\n\t\t\theight = 30,\n\t\t\tleft = Store.config.canvas.width - width - 10,\n\t\t\ttop = 10;\n\n\t\tif (x >= left && x <= left + this.width && y >= top && y <= top + this.height) {\n\t\t\tif (MusicPlayer.getInstance().isMuted) {\n\t\t\t\tMusicPlayer.getInstance().unmute();\n\t\t\t} else {\n\t\t\t\tMusicPlayer.getInstance().mute();\n\t\t\t}\n\t\t}\n\t});\n};\n\nexport const Canvas = {\n\tresizeCanvas,\n\tdrawGrid,\n\tdrawPacman,\n\tdrawGhosts,\n\trenderGameOver,\n\tdrawSoundController,\n\tlistenToSoundController\n};\n","import { GameTheme, ThemeKeys } from './types';\n\nexport const CELL_SIZE = 20;\nexport const GAP_SIZE = 2;\nexport const GRID_WIDTH = 52;\nexport const GRID_HEIGHT = 7;\nexport const PACMAN_COLOR = 'yellow';\nexport const PACMAN_COLOR_POWERUP = 'red';\nexport const PACMAN_COLOR_DEAD = '#80808064';\nexport const GHOST_COLORS = ['red', 'pink', 'cyan', 'orange'];\nexport const MONTHS = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];\nexport const DELTA_TIME = 250;\nexport const PACMAN_DEATH_DURATION = 10;\nexport const PACMAN_POWERUP_DURATION = 15;\nexport const GAME_THEMES: { [key in ThemeKeys]: GameTheme } = {\n\tgithub: {\n\t\ttextColor: '#586069',\n\t\tgridBackground: '#ffffff',\n\t\tcontributionBoxColor: '#9be9a8',\n\t\temptyContributionBoxColor: '#ebedf0'\n\t},\n\t'github-dark': {\n\t\ttextColor: '#8b949e',\n\t\tgridBackground: '#0d1117',\n\t\tcontributionBoxColor: '#26a641',\n\t\temptyContributionBoxColor: '#161b22'\n\t},\n\tgitlab: {\n\t\ttextColor: '#626167',\n\t\tgridBackground: '#ffffff',\n\t\tcontributionBoxColor: '#7992f5',\n\t\temptyContributionBoxColor: '#ececef'\n\t},\n\t'gitlab-dark': {\n\t\ttextColor: '#999999',\n\t\tgridBackground: '#1f1f1f',\n\t\tcontributionBoxColor: '#2e7db1',\n\t\temptyContributionBoxColor: '#2d2d2d'\n\t}\n};\n","import { Canvas } from './canvas';\nimport { DELTA_TIME, GHOST_COLORS, GRID_HEIGHT, GRID_WIDTH, MONTHS, PACMAN_DEATH_DURATION, PACMAN_POWERUP_DURATION } from './constants';\nimport { MusicPlayer, Sound } from './music-player';\nimport { Store } from './store';\nimport { SVG } from './svg';\n\nconst initializeGrid = () => {\n\tStore.grid = Array.from({ length: GRID_HEIGHT }, () => Array.from({ length: GRID_WIDTH }, () => 0));\n\tStore.monthLabels = Array(GRID_WIDTH).fill('');\n\tlet maxCommits = 1;\n\n\tconst now = new Date();\n\tconst startOfCurrentWeek = new Date(now);\n\tstartOfCurrentWeek.setDate(now.getDate() - now.getDay());\n\n\tStore.contributions.forEach((contribution) => {\n\t\tconst contributionDate = new Date(contribution.date);\n\t\tconst dayOfWeek = contributionDate.getDay();\n\t\tconst weeksAgo = Math.floor((+startOfCurrentWeek - +contributionDate) / (1000 * 60 * 60 * 24 * 7));\n\n\t\tif (weeksAgo >= 0 && weeksAgo < GRID_WIDTH && dayOfWeek >= 0 && dayOfWeek < GRID_HEIGHT) {\n\t\t\tStore.grid[dayOfWeek][GRID_WIDTH - 1 - weeksAgo] = contribution.count;\n\t\t\tif (contribution.count > maxCommits) maxCommits = contribution.count;\n\t\t}\n\t});\n\n\tfor (let x = 0; x < GRID_HEIGHT; x++) {\n\t\tfor (let y = 0; y < GRID_WIDTH; y++) {\n\t\t\tif (Store.grid[x][y] > 0) {\n\t\t\t\tStore.grid[x][y] = Store.grid[x][y] / maxCommits;\n\t\t\t}\n\t\t}\n\t}\n\n\tfor (let y = 0; y < GRID_WIDTH; y++) {\n\t\tconst weeksAgo = GRID_WIDTH - 1 - y;\n\t\tconst columnDate = new Date(startOfCurrentWeek);\n\t\tcolumnDate.setDate(columnDate.getDate() - weeksAgo * 7);\n\t\tStore.monthLabels[y] = MONTHS[columnDate.getMonth()];\n\t}\n};\n\nconst placePacman = () => {\n\tlet validCells = [];\n\tfor (let x = 0; x < GRID_HEIGHT; x++) {\n\t\tfor (let y = 0; y < GRID_WIDTH; y++) {\n\t\t\tif (Store.grid[x][y] > 0) validCells.push({ x, y });\n\t\t}\n\t}\n\tif (validCells.length > 0) {\n\t\tconst randomCell = validCells[Math.floor(Math.random() * validCells.length)];\n\t\tStore.pacman = {\n\t\t\tx: randomCell.x,\n\t\t\ty: randomCell.y,\n\t\t\tdirection: 'right',\n\t\t\tpoints: 0,\n\t\t\tdeadReaminingDuration: 0,\n\t\t\tpowerupReaminingDuration: 0\n\t\t};\n\t}\n\tif (Store.config.outputFormat == 'canvas') Canvas.drawPacman();\n};\n\nconst placeGhosts = () => {\n\tStore.ghosts = [];\n\tStore.scaredGhostsDestinations = [];\n\t// Create 4 ghosts\n\tfor (let i = 0; i < 4; i++) {\n\t\tconst color = GHOST_COLORS[i % GHOST_COLORS.length];\n\t\tlet x, y;\n\t\tdo {\n\t\t\tx = Math.floor(Math.random() * GRID_HEIGHT);\n\t\t\ty = Math.floor(Math.random() * GRID_WIDTH);\n\t\t} while (Store.grid[x][y] === 0);\n\t\tStore.ghosts.push({ x, y, color, scared: false, target: undefined });\n\t\tStore.scaredGhostsDestinations.push({ x: 0, y: 0 });\n\t}\n\tif (Store.config.outputFormat == 'canvas') Canvas.drawGhosts();\n};\n\nconst startGame = async () => {\n\tif (Store.config.outputFormat == 'canvas') {\n\t\tStore.config.canvas = Store.config.canvas;\n\t\tCanvas.resizeCanvas();\n\t\tCanvas.listenToSoundController();\n\t}\n\n\tStore.frameCount = 0;\n\tStore.ghosts.forEach((ghost) => (ghost.scared = false));\n\n\tinitializeGrid();\n\tif (Store.config.outputFormat == 'canvas') Canvas.drawGrid();\n\n\tif (Store.config.outputFormat == 'canvas') {\n\t\tif (!Store.config.enableSounds) {\n\t\t\tMusicPlayer.getInstance().mute();\n\t\t}\n\t\tawait MusicPlayer.getInstance().preloadSounds();\n\t\tMusicPlayer.getInstance().startDefaultSound();\n\t\tawait MusicPlayer.getInstance().play(Sound.BEGINNING);\n\t}\n\n\tplacePacman();\n\tplaceGhosts();\n\n\tif (Store.config.outputFormat == 'svg') {\n\t\tconst remainingCells = () => Store.grid.some((row) => row.some((cell) => cell > 0));\n\t\twhile (remainingCells()) {\n\t\t\tawait updateGame();\n\t\t}\n\t\t// One more time to generate svg\n\t\tawait updateGame();\n\t} else {\n\t\tclearInterval(Store.gameInterval);\n\t\tStore.gameInterval = setInterval(async () => await updateGame(), DELTA_TIME);\n\t}\n};\n\nconst updateGame = async () => {\n\tStore.frameCount++;\n\tif (Store.frameCount % Store.config.gameSpeed !== 0) {\n\t\tStore.gameHistory.push({\n\t\t\tpacman: { ...Store.pacman },\n\t\t\tghosts: Store.ghosts.map((ghost) => ({ ...ghost })),\n\t\t\tgrid: Store.grid.map((row) => [...row])\n\t\t});\n\t\treturn;\n\t}\n\n\tif (Store.pacman.deadReaminingDuration) {\n\t\tStore.pacman.deadReaminingDuration--;\n\t\tif (!Store.pacman.deadReaminingDuration) {\n\t\t\t// IT'S ALIVE!\n\t\t\tif (Store.config.outputFormat == 'canvas')\n\t\t\t\tMusicPlayer.getInstance()\n\t\t\t\t\t.play(Sound.GAME_OVER)\n\t\t\t\t\t.then(() => MusicPlayer.getInstance().startDefaultSound());\n\t\t}\n\t}\n\n\tif (Store.pacman.powerupReaminingDuration) {\n\t\tStore.pacman.powerupReaminingDuration--;\n\t\tif (!Store.pacman.powerupReaminingDuration) {\n\t\t\tStore.ghosts.forEach((ghost) => (ghost.scared = false));\n\t\t\tStore.pacman.points = 0;\n\t\t}\n\t}\n\n\tconst remainingCells = Store.grid.some((row) => row.some((cell) => cell > 0));\n\tif (!remainingCells) {\n\t\tif (Store.config.outputFormat == 'canvas') {\n\t\t\tclearInterval(Store.gameInterval);\n\t\t\tif (Store.config.outputFormat == 'canvas') {\n\t\t\t\tCanvas.renderGameOver();\n\t\t\t\tMusicPlayer.getInstance()\n\t\t\t\t\t.play(Sound.BEGINNING)\n\t\t\t\t\t.then(() => MusicPlayer.getInstance().stopDefaultSound());\n\t\t\t}\n\t\t}\n\n\t\tif (Store.config.outputFormat == 'svg') {\n\t\t\tconst animatedSVG = SVG.generateAnimatedSVG();\n\t\t\tconst svgBlob = new Blob([animatedSVG], {\n\t\t\t\ttype: 'image/svg+xml;charset=utf-8'\n\t\t\t});\n\t\t\tconst svgUrl = URL.createObjectURL(svgBlob);\n\t\t\tStore.config.svgCallback(svgUrl);\n\t\t}\n\n\t\tStore.config.gameOverCallback();\n\t\treturn;\n\t}\n\n\tmovePacman();\n\tmoveGhosts();\n\tcheckCollisions();\n\n\tStore.pacmanMouthOpen = !Store.pacmanMouthOpen;\n\n\tStore.gameHistory.push({\n\t\tpacman: { ...Store.pacman },\n\t\tghosts: Store.ghosts.map((ghost) => ({ ...ghost })),\n\t\tgrid: Store.grid.map((row) => [...row])\n\t});\n\n\tif (Store.config.outputFormat == 'canvas') Canvas.drawGrid();\n\tif (Store.config.outputFormat == 'canvas') Canvas.drawPacman();\n\tif (Store.config.outputFormat == 'canvas') Canvas.drawGhosts();\n\tif (Store.config.outputFormat == 'canvas') Canvas.drawSoundController();\n};\n\nconst movePacman = () => {\n\tif (Store.pacman.deadReaminingDuration) {\n\t\treturn;\n\t}\n\tlet targetCells: { x: number; y: number; distance: number }[] = [];\n\n\tif (Store.pacman.powerupReaminingDuration) {\n\t\ttargetCells = Store.ghosts.map((ghost) => ({\n\t\t\tx: ghost.x,\n\t\t\ty: ghost.y,\n\t\t\tdistance: Infinity\n\t\t}));\n\t} else {\n\t\tfor (let x = 0; x < GRID_HEIGHT; x++) {\n\t\t\tfor (let y = 0; y < GRID_WIDTH; y++) {\n\t\t\t\tif (Store.grid[x][y] > 0) targetCells.push({ x, y, distance: Infinity });\n\t\t\t}\n\t\t}\n\t}\n\n\tif (targetCells.length === 0) return;\n\n\tconst closest = targetCells.reduce(\n\t\t(closest, cell) => {\n\t\t\tconst distance = Math.abs(cell.x - Store.pacman.x) + Math.abs(cell.y - Store.pacman.y);\n\t\t\treturn distance < closest.distance ? { ...cell, distance } : closest;\n\t\t},\n\t\t{ x: Store.pacman.x, y: Store.pacman.y, distance: Infinity }\n\t);\n\n\tconst dx = closest.x - Store.pacman.x;\n\tconst dy = closest.y - Store.pacman.y;\n\n\tif (Math.abs(dx) > Math.abs(dy)) {\n\t\tStore.pacman.x += Math.sign(dx);\n\t\tStore.pacman.direction = dx > 0 ? 'down' : 'up';\n\t} else {\n\t\tStore.pacman.y += Math.sign(dy);\n\t\tStore.pacman.direction = dy > 0 ? 'right' : 'left';\n\t}\n\n\tif (Store.grid[Store.pacman.x][Store.pacman.y] > 0) {\n\t\tStore.pacman.points += 1;\n\t\tStore.grid[Store.pacman.x][Store.pacman.y] = 0;\n\n\t\tif (Store.pacman.points >= 30) activatePowerUp();\n\t}\n};\n\nconst moveGhosts = () => {\n\tStore.ghosts.forEach((ghost, index) => {\n\t\tif (ghost.scared) {\n\t\t\tif (!ghost.target) {\n\t\t\t\tghost.target = getRandomDestination(ghost.x, ghost.y);\n\t\t\t}\n\n\t\t\tconst dx = ghost.target.x - ghost.x;\n\t\t\tconst dy = ghost.target.y - ghost.y;\n\t\t\tconst moveX = Math.abs(dx) > Math.abs(dy) ? Math.sign(dx) : 0;\n\t\t\tconst moveY = Math.abs(dy) >= Math.abs(dx) ? Math.sign(dy) : 0;\n\n\t\t\tconst newX = ghost.x + moveX;\n\t\t\tconst newY = ghost.y + moveY;\n\n\t\t\tif (newX >= 0 && newX < GRID_HEIGHT && newY >= 0 && newY < GRID_WIDTH) {\n\t\t\t\tghost.x = newX;\n\t\t\t\tghost.y = newY;\n\t\t\t}\n\n\t\t\tif (ghost.x === ghost.target.x && ghost.y === ghost.target.y) {\n\t\t\t\tghost.target = getRandomDestination(ghost.x, ghost.y);\n\t\t\t}\n\t\t} else {\n\t\t\tconst directions = [\n\t\t\t\t[-1, 0],\n\t\t\t\t[1, 0],\n\t\t\t\t[0, -1],\n\t\t\t\t[0, 1]\n\t\t\t];\n\t\t\tconst [dx, dy] = directions[Math.floor(Math.random() * directions.length)];\n\n\t\t\t// If Pacman has the power-up, ghosts move slower (move every other frame)\n\t\t\tif (Store.pacman.powerupReaminingDuration && Math.random() < 0.5) return;\n\n\t\t\tconst newX = ghost.x + dx;\n\t\t\tconst newY = ghost.y + dy;\n\n\t\t\tif (newX >= 0 && newX < GRID_HEIGHT && newY >= 0 && newY < GRID_WIDTH) {\n\t\t\t\tghost.x = newX;\n\t\t\t\tghost.y = newY;\n\t\t\t}\n\t\t}\n\t});\n};\n\nconst getRandomDestination = (x: number, y: number) => {\n\tconst maxDistance = 10;\n\tconst randomX = x + Math.floor(Math.random() * (2 * maxDistance + 1)) - maxDistance;\n\tconst randomY = y + Math.floor(Math.random() * (2 * maxDistance + 1)) - maxDistance;\n\treturn {\n\t\tx: Math.max(0, Math.min(randomX, GRID_HEIGHT - 1)),\n\t\ty: Math.max(0, Math.min(randomY, GRID_WIDTH - 1))\n\t};\n};\n\nconst checkCollisions = () => {\n\tif (Store.pacman.deadReaminingDuration) return;\n\n\tStore.ghosts.forEach((ghost, index) => {\n\t\tif (ghost.x === Store.pacman.x && ghost.y === Store.pacman.y) {\n\t\t\tif (Store.pacman.powerupReaminingDuration && ghost.scared) {\n\t\t\t\trespawnGhost(index);\n\t\t\t\tStore.pacman.points += 10;\n\t\t\t\tif (Store.config.outputFormat == 'canvas') {\n\t\t\t\t\tMusicPlayer.getInstance().play(Sound.EAT_GHOST);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tStore.pacman.points = 0;\n\t\t\t\tStore.pacman.powerupReaminingDuration = 0;\n\t\t\t\tStore.pacman.deadReaminingDuration = PACMAN_DEATH_DURATION;\n\t\t\t\tif (Store.config.outputFormat == 'canvas') {\n\t\t\t\t\tMusicPlayer.getInstance()\n\t\t\t\t\t\t.play(Sound.GAME_OVER)\n\t\t\t\t\t\t.then(() => MusicPlayer.getInstance().stopDefaultSound());\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n};\n\nconst respawnGhost = (ghostIndex: number) => {\n\tlet x, y;\n\tdo {\n\t\tx = Math.floor(Math.random() * GRID_HEIGHT);\n\t\ty = Math.floor(Math.random() * GRID_WIDTH);\n\t} while ((Math.abs(x - Store.pacman.x) <= 2 && Math.abs(y - Store.pacman.y) <= 2) || Store.grid[x][y] === 0);\n\tStore.ghosts[ghostIndex] = {\n\t\tx,\n\t\ty,\n\t\tcolor: GHOST_COLORS[ghostIndex % GHOST_COLORS.length],\n\t\tscared: false,\n\t\ttarget: undefined\n\t};\n};\n\nconst activatePowerUp = () => {\n\tStore.pacman.powerupReaminingDuration = PACMAN_POWERUP_DURATION;\n\tStore.ghosts.forEach((ghost) => (ghost.scared = true));\n};\n\nexport const Game = {\n\tstartGame\n};\n","export enum Sound {\n\tDEFAULT = '/src/assets/sounds/pacman_chomp.wav',\n\tBEGINNING = '/src/assets/sounds/pacman_beginning.wav',\n\tGAME_OVER = '/src/assets/sounds/pacman_death.wav',\n\tEAT_GHOST = '/src/assets/sounds/pacman_eatghost.wav'\n}\n\nexport class MusicPlayer {\n\tprivate static instance: MusicPlayer;\n\tprivate audioContext: AudioContext;\n\tprivate sounds: Map<Sound, AudioBuffer> = new Map();\n\tprivate currentSource: AudioBufferSourceNode | null = null;\n\tprivate defaultSource: AudioBufferSourceNode | null = null;\n\tpublic isMuted: boolean = false;\n\n\tprivate constructor() {\n\t\tthis.audioContext = new AudioContext();\n\t}\n\n\tpublic static getInstance(): MusicPlayer {\n\t\tif (!MusicPlayer.instance) {\n\t\t\tMusicPlayer.instance = new MusicPlayer();\n\t\t}\n\t\treturn MusicPlayer.instance;\n\t}\n\n\tpublic async preloadSounds(): Promise<void> {\n\t\tfor (const sound of Object.values(Sound)) {\n\t\t\tconst response = await fetch(sound);\n\t\t\tconst arrayBuffer = await response.arrayBuffer();\n\t\t\tconst audioBuffer = await this.audioContext.decodeAudioData(arrayBuffer);\n\t\t\tthis.sounds.set(sound as Sound, audioBuffer);\n\t\t}\n\t}\n\n\tpublic async play(sound: Sound): Promise<void> {\n\t\tif (this.isMuted) {\n\t\t\treturn;\n\t\t}\n\t\tif (this.currentSource) {\n\t\t\tthis.currentSource.stop();\n\t\t}\n\n\t\tconst buffer = this.sounds.get(sound);\n\t\tif (!buffer) {\n\t\t\tconsole.error(`Sound ${sound} not found`);\n\t\t\treturn;\n\t\t}\n\n\t\tthis.currentSource = this.audioContext.createBufferSource();\n\t\tthis.currentSource.buffer = buffer;\n\t\tthis.currentSource.connect(this.audioContext.destination);\n\n\t\tif (!this.isMuted) {\n\t\t\tthis.currentSource.start();\n\t\t}\n\n\t\treturn new Promise((resolve) => {\n\t\t\tthis.currentSource!.onended = () => {\n\t\t\t\tthis.currentSource = null;\n\t\t\t\tresolve();\n\t\t\t};\n\t\t});\n\t}\n\n\tpublic startDefaultSound(): void {\n\t\tif (this.defaultSource) {\n\t\t\tthis.defaultSource.stop();\n\t\t}\n\n\t\tconst buffer = this.sounds.get(Sound.DEFAULT);\n\t\tif (!buffer) {\n\t\t\tconsole.error('Default sound not found');\n\t\t\treturn;\n\t\t}\n\n\t\tthis.defaultSource = this.audioContext.createBufferSource();\n\t\tthis.defaultSource.buffer = buffer;\n\t\tthis.defaultSource.loop = true;\n\t\tthis.defaultSource.connect(this.audioContext.destination);\n\n\t\tif (!this.isMuted) {\n\t\t\tthis.defaultSource.start();\n\t\t}\n\t}\n\n\tpublic stopDefaultSound(): void {\n\t\tif (this.defaultSource) {\n\t\t\tthis.defaultSource.stop();\n\t\t\tthis.defaultSource = null;\n\t\t}\n\t}\n\n\tpublic mute(): void {\n\t\tthis.isMuted = true;\n\t\tif (this.currentSource) {\n\t\t\tthis.currentSource.disconnect();\n\t\t}\n\t\tif (this.defaultSource) {\n\t\t\tthis.defaultSource.disconnect();\n\t\t}\n\t}\n\n\tpublic unmute(): void {\n\t\tthis.isMuted = false;\n\t\tif (this.currentSource) {\n\t\t\tthis.currentSource.connect(this.audioContext.destination);\n\t\t}\n\t\tif (this.defaultSource) {\n\t\t\tthis.defaultSource.connect(this.audioContext.destination);\n\t\t}\n\t}\n}\n","import type { Config, StoreType } from './types';\n\nexport const Store: StoreType = {\n\tframeCount: 0,\n\tcontributions: [],\n\tpacman: {\n\t\tx: 0,\n\t\ty: 0,\n\t\tdirection: 'right',\n\t\tpoints: 0,\n\t\tdeadReaminingDuration: 0,\n\t\tpowerupReaminingDuration: 0\n\t},\n\tghosts: [],\n\tgrid: [],\n\tmonthLabels: [],\n\tpacmanMouthOpen: true,\n\tgameInterval: 0,\n\tscaredGhostsDestinations: [],\n\tgameHistory: [],\n\tconfig: undefined as unknown as Config\n};\n","import { CELL_SIZE, GAP_SIZE, GRID_HEIGHT, GRID_WIDTH, PACMAN_COLOR, PACMAN_COLOR_DEAD, PACMAN_COLOR_POWERUP } from './constants';\nimport { Store } from './store';\nimport { Utils } from './utils';\n\nconst generateAnimatedSVG = () => {\n\tconst svgWidth = GRID_WIDTH * (CELL_SIZE + GAP_SIZE);\n\tconst svgHeight = GRID_HEIGHT * (CELL_SIZE + GAP_SIZE) + 20;\n\tlet svg = `<svg width=\"${svgWidth}\" height=\"${svgHeight}\" xmlns=\"http://www.w3.org/2000/svg\">`;\n\tsvg += `<rect width=\"100%\" height=\"100%\" fill=\"${Utils.getCurrentTheme().gridBackground}\"/>`;\n\n\t// Month labels\n\tlet lastMonth = '';\n\tfor (let y = 0; y < GRID_WIDTH; y++) {\n\t\tif (Store.monthLabels[y] !== lastMonth) {\n\t\t\tconst xPos = y * (CELL_SIZE + GAP_SIZE) + CELL_SIZE / 2;\n\t\t\tsvg += `<text x=\"${xPos}\" y=\"10\" text-anchor=\"middle\" font-size=\"10\" fill=\"${Utils.getCurrentTheme().textColor}\">${Store.monthLabels[y]}</text>`;\n\t\t\tlastMonth = Store.monthLabels[y];\n\t\t}\n\t}\n\n\t// Grid\n\tfor (let x = 0; x < GRID_HEIGHT; x++) {\n\t\tfor (let y = 0; y < GRID_WIDTH; y++) {\n\t\t\tconst cellX = y * (CELL_SIZE + GAP_SIZE);\n\t\t\tconst cellY = x * (CELL_SIZE + GAP_SIZE) + 15;\n\t\t\tconst intensity = Store.gameHistory[0].grid[x][y];\n\t\t\tconst color = intensity > 0 ? getContributionColor(intensity) : Utils.getCurrentTheme().emptyContributionBoxColor;\n\t\t\tsvg += `<rect id=\"cell-${x}-${y}\" x=\"${cellX}\" y=\"${cellY}\" width=\"${CELL_SIZE}\" height=\"${CELL_SIZE}\" rx=\"5\" fill=\"${color}\">\n <animate attributeName=\"fill\" dur=\"${Store.gameHistory.length * 300}ms\" repeatCount=\"indefinite\" \n values=\"${generateCellColorValues(x, y)}\" \n keyTimes=\"${generateKeyTimes()}\"/>\n </rect>`;\n\t\t}\n\t}\n\n\t// Pacman\n\tsvg += `<path id=\"pacman\" d=\"${generatePacManPath(0.35)}\"\n transform=\"translate(${Store.pacman.y * (CELL_SIZE + GAP_SIZE)}, ${Store.pacman.x * (CELL_SIZE + GAP_SIZE) + 15})\">\n\t\t<animate attributeName=\"fill\" dur=\"${Store.gameHistory.length * 300}ms\" repeatCount=\"indefinite\"\n keyTimes=\"${generateKeyTimes()}\"\n values=\"${generatePacManColors()}\"/>\n <animateTransform attributeName=\"transform\" type=\"translate\" dur=\"${Store.gameHistory.length * 300}ms\" repeatCount=\"indefinite\"\n keyTimes=\"${generateKeyTimes()}\"\n values=\"${generatePacManPositions()}\"/>\n <animate attributeName=\"d\" dur=\"0.2s\" repeatCount=\"indefinite\"\n values=\"${generatePacManPath(0.25)};${generatePacManPath(0.05)};${generatePacManPath(0.25)}\"/>\n </path>`;\n\n\t// Ghosts\n\tStore.ghosts.forEach((ghost, index) => {\n\t\tsvg += `<path id=\"ghost${index}\" d=\"${generateGhostPath(CELL_SIZE / 2)}\" fill=\"${ghost.color}\">\n <animate attributeName=\"fill\" dur=\"${Store.gameHistory.length * 300}ms\" repeatCount=\"indefinite\"\n keyTimes=\"${generateKeyTimes()}\"\n values=\"${generateGhostColors(index)}\"/>\n <animateTransform attributeName=\"transform\" type=\"translate\" dur=\"${Store.gameHistory.length * 300}ms\" repeatCount=\"indefinite\"\n keyTimes=\"${generateKeyTimes()}\"\n values=\"${generateGhostPositions(index)}\"/>\n </path>\n <circle cx=\"${CELL_SIZE / 3}\" cy=\"${CELL_SIZE / 3}\" r=\"${CELL_SIZE / 8}\" fill=\"white\">\n <animateTransform attributeName=\"transform\" type=\"translate\" dur=\"${Store.gameHistory.length * 300}ms\" repeatCount=\"indefinite\"\n keyTimes=\"${generateKeyTimes()}\"\n values=\"${generateGhostPositions(index)}\"/>\n </circle>\n <circle cx=\"${(CELL_SIZE * 2) / 3}\" cy=\"${CELL_SIZE / 3}\" r=\"${CELL_SIZE / 8}\" fill=\"white\">\n <animateTransform attributeName=\"transform\" type=\"translate\" dur=\"${Store.gameHistory.length * 300}ms\" repeatCount=\"indefinite\"\n keyTimes=\"${generateKeyTimes()}\"\n values=\"${generateGhostPositions(index)}\"/>\n </circle>\n <circle cx=\"${CELL_SIZE / 3}\" cy=\"${CELL_SIZE / 3}\" r=\"${CELL_SIZE / 16}\" fill=\"black\">\n <animateTransform attributeName=\"transform\" type=\"translate\" dur=\"${Store.gameHistory.length * 300}ms\" repeatCount=\"indefinite\"\n keyTimes=\"${generateKeyTimes()}\"\n values=\"${generateGhostPositions(index)}\"/>\n </circle>\n <circle cx=\"${(CELL_SIZE * 2) / 3}\" cy=\"${CELL_SIZE / 3}\" r=\"${CELL_SIZE / 16}\" fill=\"black\">\n <animateTransform attributeName=\"transform\" type=\"translate\" dur=\"${Store.gameHistory.length * 300}ms\" repeatCount=\"indefinite\"\n keyTimes=\"${generateKeyTimes()}\"\n values=\"${generateGhostPositions(index)}\"/>\n </circle>`;\n\t});\n\n\tsvg += '</svg>';\n\treturn svg;\n};\n\nconst generatePacManPath = (mouthAngle: number) => {\n\tconst radius = CELL_SIZE / 2;\n\tconst startAngle = mouthAngle;\n\tconst endAngle = 2 * Math.PI - mouthAngle;\n\n\treturn `M ${radius},${radius}\n L ${radius + radius * Math.cos(startAngle)},${radius + radius * Math.sin(startAngle)}\n A ${radius},${radius} 0 1,1 ${radius + radius * Math.cos(endAngle)},${radius + radius * Math.sin(endAngle)}\n Z`;\n};\n\nconst generateKeyTimes = () => {\n\treturn Store.gameHistory.map((_, index) => index / (Store.gameHistory.length - 1)).join(';');\n};\n\nconst generatePacManPositions = () => {\n\treturn Store.gameHistory\n\t\t.map((state) => {\n\t\t\tconst x = state.pacman.y * (CELL_SIZE + GAP_SIZE);\n\t\t\tconst y = state.pacman.x * (CELL_SIZE + GAP_SIZE) + 15;\n\t\t\treturn `${x},${y}`;\n\t\t})\n\t\t.join(';');\n};\n\nconst generatePacManColors = () => {\n\treturn Store.gameHistory\n\t\t.map((state) => {\n\t\t\tif (state.pacman.deadReaminingDuration) {\n\t\t\t\treturn PACMAN_COLOR_DEAD;\n\t\t\t} else if (state.pacman.powerupReaminingDuration) {\n\t\t\t\treturn PACMAN_COLOR_POWERUP;\n\t\t\t} else {\n\t\t\t\treturn PACMAN_COLOR;\n\t\t\t}\n\t\t})\n\t\t.join(';');\n};\n\nconst generateCellColorValues = (x: number, y: number) => {\n\treturn Store.gameHistory\n\t\t.map((state) => {\n\t\t\tconst intensity = state.grid[x][y];\n\t\t\treturn intensity > 0 ? getContributionColor(intensity) : Utils.getCurrentTheme().emptyContributionBoxColor;\n\t\t})\n\t\t.join(';');\n};\n\nconst getContributionColor = (intensity: number) => {\n\tconst adjustedIntensity = intensity < 0.2 ? 0.3 : intensity;\n\treturn Utils.hexToRGBA(Utils.getCurrentTheme().contributionBoxColor, adjustedIntensity);\n};\n\nconst generateGhostPositions = (ghostIndex: number) => {\n\treturn Store.gameHistory\n\t\t.map((state) => {\n\t\t\tconst ghost = state.ghosts[ghostIndex];\n\t\t\tconst x = ghost.y * (CELL_SIZE + GAP_SIZE);\n\t\t\tconst y = ghost.x * (CELL_SIZE + GAP_SIZE) + 15;\n\t\t\treturn `${x},${y}`;\n\t\t})\n\t\t.join(';');\n};\n\nconst generateGhostPath = (radius: number) => {\n\treturn `M ${radius},${radius * 2}\n Q ${radius * 0.8},${radius * 1.5} ${radius * 0.5},${radius * 1.3}\n Q ${radius * 0.3},${radius * 1.1} 0,${radius}\n L 0,0\n L ${radius * 2},0\n L ${radius * 2},${radius}\n Q ${radius * 1.7},${radius * 1.1} ${radius * 1.5},${radius * 1.3}\n Q ${radius * 1.2},${radius * 1.5} ${radius},${radius * 2}\n Z`;\n};\n\nconst generateGhostColors = (ghostIndex: number) => {\n\treturn Store.gameHistory\n\t\t.map((state) => {\n\t\t\tconst ghost = state.ghosts[ghostIndex];\n\t\t\treturn ghost.scared ? 'blue' : ghost.color;\n\t\t})\n\t\t.join(';');\n};\n\nexport const SVG = {\n\tgenerateAnimatedSVG\n};\n","import { GAME_THEMES } from './constants';\nimport { Store } from './store';\nimport type { Contribution, GameTheme } from './types';\n\nconst getGitlabContribution = async (username: string): Promise<Contribution[]> => {\n\tconst response = await fetch(`https://gitlab.com/users/${username}/calendar.json`);\n\tconst contributionsList = await response.json();\n\treturn Object.entries(contributionsList).map(([date, count]) => ({\n\t\tdate: new Date(date),\n\t\tcount: Number(count)\n\t}));\n};\n\nconst getGithubContribution = async (username: string): Promise<Contribution[]> => {\n\tconst response = await fetch(\n\t\t`https://api.github.com/search/commits?q=author:${username}&sort=author-date&order=desc&page=1&per_page=1000`\n\t);\n\tconst contributionsList = await response.json();\n\treturn Array.from(\n\t\tcontributionsList.items\n\t\t\t.reduce((map: any, item: any) => {\n\t\t\t\tconst dateString = item.commit.committer.date.split('T')[0];\n\t\t\t\tconst date = new Date(dateString);\n\t\t\t\tconst count = (map.get(dateString) || { count: 0 }).count + 1;\n\t\t\t\treturn map.set(dateString, { date, count });\n\t\t\t}, new Map())\n\t\t\t.values()\n\t);\n};\n\nconst getCurrentTheme = (): GameTheme => {\n\treturn GAME_THEMES[Store.config.gameTheme] ?? GAME_THEMES['github'];\n};\n\nfunction hexToRGBA(hex: string, alpha: number): string {\n\tconst r = parseInt(hex.slice(1, 3), 16);\n\tconst g = parseInt(hex.slice(3, 5), 16);\n\tconst b = parseInt(hex.slice(5, 7), 16);\n\treturn `rgba(${r}, ${g}, ${b}, ${alpha})`;\n}\n\nexport const Utils = {\n\tgetGitlabContribution,\n\tgetGithubContribution,\n\tgetCurrentTheme,\n\thexToRGBA\n};\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import { Game } from './game';\nimport { Store } from './store';\nimport { Config } from './types';\nimport { Utils } from './utils';\n\nexport const renderContributions = async (conf: Config) => {\n\tconst defaultConfing: Config = {\n\t\tplatform: 'github',\n\t\tusername: '',\n\t\tcanvas: undefined as unknown as HTMLCanvasElement,\n\t\toutputFormat: 'svg',\n\t\tsvgCallback: (_: string) => {},\n\t\tgameOverCallback: () => () => {},\n\t\tgameTheme: 'github',\n\t\tgameSpeed: 1,\n\t\tenableSounds: true\n\t};\n\tStore.config = { ...defaultConfing, ...conf };\n\n\tswitch (conf.platform) {\n\t\tcase 'gitlab':\n\t\t\tStore.contributions = await Utils.getGitlabContribution(conf.username);\n\t\t\tbreak;\n\n\t\tcase 'github':\n\t\t\tStore.contributions = await Utils.getGithubContribution(conf.username);\n\t\t\tbreak;\n\t}\n\n\tGame.startGame();\n};\n"],"names":[],"sourceRoot":""}
@@ -0,0 +1 @@
1
+ var t={d:(a,e)=>{for(var n in e)t.o(e,n)&&!t.o(a,n)&&Object.defineProperty(a,n,{enumerable:!0,get:e[n]})},o:(t,a)=>Object.prototype.hasOwnProperty.call(t,a)},a={};t.d(a,{U:()=>T});const e=20,n=52,o="yellow",r=["red","pink","cyan","orange"],s=[34,139,34],c="#ececef",i=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],l={contributions:[],pacman:{x:0,y:0,direction:"right",points:0,powerUp:!1},ghosts:[],grid:[],monthLabels:[],pacmanMouthOpen:!0,gameInterval:0,scaredGhostsDestinations:[],gameHistory:[],canvas:void 0,outputFormat:"canvas",svgCallback:t=>{},gameOverCallback:()=>{}},m=()=>{l.canvas.getContext("2d").clearRect(0,0,l.canvas.width,l.canvas.height);for(let t=0;t<7;t++)for(let a=0;a<n;a++){const n=l.grid[t][a];if(n>0){const t=`rgba(${s[0]}, ${s[1]}, ${s[2]}, ${n<.2?.3:n})`;l.canvas.getContext("2d").fillStyle=t}else l.canvas.getContext("2d").fillStyle=c;l.canvas.getContext("2d").beginPath(),l.canvas.getContext("2d").roundRect(22*a,22*t+15,e,e,5),l.canvas.getContext("2d").fill()}l.canvas.getContext("2d").fillStyle="black",l.canvas.getContext("2d").font="10px Arial",l.canvas.getContext("2d").textAlign="center";let t="";for(let a=0;a<n;a++)if(l.monthLabels[a]!==t){const e=22*a+10;l.canvas.getContext("2d").fillText(l.monthLabels[a],e,10),t=l.monthLabels[a]}},h=()=>{const t=22*l.pacman.y+10,a=22*l.pacman.x+10+15;l.canvas.getContext("2d").fillStyle=l.pacman.powerUp?"red":o;const e=l.pacmanMouthOpen?.25*Math.PI:.1*Math.PI;let n,r;switch(l.pacman.direction){case"up":n=1.5*Math.PI+e,r=1.5*Math.PI-e;break;case"down":n=.5*Math.PI+e,r=.5*Math.PI-e;break;case"left":n=Math.PI+e,r=Math.PI-e;break;default:n=0+e,r=2*Math.PI-e}l.canvas.getContext("2d").beginPath(),l.canvas.getContext("2d").arc(t,a,10,n,r),l.canvas.getContext("2d").lineTo(t,a),l.canvas.getContext("2d").fill()},g=()=>{l.ghosts.forEach((t=>{const a=22*t.y+10,e=22*t.x+10+15,n=10;l.canvas.getContext("2d").fillStyle=t.scared?"blue":t.color,l.canvas.getContext("2d").beginPath(),l.canvas.getContext("2d").arc(a,e,n,0,Math.PI),l.canvas.getContext("2d").rect(a-n,e,20,n),l.canvas.getContext("2d").fill(),l.canvas.getContext("2d").fillStyle="white",l.canvas.getContext("2d").beginPath(),l.canvas.getContext("2d").arc(a-n/3,e-n/3,2.5,0,2*Math.PI),l.canvas.getContext("2d").arc(a+n/3,e-n/3,2.5,0,2*Math.PI),l.canvas.getContext("2d").fill(),l.canvas.getContext("2d").fillStyle="black",l.canvas.getContext("2d").beginPath(),l.canvas.getContext("2d").arc(a-n/3,e-n/3,1.25,0,2*Math.PI),l.canvas.getContext("2d").arc(a+n/3,e-n/3,1.25,0,2*Math.PI),l.canvas.getContext("2d").fill()}))},d=t=>{const a=10,e=t,n=2*Math.PI-t;return`M 10,10\n L ${a+a*Math.cos(e)},${a+a*Math.sin(e)}\n A 10,10 0 1,1 ${a+a*Math.cos(n)},${a+a*Math.sin(n)}\n Z`},p=()=>l.gameHistory.map(((t,a)=>a/(l.gameHistory.length-1))).join(";"),u=(t,a)=>l.gameHistory.map((e=>{const n=e.grid[t][a];return n>0?f(n):c})).join(";"),f=t=>`rgba(${s[0]}, ${s[1]}, ${s[2]}, ${t<.2?.3:t})`,v=t=>l.gameHistory.map((a=>{const e=a.ghosts[t];return`${22*e.y},${22*e.x+15}`})).join(";"),y=()=>{if("svg"==l.outputFormat){const t=()=>l.grid.some((t=>t.some((t=>t>0))));for(;t();)x();x()}else clearInterval(l.gameInterval),l.gameInterval=setInterval((()=>x()),200)},x=()=>{if(l.grid.some((t=>t.some((t=>t>0)))))$(),b(),C(),l.pacmanMouthOpen=!l.pacmanMouthOpen,l.gameHistory.push({pacman:Object.assign({},l.pacman),ghosts:l.ghosts.map((t=>Object.assign({},t))),grid:l.grid.map((t=>[...t]))}),"canvas"==l.outputFormat&&m(),"canvas"==l.outputFormat&&h(),"canvas"==l.outputFormat&&g();else{if("canvas"==l.outputFormat&&(clearInterval(l.gameInterval),"canvas"==l.outputFormat&&(l.canvas.getContext("2d").fillStyle="black",l.canvas.getContext("2d").font="20px Arial",l.canvas.getContext("2d").textAlign="center",l.canvas.getContext("2d").fillText("Game Over",l.canvas.width/2,l.canvas.height/2))),"svg"==l.outputFormat){const t=(()=>{let t='<svg width="1144" height="174" xmlns="http://www.w3.org/2000/svg">',a="";for(let e=0;e<n;e++)l.monthLabels[e]!==a&&(t+=`<text x="${22*e+10}" y="10" text-anchor="middle" font-size="10" fill="black">${l.monthLabels[e]}</text>`,a=l.monthLabels[e]);for(let a=0;a<7;a++)for(let e=0;e<n;e++){const n=22*e,o=22*a+15,r=l.gameHistory[0].grid[a][e],s=r>0?f(r):c;t+=`<rect id="cell-${a}-${e}" x="${n}" y="${o}" width="20" height="20" rx="5" fill="${s}">\n <animate attributeName="fill" dur="${300*l.gameHistory.length}ms" repeatCount="indefinite" \n values="${u(a,e)}" \n keyTimes="${p()}"/>\n </rect>`}return t+=`<path id="pacman" fill="${o}" d="${d(.25)}"\n transform="translate(${22*l.pacman.y}, ${22*l.pacman.x+15})">\n <animateTransform attributeName="transform" type="translate" dur="${300*l.gameHistory.length}ms" repeatCount="indefinite"\n keyTimes="${p()}"\n values="${l.gameHistory.map((t=>`${22*t.pacman.y},${22*t.pacman.x+15}`)).join(";")}"/>\n <animate attributeName="d" dur="0.2s" repeatCount="indefinite"\n values="${d(.25)};${d(.05)};${d(.25)}"/>\n </path>`,l.ghosts.forEach(((a,n)=>{var o,r;t+=`<path id="ghost${n}" d="${r=10,`M ${r},${2*r}\n Q ${.8*r},${1.5*r} ${.5*r},${1.3*r}\n Q ${.3*r},${1.1*r} 0,${r}\n L 0,0\n L ${2*r},0\n L ${2*r},${r}\n Q ${1.7*r},${1.1*r} ${1.5*r},${1.3*r}\n Q ${1.2*r},${1.5*r} ${r},${2*r}\n Z`}" fill="${a.color}">\n <animate attributeName="fill" dur="${300*l.gameHistory.length}ms" repeatCount="indefinite"\n keyTimes="${p()}"\n values="${o=n,l.gameHistory.map((t=>{const a=t.ghosts[o];return a.scared?"blue":a.color})).join(";")}"/>\n <animateTransform attributeName="transform" type="translate" dur="${300*l.gameHistory.length}ms" repeatCount="indefinite"\n keyTimes="${p()}"\n values="${v(n)}"/>\n </path>\n <circle cx="${e/3}" cy="${e/3}" r="2.5" fill="white">\n <animateTransform attributeName="transform" type="translate" dur="${300*l.gameHistory.length}ms" repeatCount="indefinite"\n keyTimes="${p()}"\n values="${v(n)}"/>\n </circle>\n <circle cx="${40/3}" cy="${e/3}" r="2.5" fill="white">\n <animateTransform attributeName="transform" type="translate" dur="${300*l.gameHistory.length}ms" repeatCount="indefinite"\n keyTimes="${p()}"\n values="${v(n)}"/>\n </circle>\n <circle cx="${e/3}" cy="${e/3}" r="1.25" fill="black">\n <animateTransform attributeName="transform" type="translate" dur="${300*l.gameHistory.length}ms" repeatCount="indefinite"\n keyTimes="${p()}"\n values="${v(n)}"/>\n </circle>\n <circle cx="${40/3}" cy="${e/3}" r="1.25" fill="black">\n <animateTransform attributeName="transform" type="translate" dur="${300*l.gameHistory.length}ms" repeatCount="indefinite"\n keyTimes="${p()}"\n values="${v(n)}"/>\n </circle>`})),t+="</svg>",t})(),a=new Blob([t],{type:"image/svg+xml;charset=utf-8"}),r=URL.createObjectURL(a);l.svgCallback(r)}l.gameOverCallback()}},$=()=>{let t=[];if(l.pacman.powerUp)t=l.ghosts.map((t=>({x:t.x,y:t.y,distance:1/0})));else for(let a=0;a<7;a++)for(let e=0;e<n;e++)l.grid[a][e]>0&&t.push({x:a,y:e,distance:1/0});if(0===t.length)return;const a=t.reduce(((t,a)=>{const e=Math.abs(a.x-l.pacman.x)+Math.abs(a.y-l.pacman.y);return e<t.distance?Object.assign(Object.assign({},a),{distance:e}):t}),{x:l.pacman.x,y:l.pacman.y,distance:1/0}),e=a.x-l.pacman.x,o=a.y-l.pacman.y;Math.abs(e)>Math.abs(o)?(l.pacman.x+=Math.sign(e),l.pacman.direction=e>0?"down":"up"):(l.pacman.y+=Math.sign(o),l.pacman.direction=o>0?"right":"left"),l.grid[l.pacman.x][l.pacman.y]>0&&(l.pacman.points+=1,l.grid[l.pacman.x][l.pacman.y]=0,l.pacman.points>=30&&I())},b=()=>{l.ghosts.forEach(((t,a)=>{if(t.scared){t.target||(t.target=M(t.x,t.y));const a=t.target.x-t.x,e=t.target.y-t.y,o=Math.abs(a)>Math.abs(e)?Math.sign(a):0,r=Math.abs(e)>=Math.abs(a)?Math.sign(e):0,s=t.x+o,c=t.y+r;s>=0&&s<7&&c>=0&&c<n&&(t.x=s,t.y=c),t.x===t.target.x&&t.y===t.target.y&&(t.target=M(t.x,t.y))}else{const a=[[-1,0],[1,0],[0,-1],[0,1]],[e,o]=a[Math.floor(Math.random()*a.length)];if(l.pacman.powerUp&&Math.random()<.5)return;const r=t.x+e,s=t.y+o;r>=0&&r<7&&s>=0&&s<n&&(t.x=r,t.y=s)}}))},M=(t,a)=>{const e=t+Math.floor(21*Math.random())-10,n=a+Math.floor(21*Math.random())-10;return{x:Math.max(0,Math.min(e,6)),y:Math.max(0,Math.min(n,51))}},C=()=>{l.ghosts.forEach(((t,a)=>{t.x===l.pacman.x&&t.y===l.pacman.y&&(l.pacman.powerUp&&t.scared?(w(a),l.pacman.points+=10,"canvas"==l.outputFormat&&setTimeout((()=>{k(),y()}),5e3)):"canvas"==l.outputFormat?(clearInterval(l.gameInterval),setTimeout((()=>{k(),y()}),5e3)):k())}))},w=t=>{let a,e;do{a=Math.floor(7*Math.random()),e=Math.floor(Math.random()*n)}while(Math.abs(a-l.pacman.x)<=2&&Math.abs(e-l.pacman.y)<=2||0===l.grid[a][e]);l.ghosts[t]={x:a,y:e,color:r[t%r.length],scared:!1,target:void 0}},k=()=>{let t=[];for(let a=0;a<7;a++)for(let e=0;e<n;e++)l.grid[a][e]>0&&t.push({x:a,y:e});if(t.length>0){const a=t[Math.floor(Math.random()*t.length)];l.pacman={x:a.x,y:a.y,direction:"right",points:0,powerUp:!1}}l.ghosts.forEach((t=>t.scared=!1)),"canvas"==l.outputFormat&&m(),"canvas"==l.outputFormat&&h(),"canvas"==l.outputFormat&&g()},I=()=>{l.pacman.powerUp=!0,l.ghosts.forEach((t=>t.scared=!0)),setTimeout((()=>{l.pacman.powerUp=!1,l.ghosts.forEach((t=>t.scared=!1)),l.pacman.points=0}),5e3)};var P=function(t,a,e,n){return new(e||(e=Promise))((function(o,r){function s(t){try{i(n.next(t))}catch(t){r(t)}}function c(t){try{i(n.throw(t))}catch(t){r(t)}}function i(t){var a;t.done?o(t.value):(a=t.value,a instanceof e?a:new e((function(t){t(a)}))).then(s,c)}i((n=n.apply(t,a||[])).next())}))};const T=t=>{return a=void 0,e=void 0,s=function*(){var a;"gitlab"==t.platform?l.contributions=yield(a=t.username,P(void 0,void 0,void 0,(function*(){const t=yield fetch(`https://gitlab.com/users/${a}/calendar.json`),e=yield t.json();return Object.entries(e).map((([t,a])=>({date:new Date(t),count:Number(a)})))}))):l.contributions=yield(t=>P(void 0,void 0,void 0,(function*(){const a=yield fetch(`https://api.github.com/search/commits?q=author:${t}&sort=author-date&order=desc&page=1&per_page=1000`),e=yield a.json();return Array.from(e.items.reduce(((t,a)=>{const e=a.commit.committer.date.split("T")[0],n=new Date(e),o=(t.get(e)||{count:0}).count+1;return t.set(e,{date:n,count:o})}),new Map).values())})))(t.username),t.output&&(l.outputFormat=t.output),l.svgCallback=t.svgCallback,l.gameOverCallback=t.gameOverCallback,"canvas"==t.output&&(l.canvas=t.canvas,l.canvas.width=1144,l.canvas.height=174),(()=>{l.grid=Array.from({length:7},(()=>Array.from({length:n},(()=>0)))),l.monthLabels=Array(n).fill("");let t=1;const a=new Date,e=new Date(a);e.setDate(a.getDate()-a.getDay()),l.contributions.forEach((a=>{const o=new Date(a.date),r=o.getDay(),s=Math.floor((+e-+o)/6048e5);s>=0&&s<n&&r>=0&&r<7&&(l.grid[r][51-s]=a.count,a.count>t&&(t=a.count))}));for(let a=0;a<7;a++)for(let e=0;e<n;e++)l.grid[a][e]>0&&(l.grid[a][e]=l.grid[a][e]/t);for(let t=0;t<n;t++){const a=51-t,n=new Date(e);n.setDate(n.getDate()-7*a),l.monthLabels[t]=i[n.getMonth()]}})(),"canvas"==t.output&&m(),(()=>{let t=[];for(let a=0;a<7;a++)for(let e=0;e<n;e++)l.grid[a][e]>0&&t.push({x:a,y:e});if(t.length>0){const a=t[Math.floor(Math.random()*t.length)];l.pacman={x:a.x,y:a.y,direction:"right",points:0,powerUp:!1}}"canvas"==l.outputFormat&&h()})(),(()=>{l.ghosts=[],l.scaredGhostsDestinations=[];for(let t=0;t<4;t++){const a=r[t%r.length];let e,o;do{e=Math.floor(7*Math.random()),o=Math.floor(Math.random()*n)}while(0===l.grid[e][o]);l.ghosts.push({x:e,y:o,color:a,scared:!1,target:void 0}),l.scaredGhostsDestinations.push({x:0,y:0})}"canvas"==l.outputFormat&&g()})(),y()},new((o=void 0)||(o=Promise))((function(t,n){function r(t){try{i(s.next(t))}catch(t){n(t)}}function c(t){try{i(s.throw(t))}catch(t){n(t)}}function i(a){var e;a.done?t(a.value):(e=a.value,e instanceof o?e:new o((function(t){t(e)}))).then(r,c)}i((s=s.apply(a,e||[])).next())}));var a,e,o,s};var O=a.U;export{O as renderContributions};
package/index.html ADDED
@@ -0,0 +1,405 @@
1
+ <!doctype html>
2
+ <html lang="en" dir="ltr">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
+ <title>GitLab Contributions Pac-Man</title>
7
+ <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet" />
8
+ <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.1.1/css/all.min.css" />
9
+ <style>
10
+ body {
11
+ font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
12
+ line-height: 1.6;
13
+ color: #333;
14
+ padding-top: 60px;
15
+ }
16
+ .navbar {
17
+ background-color: #24292e;
18
+ }
19
+ .navbar-brand,
20
+ .nav-link {
21
+ color: #ffffff !important;
22
+ }
23
+ .jumbotron {
24
+ background-color: #f6f8fa;
25
+ padding: 2rem;
26
+ margin-bottom: 2rem;
27
+ }
28
+ #canvas,
29
+ #svgholder {
30
+ max-width: 100%;
31
+ height: auto;
32
+ }
33
+ .section {
34
+ margin-bottom: 3rem;
35
+ }
36
+ pre {
37
+ background-color: #f6f8fa;
38
+ border: 1px solid #e1e4e8;
39
+ border-radius: 6px;
40
+ padding: 16px;
41
+ overflow: auto;
42
+ }
43
+ </style>
44
+ </head>
45
+ <body>
46
+ <nav class="navbar navbar-expand-lg fixed-top">
47
+ <div class="container">
48
+ <a class="navbar-brand" href="#">Pac-Man Contributions</a>
49
+ <button
50
+ class="navbar-toggler"
51
+ type="button"
52
+ data-bs-toggle="collapse"
53
+ data-bs-target="#navbarNav"
54
+ aria-controls="navbarNav"
55
+ aria-expanded="false"
56
+ aria-label="Toggle navigation"
57
+ >
58
+ <span class="navbar-toggler-icon"></span>
59
+ </button>
60
+ <div class="collapse navbar-collapse" id="navbarNav">
61
+ <ul class="navbar-nav ms-auto">
62
+ <li class="nav-item">
63
+ <a class="nav-link" href="https://abozanona.github.io/pacman-contribution-graph/" target="_blank"
64
+ ><i class="fab fa-github"></i> GitHub</a
65
+ >
66
+ </li>
67
+ <li class="nav-item">
68
+ <a class="nav-link" href="https://buymeacoffee.com/abozanona/" target="_blank"
69
+ ><i class="fas fa-coffee"></i> Buy Me a Coffee</a
70
+ >
71
+ </li>
72
+ <li class="nav-item">
73
+ <a class="nav-link" href="https://abozanona.me/pacman-contribution-graph/" target="_blank"
74
+ ><i class="fas fa-blog"></i> Blog</a
75
+ >
76
+ </li>
77
+ </ul>
78
+ </div>
79
+ </div>
80
+ </nav>
81
+
82
+ <div class="container">
83
+ <div class="jumbotron">
84
+ <h1 class="display-4">GitLab Contributions Pac-Man</h1>
85
+ <p class="lead">Turn your GitHub or GitLab contributions into an interactive Pac-Man game!</p>
86
+ <hr class="my-4" />
87
+ <p>
88
+ This project allows you to visualize your contribution graph as a playable Pac-Man game. Set up your preferences,
89
+ generate the game, and have fun while showcasing your coding activity.
90
+ </p>
91
+ </div>
92
+
93
+ <div class="section">
94
+ <h2>Game Configuration</h2>
95
+ <div class="row">
96
+ <div class="col-md-6">
97
+ <div class="mb-3">
98
+ <label for="platform" class="form-label">Platform</label>
99
+ <select id="platform" class="form-select">
100
+ <option value="github">GitHub</option>
101
+ <option value="gitlab">GitLab</option>
102
+ </select>
103
+ </div>
104
+ <div class="mb-3">
105
+ <label for="output" class="form-label">Output format</label>
106
+ <select id="output" class="form-select">
107
+ <option value="canvas">Canvas</option>
108
+ <option value="svg">SVG</option>
109
+ </select>
110
+ </div>
111
+ <div class="mb-3">
112
+ <label for="username" class="form-label">Username:</label>
113
+ <div class="input-group">
114
+ <input type="text" id="username" class="form-control" placeholder="Enter Username" />
115
+ <img
116
+ id="userAvatar"
117
+ src=""
118
+ alt="User Avatar"
119
+ class="img-thumbnail"
120
+ style="display: none; width: 40px; height: 40px"
121
+ />
122
+ </div>
123
+ <div id="userNotFound" class="text-danger" style="display: none">User not found</div>
124
+ </div>
125
+ </div>
126
+ <div class="col-md-6">
127
+ <div class="mb-3">
128
+ <label for="gameSpeed" class="form-label">Game Speed:</label>
129
+ <input type="range" class="form-range" id="gameSpeed" min="1" max="10" value="1" />
130
+ <span id="gameSpeedValue">1</span>
131
+ </div>
132
+ <div class="mb-3">
133
+ <label for="theme" class="form-label">Theme:</label>
134
+ <select id="theme" class="form-select">
135
+ <option value="github">GitHub</option>
136
+ <option value="github-dark">GitHub Dark</option>
137
+ <option value="gitlab">GitLab</option>
138
+ <option value="gitlab-dark">GitLab Dark</option>
139
+ </select>
140
+ </div>
141
+ <div class="mb-3">
142
+ <label for="enableSounds" class="form-label">Sounds:</label>
143
+ <select id="enableSounds" class="form-select">
144
+ <option value="disabled">Disabled</option>
145
+ <option value="enabled">Enabled</option>
146
+ </select>
147
+ </div>
148
+ </div>
149
+ </div>
150
+ <button id="generate" class="btn btn-primary">Generate</button>
151
+ <div class="alert alert-info my-2">
152
+ <strong>Note:</strong> You might need to refresh the page after eachtime you change configuration. This is a known issue
153
+ that we're working on it
154
+ </div>
155
+ </div>
156
+
157
+ <div class="section">
158
+ <h2>Game Output</h2>
159
+ <canvas id="canvas"></canvas>
160
+ <div id="svgContainer" style="display: none">
161
+ <img id="svgholder" />
162
+ <br />
163
+ <button id="downloadSvg" class="btn btn-success mt-3" style="display: none">Download SVG</button>
164
+ </div>
165
+ </div>
166
+
167
+ <div class="section">
168
+ <h2>Configuration Options</h2>
169
+ <table class="table table-striped table-hover">
170
+ <thead>
171
+ <tr>
172
+ <th>Option</th>
173
+ <th>Description</th>
174
+ <th>Possible Values</th>
175
+ </tr>
176
+ </thead>
177
+ <tbody>
178
+ <tr>
179
+ <td><code>platform</code></td>
180
+ <td>The platform from which to fetch contribution data</td>
181
+ <td><code>github</code>, <code>gitlab</code></td>
182
+ </tr>
183
+ <tr>
184
+ <td><code>outputFormat</code></td>
185
+ <td>The format of the game output</td>
186
+ <td><code>canvas</code>, <code>svg</code></td>
187
+ </tr>
188
+ <tr>
189
+ <td><code>canvas</code></td>
190
+ <td>The canvas element in DOM to render Pacman game into</td>
191
+ <td><code>typeof HTMLCanvasElement</code></td>
192
+ </tr>
193
+ <tr>
194
+ <td><code>svgCallback</code></td>
195
+ <td>A callback function that will get called when SVG picture is generated</td>
196
+ <td><code>(blonUrl: string) => void</code></td>
197
+ </tr>
198
+ <tr>
199
+ <td><code>gameOverCallback</code></td>
200
+ <td>A callback function that will get called when the game is over</td>
201
+ <td><code>gameOverCallback: () => void;</code></td>
202
+ </tr>
203
+ <tr>
204
+ <td><code>username</code></td>
205
+ <td>The username of the account to fetch contributions from</td>
206
+ <td>Any valid GitHub or GitLab username</td>
207
+ </tr>
208
+ <tr>
209
+ <td><code>gameSpeed</code></td>
210
+ <td>The speed of the Pac-Man character in the game</td>
211
+ <td>1 (fastest) to 10 (slowest)</td>
212
+ </tr>
213
+ <tr>
214
+ <td><code>gameTheme</code></td>
215
+ <td>The visual theme of the game</td>
216
+ <td><code>github</code>, <code>github-dark</code>, <code>gitlab</code>, <code>gitlab-dark</code></td>
217
+ </tr>
218
+ <tr>
219
+ <td><code>enableSounds</code></td>
220
+ <td>Enable or disable game sounds(only in canvas mode)</td>
221
+ <td><code>true</code>, <code>false</code></td>
222
+ </tr>
223
+ </tbody>
224
+ </table>
225
+ </div>
226
+
227
+ <div class="section">
228
+ <h2>How to Use</h2>
229
+ <h3>Method 1: NPM Package</h3>
230
+ <pre><code>npm install pacman-contribution-graph
231
+
232
+ import { renderContributions } from 'pacman-contribution-graph';
233
+
234
+ renderContributions({
235
+ platform: 'github',
236
+ username: 'yourusername',
237
+ canvas: document.getElementById('canvas'),
238
+ outputFormat: 'canvas',
239
+ gameTheme: 'github'
240
+ });</code></pre>
241
+
242
+ <h3>Method 2: Script loading</h3>
243
+ <pre><code>&lt;script type="module"&gt;
244
+ import { renderContributions } from 'https://cdn.jsdelivr.net/gh/abozanona/pacman-contribution-graph@1.0.1/dist/pacman-contribution-graph.min.js';
245
+ const canvas = document.getElementById('pacmancanvas');
246
+ const initializeGameCanvas = () =>
247
+ renderContributions({
248
+ platform: "gitlab",
249
+ username: "yourusername",
250
+ canvas: canvas,
251
+ output: 'canvas',
252
+ gameOverCallback: () => {
253
+ console.log('GAME OVER');
254
+ setTimeout(() => {
255
+ console.log('Restarting');
256
+ initializeGameCanvas();
257
+ }, 3000);
258
+ }
259
+ });
260
+ initializeGameCanvas();
261
+ &lt;/script&gt;</code></pre>
262
+
263
+ <h3>Method 3: Iframe/Image Embedding</h3>
264
+ <pre>
265
+ &lt;!-- For canvas --&gt;
266
+ <code>&lt;iframe src="https://abozanona.github.io/pacman-contribution-graph/?username=yourusername&platform=github"
267
+ width="800" height="600" frameborder="0"&gt;&lt;/iframe&gt;</code>
268
+ &lt;!-- For SVG --&gt;
269
+ <code>&lt;img src="https://abozanona.github.io/pacman-contribution-graph/?username=yourusername&platform=github" /&gt;</code>
270
+ </pre>
271
+ </div>
272
+ </div>
273
+
274
+ <footer class="bg-light py-3 mt-5">
275
+ <div class="container text-center">
276
+ <div>
277
+ <script async src="//busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js"></script>
278
+ <span id="busuanzi_container_site_pv">Total visits: <span id="busuanzi_value_site_pv"></span></span>
279
+ <span class="mx-2">|</span>
280
+ <span id="busuanzi_container_site_uv">Unique visitors: <span id="busuanzi_value_site_uv"></span></span>
281
+ </div>
282
+ </div>
283
+ </footer>
284
+
285
+ <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/js/bootstrap.bundle.min.js"></script>
286
+ <script type="module">
287
+ import { renderContributions } from './dist/pacman-contribution-graph.js';
288
+
289
+ const generateButton = document.getElementById('generate');
290
+ const usernameInput = document.getElementById('username');
291
+ const platformSelect = document.getElementById('platform');
292
+ const outputSelect = document.getElementById('output');
293
+ const gameSpeedInput = document.getElementById('gameSpeed');
294
+ const gameSpeedValue = document.getElementById('gameSpeedValue');
295
+ const themeSelect = document.getElementById('theme');
296
+ const enableSoundsSelect = document.getElementById('enableSounds');
297
+ const canvas = document.getElementById('canvas');
298
+ const svgContainer = document.getElementById('svgContainer');
299
+ const svgHolder = document.getElementById('svgholder');
300
+ const downloadSvgButton = document.getElementById('downloadSvg');
301
+ const userAvatar = document.getElementById('userAvatar');
302
+ const userNotFound = document.getElementById('userNotFound');
303
+
304
+ generateButton.disabled = true;
305
+
306
+ let currentSvgBlob = null;
307
+
308
+ gameSpeedInput.addEventListener('input', () => {
309
+ gameSpeedValue.textContent = gameSpeedInput.value;
310
+ });
311
+
312
+ usernameInput.addEventListener('input', debounce(checkUser, 500));
313
+
314
+ function debounce(func, wait) {
315
+ let timeout;
316
+ return function executedFunction(...args) {
317
+ const later = () => {
318
+ clearTimeout(timeout);
319
+ func(...args);
320
+ };
321
+ clearTimeout(timeout);
322
+ timeout = setTimeout(later, wait);
323
+ };
324
+ }
325
+
326
+ async function checkUser() {
327
+ const username = usernameInput.value;
328
+ const platform = platformSelect.value;
329
+ if (!username) {
330
+ userAvatar.style.display = 'none';
331
+ userNotFound.style.display = 'none';
332
+ generateButton.disabled = true;
333
+ return;
334
+ }
335
+
336
+ try {
337
+ const response = await fetch(`https://api.${platform}.com/users/${username}`);
338
+ if (response.ok) {
339
+ const data = await response.json();
340
+ userAvatar.src = data.avatar_url;
341
+ userAvatar.style.display = 'inline';
342
+ userNotFound.style.display = 'none';
343
+ generateButton.disabled = false;
344
+ } else {
345
+ throw new Error('User not found');
346
+ }
347
+ } catch (error) {
348
+ userAvatar.style.display = 'none';
349
+ userNotFound.style.display = 'block';
350
+ generateButton.disabled = true;
351
+ }
352
+ }
353
+
354
+ generateButton.addEventListener('click', () => {
355
+ const config = {
356
+ platform: platformSelect.value,
357
+ username: usernameInput.value,
358
+ outputFormat: outputSelect.value,
359
+ gameSpeed: parseInt(gameSpeedInput.value),
360
+ gameTheme: themeSelect.value,
361
+ enableSounds: enableSounds.value === 'enabled'
362
+ };
363
+
364
+ if (config.outputFormat === 'canvas') {
365
+ canvas.style.display = 'block';
366
+ svgContainer.style.display = 'none';
367
+ downloadSvgButton.style.display = 'none';
368
+ renderContributions({
369
+ ...config,
370
+ canvas: canvas,
371
+ gameOverCallback: () => {
372
+ console.log('Game Over');
373
+ setTimeout(() => renderContributions({ ...config, canvas: canvas }), 3000);
374
+ }
375
+ });
376
+ } else {
377
+ canvas.style.display = 'none';
378
+ svgContainer.style.display = 'block';
379
+ downloadSvgButton.style.display = 'inline-block';
380
+ renderContributions({
381
+ ...config,
382
+ svgCallback: (blobUrl) => {
383
+ svgHolder.src = blobUrl;
384
+ currentSvgBlob = blobUrl;
385
+ },
386
+ gameOverCallback: () => {
387
+ console.log('Game Over');
388
+ }
389
+ });
390
+ }
391
+ });
392
+
393
+ downloadSvgButton.addEventListener('click', () => {
394
+ if (currentSvgBlob) {
395
+ const link = document.createElement('a');
396
+ link.href = currentSvgBlob;
397
+ link.download = 'pacman-contributions.svg';
398
+ document.body.appendChild(link);
399
+ link.click();
400
+ document.body.removeChild(link);
401
+ }
402
+ });
403
+ </script>
404
+ </body>
405
+ </html>
package/package.json ADDED
@@ -0,0 +1,26 @@
1
+ {
2
+ "name": "pacman-contribution-graph",
3
+ "version": "1.0.0",
4
+ "description": "Generates a pacman game from a github or gitlab user contributions grid",
5
+ "repository": "github:abozanona/pacman-contribution-graph",
6
+ "type": "module",
7
+ "main": "index.js",
8
+ "scripts": {
9
+ "build": "webpack --config webpack.prod.js",
10
+ "dev": "webpack --progress --config webpack.dev.js"
11
+ },
12
+ "devDependencies": {
13
+ "terser": "^5.37.0",
14
+ "ts-loader": "^9.5.2",
15
+ "typescript": "^4.9.5",
16
+ "webpack": "^5.97.1",
17
+ "webpack-cli": "^6.0.1"
18
+ },
19
+ "keywords": [],
20
+ "author": "abozanona",
21
+ "packageManager": "pnpm@9.15.4+sha512.b2dc20e2fc72b3e18848459b37359a32064663e5627a51e4c74b2c29dd8e8e0491483c3abb40789cfd578bf362fb6ba8261b05f0387d76792ed6e23ea3b1b6a0",
22
+ "dependencies": {
23
+ "prettier": "^3.4.2",
24
+ "webpack-merge": "^6.0.1"
25
+ }
26
+ }