@apexops/capabilities 0.10.0-next.5 → 0.11.0-next.1

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.
Files changed (92) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/archetype-source.d.ts +49 -0
  3. package/dist/archetype-source.d.ts.map +1 -0
  4. package/dist/archetype-source.js +421 -0
  5. package/dist/archetype-source.js.map +1 -0
  6. package/dist/bound-envelope-transport.js +1 -1
  7. package/dist/bound-envelope-transport.js.map +1 -1
  8. package/dist/executable-resolution.d.ts +21 -0
  9. package/dist/executable-resolution.d.ts.map +1 -0
  10. package/dist/executable-resolution.js +87 -0
  11. package/dist/executable-resolution.js.map +1 -0
  12. package/dist/governance-baseline.d.ts +87 -0
  13. package/dist/governance-baseline.d.ts.map +1 -0
  14. package/dist/governance-baseline.js +639 -0
  15. package/dist/governance-baseline.js.map +1 -0
  16. package/dist/governance-setup.d.ts +13 -0
  17. package/dist/governance-setup.d.ts.map +1 -0
  18. package/dist/governance-setup.js +231 -0
  19. package/dist/governance-setup.js.map +1 -0
  20. package/dist/iac-generation.d.ts.map +1 -1
  21. package/dist/iac-generation.js +56 -20
  22. package/dist/iac-generation.js.map +1 -1
  23. package/dist/iac-normalizers.d.ts.map +1 -1
  24. package/dist/iac-normalizers.js +19 -1
  25. package/dist/iac-normalizers.js.map +1 -1
  26. package/dist/iac.d.ts +30 -2
  27. package/dist/iac.d.ts.map +1 -1
  28. package/dist/iac.js.map +1 -1
  29. package/dist/index.d.ts +6 -0
  30. package/dist/index.d.ts.map +1 -1
  31. package/dist/index.js +6 -0
  32. package/dist/index.js.map +1 -1
  33. package/dist/native-iac-providers.d.ts +20 -4
  34. package/dist/native-iac-providers.d.ts.map +1 -1
  35. package/dist/native-iac-providers.js +591 -27
  36. package/dist/native-iac-providers.js.map +1 -1
  37. package/dist/pack-manager.d.ts.map +1 -1
  38. package/dist/pack-manager.js +15 -14
  39. package/dist/pack-manager.js.map +1 -1
  40. package/dist/policy-validation.d.ts +68 -0
  41. package/dist/policy-validation.d.ts.map +1 -0
  42. package/dist/policy-validation.js +653 -0
  43. package/dist/policy-validation.js.map +1 -0
  44. package/dist/process-runner.d.ts.map +1 -1
  45. package/dist/process-runner.js +10 -1
  46. package/dist/process-runner.js.map +1 -1
  47. package/dist/rename-retry.d.ts +12 -0
  48. package/dist/rename-retry.d.ts.map +1 -0
  49. package/dist/rename-retry.js +27 -0
  50. package/dist/rename-retry.js.map +1 -0
  51. package/dist/repository-publish.d.ts +17 -0
  52. package/dist/repository-publish.d.ts.map +1 -0
  53. package/dist/repository-publish.js +124 -0
  54. package/dist/repository-publish.js.map +1 -0
  55. package/dist/terraform-provider-schema.d.ts.map +1 -1
  56. package/dist/terraform-provider-schema.js +6 -2
  57. package/dist/terraform-provider-schema.js.map +1 -1
  58. package/dist/test/archetype-source.test.d.ts +2 -0
  59. package/dist/test/archetype-source.test.d.ts.map +1 -0
  60. package/dist/test/archetype-source.test.js +258 -0
  61. package/dist/test/archetype-source.test.js.map +1 -0
  62. package/dist/test/executable-resolution.test.d.ts +2 -0
  63. package/dist/test/executable-resolution.test.d.ts.map +1 -0
  64. package/dist/test/executable-resolution.test.js +87 -0
  65. package/dist/test/executable-resolution.test.js.map +1 -0
  66. package/dist/test/governance-baseline.test.d.ts +2 -0
  67. package/dist/test/governance-baseline.test.d.ts.map +1 -0
  68. package/dist/test/governance-baseline.test.js +841 -0
  69. package/dist/test/governance-baseline.test.js.map +1 -0
  70. package/dist/test/governance-setup.test.d.ts +2 -0
  71. package/dist/test/governance-setup.test.d.ts.map +1 -0
  72. package/dist/test/governance-setup.test.js +160 -0
  73. package/dist/test/governance-setup.test.js.map +1 -0
  74. package/dist/test/iac-generation.test.js +203 -14
  75. package/dist/test/iac-generation.test.js.map +1 -1
  76. package/dist/test/native-iac-providers.test.js +1482 -5
  77. package/dist/test/native-iac-providers.test.js.map +1 -1
  78. package/dist/test/policy-validation.test.d.ts +2 -0
  79. package/dist/test/policy-validation.test.d.ts.map +1 -0
  80. package/dist/test/policy-validation.test.js +1061 -0
  81. package/dist/test/policy-validation.test.js.map +1 -0
  82. package/dist/test/rename-retry.test.d.ts +2 -0
  83. package/dist/test/rename-retry.test.d.ts.map +1 -0
  84. package/dist/test/rename-retry.test.js +25 -0
  85. package/dist/test/rename-retry.test.js.map +1 -0
  86. package/dist/test/repository-publish.test.d.ts +2 -0
  87. package/dist/test/repository-publish.test.d.ts.map +1 -0
  88. package/dist/test/repository-publish.test.js +123 -0
  89. package/dist/test/repository-publish.test.js.map +1 -0
  90. package/dist/test/terraform-provider-schema.test.js +12 -6
  91. package/dist/test/terraform-provider-schema.test.js.map +1 -1
  92. package/package.json +3 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"governance-baseline.test.js","sourceRoot":"","sources":["../../src/test/governance-baseline.test.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,6BAA6B,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAC9F,OAAO,EACL,uBAAuB,EACvB,wBAAwB,EACxB,yBAAyB,EACzB,yBAAyB,GAC1B,MAAM,aAAa,CAAC;AAErB,MAAM,QAAQ,GAAG,IAAI,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,CACrD,IAAI,CAAC,KAAK,CACR,YAAY,CAAC,IAAI,GAAG,CAAC,2DAA2D,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAC5G,CACF,CAAC;AACF,MAAM,cAAc,GAAG,sCAAsC,CAAC;AAC9D,MAAM,OAAO,GAAG,sCAAsC,CAAC;AACvD,MAAM,YAAY,GAAG,sBAAsB,CAAC;AAC5C,MAAM,OAAO,GAAG,EAAE,cAAc,EAAE,GAAG,EAAE,sBAAsB,EAAE,CAAC;AAChE,MAAM,eAAe,GAAG,uDAAuD,CAAC;AAEhF,SAAS,QAAQ,CAAC,EAAE,GAAG,cAAc;IACnC,OAAO;QACL,cAAc,EAAE,2BAA2B;QAC3C,eAAe,EAAE,EAAE;QACnB,aAAa,EAAE,YAAY;QAC3B,MAAM,EAAE,yBAAyB;QACjC,gBAAgB,EAAE,UAAU;QAC5B,kBAAkB,EAAE;YAClB,gBAAgB,EAAE,UAAU;YAC5B,aAAa,EAAE,YAAY;YAC3B,KAAK,EAAE,EAAE,eAAe,EAAE,EAAE,EAAE,iBAAiB,EAAE,EAAc,EAAE;YACjE,YAAY,EAAE;gBACZ,iBAAiB,EAAE,YAAY;gBAC/B,iBAAiB,EAAE,YAAY;gBAC/B,gBAAgB,EAAE,oBAAoB;aACvC;YACD,WAAW,EAAE,EAAE,iBAAiB,EAAE,CAAC,EAAE,iBAAiB,EAAE,CAAC,EAAE,gBAAgB,EAAE,CAAC,EAAE;YAChF,sBAAsB,EAAE,EAAE;YAC1B,QAAQ,EAAE,CAAC;SACZ;QACD,iBAAiB,EAAE;YACjB,gBAAgB,EAAE,CAAC;YACnB,eAAe,EAAE,CAAC;YAClB,sBAAsB,EAAE,CAAC;YACzB,wBAAwB,EAAE,CAAC;YAC3B,gCAAgC,EAAE,CAAC;YACnC,aAAa,EAAE,CAAC;YAChB,oBAAoB,EAAE,CAAC;YACvB,mBAAmB,EAAE,CAAC;YACtB,WAAW,EAAE,CAAC;YACd,cAAc,EAAE,CAAC;YACjB,cAAc,EAAE,CAAC;SAClB;QACD,oBAAoB,EAAE,EAA+B;QACrD,QAAQ,EAAE,EAA+B;QACzC,aAAa,EAAE,EAA+B;QAC9C,iBAAiB,EAAE,EAAc;KAClC,CAAC;AACJ,CAAC;AAED,SAAS,QAAQ;IACf,OAAO;QACL,cAAc,EAAE,wBAAwB;QACxC,mBAAmB,EAAE,MAAM;QAC3B,eAAe,EAAE,UAAU;QAC3B,wBAAwB,EAAE,CAAC;QAC3B,uBAAuB,EAAE,CAAC;QAC1B,qBAAqB,EAAE,EAAc;QACrC,sBAAsB,EAAE,EAA+B;QACvD,OAAO,EAAE,EAAE,cAAc,EAAE,CAAC,EAAE,cAAc,EAAE,CAAC,EAAE,oBAAoB,EAAE,CAAC,EAAE,sBAAsB,EAAE,CAAC,EAAE;QACrG,aAAa,EAAE,EAAE,CAAC,cAAc,CAAC,EAAE,QAAQ,EAAE,EAAiD;KAC/F,CAAC;AACJ,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc,EAAE,IAAY,EAAE,QAAQ,GAAG,OAAO;IAChE,MAAM,CAAC,MAAM,CACX,GAAG,EAAE,CAAC,wBAAwB,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,CAAC,EACzD,CAAC,KAAc,EAAE,EAAE,CAAC,KAAK,YAAY,uBAAuB,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,CACpF,CAAC;AACJ,CAAC;AAED,IAAI,CAAC,0FAA0F,EAAE,GAAG,EAAE;IACpG,MAAM,MAAM,GAAG,QAAQ,EAAE,CAAC;IAC1B,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;IAClD,MAAM,CAAC,wBAAwB,GAAG,MAAM,CAAC,uBAAuB,GAAG,MAAM,CAAC,OAAO,CAAC,sBAAsB,GAAG,CAAC,CAAC;IAC7G,MAAM,QAAQ,GAAG,wBAAwB,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;IACrE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,CAAC;IAChE,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IACjD,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,sBAAsB,EAAE,IAAI,CAAC,CAAC;IAC7D,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC;IACzE,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS,EAAE,0BAA0B,CAAC,CAAC;IACzE,MAAM,mBAAmB,GAAG,IAAI,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,CACxF,6BAA6B,CAC9B,CAAC;IACF,MAAM,CAAC,EAAE,CACP,mBAAmB,CAAC;QAClB,GAAG,QAAQ,CAAC,WAAW;QACvB,MAAM,EAAE,WAAW;QACnB,SAAS,EAAE,SAAS;QACpB,KAAK,EAAE,OAAO;QACd,cAAc,EAAE;YACd,SAAS,EAAE,kBAAkB;YAC7B,GAAG,EAAE,wBAAwB;YAC7B,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YACtB,KAAK,EAAE,CAAC;SACT;KACF,CAAC,CACH,CAAC;IACF,MAAM,CAAC,SAAS,CAAC,wBAAwB,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAC;IAC7G,MAAM,CAAC,SAAS,CAAC,wBAAwB,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAC;AAClG,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,uFAAuF,EAAE,GAAG,EAAE;IACjG,MAAM,EAAE,mBAAmB,EAAE,GAAG,MAAM,EAAE,GAAG,QAAQ,EAAE,CAAC;IACtD,MAAM,CAAC,KAAK,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;IAC1C,MAAM,UAAU,GAAG,EAAE,GAAG,MAAM,EAAE,eAAe,EAAE,cAAc,EAAE,CAAC;IAClE,MAAM,CAAC,SAAS,CAAC,wBAAwB,CAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,EAAE;QACjG,IAAI,EAAE,cAAc;QACpB,cAAc;KACf,CAAC,CAAC;IACH,QAAQ,CAAC,EAAE,GAAG,UAAU,EAAE,mBAAmB,EAAE,MAAM,EAAE,EAAE,eAAe,CAAC,CAAC;IAC1E,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAClC,QAAQ,CAAC,EAAE,GAAG,UAAU,EAAE,eAAe,EAAE,OAAO,EAAE,EAAE,iBAAiB,CAAC,CAAC;AAC3E,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,mEAAmE,EAAE,GAAG,EAAE;IAC7E,MAAM,SAAS,GAAyD;QACtE,CAAC,MAAM,EAAE,EAAE;YACT,MAAM,CAAC,eAAe,GAAG,SAAS,CAAC;QACrC,CAAC;QACD,CAAC,MAAM,EAAE,EAAE;YACT,MAAM,CAAC,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC7C,CAAC;QACD,CAAC,MAAM,EAAE,EAAE;YACT,MAAM,CAAC,aAAa,CAAC,cAAc,CAAE,CAAC,gBAAgB,GAAG,SAAS,CAAC;QACrE,CAAC;QACD,CAAC,MAAM,EAAE,EAAE;YACT,MAAM,CAAC,aAAa,CAAC,cAAc,CAAE,CAAC,kBAAkB,CAAC,gBAAgB,GAAG,QAAQ,CAAC;QACvF,CAAC;QACD,CAAC,MAAM,EAAE,EAAE;YACT,MAAM,CAAC,uBAAuB,GAAG,CAAC,CAAC;QACrC,CAAC;QACD,CAAC,MAAM,EAAE,EAAE;YACT,MAAM,CAAC,wBAAwB,GAAG,CAAC,CAAC;QACtC,CAAC;QACD,CAAC,MAAM,EAAE,EAAE;YACT,MAAM,CAAC,OAAO,CAAC,sBAAsB,GAAG,CAAC,CAAC;QAC5C,CAAC;QACD,CAAC,MAAM,EAAE,EAAE;YACT,MAAM,CAAC,OAAO,CAAC,cAAc,GAAG,CAAC,CAAC;QACpC,CAAC;QACD,CAAC,MAAM,EAAE,EAAE;YACT,MAAM,CAAC,aAAa,CAAC,cAAc,CAAE,CAAC,iBAAiB,CAAC,eAAe,GAAG,CAAC,CAAC;QAC9E,CAAC;QACD,CAAC,MAAM,EAAE,EAAE;YACT,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,cAAc,CAAE,EAAE,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;QACzF,CAAC;QACD,CAAC,MAAM,EAAE,EAAE;YACT,MAAM,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAE,CAAC,CAAC;QAC/F,CAAC;KACF,CAAC;IACF,KAAK,MAAM,MAAM,IAAI,SAAS,EAAE,CAAC;QAC/B,MAAM,MAAM,GAAG,QAAQ,EAAE,CAAC;QAC1B,MAAM,CAAC,MAAM,CAAC,CAAC;QACf,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACjC,CAAC;IACD,MAAM,MAAM,GAAG,QAAQ,EAAE,CAAC;IAC1B,OAAQ,MAAM,CAAC,aAAa,CAAC,cAAc,CAA6B,CAAC,kBAAkB,CAAC;IAC5F,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;AACpC,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,6EAA6E,EAAE,GAAG,EAAE;IACvF,MAAM,GAAG,GAAG,EAAE,GAAG,OAAO,EAAE,GAAG,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,EAAE,GAAG,UAAU,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;IACpG,MAAM,CAAC,SAAS,CAAC,yBAAyB,CAAC,QAAQ,EAAE,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE;QACrE,UAAU,EAAE,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC,WAAW,EAAE;QAChD,eAAe,EAAE,IAAI;KACtB,CAAC,CAAC;IACH,MAAM,CAAC,SAAS,CAAC,yBAAyB,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE;QACzE,UAAU,EAAE,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC,WAAW,EAAE;QAChD,eAAe,EAAE,KAAK;KACvB,CAAC,CAAC;IACH,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,wBAAwB,CAAC,QAAQ,EAAE,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAC;IAClF,MAAM,CAAC,MAAM,CACX,GAAG,EAAE,CAAC,yBAAyB,CAAC,QAAQ,EAAE,EAAE,EAAE,GAAG,OAAO,EAAE,GAAG,EAAE,sBAAsB,EAAE,EAAE,QAAQ,CAAC,EAClG,OAAO,CACR,CAAC;IACF,MAAM,CAAC,MAAM,CACX,GAAG,EAAE,CAAC,yBAAyB,CAAC,QAAQ,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,cAAc,EAAE,OAAO,EAAE,EAAE,QAAQ,CAAC,EAC1F,iBAAiB,CAClB,CAAC;IACF,MAAM,OAAO,GAAG,QAAQ,EAAE,CAAC;IAC3B,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC;IACpC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,yBAAyB,CAAC,OAAO,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,0BAA0B,CAAC,CAAC;IACnG,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,yBAAyB,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,eAAe,CAAC,CAAC;AACtF,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,8FAA8F,EAAE,GAAG,EAAE;IACxG,KAAK,MAAM,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;QACjC,MAAM,MAAM,GAAG,QAAQ,EAAE,CAAC;QAC1B,MAAM,CAAC,aAAa,CAAC,cAAc,CAAE,CAAC,kBAAkB,CAAC,QAAQ,GAAG,GAAG,CAAC;QACxE,MAAM,QAAQ,GAAG,wBAAwB,CAAC,MAAM,EAAE,EAAE,GAAG,OAAO,EAAE,GAAG,EAAE,0BAA0B,EAAE,EAAE,QAAQ,CAAC,CAAC;QAC7G,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS,EAAE,0BAA0B,CAAC,CAAC;QACzE,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,GAAG,EAAE,sBAAsB,EAAE,CAAC,CAAC;QACvE,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,GAAG,EAAE,sBAAsB,EAAE,CAAC,CAAC;IACzE,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,2DAA2D,EAAE,GAAG,EAAE;IACrE,QAAQ,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,GAAG,EAAE,sBAAsB,EAAE,CAAC,CAAC;IAC3E,QAAQ,CAAC,QAAQ,EAAE,EAAE,iBAAiB,EAAE,EAAE,GAAG,OAAO,EAAE,GAAG,EAAE,sBAAsB,EAAE,CAAC,CAAC;IACrF,MAAM,MAAM,GAAG,QAAQ,EAAE,CAAC;IAC1B,MAAM,CAAC,aAAa,CAAC,cAAc,CAAE,CAAC,kBAAkB,CAAC,aAAa,GAAG,sBAAsB,CAAC;IAChG,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;AACjC,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,sFAAsF,EAAE,GAAG,EAAE;IAChG,MAAM,QAAQ,GAAG,QAAQ,EAAE,CAAC;IAC5B,MAAM,SAAS,GAAG,QAAQ,EAAE,CAAC;IAC7B,SAAS,CAAC,aAAa,CAAC,cAAc,CAAE,CAAC,aAAa,GAAG,sBAAsB,CAAC;IAChF,SAAS,CAAC,aAAa,CAAC,cAAc,CAAE,CAAC,kBAAkB,CAAC,aAAa,GAAG,sBAAsB,CAAC;IACnG,MAAM,EAAE,GAAG,EAAE,GAAG,OAAO,EAAE,GAAG,EAAE,sBAAsB,EAAE,CAAC;IACvD,MAAM,MAAM,GAAG,wBAAwB,CAAC,QAAQ,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC;IAChE,MAAM,KAAK,GAAG,wBAAwB,CAAC,SAAS,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC;IAChE,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IAClD,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,YAAY,EAAE,KAAK,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;IACjF,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,UAAU,CAAC,CAAC;AAC/G,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,8DAA8D,EAAE,GAAG,EAAE;IACxE,QAAQ,CAAC,QAAQ,EAAE,EAAE,iBAAiB,EAAE,EAAE,GAAG,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,CAAC,CAAC;IACjF,MAAM,MAAM,GAAG,QAAQ,EAAE,CAAC;IAC1B,MAAM,CAAC,aAAa,CAAC,cAAc,CAAE,CAAC,kBAAkB,CAAC,KAAK,CAAC,eAAe,GAAG,OAAO,CAAC;IACzF,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IACpC,MAAM,CAAC,aAAa,CAAC,cAAc,CAAC,GAAG,QAAQ,EAAE,CAAC;IAClD,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;IAClD,MAAM,CAAC,wBAAwB,GAAG,MAAM,CAAC,uBAAuB,GAAG,MAAM,CAAC,OAAO,CAAC,sBAAsB,GAAG,CAAC,CAAC;IAC7G,MAAM,CAAC,aAAa,CAAC,OAAO,CAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC,CAAC;IACzE,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;AACpC,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,yEAAyE,EAAE,GAAG,EAAE;IACnF,MAAM,SAAS,GAAG,QAAQ,EAAE,CAAC;IAC7B,SAAS,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;IAC/F,QAAQ,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;IACvC,MAAM,MAAM,GAAG,QAAQ,EAAE,CAAC;IAC1B,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;IAClD,MAAM,CAAC,wBAAwB,GAAG,MAAM,CAAC,uBAAuB,GAAG,MAAM,CAAC,OAAO,CAAC,sBAAsB,GAAG,CAAC,CAAC;IAC7G,MAAM,CAAC,aAAa,CAAC,OAAO,CAAE,CAAC,gBAAgB,GAAG,SAAS,CAAC;IAC5D,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAC/B,MAAM,CAAC,aAAa,CAAC,OAAO,CAAE,CAAC,gBAAgB,GAAG,UAAU,CAAC;IAC7D,MAAM,CAAC,aAAa,CAAC,OAAO,CAAE,CAAC,aAAa,GAAG,sBAAsB,CAAC;IACtE,MAAM,CAAC,aAAa,CAAC,OAAO,CAAE,CAAC,kBAAkB,CAAC,aAAa,GAAG,sBAAsB,CAAC;IACzF,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAC5B,CAAC,CAAC,CAAC;AAEH,SAAS,iBAAiB;IACxB,MAAM,MAAM,GAAG,QAAQ,EAAE,CAAC;IAC1B,MAAM,KAAK,GAAG,MAAM,CAAC,aAAa,CAAC,cAAc,CAAE,CAAC;IACpD,KAAK,CAAC,kBAAkB,CAAC,KAAK,CAAC,iBAAiB,GAAG,CAAC,MAAM,CAAC,CAAC;IAC5D,KAAK,CAAC,kBAAkB,CAAC,WAAW,GAAG,EAAE,iBAAiB,EAAE,CAAC,EAAE,iBAAiB,EAAE,CAAC,EAAE,gBAAgB,EAAE,CAAC,EAAE,CAAC;IAC3G,KAAK,CAAC,oBAAoB,GAAG;QAC3B;YACE,WAAW,EAAE,sBAAsB;YACnC,KAAK,EAAE,eAAe;YACtB,cAAc,EAAE,kBAAkB;YAClC,kBAAkB,EAAE,YAAY;SACjC;KACF,CAAC;IACF,KAAK,CAAC,QAAQ,GAAG,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QAC3D,SAAS,EAAE,QAAQ;QACnB,YAAY,EAAE,QAAQ;QACtB,MAAM,EAAE,MAAM;QACd,KAAK,EAAE,eAAe;QACtB,aAAa,EAAE,GAAG,eAAe,gEAAgE;QACjG,cAAc,EAAE,eAAe;QAC/B,cAAc,EAAE,CAAC,mCAAmC,CAAC;QACrD,SAAS,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,4BAA4B,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE;KAC1F,CAAC,CAAC,CAAC;IACJ,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,EAAE;QACrC,gBAAgB,EAAE,CAAC;QACnB,eAAe,EAAE,CAAC;QAClB,gCAAgC,EAAE,CAAC;QACnC,mBAAmB,EAAE,CAAC;QACtB,cAAc,EAAE,CAAC;KAClB,CAAC,CAAC;IACH,MAAM,CAAC,OAAO,CAAC,cAAc,GAAG,CAAC,CAAC;IAClC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,IAAI,CAAC,gFAAgF,EAAE,GAAG,EAAE;IAC1F,KAAK,MAAM,IAAI,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,EAAE,CAAC;QAC/C,MAAM,MAAM,GAAG,iBAAiB,EAAE,CAAC;QACnC,MAAM,KAAK,GAAG,MAAM,CAAC,aAAa,CAAC,cAAc,CAAE,CAAC;QACpD,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAE,CAAC,eAAe,GAAG,IAAI,CAAC;QACtD,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,QAAQ;YAC/B,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,cAAc,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7F,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,EAAE,EAAE,aAAa,EAAE,CAAC,EAAE,mBAAmB,EAAE,CAAC,EAAE,cAAc,EAAE,CAAC,EAAE,CAAC,CAAC;QACxG,MAAM,CAAC,OAAO,CAAC,cAAc,GAAG,CAAC,CAAC;QAClC,MAAM,QAAQ,GAAG,wBAAwB,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;QACrE,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;QACxD,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;YAC9C,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE;gBACrB,GAAG,IAAI;gBACP,eAAe,EAAE,IAAI;gBACrB,MAAM,EAAE,MAAM;gBACd,cAAc,EAAE,SAAS;gBACzB,SAAS,EAAE,IAAI;aAChB,CAAC,CAAC;QACL,CAAC;QACD,MAAM,CAAC,SAAS,CAAC,wBAAwB,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAC;IAClG,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,uFAAuF,EAAE,GAAG,EAAE;IACjG,MAAM,MAAM,GAAG,iBAAiB,EAAE,CAAC;IACnC,MAAM,KAAK,GAAG,MAAM,CAAC,aAAa,CAAC,cAAc,CAAE,CAAC;IACpD,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAE,CAAC,eAAe,GAAG,SAAS,CAAC;IAC3D,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC,eAAe,GAAG,cAAc,CAAC;IACpD,MAAM,QAAQ,GAAG,wBAAwB,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;IACvF,MAAM,CAAC,KAAK,CACV,MAAM,CAAC,MAAM,CACX,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,KAAK,UAAU,CAAE,EACtD,iBAAiB,CAClB,EACD,KAAK,CACN,CAAC;IACF,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,KAAK,UAAU,CAAE,CAAC;IACxE,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,GAAG,QAAQ,EAAE,eAAe,EAAE,cAAc,EAAE,CAAC,CAAC;IAC7E,MAAM,CAAC,EAAE,CACP,wBAAwB,CAAC,iBAAiB,EAAE,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CACtF,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAClD,CACF,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,6FAA6F,EAAE,GAAG,EAAE;IACvG,KAAK,MAAM,KAAK,IAAI,CAAC,sBAAsB,EAAE,UAAU,CAAU,EAAE,CAAC;QAClE,KAAK,MAAM,IAAI,IAAI;YACjB,QAAQ;YACR,SAAS;YACT,SAAS;YACT,cAAc;YACd,UAAU;YACV,EAAE;YACF,IAAI;YACJ,KAAK;YACL,CAAC;YACD,EAAE;YACF,CAAC,SAAS,CAAC;YACX,EAAE;SACH,EAAE,CAAC;YACF,MAAM,MAAM,GAAG,iBAAiB,EAAE,CAAC;YACnC,MAAM,KAAK,GAAG,MAAM,CAAC,aAAa,CAAC,cAAc,CAAE,CAAC;YACpD,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAE,CAAC,eAAe,GAAG,IAAI,CAAC;YACxC,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,qFAAqF,EAAE,GAAG,EAAE;IAC/F,MAAM,MAAM,GAAG,iBAAiB,EAAE,CAAC;IACnC,MAAM,KAAK,GAAG,MAAM,CAAC,aAAa,CAAC,cAAc,CAAE,CAAC;IACpD,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC,eAAe,GAAG,SAAS,CAAC;IAC/C,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC,eAAe,GAAG,cAAc,CAAC;IACpD,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAC/B,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC,aAAa,CAAC,CAAC,WAAW,EAAE,CAAC;IAC1F,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAC/B,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC,aAAa,GAAG,GAAG,eAAe,gEAAgE,CAAC;IACtH,KAAK,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAE,EAAE,CAAC,CAAC;IACvE,KAAK,CAAC,kBAAkB,CAAC,WAAW,CAAC,iBAAiB,GAAG,CAAC,CAAC;IAC3D,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,EAAE;QACrC,gBAAgB,EAAE,CAAC;QACnB,eAAe,EAAE,CAAC;QAClB,gCAAgC,EAAE,CAAC;KACpC,CAAC,CAAC;IACH,MAAM,CAAC,KAAK,CAAC,wBAAwB,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AAChG,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,kGAAkG,EAAE,GAAG,EAAE;IAC5G,MAAM,MAAM,GAAG,iBAAiB,EAAE,CAAC;IACnC,MAAM,QAAQ,GAAG,wBAAwB,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;IACrE,MAAM,CAAC,SAAS,CACd,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EACvD,CAAC,UAAU,EAAE,UAAU,CAAC,CACzB,CAAC;IACF,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;IAC9D,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;IAC7D,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;IACxD,MAAM,CAAC,EAAE,CACP,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAC9B,CAAC,IAAI,EAAE,EAAE,CACP,IAAI,CAAC,aAAa,KAAK,UAAU;QACjC,IAAI,CAAC,KAAK,KAAK,eAAe;QAC9B,IAAI,CAAC,SAAS,EAAE,kBAAkB,KAAK,YAAY,CACtD,CACF,CAAC;IACF,MAAM,KAAK,GAAG,MAAM,CAAC,aAAa,CAAC,cAAc,CAAE,CAAC;IACpD,KAAK,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;IACzB,MAAM,SAAS,GAAG,wBAAwB,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;IACtE,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC1E,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IAC/E,MAAM,CAAC,SAAS,CACb,MAAM,CAAC,aAAa,CAAC,cAAc,CAAE,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC,SAAqC;SACtF,4BAA4B,EAC/B,CAAC,UAAU,EAAE,UAAU,CAAC,CACzB,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,SAAS,mBAAmB,CAAC,cAAc,GAAG,QAAQ;IACpD,MAAM,MAAM,GAAG,QAAQ,EAAE,CAAC;IAC1B,MAAM,KAAK,GAAG,MAAM,CAAC,aAAa,CAAC,cAAc,CAAE,CAAC;IACpD,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,KAAK,EAAE;QAC5C,QAAQ,EAAE,iCAAiC;QAC3C,iBAAiB,EAAE,CAAC,MAAM,CAAC;KAC5B,CAAC,CAAC;IACH,MAAM,WAAW,GAAG,kBAAkB,cAAc,wBAAwB,CAAC;IAC7E,MAAM,MAAM,GAAG;QACb,eAAe;QACf,kBAAkB,cAAc,EAAE;QAClC,WAAW;QACX,GAAG,WAAW,oDAAoD;QAClE,kBAAkB,cAAc,8BAA8B;KAC/D,CAAC;IACF,KAAK,CAAC,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QAC7C,SAAS,EAAE,UAAU,KAAK,EAAE;QAC5B,YAAY,EAAE,UAAU,KAAK,EAAE;QAC/B,MAAM,EAAE,MAAM;QACd,KAAK;QACL,aAAa,EAAE,GAAG,KAAK,wDAAwD,cAAc,EAAE;QAC/F,cAAc,EAAE,SAAS;QACzB,cAAc,EAAE,CAAC,mCAAmC,CAAC;QACrD,SAAS,EAAE,IAAI;QACf,mBAAmB,EAAE,EAAE;KACxB,CAAC,CAAC,CAAC;IACJ,KAAK,CAAC,oBAAoB,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAClD,KAAK;QACL,YAAY,EAAE,GAAG,KAAK,wDAAwD,cAAc,EAAE;QAC9F,WAAW,EAAE,QAAQ;QACrB,kBAAkB,EAAE,QAAQ;QAC5B,cAAc,EAAE,KAAK,KAAK,eAAe,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,cAAc;KAChF,CAAC,CAAC,CAAC;IACJ,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,EAAE;QACrC,gBAAgB,EAAE,CAAC;QACnB,eAAe,EAAE,CAAC;QAClB,wBAAwB,EAAE,CAAC;QAC3B,gCAAgC,EAAE,CAAC;QACnC,aAAa,EAAE,CAAC;QAChB,uBAAuB,EAAE,CAAC;QAC1B,kBAAkB,EAAE,CAAC;KACtB,CAAC,CAAC;IACH,KAAK,CAAC,kBAAkB,CAAC,WAAW,CAAC,iBAAiB,GAAG,CAAC,CAAC;IAC3D,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,cAAc,EAAE,CAAC,EAAE,cAAc,EAAE,CAAC,EAAE,CAAC,CAAC;IACxE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC;AAChD,CAAC;AAED,IAAI,CAAC,yFAAyF,EAAE,GAAG,EAAE;IACnG,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,mBAAmB,EAAE,CAAC;IACrE,MAAM,QAAQ,GAAG,wBAAwB,CAAC,MAAM,EAAE,EAAE,GAAG,OAAO,EAAE,WAAW,EAAE,EAAE,QAAQ,CAAC,CAAC;IACzF,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,EAAE,kCAAkC,CAAC,CAAC;IAClF,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC,WAAW,EAAE,CAAC,CAAC;IACvE,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACnD,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IACpF,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;IAC9D,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACvC,MAAM,KAAK,GAAG,wBAAwB,CAAC,MAAM,EAAE,EAAE,GAAG,OAAO,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC,CAAE,EAAE,EAAE,QAAQ,CAAC,CAAC;IAClG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IAC3E,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IACvC,MAAM,WAAW,GAAG,MAAM,CAAC,aAAa,CAAC,cAAc,CAAE,CAAC;IAC1D,MAAM,QAAQ,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACzD,EAAE,EAAE,GAAG,KAAK,8DAA8D;QAC1E,KAAK;QACL,SAAS,EAAE,IAAI;QACf,QAAQ,EAAE,QAAQ;QAClB,4BAA4B,EAAE,IAAI;KACnC,CAAC,CAAC,CAAC;IACJ,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC,mBAAmB,GAAG,QAAQ,CAAC;IACxD,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAE,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE,cAAc,EAAE,eAAe,EAAE,CAAC,CAAC;IACzG,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,iBAAiB,EAAE,EAAE,aAAa,EAAE,CAAC,EAAE,mBAAmB,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC;IAC3G,WAAW,CAAC,kBAAkB,CAAC,WAAW,CAAC,gBAAgB,GAAG,CAAC,CAAC;IAChE,MAAM,CAAC,OAAO,CAAC,cAAc,GAAG,CAAC,CAAC;IAClC,MAAM,SAAS,GAAG,wBAAwB,CAAC,MAAM,EAAE,EAAE,GAAG,OAAO,EAAE,WAAW,EAAE,EAAE,QAAQ,CAAC,CAAC;IAC1F,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;IAC1D,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;IAC9D,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;IACzD,MAAM,CAAC,KAAK,CACV,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,KAAK,UAAU,CAAE,CAAC,kBAAmB,CAAC,CAAC,CAAE,CAAC,KAAK,EACvG,WAAW,CACZ,CAAC;IACF,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC;IAChF,KAAK,MAAM,MAAM,IAAI;QACnB,CAAC,KAAoB,EAAE,EAAE;YACvB,KAAK,CAAC,aAAa,CAAC,cAAc,CAAE,CAAC,oBAAoB,CAAC,CAAC,CAAE,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC,CAAE,CAAC;QACnF,CAAC;QACD,CAAC,KAAoB,EAAE,EAAE;YACvB,KAAK,CAAC,aAAa,CAAC,cAAc,CAAE,CAAC,iBAAiB,CAAC,WAAW,GAAG,CAAC,CAAC;QACzE,CAAC;QACD,CAAC,KAAoB,EAAE,EAAE;YACvB,KAAK,CAAC,aAAa,CAAC,cAAc,CAAE,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC,KAAK,GAAG,GAAG,WAAW,WAAW,CAAC;QACtF,CAAC;QACD,CAAC,KAAoB,EAAE,EAAE;YACvB,KAAK,CAAC,aAAa,CAAC,cAAc,CAAE,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC,mBAAmB,GAAG,QAAQ,CAAC;QACnF,CAAC;KACF,EAAE,CAAC;QACF,MAAM,OAAO,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;QACxC,MAAM,CAAC,OAAO,CAAC,CAAC;QAChB,MAAM,CAAC,MAAM,CACX,GAAG,EAAE,CAAC,wBAAwB,CAAC,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,WAAW,EAAE,EAAE,QAAQ,CAAC,EAC9E,uBAAuB,CACxB,CAAC;IACJ,CAAC;IACD,KAAK,MAAM,MAAM,IAAI,CAAC,kBAAkB,OAAO,EAAE,EAAE,GAAG,WAAW,WAAW,EAAE,GAAG,WAAW,QAAQ,CAAC,EAAE,CAAC;QACtG,MAAM,CAAC,MAAM,CACX,GAAG,EAAE,CAAC,wBAAwB,CAAC,MAAM,EAAE,EAAE,GAAG,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE,QAAQ,CAAC,EACrF,uBAAuB,CACxB,CAAC;IACJ,CAAC;IACD,MAAM,YAAY,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IAC7C,YAAY,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;IACxD,YAAY,CAAC,aAAa,CAAC,OAAO,CAAE,CAAC,gBAAgB,GAAG,SAAS,CAAC;IAClE,YAAY,CAAC,wBAAwB;QACnC,YAAY,CAAC,uBAAuB;YACpC,YAAY,CAAC,OAAO,CAAC,sBAAsB;gBACzC,CAAC,CAAC;IACN,MAAM,CAAC,MAAM,CACX,GAAG,EAAE,CAAC,wBAAwB,CAAC,YAAY,EAAE,EAAE,GAAG,OAAO,EAAE,WAAW,EAAE,EAAE,QAAQ,CAAC,EACnF,uBAAuB,CACxB,CAAC;IACF,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IACvC,OAAQ,MAAM,CAAC,aAAa,CAAC,cAAc,CAAE,CAAC,kBAAkB,CAAC,KAAiC,CAAC,QAAQ,CAAC;IAC5G,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,wBAAwB,CAAC,MAAM,EAAE,EAAE,GAAG,OAAO,EAAE,WAAW,EAAE,EAAE,QAAQ,CAAC,EAAE,uBAAuB,CAAC,CAAC;IACtH,KAAK,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC;IACxC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,wBAAwB,CAAC,MAAM,EAAE,EAAE,GAAG,OAAO,EAAE,WAAW,EAAE,EAAE,QAAQ,CAAC,EAAE,uBAAuB,CAAC,CAAC;AACxH,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,qEAAqE,EAAE,GAAG,EAAE;IAC/E,MAAM,MAAM,GAAG,iBAAiB,EAAE,CAAC;IACnC,MAAM,KAAK,GAAG,MAAM,CAAC,aAAa,CAAC,cAAc,CAAE,CAAC;IACpD,MAAM,cAAc,GAAG,kBAAkB,cAAc,EAAE,CAAC;IAC1D,MAAM,UAAU,GAAG;QACjB,EAAE,EAAE,GAAG,cAAc,4DAA4D;QACjF,KAAK,EAAE,cAAc;QACrB,SAAS,EAAE,sBAAsB;KAClC,CAAC;IACF,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,QAAQ;QAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,SAAU,EAAE,UAAU,CAAC,CAAC;IAC9E,MAAM,QAAQ,GAAG,wBAAwB,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;IACrE,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC,SAAS,EAAE;QACzD,GAAG,UAAU;QACb,QAAQ,EAAE,QAAQ;QAClB,4BAA4B,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC;QACtD,kBAAkB,EAAE,YAAY;KACjC,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,wBAAwB,CAAC,iBAAiB,EAAE,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;IAChF,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC,SAAS,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;IACvE,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IAC5E,MAAM,UAAU,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IAC3C,KAAK,MAAM,IAAI,IAAI,UAAU,CAAC,aAAa,CAAC,cAAc,CAAE,CAAC,QAAQ,EAAE,CAAC;QACtE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,SAAU,EAAE;YAC7B,EAAE,EAAE,GAAG,eAAe,4DAA4D;YAClF,KAAK,EAAE,eAAe;YACtB,SAAS,EAAE,IAAI;SAChB,CAAC,CAAC;IACL,CAAC;IACD,MAAM,SAAS,GAAG,wBAAwB,CAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC1E,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC,SAAS,EAAE,KAAK,EAAE,eAAe,CAAC,CAAC;IAChF,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IAC/E,KAAK,MAAM,OAAO,IAAI;QACpB,EAAE,EAAE,EAAE,GAAG,UAAU,CAAC,EAAE,QAAQ,EAAE;QAChC,EAAE,EAAE,EAAE,GAAG,UAAU,CAAC,EAAE,cAAc,EAAE;QACtC,EAAE,KAAK,EAAE,GAAG,cAAc,uBAAuB,EAAE;QACnD,EAAE,EAAE,EAAE,UAAU,CAAC,EAAE,CAAC,OAAO,CAAC,cAAc,EAAE,OAAO,CAAC,EAAE;QACtD,EAAE,SAAS,EAAE,YAAY,EAAE;QAC3B,EAAE,SAAS,EAAE,qBAAqB,EAAE;QACpC,EAAE,SAAS,EAAE,sBAAsB,EAAE;QACrC,EAAE,EAAE,EAAE,SAAS,EAAE;KAClB,EAAE,CAAC;QACF,MAAM,OAAO,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;QACxC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,cAAc,CAAE,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC,SAAU,EAAE,OAAO,CAAC,CAAC;QACvF,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,wBAAwB,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,uBAAuB,CAAC,CAAC;IACrG,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,kDAAkD,EAAE,GAAG,EAAE;IAC5D,KAAK,MAAM,MAAM,IAAI;QACnB,EAAE;QACF,YAAY;QACZ,YAAY;QACZ,eAAe;QACf,SAAS;QACT,UAAU;QACV,WAAW;QACX,WAAW;QACX,aAAa;QACb,QAAQ;QACR,YAAY;QACZ,YAAY;QACZ,YAAY;KACb,EAAE,CAAC;QACF,MAAM,MAAM,GAAG,iBAAiB,EAAE,CAAC;QACnC,MAAM,CAAC,aAAa,CAAC,cAAc,CAAE,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC,aAAa;YAC9D,GAAG,eAAe,wDAAwD,MAAM,EAAE,CAAC;QACrF,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IACtC,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,6DAA6D,EAAE,GAAG,EAAE;IACvE,MAAM,IAAI,GAAG,iCAAiC,CAAC;IAC/C,MAAM,SAAS,GAAG,iBAAiB,EAAE,CAAC;IACtC,MAAM,YAAY,GAAG,GAAG,eAAe,wDAAwD,IAAI,EAAE,CAAC;IACtG,MAAM,cAAc,GAAG,SAAS,CAAC,aAAa,CAAC,cAAc,CAAE,CAAC;IAChE,MAAM,UAAU,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC,aAAa,CAAC;IAC7D,KAAK,MAAM,IAAI,IAAI,cAAc,CAAC,QAAQ;QAAE,IAAI,IAAI,CAAC,aAAa,KAAK,UAAU;YAAE,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;IACrH,MAAM,CAAC,EAAE,CACP,wBAAwB,CAAC,SAAS,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAC3E,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,KAAK,YAAY,CAC7C,CACF,CAAC;IACF,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAC1D,MAAM,QAAQ,GAAG,wBAAwB,CAAC,MAAM,EAAE,EAAE,GAAG,OAAO,EAAE,WAAW,EAAE,EAAE,QAAQ,CAAC,CAAC;IACzF,MAAM,CAAC,EAAE,CACP,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAC7B,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,KAAK,GAAG,WAAW,wDAAwD,IAAI,EAAE,CAC7G,CACF,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,gGAAgG,EAAE,GAAG,EAAE;IAC1G,MAAM,MAAM,GAAG,iBAAiB,EAAE,CAAC;IACnC,MAAM,KAAK,GAAG,MAAM,CAAC,aAAa,CAAC,cAAc,CAAE,CAAC;IACpD,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,WAAW,EAAE,mBAAmB,EAAE,EAAE,CAAC,CAAC;IACxE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAE,EAAE;QAChC,OAAO,EAAE,mBAAmB;QAC5B,cAAc,EAAE,EAAE,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,EAAE;QACxD,qBAAqB,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE;QACzD,iBAAiB,EAAE,mBAAmB;QACtC,2BAA2B,EAAE,UAAU;KACxC,CAAC,CAAC;IACH,KAAK,CAAC,aAAa,GAAG;QACpB,EAAE,IAAI,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,mBAAmB,EAAE;KACzG,CAAC;IACF,KAAK,CAAC,iBAAiB,GAAG,CAAC,eAAe,EAAE,oBAAoB,CAAC,CAAC;IAClE,MAAM,MAAM,GAAG,wBAAwB,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;IACnE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,KAAK,CAAC,CAAC;IAC1E,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,CAAC;IACjE,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,KAAK,UAAU,CAAE,CAAC;IACxF,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,EAAE,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC;IACnF,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,mBAAmB,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACnF,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,2BAA2B,EAAE,UAAU,CAAC,CAAC;IAC/D,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,EAAE;QAC7C,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE;KAC1E,CAAC,CAAC;IACH,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,EAAE,CAAC,oBAAoB,EAAE,eAAe,CAAC,CAAC,CAAC;IAC5F,MAAM,CAAC,SAAS,CAAC,wBAAwB,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,CAAC;AAChG,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,8EAA8E,EAAE,GAAG,EAAE;IACxF,KAAK,MAAM,KAAK,IAAI,CAAC,gBAAgB,EAAE,uBAAuB,CAAC,EAAE,CAAC;QAChE,MAAM,MAAM,GAAG,iBAAiB,EAAE,CAAC;QACnC,MAAM,KAAK,GAAG,MAAM,CAAC,aAAa,CAAC,cAAc,CAAE,CAAC;QACpD,MAAM,QAAQ,GAAG,wBAAwB,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;QACrE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC,KAAK,CAAC,GAAG,KAAK,KAAK,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QACjF,MAAM,KAAK,GAAG,wBAAwB,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;QAClE,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QACrC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC,KAAK,CAAC,GAAG,KAAK,KAAK,gBAAgB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;QACnF,MAAM,CAAC,YAAY,CAAC,wBAAwB,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,KAAK,CAAC,CAAC;IAClF,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,uGAAuG,EAAE,GAAG,EAAE;IACjH,MAAM,MAAM,GAAG,iBAAiB,EAAE,CAAC;IACnC,MAAM,QAAQ,GAAG,wBAAwB,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;IACrE,MAAM,SAAS,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IAC1C,MAAM,KAAK,GAAG,SAAS,CAAC,aAAa,CAAC,cAAc,CAAE,CAAC;IACvD,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC,kBAAkB,CAAC,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC;IAC3E,KAAK,CAAC,kBAAkB,CAAC,QAAQ,GAAG,EAAE,CAAC;IACvC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;IACvC,MAAM,CAAC,KAAK,CACV,wBAAwB,CAAC,SAAS,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,WAAW,EAC3E,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAC9B,CAAC;IACF,KAAK,MAAM,KAAK,IAAI,CAAC,sBAAsB,EAAE,UAAU,CAAU,EAAE,CAAC;QAClE,MAAM,MAAM,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QAC/C,KAAK,MAAM,IAAI,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,EAAE,CAAC;YAC/C,MAAM,OAAO,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;YAC3C,MAAM,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC,cAAc,CAAE,CAAC;YAC5D,KAAK,MAAM,IAAI,IAAI,YAAY,CAAC,KAAK,CAAC;gBAAE,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;YACpE,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QACzF,CAAC;QACD,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,KAAK,wDAAwD,CAAC,CAAC;IAC1G,CAAC;IACD,MAAM,SAAS,GAAiE;QAC9E,CAAC,KAAK,EAAE,EAAE;YACR,KAAK,CAAC,mBAAmB,GAAG,gBAAgB,CAAC;QAC/C,CAAC;QACD,CAAC,KAAK,EAAE,EAAE;YACR,KAAK,CAAC,aAAa,CAAC,cAAc,CAAE,CAAC,oBAAoB,CAAC,CAAC,CAAE,CAAC,WAAW,GAAG,SAAS,CAAC;QACxF,CAAC;QACD,CAAC,KAAK,EAAE,EAAE;YACR,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,cAAc,CAAE,CAAC,iBAAiB,EAAE,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,CAAC;QACpG,CAAC;QACD,CAAC,KAAK,EAAE,EAAE;YACR,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,cAAc,CAAE,CAAC,kBAAkB,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC;QACnG,CAAC;QACD,CAAC,KAAK,EAAE,EAAE;YACR,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,cAAc,CAAE,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC;QAChF,CAAC;QACD,CAAC,KAAK,EAAE,EAAE;YACR,KAAK,CAAC,aAAa,CAAC,cAAc,CAAE,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC,cAAc,GAAG,KAAK,CAAC;QAC3E,CAAC;QACD,CAAC,KAAK,EAAE,EAAE;YACR,KAAK,CAAC,aAAa,CAAC,cAAc,CAAE,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC,KAAK,GAAG,EAAE,aAAa,EAAE,uBAAuB,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;QACpH,CAAC;KACF,CAAC;IACF,KAAK,MAAM,MAAM,IAAI,SAAS,EAAE,CAAC;QAC/B,MAAM,OAAO,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;QACxC,MAAM,CAAC,OAAO,CAAC,CAAC;QAChB,MAAM,CAAC,QAAQ,CACb,wBAAwB,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,WAAW,EACzE,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAC9B,CAAC;IACJ,CAAC;IACD,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAC9B,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,KAAc,EAAE,EAAE,CAC9C,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAClE,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;QACrD,CAAC,CAAC,KAAK,CACV,CACF,CAAC;IACF,MAAM,CAAC,KAAK,CACV,wBAAwB,CAAC,aAAa,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,WAAW,EAC/E,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAC9B,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,4DAA4D,EAAE,GAAG,EAAE;IACtE,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,CAAU,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;IAChG,KAAK,MAAM,KAAK,IAAI,CAAC,gBAAgB,EAAE,uBAAuB,CAAC,EAAE,CAAC;QAChE,KAAK,MAAM,KAAK,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACvG,MAAM,MAAM,GAAG,iBAAiB,EAAE,CAAC;YACnC,MAAM,KAAK,GAAG,MAAM,CAAC,aAAa,CAAC,cAAc,CAAE,CAAC;YACpD,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC,KAAK,CAAC,GAAG,KAAK,KAAK,uBAAuB,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;YAClF,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;QACpC,CAAC;QACD,MAAM,MAAM,GAAG,iBAAiB,EAAE,CAAC;QACnC,MAAM,KAAK,GAAG,MAAM,CAAC,aAAa,CAAC,cAAc,CAAE,CAAC;QACpD,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,EAAE,iBAAiB,EAAE,CAAC;QACzD,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,mBAAmB,EAAE,OAAO,CAAC,EAAE,eAAe,CAAC,CAAC;IAC7F,CAAC;IACD,MAAM,MAAM,GAAG,iBAAiB,EAAE,CAAC;IACnC,MAAM,KAAK,GAAG,MAAM,CAAC,aAAa,CAAC,cAAc,CAAE,CAAC;IACpD,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC,qBAAqB,GAAG,CAAC,eAAe,CAAC,CAAC;IAC7D,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;AACpC,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,0EAA0E,EAAE,GAAG,EAAE;IACpF,QAAQ,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC;IAC/B,QAAQ,CAAC,IAAI,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC;IAClD,QAAQ,CAAC,EAAE,GAAG,QAAQ,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,eAAe,CAAC,CAAC;IAChE,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;IAChC,MAAM,QAAQ,GAAG,iBAAiB,EAAE,CAAC;IACrC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,cAAc,CAAE,EAAE;QACrD,QAAQ,EAAE,eAAe,CAAC,QAAQ,CAAC,aAAa,CAAC,cAAc,CAAE,CAAC,QAAQ,CAAC;KAC5E,CAAC,CAAC;IACH,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;IACpC,QAAQ,CAAC,EAAE,GAAG,iBAAiB,EAAE,EAAE,cAAc,EAAE,wBAAwB,EAAE,EAAE,eAAe,CAAC,CAAC;AAClG,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,iGAAiG,EAAE,GAAG,EAAE;IAC3G,MAAM,MAAM,GAAG,iBAAiB,EAAE,CAAC;IACnC,MAAM,KAAK,GAAG,MAAM,CAAC,aAAa,CAAC,cAAc,CAAE,CAAC;IACpD,KAAK,CAAC,QAAQ,GAAG,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QAC3D,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAE;QACrB,2BAA2B,EAAE,QAAQ;KACtC,CAAC,CAAC,CAAC;IACJ,MAAM,QAAQ,GAAG,wBAAwB,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;IACrE,MAAM,CAAC,SAAS,CACd,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,2BAA2B,CAAC,EAC1E,CAAC,UAAU,EAAE,UAAU,CAAC,CACzB,CAAC;IACF,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC,2BAA2B,GAAG,UAAU,CAAC;IAC5D,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAC/B,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC,2BAA2B,CAAC;IAC3E,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;AACjC,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,sFAAsF,EAAE,GAAG,EAAE;IAChG,MAAM,MAAM,GAAG,iBAAiB,EAAE,CAAC;IACnC,MAAM,KAAK,GAAG,MAAM,CAAC,aAAa,CAAC,cAAc,CAAE,CAAC;IACpD,KAAK,CAAC,QAAQ,GAAG,EAAE,CAAC;IACpB,KAAK,CAAC,iBAAiB,CAAC,mBAAmB,GAAG,KAAK,CAAC,iBAAiB,CAAC,cAAc,GAAG,CAAC,CAAC;IACzF,MAAM,CAAC,OAAO,CAAC,cAAc,GAAG,CAAC,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAC/B,KAAK,CAAC,iBAAiB,CAAC,WAAW,GAAG,CAAC,CAAC;IACxC,MAAM,CAAC,KAAK,CAAC,wBAAwB,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;IACpG,KAAK,CAAC,iBAAiB,CAAC,WAAW,GAAG,CAAC,CAAC;IACxC,KAAK,CAAC,iBAAiB,CAAC,cAAc,GAAG,CAAC,CAAC;IAC3C,MAAM,CAAC,SAAS,CAAC,wBAAwB,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAC5F,MAAM,SAAS,GAAG,iBAAiB,EAAE,CAAC;IACtC,MAAM,cAAc,GAAG,SAAS,CAAC,aAAa,CAAC,cAAc,CAAE,CAAC;IAChE,cAAc,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,GAAG,cAAc,CAAC,oBAAoB,CAAC,CAAC,CAAE,EAAE,CAAC,CAAC;IACzF,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,iBAAiB,EAAE;QAC9C,gBAAgB,EAAE,CAAC;QACnB,eAAe,EAAE,CAAC;QAClB,gCAAgC,EAAE,CAAC;KACpC,CAAC,CAAC;IACH,cAAc,CAAC,kBAAkB,CAAC,WAAW,CAAC,iBAAiB,GAAG,CAAC,CAAC;IACpE,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;AACpC,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,6FAA6F,EAAE,GAAG,EAAE;IACvG,MAAM,MAAM,GAAG,iBAAiB,EAAE,CAAC;IACnC,MAAM,KAAK,GAAG,MAAM,CAAC,aAAa,CAAC,cAAc,CAAE,CAAC;IACpD,MAAM,QAAQ,GAAG;QACf,gBAAgB,EAAE,CAAC;QACnB,YAAY,EAAE,CAAC;QACf,aAAa,EAAE,CAAC;QAChB,WAAW,EAAE,CAAC;QACd,cAAc,EAAE,CAAC;QACjB,kBAAkB,EAAE,CAAC;KACtB,CAAC;IACF,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,EAAE,EAAE,uBAAuB,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC9E,MAAM,CAAC,KAAK,CAAC,wBAAwB,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAC9F,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAiC,EAAE,CAAC;QACxE,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAChB,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QAC/B,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;IAClB,CAAC;IACD,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,EAAE,EAAE,uBAAuB,EAAE,EAAE,EAAE,CAAC,CAAC;IACxE,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;AACpC,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,gFAAgF,EAAE,GAAG,EAAE;IAC1F,MAAM,MAAM,GAAG,iBAAiB,EAAE,CAAC;IACnC,MAAM,KAAK,GAAG,MAAM,CAAC,aAAa,CAAC,cAAc,CAAE,CAAC;IACpD,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,EAAE,EAAE,gBAAgB,EAAE,CAAC,EAAE,sBAAsB,EAAE,CAAC,EAAE,kBAAkB,EAAE,CAAC,EAAE,CAAC,CAAC;IAClH,KAAK,CAAC,kBAAkB,CAAC,WAAW,CAAC,iBAAiB,GAAG,CAAC,CAAC;IAC3D,MAAM,QAAQ,GAAG,wBAAwB,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;IACrE,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;IAC9D,MAAM,CAAC,SAAS,CAAC,wBAAwB,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAC;IAChG,MAAM,CAAC,SAAS,CAAC,wBAAwB,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAC;IAC7G,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,EAAE,EAAE,kBAAkB,EAAE,CAAC,EAAE,CAAC,CAAC;IAClE,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAC/B,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,EAAE,EAAE,kBAAkB,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IACnE,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAClC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,EAAE,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC,CAAC;IACrE,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;AACpC,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,6EAA6E,EAAE,GAAG,EAAE;IACvF,MAAM,MAAM,GAAG,QAAQ,EAAE,CAAC;IAC1B,MAAM,CAAC,wBAAwB,GAAG,CAAC,CAAC;IACpC,KAAK,MAAM,MAAM,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,EAAE,CAAC;QAC/C,MAAM,CAAC,sBAAsB,GAAG,CAAC,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,mBAAmB,EAAE,CAAC,CAAC;QACpG,MAAM,QAAQ,GAAG,wBAAwB,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;QACrE,MAAM,CAAC,SAAS,CAAC,wBAAwB,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAC;QAChG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,KAAK,CAAC,CAAC;IAC9E,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,mGAAmG,EAAE,GAAG,EAAE;IAC7G,MAAM,WAAW,GAAG,IAAI,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC;IAC9G,MAAM,OAAO,GAAG;QACd,kBAAkB,EAAE,YAAY;QAChC,MAAM,EAAE,MAAM;QACd,iBAAiB,EAAE,SAAS;QAC5B,YAAY,EAAE,WAAW;QACzB,WAAW,EAAE,SAAS;KACvB,CAAC;IACF,MAAM,QAAQ,GAAG;QACf,aAAa,EAAE,OAAO;QACtB,SAAS,EAAE,SAAS;QACpB,KAAK,EAAE,OAAO;QACd,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;QAC9B,QAAQ,EAAE,CAAC,OAAO,CAAC;KACpB,CAAC;IACF,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC;IACjC,KAAK,MAAM,UAAU,IAAI;QACvB,EAAE,kBAAkB,EAAE,QAAQ,EAAE;QAChC,EAAE,2BAA2B,EAAE,QAAQ,EAAE;QACzC,EAAE,kBAAkB,EAAE,QAAQ,EAAE,2BAA2B,EAAE,QAAQ,EAAE;KACxE,EAAE,CAAC;QACF,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,EAAE,GAAG,QAAQ,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,OAAO,EAAE,GAAG,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACrF,CAAC;IACD,KAAK,MAAM,OAAO,IAAI,CAAC,EAAE,kBAAkB,EAAE,EAAE,EAAE,EAAE,EAAE,2BAA2B,EAAE,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;QAC3G,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,GAAG,QAAQ,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,OAAO,EAAE,GAAG,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;IAC5F,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,yEAAyE,EAAE,GAAG,EAAE;IACnF,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,eAAe,CAAC,CAAC;IACjE,QAAQ,CAAC,QAAQ,EAAE,EAAE,iBAAiB,EAAE,EAAE,GAAG,OAAO,EAAE,GAAG,EAAE,sBAAsB,EAAE,CAAC,CAAC;IACrF,MAAM,MAAM,GAAG,QAAQ,EAAE,CAAC;IAC1B,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,cAAc,CAAE,CAAC,kBAAkB,EAAE,EAAE,MAAM,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IACjG,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAC/B,MAAM,SAAS,GAAG,iBAAiB,EAAE,CAAC;IACtC,SAAS,CAAC,aAAa,CAAC,cAAc,CAAE,CAAC,kBAAkB,CAAC,KAAK,CAAC,iBAAiB,GAAG,EAAE,CAAC;IACzF,QAAQ,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;AACzC,CAAC,CAAC,CAAC;AAEH,SAAS,SAAS,CAAC,QAAmC;IACpD,OAAO;QACL,cAAc,EAAE,yBAAyB;QACzC,MAAM,EAAE,oBAAoB;QAC5B,OAAO,EAAE,EAAE,OAAO,EAAE,wBAAwB,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE;QACtE,QAAQ;KACT,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,IAAY,EAAE,MAAc,EAAE,aAAuB;IAC5E,MAAM,KAAK,GAAG,uDAAuD,CAAC;IACtE,OAAO;QACL,SAAS,EAAE,wDAAwD,IAAI,EAAE;QACzE,YAAY,EAAE,IAAI;QAClB,MAAM;QACN,KAAK;QACL,uBAAuB,EAAE,IAAI;QAC7B,aAAa,EAAE,GAAG,KAAK,wDAAwD,IAAI,EAAE;QACrF,cAAc,EAAE,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe;QAC/D,cAAc,EAAE,aAAa;QAC7B,SAAS,EAAE,IAAI;KAChB,CAAC;AACJ,CAAC;AAED,IAAI,CAAC,4EAA4E,EAAE,GAAG,EAAE;IACtF,MAAM,MAAM,GAAG,SAAS,CAAC;QACvB,eAAe,CAAC,gBAAgB,EAAE,MAAM,EAAE,CAAC,qCAAqC,CAAC,CAAC;QAClF,eAAe,CAAC,YAAY,EAAE,OAAO,EAAE,EAAE,CAAC;KAC3C,CAAC,CAAC;IACH,KAAK,MAAM,WAAW,IAAI,CAAC,OAAO,EAAE,kBAAkB,cAAc,yBAAyB,CAAC,EAAE,CAAC;QAC/F,MAAM,QAAQ,GAAG,yBAAyB,CAAC,MAAM,EAAE,EAAE,WAAW,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QACtF,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;QACxE,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,SAAS,EAAE;YACvD,OAAO,EAAE,wBAAwB;YACjC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;SACvB,CAAC,CAAC;QACH,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC,WAAW,EAAE,CAAC,CAAC;QACvE,MAAM,CAAC,SAAS,CACd,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,EACtF;YACE,CAAC,MAAM,EAAE,CAAC,qCAAqC,CAAC,CAAC;YACjD,CAAC,OAAO,EAAE,EAAE,CAAC;SACd,CACF,CAAC;QACF,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,EAAE;YAC7C,eAAe,EAAE,CAAC;YAClB,SAAS,EAAE,CAAC;YACZ,WAAW,EAAE,CAAC;YACd,UAAU,EAAE,CAAC;YACb,cAAc,EAAE,CAAC;SAClB,CAAC,CAAC;IACL,CAAC;IACD,MAAM,CAAC,MAAM,CACX,GAAG,EAAE,CACH,yBAAyB,CACvB,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,yBAAyB,EAAE,EAChD,EAAE,WAAW,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,CAC3C,EACH,uBAAuB,CACxB,CAAC;IACF,MAAM,CAAC,MAAM,CACX,GAAG,EAAE,CAAC,yBAAyB,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,EAC1F,uBAAuB,CACxB,CAAC;AACJ,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=governance-setup.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"governance-setup.test.d.ts","sourceRoot":"","sources":["../../src/test/governance-setup.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,160 @@
1
+ import assert from "node:assert/strict";
2
+ import test from "node:test";
3
+ import { planGovernanceSetup, planGovernanceProvision } from "../governance-setup.js";
4
+ const config = {
5
+ schemaVersion: "1.0.0",
6
+ repository: "Example/COE",
7
+ tenantId: "11111111-1111-1111-1111-111111111111",
8
+ subscriptionId: "22222222-2222-2222-2222-222222222222",
9
+ identity: { mode: "create", displayName: "coe-discovery" },
10
+ };
11
+ const repository = { id: 456, name: "COE", full_name: "Example/COE", owner: { id: 123, login: "Example" } };
12
+ test("governance setup binds observed immutable subjects without authorizing execution", () => {
13
+ const oidc = { use_default: true, use_immutable_subject: true, sub_claim_prefix: "repo:Example@123/COE@456" };
14
+ const plan = planGovernanceSetup(config, repository, oidc);
15
+ assert.equal(plan.federation?.subject, "repo:Example@123/COE@456:environment:governance");
16
+ assert.equal(plan.status, "pending");
17
+ assert.equal(plan.executionAuthorized, false);
18
+ assert.equal(plan.deploymentAuthorized, false);
19
+ assert.equal(plan.variables.GOVERNANCE_BASELINE_ENABLED, "false");
20
+ assert.equal(plan.variables.AZURE_CLIENT_ID, undefined);
21
+ assert.equal(plan.proposedRole.scope, `/subscriptions/${config.subscriptionId}`);
22
+ assert.deepEqual(planGovernanceSetup(config, repository, oidc), plan);
23
+ assert.notEqual(planGovernanceSetup({ ...config, managementGroupId: "platform" }, repository, oidc).planHash, plan.planHash);
24
+ });
25
+ test("governance setup accepts explicit name-based evidence but blocks guesses and mismatches", () => {
26
+ const nameBased = { use_default: true, use_immutable_subject: false, sub_claim_prefix: "repo:Example/COE" };
27
+ assert.equal(planGovernanceSetup(config, repository, nameBased).federation?.subject, "repo:Example/COE:environment:governance");
28
+ for (const evidence of [
29
+ { use_default: true },
30
+ { ...nameBased, use_default: false },
31
+ { ...nameBased, use_immutable_subject: true },
32
+ { ...nameBased, sub_claim_prefix: "repo:Other/COE" },
33
+ null,
34
+ ]) {
35
+ const result = planGovernanceSetup(config, repository, evidence);
36
+ assert.equal(result.status, "blocked");
37
+ assert.equal(result.federation, undefined);
38
+ }
39
+ assert.equal(planGovernanceSetup(config, { ...repository, id: 0 }, nameBased).status, "blocked");
40
+ assert.throws(() => planGovernanceSetup({ ...config, repository: "evil/repo?token=x" }, repository, nameBased), /Invalid/);
41
+ const reused = planGovernanceSetup({ ...config, identity: { mode: "reuse", clientId: config.tenantId, principalId: config.subscriptionId } }, repository, nameBased);
42
+ assert.equal(reused.variables.AZURE_CLIENT_ID, config.tenantId);
43
+ assert.ok(reused.pendingActions.some((item) => item.includes("binding and existing grants")));
44
+ });
45
+ test("governance provisioning requires verified identity, protected environment and exact Reader semantics", () => {
46
+ const reused = {
47
+ ...config,
48
+ identity: { mode: "reuse", clientId: config.tenantId, principalId: config.subscriptionId },
49
+ };
50
+ const setup = planGovernanceSetup(reused, repository, {
51
+ use_default: true,
52
+ use_immutable_subject: true,
53
+ sub_claim_prefix: "repo:Example@123/COE@456",
54
+ });
55
+ const evidence = {
56
+ account: { tenantId: config.tenantId, id: config.subscriptionId, state: "Enabled", environmentName: "AzureCloud" },
57
+ application: {
58
+ id: "33333333-3333-3333-3333-333333333333",
59
+ appId: reused.identity.clientId,
60
+ signInAudience: "AzureADMyOrg",
61
+ },
62
+ principal: {
63
+ id: reused.identity.principalId,
64
+ appId: reused.identity.clientId,
65
+ appOwnerOrganizationId: config.tenantId,
66
+ accountEnabled: true,
67
+ servicePrincipalType: "Application",
68
+ },
69
+ environment: {
70
+ name: "governance",
71
+ deployment_branch_policy: { protected_branches: true, custom_branch_policies: false },
72
+ protection_rules: [
73
+ { type: "required_reviewers", prevent_self_review: true, reviewers: [{ type: "Team", id: 1 }] },
74
+ ],
75
+ },
76
+ readerRole: {
77
+ name: setup.proposedRole.id,
78
+ roleName: "Reader",
79
+ roleType: "BuiltInRole",
80
+ permissions: [{ actions: ["*/read"], notActions: [], dataActions: [], notDataActions: [] }],
81
+ },
82
+ federations: [],
83
+ assignments: [],
84
+ };
85
+ const plan = planGovernanceProvision(setup, evidence);
86
+ assert.equal(plan.status, "ready");
87
+ assert.equal(plan.executionAuthorized, false);
88
+ assert.deepEqual(plan.actions, ["create-federation", "assign-reader"]);
89
+ const credential = {
90
+ name: plan.federationName,
91
+ issuer: setup.federation.issuer,
92
+ subject: setup.federation.subject,
93
+ audiences: [setup.federation.audience],
94
+ };
95
+ const assignment = {
96
+ principalId: reused.identity.principalId,
97
+ scope: setup.proposedRole.scope,
98
+ roleDefinitionId: `/providers/Microsoft.Authorization/roleDefinitions/${setup.proposedRole.id}`,
99
+ };
100
+ const complete = planGovernanceProvision(setup, {
101
+ ...evidence,
102
+ federations: [credential],
103
+ assignments: [assignment],
104
+ });
105
+ assert.equal(complete.status, "ready");
106
+ assert.deepEqual(complete.actions, []);
107
+ assert.equal(complete.contextHash, plan.contextHash);
108
+ assert.notEqual(complete.planHash, plan.planHash);
109
+ for (const changed of [
110
+ { ...evidence, account: { ...evidence.account, tenantId: "foreign" } },
111
+ { ...evidence, account: { ...evidence.account, environmentName: "AzureChinaCloud" } },
112
+ { ...evidence, principal: { ...evidence.principal, appId: "foreign" } },
113
+ { ...evidence, environment: { ...evidence.environment, protection_rules: [] } },
114
+ { ...evidence, environment: { ...evidence.environment, deployment_branch_policy: null } },
115
+ {
116
+ ...evidence,
117
+ readerRole: {
118
+ ...evidence.readerRole,
119
+ permissions: [{ actions: ["*"], notActions: [], dataActions: [], notDataActions: [] }],
120
+ },
121
+ },
122
+ { ...evidence, federations: [{ ...credential, audiences: ["foreign"] }] },
123
+ { ...evidence, assignments: [{ ...assignment, condition: "restricted" }] },
124
+ {
125
+ ...evidence,
126
+ assignments: [
127
+ { ...assignment, scope: "/providers/Microsoft.Management/managementGroups/parent", condition: "restricted" },
128
+ ],
129
+ },
130
+ {
131
+ ...evidence,
132
+ assignments: [
133
+ {
134
+ ...assignment,
135
+ roleDefinitionId: "/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635",
136
+ },
137
+ ],
138
+ },
139
+ {
140
+ ...evidence,
141
+ assignments: [
142
+ assignment,
143
+ {
144
+ ...assignment,
145
+ scope: "/providers/Microsoft.Management/managementGroups/parent",
146
+ roleDefinitionId: "/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c",
147
+ },
148
+ ],
149
+ },
150
+ { ...evidence, assignments: [{ ...assignment, principalId: "foreign" }] },
151
+ { ...evidence, assignments: [{}] },
152
+ { ...evidence, federations: null },
153
+ { ...evidence, assignments: null },
154
+ ]) {
155
+ const blocked = planGovernanceProvision(setup, changed);
156
+ assert.equal(blocked.status, "blocked");
157
+ assert.deepEqual(blocked.actions, []);
158
+ }
159
+ });
160
+ //# sourceMappingURL=governance-setup.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"governance-setup.test.js","sourceRoot":"","sources":["../../src/test/governance-setup.test.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@ import { tmpdir } from "node:os";
4
4
  import { join } from "node:path";
5
5
  import { performance } from "node:perf_hooks";
6
6
  import test from "node:test";
7
- import { compareLogicalParity, generateBicepTree, generateTerraformTree, ProcessRunner, sha256, validateGeneratedTree, writeVirtualTree, } from "../index.js";
7
+ import { compareLogicalParity, generateBicepTree, generateTerraformTree, ProcessRunner, sha256, validateGeneratedTree, validateBicepResourceParity, writeVirtualTree, } from "../index.js";
8
8
  const HASH = "a".repeat(64);
9
9
  function intent(resources = [
10
10
  {
@@ -42,6 +42,78 @@ const nativeParameters = {
42
42
  sku: { name: "Standard_LRS" },
43
43
  properties: { accessTier: "Hot" },
44
44
  };
45
+ function assertExecutionAddresses(tree, sourceBinding) {
46
+ for (const resource of tree.logicalManifest.resources) {
47
+ const source = tree.files.find(({ path }) => path === resource.sourcePath);
48
+ assert.ok(source);
49
+ const declarations = tree.logicalManifest.track === "bicep"
50
+ ? [...source.content.matchAll(/^(?:resource|module) (\w+) '/gm)].map((match) => match[1])
51
+ : [...source.content.matchAll(/^(resource|data|module) "([^"]+)"(?: "([^"]+)")? \{/gm)].map((match) => match[1] === "module"
52
+ ? `module.${match[2]}`
53
+ : `${match[1] === "data" ? "data." : ""}${match[2]}.${match[3]}`);
54
+ assert.ok(declarations.includes(resource.executionAddress), `${resource.logicalId}: ${resource.executionAddress}`);
55
+ assert.equal(resource.implementationAddress, sourceBinding.resourceBindings[resource.logicalId].implementation);
56
+ }
57
+ assert.equal(new Set(tree.logicalManifest.resources.map(({ executionAddress }) => executionAddress)).size, tree.logicalManifest.resources.length);
58
+ }
59
+ test("native generators accept nested resource types and reject malformed type paths", () => {
60
+ const resourceType = "Microsoft.Storage/storageAccounts/blobServices";
61
+ const source = intent([{ id: "storage", type: resourceType, purpose: "Blob service", dependsOn: [], controls: [] }]);
62
+ for (const track of ["bicep", "terraform"]) {
63
+ const generate = track === "bicep" ? generateBicepTree : generateTerraformTree;
64
+ const parameters = {
65
+ ...nativeParameters,
66
+ name: track === "bicep" ? "stexample/default" : "default",
67
+ parentId: "/subscriptions/sub/resourceGroups/rg/providers/Microsoft.Storage/storageAccounts/stexample",
68
+ properties: {},
69
+ };
70
+ const selected = binding(track, `native:${resourceType}@2023-05-01`, "2023-05-01", parameters);
71
+ const tree = generate(source, selected);
72
+ assert.ok(tree.files
73
+ .find(({ path }) => path === `main.${track === "bicep" ? "bicep" : "tf"}`)
74
+ .content.includes(`${resourceType}@2023-05-01`));
75
+ assert.equal(tree.logicalManifest.resources[0].type, resourceType);
76
+ assertExecutionAddresses(tree, selected);
77
+ for (const invalid of [
78
+ "Microsoft.Storage//blobServices",
79
+ "Microsoft.Storage/storageAccounts/",
80
+ "Microsoft.Storage/storageAccounts/../blobServices",
81
+ "Microsoft.Storage/storageAccounts/[child]",
82
+ "Microsoft.Storage/storageAccounts\\blobServices",
83
+ ])
84
+ assert.throws(() => generate(source, binding(track, `native:${invalid}@2023-05-01`, "2023-05-01", parameters)), /Unsupported binding/);
85
+ }
86
+ });
87
+ test("diagnostic scope references emit only accepted native Bicep resource symbols", () => {
88
+ const source = intent();
89
+ source.resources.push({
90
+ id: "diagnostic",
91
+ type: "Microsoft.Insights/diagnosticSettings",
92
+ purpose: "Monitor",
93
+ dependsOn: ["storage"],
94
+ controls: [],
95
+ });
96
+ const selected = binding("bicep", "native:Microsoft.Storage/storageAccounts@2023-05-01", "2023-05-01", nativeParameters);
97
+ selected.resourceBindings.diagnostic = {
98
+ implementation: "native:Microsoft.Insights/diagnosticSettings@2021-05-01-preview",
99
+ version: "2021-05-01-preview",
100
+ scopeLogicalId: "storage",
101
+ parameters: { name: "logs", location: "swedencentral", parentId: "/", properties: {} },
102
+ };
103
+ const tree = generateBicepTree(source, selected);
104
+ assert.match(tree.files.find(({ path }) => path === "main.bicep").content, /scope: storage/);
105
+ assert.equal(tree.logicalManifest.resources.find(({ logicalId }) => logicalId === "diagnostic").generatedDependencies[0], "storage");
106
+ for (const scopeLogicalId of ["missing", "diagnostic"]) {
107
+ const changed = structuredClone(selected);
108
+ changed.resourceBindings.diagnostic.scopeLogicalId = scopeLogicalId;
109
+ assert.throws(() => generateBicepTree(source, changed), /Diagnostic scope/);
110
+ }
111
+ assert.throws(() => generateBicepTree(source, selected, { existingResources: ["storage"] }), /existing resource/);
112
+ assert.throws(() => generateTerraformTree(source, { ...selected, track: "terraform" }), /Diagnostic scope/);
113
+ const changed = structuredClone(selected);
114
+ changed.resourceBindings.diagnostic.parameters.scope = "foreign";
115
+ assert.throws(() => generateBicepTree(source, changed), /Diagnostic scope/);
116
+ });
45
117
  test("native generators are byte deterministic and enforce secure storage defaults", async () => {
46
118
  const sourceIntent = intent();
47
119
  const bicepBinding = binding("bicep", "native:Microsoft.Storage/storageAccounts@2023-05-01", "2023-05-01", nativeParameters);
@@ -49,10 +121,14 @@ test("native generators are byte deterministic and enforce secure storage defaul
49
121
  const first = generateBicepTree(sourceIntent, bicepBinding);
50
122
  const second = generateBicepTree(sourceIntent, bicepBinding);
51
123
  assert.deepEqual(first, second);
52
- assert.equal(first.files[0]?.path, "main.bicep");
53
- assert.match(first.files[0].content, /minimumTlsVersion: 'TLS1_2'/);
54
- assert.match(first.files[0].content, /allowSharedKeyAccess: false/);
124
+ assert.deepEqual(first.files.map(({ path }) => path), ["bicepconfig.json", "main.bicep"]);
125
+ assert.deepEqual(JSON.parse(first.files.find(({ path }) => path === "bicepconfig.json").content), {
126
+ experimentalFeaturesEnabled: { symbolicNameCodegen: true },
127
+ });
128
+ assert.match(first.files.find(({ path }) => path === "main.bicep").content, /minimumTlsVersion: 'TLS1_2'/);
129
+ assert.match(first.files.find(({ path }) => path === "main.bicep").content, /allowSharedKeyAccess: false/);
55
130
  assert.equal(first.treeHash, sha256(first.files));
131
+ assertExecutionAddresses(first, bicepBinding);
56
132
  const terraform = generateTerraformTree(sourceIntent, terraformBinding, {
57
133
  azurermProviderConstraint: "4.31.0",
58
134
  azapiProviderConstraint: "2.4.0",
@@ -62,6 +138,7 @@ test("native generators are byte deterministic and enforce secure storage defaul
62
138
  azapiProviderConstraint: "2.4.0",
63
139
  }));
64
140
  assert.match(terraform.files.find(({ path }) => path === "versions.tf").content, /version = "= 4\.31\.0"/);
141
+ assertExecutionAddresses(terraform, terraformBinding);
65
142
  assert.doesNotMatch(terraform.files.find(({ path }) => path === "main.tf").content, /jsonencode\(/);
66
143
  assert.match(terraform.files.find(({ path }) => path === "main.tf").content, /allowSharedKeyAccess/);
67
144
  assert.equal(terraform.files.some(({ path }) => path === ".terraform.lock.hcl"), false);
@@ -106,17 +183,21 @@ test("storage validation remains bounded for repeated near-miss properties", asy
106
183
  });
107
184
  test("AVM generators preserve exact pins, harden storage, and only include supplied lock data", () => {
108
185
  const sourceIntent = intent();
109
- const bicep = generateBicepTree(sourceIntent, binding("bicep", "avm:br/public:avm/res/storage/storage-account@0.31.0", "0.31.0", {
186
+ const bicepBinding = binding("bicep", "avm:br/public:avm/res/storage/storage-account@0.31.0", "0.31.0", {
110
187
  name: "stexample",
111
188
  location: "swedencentral",
112
- }));
113
- assert.match(bicep.files[0].content, /br\/public:avm\/res\/storage\/storage-account:0\.31\.0/);
114
- assert.match(bicep.files[0].content, /allowBlobPublicAccess: false/);
189
+ });
190
+ const bicep = generateBicepTree(sourceIntent, bicepBinding);
191
+ assertExecutionAddresses(bicep, bicepBinding);
192
+ assert.match(bicep.files.find(({ path }) => path === "main.bicep").content, /br\/public:avm\/res\/storage\/storage-account:0\.31\.0/);
193
+ assert.match(bicep.files.find(({ path }) => path === "main.bicep").content, /allowBlobPublicAccess: false/);
115
194
  const lock = "provider lock bytes\n";
116
- const terraform = generateTerraformTree(sourceIntent, binding("terraform", "avm:registry.terraform.io/Azure/avm-res-storage-storageaccount/azurerm@0.6.3", "0.6.3", {
195
+ const terraformBinding = binding("terraform", "avm:registry.terraform.io/Azure/avm-res-storage-storageaccount/azurerm@0.6.3", "0.6.3", {
117
196
  name: "stexample",
118
197
  location: "swedencentral",
119
- }), { lockFileContent: lock });
198
+ });
199
+ const terraform = generateTerraformTree(sourceIntent, terraformBinding, { lockFileContent: lock });
200
+ assertExecutionAddresses(terraform, terraformBinding);
120
201
  assert.match(terraform.files.find(({ path }) => path === "main.tf").content, /version = "0\.6\.3"/);
121
202
  assert.match(terraform.files.find(({ path }) => path === "main.tf").content, /shared_access_key_enabled = false/);
122
203
  assert.equal(terraform.files.find(({ path }) => path === ".terraform.lock.hcl").content, lock);
@@ -181,11 +262,13 @@ test("generators render dependencies and native existing-resource semantics", ()
181
262
  },
182
263
  },
183
264
  };
184
- const bicep = generateBicepTree(sourceIntent, { ...binding("bicep", "native:x@y", "legacy", {}), resourceBindings }, {
265
+ const bicep = generateBicepTree(sourceIntent, { ...binding("bicep", "native:x@y", "2023-05-01", {}), resourceBindings }, {
185
266
  existingResources: ["storage"],
186
267
  });
187
- const terraform = generateTerraformTree(sourceIntent, { ...binding("terraform", "native:x@y", "legacy", {}), resourceBindings }, { existingResources: ["storage"] });
188
- assert.match(bicep.files[0].content, /resource storage .* existing/);
268
+ const terraform = generateTerraformTree(sourceIntent, { ...binding("terraform", "native:x@y", "2023-05-01", {}), resourceBindings }, { existingResources: ["storage"] });
269
+ assert.match(bicep.files.find(({ path }) => path === "main.bicep").content, /resource storage .* existing/);
270
+ assertExecutionAddresses(bicep, { ...binding("bicep", "native:x@y", "2023-05-01", {}), resourceBindings });
271
+ assertExecutionAddresses(terraform, { ...binding("terraform", "native:x@y", "2023-05-01", {}), resourceBindings });
189
272
  assert.match(terraform.files.find(({ path }) => path === "main.tf").content, /data "azapi_resource" "storage"/);
190
273
  assert.match(terraform.files.find(({ path }) => path === "main.tf").content, /depends_on = \[data\.azapi_resource\.storage\]/);
191
274
  assert.equal(terraform.logicalManifest.resources.find(({ logicalId }) => logicalId === "storage")?.ownership, "existing");
@@ -213,6 +296,38 @@ test("validation returns deterministic command plans and only invokes an injecte
213
296
  assert.equal(withRunner.valid, true);
214
297
  assert.equal(calls.length, 3);
215
298
  });
299
+ test("generated validation rejects failed or incomplete runner results and stops dependent commands", async () => {
300
+ const tree = generateTerraformTree(intent(), binding("terraform", "native:Microsoft.Storage/storageAccounts@2023-05-01", "2023-05-01", nativeParameters));
301
+ for (const failure of [
302
+ { exitCode: 1 },
303
+ { exitCode: null },
304
+ { signal: "SIGTERM" },
305
+ { timedOut: true },
306
+ { outputTruncated: true },
307
+ ]) {
308
+ let calls = 0;
309
+ const result = await validateGeneratedTree(tree, {
310
+ runner: {
311
+ async run() {
312
+ calls++;
313
+ return {
314
+ exitCode: 0,
315
+ signal: null,
316
+ stdout: "private command output",
317
+ stderr: "private diagnostics",
318
+ timedOut: false,
319
+ outputTruncated: false,
320
+ ...failure,
321
+ };
322
+ },
323
+ },
324
+ });
325
+ assert.equal(result.valid, false, JSON.stringify(failure));
326
+ assert.equal(calls, 1);
327
+ assert.equal(result.commandResults.length, 1);
328
+ assert.doesNotMatch(result.issues.join("\n"), /private/);
329
+ }
330
+ });
216
331
  test("native generated trees compile with installed Bicep and Terraform tools", async (context) => {
217
332
  const root = await mkdtemp(join(tmpdir(), "apex-generated-compile-"));
218
333
  context.after(async () => rm(root, { recursive: true, force: true }));
@@ -224,6 +339,80 @@ test("native generated trees compile with installed Bicep and Terraform tools",
224
339
  await writeVirtualTree(bicepRoot, bicep);
225
340
  await writeVirtualTree(terraformRoot, terraform);
226
341
  const runner = new ProcessRunner();
342
+ const childType = "Microsoft.Storage/storageAccounts/blobServices";
343
+ const childTree = generateBicepTree(intent([{ id: "storage", type: childType, purpose: "Blob configuration", dependsOn: [], controls: [] }]), binding("bicep", `native:${childType}@2023-05-01`, "2023-05-01", {
344
+ name: "stexample/default",
345
+ location: "swedencentral",
346
+ parentId: nativeParameters.parentId,
347
+ properties: {},
348
+ }));
349
+ const childRoot = join(root, "bicep-child");
350
+ await writeVirtualTree(childRoot, childTree);
351
+ const compiledChild = await runner.run({
352
+ executable: "bicep",
353
+ args: ["build", "main.bicep", "--stdout"],
354
+ cwd: childRoot,
355
+ timeoutMs: 180_000,
356
+ maxOutputBytes: 2_000_000,
357
+ });
358
+ assert.equal(compiledChild.exitCode, 0, compiledChild.stderr);
359
+ const childTemplate = JSON.parse(compiledChild.stdout);
360
+ assert.equal(childTemplate.resources.storage.type, childType);
361
+ assert.equal(childTemplate.resources.storage.name, "stexample/default");
362
+ const scopedIntent = intent([
363
+ { id: "storage", type: childType, purpose: "Blob configuration", dependsOn: [], controls: [] },
364
+ {
365
+ id: "diagnostic",
366
+ type: "Microsoft.Insights/diagnosticSettings",
367
+ purpose: "Monitor",
368
+ dependsOn: ["storage"],
369
+ controls: [],
370
+ },
371
+ ]);
372
+ const scopedBinding = binding("bicep", `native:${childType}@2023-05-01`, "2023-05-01", {
373
+ name: "stexample/default",
374
+ location: "swedencentral",
375
+ parentId: nativeParameters.parentId,
376
+ properties: {},
377
+ });
378
+ scopedBinding.resourceBindings.diagnostic = {
379
+ implementation: "native:Microsoft.Insights/diagnosticSettings@2021-05-01-preview",
380
+ version: "2021-05-01-preview",
381
+ scopeLogicalId: "storage",
382
+ parameters: {
383
+ name: "logs",
384
+ location: "swedencentral",
385
+ parentId: "/",
386
+ properties: {
387
+ workspaceId: "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg/providers/Microsoft.OperationalInsights/workspaces/log",
388
+ logs: [{ categoryGroup: "allLogs", enabled: true }],
389
+ metrics: [{ category: "Transaction", enabled: true }],
390
+ },
391
+ },
392
+ };
393
+ const scopedRoot = join(root, "bicep-scoped");
394
+ const scopedTree = generateBicepTree(scopedIntent, scopedBinding);
395
+ await writeVirtualTree(scopedRoot, scopedTree);
396
+ const compiledScoped = await runner.run({
397
+ executable: "bicep",
398
+ args: ["build", "main.bicep", "--stdout"],
399
+ cwd: scopedRoot,
400
+ timeoutMs: 180_000,
401
+ maxOutputBytes: 2_000_000,
402
+ });
403
+ assert.equal(compiledScoped.exitCode, 0, compiledScoped.stderr);
404
+ const scopedTemplate = JSON.parse(compiledScoped.stdout);
405
+ const diagnostic = Object.values(scopedTemplate.resources).find(({ type }) => type === "Microsoft.Insights/diagnosticSettings");
406
+ assert.equal(diagnostic.scope, "[resourceId('Microsoft.Storage/storageAccounts/blobServices', split('stexample/default', '/')[0], split('stexample/default', '/')[1])]");
407
+ assert.equal(diagnostic.location, undefined);
408
+ const parity = validateBicepResourceParity({
409
+ sourceHash: HASH,
410
+ manifest: scopedTree.logicalManifest,
411
+ binding: scopedBinding,
412
+ json: compiledScoped.stdout,
413
+ });
414
+ assert.equal(parity.outcome, "pass");
415
+ assert.equal(parity.bindingHash, sha256(scopedBinding));
227
416
  for (const [executable, cwd] of [
228
417
  ["bicep", bicepRoot],
229
418
  ["terraform", terraformRoot],
@@ -251,7 +440,7 @@ test("writer creates files atomically and refuses overwrite, traversal, and syml
251
440
  try {
252
441
  const tree = generateBicepTree(intent(), binding("bicep", "native:Microsoft.Storage/storageAccounts@2023-05-01", "2023-05-01", nativeParameters));
253
442
  await writeVirtualTree(root, tree);
254
- assert.equal(await readFile(join(root, "main.bicep"), "utf8"), tree.files[0].content);
443
+ assert.equal(await readFile(join(root, "main.bicep"), "utf8"), tree.files.find(({ path }) => path === "main.bicep").content);
255
444
  await assert.rejects(writeVirtualTree(root, tree), /Refusing to overwrite/);
256
445
  await writeVirtualTree(root, tree, { overwrite: true });
257
446
  const unsafe = { ...tree, files: [{ path: "../escape.tf", content: "" }], treeHash: HASH };